summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml10
-rw-r--r--CMakeLists.txt208
-rwxr-xr-xMakefile19
-rw-r--r--cmake/Config.cmake75
-rw-r--r--cmake/Macros.cmake256
-rw-r--r--cmake/Modules/FindGLEW.cmake65
-rw-r--r--cmake/Modules/FindSFML.cmake209
-rw-r--r--cmake/Modules/FindSndfile.cmake28
-rw-r--r--doc/CMakeLists.txt61
-rwxr-xr-xdoc/SFML.chmbin1779701 -> 0 bytes
-rwxr-xr-xdoc/SFML.htm10
-rw-r--r--doc/doxyfile.in1542
-rw-r--r--doc/doxygen.css1278
-rw-r--r--doc/footer.htm9
-rw-r--r--doc/header.htm15
-rwxr-xr-xdoc/html/Arial_8hpp-source.htm14721
-rwxr-xr-xdoc/html/AudioDevice_8cpp-source.htm180
-rwxr-xr-xdoc/html/AudioDevice_8hpp-source.htm110
-rwxr-xr-xdoc/html/AudioResource_8cpp-source.htm84
-rwxr-xr-xdoc/html/AudioResource_8hpp-source.htm83
-rwxr-xr-xdoc/html/Audio_8hpp-source.htm75
-rwxr-xr-xdoc/html/Clock_8cpp-source.htm84
-rwxr-xr-xdoc/html/Clock_8hpp-source.htm88
-rwxr-xr-xdoc/html/Cocoa_2Joystick_8cpp-source.htm98
-rwxr-xr-xdoc/html/Cocoa_2Joystick_8hpp-source.htm88
-rwxr-xr-xdoc/html/Cocoa_2VideoModeSupport_8cpp-source.htm128
-rwxr-xr-xdoc/html/Cocoa_2VideoModeSupport_8hpp-source.htm86
-rwxr-xr-xdoc/html/Color_8cpp-source.htm149
-rwxr-xr-xdoc/html/Color_8hpp-source.htm109
-rwxr-xr-xdoc/html/Config_8hpp-source.htm192
-rwxr-xr-xdoc/html/Context_8cpp-source.htm105
-rwxr-xr-xdoc/html/Context_8hpp-source.htm98
-rwxr-xr-xdoc/html/Doxygen_8hpp-source.htm108
-rwxr-xr-xdoc/html/Drawable_8cpp-source.htm333
-rwxr-xr-xdoc/html/Drawable_8hpp-source.htm174
-rwxr-xr-xdoc/html/Event_8hpp-source.htm313
-rwxr-xr-xdoc/html/FontLoader_8cpp-source.htm429
-rwxr-xr-xdoc/html/FontLoader_8hpp-source.htm106
-rwxr-xr-xdoc/html/Font_8cpp-source.htm200
-rwxr-xr-xdoc/html/Font_8hpp-source.htm116
-rwxr-xr-xdoc/html/Ftp_8cpp-source.htm632
-rwxr-xr-xdoc/html/Ftp_8hpp-source.htm247
-rwxr-xr-xdoc/html/Glyph_8hpp-source.htm85
-rwxr-xr-xdoc/html/GraphicsContext_8cpp-source.htm117
-rwxr-xr-xdoc/html/GraphicsContext_8hpp-source.htm181
-rwxr-xr-xdoc/html/Graphics_8hpp-source.htm78
-rwxr-xr-xdoc/html/Http_8cpp-source.htm392
-rwxr-xr-xdoc/html/Http_8hpp-source.htm204
-rwxr-xr-xdoc/html/IPAddress_8cpp-source.htm273
-rwxr-xr-xdoc/html/IPAddress_8hpp-source.htm124
-rwxr-xr-xdoc/html/ImageLoader_8cpp-source.htm338
-rwxr-xr-xdoc/html/ImageLoader_8hpp-source.htm102
-rwxr-xr-xdoc/html/Image_8cpp-source.htm714
-rwxr-xr-xdoc/html/Image_8hpp-source.htm154
-rwxr-xr-xdoc/html/Input_8cpp-source.htm175
-rwxr-xr-xdoc/html/Input_8hpp-source.htm108
-rwxr-xr-xdoc/html/Joystick_8hpp-source.htm110
-rwxr-xr-xdoc/html/Listener_8cpp-source.htm124
-rwxr-xr-xdoc/html/Listener_8hpp-source.htm94
-rwxr-xr-xdoc/html/Lock_8cpp-source.htm79
-rwxr-xr-xdoc/html/Lock_8hpp-source.htm88
-rwxr-xr-xdoc/html/Matrix3_8cpp-source.htm71
-rwxr-xr-xdoc/html/Matrix3_8hpp-source.htm110
-rwxr-xr-xdoc/html/Matrix3_8inl-source.htm193
-rwxr-xr-xdoc/html/Music_8cpp-source.htm165
-rwxr-xr-xdoc/html/Music_8hpp-source.htm105
-rwxr-xr-xdoc/html/Mutex_8cpp-source.htm89
-rwxr-xr-xdoc/html/Mutex_8hpp-source.htm78
-rwxr-xr-xdoc/html/Network_8hpp-source.htm75
-rwxr-xr-xdoc/html/NonCopyable_8hpp-source.htm85
-rwxr-xr-xdoc/html/OpenAL_8hpp-source.htm156
-rwxr-xr-xdoc/html/OpenGL_8hpp-source.htm87
-rwxr-xr-xdoc/html/Packet_8cpp-source.htm418
-rwxr-xr-xdoc/html/Packet_8hpp-source.htm139
-rwxr-xr-xdoc/html/Platform_8cpp-source.htm97
-rwxr-xr-xdoc/html/Platform_8hpp-source.htm78
-rwxr-xr-xdoc/html/PostFX_8cpp-source.htm493
-rwxr-xr-xdoc/html/PostFX_8hpp-source.htm124
-rwxr-xr-xdoc/html/Randomizer_8cpp-source.htm114
-rwxr-xr-xdoc/html/Randomizer_8hpp-source.htm90
-rwxr-xr-xdoc/html/Rect_8hpp-source.htm104
-rwxr-xr-xdoc/html/Rect_8inl-source.htm136
-rwxr-xr-xdoc/html/RenderTarget_8cpp-source.htm189
-rwxr-xr-xdoc/html/RenderTarget_8hpp-source.htm117
-rwxr-xr-xdoc/html/RenderWindow_8cpp-source.htm170
-rwxr-xr-xdoc/html/RenderWindow_8hpp-source.htm104
-rwxr-xr-xdoc/html/ResourcePtr_8inl-source.htm150
-rwxr-xr-xdoc/html/Resource_8hpp-source.htm139
-rwxr-xr-xdoc/html/Resource_8inl-source.htm105
-rwxr-xr-xdoc/html/SFML__Main_8cpp-source.htm77
-rwxr-xr-xdoc/html/SelectorBase_8cpp-source.htm143
-rwxr-xr-xdoc/html/SelectorBase_8hpp-source.htm98
-rwxr-xr-xdoc/html/Selector_8hpp-source.htm105
-rwxr-xr-xdoc/html/Selector_8inl-source.htm113
-rwxr-xr-xdoc/html/Shape_8cpp-source.htm381
-rwxr-xr-xdoc/html/Shape_8hpp-source.htm148
-rwxr-xr-xdoc/html/Sleep_8cpp-source.htm73
-rwxr-xr-xdoc/html/Sleep_8hpp-source.htm74
-rwxr-xr-xdoc/html/SocketHelper_8cpp-source.htm119
-rwxr-xr-xdoc/html/SocketHelper_8hpp-source.htm94
-rwxr-xr-xdoc/html/SocketTCP_8cpp-source.htm489
-rwxr-xr-xdoc/html/SocketTCP_8hpp-source.htm126
-rwxr-xr-xdoc/html/SocketUDP_8cpp-source.htm412
-rwxr-xr-xdoc/html/SocketUDP_8hpp-source.htm127
-rwxr-xr-xdoc/html/Sockets_8hpp-source.htm78
-rwxr-xr-xdoc/html/SoundBufferRecorder_8cpp-source.htm96
-rwxr-xr-xdoc/html/SoundBufferRecorder_8hpp-source.htm92
-rwxr-xr-xdoc/html/SoundBuffer_8cpp-source.htm318
-rwxr-xr-xdoc/html/SoundBuffer_8hpp-source.htm128
-rwxr-xr-xdoc/html/SoundFileDefault_8cpp-source.htm350
-rwxr-xr-xdoc/html/SoundFileDefault_8hpp-source.htm121
-rwxr-xr-xdoc/html/SoundFileOgg_8cpp-source.htm194
-rwxr-xr-xdoc/html/SoundFileOgg_8hpp-source.htm103
-rwxr-xr-xdoc/html/SoundFile_8cpp-source.htm262
-rwxr-xr-xdoc/html/SoundFile_8hpp-source.htm122
-rwxr-xr-xdoc/html/SoundRecorder_8cpp-source.htm223
-rwxr-xr-xdoc/html/SoundRecorder_8hpp-source.htm111
-rwxr-xr-xdoc/html/SoundStream_8cpp-source.htm349
-rwxr-xr-xdoc/html/SoundStream_8hpp-source.htm153
-rwxr-xr-xdoc/html/Sound_8cpp-source.htm341
-rwxr-xr-xdoc/html/Sound_8hpp-source.htm155
-rwxr-xr-xdoc/html/Sprite_8cpp-source.htm217
-rwxr-xr-xdoc/html/Sprite_8hpp-source.htm117
-rwxr-xr-xdoc/html/String_8cpp-source.htm400
-rwxr-xr-xdoc/html/String_8hpp-source.htm130
-rwxr-xr-xdoc/html/System_8hpp-source.htm76
-rwxr-xr-xdoc/html/Template_01for_01new_01ports_2Joystick_8cpp-source.htm95
-rwxr-xr-xdoc/html/Template_01for_01new_01ports_2Joystick_8hpp-source.htm88
-rwxr-xr-xdoc/html/Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm87
-rwxr-xr-xdoc/html/Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm86
-rwxr-xr-xdoc/html/Thread_8cpp-source.htm152
-rwxr-xr-xdoc/html/Thread_8hpp-source.htm78
-rwxr-xr-xdoc/html/Unicode_8cpp-source.htm313
-rwxr-xr-xdoc/html/Unicode_8hpp-source.htm158
-rwxr-xr-xdoc/html/Unicode_8inl-source.htm468
-rwxr-xr-xdoc/html/Vector2_8hpp-source.htm125
-rwxr-xr-xdoc/html/Vector2_8inl-source.htm172
-rwxr-xr-xdoc/html/Vector3_8hpp-source.htm126
-rwxr-xr-xdoc/html/Vector3_8inl-source.htm178
-rwxr-xr-xdoc/html/VideoModeSupport_8hpp-source.htm82
-rwxr-xr-xdoc/html/VideoMode_8cpp-source.htm172
-rwxr-xr-xdoc/html/VideoMode_8hpp-source.htm103
-rwxr-xr-xdoc/html/View_8cpp-source.htm196
-rwxr-xr-xdoc/html/View_8hpp-source.htm123
-rwxr-xr-xdoc/html/Win32_2Joystick_8cpp-source.htm178
-rwxr-xr-xdoc/html/Win32_2Joystick_8hpp-source.htm97
-rwxr-xr-xdoc/html/Win32_2Mutex_8hpp-source.htm91
-rwxr-xr-xdoc/html/Win32_2Platform_8hpp-source.htm86
-rwxr-xr-xdoc/html/Win32_2SocketHelper_8hpp-source.htm89
-rwxr-xr-xdoc/html/Win32_2Thread_8hpp-source.htm105
-rwxr-xr-xdoc/html/Win32_2VideoModeSupport_8cpp-source.htm101
-rwxr-xr-xdoc/html/Win32_2VideoModeSupport_8hpp-source.htm86
-rwxr-xr-xdoc/html/WindowHandle_8hpp-source.htm89
-rwxr-xr-xdoc/html/WindowImplCocoa_8hpp-source.htm144
-rwxr-xr-xdoc/html/WindowImplWin32_8cpp-source.htm1086
-rwxr-xr-xdoc/html/WindowImplWin32_8hpp-source.htm149
-rwxr-xr-xdoc/html/WindowImplXXX_8cpp-source.htm215
-rwxr-xr-xdoc/html/WindowImplXXX_8hpp-source.htm118
-rwxr-xr-xdoc/html/WindowImpl_8cpp-source.htm246
-rwxr-xr-xdoc/html/WindowImpl_8hpp-source.htm161
-rwxr-xr-xdoc/html/WindowListener_8hpp-source.htm85
-rwxr-xr-xdoc/html/WindowSettings_8hpp-source.htm84
-rwxr-xr-xdoc/html/WindowStyle_8hpp-source.htm83
-rwxr-xr-xdoc/html/Window_2Window_8hpp-source.htm164
-rwxr-xr-xdoc/html/Window_8cpp-source.htm410
-rwxr-xr-xdoc/html/Window_8hpp-source.htm76
-rwxr-xr-xdoc/html/annotated.htm113
-rwxr-xr-xdoc/html/classes.htm62
-rwxr-xr-xdoc/html/classsf_1_1AudioResource-members.htm45
-rwxr-xr-xdoc/html/classsf_1_1AudioResource.htm151
-rwxr-xr-xdoc/html/classsf_1_1AudioResource.pngbin889 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Clock-members.htm45
-rwxr-xr-xdoc/html/classsf_1_1Clock.htm140
-rwxr-xr-xdoc/html/classsf_1_1Color-members.htm60
-rwxr-xr-xdoc/html/classsf_1_1Color.htm542
-rwxr-xr-xdoc/html/classsf_1_1Context-members.htm48
-rwxr-xr-xdoc/html/classsf_1_1Context.htm211
-rwxr-xr-xdoc/html/classsf_1_1Context.pngbin419 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Drawable-members.htm73
-rwxr-xr-xdoc/html/classsf_1_1Drawable.htm1077
-rwxr-xr-xdoc/html/classsf_1_1Drawable.pngbin763 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Event-members.htm69
-rwxr-xr-xdoc/html/classsf_1_1Event.htm187
-rwxr-xr-xdoc/html/classsf_1_1Font-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1Font.htm322
-rwxr-xr-xdoc/html/classsf_1_1Font.pngbin402 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Ftp-members.htm64
-rwxr-xr-xdoc/html/classsf_1_1Ftp.htm694
-rwxr-xr-xdoc/html/classsf_1_1Ftp.pngbin396 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.htm92
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1DirectoryResponse.htm412
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1DirectoryResponse.pngbin554 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1ListingResponse-members.htm93
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1ListingResponse.htm455
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1ListingResponse.pngbin524 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1Response-members.htm90
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1Response.htm400
-rwxr-xr-xdoc/html/classsf_1_1Ftp_1_1Response.pngbin852 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Glyph-members.htm46
-rwxr-xr-xdoc/html/classsf_1_1Glyph.htm154
-rwxr-xr-xdoc/html/classsf_1_1Http-members.htm47
-rwxr-xr-xdoc/html/classsf_1_1Http.htm237
-rwxr-xr-xdoc/html/classsf_1_1Http.pngbin399 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Http_1_1Request-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1Http_1_1Request.htm343
-rwxr-xr-xdoc/html/classsf_1_1Http_1_1Response-members.htm68
-rwxr-xr-xdoc/html/classsf_1_1Http_1_1Response.htm342
-rwxr-xr-xdoc/html/classsf_1_1IPAddress-members.htm59
-rwxr-xr-xdoc/html/classsf_1_1IPAddress.htm605
-rwxr-xr-xdoc/html/classsf_1_1Image-members.htm70
-rwxr-xr-xdoc/html/classsf_1_1Image.htm973
-rwxr-xr-xdoc/html/classsf_1_1Image.pngbin451 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Input-members.htm51
-rwxr-xr-xdoc/html/classsf_1_1Input.htm307
-rwxr-xr-xdoc/html/classsf_1_1Input.pngbin607 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Listener-members.htm50
-rwxr-xr-xdoc/html/classsf_1_1Listener.htm339
-rwxr-xr-xdoc/html/classsf_1_1Lock-members.htm45
-rwxr-xr-xdoc/html/classsf_1_1Lock.htm127
-rwxr-xr-xdoc/html/classsf_1_1Lock.pngbin399 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Matrix3-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1Matrix3.htm426
-rwxr-xr-xdoc/html/classsf_1_1Music-members.htm59
-rwxr-xr-xdoc/html/classsf_1_1Music.htm539
-rwxr-xr-xdoc/html/classsf_1_1Music.pngbin651 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Mutex-members.htm47
-rwxr-xr-xdoc/html/classsf_1_1Mutex.htm177
-rwxr-xr-xdoc/html/classsf_1_1Mutex.pngbin411 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Packet-members.htm78
-rwxr-xr-xdoc/html/classsf_1_1Packet.htm424
-rwxr-xr-xdoc/html/classsf_1_1PostFX-members.htm85
-rwxr-xr-xdoc/html/classsf_1_1PostFX.htm1474
-rwxr-xr-xdoc/html/classsf_1_1PostFX.pngbin369 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Randomizer-members.htm46
-rwxr-xr-xdoc/html/classsf_1_1Randomizer.htm198
-rwxr-xr-xdoc/html/classsf_1_1Rect-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1Rect.htm428
-rwxr-xr-xdoc/html/classsf_1_1RenderTarget-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1RenderTarget.htm390
-rwxr-xr-xdoc/html/classsf_1_1RenderTarget.pngbin461 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1RenderWindow-members.htm84
-rwxr-xr-xdoc/html/classsf_1_1RenderWindow.htm1271
-rwxr-xr-xdoc/html/classsf_1_1RenderWindow.pngbin1074 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Resource-members.htm47
-rwxr-xr-xdoc/html/classsf_1_1Resource.htm185
-rwxr-xr-xdoc/html/classsf_1_1ResourcePtr-members.htm52
-rwxr-xr-xdoc/html/classsf_1_1ResourcePtr.htm354
-rwxr-xr-xdoc/html/classsf_1_1Selector-members.htm50
-rwxr-xr-xdoc/html/classsf_1_1Selector.htm245
-rwxr-xr-xdoc/html/classsf_1_1Selector.pngbin476 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SelectorBase-members.htm48
-rwxr-xr-xdoc/html/classsf_1_1SelectorBase.htm263
-rwxr-xr-xdoc/html/classsf_1_1SelectorBase.pngbin477 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Shape-members.htm94
-rwxr-xr-xdoc/html/classsf_1_1Shape.htm2007
-rwxr-xr-xdoc/html/classsf_1_1Shape.pngbin369 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SocketHelper-members.htm48
-rwxr-xr-xdoc/html/classsf_1_1SocketHelper.htm198
-rwxr-xr-xdoc/html/classsf_1_1SocketTCP-members.htm57
-rwxr-xr-xdoc/html/classsf_1_1SocketTCP.htm567
-rwxr-xr-xdoc/html/classsf_1_1SocketUDP-members.htm57
-rwxr-xr-xdoc/html/classsf_1_1SocketUDP.htm590
-rwxr-xr-xdoc/html/classsf_1_1Sound-members.htm79
-rwxr-xr-xdoc/html/classsf_1_1Sound.htm1030
-rwxr-xr-xdoc/html/classsf_1_1Sound.pngbin673 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SoundBuffer-members.htm63
-rwxr-xr-xdoc/html/classsf_1_1SoundBuffer.htm495
-rwxr-xr-xdoc/html/classsf_1_1SoundBuffer.pngbin775 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SoundBufferRecorder-members.htm49
-rwxr-xr-xdoc/html/classsf_1_1SoundBufferRecorder.htm212
-rwxr-xr-xdoc/html/classsf_1_1SoundBufferRecorder.pngbin696 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SoundRecorder-members.htm55
-rwxr-xr-xdoc/html/classsf_1_1SoundRecorder.htm253
-rwxr-xr-xdoc/html/classsf_1_1SoundRecorder.pngbin694 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1SoundStream-members.htm90
-rwxr-xr-xdoc/html/classsf_1_1SoundStream.htm503
-rwxr-xr-xdoc/html/classsf_1_1SoundStream.pngbin699 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Sprite-members.htm85
-rwxr-xr-xdoc/html/classsf_1_1Sprite.htm1438
-rwxr-xr-xdoc/html/classsf_1_1Sprite.pngbin362 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1String-members.htm90
-rwxr-xr-xdoc/html/classsf_1_1String.htm1436
-rwxr-xr-xdoc/html/classsf_1_1String.pngbin368 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Thread-members.htm50
-rwxr-xr-xdoc/html/classsf_1_1Thread.htm255
-rwxr-xr-xdoc/html/classsf_1_1Thread.pngbin1304 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1Unicode-members.htm67
-rwxr-xr-xdoc/html/classsf_1_1Unicode.htm1229
-rwxr-xr-xdoc/html/classsf_1_1Unicode_1_1Text-members.htm58
-rwxr-xr-xdoc/html/classsf_1_1Unicode_1_1Text.htm185
-rwxr-xr-xdoc/html/classsf_1_1Vector2-members.htm46
-rwxr-xr-xdoc/html/classsf_1_1Vector2.htm183
-rwxr-xr-xdoc/html/classsf_1_1Vector3-members.htm47
-rwxr-xr-xdoc/html/classsf_1_1Vector3.htm214
-rwxr-xr-xdoc/html/classsf_1_1VideoMode-members.htm53
-rwxr-xr-xdoc/html/classsf_1_1VideoMode.htm386
-rwxr-xr-xdoc/html/classsf_1_1View-members.htm56
-rwxr-xr-xdoc/html/classsf_1_1View.htm508
-rwxr-xr-xdoc/html/classsf_1_1Window-members.htm70
-rwxr-xr-xdoc/html/classsf_1_1Window.htm981
-rwxr-xr-xdoc/html/classsf_1_1Window.pngbin808 -> 0 bytes
-rwxr-xr-xdoc/html/classsf_1_1WindowListener-members.htm44
-rwxr-xr-xdoc/html/classsf_1_1WindowListener.htm129
-rwxr-xr-xdoc/html/classsf_1_1WindowListener.pngbin736 -> 0 bytes
-rwxr-xr-xdoc/html/doxygen.css384
-rwxr-xr-xdoc/html/doxygen.pngbin1281 -> 0 bytes
-rwxr-xr-xdoc/html/files.htm191
-rwxr-xr-xdoc/html/functions.htm107
-rwxr-xr-xdoc/html/functions_0x62.htm107
-rwxr-xr-xdoc/html/functions_0x63.htm144
-rwxr-xr-xdoc/html/functions_0x64.htm112
-rwxr-xr-xdoc/html/functions_0x65.htm98
-rwxr-xr-xdoc/html/functions_0x66.htm102
-rwxr-xr-xdoc/html/functions_0x67.htm284
-rwxr-xr-xdoc/html/functions_0x68.htm92
-rwxr-xr-xdoc/html/functions_0x69.htm131
-rwxr-xr-xdoc/html/functions_0x6b.htm86
-rwxr-xr-xdoc/html/functions_0x6c.htm119
-rwxr-xr-xdoc/html/functions_0x6d.htm105
-rwxr-xr-xdoc/html/functions_0x6e.htm108
-rwxr-xr-xdoc/html/functions_0x6f.htm150
-rwxr-xr-xdoc/html/functions_0x70.htm111
-rwxr-xr-xdoc/html/functions_0x72.htm135
-rwxr-xr-xdoc/html/functions_0x73.htm261
-rwxr-xr-xdoc/html/functions_0x74.htm110
-rwxr-xr-xdoc/html/functions_0x75.htm112
-rwxr-xr-xdoc/html/functions_0x76.htm92
-rwxr-xr-xdoc/html/functions_0x77.htm96
-rwxr-xr-xdoc/html/functions_0x78.htm87
-rwxr-xr-xdoc/html/functions_0x79.htm89
-rwxr-xr-xdoc/html/functions_0x7a.htm88
-rwxr-xr-xdoc/html/functions_0x7e.htm126
-rwxr-xr-xdoc/html/functions_enum.htm67
-rwxr-xr-xdoc/html/functions_eval.htm256
-rwxr-xr-xdoc/html/functions_func.htm95
-rwxr-xr-xdoc/html/functions_func_0x62.htm85
-rwxr-xr-xdoc/html/functions_func_0x63.htm125
-rwxr-xr-xdoc/html/functions_func_0x64.htm98
-rwxr-xr-xdoc/html/functions_func_0x65.htm90
-rwxr-xr-xdoc/html/functions_func_0x66.htm88
-rwxr-xr-xdoc/html/functions_func_0x67.htm276
-rwxr-xr-xdoc/html/functions_func_0x68.htm84
-rwxr-xr-xdoc/html/functions_func_0x69.htm116
-rwxr-xr-xdoc/html/functions_func_0x6b.htm84
-rwxr-xr-xdoc/html/functions_func_0x6c.htm109
-rwxr-xr-xdoc/html/functions_func_0x6d.htm94
-rwxr-xr-xdoc/html/functions_func_0x6e.htm84
-rwxr-xr-xdoc/html/functions_func_0x6f.htm144
-rwxr-xr-xdoc/html/functions_func_0x70.htm95
-rwxr-xr-xdoc/html/functions_func_0x72.htm124
-rwxr-xr-xdoc/html/functions_func_0x73.htm234
-rwxr-xr-xdoc/html/functions_func_0x74.htm98
-rwxr-xr-xdoc/html/functions_func_0x75.htm104
-rwxr-xr-xdoc/html/functions_func_0x76.htm90
-rwxr-xr-xdoc/html/functions_func_0x77.htm90
-rwxr-xr-xdoc/html/functions_func_0x7a.htm84
-rwxr-xr-xdoc/html/functions_func_0x7e.htm124
-rwxr-xr-xdoc/html/functions_type.htm57
-rwxr-xr-xdoc/html/functions_vars.htm176
-rwxr-xr-xdoc/html/hierarchy.htm145
-rwxr-xr-xdoc/html/index.hhc346
-rwxr-xr-xdoc/html/index.hhk2377
-rwxr-xr-xdoc/html/index.hhp364
-rwxr-xr-xdoc/html/index.htm96
-rwxr-xr-xdoc/html/logo-bg.jpgbin22457 -> 0 bytes
-rwxr-xr-xdoc/html/logo.jpgbin116513 -> 0 bytes
-rwxr-xr-xdoc/html/namespacemembers.htm160
-rwxr-xr-xdoc/html/namespacemembers_enum.htm54
-rwxr-xr-xdoc/html/namespacemembers_eval.htm156
-rwxr-xr-xdoc/html/namespaces.htm46
-rwxr-xr-xdoc/html/namespacesf_1_1Blend.htm92
-rwxr-xr-xdoc/html/namespacesf_1_1Joy.htm103
-rwxr-xr-xdoc/html/namespacesf_1_1Key.htm324
-rwxr-xr-xdoc/html/namespacesf_1_1Mouse.htm66
-rwxr-xr-xdoc/html/namespacesf_1_1Style.htm96
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1JoyButtonEvent-members.htm44
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1JoyButtonEvent.htm65
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1JoyMoveEvent-members.htm45
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1JoyMoveEvent.htm68
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1KeyEvent-members.htm46
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1KeyEvent.htm71
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseButtonEvent-members.htm45
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseButtonEvent.htm68
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseMoveEvent-members.htm44
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseMoveEvent.htm65
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseWheelEvent-members.htm43
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1MouseWheelEvent.htm62
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1SizeEvent-members.htm44
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1SizeEvent.htm65
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1TextEvent-members.htm43
-rwxr-xr-xdoc/html/structsf_1_1Event_1_1TextEvent.htm62
-rwxr-xr-xdoc/html/structsf_1_1NonCopyable-members.htm43
-rwxr-xr-xdoc/html/structsf_1_1NonCopyable.htm104
-rwxr-xr-xdoc/html/structsf_1_1NonCopyable.pngbin1711 -> 0 bytes
-rwxr-xr-xdoc/html/structsf_1_1SoundStream_1_1Chunk-members.htm44
-rwxr-xr-xdoc/html/structsf_1_1SoundStream_1_1Chunk.htm104
-rwxr-xr-xdoc/html/structsf_1_1WindowSettings-members.htm46
-rwxr-xr-xdoc/html/structsf_1_1WindowSettings.htm177
-rwxr-xr-xdoc/html/tab_b.gifbin35 -> 0 bytes
-rwxr-xr-xdoc/html/tab_l.gifbin706 -> 0 bytes
-rwxr-xr-xdoc/html/tab_r.gifbin2585 -> 0 bytes
-rwxr-xr-xdoc/html/tabs.css105
-rw-r--r--doc/mainpage.hpp71
-rw-r--r--examples/CMakeLists.txt18
-rw-r--r--examples/X11/CMakeLists.txt16
-rw-r--r--examples/X11/X11.cpp (renamed from samples/X11/X11.cpp)94
-rw-r--r--examples/cocoa/CMakeLists.txt67
-rw-r--r--examples/cocoa/CocoaAppDelegate.h74
-rw-r--r--examples/cocoa/CocoaAppDelegate.mm241
-rw-r--r--examples/cocoa/MainMenu.xib4180
-rw-r--r--examples/cocoa/NSString+stdstring.h39
-rw-r--r--examples/cocoa/NSString+stdstring.mm78
-rw-r--r--examples/cocoa/main.m31
-rw-r--r--examples/cocoa/readme.txt28
-rw-r--r--examples/ftp/CMakeLists.txt10
-rw-r--r--examples/ftp/Ftp.cpp (renamed from samples/ftp/Ftp.cpp)109
-rw-r--r--examples/opengl/CMakeLists.txt14
-rw-r--r--examples/opengl/OpenGL.cpp194
-rw-r--r--examples/pong/CMakeLists.txt10
-rw-r--r--examples/pong/Pong.cpp241
-rw-r--r--examples/shader/CMakeLists.txt12
-rw-r--r--examples/shader/Effect.hpp88
-rw-r--r--examples/shader/Shader.cpp380
-rw-r--r--examples/sockets/CMakeLists.txt12
-rw-r--r--examples/sockets/Sockets.cpp59
-rw-r--r--examples/sockets/TCP.cpp81
-rw-r--r--examples/sockets/UDP.cpp72
-rw-r--r--examples/sound/CMakeLists.txt10
-rw-r--r--examples/sound/Sound.cpp (renamed from samples/sound/Sound.cpp)52
-rw-r--r--examples/sound_capture/CMakeLists.txt10
-rw-r--r--examples/sound_capture/SoundCapture.cpp (renamed from samples/sound_capture/SoundCapture.cpp)43
-rw-r--r--examples/voip/CMakeLists.txt12
-rw-r--r--examples/voip/Client.cpp129
-rw-r--r--examples/voip/Server.cpp (renamed from samples/voip/Server.cpp)143
-rw-r--r--examples/voip/VoIP.cpp (renamed from samples/voip/VoIP.cpp)18
-rw-r--r--examples/win32/CMakeLists.txt10
-rw-r--r--examples/win32/Win32.cpp130
-rw-r--r--examples/window/CMakeLists.txt14
-rw-r--r--examples/window/Window.cpp146
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio.hpp10
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/Export.hpp (renamed from src/SFML/System/Platform.hpp)93
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/Listener.hpp136
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/Music.hpp168
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/Sound.hpp282
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/SoundBuffer.hpp274
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/SoundBufferRecorder.hpp87
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/SoundRecorder.hpp204
-rw-r--r--include/SFML/Audio/SoundSource.hpp286
-rw-r--r--[-rwxr-xr-x]include/SFML/Audio/SoundStream.hpp325
-rw-r--r--[-rwxr-xr-x]include/SFML/Config.hpp106
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics.hpp23
-rw-r--r--include/SFML/Graphics/BlendMode.hpp46
-rw-r--r--include/SFML/Graphics/CircleShape.hpp151
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Color.hpp223
-rw-r--r--include/SFML/Graphics/ConvexShape.hpp150
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Drawable.hpp369
-rw-r--r--include/SFML/Graphics/Export.hpp48
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Font.hpp314
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Glyph.hpp36
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Image.hpp352
-rwxr-xr-xinclude/SFML/Graphics/Matrix3.hpp148
-rwxr-xr-xinclude/SFML/Graphics/Matrix3.inl186
-rwxr-xr-xinclude/SFML/Graphics/PostFX.hpp194
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/PrimitiveType.hpp (renamed from include/SFML/Network/SocketHelper.hpp)117
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Rect.hpp191
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Rect.inl131
-rw-r--r--include/SFML/Graphics/RectangleShape.hpp128
-rw-r--r--include/SFML/Graphics/RenderStates.hpp174
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/RenderTarget.hpp381
-rw-r--r--include/SFML/Graphics/RenderTexture.hpp280
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/RenderWindow.hpp215
-rw-r--r--include/SFML/Graphics/Shader.hpp635
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Shape.hpp331
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/Sprite.hpp223
-rwxr-xr-xinclude/SFML/Graphics/String.hpp191
-rw-r--r--include/SFML/Graphics/Text.hpp351
-rw-r--r--include/SFML/Graphics/Texture.hpp602
-rw-r--r--include/SFML/Graphics/Transform.hpp450
-rw-r--r--include/SFML/Graphics/Transformable.hpp417
-rw-r--r--include/SFML/Graphics/Vertex.hpp148
-rw-r--r--include/SFML/Graphics/VertexArray.hpp223
-rw-r--r--[-rwxr-xr-x]include/SFML/Graphics/View.hpp277
-rw-r--r--[-rwxr-xr-x]include/SFML/Network.hpp19
-rw-r--r--include/SFML/Network/Export.hpp48
-rw-r--r--[-rwxr-xr-x]include/SFML/Network/Ftp.hpp377
-rw-r--r--[-rwxr-xr-x]include/SFML/Network/Http.hpp355
-rwxr-xr-xinclude/SFML/Network/IPAddress.hpp231
-rw-r--r--include/SFML/Network/IpAddress.hpp316
-rw-r--r--[-rwxr-xr-x]include/SFML/Network/Packet.hpp358
-rwxr-xr-xinclude/SFML/Network/Selector.inl97
-rw-r--r--include/SFML/Network/Socket.hpp218
-rw-r--r--include/SFML/Network/SocketHandle.hpp57
-rw-r--r--include/SFML/Network/SocketSelector.hpp263
-rwxr-xr-xinclude/SFML/Network/SocketTCP.hpp227
-rwxr-xr-xinclude/SFML/Network/SocketUDP.hpp228
-rw-r--r--include/SFML/Network/TcpListener.hpp162
-rw-r--r--include/SFML/Network/TcpSocket.hpp292
-rw-r--r--include/SFML/Network/UdpSocket.hpp283
-rw-r--r--[-rwxr-xr-x]include/SFML/OpenGL.hpp (renamed from include/SFML/Window/OpenGL.hpp)9
-rw-r--r--[-rwxr-xr-x]include/SFML/System.hpp19
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Clock.hpp65
-rw-r--r--include/SFML/System/Err.hpp78
-rw-r--r--include/SFML/System/Export.hpp48
-rw-r--r--include/SFML/System/InputStream.hpp151
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Lock.hpp86
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Mutex.hpp117
-rw-r--r--[-rwxr-xr-x]include/SFML/System/NonCopyable.hpp69
-rwxr-xr-xinclude/SFML/System/Randomizer.hpp94
-rwxr-xr-xinclude/SFML/System/Resource.hpp216
-rwxr-xr-xinclude/SFML/System/Resource.inl88
-rwxr-xr-xinclude/SFML/System/ResourcePtr.inl149
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Sleep.hpp23
-rw-r--r--include/SFML/System/String.hpp543
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Thread.hpp251
-rw-r--r--include/SFML/System/Thread.inl90
-rw-r--r--[-rwxr-xr-x]include/SFML/System/ThreadLocal.hpp (renamed from src/SFML/Window/Win32/Joystick.hpp)64
-rw-r--r--include/SFML/System/ThreadLocalPtr.hpp158
-rw-r--r--include/SFML/System/ThreadLocalPtr.inl77
-rw-r--r--include/SFML/System/Time.hpp452
-rwxr-xr-xinclude/SFML/System/Unicode.hpp290
-rwxr-xr-xinclude/SFML/System/Unicode.inl474
-rw-r--r--include/SFML/System/Utf.hpp763
-rw-r--r--include/SFML/System/Utf.inl752
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Vector2.hpp224
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Vector2.inl106
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Vector3.hpp221
-rw-r--r--[-rwxr-xr-x]include/SFML/System/Vector3.inl115
-rw-r--r--[-rwxr-xr-x]include/SFML/Window.hpp17
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/Context.hpp90
-rw-r--r--include/SFML/Window/ContextSettings.hpp104
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/Event.hpp558
-rw-r--r--include/SFML/Window/Export.hpp48
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/GlResource.hpp (renamed from include/SFML/Window/WindowListener.hpp)46
-rwxr-xr-xinclude/SFML/Window/Input.hpp140
-rw-r--r--include/SFML/Window/Joystick.hpp203
-rw-r--r--include/SFML/Window/Keyboard.hpp209
-rw-r--r--include/SFML/Window/Mouse.hpp167
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/VideoMode.hpp210
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/Window.hpp463
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/WindowHandle.hpp16
-rwxr-xr-xinclude/SFML/Window/WindowSettings.hpp62
-rw-r--r--[-rwxr-xr-x]include/SFML/Window/WindowStyle.hpp16
-rw-r--r--[-rwxr-xr-x]license.txt8
-rwxr-xr-xreadme-en.txt3
-rwxr-xr-xreadme-fr.txt3
-rw-r--r--readme.txt40
-rwxr-xr-xsamples/Makefile91
-rwxr-xr-xsamples/X11/Makefile18
-rwxr-xr-xsamples/ftp/Makefile18
-rwxr-xr-xsamples/opengl/Makefile18
-rw-r--r--samples/opengl/OpenGL.cpp143
-rwxr-xr-xsamples/pong/Makefile18
-rw-r--r--samples/pong/Pong.cpp190
-rwxr-xr-xsamples/post-fx/Makefile18
-rw-r--r--samples/post-fx/PostFX.cpp184
-rw-r--r--samples/qt/Main.cpp115
-rwxr-xr-xsamples/qt/Makefile18
-rw-r--r--samples/qt/QSFMLCanvas.cpp116
-rw-r--r--samples/qt/QSFMLCanvas.hpp82
-rwxr-xr-xsamples/sockets/Makefile18
-rw-r--r--samples/sockets/Sockets.cpp63
-rw-r--r--samples/sockets/TCP.cpp93
-rw-r--r--samples/sockets/UDP.cpp65
-rwxr-xr-xsamples/sound/Makefile18
-rwxr-xr-xsamples/sound_capture/Makefile18
-rw-r--r--samples/voip/Client.cpp110
-rwxr-xr-xsamples/voip/Makefile18
-rwxr-xr-xsamples/window/Makefile18
-rw-r--r--samples/window/Window.cpp118
-rw-r--r--samples/wxwidgets/Main.cpp111
-rwxr-xr-xsamples/wxwidgets/Makefile18
-rw-r--r--samples/wxwidgets/wxSFMLCanvas.cpp105
-rw-r--r--samples/wxwidgets/wxSFMLCanvas.hpp70
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/ALCheck.cpp (renamed from src/SFML/Audio/OpenAL.hpp)241
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/ALCheck.hpp (renamed from src/SFML/Window/Template for new ports/Joystick.cpp)58
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/AudioDevice.cpp133
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/AudioDevice.hpp73
-rw-r--r--src/SFML/Audio/CMakeLists.txt53
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/Listener.cpp81
-rwxr-xr-xsrc/SFML/Audio/Makefile39
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/Music.cpp136
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/Sound.cpp334
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundBuffer.cpp267
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundBufferRecorder.cpp29
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundFile.cpp448
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundFile.hpp183
-rwxr-xr-xsrc/SFML/Audio/SoundFileDefault.cpp352
-rwxr-xr-xsrc/SFML/Audio/SoundFileDefault.hpp156
-rwxr-xr-xsrc/SFML/Audio/SoundFileOgg.cpp182
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundRecorder.cpp136
-rw-r--r--src/SFML/Audio/SoundSource.cpp194
-rw-r--r--[-rwxr-xr-x]src/SFML/Audio/SoundStream.cpp311
-rwxr-xr-xsrc/SFML/Audio/stb_vorbis/stb_vorbis.c5039
-rwxr-xr-xsrc/SFML/Audio/stb_vorbis/stb_vorbis.h357
-rw-r--r--src/SFML/CMakeLists.txt45
-rw-r--r--src/SFML/Graphics/CMakeLists.txt135
-rw-r--r--src/SFML/Graphics/CircleShape.cpp84
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/Color.cpp78
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/ConvexShape.cpp (renamed from src/SFML/System/Unix/Mutex.cpp)137
-rwxr-xr-xsrc/SFML/Graphics/Drawable.cpp402
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/Font.cpp591
-rwxr-xr-xsrc/SFML/Graphics/FontLoader.cpp419
-rwxr-xr-xsrc/SFML/Graphics/FontLoader.hpp132
-rw-r--r--src/SFML/Graphics/GLCheck.cpp130
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/GLCheck.hpp (renamed from src/SFML/Window/Cocoa/Joystick.cpp)152
-rwxr-xr-xsrc/SFML/Graphics/GraphicsContext.cpp94
-rwxr-xr-xsrc/SFML/Graphics/GraphicsContext.hpp176
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/Image.cpp765
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/ImageLoader.cpp351
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/ImageLoader.hpp90
-rwxr-xr-xsrc/SFML/Graphics/Makefile47
-rwxr-xr-xsrc/SFML/Graphics/PostFX.cpp506
-rw-r--r--src/SFML/Graphics/RectangleShape.cpp76
-rw-r--r--src/SFML/Graphics/RenderStates.cpp98
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/RenderTarget.cpp434
-rw-r--r--src/SFML/Graphics/RenderTexture.cpp155
-rw-r--r--src/SFML/Graphics/RenderTextureImpl.cpp43
-rw-r--r--src/SFML/Graphics/RenderTextureImpl.hpp89
-rw-r--r--src/SFML/Graphics/RenderTextureImplDefault.cpp91
-rw-r--r--src/SFML/Graphics/RenderTextureImplDefault.hpp107
-rw-r--r--src/SFML/Graphics/RenderTextureImplFBO.cpp146
-rw-r--r--src/SFML/Graphics/RenderTextureImplFBO.hpp115
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/RenderWindow.cpp120
-rw-r--r--src/SFML/Graphics/Shader.cpp593
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/Shape.cpp426
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/Sprite.cpp200
-rwxr-xr-xsrc/SFML/Graphics/String.cpp412
-rw-r--r--src/SFML/Graphics/Text.cpp346
-rw-r--r--src/SFML/Graphics/Texture.cpp545
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/TextureSaver.cpp (renamed from src/SFML/Graphics/Matrix3.cpp)90
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/TextureSaver.hpp (renamed from include/SFML/Audio/AudioResource.hpp)142
-rw-r--r--src/SFML/Graphics/Transform.cpp272
-rw-r--r--src/SFML/Graphics/Transformable.cpp219
-rw-r--r--src/SFML/Graphics/Vertex.cpp77
-rw-r--r--src/SFML/Graphics/VertexArray.cpp150
-rw-r--r--[-rwxr-xr-x]src/SFML/Graphics/View.cpp218
-rw-r--r--src/SFML/Graphics/stb_image/stb_image.h4673
-rw-r--r--src/SFML/Graphics/stb_image/stb_image_write.h511
-rw-r--r--src/SFML/Main/CMakeLists.txt21
-rw-r--r--[-rwxr-xr-x]src/SFML/Main/SFML_Main.cpp2
-rwxr-xr-xsrc/SFML/Makefile67
-rw-r--r--src/SFML/Network/CMakeLists.txt57
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Ftp.cpp532
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Http.cpp318
-rwxr-xr-xsrc/SFML/Network/IPAddress.cpp298
-rw-r--r--src/SFML/Network/IpAddress.cpp255
-rwxr-xr-xsrc/SFML/Network/Makefile34
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Packet.cpp425
-rwxr-xr-xsrc/SFML/Network/SelectorBase.cpp132
-rw-r--r--src/SFML/Network/Socket.cpp144
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/SocketImpl.hpp (renamed from include/SFML/Network/Sockets.hpp)14
-rw-r--r--src/SFML/Network/SocketSelector.cpp141
-rwxr-xr-xsrc/SFML/Network/SocketTCP.cpp511
-rwxr-xr-xsrc/SFML/Network/SocketUDP.cpp433
-rw-r--r--src/SFML/Network/TcpListener.cpp124
-rw-r--r--src/SFML/Network/TcpSocket.cpp381
-rw-r--r--src/SFML/Network/UdpSocket.cpp193
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Unix/SocketImpl.cpp (renamed from src/SFML/Network/Unix/SocketHelper.cpp)47
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Unix/SocketImpl.hpp (renamed from include/SFML/Network/Unix/SocketHelper.hpp)59
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Win32/SocketImpl.cpp (renamed from src/SFML/Network/Win32/SocketHelper.cpp)50
-rw-r--r--[-rwxr-xr-x]src/SFML/Network/Win32/SocketImpl.hpp (renamed from src/SFML/Window/Linux/Joystick.hpp)80
-rw-r--r--src/SFML/System/CMakeLists.txt83
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Clock.cpp31
-rw-r--r--src/SFML/System/Err.cpp110
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Lock.cpp14
-rwxr-xr-xsrc/SFML/System/Makefile34
-rw-r--r--src/SFML/System/Mutex.cpp66
-rwxr-xr-xsrc/SFML/System/Randomizer.cpp96
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Sleep.cpp17
-rw-r--r--src/SFML/System/String.cpp335
-rw-r--r--src/SFML/System/Thread.cpp86
-rw-r--r--src/SFML/System/ThreadLocal.cpp67
-rw-r--r--src/SFML/System/Time.cpp239
-rwxr-xr-xsrc/SFML/System/Unicode.cpp300
-rw-r--r--src/SFML/System/Unix/ClockImpl.cpp64
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/ClockImpl.hpp (renamed from src/SFML/System/Unix/Platform.hpp)130
-rwxr-xr-xsrc/SFML/System/Unix/Initializer.cpp86
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/MutexImpl.cpp (renamed from src/SFML/Window/Template for new ports/VideoModeSupport.cpp)33
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/MutexImpl.hpp (renamed from include/SFML/System/Unix/Mutex.hpp)37
-rw-r--r--src/SFML/System/Unix/SleepImpl.cpp77
-rw-r--r--src/SFML/System/Unix/SleepImpl.hpp52
-rwxr-xr-xsrc/SFML/System/Unix/Thread.cpp148
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/ThreadImpl.cpp (renamed from src/SFML/System/Win32/Platform.cpp)57
-rw-r--r--src/SFML/System/Unix/ThreadImpl.hpp92
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/ThreadLocalImpl.cpp (renamed from src/SFML/System/Unix/Platform.cpp)32
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Unix/ThreadLocalImpl.hpp (renamed from src/SFML/Window/Cocoa/Joystick.hpp)171
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Win32/ClockImpl.cpp (renamed from src/SFML/System/Win32/Platform.hpp)140
-rw-r--r--src/SFML/System/Win32/ClockImpl.hpp61
-rw-r--r--src/SFML/System/Win32/MutexImpl.cpp64
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Win32/MutexImpl.hpp (renamed from include/SFML/System/Win32/Mutex.hpp)39
-rw-r--r--src/SFML/System/Win32/SleepImpl.cpp44
-rw-r--r--src/SFML/System/Win32/SleepImpl.hpp52
-rwxr-xr-xsrc/SFML/System/Win32/Thread.cpp146
-rw-r--r--src/SFML/System/Win32/ThreadImpl.cpp93
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Win32/ThreadImpl.hpp (renamed from include/SFML/Network/Win32/SocketHelper.hpp)68
-rw-r--r--src/SFML/System/Win32/ThreadLocalImpl.cpp64
-rw-r--r--[-rwxr-xr-x]src/SFML/System/Win32/ThreadLocalImpl.hpp (renamed from src/SFML/Window/Template for new ports/Joystick.hpp)45
-rw-r--r--src/SFML/Window/CMakeLists.txt132
-rwxr-xr-xsrc/SFML/Window/Cocoa/AppController.h95
-rwxr-xr-xsrc/SFML/Window/Cocoa/AppController.mm578
-rwxr-xr-xsrc/SFML/Window/Cocoa/GLKit.h233
-rwxr-xr-xsrc/SFML/Window/Cocoa/GLKit.mm1124
-rwxr-xr-xsrc/SFML/Window/Cocoa/VideoModeSupport.cpp101
-rwxr-xr-xsrc/SFML/Window/Cocoa/WindowImplCocoa.hpp205
-rwxr-xr-xsrc/SFML/Window/Cocoa/WindowImplCocoa.mm844
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Context.cpp44
-rw-r--r--src/SFML/Window/GlContext.cpp280
-rw-r--r--src/SFML/Window/GlContext.hpp234
-rw-r--r--src/SFML/Window/GlResource.cpp85
-rwxr-xr-xsrc/SFML/Window/Input.cpp169
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/InputImpl.hpp (renamed from src/SFML/Window/VideoModeSupport.hpp)21
-rw-r--r--src/SFML/Window/Joystick.cpp75
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/JoystickImpl.hpp (renamed from src/SFML/Window/Win32/VideoModeSupport.cpp)163
-rw-r--r--src/SFML/Window/JoystickManager.cpp114
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/JoystickManager.hpp (renamed from include/SFML/Network/SelectorBase.hpp)230
-rw-r--r--src/SFML/Window/Keyboard.cpp40
-rw-r--r--src/SFML/Window/Linux/Display.cpp65
-rw-r--r--src/SFML/Window/Linux/Display.hpp62
-rw-r--r--src/SFML/Window/Linux/GlxContext.cpp343
-rw-r--r--src/SFML/Window/Linux/GlxContext.hpp148
-rw-r--r--src/SFML/Window/Linux/InputImpl.cpp293
-rw-r--r--src/SFML/Window/Linux/InputImpl.hpp123
-rwxr-xr-xsrc/SFML/Window/Linux/Joystick.cpp219
-rw-r--r--src/SFML/Window/Linux/JoystickImpl.cpp256
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Linux/JoystickImpl.hpp (renamed from src/SFML/Audio/SoundFileOgg.hpp)235
-rw-r--r--src/SFML/Window/Linux/VideoModeImpl.cpp176
-rwxr-xr-xsrc/SFML/Window/Linux/VideoModeSupport.cpp144
-rwxr-xr-xsrc/SFML/Window/Linux/VideoModeSupport.hpp69
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Linux/WindowImplX11.cpp2251
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Linux/WindowImplX11.hpp500
-rwxr-xr-xsrc/SFML/Window/Makefile35
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Mouse.cpp (renamed from src/SFML/System/Win32/Mutex.cpp)137
-rw-r--r--src/SFML/Window/OSX/AutoreleasePoolWrapper.h51
-rw-r--r--src/SFML/Window/OSX/AutoreleasePoolWrapper.mm239
-rw-r--r--src/SFML/Window/OSX/HIDInputManager.hpp264
-rw-r--r--src/SFML/Window/OSX/HIDInputManager.mm1027
-rw-r--r--src/SFML/Window/OSX/HIDJoystickManager.cpp151
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/OSX/HIDJoystickManager.hpp (renamed from include/SFML/System/Win32/Thread.hpp)251
-rw-r--r--src/SFML/Window/OSX/InputImpl.hpp124
-rw-r--r--src/SFML/Window/OSX/InputImpl.mm183
-rw-r--r--src/SFML/Window/OSX/JoystickImpl.cpp402
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/OSX/JoystickImpl.hpp (renamed from include/SFML/System/Unix/Thread.hpp)250
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/OSX/SFApplication.h (renamed from src/SFML/Audio/AudioResource.cpp)115
-rw-r--r--src/SFML/Window/OSX/SFApplication.m64
-rw-r--r--src/SFML/Window/OSX/SFContext.hpp161
-rw-r--r--src/SFML/Window/OSX/SFContext.mm223
-rw-r--r--src/SFML/Window/OSX/SFKeyboardModifiersHelper.h61
-rw-r--r--src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm247
-rw-r--r--src/SFML/Window/OSX/SFOpenGLView.h120
-rw-r--r--src/SFML/Window/OSX/SFOpenGLView.mm695
-rw-r--r--src/SFML/Window/OSX/SFSilentResponder.h41
-rw-r--r--src/SFML/Window/OSX/SFSilentResponder.m39
-rw-r--r--src/SFML/Window/OSX/SFViewController.h49
-rw-r--r--src/SFML/Window/OSX/SFViewController.mm241
-rw-r--r--src/SFML/Window/OSX/SFWindow.h48
-rw-r--r--src/SFML/Window/OSX/SFWindow.m59
-rw-r--r--src/SFML/Window/OSX/SFWindowController.h79
-rw-r--r--src/SFML/Window/OSX/SFWindowController.mm546
-rw-r--r--src/SFML/Window/OSX/VideoModeImpl.cpp118
-rw-r--r--src/SFML/Window/OSX/WindowImplCocoa.hpp343
-rw-r--r--src/SFML/Window/OSX/WindowImplCocoa.mm418
-rw-r--r--src/SFML/Window/OSX/WindowImplDelegateProtocol.h159
-rw-r--r--src/SFML/Window/OSX/cg_sf_conversion.cpp181
-rw-r--r--src/SFML/Window/OSX/cg_sf_conversion.hpp82
-rw-r--r--src/SFML/Window/OSX/cpp_objc_conversion.h39
-rw-r--r--src/SFML/Window/OSX/cpp_objc_conversion.mm58
-rwxr-xr-xsrc/SFML/Window/Template for new ports/VideoModeSupport.hpp69
-rwxr-xr-xsrc/SFML/Window/Template for new ports/WindowImplXXX.cpp231
-rwxr-xr-xsrc/SFML/Window/Template for new ports/WindowImplXXX.hpp167
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/VideoMode.cpp148
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/VideoModeImpl.hpp (renamed from src/SFML/Window/Cocoa/VideoModeSupport.hpp)137
-rw-r--r--src/SFML/Window/Win32/InputImpl.cpp225
-rw-r--r--src/SFML/Window/Win32/InputImpl.hpp123
-rwxr-xr-xsrc/SFML/Window/Win32/Joystick.cpp157
-rw-r--r--src/SFML/Window/Win32/JoystickImpl.cpp189
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Win32/JoystickImpl.hpp (renamed from include/SFML/Network/Selector.hpp)97
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Win32/VideoModeImpl.cpp (renamed from src/SFML/Window/Joystick.hpp)151
-rwxr-xr-xsrc/SFML/Window/Win32/VideoModeSupport.hpp69
-rw-r--r--src/SFML/Window/Win32/WglContext.cpp325
-rw-r--r--src/SFML/Window/Win32/WglContext.hpp136
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Win32/WindowImplWin32.cpp1259
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Win32/WindowImplWin32.hpp199
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/Window.cpp433
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/WindowImpl.cpp243
-rw-r--r--[-rwxr-xr-x]src/SFML/Window/WindowImpl.hpp227
-rw-r--r--src/SFML/Window/glext/glext.h11028
-rw-r--r--src/SFML/Window/glext/glxext.h993
-rw-r--r--src/SFML/Window/glext/wglext.h901
-rw-r--r--tools/pkg-config/sfml-all.pc.in10
-rw-r--r--tools/pkg-config/sfml-audio.pc.in12
-rw-r--r--tools/pkg-config/sfml-graphics.pc.in12
-rw-r--r--tools/pkg-config/sfml-network.pc.in12
-rw-r--r--tools/pkg-config/sfml-system.pc.in11
-rw-r--r--tools/pkg-config/sfml-window.pc.in12
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp43
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm52
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icnsbin0 -> 243806 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist268
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpgbin0 -> 142959 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/icon.pngbin0 -> 61926 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/main.cpp91
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.oggbin0 -> 153776 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttfbin0 -> 28912 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist116
-rw-r--r--tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist132
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icnsbin0 -> 243806 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist137
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpgbin0 -> 142959 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.pngbin0 -> 61926 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/main.cpp89
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.oggbin0 -> 153776 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttfbin0 -> 28912 bytes
-rw-r--r--tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist288
-rw-r--r--tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist363
-rwxr-xr-xtools/xcode/templates/install.sh6
-rw-r--r--tools/xcode/templates/readme.txt134
816 files changed, 69875 insertions, 114884 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..478c284
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,10 @@
+language: cpp
+compiler:
+ - gcc
+before_script:
+ - sudo apt-get install libpthread-stubs0-dev libgl1-mesa-dev libx11-dev
+ - sudo apt-get install libxrandr-dev libfreetype6-dev libglew1.5-dev
+ - sudo apt-get install libjpeg8-dev libgpgme11-dev libsndfile1-dev libopenal-dev
+ - cmake .
+script:
+ - make -j4 \ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..4d977d5
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,208 @@
+
+cmake_minimum_required(VERSION 2.8)
+
+# define a macro that helps defining an option
+macro(sfml_set_option var default type docstring)
+ if(NOT DEFINED ${var})
+ set(${var} ${default})
+ endif()
+ set(${var} ${${var}} CACHE ${type} ${docstring} FORCE)
+endmacro()
+
+# set a default build type if none was provided
+# this has to be done before the project() instruction!
+sfml_set_option(CMAKE_BUILD_TYPE Release STRING "Choose the type of build (Debug or Release)")
+
+# project name
+project(SFML)
+
+# include the configuration file
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake)
+
+# setup version numbers
+set(VERSION_MAJOR 2)
+set(VERSION_MINOR 1)
+set(VERSION_PATCH 0)
+
+# add the SFML header path
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+# add an option for choosing the build type (shared or static)
+sfml_set_option(BUILD_SHARED_LIBS TRUE BOOL "TRUE to build SFML as shared libraries, FALSE to build it as static libraries")
+
+# add an option for building the examples
+sfml_set_option(SFML_BUILD_EXAMPLES FALSE BOOL "TRUE to build the SFML examples, FALSE to ignore them")
+
+# add an option for building the API documentation
+sfml_set_option(SFML_BUILD_DOC FALSE BOOL "TRUE to generate the API documentation, FALSE to ignore it")
+
+# Mac OS X specific options
+if(MACOSX)
+ # add an option to build frameworks instead of dylibs (release only)
+ sfml_set_option(SFML_BUILD_FRAMEWORKS FALSE BOOL "TRUE to build SFML as frameworks libraries (release only), FALSE to build according to BUILD_SHARED_LIBS")
+
+ # add an option to let the user specify a custom directory for frameworks installation (SFML, sndfile, ...)
+ sfml_set_option(CMAKE_INSTALL_FRAMEWORK_PREFIX "/Library/Frameworks" STRING "Frameworks installation directory")
+
+ # add an option to automatically install Xcode 4 templates
+ sfml_set_option(SFML_INSTALL_XCODE4_TEMPLATES FALSE BOOL "TRUE to automatically install the Xcode 4 templates, FALSE to do nothing about it")
+endif()
+
+# define SFML_STATIC if the build type is not set to 'shared'
+if(NOT BUILD_SHARED_LIBS)
+ add_definitions(-DSFML_STATIC)
+endif()
+
+# remove SL security warnings with Visual C++
+if(COMPILER_MSVC)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+endif()
+
+# define an option for choosing between static and dynamic C runtime (Windows only)
+if(WINDOWS)
+ sfml_set_option(SFML_USE_STATIC_STD_LIBS FALSE BOOL "TRUE to statically link to the standard libraries, FALSE to use them as DLLs")
+
+ # the following combination of flags is not valid
+ if (BUILD_SHARED_LIBS AND SFML_USE_STATIC_STD_LIBS)
+ message(FATAL_ERROR "BUILD_SHARED_LIBS and SFML_USE_STATIC_STD_LIBS cannot be used together")
+ endif()
+
+ # for VC++, we can apply it globally by modifying the compiler flags
+ if(COMPILER_MSVC AND SFML_USE_STATIC_STD_LIBS)
+ foreach(flag
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+ if(${flag} MATCHES "/MD")
+ string(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
+ endif()
+ endforeach()
+ endif()
+endif()
+
+# disable the rpath stuff
+set(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+# setup Mac OS X stuff
+if(MACOSX)
+ # SFML_BUILD_FRAMEWORKS needs two things :
+ # first, it's available only for release
+ # (because cmake currently doesn't allow specifying a custom framework name so XXX-d is not possible)
+ # secondly, it works only with BUILD_SHARED_LIBS enabled
+ if(SFML_BUILD_FRAMEWORKS)
+ # requirement #1
+ if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
+ message(FATAL_ERROR "CMAKE_BUILD_TYPE should be \"Release\" when SFML_BUILD_FRAMEWORKS is TRUE")
+ return()
+ endif()
+
+ # requirement #2
+ if(NOT BUILD_SHARED_LIBS)
+ message(FATAL_ERROR "BUILD_SHARED_LIBS should be TRUE when SFML_BUILD_FRAMEWORKS is TRUE")
+ return()
+ endif()
+ endif()
+endif()
+
+if(LINUX)
+ if(BUILD_SHARED_LIBS)
+ sfml_set_option(SFML_INSTALL_PKGCONFIG_FILES TRUE BOOL "TRUE to automatically install pkg-config files so other projects can find SFML")
+ if(SFML_INSTALL_PKGCONFIG_FILES)
+ foreach(sfml_module IN ITEMS all system window graphics audio network)
+ CONFIGURE_FILE(
+ "tools/pkg-config/sfml-${sfml_module}.pc.in"
+ "tools/pkg-config/sfml-${sfml_module}.pc"
+ @ONLY)
+ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/tools/pkg-config/sfml-${sfml_module}.pc"
+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig")
+ endforeach()
+ endif()
+ else()
+ if(SFML_INSTALL_PKGCONFIG_FILES)
+ message(WARNING "No pkg-config files are provided for the static SFML libraries (SFML_INSTALL_PKGCONFIG_FILES will be ignored).")
+ endif()
+ endif()
+endif()
+
+# enable project folders
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake")
+
+# add the subdirectories
+add_subdirectory(src/SFML)
+if(SFML_BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif()
+if(SFML_BUILD_DOC)
+ add_subdirectory(doc)
+endif()
+
+# setup the install rules
+if(NOT SFML_BUILD_FRAMEWORKS)
+ install(DIRECTORY include
+ DESTINATION .
+ COMPONENT devel
+ PATTERN ".svn" EXCLUDE)
+else()
+ # find only "root" headers
+ file(GLOB SFML_HEADERS RELATIVE ${PROJECT_SOURCE_DIR} "include/SFML/*")
+
+ # in fact we have to fool cmake to copy all the headers in subdirectories
+ # to do that we have to add the "root" headers to the PUBLIC_HEADER
+ # then we can run a post script to copy the remaining headers
+
+ # we need a dummy file in order to compile the framework
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
+ COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
+
+ set(SFML_SOURCES ${SFML_HEADERS})
+ list(APPEND SFML_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
+
+ # create SFML.framework
+ add_library(SFML ${SFML_SOURCES})
+
+ # edit target properties
+ set_target_properties(SFML PROPERTIES
+ FRAMEWORK TRUE
+ FRAMEWORK_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ MACOSX_FRAMEWORK_IDENTIFIER org.sfml-dev.SFML
+ MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ MACOSX_FRAMEWORK_BUNDLE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ PUBLIC_HEADER "${SFML_HEADERS}")
+
+ # add the remaining headers
+ add_custom_command(TARGET SFML
+ POST_BUILD
+ COMMAND cp -r ${PROJECT_SOURCE_DIR}/include/SFML/* SFML.framework/Versions/${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}/Headers)
+
+ # adapt install directory to allow distributing dylibs/frameworks in userā€™s frameworks/application bundle
+ # NOTE : it's not required to link agains SFML.framework
+ set_target_properties(SFML PROPERTIES
+ BUILD_WITH_INSTALL_RPATH 1
+ INSTALL_NAME_DIR "@executable_path/../Frameworks")
+
+ # install rule
+ install(TARGETS SFML
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX}
+ COMPONENT devel)
+endif()
+
+install(FILES cmake/Modules/FindSFML.cmake DESTINATION ${INSTALL_MISC_DIR}/cmake/Modules)
+install(FILES license.txt DESTINATION ${INSTALL_MISC_DIR})
+install(FILES readme.txt DESTINATION ${INSTALL_MISC_DIR})
+
+if(WINDOWS)
+ if(ARCH_32BITS)
+ install(FILES extlibs/bin/x86/libsndfile-1.dll DESTINATION bin)
+ install(FILES extlibs/bin/x86/openal32.dll DESTINATION bin)
+ elseif(ARCH_64BITS)
+ install(FILES extlibs/bin/x64/libsndfile-1.dll DESTINATION bin)
+ install(FILES extlibs/bin/x64/openal32.dll DESTINATION bin)
+ endif()
+elseif(MACOSX)
+ install(DIRECTORY extlibs/libs-osx/Frameworks/sndfile.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
+ install(DIRECTORY extlibs/libs-osx/Frameworks/freetype.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
+
+ if(SFML_INSTALL_XCODE4_TEMPLATES)
+ install(DIRECTORY tools/xcode/templates/SFML DESTINATION /Library/Developer/Xcode/Templates)
+ endif()
+endif()
diff --git a/Makefile b/Makefile
deleted file mode 100755
index 1b0f851..0000000
--- a/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-
-all: sfml
-
-sfml:
- @(cd ./src/SFML && $(MAKE))
-
-sfml-samples:
- @(cd ./samples && $(MAKE))
-
-install:
- @(cd ./src/SFML && $(MAKE) $@)
-
-clean:
- @(cd ./src/SFML && $(MAKE) $@)
- @(cd ./samples && $(MAKE) $@)
-
-mrproper:
- @(cd ./src/SFML && $(MAKE) $@)
- @(cd ./samples && $(MAKE) $@)
diff --git a/cmake/Config.cmake b/cmake/Config.cmake
new file mode 100644
index 0000000..ce9bb2c
--- /dev/null
+++ b/cmake/Config.cmake
@@ -0,0 +1,75 @@
+# detect the OS
+if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ set(WINDOWS 1)
+
+ # detect the architecture (note: this test won't work for cross-compilation)
+ include(CheckTypeSize)
+ check_type_size(void* SIZEOF_VOID_PTR)
+ if("${SIZEOF_VOID_PTR}" STREQUAL "4")
+ set(ARCH_32BITS 1)
+ elseif("${SIZEOF_VOID_PTR}" STREQUAL "8")
+ set(ARCH_64BITS 1)
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ return()
+ endif()
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ set(LINUX 1)
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
+ # FreeBSD compile path is the same as Linux
+ set(LINUX 1)
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ set(MACOSX 1)
+
+ # detect OS X version. (use '/usr/bin/sw_vers -productVersion' to extract V from '10.V.x'.)
+ EXEC_PROGRAM(/usr/bin/sw_vers ARGS -productVersion OUTPUT_VARIABLE MACOSX_VERSION_RAW)
+ STRING(REGEX REPLACE "10\\.([0-9]).*" "\\1" MACOSX_VERSION "${MACOSX_VERSION_RAW}")
+ if(${MACOSX_VERSION} LESS 5)
+ message(FATAL_ERROR "Unsupported version of OS X : ${MACOSX_VERSION_RAW}")
+ return()
+ endif()
+else()
+ message(FATAL_ERROR "Unsupported operating system")
+ return()
+endif()
+
+# detect the compiler and its version
+# Note: on some platforms (OS X), CMAKE_COMPILER_IS_GNUCXX is true
+# even when CLANG is used, therefore the Clang test is done first
+if(CMAKE_CXX_COMPILER MATCHES ".*clang[+][+]" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ # CMAKE_CXX_COMPILER_ID is an internal CMake variable subject to change,
+ # but there is no other way to detect CLang at the moment
+ set(COMPILER_CLANG 1)
+ execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "--version" OUTPUT_VARIABLE CLANG_VERSION_OUTPUT)
+ string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION "${CLANG_VERSION_OUTPUT}")
+elseif(CMAKE_COMPILER_IS_GNUCXX)
+ set(COMPILER_GCC 1)
+ execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "-dumpversion" OUTPUT_VARIABLE GCC_VERSION_OUTPUT)
+ string(REGEX REPLACE "([0-9]+\\.[0-9]+).*" "\\1" GCC_VERSION "${GCC_VERSION_OUTPUT}")
+ execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "-dumpmachine" OUTPUT_VARIABLE GCC_MACHINE)
+ string(STRIP "${GCC_MACHINE}" GCC_MACHINE)
+ if(${GCC_MACHINE} MATCHES ".*w64.*")
+ set(COMPILER_GCC_W64 1)
+ endif()
+elseif(MSVC)
+ set(COMPILER_MSVC 1)
+ if(MSVC_VERSION EQUAL 1400)
+ set(MSVC_VERSION 2005)
+ elseif(MSVC_VERSION EQUAL 1500)
+ set(MSVC_VERSION 2008)
+ elseif(MSVC_VERSION EQUAL 1600)
+ set(MSVC_VERSION 2010)
+ elseif(MSVC_VERSION EQUAL 1700)
+ set(MSVC_VERSION 2011)
+ endif()
+else()
+ message(FATAL_ERROR "Unsupported compiler")
+ return()
+endif()
+
+# define the install directory for miscellaneous files
+if(WINDOWS)
+ set(INSTALL_MISC_DIR .)
+elseif(UNIX)
+ set(INSTALL_MISC_DIR share/SFML)
+endif()
diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake
new file mode 100644
index 0000000..072fe75
--- /dev/null
+++ b/cmake/Macros.cmake
@@ -0,0 +1,256 @@
+# some of these macros are inspired from the boost/cmake macros
+
+# this macro adds external dependencies to a static target,
+# compensating for the lack of a link step when building a static library.
+# every compiler has its own way of doing it:
+# - VC++ supports it directly through the static library flags
+# - MinGW/gcc doesn't support it, but as a static library is nothing more than an archive,
+# we can simply merge the external dependencies to our generated target as a post-build step
+# - for other compilers and OSes, static build is not encouraged so we don't try to
+# pre-link dependencies, we just "link" them so that the SFML samples can compile
+# out-of-the-box (CMake forwards the dependencies automatically)
+macro(sfml_static_add_libraries target)
+ if(WINDOWS AND COMPILER_GCC)
+ # Windows - gcc
+ foreach(lib ${ARGN})
+ if(NOT ${lib} MATCHES ".*/.*")
+ string(REGEX REPLACE "(.*)/bin/.*\\.exe" "\\1" STANDARD_LIBS_PATH "${CMAKE_CXX_COMPILER}")
+ if(COMPILER_GCC_W64)
+ set(lib "${STANDARD_LIBS_PATH}/${GCC_MACHINE}/lib/lib${lib}.a")
+ else()
+ set(lib "${STANDARD_LIBS_PATH}/lib/lib${lib}.a")
+ endif()
+ endif()
+ string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
+ get_target_property(TARGET_FILENAME ${target} ${BUILD_TYPE}_LOCATION)
+ add_custom_command(TARGET ${target}
+ POST_BUILD
+ COMMAND ${CMAKE_AR} x ${lib}
+ COMMAND ${CMAKE_AR} rcs ${TARGET_FILENAME} *.o
+ COMMAND del *.o /f /q
+ VERBATIM)
+ endforeach()
+ elseif(MSVC)
+ # Visual C++
+ set(LIBRARIES "")
+ foreach(lib ${ARGN})
+ if(NOT ${lib} MATCHES ".*\\.lib")
+ set(lib ${lib}.lib)
+ endif()
+ if(MSVC_IDE AND MSVC_VERSION LESS 2010)
+ # for Visual Studio projects < 2010, we must add double quotes
+ # around paths because they may contain spaces
+ set(LIBRARIES "${LIBRARIES} &quot\\;${lib}&quot\\;")
+ else()
+ set(LIBRARIES "${LIBRARIES} \"${lib}\"")
+ endif()
+ endforeach()
+ set_target_properties(${target} PROPERTIES STATIC_LIBRARY_FLAGS ${LIBRARIES})
+ else()
+ # All other platforms
+ target_link_libraries(${target} ${ARGN})
+ endif()
+endmacro()
+
+# check if a value is contained in a list
+# sets ${var} to TRUE if the value is found
+macro(sfml_list_contains var value)
+ set(${var})
+ foreach(value2 ${ARGN})
+ if(${value} STREQUAL ${value2})
+ set(${var} TRUE)
+ endif()
+ endforeach()
+endmacro()
+
+# parse a list of arguments and options
+# ex: sfml_parse_arguments(THIS "SOURCES;DEPENDS" "FLAG" FLAG SOURCES s1 s2 s3 DEPENDS d1 d2)
+# will define the following variables:
+# - THIS_SOURCES (s1 s2 s3)
+# - THIS_DEPENDS (d1 d2)
+# - THIS_FLAG TRUE
+macro(sfml_parse_arguments prefix arg_names option_names)
+ foreach(arg_name ${arg_names})
+ set(${prefix}_${arg_name})
+ endforeach()
+ foreach(option_name ${option_names})
+ set(${prefix}_${option_name} FALSE)
+ endforeach()
+ set(current_arg_name)
+ set(current_arg_list)
+ foreach(arg ${ARGN})
+ sfml_list_contains(is_arg_name ${arg} ${arg_names})
+ if(is_arg_name)
+ set(${prefix}_${current_arg_name} ${current_arg_list})
+ set(current_arg_name ${arg})
+ set(current_arg_list)
+ else()
+ sfml_list_contains(is_option ${arg} ${option_names})
+ if(is_option)
+ set(${prefix}_${arg} TRUE)
+ else()
+ set(current_arg_list ${current_arg_list} ${arg})
+ endif()
+ endif()
+ endforeach()
+ set(${prefix}_${current_arg_name} ${current_arg_list})
+endmacro()
+
+# add a new target which is a SFML library
+# ex: sfml_add_library(sfml-graphics
+# SOURCES sprite.cpp image.cpp ...
+# DEPENDS sfml-window sfml-system
+# EXTERNAL_LIBS opengl freetype ...)
+macro(sfml_add_library target)
+
+ # parse the arguments
+ sfml_parse_arguments(THIS "SOURCES;DEPENDS;EXTERNAL_LIBS" "" ${ARGN})
+
+ # create the target
+ add_library(${target} ${THIS_SOURCES})
+
+ # define the export symbol of the module
+ string(REPLACE "-" "_" NAME_UPPER "${target}")
+ string(TOUPPER "${NAME_UPPER}" NAME_UPPER)
+ set_target_properties(${target} PROPERTIES DEFINE_SYMBOL ${NAME_UPPER}_EXPORTS)
+
+ # adjust the output file prefix/suffix to match our conventions
+ if(BUILD_SHARED_LIBS)
+ if(WINDOWS)
+ # include the major version number in Windows shared library names (but not import library names)
+ set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -d)
+ set_target_properties(${target} PROPERTIES SUFFIX "-${VERSION_MAJOR}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ else()
+ set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -d)
+ endif()
+ if (WINDOWS AND COMPILER_GCC)
+ # on Windows/gcc get rid of "lib" prefix for shared libraries,
+ # and transform the ".dll.a" suffix into ".a" for import libraries
+ set_target_properties(${target} PROPERTIES PREFIX "")
+ set_target_properties(${target} PROPERTIES IMPORT_SUFFIX ".a")
+ endif()
+ else()
+ set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -s-d)
+ set_target_properties(${target} PROPERTIES RELEASE_POSTFIX -s)
+ set_target_properties(${target} PROPERTIES MINSIZEREL_POSTFIX -s)
+ endif()
+
+ # set the version and soversion of the target (for compatible systems -- mostly Linuxes)
+ set_target_properties(${target} PROPERTIES SOVERSION ${VERSION_MAJOR})
+ set_target_properties(${target} PROPERTIES VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
+
+ # set the target's folder (for IDEs that support it, e.g. Visual Studio)
+ set_target_properties(${target} PROPERTIES FOLDER "SFML")
+
+ # for gcc >= 4.0 on Windows, apply the SFML_USE_STATIC_STD_LIBS option if it is enabled
+ if(WINDOWS AND COMPILER_GCC AND SFML_USE_STATIC_STD_LIBS)
+ if(NOT GCC_VERSION VERSION_LESS "4")
+ set_target_properties(${target} PROPERTIES LINK_FLAGS "-static-libgcc -static-libstdc++")
+ endif()
+ endif()
+
+ # if using gcc >= 4.0 or clang >= 3.0 on a non-Windows platform, we must hide public symbols by default
+ # (exported ones are explicitely marked)
+ if(NOT WINDOWS AND ((COMPILER_GCC AND NOT GCC_VERSION VERSION_LESS "4") OR (COMPILER_CLANG AND NOT CLANG_VERSION VERSION_LESS "3")))
+ set_target_properties(${target} PROPERTIES COMPILE_FLAGS -fvisibility=hidden)
+ endif()
+
+ # link the target to its SFML dependencies
+ if(THIS_DEPENDS)
+ target_link_libraries(${target} ${THIS_DEPENDS})
+ endif()
+
+ # build frameworks or dylibs
+ if(MACOSX AND BUILD_SHARED_LIBS)
+ if(SFML_BUILD_FRAMEWORKS)
+ # adapt target to build frameworks instead of dylibs
+ set_target_properties(${target} PROPERTIES
+ FRAMEWORK TRUE
+ FRAMEWORK_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ MACOSX_FRAMEWORK_IDENTIFIER org.sfml-dev.${target}
+ MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ MACOSX_FRAMEWORK_BUNDLE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
+ endif()
+
+ # adapt install directory to allow distributing dylibs/frameworks in userā€™s frameworks/application bundle
+ set_target_properties(${target} PROPERTIES
+ BUILD_WITH_INSTALL_RPATH 1
+ INSTALL_NAME_DIR "@executable_path/../Frameworks")
+ endif()
+
+ # link the target to its external dependencies
+ if(THIS_EXTERNAL_LIBS)
+ if(BUILD_SHARED_LIBS)
+ # in shared build, we use the regular linker commands
+ target_link_libraries(${target} ${THIS_EXTERNAL_LIBS})
+ else()
+ # in static build there's no link stage, but with some compilers it is possible to force
+ # the generated static library to directly contain the symbols from its dependencies
+ sfml_static_add_libraries(${target} ${THIS_EXTERNAL_LIBS})
+ endif()
+ endif()
+
+ # add the install rule
+ install(TARGETS ${target}
+ RUNTIME DESTINATION bin COMPONENT bin
+ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT bin
+ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT devel
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX} COMPONENT bin)
+
+endmacro()
+
+# add a new target which is a SFML example
+# ex: sfml_add_example(ftp
+# SOURCES ftp.cpp ...
+# DEPENDS sfml-network sfml-system)
+macro(sfml_add_example target)
+
+ # parse the arguments
+ sfml_parse_arguments(THIS "SOURCES;DEPENDS" "GUI_APP" ${ARGN})
+
+ # set a source group for the source files
+ source_group("" FILES ${THIS_SOURCES})
+
+ # create the target
+ if(THIS_GUI_APP AND WINDOWS)
+ add_executable(${target} WIN32 ${THIS_SOURCES})
+ target_link_libraries(${target} sfml-main)
+ else()
+ add_executable(${target} ${THIS_SOURCES})
+ endif()
+
+ # set the debug suffix
+ set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -d)
+
+ # set the target's folder (for IDEs that support it, e.g. Visual Studio)
+ set_target_properties(${target} PROPERTIES FOLDER "Examples")
+
+ # for gcc >= 4.0 on Windows, apply the SFML_USE_STATIC_STD_LIBS option if it is enabled
+ if(WINDOWS AND COMPILER_GCC AND SFML_USE_STATIC_STD_LIBS)
+ if(NOT GCC_VERSION VERSION_LESS "4")
+ set_target_properties(${target} PROPERTIES LINK_FLAGS "-static-libgcc -static-libstdc++")
+ endif()
+ endif()
+
+ # link the target to its SFML dependencies
+ if(THIS_DEPENDS)
+ target_link_libraries(${target} ${THIS_DEPENDS})
+ endif()
+
+ # add the install rule
+ install(TARGETS ${target}
+ RUNTIME DESTINATION ${INSTALL_MISC_DIR}/examples/${target} COMPONENT examples)
+
+ # install the example's source code
+ install(FILES ${THIS_SOURCES}
+ DESTINATION ${INSTALL_MISC_DIR}/examples/${target}
+ COMPONENT examples)
+
+ # install the example's resources as well
+ set(EXAMPLE_RESOURCES "${CMAKE_SOURCE_DIR}/examples/${target}/resources")
+ if(EXISTS ${EXAMPLE_RESOURCES})
+ install(DIRECTORY ${EXAMPLE_RESOURCES}
+ DESTINATION ${INSTALL_MISC_DIR}/examples/${target}
+ COMPONENT examples)
+ endif()
+endmacro()
diff --git a/cmake/Modules/FindGLEW.cmake b/cmake/Modules/FindGLEW.cmake
new file mode 100644
index 0000000..5546487
--- /dev/null
+++ b/cmake/Modules/FindGLEW.cmake
@@ -0,0 +1,65 @@
+#
+# Try to find GLEW library and include path.
+# Once done this will define
+#
+# GLEW_FOUND
+# GLEW_INCLUDE_PATH
+# GLEW_LIBRARY
+#
+
+IF (WIN32)
+ FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h
+ $ENV{PROGRAMFILES}/GLEW/include
+ ${GLEW_ROOT_DIR}/include
+ DOC "The directory where GL/glew.h resides")
+
+ IF (NV_SYSTEM_PROCESSOR STREQUAL "AMD64")
+ FIND_LIBRARY( GLEW_LIBRARY
+ NAMES glew64 glew64s
+ PATHS
+ $ENV{PROGRAMFILES}/GLEW/lib
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib
+ DOC "The GLEW library (64-bit)"
+ )
+ ELSE(NV_SYSTEM_PROCESSOR STREQUAL "AMD64")
+ FIND_LIBRARY( GLEW_LIBRARY
+ NAMES glew GLEW glew32 glew32s
+ PATHS
+ $ENV{PROGRAMFILES}/GLEW/lib
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib
+ DOC "The GLEW library"
+ )
+ ENDIF(NV_SYSTEM_PROCESSOR STREQUAL "AMD64")
+ELSE (WIN32)
+ FIND_PATH( GLEW_INCLUDE_PATH GL/glew.h
+ /usr/include
+ /usr/local/include
+ /sw/include
+ /opt/local/include
+ ${GLEW_ROOT_DIR}/include
+ DOC "The directory where GL/glew.h resides")
+
+ FIND_LIBRARY( GLEW_LIBRARY
+ NAMES GLEW glew
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/local/lib64
+ /usr/local/lib
+ /sw/lib
+ /opt/local/lib
+ ${GLEW_ROOT_DIR}/lib
+ DOC "The GLEW library")
+ENDIF (WIN32)
+
+SET(GLEW_FOUND "NO")
+IF (GLEW_INCLUDE_PATH AND GLEW_LIBRARY)
+ SET(GLEW_LIBRARIES ${GLEW_LIBRARY})
+ SET(GLEW_FOUND "YES")
+ENDIF (GLEW_INCLUDE_PATH AND GLEW_LIBRARY)
+
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLEW DEFAULT_MSG GLEW_LIBRARY GLEW_INCLUDE_PATH)
diff --git a/cmake/Modules/FindSFML.cmake b/cmake/Modules/FindSFML.cmake
new file mode 100644
index 0000000..3c57641
--- /dev/null
+++ b/cmake/Modules/FindSFML.cmake
@@ -0,0 +1,209 @@
+# This script locates the SFML library
+# ------------------------------------
+#
+# Usage
+# -----
+#
+# When you try to locate the SFML libraries, you must specify which modules you want to use (system, window, graphics, network, audio, main).
+# If none is given, the SFML_LIBRARIES variable will be empty and you'll end up linking to nothing.
+# example:
+# find_package(SFML COMPONENTS graphics window system) // find the graphics, window and system modules
+#
+# You can enforce a specific version, either MAJOR.MINOR or only MAJOR.
+# If nothing is specified, the version won't be checked (ie. any version will be accepted).
+# example:
+# find_package(SFML COMPONENTS ...) // no specific version required
+# find_package(SFML 2 COMPONENTS ...) // any 2.x version
+# find_package(SFML 2.4 COMPONENTS ...) // version 2.4 or greater
+#
+# By default, the dynamic libraries of SFML will be found. To find the static ones instead,
+# you must set the SFML_STATIC_LIBRARIES variable to TRUE before calling find_package(SFML ...).
+# In case of static linking, the SFML_STATIC macro will also be defined by this script.
+# example:
+# set(SFML_STATIC_LIBRARIES TRUE)
+# find_package(SFML 2 COMPONENTS network system)
+#
+# On Mac OS X if SFML_STATIC_LIBRARIES is not set to TRUE then by default CMake will search for frameworks unless
+# CMAKE_FIND_FRAMEWORK is set to "NEVER" for example. Please refer to CMake documentation for more details.
+# Moreover, keep in mind that SFML frameworks are only available as release libraries unlike dylibs which
+# are available for both release and debug modes.
+#
+# If SFML is not installed in a standard path, you can use the SFML_ROOT CMake (or environment) variable
+# to tell CMake where SFML is.
+#
+# Output
+# ------
+#
+# This script defines the following variables:
+# - For each specified module XXX (system, window, graphics, network, audio, main):
+# - SFML_XXX_LIBRARY_DEBUG: the name of the debug library of the xxx module (set to SFML_XXX_LIBRARY_RELEASE is no debug version is found)
+# - SFML_XXX_LIBRARY_RELEASE: the name of the release library of the xxx module (set to SFML_XXX_LIBRARY_DEBUG is no release version is found)
+# - SFML_XXX_LIBRARY: the name of the library to link to for the xxx module (includes both debug and optimized names if necessary)
+# - SFML_XXX_FOUND: true if either the debug or release library of the xxx module is found
+# - SFML_LIBRARIES: the list of all libraries corresponding to the required modules
+# - SFML_FOUND: true if all the required modules are found
+# - SFML_INCLUDE_DIR: the path where SFML headers are located (the directory containing the SFML/Config.hpp file)
+#
+# example:
+# find_package(SFML 2 COMPONENTS system window graphics audio REQUIRED)
+# include_directories(${SFML_INCLUDE_DIR})
+# add_executable(myapp ...)
+# target_link_libraries(myapp ${SFML_LIBRARIES})
+
+# define the SFML_STATIC macro if static build was chosen
+if(SFML_STATIC_LIBRARIES)
+ add_definitions(-DSFML_STATIC)
+endif()
+
+# deduce the libraries suffix from the options
+set(FIND_SFML_LIB_SUFFIX "")
+if(SFML_STATIC_LIBRARIES)
+ set(FIND_SFML_LIB_SUFFIX "${FIND_SFML_LIB_SUFFIX}-s")
+endif()
+
+# find the SFML include directory
+find_path(SFML_INCLUDE_DIR SFML/Config.hpp
+ PATH_SUFFIXES include
+ PATHS
+ ${SFML_ROOT}
+ $ENV{SFML_ROOT}
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /usr/local/
+ /usr/
+ /sw # Fink
+ /opt/local/ # DarwinPorts
+ /opt/csw/ # Blastwave
+ /opt/)
+
+# check the version number
+set(SFML_VERSION_OK TRUE)
+if(SFML_FIND_VERSION AND SFML_INCLUDE_DIR)
+ # extract the major and minor version numbers from SFML/Config.hpp
+ # we have to handle framework a little bit differently :
+ if("${SFML_INCLUDE_DIR}" MATCHES "SFML.framework")
+ set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/Headers/Config.hpp")
+ else()
+ set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/SFML/Config.hpp")
+ endif()
+ FILE(READ "${SFML_CONFIG_HPP_INPUT}" SFML_CONFIG_HPP_CONTENTS)
+ STRING(REGEX MATCH ".*#define SFML_VERSION_MAJOR ([0-9]+).*#define SFML_VERSION_MINOR ([0-9]+).*" SFML_CONFIG_HPP_CONTENTS "${SFML_CONFIG_HPP_CONTENTS}")
+ STRING(REGEX REPLACE ".*#define SFML_VERSION_MAJOR ([0-9]+).*" "\\1" SFML_VERSION_MAJOR "${SFML_CONFIG_HPP_CONTENTS}")
+ STRING(REGEX REPLACE ".*#define SFML_VERSION_MINOR ([0-9]+).*" "\\1" SFML_VERSION_MINOR "${SFML_CONFIG_HPP_CONTENTS}")
+ math(EXPR SFML_REQUESTED_VERSION "${SFML_FIND_VERSION_MAJOR} * 10 + ${SFML_FIND_VERSION_MINOR}")
+
+ # if we could extract them, compare with the requested version number
+ if (SFML_VERSION_MAJOR)
+ # transform version numbers to an integer
+ math(EXPR SFML_VERSION "${SFML_VERSION_MAJOR} * 10 + ${SFML_VERSION_MINOR}")
+
+ # compare them
+ if(SFML_VERSION LESS SFML_REQUESTED_VERSION)
+ set(SFML_VERSION_OK FALSE)
+ endif()
+ else()
+ # SFML version is < 2.0
+ if (SFML_REQUESTED_VERSION GREATER 19)
+ set(SFML_VERSION_OK FALSE)
+ set(SFML_VERSION_MAJOR 1)
+ set(SFML_VERSION_MINOR x)
+ endif()
+ endif()
+endif()
+
+# find the requested modules
+set(SFML_FOUND TRUE) # will be set to false if one of the required modules is not found
+set(FIND_SFML_LIB_PATHS
+ ${SFML_ROOT}
+ $ENV{SFML_ROOT}
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /usr/local
+ /usr
+ /sw
+ /opt/local
+ /opt/csw
+ /opt)
+foreach(FIND_SFML_COMPONENT ${SFML_FIND_COMPONENTS})
+ string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER)
+ string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER)
+ set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER}${FIND_SFML_LIB_SUFFIX})
+
+ # no suffix for sfml-main, it is always a static library
+ if(FIND_SFML_COMPONENT_LOWER STREQUAL "main")
+ set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER})
+ endif()
+
+ # debug library
+ find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG
+ NAMES ${FIND_SFML_COMPONENT_NAME}-d
+ PATH_SUFFIXES lib64 lib
+ PATHS ${FIND_SFML_LIB_PATHS})
+
+ # release library
+ find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE
+ NAMES ${FIND_SFML_COMPONENT_NAME}
+ PATH_SUFFIXES lib64 lib
+ PATHS ${FIND_SFML_LIB_PATHS})
+
+ if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG OR SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
+ # library found
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND TRUE)
+
+ # if both are found, set SFML_XXX_LIBRARY to contain both
+ if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY debug ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}
+ optimized ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
+ endif()
+
+ # if only one debug/release variant is found, set the other to be equal to the found one
+ if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
+ # debug and not release
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG})
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG})
+ endif()
+ if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG)
+ # release and not debug
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
+ endif()
+ else()
+ # library not found
+ set(SFML_FOUND FALSE)
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND FALSE)
+ set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY "")
+ set(FIND_SFML_MISSING "${FIND_SFML_MISSING} SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY")
+ endif()
+
+ # mark as advanced
+ MARK_AS_ADVANCED(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY
+ SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE
+ SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG)
+
+ # add to the global list of libraries
+ set(SFML_LIBRARIES ${SFML_LIBRARIES} "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}")
+endforeach()
+
+# handle errors
+if(NOT SFML_VERSION_OK)
+ # SFML version not ok
+ set(FIND_SFML_ERROR "SFML found but version too low (requested: ${SFML_FIND_VERSION}, found: ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR})")
+ set(SFML_FOUND FALSE)
+elseif(NOT SFML_FOUND)
+ # include directory or library not found
+ set(FIND_SFML_ERROR "Could NOT find SFML (missing: ${FIND_SFML_MISSING})")
+endif()
+if (NOT SFML_FOUND)
+ if(SFML_FIND_REQUIRED)
+ # fatal error
+ message(FATAL_ERROR ${FIND_SFML_ERROR})
+ elseif(NOT SFML_FIND_QUIETLY)
+ # error but continue
+ message("${FIND_SFML_ERROR}")
+ endif()
+endif()
+
+# handle success
+if(SFML_FOUND)
+ message(STATUS "Found SFML ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR} in ${SFML_INCLUDE_DIR}")
+endif()
diff --git a/cmake/Modules/FindSndfile.cmake b/cmake/Modules/FindSndfile.cmake
new file mode 100644
index 0000000..16c31dd
--- /dev/null
+++ b/cmake/Modules/FindSndfile.cmake
@@ -0,0 +1,28 @@
+# - Find sndfile
+# Find the native sndfile includes and libraries
+#
+# SNDFILE_INCLUDE_DIR - where to find sndfile.h, etc.
+# SNDFILE_LIBRARIES - List of libraries when using libsndfile.
+# SNDFILE_FOUND - True if libsndfile found.
+
+if(SNDFILE_INCLUDE_DIR)
+ # Already in cache, be silent
+ set(SNDFILE_FIND_QUIETLY TRUE)
+endif(SNDFILE_INCLUDE_DIR)
+
+find_path(SNDFILE_INCLUDE_DIR sndfile.h)
+
+find_library(SNDFILE_LIBRARY NAMES sndfile sndfile-1)
+
+# Handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if
+# all listed variables are TRUE.
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SNDFILE DEFAULT_MSG SNDFILE_LIBRARY SNDFILE_INCLUDE_DIR)
+
+if(SNDFILE_FOUND)
+ set(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY})
+else(SNDFILE_FOUND)
+ set(SNDFILE_LIBRARIES)
+endif(SNDFILE_FOUND)
+
+mark_as_advanced(SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000..ae5a928
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,61 @@
+
+# find doxygen
+if(MACOSX)
+ # Add some path to search doxygen in more directories.
+ set(ADDITIONAL_PATHS
+ /Developer/Applications/Doxygen.app/Contents/Resources
+ /Developer/Applications/Doxygen.app/Contents/MacOS
+ $ENV{HOME}/Applications/Doxygen.app/Contents/Resources
+ $ENV{HOME}/Applications/Doxygen.app/Contents/MacOS
+ $ENV{HOME}/Applications/Developer/Doxygen.app/Contents/Resources
+ $ENV{HOME}/Applications/Developer/Doxygen.app/Contents/MacOS)
+
+ set(CMAKE_PROGRAM_PATH ${CMAKE_PROGRAM_PATH} ${ADDITIONAL_PATHS})
+endif()
+
+find_package(Doxygen REQUIRED)
+
+# set the input and output documentation paths
+set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR})
+set(DOXYGEN_OUTPUT_DIR ${PROJECT_BINARY_DIR}/doc)
+
+# see if we can generate the CHM documentation
+if(WINDOWS)
+ # if HHC is found, we can generate the CHM (compressed HTML) output
+ find_program(DOXYGEN_HHC_PROGRAM
+ NAMES hhc.exe
+ PATHS "c:/Program Files/HTML Help Workshop"
+ DOC "HTML Help Compiler program")
+ if(DOXYGEN_HHC_PROGRAM)
+ set(DOXYGEN_GENERATE_HTMLHELP YES)
+ else()
+ set(DOXYGEN_GENERATE_HTMLHELP NO)
+ endif()
+else()
+ set(DOXYGEN_HHC_PROGRAM)
+ set(DOXYGEN_GENERATE_HTMLHELP NO)
+endif()
+
+# configure the source Doxyfile by copying it and replacing all @variables@
+set(DOXYGEN_CONFIGURED_INPUT ${DOXYGEN_OUTPUT_DIR}/doxyfile)
+configure_file(${DOXYGEN_INPUT_DIR}/doc/doxyfile.in ${DOXYGEN_CONFIGURED_INPUT} @ONLY)
+
+# copy the files needed by the documentation
+configure_file(${DOXYGEN_INPUT_DIR}/doc/doxygen.css ${DOXYGEN_OUTPUT_DIR}/html/doxygen.css COPYONLY)
+
+# target setup
+add_custom_target(doc ALL
+ COMMAND ${CMAKE_COMMAND} -E echo_append "Building API Documentation..."
+ COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIGURED_INPUT}
+ COMMAND ${CMAKE_COMMAND} -E echo "Done."
+ WORKING_DIRECTORY ${DOXYGEN_INPUT_DIR})
+
+# setup install rules
+install(DIRECTORY ${DOXYGEN_OUTPUT_DIR}/html
+ DESTINATION ${INSTALL_MISC_DIR}/doc
+ COMPONENT doc)
+if(DOXYGEN_HHC_PROGRAM)
+ install(FILES ${DOXYGEN_OUTPUT_DIR}/sfml.chm
+ DESTINATION ${INSTALL_MISC_DIR}/doc
+ COMPONENT doc)
+endif()
diff --git a/doc/SFML.chm b/doc/SFML.chm
deleted file mode 100755
index 054a852..0000000
--- a/doc/SFML.chm
+++ /dev/null
Binary files differ
diff --git a/doc/SFML.htm b/doc/SFML.htm
deleted file mode 100755
index 631d42a..0000000
--- a/doc/SFML.htm
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>SFML reference documentation</title>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
- <meta http-equiv="refresh" content="0; url=./html/index.htm" />
- <meta name="robots" content="noindex,follow" />
- </head>
-</html>
diff --git a/doc/doxyfile.in b/doc/doxyfile.in
new file mode 100644
index 0000000..6f4f26e
--- /dev/null
+++ b/doc/doxyfile.in
@@ -0,0 +1,1542 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = SFML
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION_MAJOR@.@VERSION_MINOR@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = "@DOXYGEN_OUTPUT_DIR@"
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = YES
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page. This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = "@DOXYGEN_INPUT_DIR@/include/SFML" \
+ "@DOXYGEN_INPUT_DIR@/doc/mainpage.hpp"
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.d \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.dox \
+ *.py
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = .svn \
+ Linux \
+ Unix \
+ OSX*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS = priv
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = NO
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .htm
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER = "@DOXYGEN_INPUT_DIR@/doc/header.htm"
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER = "@DOXYGEN_INPUT_DIR@/doc/footer.htm"
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET = "@DOXYGEN_INPUT_DIR@/doc/doxygen.css"
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE = ../SFML.chm
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION = "@DOXYGEN_HHC_PROGRAM@"
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 1
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED = SFML_SYSTEM_API \
+ SFML_NETWORK_API \
+ SFML_WINDOW_API \
+ SFML_AUDIO_API \
+ SFML_GRAPHICS_API
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/doxygen.css b/doc/doxygen.css
new file mode 100644
index 0000000..d89e3a0
--- /dev/null
+++ b/doc/doxygen.css
@@ -0,0 +1,1278 @@
+/* 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;
+}
+
+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;
+}
+
+.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
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+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;
+}
+
diff --git a/doc/footer.htm b/doc/footer.htm
new file mode 100644
index 0000000..0e67142
--- /dev/null
+++ b/doc/footer.htm
@@ -0,0 +1,9 @@
+ </div>
+ <div id="footer-container">
+ <div id="footer">
+ Copyright © Laurent Gomila &nbsp;::&nbsp;
+ Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen</a> &nbsp;::&nbsp;
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/doc/header.htm b/doc/header.htm
new file mode 100644
index 0000000..c1a6be4
--- /dev/null
+++ b/doc/header.htm
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>SFML - Simple and Fast Multimedia Library</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+ <!--<link rel='stylesheet' type='text/css' href="http://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
+ <link rel="stylesheet" type="text/css" href="doxygen.css" title="default" media="screen,print" />
+ </head>
+ <body>
+ <div id="banner-container">
+ <div id="banner">
+ <span id="sfml">SFML</span>
+ </div>
+ </div>
+ <div id="content">
diff --git a/doc/html/Arial_8hpp-source.htm b/doc/html/Arial_8hpp-source.htm
deleted file mode 100755
index 322172a..0000000
--- a/doc/html/Arial_8hpp-source.htm
+++ /dev/null
@@ -1,14721 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Arial.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 0, 1, 0, 0, 0, 23, 1, 0, 0, 4, 0, 112, 68, 83, 73, 71, 36, 61, -7, -25, 0, 5, 127, -116, 0,
-<a name="l00002"></a>00002 0, 26, 124, 71, 68, 69, 70, 94, 35, 93, 114, 0, 5, 117, 24, 0, 0, 0, -90, 71, 83, 85, 66, -43, -16,
-<a name="l00003"></a>00003 -35, -52, 0, 5, 117, -64, 0, 0, 9, -86, 74, 83, 84, 70, 109, 42, 105, 6, 0, 5, 127, 108, 0, 0, 0,
-<a name="l00004"></a>00004 30, 76, 84, 83, 72, -128, 101, -6, 60, 0, 0, 28, 120, 0, 0, 6, -114, 79, 83, 47, 50, 12, -33, 50, 107,
-<a name="l00005"></a>00005 0, 0, 1, -8, 0, 0, 0, 86, 80, 67, 76, 84, -3, 123, 62, 67, 0, 5, 116, -32, 0, 0, 0, 54, 86,
-<a name="l00006"></a>00006 68, 77, 88, 80, -110, 106, -11, 0, 0, 35, 8, 0, 0, 17, -108, 99, 109, 97, 112, -25, 64, 106, 58, 0, 0,
-<a name="l00007"></a>00007 -47, -60, 0, 0, 23, 106, 99, 118, 116, 32, -106, 42, -46, 118, 0, 0, -6, -96, 0, 0, 6, 48, 102, 112, 103,
-<a name="l00008"></a>00008 109, -52, 121, 89, -102, 0, 0, -23, 48, 0, 0, 6, 110, 103, 97, 115, 112, 0, 24, 0, 9, 0, 5, 116, -48,
-<a name="l00009"></a>00009 0, 0, 0, 16, 103, 108, 121, 102, 14, -9, -113, -20, 0, 1, 26, -4, 0, 3, -25, 98, 104, 100, 109, 120, -66,
-<a name="l00010"></a>00010 -69, -61, -105, 0, 0, 52, -100, 0, 0, -99, 40, 104, 101, 97, 100, -50, -104, 38, -110, 0, 0, 1, 124, 0, 0,
-<a name="l00011"></a>00011 0, 54, 104, 104, 101, 97, 18, 51, 18, -1, 0, 0, 1, -76, 0, 0, 0, 36, 104, 109, 116, 120, 14, 52, 88,
-<a name="l00012"></a>00012 64, 0, 0, 2, 80, 0, 0, 26, 40, 107, 101, 114, 110, 55, 97, 57, 54, 0, 5, 2, 96, 0, 0, 21, 96,
-<a name="l00013"></a>00013 108, 111, 99, 97, 14, 97, 105, 50, 0, 1, 0, -48, 0, 0, 26, 44, 109, 97, 120, 112, 11, 71, 12, -88, 0,
-<a name="l00014"></a>00014 0, 1, -40, 0, 0, 0, 32, 110, 97, 109, 101, -64, -14, 101, 59, 0, 5, 23, -64, 0, 0, 27, 13, 112, 111,
-<a name="l00015"></a>00015 115, 116, -113, -23, -41, 126, 0, 5, 50, -48, 0, 0, 65, -1, 112, 114, 101, 112, 82, -2, -60, -23, 0, 0, -17,
-<a name="l00016"></a>00016 -96, 0, 0, 10, -1, 0, 1, 0, 0, 0, 3, 0, 0, -26, -24, -70, -22, 95, 15, 60, -11, 8, 27, 8, 0,
-<a name="l00017"></a>00017 0, 0, 0, 0, -94, -29, 39, 42, 0, 0, 0, 0, -71, -43, -76, -10, -6, -81, -3, 103, 16, 0, 8, 12, 0,
-<a name="l00018"></a>00018 0, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7, 62, -2, 78, 0, 67, 16, 0, -6, -81,
-<a name="l00019"></a>00019 -2, 38, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -118, 0, 1, 0,
-<a name="l00020"></a>00020 0, 6, -118, 1, 0, 0, 63, 0, 118, 0, 7, 0, 2, 0, 16, 0, 47, 0, 86, 0, 0, 4, 13, 10, -1,
-<a name="l00021"></a>00021 0, 3, 0, 2, 0, 1, 3, -120, 1, -112, 0, 5, 0, 0, 5, -102, 5, 51, 0, 0, 1, 27, 5, -102, 5,
-<a name="l00022"></a>00022 51, 0, 0, 3, -47, 0, 102, 2, 18, 8, 5, 2, 11, 6, 4, 2, 2, 2, 2, 2, 4, 0, 0, 122, -121,
-<a name="l00023"></a>00023 -128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 77, 111, 110, 111, 0, 64, 0, 32, -1, -4, 5, -45, -2,
-<a name="l00024"></a>00024 81, 1, 51, 7, 62, 1, -78, 64, 0, 1, -1, -1, -1, 0, 0, 0, 0, 6, 0, 1, 0, 0, 0, 0, 0,
-<a name="l00025"></a>00025 2, 57, 0, 0, 2, 57, 0, 0, 2, 57, 0, -80, 2, -41, 0, 94, 4, 115, 0, 21, 4, 115, 0, 73, 7,
-<a name="l00026"></a>00026 29, 0, 119, 5, 86, 0, 88, 1, -121, 0, 90, 2, -86, 0, 124, 2, -86, 0, 124, 3, 29, 0, 64, 4, -84,
-<a name="l00027"></a>00027 0, 114, 2, 57, 0, -86, 2, -86, 0, 65, 2, 57, 0, -70, 2, 57, 0, 0, 4, 115, 0, 85, 4, 115, 0,
-<a name="l00028"></a>00028 -33, 4, 115, 0, 60, 4, 115, 0, 86, 4, 115, 0, 26, 4, 115, 0, 85, 4, 115, 0, 77, 4, 115, 0, 97,
-<a name="l00029"></a>00029 4, 115, 0, 83, 4, 115, 0, 85, 2, 57, 0, -71, 2, 57, 0, -86, 4, -84, 0, 112, 4, -84, 0, 114, 4,
-<a name="l00030"></a>00030 -84, 0, 112, 4, 115, 0, 90, 8, 31, 0, 111, 5, 86, -1, -3, 5, 86, 0, -106, 5, -57, 0, 102, 5, -57,
-<a name="l00031"></a>00031 0, -98, 5, 86, 0, -94, 4, -29, 0, -88, 6, 57, 0, 109, 5, -57, 0, -92, 2, 57, 0, -65, 4, 0, 0,
-<a name="l00032"></a>00032 55, 5, 86, 0, -106, 4, 115, 0, -106, 6, -86, 0, -104, 5, -57, 0, -100, 6, 57, 0, 99, 5, 86, 0, -98,
-<a name="l00033"></a>00033 6, 57, 0, 88, 5, -57, 0, -95, 5, 86, 0, 92, 4, -29, 0, 48, 5, -57, 0, -95, 5, 86, 0, 9, 7,
-<a name="l00034"></a>00034 -115, 0, 25, 5, 86, 0, 9, 5, 86, 0, 6, 4, -29, 0, 41, 2, 57, 0, -117, 2, 57, 0, 0, 2, 57,
-<a name="l00035"></a>00035 0, 39, 3, -63, 0, 54, 4, 115, -1, -31, 2, -86, 0, 89, 4, 115, 0, 74, 4, 115, 0, -122, 4, 0, 0,
-<a name="l00036"></a>00036 80, 4, 115, 0, 70, 4, 115, 0, 75, 2, 57, 0, 19, 4, 115, 0, 66, 4, 115, 0, -121, 1, -57, 0, -120,
-<a name="l00037"></a>00037 1, -57, -1, -94, 4, 0, 0, -120, 1, -57, 0, -125, 6, -86, 0, -121, 4, 115, 0, -121, 4, 115, 0, 68, 4,
-<a name="l00038"></a>00038 115, 0, -121, 4, 115, 0, 72, 2, -86, 0, -123, 4, 0, 0, 63, 2, 57, 0, 36, 4, 115, 0, -125, 4, 0,
-<a name="l00039"></a>00039 0, 26, 5, -57, 0, 6, 4, 0, 0, 15, 4, 0, 0, 33, 4, 0, 0, 40, 2, -84, 0, 57, 2, 20, 0,
-<a name="l00040"></a>00040 -68, 2, -84, 0, 47, 4, -84, 0, 87, 5, 86, -1, -3, 5, 86, -1, -3, 5, -57, 0, 104, 5, 86, 0, -94,
-<a name="l00041"></a>00041 5, -57, 0, -100, 6, 57, 0, 99, 5, -57, 0, -95, 4, 115, 0, 74, 4, 115, 0, 74, 4, 115, 0, 74, 4,
-<a name="l00042"></a>00042 115, 0, 74, 4, 115, 0, 74, 4, 115, 0, 74, 4, 0, 0, 80, 4, 115, 0, 75, 4, 115, 0, 75, 4, 115,
-<a name="l00043"></a>00043 0, 75, 4, 115, 0, 75, 2, 57, 0, -67, 2, 57, 0, 35, 2, 57, -1, -27, 2, 57, 0, 9, 4, 115, 0,
-<a name="l00044"></a>00044 -121, 4, 115, 0, 68, 4, 115, 0, 68, 4, 115, 0, 68, 4, 115, 0, 68, 4, 115, 0, 68, 4, 115, 0, -125,
-<a name="l00045"></a>00045 4, 115, 0, -125, 4, 115, 0, -125, 4, 115, 0, -125, 4, 115, 0, 73, 3, 51, 0, -128, 4, 115, 0, 107, 4,
-<a name="l00046"></a>00046 115, 0, 27, 4, 115, 0, 81, 2, -51, 0, 109, 4, 76, 0, 1, 4, -29, 0, -103, 5, -27, 0, 3, 5, -27,
-<a name="l00047"></a>00047 0, 3, 8, 0, 0, -31, 2, -86, 0, -34, 2, -86, 0, 61, 4, 100, 0, 78, 8, 0, 0, 1, 6, 57, 0,
-<a name="l00048"></a>00048 83, 5, -76, 0, -102, 4, 100, 0, 78, 4, 100, 0, 77, 4, 100, 0, 77, 4, 115, -1, -3, 4, -100, 0, -96,
-<a name="l00049"></a>00049 3, -12, 0, 56, 5, -76, 0, 122, 6, -106, 0, -95, 4, 100, 0, 0, 2, 49, 0, 0, 2, -10, 0, 47, 2,
-<a name="l00050"></a>00050 -20, 0, 45, 6, 37, 0, 127, 7, 29, 0, 68, 4, -29, 0, -127, 4, -29, 0, -98, 2, -86, 0, -24, 4, -84,
-<a name="l00051"></a>00051 0, 114, 4, 100, 0, 84, 4, 115, 0, 46, 4, 100, 0, 51, 4, -27, 0, 26, 4, 115, 0, -122, 4, 115, 0,
-<a name="l00052"></a>00052 -116, 8, 0, 0, -17, 5, 86, -1, -3, 5, 86, -1, -3, 6, 57, 0, 99, 8, 0, 0, -127, 7, -115, 0, 82,
-<a name="l00053"></a>00053 4, 115, -1, -4, 8, 0, 0, 0, 2, -86, 0, 83, 2, -86, 0, 71, 1, -57, 0, -128, 1, -57, 0, 108, 4,
-<a name="l00054"></a>00054 100, 0, 78, 3, -12, 0, 47, 4, 0, 0, 33, 5, 86, 0, 6, 1, 86, -2, 57, 4, 115, -1, -28, 2, -86,
-<a name="l00055"></a>00055 0, 92, 2, -86, 0, 92, 4, 0, 0, 23, 4, 0, 0, 23, 4, 115, 0, 73, 2, 57, 0, -71, 1, -57, 0,
-<a name="l00056"></a>00056 108, 2, -86, 0, 71, 8, 0, 0, 37, 5, 86, -1, -3, 5, 86, 0, -94, 5, 86, -1, -3, 5, 86, 0, -94,
-<a name="l00057"></a>00057 5, 86, 0, -94, 2, 57, 0, -115, 2, 57, -1, -32, 2, 57, 0, 4, 2, 57, 0, 21, 6, 57, 0, 99, 6,
-<a name="l00058"></a>00058 57, 0, 99, 6, 57, 0, 99, 5, -57, 0, -95, 5, -57, 0, -95, 5, -57, 0, -95, 2, 57, 0, -58, 2, -86,
-<a name="l00059"></a>00059 0, 25, 2, -86, 0, 6, 2, -86, 0, 29, 2, -86, 0, 46, 2, -86, 0, -27, 2, -86, 0, -94, 2, -86, 0,
-<a name="l00060"></a>00060 107, 2, -86, 0, 58, 2, -86, 0, -73, 2, -86, 0, 40, 4, 115, 0, 0, 1, -57, 0, 3, 5, 86, 0, 92,
-<a name="l00061"></a>00061 4, 0, 0, 63, 4, -29, 0, 41, 4, 0, 0, 40, 2, 20, 0, -68, 5, -57, -1, -3, 4, 115, 0, 73, 5,
-<a name="l00062"></a>00062 86, 0, 6, 4, 0, 0, 33, 5, 86, 0, -98, 4, 115, 0, -121, 4, -84, 0, 114, 4, -84, 0, -95, 2, -86,
-<a name="l00063"></a>00063 0, 107, 2, -86, 0, 25, 2, -86, 0, 33, 6, -84, 0, 107, 6, -84, 0, 107, 6, -84, 0, 33, 4, 115, 0,
-<a name="l00064"></a>00064 0, 6, 57, 0, 109, 4, 115, 0, 66, 2, 57, 0, -79, 5, 86, 0, 92, 4, 0, 0, 63, 5, -57, 0, 102,
-<a name="l00065"></a>00065 4, 0, 0, 80, 5, -57, 0, 102, 4, 0, 0, 80, 4, 115, 0, 70, 4, 107, -1, -31, 2, -86, 1, -15, 5,
-<a name="l00066"></a>00066 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, -57, 0, -98, 4, -21, 0, 71, 5, -57,
-<a name="l00067"></a>00067 -1, -3, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 4, 115, 0, -106, 1, -57, 0,
-<a name="l00068"></a>00068 66, 4, 115, 0, -106, 2, 85, 0, -120, 4, 115, 0, -102, 2, -84, 0, -125, 5, -57, 0, -100, 4, 115, 0, -121,
-<a name="l00069"></a>00069 5, -57, 0, -100, 4, 115, 0, -121, 6, 57, 0, 99, 4, 115, 0, 68, 5, -57, 0, -95, 2, -86, 0, -123, 5,
-<a name="l00070"></a>00070 -57, 0, -95, 2, -86, 0, 60, 5, 86, 0, 92, 4, 0, 0, 63, 4, -29, 0, 48, 2, 57, 0, 36, 4, -29,
-<a name="l00071"></a>00071 0, 48, 3, 0, 0, 35, 5, -57, 0, -95, 4, 115, 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 4, -29, 0,
-<a name="l00072"></a>00072 41, 4, 0, 0, 40, 4, -29, 0, 41, 4, 0, 0, 40, 4, 104, 0, -92, 6, 57, 0, 96, 6, 98, 0, 85,
-<a name="l00073"></a>00073 4, -96, 0, 72, 4, 116, 0, 72, 3, -111, 0, 98, 4, -16, 0, 68, 3, 41, 0, 46, 5, 48, 0, 72, 4,
-<a name="l00074"></a>00074 107, -1, -31, 4, 0, 0, -80, 2, -21, 0, 82, 8, -64, 0, 51, 8, 0, 0, 79, 4, 0, 0, -103, 8, 0,
-<a name="l00075"></a>00075 0, 79, 4, 0, 0, -103, 8, 0, 0, 79, 4, 0, 0, -104, 4, 0, 0, -104, 7, -43, 1, 106, 5, -64, 0,
-<a name="l00076"></a>00076 -98, 4, -85, 0, 114, 4, -43, 0, -99, 4, -84, 0, 113, 4, -43, 2, 34, 4, -43, 1, 5, 5, -85, -1, -23,
-<a name="l00077"></a>00077 5, 0, 1, -55, 5, -85, 2, 126, 5, -85, -1, -23, 5, -85, 2, 126, 5, -85, -1, -23, 5, -85, 2, 126, 5,
-<a name="l00078"></a>00078 -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, 1, -64, 5, -85,
-<a name="l00079"></a>00079 2, 126, 5, -85, 1, -64, 5, -85, 1, -64, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, 2,
-<a name="l00080"></a>00080 126, 5, -85, 1, -64, 5, -85, 1, -64, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, 2, 126,
-<a name="l00081"></a>00081 5, -85, 1, -64, 5, -85, 1, -64, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5,
-<a name="l00082"></a>00082 -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85,
-<a name="l00083"></a>00083 -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, -1, -23, 5, -85, 2,
-<a name="l00084"></a>00084 -42, 5, -85, 0, 102, 5, -85, -1, -22, 5, -43, -1, -1, 4, -43, 0, -110, 8, 0, 0, 0, 7, -21, 1, 48,
-<a name="l00085"></a>00085 7, -21, 1, 32, 7, -21, 1, 48, 7, -21, 1, 32, 4, -43, 0, -78, 4, -43, 0, -128, 4, -43, 0, 42, 8,
-<a name="l00086"></a>00086 43, 1, -104, 8, 107, 1, -72, 7, 85, 0, 16, 6, 0, 0, -12, 6, 0, 0, 111, 4, 64, 0, 58, 5, 64,
-<a name="l00087"></a>00087 0, 55, 4, -64, 0, 63, 4, 21, 0, 64, 4, 0, 0, 37, 6, 0, 0, 85, 5, -31, 0, -65, 3, -115, 0,
-<a name="l00088"></a>00088 -119, 4, -43, -1, -39, 1, -128, 0, -128, 2, -43, 0, -122, 7, 21, 0, 97, 2, -106, 0, 15, 4, -43, 0, -110,
-<a name="l00089"></a>00089 2, -42, 0, -125, 2, -42, 0, -125, 4, -43, 0, -78, 2, -42, 0, 112, 5, 86, -1, -3, 4, 115, 0, 74, 5,
-<a name="l00090"></a>00090 -57, 0, 102, 4, 0, 0, 80, 5, -57, 0, 102, 4, 0, 0, 80, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86,
-<a name="l00091"></a>00091 0, -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 6, 57, 0, 109, 4, 115, 0, 66, 6, 57, 0,
-<a name="l00092"></a>00092 109, 4, 115, 0, 66, 6, 57, 0, 109, 4, 115, 0, 66, 5, -57, 0, -92, 4, 115, 0, -121, 5, -57, 0, 31,
-<a name="l00093"></a>00093 4, 115, 0, 6, 2, 57, -1, -50, 2, 57, -1, -50, 2, 57, -1, -28, 2, 57, -1, -28, 2, 57, -1, -10, 2,
-<a name="l00094"></a>00094 57, -1, -11, 2, 57, 0, -93, 1, -57, 0, 102, 4, 0, 0, 55, 1, -57, -1, -94, 5, 86, 0, -106, 4, 0,
-<a name="l00095"></a>00095 0, -120, 4, 0, 0, -122, 4, 115, 0, -106, 1, -57, -1, -6, 5, -57, 0, -100, 4, 115, 0, -121, 5, -55, 0,
-<a name="l00096"></a>00096 -91, 4, 115, 0, -117, 6, 57, 0, 99, 4, 115, 0, 68, 6, 57, 0, 99, 4, 115, 0, 68, 5, -57, 0, -95,
-<a name="l00097"></a>00097 2, -86, 0, 107, 5, 86, 0, 92, 4, 0, 0, 63, 4, -29, 0, 48, 2, 57, 0, 12, 5, -57, 0, -95, 4,
-<a name="l00098"></a>00098 115, 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 5, -57, 0, -95, 4, 115,
-<a name="l00099"></a>00099 0, -125, 7, -115, 0, 25, 5, -57, 0, 6, 5, 86, 0, 6, 4, 0, 0, 33, 1, -57, 0, -119, 5, 86, -1,
-<a name="l00100"></a>00100 -3, 4, 115, 0, 74, 8, 0, 0, 1, 7, 29, 0, 68, 6, 57, 0, 83, 4, -29, 0, -127, 2, 57, 0, -71,
-<a name="l00101"></a>00101 7, -115, 0, 25, 5, -57, 0, 6, 7, -115, 0, 25, 5, -57, 0, 6, 7, -115, 0, 25, 5, -57, 0, 6, 5,
-<a name="l00102"></a>00102 86, 0, 6, 4, 0, 0, 33, 1, -57, 0, -118, 2, -86, -1, -31, 4, 115, 0, 27, 4, -51, 0, 90, 6, -84,
-<a name="l00103"></a>00103 0, 107, 6, -84, 0, 34, 6, -84, 0, 34, 6, -84, 0, 74, 2, -86, 0, -30, 2, -86, 0, 107, 2, -86, 0,
-<a name="l00104"></a>00104 -34, 2, -86, -1, -22, 5, 87, -1, -1, 6, 70, -1, -89, 6, -76, -1, -88, 3, 18, -1, -88, 6, 50, -1, -89,
-<a name="l00105"></a>00105 6, -40, -1, -89, 6, 5, -1, -89, 1, -57, -1, 120, 5, 86, -1, -3, 5, 86, 0, -106, 5, 88, -1, -2, 5,
-<a name="l00106"></a>00106 86, 0, -94, 4, -29, 0, 41, 5, -57, 0, -92, 2, 57, 0, -65, 5, 86, 0, -106, 5, 88, 0, 11, 6, -86,
-<a name="l00107"></a>00107 0, -104, 5, -57, 0, -100, 5, 51, 0, 109, 6, 57, 0, 99, 5, -57, 0, -92, 5, 86, 0, -98, 4, -14, 0,
-<a name="l00108"></a>00108 -108, 4, -29, 0, 48, 5, 86, 0, 6, 5, 86, 0, 9, 6, -81, 0, 127, 5, -5, 0, 97, 2, 57, 0, 4,
-<a name="l00109"></a>00109 5, 86, 0, 6, 4, -96, 0, 72, 3, -111, 0, 98, 4, 115, 0, -117, 1, -57, 0, 107, 4, 96, 0, -120, 4,
-<a name="l00110"></a>00110 -102, 0, -116, 4, 0, 0, 25, 3, -121, 0, 72, 4, 115, 0, -117, 4, 115, 0, 92, 1, -57, 0, -119, 4, 0,
-<a name="l00111"></a>00111 0, -122, 4, 0, 0, 24, 4, -100, 0, -96, 4, 0, 0, 26, 3, -107, 0, 92, 4, 115, 0, 68, 4, -115, 0,
-<a name="l00112"></a>00112 -125, 3, -37, 0, 86, 4, 96, 0, -120, 4, 51, 0, 17, 5, -76, 0, 122, 6, 63, 0, 87, 1, -57, -1, -55,
-<a name="l00113"></a>00113 4, 96, 0, -120, 4, 115, 0, 72, 4, 96, 0, -120, 6, 63, 0, 87, 5, 87, 0, -94, 6, -21, 0, 50, 4,
-<a name="l00114"></a>00114 85, 0, -95, 5, -64, 0, 100, 5, 86, 0, 92, 2, 57, 0, -65, 2, 57, 0, 4, 4, 0, 0, 55, 8, 117,
-<a name="l00115"></a>00115 0, 13, 8, 21, 0, -92, 6, -43, 0, 49, 4, -87, 0, -95, 5, 21, 0, 10, 5, -64, 0, -96, 5, 86, -1,
-<a name="l00116"></a>00116 -3, 5, 64, 0, -89, 5, 86, 0, -106, 4, 85, 0, -95, 5, 107, 0, 0, 5, 86, 0, -94, 7, 99, 0, 7,
-<a name="l00117"></a>00117 4, -43, 0, 78, 5, -64, 0, -95, 5, -64, 0, -95, 4, -87, 0, -95, 5, 64, 0, 18, 6, -86, 0, -104, 5,
-<a name="l00118"></a>00118 -57, 0, -92, 6, 57, 0, 99, 5, -64, 0, -96, 5, 86, 0, -98, 5, -57, 0, 102, 4, -29, 0, 48, 5, 21,
-<a name="l00119"></a>00119 0, 10, 6, 21, 0, 82, 5, 86, 0, 9, 5, -21, 0, -97, 5, 85, 0, 87, 7, 85, 0, -95, 7, -128, 0,
-<a name="l00120"></a>00120 -95, 6, 85, 0, 0, 7, 21, 0, -88, 5, 64, 0, -91, 5, -64, 0, 85, 8, 21, 0, -92, 5, -57, 0, 26,
-<a name="l00121"></a>00121 4, 115, 0, 74, 4, -107, 0, 91, 4, 64, 0, -120, 2, -21, 0, -120, 4, -85, 0, 0, 4, 115, 0, 75, 5,
-<a name="l00122"></a>00122 90, -1, -5, 3, -85, 0, 50, 4, 120, 0, -121, 4, 120, 0, -121, 3, -128, 0, -122, 4, -85, 0, 24, 5, -128,
-<a name="l00123"></a>00123 0, -116, 4, 107, 0, -120, 4, 115, 0, 68, 4, 85, 0, -120, 4, 115, 0, -121, 4, 0, 0, 80, 3, -86, 0,
-<a name="l00124"></a>00124 38, 4, 0, 0, 33, 6, -107, 0, 75, 4, 0, 0, 15, 4, -107, 0, -118, 4, 43, 0, 69, 6, 107, 0, -115,
-<a name="l00125"></a>00125 6, -107, 0, -115, 5, 0, 0, 40, 5, -64, 0, -117, 4, 43, 0, -124, 4, 21, 0, 48, 6, 0, 0, -119, 4,
-<a name="l00126"></a>00126 85, 0, 31, 4, 115, 0, 75, 4, 115, 0, 0, 2, -21, 0, -119, 4, 21, 0, 75, 4, 0, 0, 63, 1, -57,
-<a name="l00127"></a>00127 0, -120, 2, 57, 0, 9, 1, -57, -1, -94, 7, 64, 0, 19, 6, -128, 0, -125, 4, 115, 0, 0, 3, -128, 0,
-<a name="l00128"></a>00128 -122, 4, 0, 0, 33, 4, 107, 0, -120, 3, -23, 0, -95, 3, 74, 0, -120, 8, 0, 0, 65, 8, -107, 0, -96,
-<a name="l00129"></a>00129 5, -123, 0, 45, 2, -86, 1, 1, 2, -86, 0, 30, 2, -86, 0, 49, 2, -86, 0, 49, 2, -86, 1, 1, 2,
-<a name="l00130"></a>00130 -86, 0, 126, 2, -86, 0, 126, 2, -86, 0, -116, 2, -86, 0, -116, 2, -86, 1, 1, 2, -86, 0, 16, 2, -86,
-<a name="l00131"></a>00131 1, 1, 2, -86, 1, 33, 3, 16, 0, 125, 2, -86, 0, -116, 2, 51, 0, -46, 2, -86, 3, 11, 2, -86, -1,
-<a name="l00132"></a>00132 4, 2, 57, 0, -71, 4, -127, 0, 105, 4, 86, 0, 50, 3, 49, 0, 25, 4, 17, 0, 45, 4, -47, 0, -106,
-<a name="l00133"></a>00133 1, -7, 0, -101, 3, 15, 0, 95, 4, -54, 0, -101, 4, -72, 0, -116, 1, -7, 0, -101, 4, 19, 0, 40, 3,
-<a name="l00134"></a>00134 -80, 0, 80, 3, -76, 0, 60, 4, -54, 0, -101, 4, -49, 0, 80, 1, -7, 0, -101, 2, -46, 0, 60, 4, -104,
-<a name="l00135"></a>00135 0, 90, 4, 60, 0, 25, 4, -120, 0, 110, 4, 95, 0, 115, 3, -79, 0, 25, 3, -44, 0, 10, 4, 102, 0,
-<a name="l00136"></a>00136 -106, 4, 19, 0, 40, 5, -114, 0, 100, 5, 36, 0, 40, 3, -14, 0, -101, 3, -14, 0, -101, 3, -14, 0, -101,
-<a name="l00137"></a>00137 1, -29, 0, 90, 3, 86, 0, 90, 6, -122, 0, -101, 1, -7, -1, -84, 4, 19, 0, 40, 4, 19, 0, 40, 3,
-<a name="l00138"></a>00138 -76, -1, 87, 3, -76, -1, 87, 4, 72, 0, 45, 5, -114, 0, 100, 5, -114, 0, 100, 5, -114, 0, 100, 5, -114,
-<a name="l00139"></a>00139 0, 100, 4, -127, 0, 105, 4, -127, 0, 105, 4, -127, 0, 105, 4, 86, 0, 50, 3, 49, 0, 25, 4, 17, 0,
-<a name="l00140"></a>00140 45, 4, -47, 0, -106, 2, 75, 0, 0, 3, 74, 0, 0, 4, -72, 0, -116, 2, 75, 0, 0, 4, 19, 0, 40,
-<a name="l00141"></a>00141 3, -80, 0, 80, 3, -76, 0, 60, 4, -49, 0, 80, 2, -46, 0, 60, 4, -104, 0, 90, 4, -120, 0, 110, 4,
-<a name="l00142"></a>00142 95, 0, 115, 3, -44, 0, 10, 4, 102, 0, -106, 4, 19, 0, 40, 5, -114, 0, 100, 5, 36, 0, 40, 1, -7,
-<a name="l00143"></a>00143 0, -101, 4, 86, 0, 50, 3, -80, 0, 80, 4, 95, 0, 115, 4, -101, 0, 60, 0, 0, -1, -36, 0, 0, -1,
-<a name="l00144"></a>00144 37, 0, 0, -1, -36, 0, 0, -2, 81, 2, -115, 0, -85, 2, -115, 0, -96, 2, -38, 0, 67, 3, 77, 0, 121,
-<a name="l00145"></a>00145 1, -88, -1, -70, 1, -100, 0, 70, 1, -27, 0, 70, 1, -100, 0, 70, 1, -100, 0, 70, 1, -83, 0, 72, 1,
-<a name="l00146"></a>00146 -100, 0, 70, 1, -79, 0, 70, 1, 81, 0, 70, 4, 53, 1, 124, 4, 53, 1, 46, 4, 53, 0, -73, 4, 53,
-<a name="l00147"></a>00147 0, -127, 4, 53, 1, 44, 4, 53, 0, -66, 4, 53, 0, -81, 4, 53, 0, -127, 4, 53, 0, -102, 4, 53, 0,
-<a name="l00148"></a>00148 -37, 4, 53, 0, -123, 2, -115, 0, -63, 4, 53, 0, -77, 6, 0, 1, 0, 6, 0, 1, 0, 2, 66, 0, 54,
-<a name="l00149"></a>00149 6, 0, 1, 0, 4, 53, 0, -98, 4, 53, 0, -104, 4, 53, 0, -53, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00150"></a>00150 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 1, -79, 0, 70, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0,
-<a name="l00151"></a>00151 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 5, 27, -1,
-<a name="l00152"></a>00152 -70, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70,
-<a name="l00153"></a>00153 1, -12, -1, -70, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 4, -127, 0, 54, 4,
-<a name="l00154"></a>00154 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 3, -23, 0, 74, 3, -23, 0, 74, 6, 127, 0, 20, 7, 118,
-<a name="l00155"></a>00155 0, 20, 3, 39, -1, -70, 4, 30, -1, -70, 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1,
-<a name="l00156"></a>00156 -70, 5, 27, 0, 50, 4, -75, 0, 36, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00157"></a>00157 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00158"></a>00158 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 1, -49,
-<a name="l00159"></a>00159 0, 48, 1, -79, 0, 70, 1, -79, 0, 70, 1, -79, 0, 64, 1, -79, 0, 70, 6, 0, 1, 0, 6, 0, 1,
-<a name="l00160"></a>00160 0, 0, 0, -1, -36, 0, 0, -2, 81, 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, 22,
-<a name="l00161"></a>00161 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, 22, 0, 0, -1, -36, 0,
-<a name="l00162"></a>00162 0, -1, 22, 0, 0, -1, -36, 0, 0, -1, 32, 0, 0, -1, -36, 4, 115, 0, 74, 8, 0, 0, 0, 6, 0,
-<a name="l00163"></a>00163 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1,
-<a name="l00164"></a>00164 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00165"></a>00165 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00166"></a>00166 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0,
-<a name="l00167"></a>00167 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 2, -115, 0, 127, 2, -115, 0, 93, 6, 0, 1, 0, 4, -18, 0,
-<a name="l00168"></a>00168 21, 3, 77, 0, 121, 1, -88, 0, 14, 1, -42, -1, -36, 1, -88, 0, 86, 1, -42, 0, 16, 3, 117, 0, 50,
-<a name="l00169"></a>00169 3, 117, 0, 50, 1, -88, 0, 45, 1, -42, 0, 19, 5, 27, 0, 50, 4, -75, 0, 36, 1, -12, -1, -70, 1,
-<a name="l00170"></a>00170 -12, -1, -70, 1, -88, 0, -109, 1, -42, 0, 19, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12,
-<a name="l00171"></a>00171 -1, -70, 2, 66, 0, 0, 3, 0, -1, -9, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1,
-<a name="l00172"></a>00172 -70, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 4, -127, 0, 54, 4, 53, 0, 54,
-<a name="l00173"></a>00173 4, 61, -1, -70, 4, 61, -1, -70, 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 4,
-<a name="l00174"></a>00174 -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77,
-<a name="l00175"></a>00175 0, 95, 2, -77, 0, 95, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 6, -110, 0,
-<a name="l00176"></a>00176 62, 6, -110, 0, 62, 4, 63, -1, -70, 4, 63, -1, -70, 6, -110, 0, 62, 6, -110, 0, 62, 4, 63, -1, -70,
-<a name="l00177"></a>00177 4, 63, -1, -70, 8, -55, 0, 62, 8, -55, 0, 62, 6, -59, -1, -70, 6, -59, -1, -70, 8, -55, 0, 62, 8,
-<a name="l00178"></a>00178 -55, 0, 62, 6, -59, -1, -70, 6, -59, -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, -89,
-<a name="l00179"></a>00179 -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, 90, 0, 42, 3, -102, 0,
-<a name="l00180"></a>00180 54, 4, 53, -1, -70, 3, 39, -1, -70, 4, 90, 0, 42, 3, -102, 0, 54, 4, 53, -1, -70, 3, 39, -1, -70,
-<a name="l00181"></a>00181 6, 79, 0, 39, 6, 79, 0, 39, 2, 36, -1, -70, 2, 26, -1, -70, 4, -89, 0, 70, 4, -89, 0, 70, 2,
-<a name="l00182"></a>00182 36, -1, -70, 2, 26, -1, -70, 4, -49, 0, 45, 4, -49, 0, 45, 3, 39, -1, -70, 3, 39, -1, -70, 4, 13,
-<a name="l00183"></a>00183 0, 71, 4, 13, 0, 71, 1, -88, -1, -70, 1, -88, -1, -70, 2, -76, 0, 35, 2, -76, 0, 35, 3, 39, -1,
-<a name="l00184"></a>00184 -70, 3, 39, -1, -70, 4, 53, 0, 69, 4, 53, 0, 69, 1, -12, -1, -70, 1, -12, -1, -70, 2, 66, 0, 54,
-<a name="l00185"></a>00185 3, 0, -1, -9, 3, -102, -1, -70, 3, 39, -1, -70, 3, 117, 0, 50, 3, 117, 0, 50, 5, 27, 0, 50, 4,
-<a name="l00186"></a>00186 -75, 0, 36, 5, 27, 0, 50, 4, -75, 0, 36, 1, -12, -1, -70, 1, -12, -1, -70, 4, 90, 0, 64, 4, -50,
-<a name="l00187"></a>00187 0, 73, 4, 90, 0, 38, 4, -50, 0, 57, 4, 90, 0, 83, 4, -50, 0, 74, 4, 90, 0, 83, 4, -50, 0,
-<a name="l00188"></a>00188 74, 6, 0, 1, 0, 6, 0, 1, 0, 1, -100, 0, 70, 1, -100, 0, 70, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00189"></a>00189 6, 0, 1, 0, 1, 81, 0, 70, 1, -79, 0, 70, 6, 0, 1, 0, 6, 0, 1, 0, 1, -83, 0, 72, 1,
-<a name="l00190"></a>00190 -27, 0, 70, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 1, -79, 0, 70, 1, -79, 0, 70, 1, -79,
-<a name="l00191"></a>00191 0, 70, 1, -79, 0, 70, 1, -79, 0, 64, 1, -49, 0, 48, 6, 0, 1, 0, 1, -100, 0, 70, 1, -100, 0,
-<a name="l00192"></a>00192 70, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00193"></a>00193 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00194"></a>00194 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0,
-<a name="l00195"></a>00195 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1,
-<a name="l00196"></a>00196 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00197"></a>00197 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00198"></a>00198 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0,
-<a name="l00199"></a>00199 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1,
-<a name="l00200"></a>00200 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 2, -115, 0, -54, 2, -115, 0, -57,
-<a name="l00201"></a>00201 2, -115, 0, -58, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6,
-<a name="l00202"></a>00202 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0,
-<a name="l00203"></a>00203 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1,
-<a name="l00204"></a>00204 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0, 6, 0, 1, 0,
-<a name="l00205"></a>00205 1, 0, -1, -70, 8, 0, -1, -70, 16, 0, -1, -70, 6, -36, 0, 99, 5, 63, 0, 68, 6, -43, 0, -95, 5,
-<a name="l00206"></a>00206 91, 0, -125, 0, 0, -3, -36, 0, 0, -4, 47, 0, 0, -4, -90, 0, 0, -2, 84, 0, 0, -4, -41, 0, 0,
-<a name="l00207"></a>00207 -3, 115, 0, 0, -2, 41, 0, 0, -2, 13, 0, 0, -3, 17, 0, 0, -4, 103, 0, 0, -3, -99, 0, 0, -5,
-<a name="l00208"></a>00208 -11, 0, 0, -4, 114, 0, 0, -2, -43, 0, 0, -2, -43, 0, 0, -1, 2, 4, 27, 0, -96, 6, -84, 0, 107,
-<a name="l00209"></a>00209 6, -84, 0, 25, 0, 0, -2, -74, 0, 0, -3, 115, 0, 0, -2, 8, 0, 0, -4, -90, 0, 0, -2, 83, 0,
-<a name="l00210"></a>00210 0, -3, 17, 0, 0, -5, -56, 0, 0, -6, -12, 0, 0, -6, -81, 0, 0, -4, 114, 0, 0, -5, -86, 0, 0,
-<a name="l00211"></a>00211 -5, 106, 0, 0, -4, -15, 0, 0, -4, 125, 0, 0, -5, -35, 0, 0, -4, -63, 0, 0, -5, -104, 0, 0, -3,
-<a name="l00212"></a>00212 -22, 0, 0, -2, -124, 0, 0, -3, -62, 0, 0, -4, -15, 0, 0, -3, 95, 0, 0, -2, 118, 0, 0, -2, -68,
-<a name="l00213"></a>00213 0, 0, -4, -21, 0, 0, -3, 108, 0, 0, -3, 88, 0, 0, -4, -112, 0, 0, -3, 21, 0, 0, -4, 44, 0,
-<a name="l00214"></a>00214 0, -4, 19, 0, 0, -4, 18, 0, 0, -5, -106, 0, 0, -5, -106, 1, -57, 0, -120, 5, 86, -1, -3, 4, 115,
-<a name="l00215"></a>00215 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0,
-<a name="l00216"></a>00216 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74,
-<a name="l00217"></a>00217 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5,
-<a name="l00218"></a>00218 86, -1, -3, 4, 115, 0, 74, 5, 86, -1, -3, 4, 115, 0, 74, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86,
-<a name="l00219"></a>00219 0, -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86, 0,
-<a name="l00220"></a>00220 -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86, 0, -94, 4, 115, 0, 75, 5, 86, 0, -94,
-<a name="l00221"></a>00221 4, 115, 0, 75, 2, 57, 0, 99, 1, -57, 0, 31, 2, 57, 0, -70, 1, -57, 0, 124, 6, 57, 0, 99, 4,
-<a name="l00222"></a>00222 115, 0, 68, 6, 57, 0, 99, 4, 115, 0, 68, 6, 57, 0, 99, 4, 115, 0, 68, 6, 57, 0, 99, 4, 115,
-<a name="l00223"></a>00223 0, 68, 6, 57, 0, 99, 4, 115, 0, 68, 6, 57, 0, 99, 4, 115, 0, 68, 6, 57, 0, 99, 4, 115, 0,
-<a name="l00224"></a>00224 68, 6, -36, 0, 99, 5, 63, 0, 68, 6, -36, 0, 99, 5, 63, 0, 68, 6, -36, 0, 99, 5, 63, 0, 68,
-<a name="l00225"></a>00225 6, -36, 0, 99, 5, 63, 0, 68, 6, -36, 0, 99, 5, 63, 0, 68, 5, -57, 0, -95, 4, 115, 0, -125, 5,
-<a name="l00226"></a>00226 -57, 0, -95, 4, 115, 0, -125, 6, -43, 0, -95, 5, 91, 0, -125, 6, -43, 0, -95, 5, 91, 0, -125, 6, -43,
-<a name="l00227"></a>00227 0, -95, 5, 91, 0, -125, 6, -43, 0, -95, 5, 91, 0, -125, 6, -43, 0, -95, 5, 91, 0, -125, 5, 86, 0,
-<a name="l00228"></a>00228 6, 4, 0, 0, 33, 5, 86, 0, 6, 4, 0, 0, 33, 5, 86, 0, 6, 4, 0, 0, 33, 5, 86, -1, -3,
-<a name="l00229"></a>00229 4, 115, 0, 74, 2, 57, -1, -30, 1, -57, -1, -80, 6, 57, 0, 99, 4, 115, 0, 68, 5, -57, 0, -95, 4,
-<a name="l00230"></a>00230 115, 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 5, -57, 0, -95, 4, 115,
-<a name="l00231"></a>00231 0, -125, 5, -57, 0, -95, 4, 115, 0, -125, 0, 0, -2, -2, 0, 0, -2, -2, 0, 0, -2, -2, 0, 0, -2,
-<a name="l00232"></a>00232 -2, 4, 85, -1, -3, 2, -21, 0, 12, 7, 99, 0, 7, 5, 90, -1, -5, 4, -87, 0, -95, 3, -128, 0, -122,
-<a name="l00233"></a>00233 4, -87, 0, -95, 3, -128, 0, -122, 5, -57, 0, -92, 4, 107, 0, -120, 4, 115, -1, -3, 4, 0, 0, 20, 4,
-<a name="l00234"></a>00234 115, -1, -3, 4, 0, 0, 20, 5, 86, 0, 9, 4, 0, 0, 15, 5, 85, 0, 87, 4, 43, 0, 69, 5, 85,
-<a name="l00235"></a>00235 0, -95, 4, 115, 0, -121, 6, 5, 0, 99, 4, 115, 0, 85, 6, 57, 0, 96, 4, 115, 0, 68, 5, -75, 0,
-<a name="l00236"></a>00236 58, 1, -12, -1, -70, 2, 36, -1, -70, 2, 26, -1, -70, 4, -89, 0, 70, 1, -12, 0, -98, 1, -12, 0, 16,
-<a name="l00237"></a>00237 1, -12, 0, 27, 1, -12, 0, 16, 1, -12, 0, 107, 1, -12, -1, -7, 2, 39, -1, -50, 1, -88, 0, 15, 1,
-<a name="l00238"></a>00238 -88, -1, -11, 2, -86, 0, -92, 2, -86, 0, -92, 1, -88, 0, 14, 1, -88, 0, 86, 1, -88, 0, 86, 0, 0,
-<a name="l00239"></a>00239 -1, -49, 1, -88, 0, 15, 1, -42, -1, -65, 1, -88, -1, -11, 1, -42, -1, -51, 1, -88, 0, 29, 1, -42, -1,
-<a name="l00240"></a>00240 -11, 1, -88, 0, -109, 1, -42, 0, 19, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50,
-<a name="l00241"></a>00241 5, 27, 0, 50, 4, -75, 0, 36, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 5,
-<a name="l00242"></a>00242 -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12,
-<a name="l00243"></a>00243 -1, -70, 1, -12, -1, -70, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 5, -75, 0,
-<a name="l00244"></a>00244 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70,
-<a name="l00245"></a>00245 1, -12, -1, -70, 5, -75, 0, 58, 5, -75, 0, 58, 1, -12, -1, -70, 1, -12, -1, -70, 4, -127, 0, 54, 4,
-<a name="l00246"></a>00246 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61,
-<a name="l00247"></a>00247 -1, -70, 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 4, -127, 0, 54, 4, 53, 0,
-<a name="l00248"></a>00248 54, 4, 61, -1, -70, 4, 61, -1, -70, 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70,
-<a name="l00249"></a>00249 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61, -1, -70, 2, -77, 0, 50, 2, -77, 0, 50, 2,
-<a name="l00250"></a>00250 -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 50, 2, -77, 0, 50, 2, -77,
-<a name="l00251"></a>00251 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0, 95, 2, -77, 0,
-<a name="l00252"></a>00252 56, 2, -77, 0, 56, 2, -77, 0, 73, 2, -77, 0, 73, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74,
-<a name="l00253"></a>00253 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3,
-<a name="l00254"></a>00254 -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23, 0, 74, 3, -23,
-<a name="l00255"></a>00255 0, 74, 6, -110, 0, 62, 6, -110, 0, 62, 4, 63, -1, -70, 4, 63, -1, -70, 6, -110, 0, 62, 6, -110, 0,
-<a name="l00256"></a>00256 62, 4, 63, -1, -70, 4, 63, -1, -70, 6, -110, 0, 62, 6, -110, 0, 62, 4, 63, -1, -70, 4, 63, -1, -70,
-<a name="l00257"></a>00257 8, -55, 0, 62, 8, -55, 0, 62, 6, -59, -1, -70, 6, -59, -1, -70, 8, -55, 0, 62, 8, -55, 0, 62, 6,
-<a name="l00258"></a>00258 -59, -1, -70, 6, -59, -1, -70, 4, -89, -1, -70, 4, -89, -1, -70, 4, 90, 0, 42, 3, -102, 0, 54, 4, 53,
-<a name="l00259"></a>00259 -1, -70, 3, 39, -1, -70, 6, 79, 0, 39, 6, 79, 0, 39, 6, 79, 0, 39, 2, 36, -1, -70, 2, 26, -1,
-<a name="l00260"></a>00260 -70, 6, 79, 0, 39, 6, 79, 0, 39, 2, 36, -1, -70, 2, 26, -1, -70, 6, 79, 0, 39, 6, 79, 0, 39,
-<a name="l00261"></a>00261 2, 36, -1, -70, 2, 26, -1, -70, 6, 79, 0, 39, 6, 79, 0, 39, 2, 36, -1, -70, 2, 26, -1, -70, 6,
-<a name="l00262"></a>00262 79, 0, 39, 6, 79, 0, 39, 2, 36, -1, -70, 2, 26, -1, -70, 4, -89, 0, 70, 4, -89, 0, 70, 4, -89,
-<a name="l00263"></a>00263 0, 70, 4, -89, 0, 70, 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1, -70, 6, 127, 0,
-<a name="l00264"></a>00264 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1, -70, 4, -49, 0, 45, 4, -49, 0, 45, 3, 39, -1, -70,
-<a name="l00265"></a>00265 3, 39, -1, -70, 4, -49, 0, 45, 4, -49, 0, 45, 3, 39, -1, -70, 3, 39, -1, -70, 4, -49, 0, 45, 4,
-<a name="l00266"></a>00266 -49, 0, 45, 3, 39, -1, -70, 3, 39, -1, -70, 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30,
-<a name="l00267"></a>00267 -1, -70, 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1, -70, 6, 127, 0, 20, 7, 118, 0,
-<a name="l00268"></a>00268 20, 3, 39, -1, -70, 4, 30, -1, -70, 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1, -70,
-<a name="l00269"></a>00269 6, 127, 0, 20, 7, 118, 0, 20, 3, 39, -1, -70, 4, 30, -1, -70, 4, 13, 0, 71, 4, 13, 0, 71, 1,
-<a name="l00270"></a>00270 -88, -1, -70, 1, -88, -1, -70, 4, 13, 0, 71, 4, 13, 0, 71, 1, -88, -1, -70, 1, -88, -1, -70, 4, 13,
-<a name="l00271"></a>00271 0, 71, 4, 13, 0, 71, 1, -88, -1, -70, 1, -88, -1, -70, 4, 13, 0, 71, 4, 13, 0, 71, 1, -88, -1,
-<a name="l00272"></a>00272 -70, 1, -88, -1, -70, 4, 53, 0, 69, 4, 53, 0, 69, 1, -12, -1, -70, 1, -12, -1, -70, 4, 53, 0, 69,
-<a name="l00273"></a>00273 4, 53, 0, 69, 4, 53, 0, 69, 4, 53, 0, 69, 4, 53, 0, 69, 4, 53, 0, 69, 1, -12, -1, -70, 1,
-<a name="l00274"></a>00274 -12, -1, -70, 4, 53, 0, 69, 4, 53, 0, 69, 4, -127, 0, 54, 4, 53, 0, 54, 4, 61, -1, -70, 4, 61,
-<a name="l00275"></a>00275 -1, -70, 2, 66, 0, 54, 3, 0, -1, -9, 3, 26, 0, 26, 3, 26, 0, 26, 3, 26, 0, 26, 3, 117, 0,
-<a name="l00276"></a>00276 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50,
-<a name="l00277"></a>00277 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 3,
-<a name="l00278"></a>00278 117, 0, 50, 3, 117, 0, 50, 3, 117, 0, 50, 5, 27, -1, -70, 4, -75, -1, -70, 5, 27, 0, 50, 4, -75,
-<a name="l00279"></a>00279 0, 36, 1, -12, -1, -70, 1, -12, -1, -70, 3, 117, 0, 50, 3, 117, 0, 50, 5, 27, 0, 50, 4, -75, 0,
-<a name="l00280"></a>00280 36, 1, -12, -1, -70, 1, -12, -1, -70, 5, 27, 0, 50, 4, -75, 0, 36, 6, 127, 0, 69, 6, 127, 0, 69,
-<a name="l00281"></a>00281 6, 127, 0, 69, 6, 127, 0, 69, 1, -88, 0, 40, 0, 0, -2, 41, 0, 0, -2, -94, 0, 0, -1, 48, 0,
-<a name="l00282"></a>00282 0, -1, 29, 0, 0, -1, 18, 0, 0, -1, -110, 0, 0, -2, 126, 8, -4, 0, 50, 8, -83, 0, 50, 0, 0,
-<a name="l00283"></a>00283 -1, -75, 0, 0, -1, -74, 0, 0, -2, -19, 0, 0, -1, 100, 0, 0, -2, 126, 0, 0, -1, -97, 1, -115, 0,
-<a name="l00284"></a>00284 0, 2, -10, -1, -3, 0, 0, -2, -126, 0, 0, -1, 16, 4, -51, 0, 50, 0, 0, -1, 88, 0, 0, -1, 88,
-<a name="l00285"></a>00285 0, 0, -1, 100, 6, -110, 0, 62, 6, -110, 0, 62, 4, 63, -1, -70, 4, 63, -1, -70, 8, -55, 0, 62, 8,
-<a name="l00286"></a>00286 -55, 0, 62, 6, -59, -1, -70, 6, -59, -1, -70, 4, 90, 0, 42, 3, -102, 0, 54, 4, 53, -1, -70, 3, 39,
-<a name="l00287"></a>00287 -1, -70, 3, 77, 0, 121, 2, -76, 0, 35, 2, 66, 0, 54, 1, -12, -1, -70, 2, -112, -1, -70, 1, -12, 0,
-<a name="l00288"></a>00288 47, 1, -12, 0, 59, 1, -12, 0, 18, 1, -12, 0, -79, 1, -12, 0, 109, 6, 127, 0, 20, 7, 118, 0, 20,
-<a name="l00289"></a>00289 1, -7, 0, -101, 0, 0, -2, -39, 2, -68, 0, 0, 3, -14, 0, -101, 4, 90, -1, -11, 4, -50, -1, -11, 4,
-<a name="l00290"></a>00290 90, 0, 83, 4, -50, 0, 74, 4, 90, 0, 83, 4, -50, 0, 74, 4, 90, 0, 83, 4, -50, 0, 74, 4, 90,
-<a name="l00291"></a>00291 0, 83, 4, -50, 0, 74, 4, 90, 0, 83, 4, -50, 0, 74, 4, 90, 0, 83, 4, -50, 0, 74, 4, 53, 0,
-<a name="l00292"></a>00292 113, 4, 53, 0, -83, 4, 90, 0, 15, 4, -50, 0, 15, 0, 0, 6, -118, 7, 1, 1, 1, -85, 6, 6, 6,
-<a name="l00293"></a>00293 5, 5, 6, 6, 6, 6, 7, 7, 6, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
-<a name="l00294"></a>00294 7, 6, 1, 37, 5, 12, 12, 12, 12, 18, 28, 62, 28, 5, 6, 117, 28, 18, 28, 18, 18, 5, -102, 28, 31,
-<a name="l00295"></a>00295 -123, -32, -106, 18, 7, 7, 7, -62, 6, 6, 38, 53, 6, 35, 39, 101, 83, 55, 57, -27, 93, 57, 113, 55, 36,
-<a name="l00296"></a>00296 53, 83, 6, 43, 18, 55, -58, -92, -43, -60, 99, 6, -2, 6, 7, 5, 5, 6, 5, 6, 7, 6, 6, 6, 6,
-<a name="l00297"></a>00297 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6,
-<a name="l00298"></a>00298 6, 6, 6, 6, 17, 6, 6, 1, 6, 6, 6, 1, 12, 6, 6, 6, 6, 6, 24, 12, 12, 1, 6, -1, 22,
-<a name="l00299"></a>00299 24, 1, 5, 41, 12, -31, 7, 82, 6, 12, 77, 6, 6, 1, 5, 5, 7, 17, 7, 6, 1, 20, 20, 5, 5,
-<a name="l00300"></a>00300 6, 2, 6, 5, 1, 6, 6, 7, 1, 1, 6, 7, 5, 20, 95, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7,
-<a name="l00301"></a>00301 7, 7, 6, 6, 6, -1, 6, -4, 1, 1, 1, 1, 6, 1, 1, 1, 1, 25, 5, 6, 28, 99, -2, 6, 6,
-<a name="l00302"></a>00302 5, 6, 5, 6, 1, 7, 6, 6, 6, 12, 4, 12, 1, 18, 83, 62, 1, 43, 46, 11, 46, 11, 45, 6, 6,
-<a name="l00303"></a>00303 37, 38, 37, 38, 46, 1, 46, 12, 39, 12, 39, 1, 57, 1, 37, 1, 1, 46, 55, 46, 55, 18, 36, 46, 1,
-<a name="l00304"></a>00304 46, 1, 1, 43, -102, -2, -102, 1, 46, 55, 46, 55, 28, 99, 28, 99, 1, 18, 48, 11, 45, 38, 18, 30, 30,
-<a name="l00305"></a>00305 20, 1, 38, 50, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 25, 1, 25, 25, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00306"></a>00306 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00307"></a>00307 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 25, 1, 50, 50, 50, 50, 25, 25, 25,
-<a name="l00308"></a>00308 1, 1, 43, 1, 1, 1, 1, 1, 49, 1, 1, 18, 1, 25, 1, 25, 49, 18, 25, 1, 1, 25, 1, 37, 38,
-<a name="l00309"></a>00309 46, 11, 46, 11, 12, 39, 12, 39, 12, 39, 18, 83, 18, 83, 18, 1, 46, 55, 46, 55, 62, -1, 62, -1, 62,
-<a name="l00310"></a>00310 -1, 62, 57, 28, -27, 1, 93, 24, 1, 57, 46, 55, 1, 1, 18, 36, 18, 36, 46, 1, 1, 43, 28, 18, 46,
-<a name="l00311"></a>00311 55, 46, 55, 46, 55, 46, 55, -123, -92, -107, -60, 57, 37, 38, 1, 1, 12, 41, -1, -123, -92, -123, -92, -123, -92,
-<a name="l00312"></a>00312 -107, -60, 1, 1, 1, 12, 12, 12, 12, 12, 1, 1, 1, 1, 37, 1, 22, 18, 1, -126, 20, -35, 37, 1, 13,
-<a name="l00313"></a>00313 12, 28, 46, 62, 1, 16, 117, 46, 31, 18, 46, 28, 1, -102, -107, 77, 39, 15, 62, -107, 11, 38, 41, -35, 41,
-<a name="l00314"></a>00314 1, 30, 18, 41, 36, -35, 24, 21, 24, -58, 49, 36, 36, 36, 41, 21, 40, 42, -35, 41, 36, 41, 42, 12, 1,
-<a name="l00315"></a>00315 37, 12, 1, 62, 62, 28, 1, 49, 55, 12, 49, 27, 37, 36, 1, 37, 12, 12, 24, 25, 12, 12, 12, 18, 117,
-<a name="l00316"></a>00316 46, 18, 28, 28, 46, -102, 49, 49, 77, 26, 28, 43, 20, 37, 49, 20, 1, 49, 46, 38, 49, 36, 38, 1, 39,
-<a name="l00317"></a>00317 40, 11, 55, 55, 13, 55, 22, 55, 36, 55, 53, 11, 20, -60, 49, -43, 49, 1, 44, 49, 36, 1, 42, 49, 1,
-<a name="l00318"></a>00318 37, 39, 55, 38, 49, 43, 57, -1, -33, 36, 36, 55, 13, -60, 55, 1, 1, 1, 49, 12, 1, 1, 1, 1, 1,
-<a name="l00319"></a>00319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -77, 1, 1, 1, 1, 1, 12, 1, 1, -9, 18, 1, 12, -9, 1,
-<a name="l00320"></a>00320 1, 28, 1, 1, -9, 12, 12, 1, 16, 44, 12, 12, 31, 1, 19, 22, -62, -62, -62, 1, 1, -54, -9, 1, 1,
-<a name="l00321"></a>00321 28, 28, 15, 19, 19, 19, 19, 1, 1, 1, 1, 12, 1, 1, 1, 11, 12, 1, 1, 1, 28, 1, 12, 12, 16,
-<a name="l00322"></a>00322 44, 12, 31, 1, 19, 22, -9, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 20, 1, 1, 32,
-<a name="l00323"></a>00323 1, 27, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00324"></a>00324 1, 1, 1, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 44, 1, 1, 1, 1, 1,
-<a name="l00325"></a>00325 1, 1, 1, 1, 1, 9, 1, 1, 35, 9, 1, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00326"></a>00326 1, 1, 1, 1, 1, 1, 43, 27, 27, 27, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00327"></a>00327 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00328"></a>00328 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44,
-<a name="l00329"></a>00329 44, 1, 1, 1, 1, 44, 44, 1, 1, 1, 1, 44, 44, 1, 1, 44, 44, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00330"></a>00330 1, 1, 1, 1, 41, 41, 41, 41, 1, 1, 1, 1, 43, 43, 17, 17, 43, 43, 17, 17, 1, 1, 1, 1, 1,
-<a name="l00331"></a>00331 1, 1, 1, 50, 50, 50, 50, 50, 50, 50, 50, 35, 1, 1, 1, 35, 1, 1, 1, 1, 1, 29, 1, 50, 50,
-<a name="l00332"></a>00332 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 44, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00333"></a>00333 1, 1, 1, 44, 44, 35, 1, 35, 1, 35, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 4, 27, 1, 1, 32,
-<a name="l00334"></a>00334 20, 1, 1, 1, 27, 27, 27, 27, 27, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00335"></a>00335 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00336"></a>00336 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00337"></a>00337 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 25,
-<a name="l00338"></a>00338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00339"></a>00339 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00340"></a>00340 1, 1, 1, 1, 57, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38, 37, 38,
-<a name="l00341"></a>00341 37, 38, 37, 38, 12, 39, 12, 39, 12, 39, 12, 39, 12, 39, 12, 39, 12, 39, 12, 39, 62, 7, 62, 57, 18,
-<a name="l00342"></a>00342 36, 18, 36, 18, 36, 18, 36, 18, 36, 18, 36, 18, 36, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 28, 55,
-<a name="l00343"></a>00343 28, 55, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, -106, -60, -106, -60, -106, -60, 37, 38, 62, 57, 18, 36, 28,
-<a name="l00344"></a>00344 55, 28, 55, 28, 55, 28, 55, 28, 55, 0, 0, 0, 0, 37, 38, 1, 1, 7, 1, 7, 1, 46, 20, 1, 1,
-<a name="l00345"></a>00345 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 44, 29, 1, 50, 44, 44, 44, 44, 44, 44, 40, 1,
-<a name="l00346"></a>00346 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 44,
-<a name="l00347"></a>00347 1, 1, 44, 44, 1, 1, 44, 44, 1, 1, 44, 44, 1, 1, 44, 44, 1, 1, 44, 44, 1, 1, 44, 44, 1,
-<a name="l00348"></a>00348 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, 41,
-<a name="l00349"></a>00349 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00350"></a>00350 1, 1, 1, 1, 1, 1, 1, 43, 43, 17, 17, 43, 43, 17, 17, 43, 43, 17, 17, 1, 1, 1, 1, 1, 1,
-<a name="l00351"></a>00351 1, 1, 50, 50, 35, 1, 1, 1, 1, 1, 1, 29, 1, 1, 1, 29, 1, 1, 1, 29, 1, 1, 1, 29, 1,
-<a name="l00352"></a>00352 1, 1, 29, 1, 50, 50, 50, 50, 9, 1, 1, 35, 9, 1, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00353"></a>00353 1, 1, 1, 9, 1, 1, 35, 9, 1, 1, 35, 9, 1, 1, 35, 9, 1, 1, 35, 9, 1, 1, 35, 1, 1,
-<a name="l00354"></a>00354 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 44, 1, 1, 1, 1, 1, 1, 44,
-<a name="l00355"></a>00355 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00356"></a>00356 1, 1, 1, 1, 1, 1, 1, 44, 44, 1, 1, 1, 1, 44, 44, 1, 1, 9, 9, 9, 9, 1, 1, 1, 1,
-<a name="l00357"></a>00357 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 43, 43, 17, 17, 1,
-<a name="l00358"></a>00358 1, 1, 1, 35, 1, 1, 1, 1, 1, 1, 44, 40, 44, 44, 44, 44, 44, 9, 1, -9, 1, 20, -62, 35, 1,
-<a name="l00359"></a>00359 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 1, 1, 35, 1, 0, 0, 0, 0, 0, 3, 0, 3, 1,
-<a name="l00360"></a>00360 1, 1, 1, 1, 5, 3, 3, 1, 2, 1, 1, 0, 24, 5, -20, 11, -64, 0, -8, 8, -1, 0, 8, 0, 8,
-<a name="l00361"></a>00361 -1, -2, 0, 9, 0, 9, -1, -3, 0, 10, 0, 10, -1, -3, 0, 11, 0, 11, -1, -3, 0, 12, 0, 12, -1,
-<a name="l00362"></a>00362 -3, 0, 13, 0, 13, -1, -3, 0, 14, 0, 13, -1, -3, 0, 15, 0, 14, -1, -3, 0, 16, 0, 15, -1, -3,
-<a name="l00363"></a>00363 0, 17, 0, 15, -1, -4, 0, 18, 0, 17, -1, -4, 0, 19, 0, 18, -1, -4, 0, 20, 0, 19, -1, -4, 0,
-<a name="l00364"></a>00364 21, 0, 19, -1, -5, 0, 22, 0, 20, -1, -5, 0, 23, 0, 21, -1, -5, 0, 24, 0, 21, -1, -6, 0, 25,
-<a name="l00365"></a>00365 0, 23, -1, -5, 0, 26, 0, 25, -1, -6, 0, 27, 0, 26, -1, -6, 0, 28, 0, 26, -1, -6, 0, 29, 0,
-<a name="l00366"></a>00366 27, -1, -6, 0, 30, 0, 28, -1, -7, 0, 31, 0, 28, -1, -7, 0, 32, 0, 29, -1, -7, 0, 33, 0, 31,
-<a name="l00367"></a>00367 -1, -7, 0, 34, 0, 32, -1, -7, 0, 35, 0, 32, -1, -8, 0, 36, 0, 33, -1, -8, 0, 37, 0, 34, -1,
-<a name="l00368"></a>00368 -8, 0, 38, 0, 34, -1, -9, 0, 39, 0, 35, -1, -9, 0, 40, 0, 36, -1, -9, 0, 41, 0, 38, -1, -9,
-<a name="l00369"></a>00369 0, 42, 0, 38, -1, -9, 0, 43, 0, 39, -1, -10, 0, 44, 0, 40, -1, -10, 0, 45, 0, 40, -1, -10, 0,
-<a name="l00370"></a>00370 46, 0, 42, -1, -10, 0, 47, 0, 43, -1, -10, 0, 48, 0, 45, -1, -10, 0, 49, 0, 45, -1, -11, 0, 50,
-<a name="l00371"></a>00371 0, 46, -1, -11, 0, 51, 0, 47, -1, -11, 0, 52, 0, 48, -1, -12, 0, 53, 0, 48, -1, -12, 0, 54, 0,
-<a name="l00372"></a>00372 49, -1, -12, 0, 55, 0, 51, -1, -12, 0, 56, 0, 52, -1, -13, 0, 57, 0, 52, -1, -13, 0, 58, 0, 53,
-<a name="l00373"></a>00373 -1, -13, 0, 59, 0, 53, -1, -13, 0, 60, 0, 54, -1, -13, 0, 61, 0, 55, -1, -13, 0, 62, 0, 56, -1,
-<a name="l00374"></a>00374 -13, 0, 63, 0, 57, -1, -14, 0, 64, 0, 58, -1, -14, 0, 65, 0, 59, -1, -14, 0, 66, 0, 60, -1, -14,
-<a name="l00375"></a>00375 0, 67, 0, 60, -1, -15, 0, 68, 0, 61, -1, -15, 0, 69, 0, 62, -1, -15, 0, 70, 0, 63, -1, -16, 0,
-<a name="l00376"></a>00376 71, 0, 64, -1, -16, 0, 72, 0, 65, -1, -16, 0, 73, 0, 66, -1, -16, 0, 74, 0, 66, -1, -16, 0, 75,
-<a name="l00377"></a>00377 0, 67, -1, -16, 0, 76, 0, 68, -1, -16, 0, 77, 0, 70, -1, -17, 0, 78, 0, 70, -1, -17, 0, 79, 0,
-<a name="l00378"></a>00378 71, -1, -17, 0, 80, 0, 72, -1, -17, 0, 81, 0, 73, -1, -18, 0, 82, 0, 73, -1, -18, 0, 83, 0, 74,
-<a name="l00379"></a>00379 -1, -18, 0, 84, 0, 75, -1, -19, 0, 85, 0, 77, -1, -19, 0, 86, 0, 77, -1, -19, 0, 87, 0, 78, -1,
-<a name="l00380"></a>00380 -19, 0, 88, 0, 79, -1, -20, 0, 89, 0, 80, -1, -20, 0, 90, 0, 80, -1, -19, 0, 91, 0, 81, -1, -20,
-<a name="l00381"></a>00381 0, 92, 0, 83, -1, -20, 0, 93, 0, 84, -1, -20, 0, 94, 0, 84, -1, -20, 0, 95, 0, 85, -1, -21, 0,
-<a name="l00382"></a>00382 96, 0, 86, -1, -21, 0, 97, 0, 87, -1, -21, 0, 98, 0, 87, -1, -22, 0, 99, 0, 89, -1, -22, 0, 100,
-<a name="l00383"></a>00383 0, 90, -1, -22, 0, 101, 0, 91, -1, -22, 0, 102, 0, 92, -1, -23, 0, 103, 0, 92, -1, -23, 0, 104, 0,
-<a name="l00384"></a>00384 93, -1, -23, 0, 105, 0, 94, -1, -24, 0, 106, 0, 96, -1, -23, 0, 107, 0, 96, -1, -23, 0, 108, 0, 97,
-<a name="l00385"></a>00385 -1, -23, 0, 109, 0, 98, -1, -24, 0, 110, 0, 99, -1, -24, 0, 111, 0, 99, -1, -24, 0, 112, 0, 100, -1,
-<a name="l00386"></a>00386 -25, 0, 113, 0, 101, -1, -25, 0, 114, 0, 103, -1, -25, 0, 115, 0, 103, -1, -25, 0, 116, 0, 104, -1, -26,
-<a name="l00387"></a>00387 0, 117, 0, 105, -1, -26, 0, 118, 0, 106, -1, -26, 0, 119, 0, 106, -1, -27, 0, 120, 0, 107, -1, -27, 0,
-<a name="l00388"></a>00388 121, 0, 109, -1, -27, 0, 122, 0, 110, -1, -27, 0, 123, 0, 110, -1, -27, 0, 124, 0, 111, -1, -27, 0, 125,
-<a name="l00389"></a>00389 0, 112, -1, -27, 0, 126, 0, 113, -1, -28, 0, 127, 0, 113, -1, -28, 0, -128, 0, 115, -1, -28, 0, -127, 0,
-<a name="l00390"></a>00390 116, -1, -28, 0, -126, 0, 117, -1, -29, 0, -125, 0, 118, -1, -29, 0, -124, 0, 118, -1, -29, 0, -123, 0, 119,
-<a name="l00391"></a>00391 -1, -30, 0, -122, 0, 120, -1, -30, 0, -121, 0, 121, -1, -30, 0, -120, 0, 122, -1, -30, 0, -119, 0, 123, -1,
-<a name="l00392"></a>00392 -31, 0, -118, 0, 124, -1, -31, 0, -117, 0, 125, -1, -30, 0, -116, 0, 125, -1, -31, 0, -115, 0, 126, -1, -31,
-<a name="l00393"></a>00393 0, -114, 0, 127, -1, -31, 0, -113, 0, -127, -1, -31, 0, -112, 0, -127, -1, -32, 0, -111, 0, -126, -1, -32, 0,
-<a name="l00394"></a>00394 -110, 0, -125, -1, -32, 0, -109, 0, -124, -1, -33, 0, -108, 0, -124, -1, -33, 0, -107, 0, -123, -1, -33, 0, -106,
-<a name="l00395"></a>00395 0, -121, -1, -33, 0, -105, 0, -120, -1, -32, 0, -104, 0, -120, -1, -33, 0, -103, 0, -119, -1, -33, 0, -102, 0,
-<a name="l00396"></a>00396 -118, -1, -34, 0, -101, 0, -117, -1, -34, 0, -100, 0, -116, -1, -34, 0, -99, 0, -116, -1, -34, 0, -98, 0, -114,
-<a name="l00397"></a>00397 -1, -34, 0, -97, 0, -113, -1, -34, 0, -96, 0, -112, -1, -34, 0, -95, 0, -112, -1, -35, 0, -94, 0, -111, -1,
-<a name="l00398"></a>00398 -35, 0, -93, 0, -110, -1, -35, 0, -92, 0, -109, -1, -35, 0, -91, 0, -108, -1, -36, 0, -90, 0, -107, -1, -37,
-<a name="l00399"></a>00399 0, -89, 0, -106, -1, -37, 0, -88, 0, -105, -1, -37, 0, -87, 0, -105, -1, -37, 0, -86, 0, -104, -1, -37, 0,
-<a name="l00400"></a>00400 -85, 0, -103, -1, -37, 0, -84, 0, -101, -1, -37, 0, -83, 0, -101, -1, -37, 0, -82, 0, -100, -1, -37, 0, -81,
-<a name="l00401"></a>00401 0, -99, -1, -37, 0, -80, 0, -98, -1, -37, 0, -79, 0, -98, -1, -38, 0, -78, 0, -97, -1, -38, 0, -77, 0,
-<a name="l00402"></a>00402 -96, -1, -38, 0, -76, 0, -94, -1, -39, 0, -75, 0, -93, -1, -40, 0, -74, 0, -93, -1, -40, 0, -73, 0, -92,
-<a name="l00403"></a>00403 -1, -40, 0, -72, 0, -91, -1, -40, 0, -71, 0, -90, -1, -40, 0, -70, 0, -90, -1, -40, 0, -69, 0, -88, -1,
-<a name="l00404"></a>00404 -40, 0, -68, 0, -87, -1, -41, 0, -67, 0, -86, -1, -41, 0, -66, 0, -86, -1, -41, 0, -65, 0, -85, -1, -41,
-<a name="l00405"></a>00405 0, -64, 0, -84, -1, -41, 0, -63, 0, -83, -1, -41, 0, -62, 0, -82, -1, -41, 0, -61, 0, -81, -1, -42, 0,
-<a name="l00406"></a>00406 -60, 0, -80, -1, -42, 0, -59, 0, -79, -1, -43, 0, -58, 0, -79, -1, -43, 0, -57, 0, -78, -1, -43, 0, -56,
-<a name="l00407"></a>00407 0, -77, -1, -44, 0, -55, 0, -76, -1, -44, 0, -54, 0, -75, -1, -44, 0, -53, 0, -74, -1, -44, 0, -52, 0,
-<a name="l00408"></a>00408 -73, -1, -44, 0, -51, 0, -72, -1, -44, 0, -50, 0, -71, -1, -44, 0, -49, 0, -71, -1, -44, 0, -48, 0, -70,
-<a name="l00409"></a>00409 -1, -44, 0, -47, 0, -68, -1, -44, 0, -46, 0, -67, -1, -45, 0, -45, 0, -67, -1, -46, 0, -44, 0, -66, -1,
-<a name="l00410"></a>00410 -46, 0, -43, 0, -65, -1, -46, 0, -42, 0, -64, -1, -47, 0, -41, 0, -64, -1, -47, 0, -40, 0, -62, -1, -47,
-<a name="l00411"></a>00411 0, -39, 0, -61, -1, -47, 0, -38, 0, -60, -1, -47, 0, -37, 0, -60, -1, -47, 0, -36, 0, -59, -1, -47, 0,
-<a name="l00412"></a>00412 -35, 0, -58, -1, -47, 0, -34, 0, -57, -1, -48, 0, -33, 0, -57, -1, -48, 0, -32, 0, -55, -1, -49, 0, -31,
-<a name="l00413"></a>00413 0, -54, -1, -49, 0, -30, 0, -53, -1, -49, 0, -29, 0, -53, -1, -49, 0, -28, 0, -52, -1, -49, 0, -27, 0,
-<a name="l00414"></a>00414 -51, -1, -49, 0, -26, 0, -50, -1, -49, 0, -25, 0, -48, -1, -50, 0, -24, 0, -48, -1, -50, 0, -23, 0, -47,
-<a name="l00415"></a>00415 -1, -50, 0, -22, 0, -46, -1, -51, 0, -21, 0, -45, -1, -51, 0, -20, 0, -45, -1, -51, 0, -19, 0, -44, -1,
-<a name="l00416"></a>00416 -51, 0, -18, 0, -42, -1, -52, 0, -17, 0, -41, -1, -52, 0, -16, 0, -41, -1, -52, 0, -15, 0, -40, -1, -52,
-<a name="l00417"></a>00417 0, -14, 0, -39, -1, -52, 0, -13, 0, -38, -1, -52, 0, -12, 0, -38, -1, -52, 0, -11, 0, -36, -1, -53, 0,
-<a name="l00418"></a>00418 -10, 0, -35, -1, -53, 0, -9, 0, -34, -1, -53, 0, -8, 0, -34, -1, -54, 0, -7, 0, -33, -1, -54, 0, -6,
-<a name="l00419"></a>00419 0, -32, -1, -54, 0, -5, 0, -31, -1, -54, 0, -4, 0, -31, -1, -54, 0, -3, 0, -29, -1, -55, 0, -2, 0,
-<a name="l00420"></a>00420 -28, -1, -55, 0, -1, 0, -27, -1, -55, 0, -8, 8, -1, 0, 8, 0, 8, -1, -2, 0, 9, 0, 9, -1, -3,
-<a name="l00421"></a>00421 0, 10, 0, 10, -1, -3, 0, 11, 0, 11, -1, -3, 0, 12, 0, 12, -1, -3, 0, 13, 0, 13, -1, -3, 0,
-<a name="l00422"></a>00422 14, 0, 13, -1, -3, 0, 15, 0, 14, -1, -3, 0, 16, 0, 15, -1, -3, 0, 17, 0, 15, -1, -4, 0, 18,
-<a name="l00423"></a>00423 0, 17, -1, -4, 0, 19, 0, 18, -1, -4, 0, 20, 0, 19, -1, -4, 0, 21, 0, 19, -1, -5, 0, 22, 0,
-<a name="l00424"></a>00424 20, -1, -5, 0, 23, 0, 21, -1, -5, 0, 24, 0, 21, -1, -6, 0, 25, 0, 23, -1, -5, 0, 26, 0, 25,
-<a name="l00425"></a>00425 -1, -6, 0, 27, 0, 26, -1, -6, 0, 28, 0, 26, -1, -6, 0, 29, 0, 27, -1, -6, 0, 30, 0, 28, -1,
-<a name="l00426"></a>00426 -7, 0, 31, 0, 28, -1, -7, 0, 32, 0, 29, -1, -7, 0, 33, 0, 31, -1, -7, 0, 34, 0, 32, -1, -7,
-<a name="l00427"></a>00427 0, 35, 0, 32, -1, -8, 0, 36, 0, 33, -1, -8, 0, 37, 0, 34, -1, -8, 0, 38, 0, 34, -1, -9, 0,
-<a name="l00428"></a>00428 39, 0, 35, -1, -9, 0, 40, 0, 36, -1, -9, 0, 41, 0, 38, -1, -9, 0, 42, 0, 38, -1, -9, 0, 43,
-<a name="l00429"></a>00429 0, 39, -1, -10, 0, 44, 0, 40, -1, -10, 0, 45, 0, 40, -1, -10, 0, 46, 0, 42, -1, -10, 0, 47, 0,
-<a name="l00430"></a>00430 43, -1, -10, 0, 48, 0, 45, -1, -10, 0, 49, 0, 45, -1, -11, 0, 50, 0, 46, -1, -11, 0, 51, 0, 47,
-<a name="l00431"></a>00431 -1, -11, 0, 52, 0, 48, -1, -12, 0, 53, 0, 48, -1, -12, 0, 54, 0, 49, -1, -12, 0, 55, 0, 51, -1,
-<a name="l00432"></a>00432 -12, 0, 56, 0, 52, -1, -13, 0, 57, 0, 52, -1, -13, 0, 58, 0, 53, -1, -13, 0, 59, 0, 53, -1, -13,
-<a name="l00433"></a>00433 0, 60, 0, 54, -1, -13, 0, 61, 0, 55, -1, -13, 0, 62, 0, 56, -1, -13, 0, 63, 0, 57, -1, -14, 0,
-<a name="l00434"></a>00434 64, 0, 58, -1, -14, 0, 65, 0, 59, -1, -14, 0, 66, 0, 60, -1, -15, 0, 67, 0, 60, -1, -15, 0, 68,
-<a name="l00435"></a>00435 0, 61, -1, -15, 0, 69, 0, 62, -1, -15, 0, 70, 0, 63, -1, -16, 0, 71, 0, 64, -1, -16, 0, 72, 0,
-<a name="l00436"></a>00436 65, -1, -16, 0, 73, 0, 66, -1, -16, 0, 74, 0, 66, -1, -16, 0, 75, 0, 67, -1, -16, 0, 76, 0, 68,
-<a name="l00437"></a>00437 -1, -16, 0, 77, 0, 70, -1, -17, 0, 78, 0, 70, -1, -17, 0, 79, 0, 71, -1, -17, 0, 80, 0, 72, -1,
-<a name="l00438"></a>00438 -17, 0, 81, 0, 73, -1, -18, 0, 82, 0, 73, -1, -18, 0, 83, 0, 74, -1, -18, 0, 84, 0, 75, -1, -19,
-<a name="l00439"></a>00439 0, 85, 0, 77, -1, -19, 0, 86, 0, 77, -1, -19, 0, 87, 0, 78, -1, -19, 0, 88, 0, 79, -1, -20, 0,
-<a name="l00440"></a>00440 89, 0, 80, -1, -20, 0, 90, 0, 80, -1, -19, 0, 91, 0, 81, -1, -20, 0, 92, 0, 83, -1, -20, 0, 93,
-<a name="l00441"></a>00441 0, 84, -1, -20, 0, 94, 0, 84, -1, -20, 0, 95, 0, 85, -1, -21, 0, 96, 0, 86, -1, -21, 0, 97, 0,
-<a name="l00442"></a>00442 87, -1, -21, 0, 98, 0, 87, -1, -21, 0, 99, 0, 89, -1, -22, 0, 100, 0, 90, -1, -22, 0, 101, 0, 91,
-<a name="l00443"></a>00443 -1, -22, 0, 102, 0, 92, -1, -23, 0, 103, 0, 92, -1, -23, 0, 104, 0, 93, -1, -23, 0, 105, 0, 94, -1,
-<a name="l00444"></a>00444 -23, 0, 106, 0, 96, -1, -23, 0, 107, 0, 96, -1, -23, 0, 108, 0, 97, -1, -23, 0, 109, 0, 98, -1, -23,
-<a name="l00445"></a>00445 0, 110, 0, 99, -1, -24, 0, 111, 0, 99, -1, -24, 0, 112, 0, 100, -1, -24, 0, 113, 0, 101, -1, -25, 0,
-<a name="l00446"></a>00446 114, 0, 103, -1, -25, 0, 115, 0, 103, -1, -25, 0, 116, 0, 104, -1, -25, 0, 117, 0, 105, -1, -26, 0, 118,
-<a name="l00447"></a>00447 0, 106, -1, -26, 0, 119, 0, 106, -1, -26, 0, 120, 0, 107, -1, -27, 0, 121, 0, 109, -1, -27, 0, 122, 0,
-<a name="l00448"></a>00448 110, -1, -27, 0, 123, 0, 110, -1, -27, 0, 124, 0, 111, -1, -27, 0, 125, 0, 112, -1, -28, 0, 126, 0, 113,
-<a name="l00449"></a>00449 -1, -28, 0, 127, 0, 114, -1, -28, 0, -128, 0, 115, -1, -28, 0, -127, 0, 116, -1, -29, 0, -126, 0, 117, -1,
-<a name="l00450"></a>00450 -29, 0, -125, 0, 118, -1, -29, 0, -124, 0, 118, -1, -29, 0, -123, 0, 119, -1, -29, 0, -122, 0, 120, -1, -29,
-<a name="l00451"></a>00451 0, -121, 0, 121, -1, -30, 0, -120, 0, 122, -1, -30, 0, -119, 0, 123, -1, -30, 0, -118, 0, 124, -1, -30, 0,
-<a name="l00452"></a>00452 -117, 0, 125, -1, -30, 0, -116, 0, 125, -1, -30, 0, -115, 0, 126, -1, -30, 0, -114, 0, 127, -1, -30, 0, -113,
-<a name="l00453"></a>00453 0, -127, -1, -31, 0, -112, 0, -127, -1, -31, 0, -111, 0, -126, -1, -32, 0, -110, 0, -125, -1, -32, 0, -109, 0,
-<a name="l00454"></a>00454 -124, -1, -32, 0, -108, 0, -124, -1, -32, 0, -107, 0, -123, -1, -32, 0, -106, 0, -121, -1, -33, 0, -105, 0, -120,
-<a name="l00455"></a>00455 -1, -32, 0, -104, 0, -120, -1, -33, 0, -103, 0, -119, -1, -33, 0, -102, 0, -118, -1, -34, 0, -101, 0, -117, -1,
-<a name="l00456"></a>00456 -34, 0, -100, 0, -116, -1, -34, 0, -99, 0, -116, -1, -34, 0, -98, 0, -114, -1, -34, 0, -97, 0, -113, -1, -34,
-<a name="l00457"></a>00457 0, -96, 0, -112, -1, -34, 0, -95, 0, -112, -1, -35, 0, -94, 0, -111, -1, -35, 0, -93, 0, -110, -1, -35, 0,
-<a name="l00458"></a>00458 -92, 0, -109, -1, -35, 0, -91, 0, -108, -1, -36, 0, -90, 0, -107, -1, -37, 0, -89, 0, -106, -1, -37, 0, -88,
-<a name="l00459"></a>00459 0, -105, -1, -37, 0, -87, 0, -105, -1, -37, 0, -86, 0, -104, -1, -37, 0, -85, 0, -103, -1, -37, 0, -84, 0,
-<a name="l00460"></a>00460 -101, -1, -37, 0, -83, 0, -101, -1, -37, 0, -82, 0, -100, -1, -37, 0, -81, 0, -99, -1, -37, 0, -80, 0, -98,
-<a name="l00461"></a>00461 -1, -37, 0, -79, 0, -98, -1, -38, 0, -78, 0, -97, -1, -38, 0, -77, 0, -96, -1, -39, 0, -76, 0, -94, -1,
-<a name="l00462"></a>00462 -39, 0, -75, 0, -93, -1, -40, 0, -74, 0, -93, -1, -40, 0, -73, 0, -92, -1, -40, 0, -72, 0, -91, -1, -40,
-<a name="l00463"></a>00463 0, -71, 0, -90, -1, -40, 0, -70, 0, -90, -1, -40, 0, -69, 0, -88, -1, -40, 0, -68, 0, -87, -1, -41, 0,
-<a name="l00464"></a>00464 -67, 0, -86, -1, -41, 0, -66, 0, -86, -1, -41, 0, -65, 0, -85, -1, -41, 0, -64, 0, -84, -1, -41, 0, -63,
-<a name="l00465"></a>00465 0, -83, -1, -41, 0, -62, 0, -82, -1, -41, 0, -61, 0, -81, -1, -42, 0, -60, 0, -80, -1, -42, 0, -59, 0,
-<a name="l00466"></a>00466 -79, -1, -43, 0, -58, 0, -79, -1, -43, 0, -57, 0, -78, -1, -44, 0, -56, 0, -77, -1, -44, 0, -55, 0, -76,
-<a name="l00467"></a>00467 -1, -44, 0, -54, 0, -75, -1, -44, 0, -53, 0, -74, -1, -44, 0, -52, 0, -73, -1, -44, 0, -51, 0, -72, -1,
-<a name="l00468"></a>00468 -44, 0, -50, 0, -71, -1, -44, 0, -49, 0, -71, -1, -44, 0, -48, 0, -70, -1, -44, 0, -47, 0, -68, -1, -44,
-<a name="l00469"></a>00469 0, -46, 0, -67, -1, -45, 0, -45, 0, -67, -1, -46, 0, -44, 0, -66, -1, -46, 0, -43, 0, -65, -1, -46, 0,
-<a name="l00470"></a>00470 -42, 0, -64, -1, -47, 0, -41, 0, -64, -1, -47, 0, -40, 0, -62, -1, -47, 0, -39, 0, -61, -1, -47, 0, -38,
-<a name="l00471"></a>00471 0, -60, -1, -47, 0, -37, 0, -60, -1, -47, 0, -36, 0, -59, -1, -47, 0, -35, 0, -58, -1, -47, 0, -34, 0,
-<a name="l00472"></a>00472 -57, -1, -48, 0, -33, 0, -57, -1, -48, 0, -32, 0, -55, -1, -49, 0, -31, 0, -54, -1, -49, 0, -30, 0, -53,
-<a name="l00473"></a>00473 -1, -49, 0, -29, 0, -53, -1, -49, 0, -28, 0, -52, -1, -49, 0, -27, 0, -51, -1, -49, 0, -26, 0, -50, -1,
-<a name="l00474"></a>00474 -49, 0, -25, 0, -48, -1, -50, 0, -24, 0, -48, -1, -50, 0, -23, 0, -47, -1, -50, 0, -22, 0, -46, -1, -51,
-<a name="l00475"></a>00475 0, -21, 0, -45, -1, -51, 0, -20, 0, -45, -1, -51, 0, -19, 0, -44, -1, -51, 0, -18, 0, -42, -1, -52, 0,
-<a name="l00476"></a>00476 -17, 0, -41, -1, -52, 0, -16, 0, -41, -1, -52, 0, -15, 0, -40, -1, -52, 0, -14, 0, -39, -1, -52, 0, -13,
-<a name="l00477"></a>00477 0, -38, -1, -52, 0, -12, 0, -38, -1, -52, 0, -11, 0, -36, -1, -53, 0, -10, 0, -35, -1, -53, 0, -9, 0,
-<a name="l00478"></a>00478 -34, -1, -53, 0, -8, 0, -34, -1, -54, 0, -7, 0, -33, -1, -54, 0, -6, 0, -32, -1, -54, 0, -5, 0, -31,
-<a name="l00479"></a>00479 -1, -54, 0, -4, 0, -31, -1, -54, 0, -3, 0, -29, -1, -55, 0, -2, 0, -28, -1, -55, 0, -1, 0, -27, -1,
-<a name="l00480"></a>00480 -55, 0, -8, 8, -1, 0, 8, 0, 8, -1, -2, 0, 9, 0, 9, -1, -3, 0, 10, 0, 10, -1, -3, 0, 11,
-<a name="l00481"></a>00481 0, 11, -1, -3, 0, 12, 0, 12, -1, -3, 0, 13, 0, 13, -1, -3, 0, 14, 0, 13, -1, -3, 0, 15, 0,
-<a name="l00482"></a>00482 14, -1, -3, 0, 16, 0, 15, -1, -3, 0, 17, 0, 15, -1, -4, 0, 18, 0, 17, -1, -4, 0, 19, 0, 18,
-<a name="l00483"></a>00483 -1, -4, 0, 20, 0, 19, -1, -4, 0, 21, 0, 19, -1, -5, 0, 22, 0, 20, -1, -5, 0, 23, 0, 21, -1,
-<a name="l00484"></a>00484 -5, 0, 24, 0, 21, -1, -6, 0, 25, 0, 23, -1, -5, 0, 26, 0, 25, -1, -6, 0, 27, 0, 26, -1, -6,
-<a name="l00485"></a>00485 0, 28, 0, 26, -1, -6, 0, 29, 0, 27, -1, -6, 0, 30, 0, 28, -1, -7, 0, 31, 0, 28, -1, -7, 0,
-<a name="l00486"></a>00486 32, 0, 29, -1, -7, 0, 33, 0, 31, -1, -7, 0, 34, 0, 32, -1, -7, 0, 35, 0, 32, -1, -8, 0, 36,
-<a name="l00487"></a>00487 0, 33, -1, -8, 0, 37, 0, 34, -1, -8, 0, 38, 0, 34, -1, -9, 0, 39, 0, 35, -1, -9, 0, 40, 0,
-<a name="l00488"></a>00488 36, -1, -9, 0, 41, 0, 38, -1, -9, 0, 42, 0, 38, -1, -9, 0, 43, 0, 39, -1, -10, 0, 44, 0, 40,
-<a name="l00489"></a>00489 -1, -10, 0, 45, 0, 40, -1, -10, 0, 46, 0, 42, -1, -10, 0, 47, 0, 43, -1, -10, 0, 48, 0, 45, -1,
-<a name="l00490"></a>00490 -10, 0, 49, 0, 45, -1, -11, 0, 50, 0, 46, -1, -11, 0, 51, 0, 47, -1, -11, 0, 52, 0, 48, -1, -12,
-<a name="l00491"></a>00491 0, 53, 0, 48, -1, -12, 0, 54, 0, 49, -1, -12, 0, 55, 0, 51, -1, -12, 0, 56, 0, 52, -1, -13, 0,
-<a name="l00492"></a>00492 57, 0, 52, -1, -13, 0, 58, 0, 53, -1, -13, 0, 59, 0, 53, -1, -13, 0, 60, 0, 54, -1, -13, 0, 61,
-<a name="l00493"></a>00493 0, 55, -1, -13, 0, 62, 0, 56, -1, -13, 0, 63, 0, 57, -1, -14, 0, 64, 0, 58, -1, -14, 0, 65, 0,
-<a name="l00494"></a>00494 59, -1, -14, 0, 66, 0, 60, -1, -14, 0, 67, 0, 60, -1, -15, 0, 68, 0, 61, -1, -15, 0, 69, 0, 62,
-<a name="l00495"></a>00495 -1, -15, 0, 70, 0, 63, -1, -16, 0, 71, 0, 64, -1, -16, 0, 72, 0, 65, -1, -16, 0, 73, 0, 66, -1,
-<a name="l00496"></a>00496 -16, 0, 74, 0, 66, -1, -16, 0, 75, 0, 67, -1, -16, 0, 76, 0, 68, -1, -16, 0, 77, 0, 70, -1, -17,
-<a name="l00497"></a>00497 0, 78, 0, 70, -1, -17, 0, 79, 0, 71, -1, -17, 0, 80, 0, 72, -1, -17, 0, 81, 0, 73, -1, -18, 0,
-<a name="l00498"></a>00498 82, 0, 73, -1, -18, 0, 83, 0, 74, -1, -18, 0, 84, 0, 75, -1, -19, 0, 85, 0, 77, -1, -19, 0, 86,
-<a name="l00499"></a>00499 0, 77, -1, -19, 0, 87, 0, 78, -1, -19, 0, 88, 0, 79, -1, -20, 0, 89, 0, 80, -1, -20, 0, 90, 0,
-<a name="l00500"></a>00500 80, -1, -19, 0, 91, 0, 81, -1, -20, 0, 92, 0, 83, -1, -20, 0, 93, 0, 84, -1, -20, 0, 94, 0, 84,
-<a name="l00501"></a>00501 -1, -20, 0, 95, 0, 85, -1, -21, 0, 96, 0, 86, -1, -21, 0, 97, 0, 87, -1, -21, 0, 98, 0, 87, -1,
-<a name="l00502"></a>00502 -21, 0, 99, 0, 89, -1, -22, 0, 100, 0, 90, -1, -22, 0, 101, 0, 91, -1, -22, 0, 102, 0, 92, -1, -23,
-<a name="l00503"></a>00503 0, 103, 0, 92, -1, -23, 0, 104, 0, 93, -1, -23, 0, 105, 0, 94, -1, -23, 0, 106, 0, 96, -1, -23, 0,
-<a name="l00504"></a>00504 107, 0, 96, -1, -23, 0, 108, 0, 97, -1, -23, 0, 109, 0, 98, -1, -23, 0, 110, 0, 99, -1, -24, 0, 111,
-<a name="l00505"></a>00505 0, 99, -1, -24, 0, 112, 0, 100, -1, -24, 0, 113, 0, 101, -1, -25, 0, 114, 0, 103, -1, -25, 0, 115, 0,
-<a name="l00506"></a>00506 103, -1, -25, 0, 116, 0, 104, -1, -25, 0, 117, 0, 105, -1, -26, 0, 118, 0, 106, -1, -26, 0, 119, 0, 106,
-<a name="l00507"></a>00507 -1, -26, 0, 120, 0, 107, -1, -27, 0, 121, 0, 109, -1, -27, 0, 122, 0, 110, -1, -27, 0, 123, 0, 110, -1,
-<a name="l00508"></a>00508 -27, 0, 124, 0, 111, -1, -27, 0, 125, 0, 112, -1, -28, 0, 126, 0, 113, -1, -28, 0, 127, 0, 114, -1, -28,
-<a name="l00509"></a>00509 0, -128, 0, 115, -1, -28, 0, -127, 0, 116, -1, -28, 0, -126, 0, 117, -1, -29, 0, -125, 0, 118, -1, -29, 0,
-<a name="l00510"></a>00510 -124, 0, 118, -1, -29, 0, -123, 0, 119, -1, -29, 0, -122, 0, 120, -1, -29, 0, -121, 0, 121, -1, -30, 0, -120,
-<a name="l00511"></a>00511 0, 122, -1, -30, 0, -119, 0, 123, -1, -30, 0, -118, 0, 124, -1, -30, 0, -117, 0, 125, -1, -30, 0, -116, 0,
-<a name="l00512"></a>00512 125, -1, -30, 0, -115, 0, 126, -1, -30, 0, -114, 0, 127, -1, -30, 0, -113, 0, -127, -1, -31, 0, -112, 0, -127,
-<a name="l00513"></a>00513 -1, -31, 0, -111, 0, -126, -1, -32, 0, -110, 0, -125, -1, -32, 0, -109, 0, -124, -1, -32, 0, -108, 0, -124, -1,
-<a name="l00514"></a>00514 -32, 0, -107, 0, -123, -1, -32, 0, -106, 0, -121, -1, -33, 0, -105, 0, -120, -1, -32, 0, -104, 0, -120, -1, -33,
-<a name="l00515"></a>00515 0, -103, 0, -119, -1, -33, 0, -102, 0, -118, -1, -34, 0, -101, 0, -117, -1, -34, 0, -100, 0, -116, -1, -34, 0,
-<a name="l00516"></a>00516 -99, 0, -116, -1, -34, 0, -98, 0, -114, -1, -34, 0, -97, 0, -113, -1, -34, 0, -96, 0, -112, -1, -34, 0, -95,
-<a name="l00517"></a>00517 0, -112, -1, -35, 0, -94, 0, -111, -1, -35, 0, -93, 0, -110, -1, -35, 0, -92, 0, -109, -1, -35, 0, -91, 0,
-<a name="l00518"></a>00518 -108, -1, -36, 0, -90, 0, -107, -1, -37, 0, -89, 0, -106, -1, -37, 0, -88, 0, -105, -1, -37, 0, -87, 0, -105,
-<a name="l00519"></a>00519 -1, -37, 0, -86, 0, -104, -1, -37, 0, -85, 0, -103, -1, -37, 0, -84, 0, -101, -1, -37, 0, -83, 0, -101, -1,
-<a name="l00520"></a>00520 -37, 0, -82, 0, -100, -1, -37, 0, -81, 0, -99, -1, -37, 0, -80, 0, -98, -1, -37, 0, -79, 0, -98, -1, -38,
-<a name="l00521"></a>00521 0, -78, 0, -97, -1, -38, 0, -77, 0, -96, -1, -39, 0, -76, 0, -94, -1, -39, 0, -75, 0, -93, -1, -40, 0,
-<a name="l00522"></a>00522 -74, 0, -93, -1, -40, 0, -73, 0, -92, -1, -40, 0, -72, 0, -91, -1, -40, 0, -71, 0, -90, -1, -40, 0, -70,
-<a name="l00523"></a>00523 0, -90, -1, -40, 0, -69, 0, -88, -1, -40, 0, -68, 0, -87, -1, -41, 0, -67, 0, -86, -1, -41, 0, -66, 0,
-<a name="l00524"></a>00524 -86, -1, -41, 0, -65, 0, -85, -1, -41, 0, -64, 0, -84, -1, -41, 0, -63, 0, -83, -1, -41, 0, -62, 0, -82,
-<a name="l00525"></a>00525 -1, -41, 0, -61, 0, -81, -1, -42, 0, -60, 0, -80, -1, -42, 0, -59, 0, -79, -1, -43, 0, -58, 0, -79, -1,
-<a name="l00526"></a>00526 -43, 0, -57, 0, -78, -1, -44, 0, -56, 0, -77, -1, -44, 0, -55, 0, -76, -1, -44, 0, -54, 0, -75, -1, -44,
-<a name="l00527"></a>00527 0, -53, 0, -74, -1, -44, 0, -52, 0, -73, -1, -44, 0, -51, 0, -72, -1, -44, 0, -50, 0, -71, -1, -44, 0,
-<a name="l00528"></a>00528 -49, 0, -71, -1, -44, 0, -48, 0, -70, -1, -44, 0, -47, 0, -68, -1, -44, 0, -46, 0, -67, -1, -45, 0, -45,
-<a name="l00529"></a>00529 0, -67, -1, -46, 0, -44, 0, -66, -1, -46, 0, -43, 0, -65, -1, -46, 0, -42, 0, -64, -1, -47, 0, -41, 0,
-<a name="l00530"></a>00530 -64, -1, -47, 0, -40, 0, -62, -1, -47, 0, -39, 0, -61, -1, -47, 0, -38, 0, -60, -1, -47, 0, -37, 0, -60,
-<a name="l00531"></a>00531 -1, -47, 0, -36, 0, -59, -1, -47, 0, -35, 0, -58, -1, -47, 0, -34, 0, -57, -1, -48, 0, -33, 0, -56, -1,
-<a name="l00532"></a>00532 -48, 0, -32, 0, -55, -1, -49, 0, -31, 0, -54, -1, -49, 0, -30, 0, -53, -1, -49, 0, -29, 0, -53, -1, -49,
-<a name="l00533"></a>00533 0, -28, 0, -52, -1, -49, 0, -27, 0, -51, -1, -49, 0, -26, 0, -50, -1, -49, 0, -25, 0, -48, -1, -50, 0,
-<a name="l00534"></a>00534 -24, 0, -48, -1, -50, 0, -23, 0, -47, -1, -50, 0, -22, 0, -46, -1, -51, 0, -21, 0, -45, -1, -51, 0, -20,
-<a name="l00535"></a>00535 0, -45, -1, -51, 0, -19, 0, -44, -1, -51, 0, -18, 0, -42, -1, -52, 0, -17, 0, -41, -1, -52, 0, -16, 0,
-<a name="l00536"></a>00536 -41, -1, -52, 0, -15, 0, -40, -1, -52, 0, -14, 0, -39, -1, -52, 0, -13, 0, -38, -1, -52, 0, -12, 0, -38,
-<a name="l00537"></a>00537 -1, -52, 0, -11, 0, -36, -1, -53, 0, -10, 0, -35, -1, -53, 0, -9, 0, -34, -1, -53, 0, -8, 0, -34, -1,
-<a name="l00538"></a>00538 -54, 0, -7, 0, -33, -1, -54, 0, -6, 0, -32, -1, -54, 0, -5, 0, -31, -1, -54, 0, -4, 0, -31, -1, -54,
-<a name="l00539"></a>00539 0, -3, 0, -29, -1, -55, 0, -2, 0, -28, -1, -55, 0, -1, 0, -27, -1, -55, 0, 0, 0, 24, 0, 0, 6,
-<a name="l00540"></a>00540 -116, 11, 22, 8, 0, 3, 3, 2, 4, 6, 6, 10, 7, 2, 4, 4, 4, 6, 3, 4, 3, 3, 6, 6, 6,
-<a name="l00541"></a>00541 6, 6, 6, 6, 6, 6, 6, 3, 3, 6, 6, 6, 6, 11, 8, 7, 7, 7, 6, 6, 8, 7, 2, 5, 7,
-<a name="l00542"></a>00542 6, 8, 7, 8, 6, 8, 7, 7, 6, 7, 8, 10, 7, 8, 7, 3, 3, 3, 5, 6, 4, 6, 6, 6, 6,
-<a name="l00543"></a>00543 6, 4, 6, 6, 2, 2, 5, 2, 8, 6, 6, 6, 6, 4, 6, 3, 6, 6, 10, 6, 6, 6, 4, 2, 4,
-<a name="l00544"></a>00544 6, 8, 8, 7, 6, 7, 8, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 6, 6,
-<a name="l00545"></a>00545 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 6, 6, 4, 6, 7, 8, 8, 11, 4, 4, 6, 11, 8, 8,
-<a name="l00546"></a>00546 6, 6, 6, 6, 6, 6, 7, 9, 6, 3, 4, 5, 8, 10, 6, 6, 2, 6, 7, 6, 7, 6, 6, 6, 11,
-<a name="l00547"></a>00547 8, 8, 8, 11, 10, 6, 11, 4, 4, 2, 2, 6, 5, 6, 8, 2, 6, 4, 4, 6, 6, 6, 3, 2, 4,
-<a name="l00548"></a>00548 11, 8, 6, 8, 6, 6, 2, 2, 2, 2, 8, 8, 8, 7, 7, 7, 2, 4, 4, 4, 4, 4, 4, 4, 4,
-<a name="l00549"></a>00549 4, 4, 6, 2, 7, 6, 7, 6, 2, 8, 6, 8, 6, 7, 6, 6, 6, 4, 4, 4, 10, 9, 10, 6, 8,
-<a name="l00550"></a>00550 6, 2, 7, 6, 7, 6, 7, 6, 6, 6, 4, 8, 6, 8, 6, 7, 7, 8, 6, 6, 6, 6, 6, 2, 6,
-<a name="l00551"></a>00551 4, 6, 4, 7, 6, 7, 6, 8, 6, 7, 4, 7, 4, 7, 6, 6, 3, 6, 4, 7, 6, 7, 6, 7, 6,
-<a name="l00552"></a>00552 7, 6, 6, 8, 8, 6, 6, 5, 7, 4, 7, 6, 6, 4, 12, 11, 6, 11, 6, 11, 6, 6, 11, 8, 6,
-<a name="l00553"></a>00553 7, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00554"></a>00554 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00555"></a>00555 8, 8, 7, 11, 11, 11, 11, 11, 7, 7, 7, 11, 12, 10, 8, 8, 6, 7, 7, 6, 6, 8, 8, 5, 7,
-<a name="l00556"></a>00556 2, 4, 10, 4, 7, 4, 4, 7, 4, 8, 6, 7, 6, 7, 6, 6, 6, 6, 6, 6, 6, 8, 6, 8, 6,
-<a name="l00557"></a>00557 8, 6, 7, 6, 9, 6, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 7, 5, 6, 6, 2, 7, 6, 8, 6,
-<a name="l00558"></a>00558 8, 6, 8, 6, 7, 4, 7, 6, 6, 4, 7, 6, 7, 6, 7, 6, 8, 6, 10, 10, 8, 6, 2, 8, 6,
-<a name="l00559"></a>00559 11, 10, 8, 6, 3, 10, 10, 10, 10, 10, 10, 8, 6, 2, 4, 6, 6, 10, 10, 10, 10, 4, 4, 4, 4,
-<a name="l00560"></a>00560 8, 9, 9, 5, 9, 10, 8, 2, 8, 7, 8, 6, 7, 7, 2, 7, 8, 8, 7, 7, 8, 7, 6, 7, 6,
-<a name="l00561"></a>00561 8, 7, 8, 8, 2, 8, 6, 5, 6, 2, 6, 6, 6, 5, 6, 6, 2, 6, 6, 6, 6, 5, 6, 6, 5,
-<a name="l00562"></a>00562 6, 5, 8, 8, 2, 6, 6, 6, 8, 6, 10, 6, 7, 7, 2, 2, 5, 12, 11, 9, 7, 7, 7, 8, 7,
-<a name="l00563"></a>00563 7, 6, 8, 6, 12, 7, 9, 9, 7, 7, 8, 7, 8, 7, 6, 7, 6, 7, 8, 7, 7, 6, 10, 10, 8,
-<a name="l00564"></a>00564 9, 7, 8, 11, 8, 6, 6, 7, 4, 6, 6, 8, 5, 6, 6, 5, 6, 8, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00565"></a>00565 8, 6, 6, 6, 8, 8, 7, 8, 6, 6, 8, 6, 6, 6, 4, 6, 6, 2, 2, 2, 10, 9, 6, 5, 6,
-<a name="l00566"></a>00566 6, 5, 5, 11, 13, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 3,
-<a name="l00567"></a>00567 6, 6, 5, 6, 7, 3, 3, 7, 7, 3, 6, 5, 5, 7, 7, 3, 5, 7, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00568"></a>00568 9, 7, 6, 6, 6, 3, 5, 9, 3, 6, 6, 5, 5, 7, 9, 9, 9, 9, 6, 6, 6, 6, 5, 6, 7,
-<a name="l00569"></a>00569 3, 5, 7, 3, 6, 5, 5, 7, 5, 7, 6, 6, 6, 6, 6, 9, 7, 3, 6, 5, 6, 6, 0, 0, 0,
-<a name="l00570"></a>00570 0, 4, 4, 4, 5, 2, 2, 3, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00571"></a>00571 4, 6, 8, 8, 3, 8, 6, 6, 6, 8, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
-<a name="l00572"></a>00572 8, 8, 8, 8, 3, 3, 8, 8, 8, 8, 6, 6, 6, 6, 5, 5, 9, 10, 4, 6, 9, 10, 4, 6, 7,
-<a name="l00573"></a>00573 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 2, 2, 2, 8, 8, 0,
-<a name="l00574"></a>00574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 11, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00575"></a>00575 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 7, 5,
-<a name="l00576"></a>00576 2, 3, 2, 3, 5, 5, 2, 3, 7, 6, 3, 3, 2, 3, 8, 8, 3, 3, 3, 4, 8, 8, 3, 3, 8,
-<a name="l00577"></a>00577 8, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 5, 5, 5, 5, 9, 9,
-<a name="l00578"></a>00578 6, 6, 9, 9, 6, 6, 12, 12, 9, 9, 12, 12, 9, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6,
-<a name="l00579"></a>00579 4, 6, 5, 6, 4, 9, 9, 3, 3, 6, 6, 3, 3, 7, 7, 4, 4, 6, 6, 2, 2, 4, 4, 4, 4,
-<a name="l00580"></a>00580 6, 6, 3, 3, 3, 4, 5, 4, 5, 5, 7, 6, 7, 6, 3, 3, 6, 7, 6, 7, 6, 7, 6, 7, 8,
-<a name="l00581"></a>00581 8, 2, 2, 8, 8, 8, 2, 2, 8, 8, 2, 3, 8, 8, 8, 2, 2, 2, 2, 2, 2, 8, 2, 2, 8,
-<a name="l00582"></a>00582 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00583"></a>00583 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00584"></a>00584 8, 8, 8, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00585"></a>00585 8, 8, 8, 8, 8, 1, 11, 22, 9, 7, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00586"></a>00586 0, 0, 0, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00587"></a>00587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 6, 8, 6, 8, 6, 8, 6, 8,
-<a name="l00588"></a>00588 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00589"></a>00589 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 9,
-<a name="l00590"></a>00590 7, 9, 7, 9, 7, 9, 7, 9, 7, 7, 6, 7, 6, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 8, 6,
-<a name="l00591"></a>00591 8, 6, 8, 6, 8, 6, 2, 2, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 0, 0, 0, 0, 6,
-<a name="l00592"></a>00592 4, 10, 7, 6, 5, 6, 5, 8, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 8, 6, 9, 6, 8, 3,
-<a name="l00593"></a>00593 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 2, 0, 2, 3, 2, 3, 2, 3, 2,
-<a name="l00594"></a>00594 3, 5, 5, 5, 5, 7, 6, 8, 8, 3, 3, 8, 8, 3, 3, 8, 8, 3, 3, 8, 8, 3, 3, 8, 8,
-<a name="l00595"></a>00595 3, 3, 8, 8, 3, 3, 8, 8, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00596"></a>00596 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-<a name="l00597"></a>00597 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 6, 6, 9, 9, 6,
-<a name="l00598"></a>00598 6, 9, 9, 6, 6, 12, 12, 9, 9, 12, 12, 9, 9, 6, 6, 6, 5, 6, 4, 9, 9, 9, 3, 3, 9,
-<a name="l00599"></a>00599 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 6, 6, 6, 6, 9, 10, 4, 6, 9, 10,
-<a name="l00600"></a>00600 4, 6, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 4, 4, 9, 10, 4, 6, 9, 10, 4, 6, 9, 10, 4,
-<a name="l00601"></a>00601 6, 9, 10, 4, 6, 9, 10, 4, 6, 6, 6, 2, 2, 6, 6, 2, 2, 6, 6, 2, 2, 6, 6, 2, 2,
-<a name="l00602"></a>00602 6, 6, 3, 3, 6, 6, 6, 6, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6, 3, 4, 4, 4, 4, 5, 5,
-<a name="l00603"></a>00603 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 6, 7, 6, 3, 3, 5, 5, 7, 6, 3,
-<a name="l00604"></a>00604 3, 7, 6, 9, 9, 9, 9, 2, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 2, 4,
-<a name="l00605"></a>00605 0, 0, 7, 0, 0, 0, 9, 9, 6, 6, 12, 12, 9, 9, 6, 5, 6, 4, 5, 4, 3, 3, 4, 3, 3,
-<a name="l00606"></a>00606 3, 3, 3, 9, 10, 3, 0, 4, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6,
-<a name="l00607"></a>00607 6, 7, 12, 24, 9, 0, 3, 3, 3, 4, 7, 7, 11, 8, 2, 4, 4, 5, 7, 3, 4, 3, 3, 7, 7,
-<a name="l00608"></a>00608 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 7, 7, 7, 7, 12, 7, 8, 9, 9, 8, 7, 9, 9, 3, 6,
-<a name="l00609"></a>00609 8, 7, 9, 9, 9, 8, 9, 9, 8, 7, 9, 7, 11, 7, 7, 7, 3, 3, 3, 5, 7, 4, 7, 7, 6,
-<a name="l00610"></a>00610 7, 7, 3, 7, 7, 3, 3, 6, 3, 11, 7, 7, 7, 7, 4, 7, 3, 7, 5, 9, 5, 5, 5, 4, 3,
-<a name="l00611"></a>00611 4, 7, 7, 7, 9, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 3, 3, 3, 3, 7,
-<a name="l00612"></a>00612 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 4, 6, 8, 9, 9, 12, 4, 4, 7, 12, 9,
-<a name="l00613"></a>00613 9, 7, 7, 7, 7, 7, 6, 9, 10, 7, 3, 4, 4, 9, 11, 7, 7, 3, 7, 7, 7, 7, 7, 7, 7,
-<a name="l00614"></a>00614 12, 7, 7, 9, 12, 11, 7, 12, 4, 4, 3, 3, 7, 6, 5, 7, 2, 7, 4, 4, 6, 6, 7, 3, 3,
-<a name="l00615"></a>00615 4, 11, 7, 8, 7, 8, 8, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 3, 4, 4, 4, 4, 4, 4, 4,
-<a name="l00616"></a>00616 4, 4, 4, 7, 3, 8, 7, 7, 5, 3, 9, 7, 7, 5, 8, 7, 7, 7, 4, 4, 4, 10, 10, 10, 7,
-<a name="l00617"></a>00617 9, 7, 3, 8, 7, 9, 6, 9, 6, 7, 7, 4, 7, 7, 7, 7, 9, 7, 9, 8, 7, 8, 7, 7, 3,
-<a name="l00618"></a>00618 7, 4, 7, 4, 9, 7, 9, 7, 9, 7, 9, 4, 9, 4, 8, 7, 7, 3, 7, 5, 9, 7, 9, 7, 7,
-<a name="l00619"></a>00619 5, 7, 5, 7, 9, 9, 7, 7, 5, 7, 5, 8, 7, 6, 4, 13, 12, 6, 12, 6, 12, 6, 6, 12, 9,
-<a name="l00620"></a>00620 7, 7, 7, 7, 7, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00621"></a>00621 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00622"></a>00622 9, 9, 9, 7, 12, 12, 12, 12, 12, 7, 7, 7, 12, 13, 11, 9, 9, 6, 8, 7, 6, 6, 9, 9, 5,
-<a name="l00623"></a>00623 7, 2, 4, 11, 4, 7, 4, 4, 7, 4, 7, 7, 9, 6, 9, 6, 8, 7, 8, 7, 8, 7, 9, 7, 9,
-<a name="l00624"></a>00624 7, 9, 7, 9, 7, 9, 7, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 8, 6, 7, 7, 3, 9, 7, 9,
-<a name="l00625"></a>00625 7, 9, 7, 9, 7, 9, 4, 8, 7, 7, 3, 9, 7, 9, 7, 9, 7, 9, 7, 11, 9, 7, 5, 3, 7,
-<a name="l00626"></a>00626 7, 12, 11, 9, 7, 3, 11, 9, 11, 9, 11, 9, 7, 5, 3, 4, 7, 7, 10, 10, 10, 10, 4, 4, 4,
-<a name="l00627"></a>00627 4, 7, 9, 10, 4, 9, 9, 9, 3, 7, 8, 7, 8, 7, 9, 3, 8, 7, 9, 9, 8, 9, 9, 8, 7,
-<a name="l00628"></a>00628 7, 7, 7, 9, 9, 3, 7, 7, 5, 7, 3, 7, 7, 5, 5, 7, 7, 3, 7, 5, 7, 5, 5, 7, 7,
-<a name="l00629"></a>00629 6, 7, 6, 9, 9, 3, 7, 7, 7, 9, 8, 10, 7, 9, 8, 3, 3, 6, 13, 12, 10, 7, 8, 9, 7,
-<a name="l00630"></a>00630 8, 8, 7, 8, 8, 11, 7, 9, 9, 7, 8, 9, 9, 9, 9, 8, 9, 7, 8, 9, 7, 9, 8, 11, 11,
-<a name="l00631"></a>00631 10, 10, 8, 9, 12, 9, 7, 7, 6, 4, 7, 7, 9, 6, 7, 7, 6, 7, 9, 7, 7, 7, 7, 6, 5,
-<a name="l00632"></a>00632 5, 9, 5, 7, 6, 9, 9, 8, 9, 7, 6, 9, 7, 7, 7, 4, 6, 7, 3, 3, 3, 11, 10, 7, 6,
-<a name="l00633"></a>00633 5, 7, 6, 5, 12, 13, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 3, 4, 4,
-<a name="l00634"></a>00634 3, 7, 7, 5, 6, 7, 3, 5, 7, 7, 3, 6, 6, 6, 7, 7, 3, 4, 7, 6, 7, 7, 6, 6, 7,
-<a name="l00635"></a>00635 6, 8, 8, 6, 6, 6, 3, 5, 9, 3, 6, 6, 6, 6, 6, 8, 8, 8, 8, 7, 7, 7, 7, 5, 6,
-<a name="l00636"></a>00636 7, 3, 5, 7, 3, 6, 6, 6, 7, 4, 7, 7, 7, 6, 7, 6, 8, 8, 3, 7, 6, 7, 7, 0, 0,
-<a name="l00637"></a>00637 0, 0, 4, 4, 4, 5, 2, 2, 3, 2, 2, 3, 2, 3, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00638"></a>00638 6, 4, 6, 9, 9, 3, 9, 6, 6, 6, 9, 9, 9, 9, 9, 3, 9, 9, 9, 9, 9, 9, 9, 9, 8,
-<a name="l00639"></a>00639 9, 9, 9, 9, 9, 3, 3, 9, 9, 9, 9, 7, 6, 6, 6, 6, 6, 10, 11, 5, 6, 10, 11, 5, 6,
-<a name="l00640"></a>00640 8, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 3, 3, 3, 3, 9, 9,
-<a name="l00641"></a>00641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 12, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00642"></a>00642 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 4, 9, 7,
-<a name="l00643"></a>00643 5, 2, 3, 2, 3, 5, 5, 2, 3, 8, 7, 3, 3, 2, 3, 9, 9, 3, 3, 3, 5, 9, 9, 3, 3,
-<a name="l00644"></a>00644 9, 9, 3, 3, 7, 6, 6, 6, 7, 6, 6, 6, 7, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 10,
-<a name="l00645"></a>00645 10, 6, 6, 10, 10, 6, 6, 13, 13, 10, 10, 13, 13, 10, 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5,
-<a name="l00646"></a>00646 6, 5, 7, 5, 6, 5, 9, 9, 3, 3, 7, 7, 3, 3, 7, 7, 5, 5, 6, 6, 2, 2, 4, 4, 5,
-<a name="l00647"></a>00647 5, 6, 6, 3, 3, 3, 5, 5, 5, 5, 5, 8, 7, 8, 7, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l00648"></a>00648 9, 9, 2, 2, 9, 9, 9, 2, 3, 9, 9, 3, 3, 9, 9, 9, 3, 3, 3, 3, 3, 3, 9, 2, 2,
-<a name="l00649"></a>00649 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00650"></a>00650 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00651"></a>00651 9, 9, 9, 9, 4, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00652"></a>00652 9, 9, 9, 9, 9, 9, 2, 12, 24, 10, 8, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00653"></a>00653 0, 0, 0, 0, 6, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00654"></a>00654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l00655"></a>00655 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8,
-<a name="l00656"></a>00656 7, 8, 7, 8, 7, 8, 7, 3, 3, 3, 3, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7,
-<a name="l00657"></a>00657 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 9, 7, 9, 7, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 7,
-<a name="l00658"></a>00658 5, 7, 5, 7, 5, 7, 7, 3, 3, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 0, 0, 0, 0,
-<a name="l00659"></a>00659 7, 4, 11, 8, 7, 5, 7, 5, 9, 7, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7, 9, 7, 9, 7, 9,
-<a name="l00660"></a>00660 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 2, 0, 2, 3, 2, 3, 2, 3,
-<a name="l00661"></a>00661 2, 3, 5, 5, 5, 5, 8, 7, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 9,
-<a name="l00662"></a>00662 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 7, 6, 6, 6, 7, 6, 6, 6, 7, 6, 6, 6, 7, 6,
-<a name="l00663"></a>00663 6, 6, 7, 6, 6, 6, 7, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-<a name="l00664"></a>00664 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 10, 10, 6, 6, 10, 10,
-<a name="l00665"></a>00665 6, 6, 10, 10, 6, 6, 13, 13, 10, 10, 13, 13, 10, 10, 7, 7, 7, 5, 6, 5, 9, 9, 9, 3, 3,
-<a name="l00666"></a>00666 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 7, 7, 7, 7, 10, 11, 5, 6, 10,
-<a name="l00667"></a>00667 11, 5, 6, 7, 7, 5, 5, 7, 7, 5, 5, 7, 7, 5, 5, 10, 11, 5, 6, 10, 11, 5, 6, 10, 11,
-<a name="l00668"></a>00668 5, 6, 10, 11, 5, 6, 10, 11, 5, 6, 6, 6, 2, 2, 6, 6, 2, 2, 6, 6, 2, 2, 6, 6, 2,
-<a name="l00669"></a>00669 2, 6, 6, 3, 3, 6, 6, 6, 6, 6, 6, 3, 3, 6, 6, 7, 6, 6, 6, 3, 5, 5, 5, 5, 5,
-<a name="l00670"></a>00670 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 7, 8, 7, 3, 3, 5, 5, 8, 7,
-<a name="l00671"></a>00671 3, 3, 8, 7, 10, 10, 10, 10, 2, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 0, 0, 0, 0, 2,
-<a name="l00672"></a>00672 4, 0, 0, 7, 0, 0, 0, 10, 10, 6, 6, 13, 13, 10, 10, 7, 5, 6, 5, 5, 4, 3, 3, 4, 3,
-<a name="l00673"></a>00673 3, 3, 3, 3, 10, 11, 3, 0, 4, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6,
-<a name="l00674"></a>00674 6, 7, 7, 13, 26, 10, 0, 4, 4, 3, 5, 7, 7, 12, 9, 2, 4, 4, 5, 8, 4, 4, 4, 4, 7,
-<a name="l00675"></a>00675 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4, 8, 8, 8, 7, 13, 9, 9, 9, 9, 9, 8, 10, 9, 3,
-<a name="l00676"></a>00676 6, 9, 7, 11, 9, 10, 9, 10, 9, 9, 7, 9, 9, 13, 7, 9, 7, 4, 4, 4, 5, 7, 4, 7, 7,
-<a name="l00677"></a>00677 7, 7, 7, 3, 7, 7, 3, 3, 7, 3, 11, 7, 7, 7, 7, 4, 7, 4, 7, 5, 9, 7, 7, 7, 4,
-<a name="l00678"></a>00678 3, 4, 8, 9, 9, 9, 9, 9, 10, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3,
-<a name="l00679"></a>00679 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 9, 10, 10, 13, 4, 4, 7, 13,
-<a name="l00680"></a>00680 10, 9, 7, 7, 7, 7, 7, 6, 9, 11, 7, 3, 4, 5, 10, 12, 7, 8, 3, 8, 8, 7, 7, 8, 7,
-<a name="l00681"></a>00681 7, 13, 9, 9, 10, 13, 12, 7, 13, 4, 4, 3, 3, 7, 6, 7, 9, 2, 7, 4, 4, 7, 7, 7, 4,
-<a name="l00682"></a>00682 3, 4, 14, 9, 9, 9, 9, 9, 3, 3, 3, 3, 10, 10, 10, 9, 9, 9, 3, 4, 4, 4, 4, 4, 4,
-<a name="l00683"></a>00683 4, 4, 4, 4, 7, 3, 9, 7, 7, 7, 3, 9, 7, 9, 7, 9, 7, 8, 8, 4, 4, 4, 11, 11, 11,
-<a name="l00684"></a>00684 7, 10, 7, 3, 9, 7, 9, 7, 9, 7, 7, 7, 4, 9, 7, 9, 7, 9, 8, 9, 9, 7, 9, 7, 7,
-<a name="l00685"></a>00685 3, 7, 4, 7, 4, 9, 7, 9, 7, 10, 7, 9, 4, 9, 4, 9, 7, 7, 3, 7, 5, 9, 7, 9, 7,
-<a name="l00686"></a>00686 7, 7, 7, 7, 7, 10, 9, 8, 7, 6, 8, 5, 8, 7, 7, 5, 15, 13, 7, 13, 7, 13, 7, 7, 13,
-<a name="l00687"></a>00687 9, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00688"></a>00688 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00689"></a>00689 9, 9, 9, 9, 8, 13, 13, 13, 13, 13, 8, 8, 8, 13, 14, 12, 10, 10, 7, 9, 8, 7, 7, 10, 10,
-<a name="l00690"></a>00690 6, 8, 2, 5, 12, 5, 8, 5, 5, 8, 5, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 10, 7,
-<a name="l00691"></a>00691 10, 7, 10, 7, 9, 7, 9, 7, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 9, 7, 7, 7, 3, 9, 7,
-<a name="l00692"></a>00692 9, 7, 10, 7, 10, 7, 9, 4, 9, 7, 8, 4, 9, 7, 9, 7, 9, 7, 9, 7, 13, 9, 9, 7, 3,
-<a name="l00693"></a>00693 9, 7, 13, 12, 10, 7, 3, 13, 9, 13, 9, 13, 9, 9, 7, 3, 4, 7, 8, 11, 11, 11, 11, 4, 4,
-<a name="l00694"></a>00694 4, 4, 9, 10, 11, 5, 10, 11, 10, 3, 9, 9, 9, 9, 7, 9, 3, 9, 9, 11, 9, 8, 10, 9, 9,
-<a name="l00695"></a>00695 8, 7, 9, 7, 9, 10, 3, 9, 8, 6, 7, 3, 7, 7, 7, 6, 7, 7, 3, 7, 7, 7, 5, 6, 7,
-<a name="l00696"></a>00696 7, 6, 7, 7, 9, 9, 3, 7, 7, 7, 9, 9, 11, 7, 9, 9, 3, 3, 6, 14, 13, 11, 8, 8, 9,
-<a name="l00697"></a>00697 9, 9, 9, 7, 9, 9, 11, 8, 9, 9, 8, 9, 11, 9, 10, 9, 9, 9, 7, 8, 11, 7, 10, 9, 11,
-<a name="l00698"></a>00698 11, 10, 11, 8, 9, 13, 9, 7, 7, 7, 5, 8, 7, 9, 6, 7, 7, 6, 7, 9, 7, 7, 7, 7, 7,
-<a name="l00699"></a>00699 5, 7, 9, 7, 7, 7, 11, 12, 8, 9, 7, 7, 10, 7, 7, 7, 5, 7, 7, 3, 3, 3, 12, 11, 7,
-<a name="l00700"></a>00700 6, 7, 7, 6, 5, 13, 14, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 3, 4,
-<a name="l00701"></a>00701 4, 4, 7, 7, 5, 7, 8, 3, 5, 8, 8, 3, 7, 6, 6, 8, 8, 3, 5, 7, 7, 7, 7, 6, 6,
-<a name="l00702"></a>00702 7, 7, 9, 8, 6, 6, 6, 3, 5, 9, 3, 7, 7, 6, 6, 7, 9, 9, 9, 9, 7, 7, 7, 7, 5,
-<a name="l00703"></a>00703 7, 8, 4, 5, 8, 4, 7, 6, 6, 8, 5, 7, 7, 7, 6, 7, 7, 9, 8, 3, 7, 6, 7, 7, 0,
-<a name="l00704"></a>00704 0, 0, 0, 4, 4, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l00705"></a>00705 7, 7, 4, 7, 10, 10, 4, 10, 7, 7, 7, 10, 10, 10, 10, 10, 3, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l00706"></a>00706 8, 10, 10, 10, 9, 9, 3, 3, 10, 10, 10, 10, 7, 7, 7, 7, 6, 6, 11, 12, 5, 7, 11, 12, 5,
-<a name="l00707"></a>00707 7, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 10,
-<a name="l00708"></a>00708 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 13, 10, 10, 10, 10, 10, 10,
-<a name="l00709"></a>00709 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 4, 10,
-<a name="l00710"></a>00710 8, 5, 3, 3, 3, 3, 6, 6, 3, 3, 8, 8, 3, 3, 3, 3, 9, 9, 3, 3, 4, 5, 9, 9, 3,
-<a name="l00711"></a>00711 3, 9, 9, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 6, 6, 6, 6,
-<a name="l00712"></a>00712 11, 11, 7, 7, 11, 11, 7, 7, 14, 14, 11, 11, 14, 14, 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, 7,
-<a name="l00713"></a>00713 6, 7, 5, 7, 6, 7, 5, 10, 10, 3, 3, 8, 8, 3, 3, 8, 8, 5, 5, 7, 7, 3, 3, 4, 4,
-<a name="l00714"></a>00714 5, 5, 7, 7, 3, 3, 4, 5, 6, 5, 6, 6, 8, 8, 8, 8, 3, 3, 7, 8, 7, 8, 7, 8, 7,
-<a name="l00715"></a>00715 8, 10, 10, 3, 3, 10, 10, 10, 2, 3, 10, 10, 3, 3, 10, 10, 10, 3, 3, 3, 3, 3, 3, 10, 3,
-<a name="l00716"></a>00716 3, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l00717"></a>00717 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l00718"></a>00718 10, 10, 10, 10, 10, 4, 4, 4, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l00719"></a>00719 10, 10, 10, 10, 10, 10, 10, 2, 13, 26, 11, 9, 11, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00720"></a>00720 0, 0, 0, 0, 0, 7, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00721"></a>00721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9, 7, 9, 7, 9, 7, 9,
-<a name="l00722"></a>00722 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7,
-<a name="l00723"></a>00723 9, 7, 9, 7, 9, 7, 9, 7, 3, 3, 3, 3, 10, 7, 10, 7, 10, 7, 10, 7, 10, 7, 10, 7, 10,
-<a name="l00724"></a>00724 7, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 9, 7, 9, 7, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9,
-<a name="l00725"></a>00725 9, 7, 9, 7, 9, 7, 9, 7, 3, 3, 10, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 0, 0, 0,
-<a name="l00726"></a>00726 0, 7, 5, 12, 9, 8, 6, 8, 6, 9, 7, 7, 7, 7, 7, 9, 7, 9, 7, 9, 7, 10, 7, 10, 7,
-<a name="l00727"></a>00727 9, 3, 3, 3, 8, 3, 3, 3, 3, 3, 3, 4, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 3,
-<a name="l00728"></a>00728 3, 3, 3, 6, 6, 6, 6, 8, 8, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3,
-<a name="l00729"></a>00729 9, 9, 3, 3, 9, 9, 3, 3, 9, 9, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l00730"></a>00730 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-<a name="l00731"></a>00731 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 11, 11, 7, 7, 11,
-<a name="l00732"></a>00732 11, 7, 7, 11, 11, 7, 7, 14, 14, 11, 11, 14, 14, 11, 11, 8, 8, 7, 6, 7, 5, 10, 10, 10, 3,
-<a name="l00733"></a>00733 3, 10, 10, 3, 3, 10, 10, 3, 3, 10, 10, 3, 3, 10, 10, 3, 3, 8, 8, 8, 8, 11, 12, 5, 7,
-<a name="l00734"></a>00734 11, 12, 5, 7, 8, 8, 5, 5, 8, 8, 5, 5, 8, 8, 5, 5, 11, 12, 5, 7, 11, 12, 5, 7, 11,
-<a name="l00735"></a>00735 12, 5, 7, 11, 12, 5, 7, 11, 12, 5, 7, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7,
-<a name="l00736"></a>00736 3, 3, 7, 7, 3, 3, 7, 7, 7, 7, 7, 7, 3, 3, 7, 7, 7, 7, 7, 7, 4, 5, 5, 5, 5,
-<a name="l00737"></a>00737 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 3, 3, 6, 6, 8,
-<a name="l00738"></a>00738 8, 3, 3, 8, 8, 11, 11, 11, 11, 3, 0, 0, 0, 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, 0, 0,
-<a name="l00739"></a>00739 3, 5, 0, 0, 8, 0, 0, 0, 11, 11, 7, 7, 14, 14, 11, 11, 7, 6, 7, 5, 5, 4, 4, 3, 4,
-<a name="l00740"></a>00740 3, 3, 3, 3, 3, 11, 12, 3, 0, 4, 6, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8,
-<a name="l00741"></a>00741 7, 7, 7, 8, 15, 30, 11, 0, 4, 4, 5, 5, 8, 8, 13, 10, 3, 5, 5, 6, 9, 4, 5, 4, 4,
-<a name="l00742"></a>00742 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 9, 9, 9, 8, 15, 9, 10, 11, 11, 10, 9, 11, 10,
-<a name="l00743"></a>00743 3, 7, 10, 8, 11, 10, 12, 10, 12, 11, 10, 9, 10, 9, 15, 9, 9, 8, 4, 4, 4, 5, 8, 5, 8,
-<a name="l00744"></a>00744 8, 8, 8, 8, 4, 8, 8, 3, 3, 7, 3, 13, 8, 8, 8, 8, 5, 8, 4, 8, 7, 11, 7, 7, 8,
-<a name="l00745"></a>00745 5, 3, 5, 9, 9, 9, 11, 10, 10, 12, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3,
-<a name="l00746"></a>00746 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 8, 8, 8, 5, 8, 9, 11, 11, 15, 5, 5, 8,
-<a name="l00747"></a>00747 15, 12, 11, 8, 8, 8, 8, 8, 7, 11, 12, 8, 4, 5, 5, 12, 13, 8, 9, 5, 9, 9, 8, 8, 9,
-<a name="l00748"></a>00748 8, 8, 15, 9, 9, 12, 15, 14, 8, 15, 5, 5, 3, 3, 8, 7, 7, 9, 3, 8, 5, 5, 8, 8, 8,
-<a name="l00749"></a>00749 4, 3, 5, 14, 9, 10, 9, 10, 10, 3, 3, 3, 3, 12, 12, 12, 10, 10, 10, 3, 5, 4, 5, 5, 5,
-<a name="l00750"></a>00750 5, 5, 5, 5, 5, 8, 3, 10, 8, 8, 8, 3, 11, 8, 9, 7, 10, 8, 9, 9, 5, 5, 5, 13, 13,
-<a name="l00751"></a>00751 13, 8, 11, 8, 3, 10, 8, 11, 8, 11, 8, 8, 8, 5, 9, 8, 9, 8, 11, 9, 11, 10, 8, 10, 8,
-<a name="l00752"></a>00752 8, 3, 8, 4, 8, 5, 10, 8, 10, 8, 12, 8, 11, 5, 11, 5, 10, 8, 9, 4, 9, 6, 10, 8, 10,
-<a name="l00753"></a>00753 8, 8, 8, 8, 8, 8, 12, 11, 9, 8, 7, 9, 5, 10, 8, 8, 5, 17, 15, 8, 15, 8, 15, 8, 8,
-<a name="l00754"></a>00754 15, 11, 9, 9, 9, 9, 9, 11, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00755"></a>00755 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00756"></a>00756 11, 11, 11, 11, 11, 9, 15, 15, 15, 15, 15, 9, 9, 9, 15, 16, 14, 11, 11, 8, 10, 9, 8, 8, 11,
-<a name="l00757"></a>00757 11, 7, 9, 3, 5, 13, 5, 9, 5, 5, 9, 5, 9, 8, 11, 8, 11, 8, 10, 8, 10, 8, 10, 8, 11,
-<a name="l00758"></a>00758 8, 11, 8, 11, 8, 10, 8, 10, 8, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 10, 7, 8, 8, 3, 10,
-<a name="l00759"></a>00759 8, 11, 8, 12, 8, 12, 8, 11, 5, 10, 8, 9, 4, 10, 8, 10, 8, 10, 8, 11, 8, 15, 11, 9, 7,
-<a name="l00760"></a>00760 3, 9, 8, 15, 13, 12, 8, 3, 15, 11, 15, 11, 15, 11, 9, 7, 3, 5, 8, 9, 13, 13, 13, 13, 5,
-<a name="l00761"></a>00761 5, 5, 5, 9, 12, 13, 6, 12, 12, 11, 3, 9, 10, 10, 10, 8, 10, 3, 10, 11, 11, 10, 10, 12, 10,
-<a name="l00762"></a>00762 10, 9, 9, 9, 9, 11, 11, 3, 9, 9, 7, 8, 3, 8, 9, 7, 7, 8, 8, 3, 8, 7, 8, 7, 7,
-<a name="l00763"></a>00763 8, 8, 7, 8, 8, 11, 12, 3, 8, 8, 8, 12, 10, 13, 8, 11, 10, 3, 3, 7, 16, 15, 13, 9, 10,
-<a name="l00764"></a>00764 11, 9, 10, 10, 8, 10, 10, 14, 9, 11, 11, 9, 10, 11, 10, 12, 10, 10, 11, 9, 10, 11, 9, 11, 9,
-<a name="l00765"></a>00765 14, 15, 12, 13, 10, 11, 15, 11, 8, 9, 8, 5, 9, 8, 9, 7, 8, 8, 7, 8, 10, 8, 8, 8, 8,
-<a name="l00766"></a>00766 8, 7, 7, 11, 7, 9, 8, 11, 11, 9, 11, 8, 8, 11, 8, 8, 8, 5, 8, 8, 3, 3, 3, 14, 12,
-<a name="l00767"></a>00767 8, 7, 7, 8, 7, 6, 15, 16, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 3,
-<a name="l00768"></a>00768 5, 5, 4, 8, 8, 6, 8, 9, 3, 6, 9, 9, 3, 8, 7, 7, 9, 9, 3, 5, 9, 8, 9, 8, 7,
-<a name="l00769"></a>00769 7, 8, 8, 10, 10, 6, 6, 6, 4, 6, 12, 3, 8, 8, 7, 7, 8, 10, 10, 10, 10, 8, 8, 8, 8,
-<a name="l00770"></a>00770 6, 8, 9, 4, 6, 9, 4, 8, 7, 7, 9, 5, 9, 9, 8, 7, 8, 8, 10, 10, 3, 8, 7, 8, 9,
-<a name="l00771"></a>00771 0, 0, 0, 0, 5, 5, 5, 6, 3, 3, 4, 3, 3, 3, 3, 3, 2, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00772"></a>00772 8, 8, 8, 5, 8, 11, 11, 4, 11, 8, 8, 8, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00773"></a>00773 11, 10, 11, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11, 8, 8, 8, 8, 7, 7, 12, 14, 6, 8, 12, 14,
-<a name="l00774"></a>00774 6, 8, 10, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3,
-<a name="l00775"></a>00775 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 15, 11, 11, 11, 11, 11,
-<a name="l00776"></a>00776 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 5,
-<a name="l00777"></a>00777 11, 9, 6, 3, 3, 3, 3, 6, 6, 3, 3, 10, 9, 4, 4, 3, 3, 11, 11, 4, 4, 4, 6, 11, 11,
-<a name="l00778"></a>00778 4, 4, 11, 11, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 7, 7, 7,
-<a name="l00779"></a>00779 7, 12, 12, 8, 8, 12, 12, 8, 8, 16, 16, 13, 13, 16, 16, 13, 13, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00780"></a>00780 8, 7, 8, 6, 8, 7, 8, 6, 12, 12, 4, 4, 9, 9, 4, 4, 9, 9, 6, 6, 8, 8, 3, 3, 5,
-<a name="l00781"></a>00781 5, 6, 6, 8, 8, 4, 4, 4, 6, 7, 6, 6, 6, 10, 9, 10, 9, 4, 4, 8, 9, 8, 9, 8, 9,
-<a name="l00782"></a>00782 8, 9, 11, 11, 3, 3, 11, 11, 11, 2, 3, 11, 11, 3, 4, 11, 11, 11, 3, 3, 3, 3, 3, 3, 11,
-<a name="l00783"></a>00783 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00784"></a>00784 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00785"></a>00785 11, 11, 11, 11, 11, 11, 5, 5, 5, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00786"></a>00786 11, 11, 11, 11, 11, 11, 11, 11, 2, 15, 30, 13, 10, 13, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00787"></a>00787 0, 0, 0, 0, 0, 0, 8, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00788"></a>00788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9, 8, 9, 8, 9, 8,
-<a name="l00789"></a>00789 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 8, 10, 8, 10, 8, 10,
-<a name="l00790"></a>00790 8, 10, 8, 10, 8, 10, 8, 10, 8, 3, 3, 3, 3, 12, 8, 12, 8, 12, 8, 12, 8, 12, 8, 12, 8,
-<a name="l00791"></a>00791 12, 8, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 10, 8, 10, 8, 13, 10, 13, 10, 13, 10, 13, 10, 13,
-<a name="l00792"></a>00792 10, 9, 7, 9, 7, 9, 7, 9, 8, 3, 3, 12, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 0, 0,
-<a name="l00793"></a>00793 0, 0, 8, 5, 14, 10, 9, 7, 9, 7, 11, 8, 8, 8, 8, 8, 10, 8, 10, 8, 10, 8, 11, 8, 12,
-<a name="l00794"></a>00794 8, 11, 4, 4, 4, 9, 4, 4, 4, 4, 4, 4, 4, 3, 3, 5, 5, 3, 3, 3, 0, 3, 3, 3, 3,
-<a name="l00795"></a>00795 3, 3, 3, 3, 6, 6, 6, 6, 10, 9, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11, 4,
-<a name="l00796"></a>00796 4, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00797"></a>00797 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-<a name="l00798"></a>00798 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 12, 12, 8, 8,
-<a name="l00799"></a>00799 12, 12, 8, 8, 12, 12, 8, 8, 16, 16, 13, 13, 16, 16, 13, 13, 9, 9, 8, 7, 8, 6, 12, 12, 12,
-<a name="l00800"></a>00800 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 9, 9, 9, 9, 12, 14, 6,
-<a name="l00801"></a>00801 8, 12, 14, 6, 8, 9, 9, 6, 6, 9, 9, 6, 6, 9, 9, 6, 6, 12, 14, 6, 8, 12, 14, 6, 8,
-<a name="l00802"></a>00802 12, 14, 6, 8, 12, 14, 6, 8, 12, 14, 6, 8, 8, 8, 3, 3, 8, 8, 3, 3, 8, 8, 3, 3, 8,
-<a name="l00803"></a>00803 8, 3, 3, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 4, 6, 6, 6,
-<a name="l00804"></a>00804 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 10, 9, 10, 9, 4, 4, 6, 6,
-<a name="l00805"></a>00805 10, 9, 4, 4, 10, 9, 12, 12, 12, 12, 3, 0, 0, 0, 0, 0, 0, 0, 17, 16, 0, 0, 0, 0, 0,
-<a name="l00806"></a>00806 0, 3, 6, 0, 0, 9, 0, 0, 0, 12, 12, 8, 8, 16, 16, 13, 13, 8, 7, 8, 6, 6, 5, 4, 4,
-<a name="l00807"></a>00807 5, 4, 4, 4, 4, 4, 12, 14, 3, 0, 5, 6, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8,
-<a name="l00808"></a>00808 9, 8, 8, 8, 9, 16, 32, 12, 0, 4, 4, 5, 6, 9, 9, 14, 11, 3, 5, 5, 6, 9, 4, 5, 4,
-<a name="l00809"></a>00809 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 4, 9, 9, 9, 9, 16, 11, 11, 12, 12, 11, 10, 12,
-<a name="l00810"></a>00810 11, 3, 8, 11, 9, 13, 11, 12, 11, 12, 11, 11, 9, 11, 11, 15, 11, 9, 9, 4, 4, 4, 7, 9, 5,
-<a name="l00811"></a>00811 9, 9, 8, 9, 9, 4, 9, 8, 4, 3, 8, 3, 13, 8, 9, 9, 9, 5, 8, 4, 8, 7, 11, 7, 7,
-<a name="l00812"></a>00812 7, 5, 3, 5, 9, 11, 11, 12, 11, 11, 12, 11, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 3, 3,
-<a name="l00813"></a>00813 3, 3, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 6, 9, 9, 9, 6, 9, 9, 12, 12, 16, 5, 5,
-<a name="l00814"></a>00814 9, 16, 12, 11, 9, 9, 9, 9, 9, 8, 11, 13, 9, 4, 5, 5, 12, 14, 9, 10, 5, 9, 9, 9, 9,
-<a name="l00815"></a>00815 9, 9, 9, 16, 11, 11, 12, 17, 15, 9, 16, 5, 5, 4, 4, 9, 8, 7, 9, 3, 9, 5, 5, 8, 8,
-<a name="l00816"></a>00816 9, 4, 4, 5, 17, 11, 11, 11, 11, 11, 3, 3, 3, 3, 12, 12, 12, 11, 11, 11, 3, 5, 4, 5, 5,
-<a name="l00817"></a>00817 5, 5, 5, 5, 5, 5, 9, 3, 11, 8, 9, 7, 3, 12, 9, 9, 7, 11, 9, 9, 9, 5, 5, 5, 13,
-<a name="l00818"></a>00818 13, 13, 9, 12, 9, 3, 11, 8, 12, 8, 12, 8, 9, 9, 5, 11, 9, 11, 9, 12, 10, 12, 11, 9, 11,
-<a name="l00819"></a>00819 9, 9, 3, 9, 4, 9, 5, 11, 8, 11, 8, 12, 9, 11, 5, 11, 5, 11, 8, 9, 4, 9, 6, 11, 8,
-<a name="l00820"></a>00820 11, 8, 9, 7, 9, 7, 9, 12, 11, 9, 9, 7, 10, 5, 10, 9, 8, 6, 18, 16, 8, 16, 8, 16, 8,
-<a name="l00821"></a>00821 8, 16, 12, 9, 10, 9, 10, 10, 11, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00822"></a>00822 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l00823"></a>00823 11, 11, 11, 11, 11, 12, 10, 16, 16, 16, 16, 16, 10, 10, 10, 16, 17, 15, 12, 12, 9, 11, 10, 8, 8,
-<a name="l00824"></a>00824 12, 12, 7, 10, 3, 6, 14, 5, 10, 6, 6, 10, 6, 11, 9, 12, 8, 12, 8, 11, 9, 11, 9, 11, 9,
-<a name="l00825"></a>00825 12, 9, 12, 9, 12, 9, 11, 8, 11, 8, 3, 3, 3, 3, 3, 3, 3, 4, 8, 3, 11, 8, 8, 9, 3,
-<a name="l00826"></a>00826 11, 8, 12, 9, 12, 9, 12, 9, 11, 5, 11, 8, 10, 4, 11, 8, 11, 8, 11, 8, 12, 8, 15, 11, 9,
-<a name="l00827"></a>00827 7, 3, 11, 9, 16, 14, 12, 9, 3, 15, 11, 15, 11, 15, 11, 9, 7, 4, 5, 9, 10, 13, 13, 13, 13,
-<a name="l00828"></a>00828 5, 5, 5, 5, 11, 13, 13, 6, 12, 12, 12, 3, 11, 11, 11, 11, 9, 11, 3, 11, 11, 13, 11, 10, 12,
-<a name="l00829"></a>00829 11, 11, 10, 9, 9, 11, 11, 12, 3, 9, 9, 7, 8, 3, 8, 9, 8, 7, 8, 9, 3, 8, 8, 9, 7,
-<a name="l00830"></a>00830 7, 9, 9, 8, 8, 8, 11, 13, 3, 8, 9, 8, 13, 11, 14, 9, 12, 11, 3, 3, 8, 17, 16, 13, 9,
-<a name="l00831"></a>00831 10, 12, 11, 11, 11, 9, 11, 11, 14, 10, 12, 12, 9, 11, 13, 11, 12, 11, 11, 12, 9, 10, 11, 11, 12,
-<a name="l00832"></a>00832 10, 13, 14, 13, 14, 11, 12, 16, 12, 9, 9, 9, 6, 9, 9, 10, 7, 8, 8, 7, 8, 11, 8, 9, 8,
-<a name="l00833"></a>00833 9, 8, 7, 7, 13, 7, 9, 8, 11, 11, 10, 12, 9, 8, 12, 9, 9, 8, 6, 8, 8, 4, 3, 3, 15,
-<a name="l00834"></a>00834 13, 8, 7, 7, 8, 8, 7, 16, 17, 11, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5,
-<a name="l00835"></a>00835 3, 5, 5, 4, 9, 9, 6, 8, 10, 3, 6, 10, 9, 3, 8, 7, 7, 10, 10, 3, 6, 9, 8, 9, 9,
-<a name="l00836"></a>00836 7, 8, 9, 8, 11, 10, 6, 6, 6, 4, 7, 12, 3, 8, 8, 7, 7, 9, 11, 11, 11, 11, 9, 9, 9,
-<a name="l00837"></a>00837 9, 6, 8, 10, 5, 7, 9, 5, 8, 7, 7, 10, 6, 9, 9, 9, 8, 9, 8, 11, 10, 3, 9, 7, 9,
-<a name="l00838"></a>00838 9, 0, 0, 0, 0, 5, 5, 6, 7, 3, 3, 4, 3, 3, 3, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8,
-<a name="l00839"></a>00839 8, 8, 8, 8, 5, 8, 12, 12, 5, 12, 8, 8, 8, 12, 12, 12, 12, 12, 3, 12, 12, 12, 12, 12, 12,
-<a name="l00840"></a>00840 12, 12, 10, 12, 12, 12, 11, 11, 4, 4, 12, 12, 12, 12, 9, 8, 8, 8, 8, 8, 13, 15, 6, 8, 13,
-<a name="l00841"></a>00841 15, 6, 8, 10, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 3, 3, 3,
-<a name="l00842"></a>00842 3, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 16, 12, 12, 12, 12,
-<a name="l00843"></a>00843 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 5,
-<a name="l00844"></a>00844 5, 12, 10, 7, 3, 4, 3, 4, 7, 7, 3, 4, 10, 9, 4, 4, 3, 4, 11, 11, 4, 4, 5, 6, 11,
-<a name="l00845"></a>00845 11, 4, 4, 11, 11, 4, 4, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 5, 5, 5, 5, 8, 8,
-<a name="l00846"></a>00846 8, 8, 13, 13, 9, 9, 13, 13, 9, 9, 18, 18, 14, 14, 18, 18, 14, 14, 9, 9, 9, 9, 9, 9, 9,
-<a name="l00847"></a>00847 9, 9, 7, 8, 6, 9, 7, 8, 6, 13, 13, 4, 4, 9, 9, 4, 4, 10, 10, 6, 6, 8, 8, 3, 3,
-<a name="l00848"></a>00848 5, 5, 6, 6, 8, 8, 4, 4, 5, 6, 7, 6, 7, 7, 10, 9, 10, 9, 4, 4, 9, 10, 9, 10, 9,
-<a name="l00849"></a>00849 10, 9, 10, 12, 12, 3, 3, 12, 12, 12, 3, 3, 12, 12, 3, 4, 12, 12, 12, 3, 3, 3, 3, 3, 4,
-<a name="l00850"></a>00850 12, 3, 3, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l00851"></a>00851 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l00852"></a>00852 12, 12, 12, 12, 12, 12, 12, 5, 5, 5, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l00853"></a>00853 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 16, 32, 14, 11, 14, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00854"></a>00854 0, 0, 0, 0, 0, 0, 0, 8, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00855"></a>00855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 9, 11, 9, 11,
-<a name="l00856"></a>00856 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9,
-<a name="l00857"></a>00857 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 3, 4, 3, 4, 12, 9, 12, 9, 12, 9, 12, 9, 12, 9, 12,
-<a name="l00858"></a>00858 9, 12, 9, 14, 11, 14, 11, 14, 11, 14, 11, 14, 11, 11, 8, 11, 8, 14, 11, 14, 11, 14, 11, 14, 11,
-<a name="l00859"></a>00859 14, 11, 9, 7, 9, 7, 9, 7, 11, 9, 3, 4, 12, 9, 11, 8, 11, 8, 11, 8, 11, 8, 11, 8, 0,
-<a name="l00860"></a>00860 0, 0, 0, 9, 6, 15, 11, 9, 7, 9, 7, 12, 9, 9, 8, 9, 8, 11, 8, 11, 8, 11, 8, 12, 9,
-<a name="l00861"></a>00861 12, 9, 11, 4, 4, 4, 9, 4, 4, 4, 4, 4, 4, 4, 3, 3, 5, 5, 3, 3, 3, 0, 3, 4, 3,
-<a name="l00862"></a>00862 4, 3, 4, 3, 4, 7, 7, 7, 7, 10, 9, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11,
-<a name="l00863"></a>00863 4, 4, 11, 11, 4, 4, 11, 11, 4, 4, 11, 11, 4, 4, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8,
-<a name="l00864"></a>00864 8, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-<a name="l00865"></a>00865 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 9,
-<a name="l00866"></a>00866 9, 13, 13, 9, 9, 13, 13, 9, 9, 18, 18, 14, 14, 18, 18, 14, 14, 9, 9, 9, 7, 8, 6, 13, 13,
-<a name="l00867"></a>00867 13, 4, 4, 13, 13, 4, 4, 13, 13, 4, 4, 13, 13, 4, 4, 13, 13, 4, 4, 9, 9, 9, 9, 13, 15,
-<a name="l00868"></a>00868 6, 8, 13, 15, 6, 8, 10, 10, 6, 6, 10, 10, 6, 6, 10, 10, 6, 6, 13, 15, 6, 8, 13, 15, 6,
-<a name="l00869"></a>00869 8, 13, 15, 6, 8, 13, 15, 6, 8, 13, 15, 6, 8, 8, 8, 3, 3, 8, 8, 3, 3, 8, 8, 3, 3,
-<a name="l00870"></a>00870 8, 8, 3, 3, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, 9, 8, 8, 8, 5, 6, 6,
-<a name="l00871"></a>00871 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, 9, 10, 9, 4, 4, 7,
-<a name="l00872"></a>00872 7, 10, 9, 4, 4, 10, 9, 13, 13, 13, 13, 3, 0, 0, 0, 0, 0, 0, 0, 18, 17, 0, 0, 0, 0,
-<a name="l00873"></a>00873 0, 0, 3, 6, 0, 0, 10, 0, 0, 0, 13, 13, 9, 9, 18, 18, 14, 14, 9, 7, 8, 6, 7, 5, 5,
-<a name="l00874"></a>00874 4, 5, 4, 4, 4, 4, 4, 13, 15, 3, 0, 5, 6, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10,
-<a name="l00875"></a>00875 9, 10, 8, 8, 9, 10, 17, 34, 13, 0, 5, 5, 5, 6, 9, 9, 15, 11, 3, 6, 6, 7, 10, 5, 6,
-<a name="l00876"></a>00876 5, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 5, 10, 10, 10, 9, 17, 11, 11, 12, 12, 11, 10,
-<a name="l00877"></a>00877 12, 11, 5, 9, 11, 9, 13, 11, 12, 11, 12, 11, 11, 9, 11, 11, 17, 11, 11, 9, 5, 5, 5, 7, 9,
-<a name="l00878"></a>00878 6, 9, 9, 9, 9, 9, 5, 9, 9, 4, 3, 8, 3, 13, 9, 9, 9, 9, 6, 8, 4, 9, 7, 11, 7,
-<a name="l00879"></a>00879 9, 8, 6, 5, 6, 10, 11, 11, 12, 11, 11, 12, 11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5,
-<a name="l00880"></a>00880 5, 5, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 6, 9, 10, 13, 13, 17, 6,
-<a name="l00881"></a>00881 6, 9, 17, 13, 12, 9, 9, 9, 9, 9, 8, 12, 14, 9, 4, 5, 5, 13, 15, 9, 10, 5, 10, 10, 9,
-<a name="l00882"></a>00882 9, 11, 9, 9, 17, 11, 11, 12, 17, 16, 9, 17, 6, 6, 4, 4, 9, 8, 9, 11, 3, 9, 6, 6, 9,
-<a name="l00883"></a>00883 9, 9, 5, 4, 6, 17, 11, 11, 11, 11, 11, 5, 5, 5, 5, 12, 12, 12, 11, 11, 11, 5, 6, 4, 6,
-<a name="l00884"></a>00884 6, 6, 6, 6, 6, 6, 6, 9, 3, 11, 8, 9, 8, 5, 12, 9, 11, 9, 11, 9, 10, 10, 6, 6, 6,
-<a name="l00885"></a>00885 14, 14, 14, 9, 12, 9, 5, 11, 8, 12, 9, 12, 9, 10, 9, 6, 11, 9, 11, 9, 12, 10, 12, 11, 9,
-<a name="l00886"></a>00886 11, 9, 9, 3, 9, 4, 9, 6, 11, 9, 11, 9, 12, 9, 11, 6, 11, 6, 11, 8, 9, 4, 9, 6, 11,
-<a name="l00887"></a>00887 9, 11, 9, 9, 8, 9, 8, 9, 12, 13, 10, 9, 8, 11, 6, 11, 9, 9, 6, 19, 17, 9, 17, 9, 17,
-<a name="l00888"></a>00888 9, 9, 17, 12, 10, 10, 10, 10, 10, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l00889"></a>00889 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l00890"></a>00890 12, 12, 12, 12, 12, 12, 12, 10, 17, 17, 17, 17, 17, 10, 10, 10, 17, 18, 16, 13, 13, 9, 11, 10, 9,
-<a name="l00891"></a>00891 9, 13, 13, 8, 10, 3, 6, 15, 6, 10, 6, 6, 10, 6, 11, 9, 12, 9, 12, 9, 11, 9, 11, 9, 11,
-<a name="l00892"></a>00892 9, 12, 9, 12, 9, 12, 9, 11, 9, 11, 9, 5, 5, 5, 5, 5, 5, 5, 4, 9, 3, 11, 8, 8, 9,
-<a name="l00893"></a>00893 3, 11, 9, 12, 9, 12, 9, 12, 9, 11, 6, 11, 8, 10, 4, 11, 9, 11, 9, 11, 9, 12, 9, 17, 11,
-<a name="l00894"></a>00894 11, 9, 4, 11, 9, 17, 15, 13, 9, 4, 17, 11, 17, 11, 17, 11, 11, 9, 4, 6, 9, 10, 14, 14, 14,
-<a name="l00895"></a>00895 14, 6, 6, 6, 6, 11, 13, 13, 6, 13, 14, 13, 3, 11, 11, 11, 11, 9, 11, 5, 11, 11, 13, 11, 11,
-<a name="l00896"></a>00896 12, 11, 11, 11, 9, 11, 11, 13, 13, 5, 11, 10, 8, 9, 3, 9, 10, 9, 8, 9, 9, 3, 8, 9, 9,
-<a name="l00897"></a>00897 7, 8, 9, 9, 8, 9, 9, 11, 13, 3, 9, 9, 9, 13, 11, 15, 9, 12, 11, 5, 5, 9, 18, 17, 15,
-<a name="l00898"></a>00898 10, 11, 11, 11, 11, 11, 9, 12, 11, 15, 10, 12, 12, 10, 10, 13, 11, 12, 11, 11, 12, 9, 11, 13, 11,
-<a name="l00899"></a>00899 13, 10, 15, 15, 13, 14, 10, 12, 16, 12, 9, 9, 9, 6, 10, 9, 11, 8, 9, 9, 7, 10, 11, 9, 9,
-<a name="l00900"></a>00900 9, 9, 9, 8, 9, 13, 7, 10, 9, 14, 14, 11, 12, 9, 9, 13, 9, 9, 9, 6, 9, 8, 4, 5, 3,
-<a name="l00901"></a>00901 15, 14, 9, 7, 9, 9, 8, 7, 17, 18, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
-<a name="l00902"></a>00902 6, 3, 6, 6, 5, 10, 9, 7, 9, 10, 3, 7, 10, 10, 3, 9, 8, 8, 10, 10, 3, 6, 10, 9, 10,
-<a name="l00903"></a>00903 9, 8, 8, 9, 9, 12, 11, 7, 7, 7, 4, 7, 12, 3, 9, 9, 8, 8, 9, 12, 12, 12, 12, 10, 10,
-<a name="l00904"></a>00904 10, 9, 7, 9, 10, 5, 7, 10, 5, 9, 8, 8, 10, 6, 10, 10, 9, 8, 9, 9, 12, 11, 3, 9, 8,
-<a name="l00905"></a>00905 9, 10, 0, 0, 0, 0, 5, 5, 6, 7, 4, 3, 4, 3, 3, 4, 3, 4, 3, 9, 9, 9, 9, 9, 9,
-<a name="l00906"></a>00906 9, 9, 9, 9, 9, 5, 9, 13, 13, 5, 13, 9, 9, 9, 13, 13, 13, 13, 13, 4, 13, 13, 13, 13, 13,
-<a name="l00907"></a>00907 13, 13, 13, 11, 13, 13, 13, 12, 12, 4, 4, 13, 13, 13, 13, 10, 9, 9, 9, 8, 8, 14, 16, 7, 9,
-<a name="l00908"></a>00908 14, 16, 7, 9, 11, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 4, 4, 4,
-<a name="l00909"></a>00909 4, 4, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 17, 13, 13, 13,
-<a name="l00910"></a>00910 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00911"></a>00911 5, 5, 13, 10, 7, 4, 4, 4, 4, 7, 7, 4, 4, 11, 10, 4, 4, 4, 4, 12, 12, 4, 4, 5, 6,
-<a name="l00912"></a>00912 12, 12, 4, 4, 12, 12, 4, 4, 10, 9, 9, 9, 10, 9, 9, 9, 10, 9, 9, 9, 6, 6, 6, 6, 8,
-<a name="l00913"></a>00913 8, 8, 8, 14, 14, 9, 9, 14, 14, 9, 9, 19, 19, 14, 14, 19, 19, 14, 14, 10, 10, 10, 10, 10, 10,
-<a name="l00914"></a>00914 10, 10, 9, 8, 9, 7, 9, 8, 9, 7, 13, 13, 5, 4, 10, 10, 5, 4, 10, 10, 7, 7, 9, 9, 4,
-<a name="l00915"></a>00915 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 8, 7, 7, 7, 11, 10, 11, 10, 4, 4, 9, 10, 9, 10,
-<a name="l00916"></a>00916 9, 10, 9, 10, 13, 13, 3, 3, 13, 13, 13, 3, 4, 13, 13, 4, 4, 13, 13, 13, 4, 4, 4, 4, 4,
-<a name="l00917"></a>00917 4, 13, 3, 3, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00918"></a>00918 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00919"></a>00919 13, 13, 13, 13, 13, 13, 13, 13, 5, 5, 5, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00920"></a>00920 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 17, 34, 15, 11, 15, 11, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00921"></a>00921 0, 0, 0, 0, 0, 0, 0, 0, 9, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00922"></a>00922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11, 9, 11, 9,
-<a name="l00923"></a>00923 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11,
-<a name="l00924"></a>00924 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 5, 4, 5, 4, 12, 9, 12, 9, 12, 9, 12, 9, 12, 9,
-<a name="l00925"></a>00925 12, 9, 12, 9, 15, 11, 15, 11, 15, 11, 15, 11, 15, 11, 11, 9, 11, 9, 15, 11, 15, 11, 15, 11, 15,
-<a name="l00926"></a>00926 11, 15, 11, 11, 9, 11, 9, 11, 9, 11, 9, 5, 4, 12, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9,
-<a name="l00927"></a>00927 0, 0, 0, 0, 9, 6, 16, 11, 10, 7, 10, 7, 12, 9, 9, 9, 9, 9, 11, 9, 11, 9, 11, 9, 13,
-<a name="l00928"></a>00928 9, 13, 9, 12, 4, 5, 4, 10, 4, 4, 4, 4, 4, 4, 5, 4, 4, 6, 6, 4, 4, 4, 0, 4, 4,
-<a name="l00929"></a>00929 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 11, 10, 12, 12, 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 12,
-<a name="l00930"></a>00930 12, 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 12, 12, 4, 4, 10, 9, 9, 9, 10, 9, 9, 9, 10, 9,
-<a name="l00931"></a>00931 9, 9, 10, 9, 9, 9, 10, 9, 9, 9, 10, 9, 9, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00932"></a>00932 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 14, 14,
-<a name="l00933"></a>00933 9, 9, 14, 14, 9, 9, 14, 14, 9, 9, 19, 19, 14, 14, 19, 19, 14, 14, 10, 10, 9, 8, 9, 7, 13,
-<a name="l00934"></a>00934 13, 13, 5, 4, 13, 13, 5, 4, 13, 13, 5, 4, 13, 13, 5, 4, 13, 13, 5, 4, 10, 10, 10, 10, 14,
-<a name="l00935"></a>00935 16, 7, 9, 14, 16, 7, 9, 10, 10, 7, 7, 10, 10, 7, 7, 10, 10, 7, 7, 14, 16, 7, 9, 14, 16,
-<a name="l00936"></a>00936 7, 9, 14, 16, 7, 9, 14, 16, 7, 9, 14, 16, 7, 9, 9, 9, 4, 4, 9, 9, 4, 4, 9, 9, 4,
-<a name="l00937"></a>00937 4, 9, 9, 4, 4, 9, 9, 4, 4, 9, 9, 9, 9, 9, 9, 4, 4, 9, 9, 10, 9, 9, 9, 5, 6,
-<a name="l00938"></a>00938 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 11, 10, 11, 10, 4, 4,
-<a name="l00939"></a>00939 7, 7, 11, 10, 4, 4, 11, 10, 14, 14, 14, 14, 4, 0, 0, 0, 0, 0, 0, 0, 19, 18, 0, 0, 0,
-<a name="l00940"></a>00940 0, 0, 0, 3, 6, 0, 0, 10, 0, 0, 0, 14, 14, 9, 9, 19, 19, 14, 14, 9, 8, 9, 7, 7, 6,
-<a name="l00941"></a>00941 5, 4, 5, 4, 4, 4, 4, 4, 14, 16, 3, 0, 6, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9,
-<a name="l00942"></a>00942 10, 9, 10, 9, 9, 9, 10, 19, 38, 14, 0, 5, 5, 6, 7, 11, 11, 17, 13, 4, 6, 6, 7, 11, 5,
-<a name="l00943"></a>00943 6, 5, 5, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 5, 11, 11, 11, 11, 19, 13, 13, 14, 14, 13,
-<a name="l00944"></a>00944 12, 15, 13, 6, 10, 13, 11, 15, 13, 15, 13, 15, 14, 13, 12, 13, 13, 19, 13, 12, 12, 5, 5, 5, 7,
-<a name="l00945"></a>00945 11, 6, 10, 11, 10, 11, 11, 6, 11, 10, 4, 4, 9, 4, 16, 10, 11, 11, 11, 6, 10, 5, 10, 9, 13,
-<a name="l00946"></a>00946 9, 9, 9, 6, 6, 6, 11, 13, 13, 14, 13, 13, 15, 13, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11,
-<a name="l00947"></a>00947 6, 6, 6, 6, 10, 11, 11, 11, 11, 11, 10, 10, 10, 10, 11, 8, 11, 11, 11, 7, 10, 12, 14, 14, 19,
-<a name="l00948"></a>00948 6, 6, 10, 19, 15, 14, 10, 10, 10, 11, 11, 9, 14, 16, 10, 4, 7, 7, 15, 17, 11, 12, 6, 11, 11,
-<a name="l00949"></a>00949 11, 10, 12, 11, 11, 19, 13, 13, 15, 19, 18, 11, 19, 7, 7, 4, 4, 10, 9, 9, 12, 3, 11, 6, 6,
-<a name="l00950"></a>00950 10, 10, 11, 5, 4, 7, 17, 13, 13, 13, 13, 13, 6, 6, 6, 6, 15, 15, 15, 13, 13, 13, 6, 6, 5,
-<a name="l00951"></a>00951 6, 6, 6, 6, 6, 6, 6, 6, 11, 4, 13, 10, 12, 9, 6, 14, 11, 12, 9, 13, 11, 11, 11, 6, 6,
-<a name="l00952"></a>00952 6, 16, 16, 16, 11, 15, 11, 6, 13, 10, 14, 10, 14, 10, 11, 11, 6, 13, 10, 13, 10, 14, 12, 14, 13,
-<a name="l00953"></a>00953 11, 13, 11, 11, 4, 11, 6, 11, 6, 13, 10, 13, 10, 15, 11, 14, 6, 14, 6, 13, 10, 12, 6, 12, 7,
-<a name="l00954"></a>00954 13, 10, 13, 10, 12, 9, 12, 9, 10, 15, 14, 11, 11, 8, 12, 8, 12, 11, 10, 7, 21, 19, 10, 19, 10,
-<a name="l00955"></a>00955 19, 10, 10, 19, 14, 11, 11, 11, 11, 11, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00956"></a>00956 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l00957"></a>00957 13, 13, 13, 13, 13, 13, 13, 14, 11, 19, 19, 19, 19, 19, 11, 11, 11, 19, 20, 17, 14, 14, 10, 12, 11,
-<a name="l00958"></a>00958 10, 10, 14, 14, 8, 11, 4, 7, 17, 6, 11, 7, 7, 11, 7, 13, 10, 14, 10, 14, 10, 13, 11, 13, 11,
-<a name="l00959"></a>00959 13, 11, 15, 11, 15, 11, 15, 11, 13, 10, 13, 10, 6, 6, 6, 6, 6, 6, 6, 4, 10, 4, 13, 9, 10,
-<a name="l00960"></a>00960 11, 4, 13, 10, 14, 11, 15, 11, 15, 11, 14, 6, 13, 10, 12, 5, 13, 10, 13, 10, 13, 10, 13, 10, 19,
-<a name="l00961"></a>00961 13, 12, 9, 4, 13, 10, 19, 17, 15, 11, 6, 19, 13, 19, 13, 19, 13, 12, 9, 4, 6, 11, 11, 16, 16,
-<a name="l00962"></a>00962 16, 16, 6, 6, 6, 6, 13, 15, 15, 7, 15, 16, 15, 4, 13, 13, 13, 13, 12, 13, 6, 13, 13, 15, 13,
-<a name="l00963"></a>00963 12, 15, 13, 13, 12, 12, 12, 13, 14, 14, 6, 12, 11, 8, 10, 4, 10, 11, 10, 8, 10, 11, 4, 10, 9,
-<a name="l00964"></a>00964 11, 9, 9, 11, 11, 9, 10, 10, 14, 16, 4, 10, 11, 10, 16, 13, 16, 10, 14, 13, 6, 6, 10, 20, 19,
-<a name="l00965"></a>00965 15, 11, 12, 14, 13, 12, 13, 10, 13, 13, 18, 11, 14, 14, 11, 12, 15, 13, 15, 13, 13, 14, 12, 12, 14,
-<a name="l00966"></a>00966 13, 14, 13, 17, 17, 15, 17, 13, 14, 19, 14, 10, 11, 10, 7, 11, 11, 14, 9, 10, 10, 8, 10, 13, 10,
-<a name="l00967"></a>00967 11, 9, 11, 10, 8, 9, 16, 9, 11, 10, 14, 14, 12, 14, 11, 10, 14, 10, 11, 10, 7, 10, 10, 4, 6,
-<a name="l00968"></a>00968 4, 17, 15, 10, 8, 9, 10, 9, 8, 19, 20, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00969"></a>00969 7, 6, 4, 6, 6, 5, 11, 10, 8, 10, 11, 4, 7, 11, 11, 4, 10, 9, 9, 11, 11, 4, 7, 11, 10,
-<a name="l00970"></a>00970 11, 10, 9, 9, 10, 10, 13, 12, 9, 9, 9, 4, 8, 16, 4, 10, 10, 9, 9, 10, 13, 13, 13, 13, 11,
-<a name="l00971"></a>00971 11, 11, 10, 8, 10, 11, 5, 8, 11, 5, 10, 9, 9, 11, 7, 11, 11, 10, 9, 10, 10, 13, 12, 4, 10,
-<a name="l00972"></a>00972 9, 10, 11, 0, 0, 0, 0, 6, 6, 7, 8, 4, 4, 5, 4, 4, 4, 4, 4, 3, 10, 10, 10, 10, 10,
-<a name="l00973"></a>00973 10, 10, 10, 10, 10, 10, 6, 10, 14, 14, 5, 14, 10, 10, 10, 14, 14, 14, 14, 14, 4, 14, 14, 14, 14,
-<a name="l00974"></a>00974 14, 14, 14, 14, 12, 14, 14, 14, 14, 14, 5, 5, 14, 14, 14, 14, 11, 10, 10, 10, 9, 9, 15, 18, 7,
-<a name="l00975"></a>00975 10, 15, 18, 7, 10, 12, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 4, 4,
-<a name="l00976"></a>00976 4, 4, 4, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19, 14, 14,
-<a name="l00977"></a>00977 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l00978"></a>00978 14, 6, 6, 14, 12, 8, 4, 4, 4, 4, 8, 8, 4, 4, 12, 11, 5, 5, 4, 4, 14, 14, 5, 5, 5,
-<a name="l00979"></a>00979 7, 14, 14, 5, 5, 14, 14, 5, 5, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 6, 6, 6, 6,
-<a name="l00980"></a>00980 9, 9, 9, 9, 16, 16, 10, 10, 16, 16, 10, 10, 21, 21, 16, 16, 21, 21, 16, 16, 11, 11, 11, 11, 11,
-<a name="l00981"></a>00981 11, 11, 11, 10, 9, 10, 7, 10, 9, 10, 7, 15, 15, 5, 5, 11, 11, 5, 5, 11, 11, 7, 7, 10, 10,
-<a name="l00982"></a>00982 4, 4, 6, 6, 7, 7, 10, 10, 5, 5, 5, 7, 9, 7, 8, 8, 12, 11, 12, 11, 5, 5, 10, 11, 10,
-<a name="l00983"></a>00983 11, 10, 11, 10, 11, 14, 14, 4, 4, 14, 14, 14, 3, 4, 14, 14, 4, 5, 14, 14, 14, 4, 4, 4, 4,
-<a name="l00984"></a>00984 4, 4, 14, 4, 4, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l00985"></a>00985 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l00986"></a>00986 14, 14, 14, 14, 14, 14, 14, 14, 14, 6, 6, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l00987"></a>00987 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 19, 38, 16, 12, 16, 13, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00988"></a>00988 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00989"></a>00989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 13, 10, 13,
-<a name="l00990"></a>00990 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 11, 13, 11,
-<a name="l00991"></a>00991 13, 11, 13, 11, 13, 11, 13, 11, 13, 11, 13, 11, 6, 4, 6, 4, 15, 11, 15, 11, 15, 11, 15, 11, 15,
-<a name="l00992"></a>00992 11, 15, 11, 15, 11, 16, 12, 16, 12, 16, 12, 16, 12, 16, 12, 13, 10, 13, 10, 16, 13, 16, 13, 16, 13,
-<a name="l00993"></a>00993 16, 13, 16, 13, 12, 9, 12, 9, 12, 9, 13, 10, 6, 4, 15, 11, 13, 10, 13, 10, 13, 10, 13, 10, 13,
-<a name="l00994"></a>00994 10, 0, 0, 0, 0, 10, 7, 18, 13, 11, 8, 11, 8, 14, 11, 11, 10, 11, 10, 13, 10, 13, 10, 13, 10,
-<a name="l00995"></a>00995 14, 11, 15, 11, 14, 5, 5, 5, 11, 5, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 4, 4, 4, 0, 4,
-<a name="l00996"></a>00996 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 12, 11, 14, 14, 5, 5, 14, 14, 5, 5, 14, 14, 5, 5,
-<a name="l00997"></a>00997 14, 14, 5, 5, 14, 14, 5, 5, 14, 14, 5, 5, 14, 14, 5, 5, 11, 10, 10, 10, 11, 10, 10, 10, 11,
-<a name="l00998"></a>00998 10, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-<a name="l00999"></a>00999 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16,
-<a name="l01000"></a>01000 16, 10, 10, 16, 16, 10, 10, 16, 16, 10, 10, 21, 21, 16, 16, 21, 21, 16, 16, 11, 11, 10, 9, 10, 7,
-<a name="l01001"></a>01001 15, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5, 5, 11, 11, 11, 11,
-<a name="l01002"></a>01002 15, 18, 7, 10, 15, 18, 7, 10, 11, 11, 7, 7, 11, 11, 7, 7, 11, 11, 7, 7, 15, 18, 7, 10, 15,
-<a name="l01003"></a>01003 18, 7, 10, 15, 18, 7, 10, 15, 18, 7, 10, 15, 18, 7, 10, 10, 10, 4, 4, 10, 10, 4, 4, 10, 10,
-<a name="l01004"></a>01004 4, 4, 10, 10, 4, 4, 10, 10, 5, 5, 10, 10, 10, 10, 10, 10, 5, 5, 10, 10, 11, 10, 10, 10, 5,
-<a name="l01005"></a>01005 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 11, 12, 11, 5,
-<a name="l01006"></a>01006 5, 8, 8, 12, 11, 5, 5, 12, 11, 15, 15, 15, 15, 4, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0,
-<a name="l01007"></a>01007 0, 0, 0, 0, 4, 7, 0, 0, 11, 0, 0, 0, 16, 16, 10, 10, 21, 21, 16, 16, 10, 9, 10, 7, 8,
-<a name="l01008"></a>01008 6, 5, 5, 6, 5, 5, 5, 5, 5, 15, 18, 4, 0, 7, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11,
-<a name="l01009"></a>01009 10, 11, 10, 11, 10, 10, 10, 11, 21, 42, 16, 0, 6, 6, 6, 7, 12, 12, 19, 14, 4, 7, 7, 8, 12,
-<a name="l01010"></a>01010 6, 7, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 6, 12, 12, 12, 12, 21, 13, 14, 15, 15,
-<a name="l01011"></a>01011 14, 13, 16, 14, 6, 11, 14, 12, 17, 14, 16, 14, 16, 15, 14, 12, 14, 13, 21, 14, 14, 13, 6, 6, 6,
-<a name="l01012"></a>01012 8, 12, 7, 12, 11, 11, 11, 12, 6, 11, 11, 5, 4, 10, 4, 16, 11, 12, 11, 11, 7, 11, 6, 11, 11,
-<a name="l01013"></a>01013 15, 10, 11, 9, 7, 6, 7, 12, 13, 13, 15, 14, 14, 16, 14, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12,
-<a name="l01014"></a>01014 12, 6, 6, 6, 6, 11, 12, 12, 12, 12, 12, 11, 11, 11, 11, 12, 8, 12, 12, 12, 7, 11, 13, 15, 15,
-<a name="l01015"></a>01015 21, 7, 7, 12, 21, 16, 15, 12, 12, 12, 12, 11, 10, 15, 17, 12, 6, 7, 8, 16, 19, 12, 13, 6, 12,
-<a name="l01016"></a>01016 12, 12, 12, 13, 12, 12, 21, 13, 13, 16, 21, 20, 12, 21, 7, 7, 5, 5, 12, 10, 11, 14, 4, 12, 7,
-<a name="l01017"></a>01017 7, 11, 11, 12, 6, 5, 7, 21, 13, 14, 13, 14, 14, 6, 6, 6, 6, 16, 16, 16, 14, 14, 14, 6, 7,
-<a name="l01018"></a>01018 7, 7, 7, 7, 7, 7, 7, 7, 7, 12, 4, 14, 11, 13, 9, 6, 15, 12, 14, 11, 14, 12, 12, 12, 7,
-<a name="l01019"></a>01019 7, 7, 18, 18, 18, 12, 16, 11, 6, 14, 11, 15, 11, 15, 11, 12, 12, 7, 13, 12, 13, 12, 15, 13, 15,
-<a name="l01020"></a>01020 14, 12, 14, 12, 12, 4, 12, 6, 12, 7, 14, 11, 14, 11, 16, 12, 15, 7, 15, 7, 14, 11, 12, 6, 12,
-<a name="l01021"></a>01021 8, 14, 11, 14, 11, 13, 9, 13, 9, 12, 16, 16, 12, 12, 9, 13, 8, 14, 12, 11, 8, 23, 21, 11, 21,
-<a name="l01022"></a>01022 11, 21, 11, 11, 21, 15, 12, 13, 12, 13, 13, 15, 13, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-<a name="l01023"></a>01023 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-<a name="l01024"></a>01024 15, 15, 15, 15, 15, 15, 15, 15, 15, 13, 21, 21, 21, 21, 21, 13, 13, 13, 21, 22, 19, 16, 16, 11, 14,
-<a name="l01025"></a>01025 12, 11, 11, 16, 15, 9, 13, 4, 7, 19, 7, 13, 7, 7, 13, 7, 13, 12, 15, 11, 15, 11, 14, 12, 14,
-<a name="l01026"></a>01026 12, 14, 12, 16, 11, 16, 11, 16, 12, 14, 11, 14, 11, 6, 6, 6, 6, 6, 6, 6, 5, 11, 4, 14, 10,
-<a name="l01027"></a>01027 10, 12, 4, 14, 11, 15, 12, 16, 12, 16, 12, 15, 7, 14, 11, 13, 6, 14, 11, 14, 11, 14, 11, 14, 11,
-<a name="l01028"></a>01028 21, 15, 14, 11, 5, 13, 12, 21, 19, 16, 12, 6, 21, 15, 21, 15, 21, 15, 14, 11, 5, 7, 12, 13, 18,
-<a name="l01029"></a>01029 18, 18, 18, 7, 7, 7, 7, 13, 16, 17, 8, 16, 17, 16, 4, 13, 14, 14, 14, 13, 14, 6, 14, 14, 17,
-<a name="l01030"></a>01030 14, 14, 16, 14, 14, 13, 12, 14, 14, 18, 16, 6, 14, 12, 9, 11, 4, 10, 12, 10, 9, 11, 12, 4, 10,
-<a name="l01031"></a>01031 11, 11, 11, 9, 12, 12, 10, 10, 11, 14, 16, 4, 10, 12, 10, 16, 14, 18, 11, 15, 14, 6, 6, 11, 22,
-<a name="l01032"></a>01032 21, 18, 12, 13, 15, 13, 14, 14, 11, 14, 14, 19, 13, 15, 15, 12, 14, 17, 14, 16, 14, 14, 15, 12, 13,
-<a name="l01033"></a>01033 16, 14, 16, 14, 18, 20, 17, 19, 14, 15, 21, 15, 12, 12, 11, 8, 12, 12, 14, 10, 11, 11, 9, 11, 13,
-<a name="l01034"></a>01034 11, 12, 10, 11, 11, 10, 11, 17, 10, 12, 11, 16, 16, 13, 15, 11, 11, 16, 11, 12, 12, 8, 11, 11, 5,
-<a name="l01035"></a>01035 6, 4, 19, 17, 12, 9, 11, 11, 10, 9, 21, 23, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l01036"></a>01036 7, 8, 7, 6, 7, 7, 6, 12, 11, 8, 11, 13, 6, 8, 13, 12, 6, 11, 10, 10, 13, 13, 6, 7, 12,
-<a name="l01037"></a>01037 11, 12, 11, 10, 10, 12, 11, 15, 14, 11, 11, 11, 5, 9, 18, 6, 11, 11, 10, 10, 11, 15, 15, 15, 15,
-<a name="l01038"></a>01038 12, 12, 12, 11, 8, 11, 13, 6, 9, 12, 6, 11, 10, 10, 13, 7, 12, 12, 11, 10, 12, 11, 15, 14, 6,
-<a name="l01039"></a>01039 11, 10, 11, 12, 0, 0, 0, 0, 7, 7, 7, 9, 4, 4, 5, 4, 4, 4, 4, 4, 3, 11, 11, 11, 11,
-<a name="l01040"></a>01040 11, 11, 11, 11, 11, 11, 11, 7, 11, 16, 16, 6, 16, 11, 11, 11, 16, 16, 16, 16, 16, 4, 16, 16, 16,
-<a name="l01041"></a>01041 16, 16, 16, 16, 16, 13, 16, 16, 16, 15, 15, 5, 5, 16, 16, 16, 16, 12, 11, 11, 11, 10, 10, 17, 20,
-<a name="l01042"></a>01042 8, 11, 17, 20, 8, 11, 13, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 5,
-<a name="l01043"></a>01043 4, 4, 4, 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 21, 16,
-<a name="l01044"></a>01044 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01045"></a>01045 16, 16, 7, 7, 16, 13, 9, 4, 5, 4, 5, 9, 9, 4, 5, 13, 12, 5, 5, 4, 5, 15, 15, 5, 5,
-<a name="l01046"></a>01046 6, 8, 15, 15, 5, 5, 15, 15, 5, 5, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 7, 7, 7,
-<a name="l01047"></a>01047 7, 10, 10, 10, 10, 17, 17, 11, 11, 17, 17, 11, 11, 23, 23, 18, 18, 23, 23, 18, 18, 12, 12, 12, 12,
-<a name="l01048"></a>01048 12, 12, 12, 12, 11, 9, 11, 8, 11, 9, 11, 8, 17, 17, 6, 6, 12, 12, 6, 6, 13, 13, 8, 8, 11,
-<a name="l01049"></a>01049 11, 4, 4, 7, 7, 8, 8, 11, 11, 5, 5, 6, 8, 9, 8, 9, 9, 13, 12, 13, 12, 5, 5, 11, 13,
-<a name="l01050"></a>01050 11, 13, 11, 13, 11, 13, 16, 16, 4, 4, 16, 16, 16, 3, 4, 16, 16, 4, 5, 16, 16, 16, 4, 4, 4,
-<a name="l01051"></a>01051 4, 4, 5, 16, 4, 4, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01052"></a>01052 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01053"></a>01053 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 7, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01054"></a>01054 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 3, 21, 42, 18, 14, 18, 14, 0, 0, 0, 0, 0, 0,
-<a name="l01055"></a>01055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01056"></a>01056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13, 12,
-<a name="l01057"></a>01057 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 14, 12, 14,
-<a name="l01058"></a>01058 12, 14, 12, 14, 12, 14, 12, 14, 12, 14, 12, 14, 12, 6, 5, 6, 5, 16, 12, 16, 12, 16, 12, 16, 12,
-<a name="l01059"></a>01059 16, 12, 16, 12, 16, 12, 18, 14, 18, 14, 18, 14, 18, 14, 18, 14, 14, 11, 14, 11, 18, 14, 18, 14, 18,
-<a name="l01060"></a>01060 14, 18, 14, 18, 14, 14, 11, 14, 11, 14, 11, 13, 12, 6, 5, 16, 12, 14, 11, 14, 11, 14, 11, 14, 11,
-<a name="l01061"></a>01061 14, 11, 0, 0, 0, 0, 11, 8, 19, 14, 12, 9, 12, 9, 15, 12, 12, 11, 12, 11, 14, 11, 14, 11, 14,
-<a name="l01062"></a>01062 11, 16, 12, 16, 12, 15, 5, 6, 6, 12, 5, 5, 5, 5, 5, 5, 6, 4, 4, 7, 7, 4, 4, 4, 0,
-<a name="l01063"></a>01063 4, 5, 4, 5, 4, 5, 4, 5, 9, 9, 9, 9, 13, 12, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5,
-<a name="l01064"></a>01064 5, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5, 5, 15, 15, 5, 5, 12, 11, 11, 11, 12, 11, 11, 11,
-<a name="l01065"></a>01065 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-<a name="l01066"></a>01066 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l01067"></a>01067 17, 17, 11, 11, 17, 17, 11, 11, 17, 17, 11, 11, 23, 23, 18, 18, 23, 23, 18, 18, 12, 12, 11, 9, 11,
-<a name="l01068"></a>01068 8, 17, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 12, 12, 12,
-<a name="l01069"></a>01069 12, 17, 20, 8, 11, 17, 20, 8, 11, 13, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 8, 17, 20, 8, 11,
-<a name="l01070"></a>01070 17, 20, 8, 11, 17, 20, 8, 11, 17, 20, 8, 11, 17, 20, 8, 11, 11, 11, 4, 4, 11, 11, 4, 4, 11,
-<a name="l01071"></a>01071 11, 4, 4, 11, 11, 4, 4, 11, 11, 5, 5, 11, 11, 11, 11, 11, 11, 5, 5, 11, 11, 12, 11, 11, 11,
-<a name="l01072"></a>01072 6, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 13, 12, 13, 12,
-<a name="l01073"></a>01073 5, 5, 9, 9, 13, 12, 5, 5, 13, 12, 17, 17, 17, 17, 4, 0, 0, 0, 0, 0, 0, 0, 24, 23, 0,
-<a name="l01074"></a>01074 0, 0, 0, 0, 0, 4, 8, 0, 0, 13, 0, 0, 0, 17, 17, 11, 11, 23, 23, 18, 18, 11, 9, 11, 8,
-<a name="l01075"></a>01075 9, 7, 6, 5, 7, 5, 5, 5, 5, 5, 17, 20, 6, 0, 7, 11, 11, 13, 11, 13, 11, 13, 11, 13, 11,
-<a name="l01076"></a>01076 13, 11, 13, 11, 13, 11, 11, 11, 13, 24, 48, 18, 0, 7, 7, 8, 9, 13, 13, 21, 16, 5, 8, 8, 9,
-<a name="l01077"></a>01077 14, 7, 8, 7, 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 7, 7, 14, 14, 14, 13, 24, 15, 16, 17,
-<a name="l01078"></a>01078 17, 16, 15, 19, 17, 6, 12, 16, 13, 19, 17, 19, 16, 19, 17, 16, 14, 17, 15, 23, 15, 16, 15, 7, 7,
-<a name="l01079"></a>01079 7, 12, 13, 8, 13, 14, 12, 14, 13, 7, 14, 14, 5, 6, 12, 6, 20, 14, 13, 14, 14, 8, 12, 7, 14,
-<a name="l01080"></a>01080 11, 17, 11, 12, 12, 8, 6, 8, 14, 15, 15, 17, 16, 17, 19, 17, 13, 13, 13, 13, 13, 13, 12, 13, 13,
-<a name="l01081"></a>01081 13, 13, 6, 6, 6, 6, 14, 13, 13, 13, 13, 13, 14, 14, 14, 14, 13, 10, 13, 13, 13, 8, 13, 15, 18,
-<a name="l01082"></a>01082 18, 24, 8, 8, 13, 24, 19, 17, 13, 13, 13, 13, 14, 12, 17, 20, 13, 6, 9, 9, 18, 21, 15, 15, 8,
-<a name="l01083"></a>01083 14, 13, 13, 13, 15, 13, 13, 24, 15, 15, 19, 24, 23, 13, 24, 8, 8, 5, 5, 13, 12, 12, 16, 4, 13,
-<a name="l01084"></a>01084 8, 8, 12, 12, 13, 7, 5, 8, 26, 15, 16, 15, 16, 16, 6, 6, 6, 6, 19, 19, 19, 17, 17, 17, 6,
-<a name="l01085"></a>01085 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 6, 16, 12, 15, 12, 6, 17, 13, 16, 12, 16, 13, 14, 14,
-<a name="l01086"></a>01086 8, 8, 8, 20, 20, 20, 13, 19, 14, 6, 16, 12, 17, 12, 17, 12, 13, 13, 8, 15, 13, 15, 13, 17, 15,
-<a name="l01087"></a>01087 17, 16, 13, 16, 13, 13, 6, 13, 7, 13, 8, 17, 14, 17, 14, 19, 13, 17, 8, 17, 8, 16, 12, 14, 7,
-<a name="l01088"></a>01088 14, 9, 17, 14, 17, 14, 15, 12, 15, 12, 13, 19, 18, 14, 13, 11, 15, 9, 16, 13, 12, 9, 26, 24, 12,
-<a name="l01089"></a>01089 24, 12, 24, 12, 12, 24, 17, 14, 15, 14, 15, 15, 17, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-<a name="l01090"></a>01090 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-<a name="l01091"></a>01091 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 15, 24, 24, 24, 24, 24, 15, 15, 15, 25, 25, 22, 18, 18, 13,
-<a name="l01092"></a>01092 16, 14, 12, 12, 18, 18, 11, 15, 5, 9, 21, 8, 15, 9, 9, 15, 9, 15, 13, 17, 12, 17, 12, 16, 13,
-<a name="l01093"></a>01093 16, 13, 16, 13, 19, 14, 19, 14, 19, 13, 17, 14, 17, 14, 6, 6, 6, 6, 6, 6, 6, 5, 12, 6, 16,
-<a name="l01094"></a>01094 12, 12, 13, 6, 17, 14, 17, 13, 19, 13, 19, 13, 17, 8, 16, 12, 15, 7, 17, 14, 17, 14, 17, 14, 17,
-<a name="l01095"></a>01095 14, 23, 17, 16, 12, 5, 15, 13, 24, 21, 19, 15, 6, 23, 17, 23, 17, 23, 17, 16, 12, 5, 8, 13, 14,
-<a name="l01096"></a>01096 20, 20, 20, 20, 8, 8, 8, 8, 15, 19, 20, 9, 19, 20, 18, 6, 15, 16, 16, 16, 15, 17, 6, 16, 16,
-<a name="l01097"></a>01097 19, 17, 16, 19, 17, 16, 15, 14, 16, 15, 19, 18, 6, 16, 14, 11, 14, 6, 14, 14, 11, 11, 14, 13, 6,
-<a name="l01098"></a>01098 12, 12, 14, 11, 11, 13, 14, 12, 14, 13, 18, 18, 6, 14, 13, 14, 18, 16, 21, 13, 17, 16, 6, 6, 12,
-<a name="l01099"></a>01099 25, 24, 22, 14, 15, 17, 15, 16, 16, 13, 16, 16, 22, 15, 17, 17, 14, 16, 19, 17, 19, 17, 16, 17, 14,
-<a name="l01100"></a>01100 15, 18, 15, 18, 16, 22, 23, 19, 21, 16, 17, 24, 17, 13, 14, 13, 9, 14, 13, 16, 11, 13, 13, 11, 14,
-<a name="l01101"></a>01101 17, 13, 13, 13, 14, 12, 11, 12, 20, 11, 14, 13, 19, 20, 15, 17, 13, 12, 18, 13, 13, 14, 9, 12, 12,
-<a name="l01102"></a>01102 5, 6, 6, 22, 20, 14, 11, 12, 13, 12, 10, 24, 26, 17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l01103"></a>01103 8, 8, 9, 8, 6, 8, 8, 7, 14, 13, 10, 12, 14, 6, 9, 14, 14, 6, 12, 11, 11, 14, 14, 6, 8,
-<a name="l01104"></a>01104 14, 13, 14, 13, 11, 11, 13, 12, 17, 15, 12, 12, 12, 6, 10, 21, 6, 12, 12, 11, 11, 13, 17, 17, 17,
-<a name="l01105"></a>01105 17, 14, 14, 14, 13, 10, 12, 14, 7, 10, 14, 7, 12, 11, 11, 14, 8, 14, 14, 13, 11, 13, 12, 17, 15,
-<a name="l01106"></a>01106 6, 13, 11, 13, 14, 0, 0, 0, 0, 8, 8, 9, 10, 5, 5, 6, 5, 5, 5, 5, 5, 4, 13, 13, 13,
-<a name="l01107"></a>01107 13, 13, 13, 13, 13, 13, 13, 13, 8, 13, 18, 18, 7, 18, 13, 13, 13, 18, 18, 18, 18, 18, 5, 18, 18,
-<a name="l01108"></a>01108 18, 18, 18, 18, 18, 18, 15, 18, 18, 18, 17, 17, 6, 6, 18, 18, 18, 18, 14, 13, 13, 13, 12, 12, 19,
-<a name="l01109"></a>01109 22, 9, 12, 19, 22, 9, 12, 15, 14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01110"></a>01110 5, 5, 5, 5, 5, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 24,
-<a name="l01111"></a>01111 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01112"></a>01112 18, 18, 18, 8, 8, 18, 15, 10, 5, 6, 5, 6, 10, 10, 5, 6, 15, 14, 6, 6, 5, 6, 17, 17, 6,
-<a name="l01113"></a>01113 6, 7, 9, 17, 17, 6, 6, 17, 17, 6, 6, 14, 13, 13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 8, 8,
-<a name="l01114"></a>01114 8, 8, 12, 12, 12, 12, 20, 20, 13, 13, 20, 20, 13, 13, 26, 26, 20, 20, 26, 26, 20, 20, 14, 14, 14,
-<a name="l01115"></a>01115 14, 14, 14, 14, 14, 13, 11, 13, 9, 13, 11, 13, 9, 19, 19, 6, 6, 14, 14, 6, 6, 14, 14, 9, 9,
-<a name="l01116"></a>01116 12, 12, 5, 5, 8, 8, 9, 9, 13, 13, 6, 6, 7, 9, 11, 9, 10, 10, 15, 14, 15, 14, 6, 6, 13,
-<a name="l01117"></a>01117 14, 13, 14, 13, 14, 13, 14, 18, 18, 5, 5, 18, 18, 18, 4, 5, 18, 18, 5, 6, 18, 18, 18, 5, 5,
-<a name="l01118"></a>01118 5, 5, 5, 5, 18, 5, 5, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01119"></a>01119 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01120"></a>01120 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 8, 8, 8, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01121"></a>01121 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 3, 24, 48, 21, 16, 21, 16, 0, 0, 0, 0, 0,
-<a name="l01122"></a>01122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01123"></a>01123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 15,
-<a name="l01124"></a>01124 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 16, 13,
-<a name="l01125"></a>01125 16, 13, 16, 13, 16, 13, 16, 13, 16, 13, 16, 13, 16, 13, 6, 5, 6, 5, 19, 13, 19, 13, 19, 13, 19,
-<a name="l01126"></a>01126 13, 19, 13, 19, 13, 19, 13, 21, 16, 21, 16, 21, 16, 21, 16, 21, 16, 17, 14, 17, 14, 21, 16, 21, 16,
-<a name="l01127"></a>01127 21, 16, 21, 16, 21, 16, 16, 12, 16, 12, 16, 12, 15, 13, 6, 5, 19, 13, 17, 14, 17, 14, 17, 14, 17,
-<a name="l01128"></a>01128 14, 17, 14, 0, 0, 0, 0, 13, 9, 22, 16, 14, 11, 14, 11, 17, 13, 13, 12, 13, 12, 16, 12, 16, 13,
-<a name="l01129"></a>01129 16, 14, 18, 13, 19, 13, 17, 6, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 5, 5, 8, 8, 5, 5, 5,
-<a name="l01130"></a>01130 0, 5, 6, 5, 6, 5, 6, 5, 6, 10, 10, 10, 10, 15, 14, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17,
-<a name="l01131"></a>01131 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 17, 17, 6, 6, 14, 13, 13, 13, 14, 13, 13,
-<a name="l01132"></a>01132 13, 14, 13, 13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 8, 8, 8, 8, 8, 8, 8, 8,
-<a name="l01133"></a>01133 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-<a name="l01134"></a>01134 12, 20, 20, 13, 13, 20, 20, 13, 13, 20, 20, 13, 13, 26, 26, 20, 20, 26, 26, 20, 20, 14, 14, 13, 11,
-<a name="l01135"></a>01135 13, 9, 19, 19, 19, 6, 6, 19, 19, 6, 6, 19, 19, 6, 6, 19, 19, 6, 6, 19, 19, 6, 6, 14, 14,
-<a name="l01136"></a>01136 14, 14, 19, 22, 9, 12, 19, 22, 9, 12, 14, 14, 9, 9, 14, 14, 9, 9, 14, 14, 9, 9, 19, 22, 9,
-<a name="l01137"></a>01137 12, 19, 22, 9, 12, 19, 22, 9, 12, 19, 22, 9, 12, 19, 22, 9, 12, 12, 12, 5, 5, 12, 12, 5, 5,
-<a name="l01138"></a>01138 12, 12, 5, 5, 12, 12, 5, 5, 13, 13, 6, 6, 13, 13, 13, 13, 13, 13, 6, 6, 13, 13, 14, 13, 13,
-<a name="l01139"></a>01139 13, 7, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 14, 15,
-<a name="l01140"></a>01140 14, 6, 6, 10, 10, 15, 14, 6, 6, 15, 14, 19, 19, 19, 19, 5, 0, 0, 0, 0, 0, 0, 0, 27, 26,
-<a name="l01141"></a>01141 0, 0, 0, 0, 0, 0, 5, 9, 0, 0, 14, 0, 0, 0, 20, 20, 13, 13, 26, 26, 20, 20, 13, 11, 13,
-<a name="l01142"></a>01142 9, 10, 8, 7, 6, 8, 6, 6, 6, 6, 6, 19, 22, 6, 0, 8, 12, 13, 14, 13, 14, 13, 14, 13, 14,
-<a name="l01143"></a>01143 13, 14, 13, 14, 13, 14, 13, 13, 13, 14, 27, 54, 20, 0, 8, 8, 8, 10, 15, 15, 24, 18, 5, 9, 9,
-<a name="l01144"></a>01144 11, 16, 8, 9, 8, 8, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 8, 8, 16, 16, 16, 15, 27, 18, 18,
-<a name="l01145"></a>01145 20, 20, 18, 17, 21, 19, 8, 13, 18, 15, 23, 19, 21, 17, 21, 20, 18, 16, 19, 17, 28, 17, 18, 17, 8,
-<a name="l01146"></a>01146 8, 8, 12, 15, 9, 15, 15, 14, 15, 15, 7, 15, 15, 6, 6, 14, 6, 22, 15, 15, 15, 15, 9, 14, 8,
-<a name="l01147"></a>01147 15, 13, 19, 12, 14, 13, 9, 6, 9, 16, 18, 18, 20, 18, 19, 21, 19, 15, 15, 15, 15, 15, 15, 14, 15,
-<a name="l01148"></a>01148 15, 15, 15, 6, 6, 6, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 11, 15, 15, 15, 9, 15, 17,
-<a name="l01149"></a>01149 20, 20, 27, 9, 9, 15, 27, 21, 19, 15, 15, 15, 15, 16, 13, 19, 22, 15, 7, 10, 10, 21, 24, 17, 17,
-<a name="l01150"></a>01150 8, 16, 15, 15, 15, 17, 15, 15, 27, 18, 18, 21, 27, 25, 15, 27, 9, 9, 6, 6, 15, 13, 14, 18, 5,
-<a name="l01151"></a>01151 15, 9, 9, 14, 14, 15, 8, 6, 9, 29, 18, 18, 18, 18, 18, 8, 8, 8, 8, 21, 21, 21, 19, 19, 19,
-<a name="l01152"></a>01152 6, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 15, 6, 18, 14, 17, 13, 6, 20, 15, 18, 14, 18, 15, 16,
-<a name="l01153"></a>01153 16, 9, 9, 9, 23, 23, 23, 15, 21, 15, 8, 18, 14, 20, 14, 20, 14, 15, 15, 9, 18, 15, 18, 15, 20,
-<a name="l01154"></a>01154 17, 20, 18, 15, 18, 15, 15, 6, 15, 8, 15, 9, 19, 15, 19, 15, 21, 15, 20, 9, 20, 9, 18, 14, 16,
-<a name="l01155"></a>01155 7, 16, 10, 19, 15, 19, 15, 17, 13, 17, 13, 15, 21, 22, 16, 15, 12, 17, 11, 18, 15, 14, 10, 29, 27,
-<a name="l01156"></a>01156 14, 27, 14, 27, 14, 14, 26, 19, 16, 16, 16, 16, 16, 19, 17, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-<a name="l01157"></a>01157 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-<a name="l01158"></a>01158 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 16, 27, 27, 27, 27, 27, 16, 16, 16, 28, 28, 25, 20, 20,
-<a name="l01159"></a>01159 14, 18, 16, 14, 14, 20, 20, 12, 16, 5, 10, 24, 9, 16, 10, 10, 16, 10, 18, 15, 20, 14, 20, 14, 18,
-<a name="l01160"></a>01160 15, 18, 15, 18, 15, 21, 15, 21, 15, 21, 15, 19, 15, 19, 15, 8, 6, 8, 6, 8, 6, 8, 6, 13, 6,
-<a name="l01161"></a>01161 18, 14, 14, 15, 6, 19, 15, 20, 15, 21, 15, 21, 15, 20, 9, 18, 14, 17, 8, 19, 15, 19, 15, 19, 15,
-<a name="l01162"></a>01162 20, 15, 28, 19, 18, 14, 6, 18, 15, 27, 24, 21, 17, 6, 28, 19, 28, 19, 28, 19, 18, 14, 6, 9, 15,
-<a name="l01163"></a>01163 16, 23, 23, 23, 23, 9, 9, 9, 9, 18, 21, 23, 10, 21, 22, 20, 6, 18, 18, 18, 18, 17, 19, 8, 18,
-<a name="l01164"></a>01164 18, 23, 19, 18, 21, 19, 17, 17, 16, 18, 17, 22, 20, 8, 18, 16, 12, 15, 6, 15, 16, 14, 12, 15, 15,
-<a name="l01165"></a>01165 6, 14, 14, 16, 13, 12, 15, 15, 13, 15, 14, 18, 21, 6, 15, 15, 15, 21, 18, 23, 15, 19, 18, 8, 8,
-<a name="l01166"></a>01166 13, 29, 27, 23, 16, 17, 19, 18, 18, 18, 15, 18, 18, 25, 16, 19, 19, 16, 18, 23, 19, 21, 18, 17, 20,
-<a name="l01167"></a>01167 16, 17, 20, 17, 20, 17, 25, 25, 21, 24, 18, 19, 27, 20, 15, 15, 14, 10, 16, 15, 18, 12, 15, 15, 12,
-<a name="l01168"></a>01168 16, 19, 15, 15, 15, 15, 14, 12, 14, 22, 12, 15, 14, 22, 22, 17, 19, 14, 14, 20, 15, 15, 15, 10, 14,
-<a name="l01169"></a>01169 14, 6, 6, 6, 24, 22, 15, 12, 14, 15, 13, 11, 27, 29, 19, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-<a name="l01170"></a>01170 9, 9, 9, 10, 9, 6, 9, 9, 8, 15, 15, 11, 14, 16, 6, 10, 16, 16, 6, 14, 12, 13, 16, 16, 6,
-<a name="l01171"></a>01171 10, 16, 14, 15, 15, 12, 13, 15, 14, 19, 17, 12, 12, 12, 6, 11, 21, 6, 14, 14, 13, 13, 14, 19, 19,
-<a name="l01172"></a>01172 19, 19, 15, 15, 15, 15, 11, 14, 16, 8, 11, 16, 8, 14, 12, 13, 16, 10, 16, 15, 15, 13, 15, 14, 19,
-<a name="l01173"></a>01173 17, 6, 15, 12, 15, 16, 0, 0, 0, 0, 9, 9, 10, 11, 6, 5, 6, 5, 5, 6, 5, 6, 4, 14, 14,
-<a name="l01174"></a>01174 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 20, 20, 8, 20, 14, 14, 14, 20, 20, 20, 20, 20, 6, 20,
-<a name="l01175"></a>01175 20, 20, 20, 20, 20, 20, 20, 17, 20, 20, 20, 19, 19, 7, 7, 20, 20, 20, 20, 15, 14, 14, 14, 13, 13,
-<a name="l01176"></a>01176 22, 25, 11, 14, 22, 25, 11, 14, 17, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01177"></a>01177 20, 6, 6, 6, 6, 6, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
-<a name="l01178"></a>01178 27, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01179"></a>01179 20, 20, 20, 20, 9, 9, 20, 17, 11, 6, 6, 6, 6, 12, 12, 6, 6, 17, 16, 7, 7, 6, 6, 19, 19,
-<a name="l01180"></a>01180 7, 7, 8, 10, 19, 19, 7, 7, 19, 19, 7, 7, 15, 14, 14, 14, 15, 14, 14, 14, 15, 14, 14, 14, 9,
-<a name="l01181"></a>01181 9, 9, 9, 13, 13, 13, 13, 22, 22, 14, 14, 22, 22, 14, 14, 30, 30, 23, 23, 30, 30, 23, 23, 16, 16,
-<a name="l01182"></a>01182 16, 16, 16, 16, 16, 16, 15, 12, 14, 11, 15, 12, 14, 11, 21, 21, 7, 7, 16, 16, 7, 7, 16, 16, 11,
-<a name="l01183"></a>01183 11, 14, 14, 6, 6, 9, 9, 11, 11, 14, 14, 7, 7, 8, 10, 12, 11, 12, 12, 17, 16, 17, 16, 7, 7,
-<a name="l01184"></a>01184 15, 16, 15, 16, 15, 16, 15, 16, 20, 20, 5, 5, 20, 20, 20, 4, 6, 20, 20, 6, 6, 20, 20, 20, 6,
-<a name="l01185"></a>01185 6, 6, 6, 6, 6, 20, 5, 5, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01186"></a>01186 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01187"></a>01187 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 9, 9, 9, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01188"></a>01188 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 3, 27, 54, 23, 18, 23, 18, 0, 0, 0, 0,
-<a name="l01189"></a>01189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01190"></a>01190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-<a name="l01191"></a>01191 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18,
-<a name="l01192"></a>01192 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 8, 6, 8, 6, 21, 15, 21, 15, 21, 15,
-<a name="l01193"></a>01193 21, 15, 21, 15, 21, 15, 21, 15, 23, 18, 23, 18, 23, 18, 23, 18, 23, 18, 19, 15, 19, 15, 23, 18, 23,
-<a name="l01194"></a>01194 18, 23, 18, 23, 18, 23, 18, 18, 14, 18, 14, 18, 14, 18, 15, 8, 6, 21, 15, 19, 15, 19, 15, 19, 15,
-<a name="l01195"></a>01195 19, 15, 19, 15, 0, 0, 0, 0, 15, 10, 25, 18, 16, 12, 16, 12, 20, 15, 15, 14, 15, 14, 18, 14, 18,
-<a name="l01196"></a>01196 14, 18, 15, 20, 15, 21, 15, 19, 7, 7, 7, 16, 7, 7, 7, 7, 7, 7, 7, 6, 6, 9, 9, 6, 6,
-<a name="l01197"></a>01197 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 17, 16, 19, 19, 7, 7, 19, 19, 7, 7, 19,
-<a name="l01198"></a>01198 19, 7, 7, 19, 19, 7, 7, 19, 19, 7, 7, 19, 19, 7, 7, 19, 19, 7, 7, 15, 14, 14, 14, 15, 14,
-<a name="l01199"></a>01199 14, 14, 15, 14, 14, 14, 15, 14, 14, 14, 15, 14, 14, 14, 15, 14, 14, 14, 9, 9, 9, 9, 9, 9, 9,
-<a name="l01200"></a>01200 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-<a name="l01201"></a>01201 13, 13, 22, 22, 14, 14, 22, 22, 14, 14, 22, 22, 14, 14, 30, 30, 23, 23, 30, 30, 23, 23, 16, 16, 15,
-<a name="l01202"></a>01202 12, 14, 11, 21, 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 16,
-<a name="l01203"></a>01203 16, 16, 16, 22, 25, 11, 14, 22, 25, 11, 14, 16, 16, 11, 11, 16, 16, 11, 11, 16, 16, 11, 11, 22, 25,
-<a name="l01204"></a>01204 11, 14, 22, 25, 11, 14, 22, 25, 11, 14, 22, 25, 11, 14, 22, 25, 11, 14, 14, 14, 6, 6, 14, 14, 6,
-<a name="l01205"></a>01205 6, 14, 14, 6, 6, 14, 14, 6, 6, 14, 14, 7, 7, 14, 14, 14, 14, 14, 14, 7, 7, 14, 14, 15, 14,
-<a name="l01206"></a>01206 14, 14, 8, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 16,
-<a name="l01207"></a>01207 17, 16, 7, 7, 12, 12, 17, 16, 7, 7, 17, 16, 22, 22, 22, 22, 6, 0, 0, 0, 0, 0, 0, 0, 30,
-<a name="l01208"></a>01208 29, 0, 0, 0, 0, 0, 0, 5, 10, 0, 0, 16, 0, 0, 0, 22, 22, 14, 14, 30, 30, 23, 23, 15, 12,
-<a name="l01209"></a>01209 14, 11, 11, 9, 8, 7, 9, 7, 7, 7, 7, 7, 22, 25, 6, 0, 9, 12, 15, 16, 15, 16, 15, 16, 15,
-<a name="l01210"></a>01210 16, 15, 16, 15, 16, 15, 16, 14, 14, 15, 16, 29, 58, 22, 0, 8, 8, 9, 10, 16, 16, 26, 19, 6, 10,
-<a name="l01211"></a>01211 10, 11, 17, 8, 10, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 8, 8, 17, 17, 17, 16, 29, 19,
-<a name="l01212"></a>01212 19, 21, 21, 19, 18, 23, 21, 7, 15, 19, 16, 23, 21, 23, 19, 23, 21, 19, 19, 21, 19, 30, 19, 19, 18,
-<a name="l01213"></a>01213 8, 8, 8, 14, 16, 10, 16, 16, 15, 16, 16, 8, 16, 16, 7, 7, 14, 7, 25, 16, 16, 16, 16, 10, 15,
-<a name="l01214"></a>01214 8, 16, 13, 21, 13, 13, 14, 10, 8, 10, 17, 19, 19, 21, 19, 21, 23, 21, 16, 16, 16, 16, 16, 16, 15,
-<a name="l01215"></a>01215 16, 16, 16, 16, 9, 9, 9, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 12, 16, 16, 16, 10, 16,
-<a name="l01216"></a>01216 18, 21, 21, 29, 10, 10, 16, 29, 23, 21, 16, 16, 16, 16, 17, 14, 21, 24, 16, 7, 11, 11, 22, 26, 18,
-<a name="l01217"></a>01217 18, 9, 17, 16, 16, 16, 18, 16, 16, 29, 19, 19, 23, 29, 27, 16, 29, 10, 10, 6, 6, 16, 14, 13, 19,
-<a name="l01218"></a>01218 5, 16, 10, 10, 15, 15, 16, 8, 6, 10, 29, 19, 19, 19, 19, 19, 7, 7, 7, 7, 23, 23, 23, 21, 21,
-<a name="l01219"></a>01219 21, 9, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 16, 6, 19, 15, 18, 14, 8, 21, 16, 19, 13, 19, 16,
-<a name="l01220"></a>01220 17, 17, 10, 10, 10, 24, 24, 24, 16, 23, 16, 7, 19, 15, 21, 15, 21, 15, 16, 16, 10, 19, 16, 19, 16,
-<a name="l01221"></a>01221 21, 18, 21, 19, 16, 19, 16, 16, 7, 16, 9, 16, 10, 21, 16, 21, 16, 23, 16, 21, 10, 21, 10, 19, 15,
-<a name="l01222"></a>01222 19, 8, 19, 11, 21, 16, 21, 16, 18, 14, 18, 14, 16, 23, 22, 17, 16, 13, 18, 12, 18, 16, 15, 11, 31,
-<a name="l01223"></a>01223 29, 15, 29, 15, 29, 15, 15, 28, 21, 17, 18, 17, 18, 18, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-<a name="l01224"></a>01224 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-<a name="l01225"></a>01225 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 29, 29, 29, 29, 29, 18, 18, 18, 30, 31, 27, 22,
-<a name="l01226"></a>01226 22, 15, 19, 17, 15, 15, 22, 21, 13, 18, 5, 10, 26, 9, 18, 10, 10, 18, 10, 19, 16, 21, 15, 21, 15,
-<a name="l01227"></a>01227 19, 16, 19, 16, 19, 16, 23, 16, 23, 16, 23, 16, 21, 16, 21, 16, 7, 9, 7, 9, 7, 9, 7, 7, 15,
-<a name="l01228"></a>01228 7, 19, 14, 15, 16, 7, 21, 16, 21, 16, 23, 16, 23, 16, 21, 10, 19, 15, 18, 8, 21, 16, 21, 16, 21,
-<a name="l01229"></a>01229 16, 21, 16, 30, 21, 19, 13, 7, 19, 16, 29, 26, 23, 18, 8, 30, 21, 30, 21, 30, 21, 19, 13, 6, 10,
-<a name="l01230"></a>01230 16, 17, 24, 24, 24, 24, 10, 10, 10, 10, 19, 23, 24, 11, 22, 24, 22, 7, 19, 19, 19, 19, 18, 21, 7,
-<a name="l01231"></a>01231 19, 19, 23, 21, 19, 23, 21, 19, 18, 19, 19, 19, 23, 22, 7, 19, 17, 13, 16, 7, 16, 17, 14, 13, 16,
-<a name="l01232"></a>01232 16, 7, 15, 15, 17, 13, 13, 16, 17, 14, 16, 15, 21, 23, 7, 16, 16, 16, 23, 19, 25, 16, 21, 19, 7,
-<a name="l01233"></a>01233 7, 15, 31, 29, 25, 17, 18, 21, 19, 19, 19, 16, 20, 19, 27, 18, 21, 21, 17, 19, 23, 21, 23, 21, 19,
-<a name="l01234"></a>01234 21, 19, 18, 22, 19, 21, 19, 27, 27, 23, 26, 19, 21, 29, 21, 16, 17, 15, 11, 17, 16, 20, 13, 16, 16,
-<a name="l01235"></a>01235 13, 17, 20, 16, 16, 16, 16, 15, 13, 13, 24, 13, 17, 15, 23, 24, 18, 21, 15, 15, 22, 16, 16, 16, 11,
-<a name="l01236"></a>01236 15, 15, 7, 9, 7, 26, 24, 16, 13, 13, 16, 14, 12, 29, 31, 20, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-<a name="l01237"></a>01237 10, 10, 10, 10, 11, 10, 7, 10, 10, 8, 16, 16, 12, 15, 17, 7, 11, 17, 17, 7, 15, 13, 13, 17, 17,
-<a name="l01238"></a>01238 7, 10, 17, 15, 16, 16, 13, 14, 16, 15, 20, 19, 14, 14, 14, 7, 12, 25, 7, 15, 15, 13, 13, 16, 20,
-<a name="l01239"></a>01239 20, 20, 20, 16, 16, 16, 16, 12, 15, 17, 8, 12, 17, 8, 15, 13, 13, 17, 10, 17, 16, 16, 14, 16, 15,
-<a name="l01240"></a>01240 20, 19, 7, 16, 13, 16, 17, 0, 0, 0, 0, 9, 9, 10, 12, 6, 6, 7, 6, 6, 6, 6, 6, 5, 15,
-<a name="l01241"></a>01241 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 9, 15, 22, 22, 8, 22, 15, 15, 15, 22, 22, 22, 22, 22, 6,
-<a name="l01242"></a>01242 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 21, 21, 7, 7, 22, 22, 22, 22, 16, 15, 15, 15, 14,
-<a name="l01243"></a>01243 14, 24, 27, 11, 15, 24, 27, 11, 15, 19, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01244"></a>01244 22, 22, 7, 6, 6, 6, 6, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01245"></a>01245 16, 29, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01246"></a>01246 22, 22, 22, 22, 22, 9, 9, 22, 18, 12, 6, 7, 6, 7, 13, 13, 6, 7, 19, 17, 7, 7, 6, 7, 21,
-<a name="l01247"></a>01247 21, 7, 7, 8, 11, 21, 21, 7, 7, 21, 21, 7, 7, 16, 15, 15, 15, 16, 15, 15, 15, 16, 15, 15, 15,
-<a name="l01248"></a>01248 10, 10, 10, 10, 14, 14, 14, 14, 24, 24, 15, 15, 24, 24, 15, 15, 32, 32, 25, 25, 32, 32, 25, 25, 17,
-<a name="l01249"></a>01249 17, 17, 17, 17, 17, 17, 17, 16, 13, 15, 11, 16, 13, 15, 11, 23, 23, 8, 8, 17, 17, 8, 8, 17, 17,
-<a name="l01250"></a>01250 11, 11, 15, 15, 6, 6, 10, 10, 11, 11, 15, 15, 7, 7, 8, 11, 13, 11, 13, 13, 19, 17, 19, 17, 7,
-<a name="l01251"></a>01251 7, 16, 17, 16, 17, 16, 17, 16, 17, 22, 22, 6, 6, 22, 22, 22, 5, 6, 22, 22, 6, 7, 22, 22, 22,
-<a name="l01252"></a>01252 6, 6, 6, 6, 6, 7, 22, 6, 6, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01253"></a>01253 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01254"></a>01254 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 9, 9, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01255"></a>01255 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 4, 29, 58, 25, 19, 25, 19, 0, 0, 0,
-<a name="l01256"></a>01256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01257"></a>01257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01258"></a>01258 7, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16,
-<a name="l01259"></a>01259 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 19, 16, 7, 7, 7, 7, 23, 16, 23, 16, 23,
-<a name="l01260"></a>01260 16, 23, 16, 23, 16, 23, 16, 23, 16, 25, 19, 25, 19, 25, 19, 25, 19, 25, 19, 21, 16, 21, 16, 25, 19,
-<a name="l01261"></a>01261 25, 19, 25, 19, 25, 19, 25, 19, 19, 13, 19, 13, 19, 13, 19, 16, 7, 7, 23, 16, 21, 16, 21, 16, 21,
-<a name="l01262"></a>01262 16, 21, 16, 21, 16, 0, 0, 0, 0, 16, 11, 27, 19, 17, 13, 17, 13, 21, 16, 16, 15, 16, 15, 19, 15,
-<a name="l01263"></a>01263 19, 15, 19, 16, 22, 16, 23, 16, 21, 7, 8, 8, 17, 7, 7, 7, 7, 7, 7, 8, 6, 6, 10, 10, 6,
-<a name="l01264"></a>01264 6, 6, 0, 6, 7, 6, 7, 6, 7, 6, 7, 13, 13, 13, 13, 19, 17, 21, 21, 7, 7, 21, 21, 7, 7,
-<a name="l01265"></a>01265 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 21, 21, 7, 7, 16, 15, 15, 15, 16,
-<a name="l01266"></a>01266 15, 15, 15, 16, 15, 15, 15, 16, 15, 15, 15, 16, 15, 15, 15, 16, 15, 15, 15, 10, 10, 10, 10, 10, 10,
-<a name="l01267"></a>01267 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l01268"></a>01268 14, 14, 14, 24, 24, 15, 15, 24, 24, 15, 15, 24, 24, 15, 15, 32, 32, 25, 25, 32, 32, 25, 25, 17, 17,
-<a name="l01269"></a>01269 16, 13, 15, 11, 23, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8,
-<a name="l01270"></a>01270 17, 17, 17, 17, 24, 27, 11, 15, 24, 27, 11, 15, 17, 17, 11, 11, 17, 17, 11, 11, 17, 17, 11, 11, 24,
-<a name="l01271"></a>01271 27, 11, 15, 24, 27, 11, 15, 24, 27, 11, 15, 24, 27, 11, 15, 24, 27, 11, 15, 15, 15, 6, 6, 15, 15,
-<a name="l01272"></a>01272 6, 6, 15, 15, 6, 6, 15, 15, 6, 6, 15, 15, 7, 7, 15, 15, 15, 15, 15, 15, 7, 7, 15, 15, 16,
-<a name="l01273"></a>01273 15, 15, 15, 8, 11, 11, 11, 11, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 19,
-<a name="l01274"></a>01274 17, 19, 17, 7, 7, 13, 13, 19, 17, 7, 7, 19, 17, 24, 24, 24, 24, 6, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01275"></a>01275 33, 31, 0, 0, 0, 0, 0, 0, 6, 11, 0, 0, 17, 0, 0, 0, 24, 24, 15, 15, 32, 32, 25, 25, 16,
-<a name="l01276"></a>01276 13, 15, 11, 12, 10, 8, 7, 9, 7, 7, 7, 7, 7, 24, 27, 7, 0, 10, 14, 16, 17, 16, 17, 16, 17,
-<a name="l01277"></a>01277 16, 17, 16, 17, 16, 17, 16, 17, 15, 15, 16, 17, 32, 64, 24, 0, 9, 9, 11, 11, 18, 18, 28, 21, 6,
-<a name="l01278"></a>01278 11, 11, 12, 19, 9, 11, 9, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 9, 9, 19, 19, 19, 18, 32,
-<a name="l01279"></a>01279 21, 21, 23, 23, 21, 20, 25, 23, 9, 16, 21, 18, 27, 23, 25, 21, 25, 23, 21, 19, 23, 21, 32, 21, 21,
-<a name="l01280"></a>01280 20, 9, 9, 9, 14, 18, 11, 17, 17, 16, 17, 17, 10, 17, 18, 7, 7, 16, 7, 27, 18, 17, 17, 17, 11,
-<a name="l01281"></a>01281 16, 9, 18, 15, 23, 14, 15, 15, 11, 8, 11, 19, 21, 21, 23, 21, 23, 25, 23, 17, 17, 17, 17, 17, 17,
-<a name="l01282"></a>01282 16, 17, 17, 17, 17, 9, 9, 9, 9, 18, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 13, 18, 18, 18, 11,
-<a name="l01283"></a>01283 17, 20, 24, 24, 32, 11, 11, 18, 32, 25, 23, 18, 18, 18, 18, 18, 16, 23, 26, 18, 7, 12, 12, 25, 28,
-<a name="l01284"></a>01284 20, 20, 11, 19, 17, 18, 18, 20, 18, 18, 32, 21, 21, 25, 32, 30, 18, 32, 11, 11, 7, 7, 18, 16, 15,
-<a name="l01285"></a>01285 21, 5, 18, 11, 11, 16, 16, 18, 9, 7, 11, 32, 21, 21, 21, 21, 21, 9, 9, 9, 9, 25, 25, 25, 23,
-<a name="l01286"></a>01286 23, 23, 9, 11, 9, 11, 11, 11, 11, 11, 11, 11, 11, 18, 7, 21, 16, 20, 15, 8, 23, 18, 21, 15, 21,
-<a name="l01287"></a>01287 18, 19, 19, 11, 11, 11, 27, 27, 27, 18, 25, 17, 9, 21, 16, 23, 16, 23, 16, 18, 18, 11, 21, 17, 21,
-<a name="l01288"></a>01288 17, 23, 20, 23, 21, 17, 21, 17, 18, 7, 18, 9, 18, 11, 23, 18, 23, 18, 25, 17, 23, 11, 23, 11, 21,
-<a name="l01289"></a>01289 16, 19, 9, 19, 12, 23, 18, 23, 18, 20, 15, 20, 15, 18, 25, 26, 19, 18, 14, 20, 13, 21, 18, 16, 12,
-<a name="l01290"></a>01290 35, 32, 16, 32, 16, 32, 16, 16, 31, 23, 19, 19, 19, 19, 19, 23, 20, 23, 23, 23, 23, 23, 23, 23, 23,
-<a name="l01291"></a>01291 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
-<a name="l01292"></a>01292 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 19, 32, 32, 32, 32, 32, 19, 19, 19, 33, 34, 29,
-<a name="l01293"></a>01293 24, 24, 17, 21, 19, 16, 16, 24, 24, 14, 19, 6, 11, 28, 10, 19, 11, 11, 19, 11, 21, 17, 23, 16, 23,
-<a name="l01294"></a>01294 16, 21, 17, 21, 17, 21, 17, 25, 17, 25, 17, 25, 18, 23, 18, 23, 18, 9, 9, 9, 9, 9, 9, 9, 7,
-<a name="l01295"></a>01295 16, 7, 21, 16, 16, 18, 7, 23, 18, 23, 18, 25, 17, 25, 17, 23, 11, 21, 16, 20, 9, 23, 18, 23, 18,
-<a name="l01296"></a>01296 23, 18, 23, 18, 32, 23, 21, 15, 7, 21, 17, 32, 28, 25, 20, 9, 32, 23, 32, 23, 32, 23, 21, 15, 7,
-<a name="l01297"></a>01297 11, 18, 19, 27, 27, 27, 27, 11, 11, 11, 11, 21, 25, 27, 12, 25, 26, 24, 7, 21, 21, 21, 21, 20, 23,
-<a name="l01298"></a>01298 9, 21, 21, 27, 23, 21, 25, 23, 21, 20, 19, 21, 21, 27, 24, 9, 21, 19, 14, 18, 7, 18, 18, 16, 14,
-<a name="l01299"></a>01299 18, 17, 7, 16, 16, 18, 15, 14, 17, 17, 14, 18, 17, 23, 24, 7, 18, 17, 18, 24, 21, 28, 17, 23, 21,
-<a name="l01300"></a>01300 9, 9, 16, 34, 32, 27, 19, 20, 23, 21, 20, 21, 17, 22, 21, 30, 19, 23, 23, 19, 21, 27, 23, 25, 23,
-<a name="l01301"></a>01301 21, 23, 19, 20, 24, 21, 24, 21, 29, 30, 25, 28, 21, 23, 32, 23, 17, 17, 16, 12, 19, 17, 22, 15, 18,
-<a name="l01302"></a>01302 18, 14, 19, 22, 18, 17, 17, 17, 16, 15, 15, 25, 14, 18, 17, 26, 26, 19, 23, 17, 16, 24, 17, 17, 18,
-<a name="l01303"></a>01303 12, 16, 16, 7, 9, 7, 28, 25, 18, 14, 15, 18, 16, 13, 32, 34, 22, 11, 11, 11, 11, 11, 11, 11, 11,
-<a name="l01304"></a>01304 11, 11, 11, 11, 11, 12, 11, 7, 11, 11, 9, 18, 17, 13, 16, 19, 7, 12, 19, 19, 7, 16, 15, 15, 19,
-<a name="l01305"></a>01305 19, 7, 11, 18, 17, 18, 17, 15, 15, 18, 16, 22, 21, 15, 15, 15, 8, 13, 28, 7, 16, 16, 15, 15, 17,
-<a name="l01306"></a>01306 22, 22, 22, 22, 18, 18, 18, 17, 13, 16, 19, 9, 13, 19, 9, 16, 15, 15, 19, 11, 18, 18, 17, 15, 18,
-<a name="l01307"></a>01307 16, 22, 21, 7, 17, 15, 17, 18, 0, 0, 0, 0, 10, 10, 11, 13, 7, 6, 8, 6, 6, 7, 6, 7, 5,
-<a name="l01308"></a>01308 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 10, 17, 24, 24, 9, 24, 17, 17, 17, 24, 24, 24, 24, 24,
-<a name="l01309"></a>01309 7, 24, 24, 24, 24, 24, 24, 24, 24, 20, 24, 24, 24, 23, 23, 8, 8, 24, 24, 24, 24, 18, 17, 17, 17,
-<a name="l01310"></a>01310 16, 16, 26, 30, 13, 16, 26, 30, 13, 16, 20, 19, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01311"></a>01311 24, 24, 24, 7, 7, 7, 7, 7, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01312"></a>01312 0, 18, 32, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01313"></a>01313 24, 24, 24, 24, 24, 24, 10, 10, 24, 20, 13, 7, 7, 7, 7, 14, 14, 7, 7, 20, 19, 8, 8, 7, 7,
-<a name="l01314"></a>01314 23, 23, 8, 8, 9, 12, 23, 23, 8, 8, 23, 23, 8, 8, 18, 17, 17, 17, 18, 17, 17, 17, 18, 17, 17,
-<a name="l01315"></a>01315 17, 11, 11, 11, 11, 16, 16, 16, 16, 26, 26, 17, 17, 26, 26, 17, 17, 35, 35, 27, 27, 35, 35, 27, 27,
-<a name="l01316"></a>01316 19, 19, 19, 19, 19, 19, 19, 19, 17, 14, 17, 13, 17, 14, 17, 13, 25, 25, 9, 8, 19, 19, 9, 8, 19,
-<a name="l01317"></a>01317 19, 13, 13, 16, 16, 7, 7, 11, 11, 13, 13, 17, 17, 8, 8, 9, 12, 14, 13, 14, 14, 20, 19, 20, 19,
-<a name="l01318"></a>01318 8, 8, 17, 19, 17, 19, 17, 19, 17, 19, 24, 24, 6, 6, 24, 24, 24, 5, 7, 24, 24, 7, 8, 24, 24,
-<a name="l01319"></a>01319 24, 7, 7, 7, 7, 7, 7, 24, 6, 6, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01320"></a>01320 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01321"></a>01321 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 10, 10, 10, 24, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01322"></a>01322 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 4, 32, 64, 27, 21, 27, 21, 0, 0,
-<a name="l01323"></a>01323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01324"></a>01324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01325"></a>01325 0, 7, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21,
-<a name="l01326"></a>01326 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 21, 17, 9, 7, 9, 7, 25, 17, 25, 17,
-<a name="l01327"></a>01327 25, 17, 25, 17, 25, 17, 25, 17, 25, 17, 27, 21, 27, 21, 27, 21, 27, 21, 27, 21, 23, 18, 23, 18, 27,
-<a name="l01328"></a>01328 21, 27, 21, 27, 21, 27, 21, 27, 21, 21, 15, 21, 15, 21, 15, 21, 17, 9, 7, 25, 17, 23, 18, 23, 18,
-<a name="l01329"></a>01329 23, 18, 23, 18, 23, 18, 0, 0, 0, 0, 17, 12, 30, 21, 19, 14, 19, 14, 23, 18, 18, 16, 18, 16, 21,
-<a name="l01330"></a>01330 16, 21, 17, 21, 18, 24, 18, 25, 18, 23, 8, 9, 8, 19, 8, 8, 8, 8, 8, 8, 9, 7, 7, 11, 11,
-<a name="l01331"></a>01331 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 20, 19, 23, 23, 8, 8, 23, 23, 8,
-<a name="l01332"></a>01332 8, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8, 23, 23, 8, 8, 18, 17, 17, 17,
-<a name="l01333"></a>01333 18, 17, 17, 17, 18, 17, 17, 17, 18, 17, 17, 17, 18, 17, 17, 17, 18, 17, 17, 17, 11, 11, 11, 11, 11,
-<a name="l01334"></a>01334 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01335"></a>01335 16, 16, 16, 16, 26, 26, 17, 17, 26, 26, 17, 17, 26, 26, 17, 17, 35, 35, 27, 27, 35, 35, 27, 27, 19,
-<a name="l01336"></a>01336 19, 17, 14, 17, 13, 25, 25, 25, 9, 8, 25, 25, 9, 8, 25, 25, 9, 8, 25, 25, 9, 8, 25, 25, 9,
-<a name="l01337"></a>01337 8, 19, 19, 19, 19, 26, 30, 13, 16, 26, 30, 13, 16, 19, 19, 13, 13, 19, 19, 13, 13, 19, 19, 13, 13,
-<a name="l01338"></a>01338 26, 30, 13, 16, 26, 30, 13, 16, 26, 30, 13, 16, 26, 30, 13, 16, 26, 30, 13, 16, 16, 16, 7, 7, 16,
-<a name="l01339"></a>01339 16, 7, 7, 16, 16, 7, 7, 16, 16, 7, 7, 17, 17, 8, 8, 17, 17, 17, 17, 17, 17, 8, 8, 17, 17,
-<a name="l01340"></a>01340 18, 17, 17, 17, 9, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l01341"></a>01341 20, 19, 20, 19, 8, 8, 14, 14, 20, 19, 8, 8, 20, 19, 26, 26, 26, 26, 7, 0, 0, 0, 0, 0, 0,
-<a name="l01342"></a>01342 0, 36, 35, 0, 0, 0, 0, 0, 0, 6, 12, 0, 0, 19, 0, 0, 0, 26, 26, 17, 17, 35, 35, 27, 27,
-<a name="l01343"></a>01343 17, 14, 17, 13, 13, 11, 9, 8, 10, 8, 8, 8, 8, 8, 26, 30, 7, 0, 11, 15, 17, 19, 17, 19, 17,
-<a name="l01344"></a>01344 19, 17, 19, 17, 19, 17, 19, 17, 19, 17, 17, 17, 19, 33, 66, 25, 0, 9, 9, 11, 12, 18, 18, 29, 22,
-<a name="l01345"></a>01345 6, 11, 11, 13, 19, 9, 11, 9, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 9, 9, 19, 19, 19, 18,
-<a name="l01346"></a>01346 34, 22, 22, 24, 24, 22, 20, 26, 24, 9, 17, 22, 18, 27, 24, 26, 22, 26, 24, 22, 21, 24, 22, 34, 21,
-<a name="l01347"></a>01347 21, 20, 9, 9, 9, 14, 18, 11, 17, 18, 17, 18, 17, 10, 18, 18, 7, 7, 16, 7, 27, 18, 17, 18, 18,
-<a name="l01348"></a>01348 11, 17, 9, 18, 15, 23, 15, 15, 16, 11, 8, 11, 19, 22, 22, 24, 22, 24, 26, 24, 17, 17, 17, 17, 17,
-<a name="l01349"></a>01349 17, 17, 17, 17, 17, 17, 9, 9, 9, 9, 18, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 13, 18, 18, 18,
-<a name="l01350"></a>01350 12, 18, 20, 24, 24, 33, 11, 11, 18, 33, 26, 24, 18, 18, 18, 18, 19, 16, 24, 27, 18, 7, 12, 12, 25,
-<a name="l01351"></a>01351 29, 20, 20, 11, 19, 19, 18, 18, 20, 18, 18, 33, 22, 22, 26, 33, 31, 18, 33, 11, 11, 7, 7, 18, 16,
-<a name="l01352"></a>01352 15, 21, 6, 18, 11, 11, 17, 17, 18, 9, 7, 11, 32, 22, 22, 22, 22, 22, 9, 9, 9, 9, 26, 26, 26,
-<a name="l01353"></a>01353 24, 24, 24, 9, 11, 9, 11, 11, 11, 11, 11, 11, 11, 11, 18, 7, 22, 17, 20, 16, 8, 24, 18, 21, 15,
-<a name="l01354"></a>01354 22, 18, 19, 19, 11, 11, 11, 28, 28, 28, 18, 26, 18, 9, 22, 17, 24, 17, 24, 17, 18, 18, 11, 22, 17,
-<a name="l01355"></a>01355 22, 17, 24, 20, 24, 22, 17, 22, 17, 18, 7, 18, 10, 18, 11, 24, 18, 24, 18, 26, 17, 24, 11, 24, 11,
-<a name="l01356"></a>01356 22, 17, 21, 9, 21, 12, 24, 18, 24, 18, 20, 16, 20, 16, 18, 26, 26, 19, 18, 14, 20, 13, 21, 18, 17,
-<a name="l01357"></a>01357 12, 36, 33, 17, 33, 17, 33, 17, 17, 32, 24, 19, 20, 19, 20, 20, 23, 21, 23, 23, 23, 23, 23, 23, 23,
-<a name="l01358"></a>01358 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
-<a name="l01359"></a>01359 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 20, 33, 33, 33, 33, 33, 20, 20, 20, 34, 35,
-<a name="l01360"></a>01360 30, 25, 25, 18, 22, 20, 17, 17, 25, 24, 15, 20, 6, 12, 29, 11, 20, 12, 12, 20, 12, 22, 17, 24, 17,
-<a name="l01361"></a>01361 24, 17, 22, 17, 22, 17, 22, 17, 26, 18, 26, 18, 26, 18, 24, 18, 24, 18, 9, 9, 9, 9, 9, 9, 9,
-<a name="l01362"></a>01362 7, 17, 7, 22, 16, 17, 18, 7, 24, 18, 24, 18, 26, 17, 26, 17, 24, 11, 22, 17, 20, 9, 24, 18, 24,
-<a name="l01363"></a>01363 18, 24, 18, 24, 18, 34, 23, 21, 15, 7, 22, 17, 33, 29, 26, 20, 9, 34, 23, 34, 23, 34, 23, 21, 15,
-<a name="l01364"></a>01364 7, 11, 18, 20, 28, 28, 28, 28, 11, 11, 11, 11, 22, 26, 28, 13, 26, 27, 25, 7, 22, 22, 22, 22, 20,
-<a name="l01365"></a>01365 24, 9, 22, 22, 27, 24, 21, 26, 24, 22, 20, 21, 21, 21, 27, 25, 9, 21, 19, 14, 18, 7, 18, 19, 17,
-<a name="l01366"></a>01366 15, 18, 17, 7, 17, 17, 19, 15, 15, 17, 18, 15, 18, 17, 23, 25, 7, 18, 17, 18, 25, 22, 29, 18, 24,
-<a name="l01367"></a>01367 22, 9, 9, 17, 35, 33, 28, 19, 21, 24, 22, 21, 22, 18, 22, 22, 30, 20, 24, 24, 19, 22, 27, 24, 26,
-<a name="l01368"></a>01368 24, 22, 24, 21, 21, 25, 21, 24, 22, 30, 31, 26, 29, 22, 24, 33, 24, 17, 18, 17, 12, 19, 17, 21, 15,
-<a name="l01369"></a>01369 18, 18, 14, 19, 23, 18, 17, 18, 18, 17, 15, 15, 26, 15, 19, 17, 26, 27, 20, 24, 18, 17, 25, 18, 17,
-<a name="l01370"></a>01370 18, 12, 17, 17, 7, 9, 7, 29, 26, 18, 14, 15, 18, 16, 14, 33, 35, 23, 11, 11, 11, 11, 11, 11, 11,
-<a name="l01371"></a>01371 11, 11, 11, 11, 11, 11, 13, 11, 7, 11, 11, 9, 19, 18, 13, 17, 20, 7, 13, 20, 19, 7, 17, 15, 15,
-<a name="l01372"></a>01372 20, 20, 7, 12, 19, 17, 19, 18, 15, 16, 18, 17, 23, 21, 15, 15, 15, 8, 14, 28, 7, 17, 17, 15, 15,
-<a name="l01373"></a>01373 18, 23, 23, 23, 23, 19, 19, 19, 18, 13, 17, 20, 9, 14, 19, 9, 17, 15, 15, 20, 12, 19, 19, 18, 16,
-<a name="l01374"></a>01374 18, 17, 23, 21, 7, 18, 15, 18, 19, 0, 0, 0, 0, 11, 11, 12, 14, 7, 7, 8, 7, 7, 7, 7, 7,
-<a name="l01375"></a>01375 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11, 17, 25, 25, 9, 25, 17, 17, 17, 25, 25, 25, 25,
-<a name="l01376"></a>01376 25, 7, 25, 25, 25, 25, 25, 25, 25, 25, 21, 25, 25, 25, 24, 24, 8, 8, 25, 25, 25, 25, 19, 17, 17,
-<a name="l01377"></a>01377 17, 16, 16, 27, 31, 13, 17, 27, 31, 13, 17, 21, 19, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01378"></a>01378 25, 25, 25, 25, 7, 7, 7, 7, 7, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01379"></a>01379 0, 0, 18, 33, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01380"></a>01380 25, 25, 25, 25, 25, 25, 25, 11, 11, 25, 20, 14, 7, 8, 7, 8, 14, 14, 7, 8, 21, 19, 8, 8, 7,
-<a name="l01381"></a>01381 8, 24, 24, 8, 8, 9, 12, 24, 24, 8, 8, 24, 24, 8, 8, 19, 17, 17, 17, 19, 17, 17, 17, 19, 17,
-<a name="l01382"></a>01382 17, 17, 11, 11, 11, 11, 16, 16, 16, 16, 27, 27, 18, 18, 27, 27, 18, 18, 36, 36, 28, 28, 36, 36, 28,
-<a name="l01383"></a>01383 28, 19, 19, 19, 19, 19, 19, 19, 19, 18, 15, 17, 13, 18, 15, 17, 13, 26, 26, 9, 9, 19, 19, 9, 9,
-<a name="l01384"></a>01384 20, 20, 13, 13, 17, 17, 7, 7, 11, 11, 13, 13, 17, 17, 8, 8, 9, 12, 15, 13, 14, 14, 21, 19, 21,
-<a name="l01385"></a>01385 19, 8, 8, 18, 20, 18, 20, 18, 20, 18, 20, 25, 25, 7, 7, 25, 25, 25, 5, 7, 25, 25, 7, 8, 25,
-<a name="l01386"></a>01386 25, 25, 7, 7, 7, 7, 7, 7, 25, 7, 7, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01387"></a>01387 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01388"></a>01388 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 11, 11, 11, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01389"></a>01389 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 4, 33, 66, 28, 22, 28, 22, 0,
-<a name="l01390"></a>01390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 28, 28, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01391"></a>01391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01392"></a>01392 0, 0, 7, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17,
-<a name="l01393"></a>01393 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 22, 17, 9, 7, 9, 7, 26, 17, 26,
-<a name="l01394"></a>01394 17, 26, 17, 26, 17, 26, 17, 26, 17, 26, 17, 28, 22, 28, 22, 28, 22, 28, 22, 28, 22, 24, 18, 24, 18,
-<a name="l01395"></a>01395 28, 22, 28, 22, 28, 22, 28, 22, 28, 22, 21, 15, 21, 15, 21, 15, 22, 17, 9, 7, 26, 17, 24, 18, 24,
-<a name="l01396"></a>01396 18, 24, 18, 24, 18, 24, 18, 0, 0, 0, 0, 18, 12, 30, 22, 19, 14, 19, 14, 24, 18, 18, 17, 18, 17,
-<a name="l01397"></a>01397 22, 17, 22, 17, 22, 18, 25, 18, 26, 18, 24, 8, 9, 9, 19, 8, 8, 8, 8, 8, 8, 9, 7, 7, 11,
-<a name="l01398"></a>01398 11, 7, 7, 7, 0, 7, 8, 7, 8, 7, 8, 7, 8, 14, 14, 14, 14, 21, 19, 24, 24, 8, 8, 24, 24,
-<a name="l01399"></a>01399 8, 8, 24, 24, 8, 8, 24, 24, 8, 8, 24, 24, 8, 8, 24, 24, 8, 8, 24, 24, 8, 8, 19, 17, 17,
-<a name="l01400"></a>01400 17, 19, 17, 17, 17, 19, 17, 17, 17, 19, 17, 17, 17, 19, 17, 17, 17, 19, 17, 17, 17, 11, 11, 11, 11,
-<a name="l01401"></a>01401 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01402"></a>01402 16, 16, 16, 16, 16, 27, 27, 18, 18, 27, 27, 18, 18, 27, 27, 18, 18, 36, 36, 28, 28, 36, 36, 28, 28,
-<a name="l01403"></a>01403 19, 19, 18, 15, 17, 13, 26, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26,
-<a name="l01404"></a>01404 9, 9, 19, 19, 19, 19, 27, 31, 13, 17, 27, 31, 13, 17, 20, 20, 13, 13, 20, 20, 13, 13, 20, 20, 13,
-<a name="l01405"></a>01405 13, 27, 31, 13, 17, 27, 31, 13, 17, 27, 31, 13, 17, 27, 31, 13, 17, 27, 31, 13, 17, 17, 17, 7, 7,
-<a name="l01406"></a>01406 17, 17, 7, 7, 17, 17, 7, 7, 17, 17, 7, 7, 17, 17, 8, 8, 17, 17, 17, 17, 17, 17, 8, 8, 17,
-<a name="l01407"></a>01407 17, 19, 17, 17, 17, 9, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-<a name="l01408"></a>01408 14, 21, 19, 21, 19, 8, 8, 14, 14, 21, 19, 8, 8, 21, 19, 27, 27, 27, 27, 7, 0, 0, 0, 0, 0,
-<a name="l01409"></a>01409 0, 0, 37, 36, 0, 0, 0, 0, 0, 0, 6, 12, 0, 0, 20, 0, 0, 0, 27, 27, 18, 18, 36, 36, 28,
-<a name="l01410"></a>01410 28, 18, 15, 17, 13, 14, 11, 9, 8, 11, 8, 8, 8, 8, 8, 27, 31, 7, 0, 11, 15, 18, 20, 18, 20,
-<a name="l01411"></a>01411 18, 20, 18, 20, 18, 20, 18, 20, 18, 20, 17, 17, 18, 20, 37, 74, 28, 0, 10, 10, 11, 13, 21, 21, 33,
-<a name="l01412"></a>01412 25, 7, 12, 12, 14, 22, 10, 12, 10, 10, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 10, 10, 22, 22, 22,
-<a name="l01413"></a>01413 21, 38, 25, 25, 27, 27, 25, 23, 29, 27, 9, 19, 25, 21, 31, 27, 29, 25, 29, 27, 25, 23, 27, 25, 38,
-<a name="l01414"></a>01414 25, 23, 23, 10, 10, 10, 17, 21, 12, 20, 21, 19, 21, 20, 10, 21, 21, 7, 9, 19, 7, 31, 21, 21, 21,
-<a name="l01415"></a>01415 21, 12, 18, 10, 21, 17, 27, 17, 17, 18, 12, 9, 12, 22, 25, 25, 27, 25, 27, 29, 27, 20, 20, 20, 20,
-<a name="l01416"></a>01416 20, 20, 19, 20, 20, 20, 20, 9, 9, 9, 9, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 15, 21, 21,
-<a name="l01417"></a>01417 21, 13, 20, 23, 27, 27, 37, 12, 12, 20, 37, 29, 26, 20, 20, 20, 21, 21, 18, 26, 30, 20, 9, 14, 14,
-<a name="l01418"></a>01418 28, 33, 23, 23, 11, 22, 21, 21, 20, 23, 21, 21, 37, 25, 25, 29, 37, 35, 21, 37, 12, 12, 8, 8, 20,
-<a name="l01419"></a>01419 18, 17, 23, 6, 21, 12, 12, 19, 19, 21, 10, 8, 12, 37, 25, 25, 25, 25, 25, 9, 9, 9, 9, 29, 29,
-<a name="l01420"></a>01420 29, 27, 27, 27, 9, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 21, 8, 25, 18, 23, 18, 9, 27, 21, 23,
-<a name="l01421"></a>01421 17, 25, 21, 22, 22, 12, 12, 12, 31, 31, 31, 21, 29, 21, 9, 25, 18, 27, 19, 27, 19, 21, 20, 12, 25,
-<a name="l01422"></a>01422 20, 25, 20, 27, 23, 27, 25, 20, 25, 20, 21, 7, 21, 11, 21, 12, 27, 21, 27, 21, 29, 21, 27, 12, 27,
-<a name="l01423"></a>01423 12, 25, 18, 23, 10, 23, 14, 27, 21, 27, 21, 23, 18, 23, 18, 20, 29, 30, 21, 21, 17, 23, 15, 24, 20,
-<a name="l01424"></a>01424 19, 14, 40, 37, 19, 37, 19, 37, 19, 19, 36, 27, 22, 22, 22, 22, 22, 26, 23, 26, 26, 26, 26, 26, 26,
-<a name="l01425"></a>01425 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-<a name="l01426"></a>01426 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 22, 37, 37, 37, 37, 37, 22, 22, 22, 38,
-<a name="l01427"></a>01427 39, 34, 28, 28, 20, 24, 22, 19, 19, 28, 27, 16, 22, 7, 13, 33, 12, 22, 13, 13, 22, 13, 25, 20, 27,
-<a name="l01428"></a>01428 19, 27, 19, 25, 20, 25, 20, 25, 20, 29, 21, 29, 21, 29, 21, 27, 21, 27, 21, 9, 9, 9, 9, 9, 9,
-<a name="l01429"></a>01429 9, 7, 19, 9, 25, 19, 19, 21, 7, 27, 21, 27, 21, 29, 21, 29, 21, 27, 12, 25, 18, 23, 10, 27, 21,
-<a name="l01430"></a>01430 27, 21, 27, 21, 27, 21, 38, 27, 23, 17, 7, 25, 20, 37, 33, 29, 23, 9, 38, 27, 38, 27, 38, 27, 23,
-<a name="l01431"></a>01431 17, 8, 12, 21, 22, 31, 31, 31, 31, 12, 12, 12, 12, 25, 29, 31, 14, 29, 30, 28, 8, 25, 25, 25, 25,
-<a name="l01432"></a>01432 23, 27, 9, 25, 25, 31, 27, 24, 29, 27, 25, 23, 23, 23, 25, 30, 28, 9, 23, 21, 17, 21, 8, 20, 21,
-<a name="l01433"></a>01433 19, 16, 21, 21, 8, 19, 19, 21, 17, 17, 21, 21, 18, 20, 19, 26, 29, 8, 20, 21, 20, 29, 25, 32, 20,
-<a name="l01434"></a>01434 27, 25, 9, 9, 19, 39, 37, 32, 22, 24, 27, 25, 24, 25, 20, 25, 25, 34, 22, 27, 27, 22, 24, 31, 27,
-<a name="l01435"></a>01435 29, 27, 25, 27, 23, 24, 28, 25, 27, 25, 34, 35, 29, 33, 24, 27, 37, 27, 20, 21, 20, 14, 22, 20, 25,
-<a name="l01436"></a>01436 17, 21, 21, 16, 22, 25, 20, 21, 20, 21, 19, 17, 17, 30, 17, 21, 19, 30, 30, 23, 27, 20, 19, 28, 20,
-<a name="l01437"></a>01437 20, 21, 14, 19, 18, 7, 9, 9, 34, 30, 21, 16, 17, 20, 18, 15, 37, 40, 26, 12, 12, 12, 12, 12, 12,
-<a name="l01438"></a>01438 12, 12, 12, 12, 12, 12, 12, 14, 12, 9, 12, 12, 10, 21, 20, 15, 19, 22, 9, 14, 22, 22, 9, 19, 17,
-<a name="l01439"></a>01439 17, 22, 22, 9, 13, 21, 20, 21, 20, 17, 18, 20, 19, 26, 24, 18, 18, 18, 9, 15, 30, 9, 19, 19, 17,
-<a name="l01440"></a>01440 17, 20, 26, 26, 26, 26, 21, 21, 21, 20, 15, 19, 22, 11, 15, 22, 11, 19, 17, 17, 22, 13, 21, 21, 20,
-<a name="l01441"></a>01441 18, 20, 19, 26, 24, 9, 20, 17, 20, 21, 0, 0, 0, 0, 12, 12, 13, 15, 8, 7, 9, 7, 7, 8, 7,
-<a name="l01442"></a>01442 8, 6, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 12, 19, 28, 28, 10, 28, 19, 19, 19, 28, 28, 28,
-<a name="l01443"></a>01443 28, 28, 8, 28, 28, 28, 28, 28, 28, 28, 28, 24, 28, 28, 28, 26, 26, 9, 9, 28, 28, 28, 28, 21, 19,
-<a name="l01444"></a>01444 20, 20, 18, 18, 30, 35, 15, 19, 30, 35, 15, 19, 24, 22, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-<a name="l01445"></a>01445 28, 28, 28, 28, 28, 8, 8, 8, 8, 8, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01446"></a>01446 0, 0, 0, 21, 37, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-<a name="l01447"></a>01447 28, 28, 28, 28, 28, 28, 28, 28, 12, 12, 28, 23, 15, 8, 8, 8, 8, 16, 16, 8, 8, 24, 22, 9, 9,
-<a name="l01448"></a>01448 8, 8, 26, 26, 9, 9, 10, 14, 26, 26, 9, 9, 26, 26, 9, 9, 21, 19, 20, 20, 21, 19, 20, 20, 21,
-<a name="l01449"></a>01449 19, 20, 20, 12, 12, 12, 12, 18, 18, 18, 18, 30, 30, 20, 20, 30, 30, 20, 20, 41, 41, 31, 31, 41, 41,
-<a name="l01450"></a>01450 31, 31, 22, 22, 22, 22, 22, 22, 22, 22, 20, 17, 19, 15, 20, 17, 19, 15, 29, 29, 10, 10, 22, 22, 10,
-<a name="l01451"></a>01451 10, 22, 22, 15, 15, 19, 19, 8, 8, 13, 13, 15, 15, 19, 19, 9, 9, 10, 14, 17, 15, 16, 16, 24, 22,
-<a name="l01452"></a>01452 24, 22, 9, 9, 20, 22, 20, 22, 20, 22, 20, 22, 28, 28, 7, 7, 28, 28, 28, 6, 8, 28, 28, 8, 9,
-<a name="l01453"></a>01453 28, 28, 28, 8, 8, 8, 8, 8, 8, 28, 7, 7, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-<a name="l01454"></a>01454 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-<a name="l01455"></a>01455 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 12, 12, 12, 28, 28, 28, 28, 28, 28,
-<a name="l01456"></a>01456 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 5, 37, 74, 32, 24, 32, 25,
-<a name="l01457"></a>01457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 0, 0, 0, 0, 0, 0,
-<a name="l01458"></a>01458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01459"></a>01459 0, 0, 0, 7, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25,
-<a name="l01460"></a>01460 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 25, 20, 9, 7, 9, 7, 29, 21,
-<a name="l01461"></a>01461 29, 21, 29, 21, 29, 21, 29, 21, 29, 21, 29, 21, 32, 24, 32, 24, 32, 24, 32, 24, 32, 24, 27, 21, 27,
-<a name="l01462"></a>01462 21, 32, 25, 32, 25, 32, 25, 32, 25, 32, 25, 23, 17, 23, 17, 23, 17, 25, 20, 9, 7, 29, 21, 27, 21,
-<a name="l01463"></a>01463 27, 21, 27, 21, 27, 21, 27, 21, 0, 0, 0, 0, 20, 14, 34, 25, 22, 16, 22, 16, 27, 20, 21, 19, 21,
-<a name="l01464"></a>01464 19, 25, 19, 25, 19, 25, 21, 28, 21, 29, 21, 26, 9, 10, 10, 22, 9, 9, 9, 9, 9, 9, 10, 8, 8,
-<a name="l01465"></a>01465 12, 12, 8, 8, 8, 0, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 24, 22, 26, 26, 9, 9, 26,
-<a name="l01466"></a>01466 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 26, 26, 9, 9, 21, 19,
-<a name="l01467"></a>01467 20, 20, 21, 19, 20, 20, 21, 19, 20, 20, 21, 19, 20, 20, 21, 19, 20, 20, 21, 19, 20, 20, 12, 12, 12,
-<a name="l01468"></a>01468 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01469"></a>01469 18, 18, 18, 18, 18, 18, 30, 30, 20, 20, 30, 30, 20, 20, 30, 30, 20, 20, 41, 41, 31, 31, 41, 41, 31,
-<a name="l01470"></a>01470 31, 22, 22, 20, 17, 19, 15, 29, 29, 29, 10, 10, 29, 29, 10, 10, 29, 29, 10, 10, 29, 29, 10, 10, 29,
-<a name="l01471"></a>01471 29, 10, 10, 22, 22, 22, 22, 30, 35, 15, 19, 30, 35, 15, 19, 22, 22, 15, 15, 22, 22, 15, 15, 22, 22,
-<a name="l01472"></a>01472 15, 15, 30, 35, 15, 19, 30, 35, 15, 19, 30, 35, 15, 19, 30, 35, 15, 19, 30, 35, 15, 19, 19, 19, 8,
-<a name="l01473"></a>01473 8, 19, 19, 8, 8, 19, 19, 8, 8, 19, 19, 8, 8, 19, 19, 9, 9, 19, 19, 19, 19, 19, 19, 9, 9,
-<a name="l01474"></a>01474 19, 19, 21, 19, 20, 20, 10, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-<a name="l01475"></a>01475 16, 16, 24, 22, 24, 22, 9, 9, 16, 16, 24, 22, 9, 9, 24, 22, 30, 30, 30, 30, 8, 0, 0, 0, 0,
-<a name="l01476"></a>01476 0, 0, 0, 42, 40, 0, 0, 0, 0, 0, 0, 7, 14, 0, 0, 22, 0, 0, 0, 30, 30, 20, 20, 41, 41,
-<a name="l01477"></a>01477 31, 31, 20, 17, 19, 15, 15, 13, 10, 9, 12, 9, 9, 9, 9, 9, 30, 35, 9, 0, 13, 18, 20, 22, 20,
-<a name="l01478"></a>01478 22, 20, 22, 20, 22, 20, 22, 20, 22, 20, 22, 19, 19, 20, 22, 42, 84, 32, 0, 12, 12, 14, 15, 23, 23,
-<a name="l01479"></a>01479 37, 28, 8, 14, 14, 16, 25, 12, 14, 12, 12, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 12, 12, 25, 25,
-<a name="l01480"></a>01480 25, 23, 43, 28, 28, 30, 30, 28, 26, 33, 30, 12, 21, 28, 23, 35, 30, 33, 28, 33, 30, 28, 26, 30, 28,
-<a name="l01481"></a>01481 42, 27, 28, 26, 12, 12, 12, 19, 23, 14, 23, 23, 21, 23, 23, 13, 23, 23, 10, 10, 21, 10, 36, 23, 23,
-<a name="l01482"></a>01482 23, 23, 14, 20, 12, 23, 23, 29, 22, 21, 21, 14, 11, 14, 25, 28, 28, 30, 28, 30, 33, 30, 23, 23, 23,
-<a name="l01483"></a>01483 23, 23, 23, 21, 23, 23, 23, 23, 12, 12, 12, 12, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, 23,
-<a name="l01484"></a>01484 23, 23, 15, 23, 26, 31, 31, 42, 14, 14, 23, 42, 33, 30, 23, 23, 23, 23, 24, 21, 30, 35, 23, 10, 16,
-<a name="l01485"></a>01485 15, 32, 37, 26, 26, 14, 25, 23, 23, 23, 26, 23, 23, 42, 28, 28, 33, 42, 40, 23, 42, 14, 14, 9, 9,
-<a name="l01486"></a>01486 23, 21, 21, 28, 7, 23, 14, 14, 21, 21, 23, 12, 9, 14, 43, 28, 28, 28, 28, 28, 12, 12, 12, 12, 33,
-<a name="l01487"></a>01487 33, 33, 30, 30, 30, 12, 14, 13, 14, 14, 14, 14, 14, 14, 14, 14, 23, 9, 28, 20, 26, 21, 11, 30, 23,
-<a name="l01488"></a>01488 28, 21, 28, 23, 25, 25, 14, 14, 14, 35, 35, 35, 23, 33, 23, 12, 28, 20, 30, 21, 30, 21, 23, 23, 14,
-<a name="l01489"></a>01489 28, 23, 28, 23, 30, 26, 30, 28, 23, 28, 23, 23, 10, 23, 12, 23, 14, 30, 23, 30, 23, 33, 23, 30, 14,
-<a name="l01490"></a>01490 30, 14, 28, 20, 26, 12, 26, 16, 30, 23, 30, 23, 26, 21, 26, 21, 23, 33, 34, 24, 23, 19, 26, 17, 27,
-<a name="l01491"></a>01491 23, 21, 15, 46, 42, 21, 42, 21, 42, 21, 21, 41, 30, 25, 25, 25, 25, 25, 30, 26, 30, 30, 30, 30, 30,
-<a name="l01492"></a>01492 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-<a name="l01493"></a>01493 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 25, 42, 42, 42, 42, 42, 25, 25, 25,
-<a name="l01494"></a>01494 43, 44, 39, 32, 32, 22, 28, 25, 21, 21, 32, 31, 19, 25, 8, 15, 37, 14, 25, 15, 15, 25, 15, 28, 23,
-<a name="l01495"></a>01495 30, 21, 30, 21, 28, 23, 28, 23, 28, 23, 33, 23, 33, 23, 33, 23, 30, 23, 30, 23, 12, 12, 12, 12, 12,
-<a name="l01496"></a>01496 12, 12, 10, 21, 10, 28, 21, 21, 23, 10, 30, 23, 30, 23, 33, 23, 33, 23, 30, 14, 28, 20, 26, 12, 30,
-<a name="l01497"></a>01497 23, 30, 23, 30, 23, 30, 23, 42, 29, 28, 21, 10, 28, 23, 42, 37, 33, 26, 12, 42, 29, 42, 29, 42, 29,
-<a name="l01498"></a>01498 28, 21, 9, 14, 23, 25, 35, 35, 35, 35, 14, 14, 14, 14, 28, 33, 35, 16, 33, 35, 32, 10, 28, 28, 28,
-<a name="l01499"></a>01499 28, 26, 30, 12, 28, 28, 35, 30, 27, 33, 30, 28, 26, 26, 28, 27, 35, 31, 12, 28, 24, 19, 23, 10, 23,
-<a name="l01500"></a>01500 24, 21, 19, 23, 23, 10, 21, 21, 24, 23, 19, 23, 24, 20, 23, 22, 30, 33, 10, 23, 23, 23, 33, 28, 36,
-<a name="l01501"></a>01501 23, 30, 28, 12, 12, 21, 44, 42, 36, 24, 27, 30, 28, 28, 28, 23, 28, 28, 39, 25, 30, 30, 24, 28, 35,
-<a name="l01502"></a>01502 30, 33, 30, 28, 30, 26, 27, 32, 27, 31, 28, 39, 39, 33, 37, 28, 30, 42, 30, 23, 24, 22, 15, 25, 23,
-<a name="l01503"></a>01503 28, 19, 23, 23, 18, 25, 29, 23, 23, 23, 23, 21, 19, 21, 35, 22, 24, 22, 34, 35, 26, 30, 22, 21, 32,
-<a name="l01504"></a>01504 23, 23, 23, 15, 21, 20, 10, 12, 10, 38, 34, 23, 18, 21, 23, 21, 17, 42, 45, 29, 14, 14, 14, 14, 14,
-<a name="l01505"></a>01505 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 10, 14, 14, 12, 24, 23, 17, 21, 25, 10, 16, 25, 25, 10, 21,
-<a name="l01506"></a>01506 19, 19, 25, 25, 10, 15, 24, 22, 24, 23, 19, 20, 23, 21, 29, 27, 20, 20, 20, 10, 18, 37, 10, 21, 21,
-<a name="l01507"></a>01507 19, 19, 22, 29, 29, 29, 29, 24, 24, 24, 23, 17, 21, 25, 12, 17, 25, 12, 21, 19, 19, 25, 15, 24, 24,
-<a name="l01508"></a>01508 23, 20, 23, 21, 29, 27, 10, 23, 19, 23, 24, 0, 0, 0, 0, 13, 13, 15, 17, 9, 8, 10, 8, 8, 9,
-<a name="l01509"></a>01509 8, 9, 7, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 13, 22, 32, 32, 12, 32, 22, 22, 22, 32, 32,
-<a name="l01510"></a>01510 32, 32, 32, 9, 32, 32, 32, 32, 32, 32, 32, 32, 27, 32, 32, 32, 30, 30, 10, 10, 32, 32, 32, 32, 24,
-<a name="l01511"></a>01511 22, 22, 22, 21, 21, 34, 39, 17, 22, 34, 39, 17, 22, 27, 25, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01512"></a>01512 32, 32, 32, 32, 32, 32, 10, 9, 9, 9, 9, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01513"></a>01513 0, 0, 0, 0, 23, 42, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01514"></a>01514 32, 32, 32, 32, 32, 32, 32, 32, 32, 13, 13, 32, 26, 17, 9, 10, 9, 10, 18, 18, 9, 10, 27, 25, 10,
-<a name="l01515"></a>01515 10, 9, 10, 30, 30, 10, 10, 12, 16, 30, 30, 10, 10, 30, 30, 10, 10, 24, 22, 22, 22, 24, 22, 22, 22,
-<a name="l01516"></a>01516 24, 22, 22, 22, 14, 14, 14, 14, 21, 21, 21, 21, 35, 35, 22, 22, 35, 35, 22, 22, 46, 46, 36, 36, 46,
-<a name="l01517"></a>01517 46, 36, 36, 24, 24, 24, 24, 24, 24, 24, 24, 23, 19, 22, 17, 23, 19, 22, 17, 33, 33, 11, 11, 24, 24,
-<a name="l01518"></a>01518 11, 11, 25, 25, 17, 17, 21, 21, 9, 9, 14, 14, 17, 17, 22, 22, 10, 10, 12, 16, 19, 17, 18, 18, 27,
-<a name="l01519"></a>01519 25, 27, 25, 10, 10, 23, 25, 23, 25, 23, 25, 23, 25, 32, 32, 8, 8, 32, 32, 32, 7, 9, 32, 32, 9,
-<a name="l01520"></a>01520 10, 32, 32, 32, 9, 9, 9, 9, 9, 10, 32, 8, 8, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01521"></a>01521 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01522"></a>01522 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 13, 13, 13, 32, 32, 32, 32, 32,
-<a name="l01523"></a>01523 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 5, 42, 84, 36, 28, 36,
-<a name="l01524"></a>01524 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 35, 35, 0, 0, 0, 0, 0,
-<a name="l01525"></a>01525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01526"></a>01526 0, 0, 0, 0, 10, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23,
-<a name="l01527"></a>01527 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 28, 23, 12, 10, 12, 10, 33,
-<a name="l01528"></a>01528 23, 33, 23, 33, 23, 33, 23, 33, 23, 33, 23, 33, 23, 36, 28, 36, 28, 36, 28, 36, 28, 36, 28, 30, 23,
-<a name="l01529"></a>01529 30, 23, 36, 28, 36, 28, 36, 28, 36, 28, 36, 28, 28, 21, 28, 21, 28, 21, 28, 23, 12, 10, 33, 23, 30,
-<a name="l01530"></a>01530 23, 30, 23, 30, 23, 30, 23, 30, 23, 0, 0, 0, 0, 23, 15, 39, 28, 24, 18, 24, 18, 30, 23, 23, 21,
-<a name="l01531"></a>01531 23, 21, 28, 21, 28, 22, 28, 23, 32, 23, 33, 23, 30, 10, 11, 11, 24, 10, 10, 10, 10, 10, 10, 11, 9,
-<a name="l01532"></a>01532 9, 14, 14, 9, 9, 9, 0, 9, 10, 9, 10, 9, 10, 9, 10, 18, 18, 18, 18, 27, 25, 30, 30, 10, 10,
-<a name="l01533"></a>01533 30, 30, 10, 10, 30, 30, 10, 10, 30, 30, 10, 10, 30, 30, 10, 10, 30, 30, 10, 10, 30, 30, 10, 10, 24,
-<a name="l01534"></a>01534 22, 22, 22, 24, 22, 22, 22, 24, 22, 22, 22, 24, 22, 22, 22, 24, 22, 22, 22, 24, 22, 22, 22, 14, 14,
-<a name="l01535"></a>01535 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-<a name="l01536"></a>01536 21, 21, 21, 21, 21, 21, 21, 35, 35, 22, 22, 35, 35, 22, 22, 35, 35, 22, 22, 46, 46, 36, 36, 46, 46,
-<a name="l01537"></a>01537 36, 36, 24, 24, 23, 19, 22, 17, 33, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11,
-<a name="l01538"></a>01538 33, 33, 11, 11, 24, 24, 24, 24, 34, 39, 17, 22, 34, 39, 17, 22, 25, 25, 17, 17, 25, 25, 17, 17, 25,
-<a name="l01539"></a>01539 25, 17, 17, 34, 39, 17, 22, 34, 39, 17, 22, 34, 39, 17, 22, 34, 39, 17, 22, 34, 39, 17, 22, 21, 21,
-<a name="l01540"></a>01540 9, 9, 21, 21, 9, 9, 21, 21, 9, 9, 21, 21, 9, 9, 22, 22, 10, 10, 22, 22, 22, 22, 22, 22, 10,
-<a name="l01541"></a>01541 10, 22, 22, 24, 22, 22, 22, 12, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-<a name="l01542"></a>01542 18, 18, 18, 27, 25, 27, 25, 10, 10, 18, 18, 27, 25, 10, 10, 27, 25, 34, 34, 34, 34, 9, 0, 0, 0,
-<a name="l01543"></a>01543 0, 0, 0, 0, 47, 46, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 25, 0, 0, 0, 35, 35, 22, 22, 46,
-<a name="l01544"></a>01544 46, 36, 36, 23, 19, 22, 17, 17, 14, 12, 10, 13, 10, 10, 10, 10, 10, 34, 39, 10, 0, 14, 20, 23, 25,
-<a name="l01545"></a>01545 23, 25, 23, 25, 23, 25, 23, 25, 23, 25, 23, 25, 22, 22, 23, 25, 46, 92, 35, 0, 13, 13, 14, 16, 26,
-<a name="l01546"></a>01546 26, 41, 31, 9, 15, 15, 18, 27, 13, 15, 13, 13, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 13, 13, 27,
-<a name="l01547"></a>01547 27, 27, 26, 47, 31, 31, 33, 33, 31, 28, 36, 33, 12, 23, 31, 26, 37, 33, 36, 31, 36, 33, 31, 28, 33,
-<a name="l01548"></a>01548 31, 46, 31, 30, 28, 13, 13, 13, 21, 26, 15, 26, 26, 23, 26, 26, 14, 26, 26, 10, 10, 23, 10, 38, 26,
-<a name="l01549"></a>01549 26, 26, 26, 15, 23, 13, 26, 23, 33, 23, 23, 23, 15, 11, 15, 27, 31, 31, 33, 31, 33, 36, 33, 26, 26,
-<a name="l01550"></a>01550 26, 26, 26, 26, 23, 26, 26, 26, 26, 12, 12, 12, 12, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18,
-<a name="l01551"></a>01551 26, 26, 26, 16, 25, 28, 34, 34, 46, 15, 15, 25, 46, 36, 33, 25, 25, 25, 26, 27, 23, 33, 38, 25, 15,
-<a name="l01552"></a>01552 17, 17, 35, 41, 28, 28, 14, 27, 25, 26, 25, 28, 26, 26, 46, 31, 31, 36, 46, 43, 26, 46, 15, 15, 10,
-<a name="l01553"></a>01553 10, 25, 23, 23, 30, 8, 26, 15, 15, 23, 23, 26, 13, 10, 15, 46, 31, 31, 31, 31, 31, 12, 12, 12, 12,
-<a name="l01554"></a>01554 36, 36, 36, 33, 33, 33, 12, 15, 13, 15, 15, 15, 15, 15, 15, 15, 15, 26, 10, 31, 23, 28, 23, 11, 33,
-<a name="l01555"></a>01555 26, 30, 23, 31, 26, 27, 27, 15, 15, 15, 38, 38, 38, 26, 36, 26, 12, 31, 23, 33, 23, 33, 23, 26, 25,
-<a name="l01556"></a>01556 15, 31, 26, 31, 26, 33, 28, 33, 31, 26, 31, 26, 26, 10, 26, 13, 26, 15, 33, 26, 33, 26, 36, 26, 33,
-<a name="l01557"></a>01557 15, 33, 15, 31, 23, 28, 13, 28, 17, 33, 26, 33, 26, 28, 23, 28, 23, 25, 36, 37, 27, 26, 21, 28, 18,
-<a name="l01558"></a>01558 30, 25, 23, 17, 50, 46, 23, 46, 23, 46, 23, 23, 45, 33, 27, 28, 27, 28, 28, 33, 29, 33, 33, 33, 33,
-<a name="l01559"></a>01559 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
-<a name="l01560"></a>01560 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 28, 46, 46, 46, 46, 46, 28, 28,
-<a name="l01561"></a>01561 28, 47, 48, 42, 35, 35, 24, 30, 27, 23, 23, 35, 34, 20, 28, 9, 16, 41, 15, 28, 16, 16, 28, 16, 31,
-<a name="l01562"></a>01562 26, 33, 23, 33, 23, 31, 26, 31, 26, 31, 26, 36, 26, 36, 26, 36, 26, 33, 26, 33, 26, 12, 12, 12, 12,
-<a name="l01563"></a>01563 12, 12, 12, 10, 23, 10, 31, 23, 23, 26, 10, 33, 26, 33, 26, 36, 26, 36, 26, 33, 15, 31, 23, 28, 13,
-<a name="l01564"></a>01564 33, 26, 33, 26, 33, 26, 33, 26, 46, 33, 30, 23, 10, 31, 26, 46, 41, 36, 28, 12, 46, 33, 46, 33, 46,
-<a name="l01565"></a>01565 33, 30, 23, 10, 15, 26, 28, 38, 38, 38, 38, 15, 15, 15, 15, 31, 36, 39, 18, 36, 38, 35, 10, 31, 31,
-<a name="l01566"></a>01566 31, 31, 28, 33, 12, 31, 31, 37, 33, 30, 36, 33, 31, 28, 28, 30, 31, 38, 34, 12, 30, 27, 21, 26, 10,
-<a name="l01567"></a>01567 25, 26, 23, 20, 26, 26, 10, 23, 23, 27, 23, 21, 26, 26, 22, 25, 24, 33, 36, 10, 25, 26, 25, 36, 31,
-<a name="l01568"></a>01568 40, 25, 33, 31, 12, 12, 23, 49, 46, 39, 27, 29, 33, 31, 30, 31, 25, 31, 31, 42, 28, 33, 33, 27, 30,
-<a name="l01569"></a>01569 37, 33, 36, 33, 31, 33, 28, 29, 35, 31, 34, 31, 42, 43, 36, 41, 30, 33, 46, 33, 26, 26, 24, 17, 27,
-<a name="l01570"></a>01570 26, 31, 21, 26, 26, 20, 27, 32, 25, 26, 25, 26, 23, 21, 23, 38, 23, 26, 24, 37, 38, 29, 33, 24, 23,
-<a name="l01571"></a>01571 35, 25, 26, 26, 17, 23, 23, 10, 12, 10, 42, 37, 26, 20, 23, 25, 22, 19, 46, 49, 32, 15, 15, 15, 15,
-<a name="l01572"></a>01572 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, 15, 10, 15, 15, 13, 26, 25, 18, 23, 28, 10, 18, 28, 27, 10,
-<a name="l01573"></a>01573 23, 21, 21, 28, 28, 10, 16, 26, 24, 26, 25, 21, 22, 25, 23, 32, 30, 21, 21, 21, 11, 19, 37, 10, 23,
-<a name="l01574"></a>01574 23, 21, 21, 25, 32, 32, 32, 32, 26, 26, 26, 25, 18, 23, 28, 13, 19, 27, 13, 23, 21, 21, 28, 16, 26,
-<a name="l01575"></a>01575 26, 25, 22, 25, 23, 32, 30, 10, 25, 21, 25, 26, 0, 0, 0, 0, 15, 15, 16, 19, 10, 9, 11, 9, 9,
-<a name="l01576"></a>01576 10, 9, 10, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 15, 24, 35, 35, 13, 35, 24, 24, 24, 35,
-<a name="l01577"></a>01577 35, 35, 35, 35, 10, 35, 35, 35, 35, 35, 35, 35, 35, 29, 35, 35, 35, 33, 33, 11, 11, 35, 35, 35, 35,
-<a name="l01578"></a>01578 26, 24, 24, 24, 22, 22, 37, 43, 18, 24, 37, 43, 18, 24, 29, 27, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-<a name="l01579"></a>01579 35, 35, 35, 35, 35, 35, 35, 10, 10, 10, 10, 10, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01580"></a>01580 0, 0, 0, 0, 0, 26, 46, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-<a name="l01581"></a>01581 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 15, 15, 35, 28, 19, 10, 11, 10, 11, 20, 20, 10, 11, 29, 27,
-<a name="l01582"></a>01582 11, 11, 10, 11, 33, 33, 11, 11, 13, 17, 33, 33, 11, 11, 33, 33, 11, 11, 26, 24, 24, 24, 26, 24, 24,
-<a name="l01583"></a>01583 24, 26, 24, 24, 24, 16, 16, 16, 16, 22, 22, 22, 22, 38, 38, 24, 24, 38, 38, 24, 24, 51, 51, 39, 39,
-<a name="l01584"></a>01584 51, 51, 39, 39, 27, 27, 27, 27, 27, 27, 27, 27, 25, 21, 24, 18, 25, 21, 24, 18, 36, 36, 12, 12, 27,
-<a name="l01585"></a>01585 27, 12, 12, 28, 28, 18, 18, 23, 23, 10, 10, 16, 16, 18, 18, 24, 24, 11, 11, 13, 17, 21, 18, 20, 20,
-<a name="l01586"></a>01586 29, 27, 29, 27, 11, 11, 25, 28, 25, 28, 25, 28, 25, 28, 35, 35, 9, 9, 35, 35, 35, 8, 10, 35, 35,
-<a name="l01587"></a>01587 10, 11, 35, 35, 35, 10, 10, 10, 10, 10, 10, 35, 9, 9, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-<a name="l01588"></a>01588 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-<a name="l01589"></a>01589 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 15, 15, 15, 35, 35, 35, 35,
-<a name="l01590"></a>01590 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 6, 46, 92, 39, 30,
-<a name="l01591"></a>01591 39, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 38, 38, 0, 0, 0, 0,
-<a name="l01592"></a>01592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01593"></a>01593 0, 0, 0, 0, 0, 10, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31,
-<a name="l01594"></a>01594 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 31, 26, 12, 10, 12, 10,
-<a name="l01595"></a>01595 36, 26, 36, 26, 36, 26, 36, 26, 36, 26, 36, 26, 36, 26, 39, 30, 39, 30, 39, 30, 39, 30, 39, 30, 33,
-<a name="l01596"></a>01596 26, 33, 26, 39, 31, 39, 31, 39, 31, 39, 31, 39, 31, 30, 23, 30, 23, 30, 23, 31, 26, 12, 10, 36, 26,
-<a name="l01597"></a>01597 33, 26, 33, 26, 33, 26, 33, 26, 33, 26, 0, 0, 0, 0, 25, 17, 42, 31, 27, 20, 27, 20, 33, 25, 26,
-<a name="l01598"></a>01598 23, 26, 23, 31, 23, 31, 24, 31, 26, 35, 26, 36, 26, 33, 11, 12, 12, 27, 11, 11, 11, 11, 11, 11, 12,
-<a name="l01599"></a>01599 10, 10, 15, 15, 10, 10, 10, 0, 10, 11, 10, 11, 10, 11, 10, 11, 20, 20, 20, 20, 29, 27, 33, 33, 11,
-<a name="l01600"></a>01600 11, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11, 33, 33, 11, 11,
-<a name="l01601"></a>01601 26, 24, 24, 24, 26, 24, 24, 24, 26, 24, 24, 24, 26, 24, 24, 24, 26, 24, 24, 24, 26, 24, 24, 24, 16,
-<a name="l01602"></a>01602 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01603"></a>01603 22, 22, 22, 22, 22, 22, 22, 22, 38, 38, 24, 24, 38, 38, 24, 24, 38, 38, 24, 24, 51, 51, 39, 39, 51,
-<a name="l01604"></a>01604 51, 39, 39, 27, 27, 25, 21, 24, 18, 36, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12,
-<a name="l01605"></a>01605 12, 36, 36, 12, 12, 27, 27, 27, 27, 37, 43, 18, 24, 37, 43, 18, 24, 28, 28, 18, 18, 28, 28, 18, 18,
-<a name="l01606"></a>01606 28, 28, 18, 18, 37, 43, 18, 24, 37, 43, 18, 24, 37, 43, 18, 24, 37, 43, 18, 24, 37, 43, 18, 24, 23,
-<a name="l01607"></a>01607 23, 10, 10, 23, 23, 10, 10, 23, 23, 10, 10, 23, 23, 10, 10, 24, 24, 11, 11, 24, 24, 24, 24, 24, 24,
-<a name="l01608"></a>01608 11, 11, 24, 24, 26, 24, 24, 24, 13, 17, 18, 18, 18, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-<a name="l01609"></a>01609 20, 20, 20, 20, 29, 27, 29, 27, 11, 11, 20, 20, 29, 27, 11, 11, 29, 27, 37, 37, 37, 37, 10, 0, 0,
-<a name="l01610"></a>01610 0, 0, 0, 0, 0, 52, 50, 0, 0, 0, 0, 0, 0, 9, 17, 0, 0, 28, 0, 0, 0, 38, 38, 24, 24,
-<a name="l01611"></a>01611 51, 51, 39, 39, 25, 21, 24, 18, 19, 16, 13, 11, 15, 11, 11, 11, 11, 11, 37, 43, 10, 0, 16, 21, 25,
-<a name="l01612"></a>01612 28, 25, 28, 25, 28, 25, 28, 25, 28, 25, 28, 25, 28, 24, 24, 25, 28, 50, 100, 38, 0, 14, 14, 16, 18,
-<a name="l01613"></a>01613 28, 28, 44, 33, 10, 17, 17, 19, 29, 14, 17, 14, 14, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 14, 14,
-<a name="l01614"></a>01614 29, 29, 29, 28, 51, 33, 33, 36, 36, 33, 31, 39, 36, 14, 25, 33, 28, 41, 36, 39, 33, 39, 36, 33, 31,
-<a name="l01615"></a>01615 36, 33, 50, 33, 33, 31, 14, 14, 14, 22, 28, 17, 28, 28, 25, 28, 28, 14, 28, 28, 12, 10, 25, 12, 40,
-<a name="l01616"></a>01616 28, 28, 28, 28, 17, 25, 14, 28, 25, 35, 24, 25, 25, 17, 12, 17, 29, 33, 33, 36, 33, 36, 39, 36, 28,
-<a name="l01617"></a>01617 28, 28, 28, 28, 28, 25, 28, 28, 28, 28, 14, 14, 14, 14, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-<a name="l01618"></a>01618 20, 28, 28, 28, 18, 27, 31, 37, 37, 50, 17, 17, 27, 50, 39, 36, 27, 27, 27, 28, 29, 25, 36, 41, 27,
-<a name="l01619"></a>01619 16, 19, 18, 38, 44, 31, 31, 16, 29, 27, 28, 27, 30, 28, 28, 50, 33, 33, 39, 50, 47, 28, 50, 17, 17,
-<a name="l01620"></a>01620 11, 11, 27, 25, 25, 33, 8, 28, 17, 17, 25, 25, 28, 14, 11, 17, 50, 33, 33, 33, 33, 33, 14, 14, 14,
-<a name="l01621"></a>01621 14, 39, 39, 39, 36, 36, 36, 14, 17, 15, 17, 17, 17, 17, 17, 17, 17, 17, 28, 11, 33, 25, 31, 25, 12,
-<a name="l01622"></a>01622 36, 28, 33, 25, 33, 28, 29, 29, 17, 17, 17, 42, 42, 42, 28, 39, 28, 14, 33, 25, 36, 25, 36, 25, 28,
-<a name="l01623"></a>01623 28, 17, 33, 28, 33, 28, 36, 31, 36, 33, 28, 33, 28, 28, 12, 28, 15, 28, 17, 36, 28, 36, 28, 39, 28,
-<a name="l01624"></a>01624 36, 17, 36, 17, 33, 25, 31, 13, 31, 19, 36, 28, 36, 28, 31, 25, 31, 25, 28, 39, 40, 29, 28, 22, 31,
-<a name="l01625"></a>01625 20, 32, 28, 25, 18, 54, 50, 25, 50, 25, 50, 25, 25, 49, 36, 29, 30, 29, 30, 30, 35, 31, 35, 35, 35,
-<a name="l01626"></a>01626 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-<a name="l01627"></a>01627 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 30, 50, 49, 49, 49, 49, 30,
-<a name="l01628"></a>01628 30, 30, 51, 53, 46, 38, 38, 27, 33, 30, 26, 25, 38, 37, 22, 30, 9, 18, 44, 16, 30, 18, 18, 30, 18,
-<a name="l01629"></a>01629 33, 28, 36, 25, 36, 25, 33, 28, 33, 28, 33, 28, 39, 28, 39, 28, 39, 28, 36, 28, 36, 28, 14, 14, 14,
-<a name="l01630"></a>01630 14, 14, 14, 14, 12, 25, 10, 33, 25, 25, 28, 12, 36, 28, 36, 28, 39, 28, 39, 28, 36, 17, 33, 25, 31,
-<a name="l01631"></a>01631 14, 36, 28, 36, 28, 36, 28, 36, 28, 50, 35, 33, 25, 12, 33, 28, 50, 44, 39, 31, 12, 50, 35, 50, 35,
-<a name="l01632"></a>01632 50, 35, 33, 25, 11, 17, 28, 30, 42, 42, 42, 42, 17, 17, 17, 17, 33, 39, 42, 19, 39, 42, 38, 10, 33,
-<a name="l01633"></a>01633 33, 33, 33, 31, 36, 14, 33, 33, 41, 36, 33, 39, 36, 33, 31, 31, 33, 33, 42, 37, 14, 33, 29, 22, 28,
-<a name="l01634"></a>01634 10, 27, 29, 25, 22, 28, 28, 10, 25, 25, 29, 25, 22, 28, 28, 24, 27, 26, 36, 39, 10, 27, 28, 27, 39,
-<a name="l01635"></a>01635 33, 43, 27, 36, 33, 14, 14, 25, 53, 51, 43, 29, 32, 36, 33, 33, 33, 27, 34, 33, 46, 30, 36, 36, 29,
-<a name="l01636"></a>01636 33, 41, 36, 39, 36, 33, 36, 31, 32, 38, 33, 37, 33, 46, 47, 40, 44, 33, 36, 51, 36, 28, 29, 27, 18,
-<a name="l01637"></a>01637 29, 28, 33, 23, 28, 28, 22, 29, 34, 28, 28, 27, 28, 25, 23, 25, 41, 24, 29, 26, 40, 41, 31, 36, 26,
-<a name="l01638"></a>01638 26, 38, 27, 28, 28, 18, 26, 25, 12, 14, 10, 45, 41, 28, 22, 25, 28, 24, 21, 50, 54, 35, 17, 17, 17,
-<a name="l01639"></a>01639 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 17, 13, 17, 17, 14, 28, 27, 20, 25, 30, 13, 19, 30, 30,
-<a name="l01640"></a>01640 13, 25, 23, 23, 30, 30, 13, 18, 29, 26, 28, 27, 23, 24, 27, 25, 35, 32, 26, 26, 26, 12, 21, 42, 13,
-<a name="l01641"></a>01641 25, 25, 23, 23, 27, 35, 35, 35, 35, 28, 28, 28, 27, 20, 25, 30, 14, 21, 30, 14, 25, 23, 23, 30, 18,
-<a name="l01642"></a>01642 29, 28, 27, 24, 27, 25, 35, 32, 13, 27, 23, 27, 29, 0, 0, 0, 0, 16, 16, 18, 21, 10, 10, 12, 10,
-<a name="l01643"></a>01643 10, 10, 10, 11, 8, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 16, 26, 38, 38, 14, 38, 26, 26, 26,
-<a name="l01644"></a>01644 38, 38, 38, 38, 38, 11, 38, 38, 38, 38, 38, 38, 38, 38, 32, 38, 38, 38, 36, 36, 12, 12, 38, 38, 38,
-<a name="l01645"></a>01645 38, 28, 26, 26, 26, 24, 24, 41, 47, 20, 26, 41, 47, 20, 26, 32, 29, 38, 38, 38, 38, 38, 38, 38, 38,
-<a name="l01646"></a>01646 38, 38, 38, 38, 38, 38, 38, 38, 11, 11, 11, 11, 11, 38, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01647"></a>01647 0, 0, 0, 0, 0, 0, 28, 50, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
-<a name="l01648"></a>01648 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 16, 16, 38, 31, 21, 10, 11, 10, 11, 22, 22, 10, 11, 32,
-<a name="l01649"></a>01649 29, 12, 12, 10, 11, 36, 36, 12, 12, 14, 19, 36, 36, 12, 12, 36, 36, 12, 12, 28, 26, 26, 26, 28, 26,
-<a name="l01650"></a>01650 26, 26, 28, 26, 26, 26, 17, 17, 17, 17, 24, 24, 24, 24, 41, 41, 27, 27, 41, 41, 27, 27, 55, 55, 42,
-<a name="l01651"></a>01651 42, 55, 55, 42, 42, 29, 29, 29, 29, 29, 29, 29, 29, 27, 23, 26, 20, 27, 23, 26, 20, 39, 39, 13, 13,
-<a name="l01652"></a>01652 29, 29, 13, 13, 30, 30, 20, 20, 25, 25, 10, 10, 17, 17, 20, 20, 26, 26, 12, 12, 14, 19, 23, 20, 22,
-<a name="l01653"></a>01653 22, 32, 29, 32, 29, 12, 12, 27, 30, 27, 30, 27, 30, 27, 30, 38, 38, 10, 10, 38, 38, 38, 8, 11, 38,
-<a name="l01654"></a>01654 38, 10, 12, 38, 38, 38, 11, 11, 11, 11, 11, 11, 38, 10, 10, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
-<a name="l01655"></a>01655 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
-<a name="l01656"></a>01656 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 16, 16, 16, 38, 38, 38,
-<a name="l01657"></a>01657 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 6, 50, 100, 43,
-<a name="l01658"></a>01658 33, 43, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 42, 42, 0, 0, 0,
-<a name="l01659"></a>01659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01660"></a>01660 0, 0, 0, 0, 0, 0, 12, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28,
-<a name="l01661"></a>01661 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 33, 28, 14, 12, 14,
-<a name="l01662"></a>01662 12, 39, 28, 39, 28, 39, 28, 39, 28, 39, 28, 39, 28, 39, 28, 43, 33, 43, 33, 43, 33, 43, 33, 43, 33,
-<a name="l01663"></a>01663 36, 28, 36, 28, 43, 33, 43, 33, 43, 33, 43, 33, 43, 33, 33, 25, 33, 25, 33, 25, 33, 28, 14, 12, 39,
-<a name="l01664"></a>01664 28, 36, 28, 36, 28, 36, 28, 36, 28, 36, 28, 0, 0, 0, 0, 27, 18, 46, 33, 29, 22, 29, 22, 36, 28,
-<a name="l01665"></a>01665 28, 25, 28, 25, 33, 25, 33, 26, 33, 28, 38, 28, 39, 28, 36, 12, 13, 13, 29, 12, 12, 12, 12, 12, 12,
-<a name="l01666"></a>01666 13, 10, 10, 17, 17, 10, 10, 10, 0, 10, 11, 10, 11, 10, 11, 10, 11, 22, 22, 22, 22, 32, 29, 36, 36,
-<a name="l01667"></a>01667 12, 12, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12, 12, 36, 36, 12,
-<a name="l01668"></a>01668 12, 28, 26, 26, 26, 28, 26, 26, 26, 28, 26, 26, 26, 28, 26, 26, 26, 28, 26, 26, 26, 28, 26, 26, 26,
-<a name="l01669"></a>01669 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 24, 24, 24, 24, 24, 24, 24,
-<a name="l01670"></a>01670 24, 24, 24, 24, 24, 24, 24, 24, 24, 41, 41, 27, 27, 41, 41, 27, 27, 41, 41, 27, 27, 55, 55, 42, 42,
-<a name="l01671"></a>01671 55, 55, 42, 42, 29, 29, 27, 23, 26, 20, 39, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39,
-<a name="l01672"></a>01672 13, 13, 39, 39, 13, 13, 29, 29, 29, 29, 41, 47, 20, 26, 41, 47, 20, 26, 30, 30, 20, 20, 30, 30, 20,
-<a name="l01673"></a>01673 20, 30, 30, 20, 20, 41, 47, 20, 26, 41, 47, 20, 26, 41, 47, 20, 26, 41, 47, 20, 26, 41, 47, 20, 26,
-<a name="l01674"></a>01674 25, 25, 10, 10, 25, 25, 10, 10, 25, 25, 10, 10, 25, 25, 10, 10, 26, 26, 12, 12, 26, 26, 26, 26, 26,
-<a name="l01675"></a>01675 26, 12, 12, 26, 26, 28, 26, 26, 26, 14, 19, 19, 19, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-<a name="l01676"></a>01676 22, 22, 22, 22, 22, 32, 29, 32, 29, 12, 12, 22, 22, 32, 29, 12, 12, 32, 29, 41, 41, 41, 41, 10, 0,
-<a name="l01677"></a>01677 0, 0, 0, 0, 0, 0, 56, 54, 0, 0, 0, 0, 0, 0, 10, 19, 0, 0, 30, 0, 0, 0, 41, 41, 27,
-<a name="l01678"></a>01678 27, 55, 55, 42, 42, 27, 23, 26, 20, 21, 17, 14, 12, 16, 12, 12, 12, 12, 12, 41, 47, 13, 0, 17, 26,
-<a name="l01679"></a>01679 27, 30, 27, 30, 27, 30, 27, 30, 27, 30, 27, 30, 27, 30, 26, 26, 27, 30, 54, 108, 41, 0, 15, 15, 17,
-<a name="l01680"></a>01680 19, 30, 30, 48, 36, 10, 18, 18, 21, 32, 15, 18, 15, 15, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 15,
-<a name="l01681"></a>01681 15, 32, 32, 32, 30, 55, 36, 36, 39, 39, 36, 33, 42, 39, 15, 27, 36, 30, 45, 39, 42, 36, 42, 39, 36,
-<a name="l01682"></a>01682 33, 39, 36, 54, 35, 35, 33, 15, 15, 15, 24, 30, 18, 30, 30, 27, 30, 30, 15, 30, 29, 13, 13, 27, 13,
-<a name="l01683"></a>01683 45, 29, 30, 30, 30, 18, 27, 15, 29, 27, 39, 26, 27, 26, 18, 14, 18, 32, 36, 36, 39, 36, 39, 42, 39,
-<a name="l01684"></a>01684 30, 30, 30, 30, 30, 30, 27, 30, 30, 30, 30, 15, 15, 15, 15, 29, 30, 30, 30, 30, 30, 29, 29, 29, 29,
-<a name="l01685"></a>01685 30, 22, 30, 30, 30, 19, 29, 33, 40, 40, 54, 18, 18, 30, 54, 42, 39, 30, 30, 30, 30, 31, 27, 39, 44,
-<a name="l01686"></a>01686 30, 16, 20, 20, 41, 48, 33, 33, 17, 32, 29, 30, 30, 34, 30, 30, 54, 36, 36, 42, 54, 51, 30, 54, 18,
-<a name="l01687"></a>01687 18, 12, 12, 30, 27, 27, 35, 9, 30, 18, 18, 27, 27, 30, 15, 12, 18, 53, 36, 36, 36, 36, 36, 15, 15,
-<a name="l01688"></a>01688 15, 15, 42, 42, 42, 39, 39, 39, 15, 18, 16, 18, 18, 18, 18, 18, 18, 18, 18, 30, 12, 36, 27, 33, 26,
-<a name="l01689"></a>01689 14, 39, 30, 35, 27, 36, 30, 32, 32, 18, 18, 18, 45, 45, 45, 30, 42, 30, 15, 36, 27, 39, 27, 39, 27,
-<a name="l01690"></a>01690 30, 30, 18, 36, 30, 36, 30, 39, 33, 39, 36, 30, 36, 30, 30, 13, 30, 16, 30, 18, 39, 29, 39, 29, 42,
-<a name="l01691"></a>01691 30, 39, 18, 39, 18, 36, 27, 33, 15, 33, 20, 39, 29, 39, 29, 33, 26, 33, 26, 30, 42, 43, 31, 30, 24,
-<a name="l01692"></a>01692 33, 21, 35, 30, 27, 20, 59, 54, 27, 54, 27, 54, 27, 27, 53, 39, 32, 33, 32, 33, 33, 38, 34, 38, 38,
-<a name="l01693"></a>01693 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
-<a name="l01694"></a>01694 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 33, 54, 53, 53, 53, 53,
-<a name="l01695"></a>01695 33, 33, 33, 55, 57, 49, 41, 41, 29, 35, 32, 28, 27, 41, 40, 24, 33, 10, 19, 48, 17, 33, 19, 19, 33,
-<a name="l01696"></a>01696 19, 36, 30, 39, 27, 39, 27, 36, 30, 36, 30, 36, 30, 42, 30, 42, 30, 42, 30, 39, 29, 39, 29, 15, 15,
-<a name="l01697"></a>01697 15, 15, 15, 15, 15, 13, 27, 13, 36, 27, 27, 30, 13, 39, 29, 39, 30, 42, 30, 42, 30, 39, 18, 36, 27,
-<a name="l01698"></a>01698 33, 15, 39, 29, 39, 29, 39, 29, 39, 29, 54, 39, 35, 27, 13, 36, 30, 54, 48, 42, 33, 15, 54, 39, 54,
-<a name="l01699"></a>01699 39, 54, 39, 35, 27, 12, 18, 30, 32, 45, 45, 45, 45, 18, 18, 18, 18, 36, 42, 45, 21, 42, 44, 41, 13,
-<a name="l01700"></a>01700 36, 36, 36, 36, 33, 39, 15, 36, 36, 45, 39, 35, 42, 39, 36, 33, 33, 35, 35, 45, 40, 15, 35, 31, 24,
-<a name="l01701"></a>01701 30, 13, 30, 31, 27, 24, 30, 30, 13, 27, 27, 31, 27, 24, 30, 31, 26, 30, 28, 39, 42, 13, 30, 30, 30,
-<a name="l01702"></a>01702 42, 36, 47, 29, 39, 36, 15, 15, 27, 57, 55, 45, 31, 34, 39, 36, 35, 36, 29, 37, 36, 50, 33, 39, 39,
-<a name="l01703"></a>01703 31, 35, 45, 39, 42, 39, 36, 39, 33, 34, 41, 35, 40, 36, 49, 51, 43, 48, 35, 39, 55, 39, 30, 31, 29,
-<a name="l01704"></a>01704 20, 32, 30, 36, 25, 29, 29, 24, 31, 37, 29, 30, 28, 30, 27, 25, 27, 44, 26, 31, 28, 43, 44, 34, 39,
-<a name="l01705"></a>01705 28, 28, 41, 29, 30, 29, 20, 28, 27, 13, 15, 13, 49, 44, 29, 24, 27, 29, 26, 22, 54, 58, 37, 18, 18,
-<a name="l01706"></a>01706 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 18, 13, 18, 18, 15, 30, 29, 22, 27, 33, 13, 21, 32,
-<a name="l01707"></a>01707 32, 13, 28, 25, 25, 32, 32, 13, 19, 31, 29, 31, 30, 25, 26, 30, 28, 38, 35, 26, 26, 26, 13, 23, 42,
-<a name="l01708"></a>01708 13, 28, 28, 25, 25, 29, 38, 38, 38, 38, 30, 30, 30, 29, 22, 27, 33, 15, 22, 32, 15, 28, 25, 25, 32,
-<a name="l01709"></a>01709 19, 31, 31, 30, 26, 30, 28, 38, 35, 13, 29, 25, 30, 31, 0, 0, 0, 0, 17, 17, 19, 22, 11, 11, 13,
-<a name="l01710"></a>01710 11, 11, 11, 11, 11, 9, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 17, 28, 41, 41, 15, 41, 28, 28,
-<a name="l01711"></a>01711 28, 41, 41, 41, 41, 41, 11, 41, 41, 41, 41, 41, 41, 41, 41, 34, 41, 41, 41, 39, 39, 13, 13, 41, 41,
-<a name="l01712"></a>01712 41, 41, 30, 28, 29, 29, 26, 26, 44, 50, 21, 28, 44, 50, 21, 28, 34, 32, 41, 41, 41, 41, 41, 41, 41,
-<a name="l01713"></a>01713 41, 41, 41, 41, 41, 41, 41, 41, 41, 12, 11, 11, 11, 11, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01714"></a>01714 0, 0, 0, 0, 0, 0, 0, 30, 54, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
-<a name="l01715"></a>01715 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 17, 17, 41, 33, 22, 11, 12, 11, 12, 23, 23, 11, 12,
-<a name="l01716"></a>01716 34, 32, 13, 13, 11, 12, 39, 39, 13, 13, 15, 20, 39, 39, 13, 13, 39, 39, 13, 13, 30, 28, 29, 29, 30,
-<a name="l01717"></a>01717 28, 29, 29, 30, 28, 29, 29, 18, 18, 18, 18, 26, 26, 26, 26, 44, 44, 29, 29, 44, 44, 29, 29, 59, 59,
-<a name="l01718"></a>01718 46, 46, 59, 59, 46, 46, 31, 31, 31, 31, 31, 31, 31, 31, 29, 24, 28, 21, 29, 24, 28, 21, 43, 43, 14,
-<a name="l01719"></a>01719 14, 31, 31, 14, 14, 32, 32, 21, 21, 27, 27, 11, 11, 18, 18, 21, 21, 28, 28, 13, 13, 15, 20, 24, 21,
-<a name="l01720"></a>01720 23, 23, 34, 32, 34, 32, 13, 13, 29, 32, 29, 32, 29, 32, 29, 32, 41, 41, 11, 11, 41, 41, 41, 9, 11,
-<a name="l01721"></a>01721 41, 41, 11, 13, 41, 41, 41, 11, 11, 11, 11, 11, 12, 41, 11, 11, 41, 41, 41, 41, 41, 41, 41, 41, 41,
-<a name="l01722"></a>01722 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
-<a name="l01723"></a>01723 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 17, 17, 17, 41, 41,
-<a name="l01724"></a>01724 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 7, 54, 108,
-<a name="l01725"></a>01725 46, 35, 46, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 45, 45, 0, 0,
-<a name="l01726"></a>01726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01727"></a>01727 0, 0, 0, 0, 0, 0, 0, 13, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36,
-<a name="l01728"></a>01728 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 36, 30, 15, 13,
-<a name="l01729"></a>01729 15, 13, 42, 30, 42, 30, 42, 30, 42, 30, 42, 30, 42, 30, 42, 30, 46, 35, 46, 35, 46, 35, 46, 35, 46,
-<a name="l01730"></a>01730 35, 39, 29, 39, 29, 46, 36, 46, 36, 46, 36, 46, 36, 46, 36, 35, 27, 35, 27, 35, 27, 36, 30, 15, 13,
-<a name="l01731"></a>01731 42, 30, 39, 29, 39, 29, 39, 29, 39, 29, 39, 29, 0, 0, 0, 0, 29, 20, 50, 36, 31, 24, 31, 24, 39,
-<a name="l01732"></a>01732 30, 30, 27, 30, 27, 36, 27, 36, 28, 36, 29, 41, 30, 42, 30, 39, 13, 14, 14, 31, 13, 13, 13, 13, 13,
-<a name="l01733"></a>01733 13, 15, 11, 11, 18, 18, 11, 11, 11, 0, 11, 12, 11, 12, 11, 12, 11, 12, 23, 23, 23, 23, 34, 32, 39,
-<a name="l01734"></a>01734 39, 13, 13, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39, 13, 13, 39, 39,
-<a name="l01735"></a>01735 13, 13, 30, 28, 29, 29, 30, 28, 29, 29, 30, 28, 29, 29, 30, 28, 29, 29, 30, 28, 29, 29, 30, 28, 29,
-<a name="l01736"></a>01736 29, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 26, 26, 26, 26, 26, 26,
-<a name="l01737"></a>01737 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 44, 44, 29, 29, 44, 44, 29, 29, 44, 44, 29, 29, 59, 59, 46,
-<a name="l01738"></a>01738 46, 59, 59, 46, 46, 31, 31, 29, 24, 28, 21, 43, 43, 43, 14, 14, 43, 43, 14, 14, 43, 43, 14, 14, 43,
-<a name="l01739"></a>01739 43, 14, 14, 43, 43, 14, 14, 31, 31, 31, 31, 44, 50, 21, 28, 44, 50, 21, 28, 32, 32, 21, 21, 32, 32,
-<a name="l01740"></a>01740 21, 21, 32, 32, 21, 21, 44, 50, 21, 28, 44, 50, 21, 28, 44, 50, 21, 28, 44, 50, 21, 28, 44, 50, 21,
-<a name="l01741"></a>01741 28, 27, 27, 11, 11, 27, 27, 11, 11, 27, 27, 11, 11, 27, 27, 11, 11, 28, 28, 13, 13, 28, 28, 28, 28,
-<a name="l01742"></a>01742 28, 28, 13, 13, 28, 28, 30, 28, 29, 29, 15, 20, 21, 21, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
-<a name="l01743"></a>01743 23, 23, 23, 23, 23, 23, 34, 32, 34, 32, 13, 13, 23, 23, 34, 32, 13, 13, 34, 32, 44, 44, 44, 44, 11,
-<a name="l01744"></a>01744 0, 0, 0, 0, 0, 0, 0, 61, 59, 0, 0, 0, 0, 0, 0, 10, 20, 0, 0, 32, 0, 0, 0, 44, 44,
-<a name="l01745"></a>01745 29, 29, 59, 59, 46, 46, 29, 24, 28, 21, 22, 18, 15, 13, 17, 13, 13, 13, 13, 13, 44, 50, 13, 0, 18,
-<a name="l01746"></a>01746 26, 29, 32, 29, 32, 29, 32, 29, 32, 29, 32, 29, 32, 29, 32, 28, 28, 29, 32, 58, 116, 44, 0, 16, 16,
-<a name="l01747"></a>01747 19, 21, 32, 32, 52, 39, 11, 19, 19, 23, 34, 16, 19, 16, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01748"></a>01748 16, 16, 34, 34, 34, 32, 59, 39, 39, 42, 42, 39, 35, 45, 42, 15, 29, 39, 32, 47, 42, 45, 39, 45, 42,
-<a name="l01749"></a>01749 39, 36, 42, 39, 58, 37, 38, 35, 16, 16, 16, 24, 32, 19, 32, 32, 29, 32, 32, 16, 32, 32, 13, 13, 30,
-<a name="l01750"></a>01750 13, 49, 32, 32, 32, 32, 19, 29, 16, 32, 29, 41, 28, 27, 28, 19, 14, 19, 34, 39, 39, 42, 39, 42, 45,
-<a name="l01751"></a>01751 42, 32, 32, 32, 32, 32, 32, 29, 32, 32, 32, 32, 15, 15, 15, 15, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01752"></a>01752 32, 32, 23, 32, 32, 32, 20, 31, 35, 43, 43, 58, 19, 19, 32, 58, 45, 41, 32, 32, 32, 32, 33, 29, 41,
-<a name="l01753"></a>01753 48, 32, 17, 21, 21, 45, 52, 35, 35, 19, 34, 32, 32, 32, 36, 32, 32, 58, 39, 39, 45, 58, 55, 32, 58,
-<a name="l01754"></a>01754 19, 19, 13, 13, 32, 29, 27, 38, 10, 32, 19, 19, 29, 29, 32, 16, 13, 19, 57, 39, 39, 39, 39, 39, 15,
-<a name="l01755"></a>01755 15, 15, 15, 45, 45, 45, 42, 42, 42, 15, 19, 17, 19, 19, 19, 19, 19, 19, 19, 19, 32, 13, 39, 29, 35,
-<a name="l01756"></a>01756 28, 14, 42, 32, 38, 27, 39, 32, 34, 34, 19, 19, 19, 48, 48, 48, 32, 45, 32, 15, 39, 29, 42, 29, 42,
-<a name="l01757"></a>01757 29, 32, 32, 19, 39, 32, 39, 32, 42, 36, 42, 39, 32, 39, 32, 32, 13, 32, 17, 32, 19, 42, 32, 42, 32,
-<a name="l01758"></a>01758 45, 32, 42, 19, 42, 19, 39, 29, 36, 16, 36, 22, 42, 32, 42, 32, 35, 28, 35, 28, 32, 45, 46, 34, 32,
-<a name="l01759"></a>01759 26, 36, 23, 38, 32, 29, 21, 63, 58, 29, 58, 29, 58, 29, 29, 57, 42, 34, 35, 34, 35, 35, 41, 36, 41,
-<a name="l01760"></a>01760 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
-<a name="l01761"></a>01761 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 35, 58, 57, 57, 57,
-<a name="l01762"></a>01762 57, 35, 35, 35, 59, 61, 53, 44, 44, 31, 38, 34, 30, 29, 44, 43, 26, 35, 11, 21, 51, 19, 35, 21, 21,
-<a name="l01763"></a>01763 35, 21, 39, 32, 42, 29, 42, 29, 39, 32, 39, 32, 39, 32, 45, 32, 45, 32, 45, 32, 42, 32, 42, 32, 15,
-<a name="l01764"></a>01764 15, 15, 15, 15, 15, 15, 13, 29, 13, 39, 30, 29, 32, 13, 42, 32, 42, 32, 45, 32, 45, 32, 42, 19, 39,
-<a name="l01765"></a>01765 29, 35, 16, 42, 32, 42, 32, 42, 32, 42, 32, 58, 41, 38, 27, 13, 39, 32, 58, 52, 45, 35, 15, 58, 41,
-<a name="l01766"></a>01766 58, 41, 58, 41, 38, 27, 13, 19, 32, 35, 48, 48, 48, 48, 19, 19, 19, 19, 39, 45, 49, 22, 45, 48, 44,
-<a name="l01767"></a>01767 13, 39, 39, 39, 39, 35, 42, 15, 39, 39, 47, 42, 38, 45, 42, 39, 36, 36, 38, 37, 48, 43, 15, 38, 34,
-<a name="l01768"></a>01768 26, 32, 13, 32, 33, 29, 26, 32, 32, 13, 29, 29, 33, 29, 26, 32, 33, 28, 32, 30, 41, 45, 13, 32, 32,
-<a name="l01769"></a>01769 32, 45, 39, 50, 31, 42, 39, 15, 15, 29, 61, 59, 50, 34, 37, 42, 39, 38, 39, 31, 39, 39, 54, 35, 42,
-<a name="l01770"></a>01770 42, 34, 38, 47, 42, 45, 42, 39, 42, 36, 37, 44, 37, 43, 39, 53, 54, 46, 51, 38, 42, 59, 42, 32, 33,
-<a name="l01771"></a>01771 31, 21, 34, 32, 39, 27, 32, 32, 25, 34, 40, 32, 32, 31, 32, 29, 27, 27, 48, 28, 33, 30, 47, 48, 36,
-<a name="l01772"></a>01772 42, 30, 30, 44, 31, 32, 32, 21, 30, 29, 13, 15, 13, 53, 47, 32, 25, 27, 32, 28, 24, 58, 62, 40, 19,
-<a name="l01773"></a>01773 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, 19, 14, 19, 19, 16, 33, 31, 23, 29, 35, 14, 22,
-<a name="l01774"></a>01774 35, 34, 14, 30, 27, 27, 35, 35, 14, 20, 33, 31, 33, 32, 27, 28, 32, 30, 40, 37, 29, 29, 29, 14, 24,
-<a name="l01775"></a>01775 46, 14, 30, 30, 27, 27, 31, 40, 40, 40, 40, 33, 33, 33, 31, 23, 29, 35, 17, 24, 34, 17, 30, 27, 27,
-<a name="l01776"></a>01776 35, 20, 33, 33, 32, 28, 32, 30, 40, 37, 14, 31, 27, 32, 33, 0, 0, 0, 0, 19, 19, 21, 24, 12, 12,
-<a name="l01777"></a>01777 14, 12, 12, 12, 12, 12, 10, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 19, 31, 44, 44, 16, 44, 31,
-<a name="l01778"></a>01778 31, 31, 44, 44, 44, 44, 44, 12, 44, 44, 44, 44, 44, 44, 44, 44, 37, 44, 44, 44, 41, 41, 14, 14, 44,
-<a name="l01779"></a>01779 44, 44, 44, 33, 31, 31, 31, 28, 28, 47, 54, 23, 30, 47, 54, 23, 30, 37, 34, 44, 44, 44, 44, 44, 44,
-<a name="l01780"></a>01780 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 13, 12, 12, 12, 12, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01781"></a>01781 0, 0, 0, 0, 0, 0, 0, 0, 32, 58, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
-<a name="l01782"></a>01782 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 19, 19, 44, 36, 24, 12, 13, 12, 13, 25, 25, 12,
-<a name="l01783"></a>01783 13, 37, 34, 14, 14, 12, 13, 41, 41, 14, 14, 16, 22, 41, 41, 14, 14, 41, 41, 14, 14, 33, 31, 31, 31,
-<a name="l01784"></a>01784 33, 31, 31, 31, 33, 31, 31, 31, 20, 20, 20, 20, 28, 28, 28, 28, 48, 48, 31, 31, 48, 48, 31, 31, 64,
-<a name="l01785"></a>01785 64, 49, 49, 64, 64, 49, 49, 34, 34, 34, 34, 34, 34, 34, 34, 32, 26, 31, 23, 32, 26, 31, 23, 46, 46,
-<a name="l01786"></a>01786 16, 15, 34, 34, 16, 15, 35, 35, 23, 23, 29, 29, 12, 12, 20, 20, 23, 23, 31, 31, 14, 14, 16, 22, 26,
-<a name="l01787"></a>01787 23, 25, 25, 37, 34, 37, 34, 14, 14, 32, 35, 32, 35, 32, 35, 32, 35, 44, 44, 12, 12, 44, 44, 44, 10,
-<a name="l01788"></a>01788 12, 44, 44, 12, 14, 44, 44, 44, 12, 12, 12, 12, 12, 13, 44, 12, 12, 44, 44, 44, 44, 44, 44, 44, 44,
-<a name="l01789"></a>01789 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
-<a name="l01790"></a>01790 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 19, 19, 19, 44,
-<a name="l01791"></a>01791 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 7, 58,
-<a name="l01792"></a>01792 116, 50, 38, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 48, 48, 0,
-<a name="l01793"></a>01793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01794"></a>01794 0, 0, 0, 0, 0, 0, 0, 0, 13, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32,
-<a name="l01795"></a>01795 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 39, 32, 15,
-<a name="l01796"></a>01796 13, 15, 13, 45, 32, 45, 32, 45, 32, 45, 32, 45, 32, 45, 32, 45, 32, 50, 38, 50, 38, 50, 38, 50, 38,
-<a name="l01797"></a>01797 50, 38, 42, 32, 42, 32, 50, 39, 50, 39, 50, 39, 50, 39, 50, 39, 38, 27, 38, 27, 38, 27, 39, 32, 15,
-<a name="l01798"></a>01798 13, 45, 32, 42, 32, 42, 32, 42, 32, 42, 32, 42, 32, 0, 0, 0, 0, 31, 21, 54, 39, 34, 25, 34, 25,
-<a name="l01799"></a>01799 42, 32, 32, 29, 32, 29, 39, 29, 39, 30, 39, 32, 44, 32, 45, 32, 41, 14, 16, 15, 34, 14, 14, 14, 14,
-<a name="l01800"></a>01800 14, 14, 16, 12, 12, 19, 19, 12, 12, 12, 0, 12, 13, 12, 13, 12, 13, 12, 13, 25, 25, 25, 25, 37, 34,
-<a name="l01801"></a>01801 41, 41, 14, 14, 41, 41, 14, 14, 41, 41, 14, 14, 41, 41, 14, 14, 41, 41, 14, 14, 41, 41, 14, 14, 41,
-<a name="l01802"></a>01802 41, 14, 14, 33, 31, 31, 31, 33, 31, 31, 31, 33, 31, 31, 31, 33, 31, 31, 31, 33, 31, 31, 31, 33, 31,
-<a name="l01803"></a>01803 31, 31, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 28, 28, 28, 28, 28,
-<a name="l01804"></a>01804 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 48, 48, 31, 31, 48, 48, 31, 31, 48, 48, 31, 31, 64, 64,
-<a name="l01805"></a>01805 49, 49, 64, 64, 49, 49, 34, 34, 32, 26, 31, 23, 46, 46, 46, 16, 15, 46, 46, 16, 15, 46, 46, 16, 15,
-<a name="l01806"></a>01806 46, 46, 16, 15, 46, 46, 16, 15, 34, 34, 34, 34, 47, 54, 23, 30, 47, 54, 23, 30, 35, 35, 23, 23, 35,
-<a name="l01807"></a>01807 35, 23, 23, 35, 35, 23, 23, 47, 54, 23, 30, 47, 54, 23, 30, 47, 54, 23, 30, 47, 54, 23, 30, 47, 54,
-<a name="l01808"></a>01808 23, 30, 29, 29, 12, 12, 29, 29, 12, 12, 29, 29, 12, 12, 29, 29, 12, 12, 31, 31, 14, 14, 31, 31, 31,
-<a name="l01809"></a>01809 31, 31, 31, 14, 14, 31, 31, 33, 31, 31, 31, 16, 22, 22, 22, 22, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-<a name="l01810"></a>01810 25, 25, 25, 25, 25, 25, 25, 37, 34, 37, 34, 14, 14, 25, 25, 37, 34, 14, 14, 37, 34, 47, 47, 47, 47,
-<a name="l01811"></a>01811 12, 0, 0, 0, 0, 0, 0, 0, 65, 63, 0, 0, 0, 0, 0, 0, 11, 21, 0, 0, 35, 0, 0, 0, 48,
-<a name="l01812"></a>01812 48, 31, 31, 64, 64, 49, 49, 32, 26, 31, 23, 24, 20, 16, 14, 19, 14, 14, 14, 14, 14, 47, 54, 14, 0,
-<a name="l01813"></a>01813 20, 29, 32, 35, 32, 35, 32, 35, 32, 35, 32, 35, 32, 35, 32, 35, 31, 31, 32, 35, 67, -122, 50, 0, 19,
-<a name="l01814"></a>01814 19, 22, 24, 37, 37, 60, 45, 13, 22, 22, 26, 39, 19, 22, 19, 19, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-<a name="l01815"></a>01815 37, 19, 19, 39, 39, 39, 37, 68, 45, 45, 48, 48, 45, 41, 52, 48, 19, 34, 45, 37, 55, 48, 52, 45, 52,
-<a name="l01816"></a>01816 48, 45, 41, 48, 45, 66, 43, 45, 41, 19, 19, 19, 30, 37, 22, 37, 37, 34, 37, 37, 19, 37, 37, 15, 15,
-<a name="l01817"></a>01817 34, 15, 57, 37, 37, 37, 37, 22, 34, 19, 37, 33, 47, 32, 33, 33, 22, 17, 22, 39, 45, 45, 48, 45, 48,
-<a name="l01818"></a>01818 52, 48, 37, 37, 37, 37, 37, 37, 34, 37, 37, 37, 37, 18, 18, 18, 18, 37, 37, 37, 37, 37, 37, 37, 37,
-<a name="l01819"></a>01819 37, 37, 37, 27, 37, 37, 37, 23, 36, 41, 49, 49, 67, 22, 22, 37, 67, 52, 48, 37, 37, 37, 37, 39, 33,
-<a name="l01820"></a>01820 48, 55, 37, 20, 25, 24, 51, 60, 41, 41, 22, 39, 37, 37, 37, 41, 37, 37, 67, 45, 45, 52, 67, 63, 37,
-<a name="l01821"></a>01821 67, 22, 22, 15, 15, 37, 33, 33, 45, 11, 37, 22, 22, 34, 34, 37, 19, 15, 22, 67, 45, 45, 45, 45, 45,
-<a name="l01822"></a>01822 19, 19, 19, 19, 52, 52, 52, 48, 48, 48, 18, 22, 20, 22, 22, 22, 22, 22, 22, 22, 22, 37, 15, 45, 34,
-<a name="l01823"></a>01823 41, 33, 17, 48, 37, 45, 33, 45, 37, 39, 39, 22, 22, 22, 56, 56, 56, 37, 52, 37, 19, 45, 34, 48, 34,
-<a name="l01824"></a>01824 48, 34, 37, 37, 22, 45, 37, 45, 37, 48, 41, 48, 45, 37, 45, 37, 37, 15, 37, 20, 37, 22, 48, 37, 48,
-<a name="l01825"></a>01825 37, 52, 37, 48, 22, 48, 22, 45, 34, 41, 19, 41, 25, 48, 37, 48, 37, 41, 33, 41, 33, 37, 52, 53, 39,
-<a name="l01826"></a>01826 37, 30, 41, 26, 43, 37, 34, 24, 73, 67, 34, 67, 34, 67, 34, 34, 66, 48, 39, 40, 39, 40, 40, 47, 42,
-<a name="l01827"></a>01827 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
-<a name="l01828"></a>01828 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 40, 67, 66, 66,
-<a name="l01829"></a>01829 66, 66, 40, 40, 40, 68, 71, 61, 50, 50, 36, 44, 40, 34, 34, 50, 49, 30, 40, 13, 24, 59, 22, 40, 24,
-<a name="l01830"></a>01830 24, 40, 24, 45, 37, 48, 34, 48, 34, 45, 37, 45, 37, 45, 37, 52, 37, 52, 37, 52, 37, 48, 37, 48, 37,
-<a name="l01831"></a>01831 19, 18, 19, 18, 19, 18, 19, 15, 34, 15, 45, 34, 34, 37, 15, 48, 37, 48, 37, 52, 37, 52, 37, 48, 22,
-<a name="l01832"></a>01832 45, 34, 41, 19, 48, 37, 48, 37, 48, 37, 48, 37, 66, 47, 45, 33, 15, 45, 37, 67, 60, 52, 41, 18, 66,
-<a name="l01833"></a>01833 47, 66, 47, 66, 47, 45, 33, 15, 22, 37, 40, 56, 56, 56, 56, 22, 22, 22, 22, 45, 53, 56, 26, 52, 56,
-<a name="l01834"></a>01834 50, 15, 45, 45, 45, 45, 41, 48, 19, 45, 45, 55, 48, 44, 52, 48, 45, 41, 41, 45, 43, 56, 50, 19, 45,
-<a name="l01835"></a>01835 39, 30, 37, 15, 37, 39, 34, 30, 37, 37, 15, 34, 34, 39, 33, 30, 37, 38, 32, 37, 35, 48, 52, 15, 37,
-<a name="l01836"></a>01836 37, 37, 52, 45, 58, 36, 48, 45, 19, 19, 34, 71, 68, 57, 39, 43, 48, 45, 44, 45, 36, 45, 45, 62, 40,
-<a name="l01837"></a>01837 48, 48, 39, 44, 55, 48, 52, 48, 45, 48, 41, 43, 51, 43, 50, 45, 61, 63, 53, 59, 44, 48, 68, 48, 37,
-<a name="l01838"></a>01838 38, 36, 24, 39, 37, 45, 31, 37, 37, 29, 39, 46, 37, 37, 36, 37, 34, 31, 33, 55, 32, 38, 35, 54, 55,
-<a name="l01839"></a>01839 42, 48, 35, 34, 50, 36, 37, 37, 24, 34, 34, 15, 18, 15, 61, 54, 37, 29, 33, 37, 33, 28, 67, 72, 46,
-<a name="l01840"></a>01840 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 17, 22, 22, 19, 38, 36, 27, 34, 40, 17,
-<a name="l01841"></a>01841 26, 40, 40, 17, 34, 31, 31, 40, 40, 17, 24, 38, 35, 38, 37, 31, 32, 37, 34, 47, 43, 34, 34, 34, 16,
-<a name="l01842"></a>01842 28, 55, 17, 34, 34, 31, 31, 36, 47, 47, 47, 47, 38, 38, 38, 36, 27, 34, 40, 19, 28, 40, 19, 34, 31,
-<a name="l01843"></a>01843 31, 40, 24, 38, 38, 37, 32, 37, 34, 47, 43, 17, 36, 31, 37, 39, 0, 0, 0, 0, 21, 21, 24, 28, 14,
-<a name="l01844"></a>01844 13, 16, 13, 13, 14, 13, 14, 11, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 21, 35, 50, 50, 19, 50,
-<a name="l01845"></a>01845 35, 35, 35, 50, 50, 50, 50, 50, 14, 50, 50, 50, 50, 50, 50, 50, 50, 43, 50, 50, 50, 48, 48, 16, 16,
-<a name="l01846"></a>01846 50, 50, 50, 50, 38, 35, 36, 36, 33, 33, 54, 62, 26, 34, 54, 62, 26, 34, 43, 39, 50, 50, 50, 50, 50,
-<a name="l01847"></a>01847 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 15, 14, 14, 14, 14, 50, 50, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01848"></a>01848 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 67, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
-<a name="l01849"></a>01849 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 21, 21, 50, 41, 28, 14, 15, 14, 15, 29, 29,
-<a name="l01850"></a>01850 14, 15, 43, 39, 16, 16, 14, 15, 48, 48, 16, 16, 19, 25, 48, 48, 16, 16, 48, 48, 16, 16, 38, 35, 36,
-<a name="l01851"></a>01851 36, 38, 35, 36, 36, 38, 35, 36, 36, 23, 23, 23, 23, 33, 33, 33, 33, 55, 55, 36, 36, 55, 55, 36, 36,
-<a name="l01852"></a>01852 74, 74, 57, 57, 74, 74, 57, 57, 39, 39, 39, 39, 39, 39, 39, 39, 36, 30, 35, 26, 36, 30, 35, 26, 53,
-<a name="l01853"></a>01853 53, 18, 18, 39, 39, 18, 18, 40, 40, 26, 26, 34, 34, 14, 14, 23, 23, 26, 26, 35, 35, 16, 16, 19, 25,
-<a name="l01854"></a>01854 30, 26, 29, 29, 43, 39, 43, 39, 16, 16, 36, 40, 36, 40, 36, 40, 36, 40, 50, 50, 13, 13, 50, 50, 50,
-<a name="l01855"></a>01855 11, 14, 50, 50, 14, 16, 50, 50, 50, 14, 14, 14, 14, 14, 15, 50, 13, 13, 50, 50, 50, 50, 50, 50, 50,
-<a name="l01856"></a>01856 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
-<a name="l01857"></a>01857 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 21, 21, 21,
-<a name="l01858"></a>01858 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 8,
-<a name="l01859"></a>01859 67, -122, 57, 44, 57, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 56, 56,
-<a name="l01860"></a>01860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01861"></a>01861 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45,
-<a name="l01862"></a>01862 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37, 45, 37,
-<a name="l01863"></a>01863 19, 15, 19, 15, 52, 37, 52, 37, 52, 37, 52, 37, 52, 37, 52, 37, 52, 37, 57, 44, 57, 44, 57, 44, 57,
-<a name="l01864"></a>01864 44, 57, 44, 48, 37, 48, 37, 57, 45, 57, 45, 57, 45, 57, 45, 57, 45, 45, 33, 45, 33, 45, 33, 45, 37,
-<a name="l01865"></a>01865 19, 15, 52, 37, 48, 37, 48, 37, 48, 37, 48, 37, 48, 37, 0, 0, 0, 0, 36, 24, 62, 45, 39, 29, 39,
-<a name="l01866"></a>01866 29, 48, 37, 37, 34, 37, 34, 45, 34, 45, 35, 45, 37, 50, 37, 52, 37, 48, 16, 18, 18, 39, 16, 16, 16,
-<a name="l01867"></a>01867 16, 16, 16, 18, 14, 14, 22, 22, 14, 14, 14, 0, 14, 15, 14, 15, 14, 15, 14, 15, 29, 29, 29, 29, 43,
-<a name="l01868"></a>01868 39, 48, 48, 16, 16, 48, 48, 16, 16, 48, 48, 16, 16, 48, 48, 16, 16, 48, 48, 16, 16, 48, 48, 16, 16,
-<a name="l01869"></a>01869 48, 48, 16, 16, 38, 35, 36, 36, 38, 35, 36, 36, 38, 35, 36, 36, 38, 35, 36, 36, 38, 35, 36, 36, 38,
-<a name="l01870"></a>01870 35, 36, 36, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 33, 33, 33, 33,
-<a name="l01871"></a>01871 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 55, 55, 36, 36, 55, 55, 36, 36, 55, 55, 36, 36, 74,
-<a name="l01872"></a>01872 74, 57, 57, 74, 74, 57, 57, 39, 39, 36, 30, 35, 26, 53, 53, 53, 18, 18, 53, 53, 18, 18, 53, 53, 18,
-<a name="l01873"></a>01873 18, 53, 53, 18, 18, 53, 53, 18, 18, 39, 39, 39, 39, 54, 62, 26, 34, 54, 62, 26, 34, 40, 40, 26, 26,
-<a name="l01874"></a>01874 40, 40, 26, 26, 40, 40, 26, 26, 54, 62, 26, 34, 54, 62, 26, 34, 54, 62, 26, 34, 54, 62, 26, 34, 54,
-<a name="l01875"></a>01875 62, 26, 34, 34, 34, 14, 14, 34, 34, 14, 14, 34, 34, 14, 14, 34, 34, 14, 14, 35, 35, 16, 16, 35, 35,
-<a name="l01876"></a>01876 35, 35, 35, 35, 16, 16, 35, 35, 38, 35, 36, 36, 19, 25, 26, 26, 26, 29, 29, 29, 29, 29, 29, 29, 29,
-<a name="l01877"></a>01877 29, 29, 29, 29, 29, 29, 29, 29, 43, 39, 43, 39, 16, 16, 29, 29, 43, 39, 16, 16, 43, 39, 54, 54, 54,
-<a name="l01878"></a>01878 54, 14, 0, 0, 0, 0, 0, 0, 0, 75, 73, 0, 0, 0, 0, 0, 0, 13, 25, 0, 0, 40, 0, 0, 0,
-<a name="l01879"></a>01879 55, 55, 36, 36, 74, 74, 57, 57, 36, 30, 35, 26, 28, 23, 19, 16, 21, 16, 16, 16, 16, 16, 54, 62, 17,
-<a name="l01880"></a>01880 0, 23, 34, 36, 40, 36, 40, 36, 40, 36, 40, 36, 40, 36, 40, 36, 40, 35, 35, 36, 40, 75, -106, 56, 0,
-<a name="l01881"></a>01881 21, 21, 23, 27, 42, 42, 67, 50, 14, 25, 25, 29, 44, 21, 25, 21, 21, 42, 42, 42, 42, 42, 42, 42, 42,
-<a name="l01882"></a>01882 42, 42, 21, 21, 44, 44, 44, 42, 76, 50, 50, 54, 54, 50, 46, 58, 54, 21, 38, 50, 42, 61, 54, 58, 50,
-<a name="l01883"></a>01883 58, 54, 50, 45, 54, 50, 75, 49, 49, 46, 21, 21, 21, 34, 42, 25, 42, 42, 38, 42, 42, 21, 42, 42, 17,
-<a name="l01884"></a>01884 17, 38, 17, 63, 42, 42, 42, 42, 25, 38, 21, 42, 37, 53, 36, 37, 37, 25, 20, 25, 44, 50, 50, 54, 50,
-<a name="l01885"></a>01885 54, 58, 54, 42, 42, 42, 42, 42, 42, 38, 42, 42, 42, 42, 21, 21, 21, 21, 42, 42, 42, 42, 42, 42, 42,
-<a name="l01886"></a>01886 42, 42, 42, 42, 30, 42, 42, 42, 26, 40, 46, 55, 55, 75, 25, 25, 41, 75, 58, 53, 41, 41, 41, 42, 43,
-<a name="l01887"></a>01887 37, 53, 62, 41, 23, 28, 27, 58, 67, 46, 46, 23, 44, 41, 42, 41, 46, 42, 42, 75, 50, 50, 58, 75, 71,
-<a name="l01888"></a>01888 42, 75, 25, 25, 17, 17, 41, 37, 37, 49, 13, 42, 25, 25, 38, 38, 42, 21, 17, 25, 76, 50, 50, 50, 50,
-<a name="l01889"></a>01889 50, 21, 21, 21, 21, 58, 58, 58, 54, 54, 54, 21, 25, 24, 25, 25, 25, 25, 25, 25, 25, 25, 42, 17, 50,
-<a name="l01890"></a>01890 38, 46, 37, 20, 54, 42, 49, 37, 50, 42, 44, 44, 25, 25, 25, 63, 63, 63, 42, 58, 42, 21, 50, 38, 54,
-<a name="l01891"></a>01891 38, 54, 38, 42, 41, 25, 50, 42, 50, 42, 54, 46, 54, 50, 42, 50, 42, 42, 17, 42, 22, 42, 25, 54, 42,
-<a name="l01892"></a>01892 54, 42, 58, 42, 54, 25, 54, 25, 50, 38, 45, 21, 45, 28, 54, 42, 54, 42, 46, 37, 46, 37, 41, 58, 60,
-<a name="l01893"></a>01893 43, 42, 33, 46, 30, 49, 41, 38, 27, 82, 75, 38, 75, 38, 75, 38, 38, 73, 54, 44, 45, 44, 45, 45, 53,
-<a name="l01894"></a>01894 47, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-<a name="l01895"></a>01895 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 55, 45, 75, 74,
-<a name="l01896"></a>01896 74, 74, 74, 45, 45, 45, 77, 79, 69, 56, 56, 40, 49, 45, 38, 38, 56, 55, 33, 45, 14, 27, 66, 24, 45,
-<a name="l01897"></a>01897 27, 27, 45, 27, 50, 42, 54, 38, 54, 38, 50, 42, 50, 42, 50, 42, 58, 42, 58, 42, 58, 42, 54, 42, 54,
-<a name="l01898"></a>01898 42, 21, 21, 21, 21, 21, 21, 21, 17, 38, 17, 50, 38, 38, 42, 17, 54, 42, 54, 42, 58, 42, 58, 42, 54,
-<a name="l01899"></a>01899 25, 50, 38, 46, 21, 54, 42, 54, 42, 54, 42, 54, 42, 75, 53, 49, 37, 17, 50, 42, 75, 67, 58, 46, 21,
-<a name="l01900"></a>01900 75, 53, 75, 53, 75, 53, 49, 37, 17, 25, 42, 45, 63, 63, 63, 63, 25, 25, 25, 25, 50, 59, 63, 29, 58,
-<a name="l01901"></a>01901 62, 56, 17, 50, 50, 50, 50, 46, 54, 21, 50, 50, 61, 54, 49, 58, 54, 50, 46, 45, 49, 49, 63, 56, 21,
-<a name="l01902"></a>01902 49, 43, 33, 42, 17, 41, 43, 38, 33, 42, 42, 17, 38, 38, 43, 37, 34, 42, 43, 36, 41, 39, 53, 59, 17,
-<a name="l01903"></a>01903 41, 42, 41, 59, 50, 65, 41, 54, 50, 21, 21, 38, 79, 76, 64, 44, 48, 54, 50, 49, 50, 41, 51, 50, 69,
-<a name="l01904"></a>01904 45, 54, 54, 44, 49, 61, 54, 58, 54, 50, 54, 45, 48, 57, 49, 55, 50, 69, 70, 59, 66, 49, 54, 76, 54,
-<a name="l01905"></a>01905 42, 43, 40, 27, 44, 42, 50, 34, 42, 42, 33, 44, 52, 41, 42, 41, 42, 38, 34, 37, 62, 36, 43, 39, 60,
-<a name="l01906"></a>01906 62, 47, 54, 39, 38, 56, 41, 42, 42, 27, 38, 38, 17, 21, 17, 68, 61, 42, 33, 37, 41, 37, 31, 75, 80,
-<a name="l01907"></a>01907 52, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 29, 25, 19, 25, 25, 21, 42, 41, 30, 38, 45,
-<a name="l01908"></a>01908 19, 29, 45, 44, 19, 38, 35, 35, 45, 45, 19, 26, 43, 40, 42, 41, 35, 36, 41, 38, 52, 48, 37, 37, 37,
-<a name="l01909"></a>01909 18, 31, 60, 19, 38, 38, 35, 35, 40, 52, 52, 52, 52, 42, 42, 42, 41, 30, 38, 45, 22, 31, 44, 22, 38,
-<a name="l01910"></a>01910 35, 35, 45, 26, 43, 42, 41, 36, 41, 38, 52, 48, 19, 41, 35, 41, 43, 0, 0, 0, 0, 24, 24, 27, 31,
-<a name="l01911"></a>01911 16, 15, 18, 15, 15, 16, 15, 16, 12, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 24, 39, 56, 56, 21,
-<a name="l01912"></a>01912 56, 39, 39, 39, 56, 56, 56, 56, 56, 16, 56, 56, 56, 56, 56, 56, 56, 56, 48, 56, 56, 56, 54, 54, 18,
-<a name="l01913"></a>01913 18, 56, 56, 56, 56, 42, 39, 40, 40, 37, 37, 61, 70, 30, 39, 61, 70, 30, 39, 48, 44, 56, 56, 56, 56,
-<a name="l01914"></a>01914 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 17, 16, 16, 16, 16, 56, 56, 0, 0, 0, 0, 0, 0,
-<a name="l01915"></a>01915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 75, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-<a name="l01916"></a>01916 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 24, 24, 56, 46, 31, 16, 17, 16, 17, 32,
-<a name="l01917"></a>01917 32, 16, 17, 48, 44, 18, 18, 16, 17, 54, 54, 18, 18, 21, 28, 54, 54, 18, 18, 54, 54, 18, 18, 42, 39,
-<a name="l01918"></a>01918 40, 40, 42, 39, 40, 40, 42, 39, 40, 40, 25, 25, 25, 25, 37, 37, 37, 37, 62, 62, 40, 40, 62, 62, 40,
-<a name="l01919"></a>01919 40, 82, 82, 63, 63, 82, 82, 63, 63, 44, 44, 44, 44, 44, 44, 44, 44, 41, 34, 39, 30, 41, 34, 39, 30,
-<a name="l01920"></a>01920 59, 59, 20, 20, 44, 44, 20, 20, 45, 45, 30, 30, 38, 38, 16, 16, 25, 25, 30, 30, 39, 39, 18, 18, 21,
-<a name="l01921"></a>01921 28, 34, 30, 32, 32, 48, 44, 48, 44, 18, 18, 41, 45, 41, 45, 41, 45, 41, 45, 56, 56, 15, 15, 56, 56,
-<a name="l01922"></a>01922 56, 12, 16, 56, 56, 16, 18, 56, 56, 56, 16, 16, 16, 16, 16, 17, 56, 15, 15, 56, 56, 56, 56, 56, 56,
-<a name="l01923"></a>01923 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-<a name="l01924"></a>01924 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 24, 24,
-<a name="l01925"></a>01925 24, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-<a name="l01926"></a>01926 9, 75, -106, 64, 49, 64, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 63,
-<a name="l01927"></a>01927 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01928"></a>01928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42,
-<a name="l01929"></a>01929 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50, 42, 50,
-<a name="l01930"></a>01930 42, 21, 17, 21, 17, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 64, 49, 64, 49, 64, 49,
-<a name="l01931"></a>01931 64, 49, 64, 49, 54, 42, 54, 42, 64, 50, 64, 50, 64, 50, 64, 50, 64, 50, 49, 37, 49, 37, 49, 37, 50,
-<a name="l01932"></a>01932 42, 21, 17, 58, 42, 54, 42, 54, 42, 54, 42, 54, 42, 54, 42, 0, 0, 0, 0, 41, 27, 69, 50, 44, 33,
-<a name="l01933"></a>01933 44, 33, 54, 41, 42, 38, 42, 38, 50, 38, 50, 39, 50, 42, 56, 42, 58, 42, 54, 18, 20, 20, 44, 18, 18,
-<a name="l01934"></a>01934 18, 18, 18, 18, 20, 16, 16, 25, 25, 16, 16, 16, 0, 16, 17, 16, 17, 16, 17, 16, 17, 32, 32, 32, 32,
-<a name="l01935"></a>01935 48, 44, 54, 54, 18, 18, 54, 54, 18, 18, 54, 54, 18, 18, 54, 54, 18, 18, 54, 54, 18, 18, 54, 54, 18,
-<a name="l01936"></a>01936 18, 54, 54, 18, 18, 42, 39, 40, 40, 42, 39, 40, 40, 42, 39, 40, 40, 42, 39, 40, 40, 42, 39, 40, 40,
-<a name="l01937"></a>01937 42, 39, 40, 40, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 37, 37, 37,
-<a name="l01938"></a>01938 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 62, 62, 40, 40, 62, 62, 40, 40, 62, 62, 40, 40,
-<a name="l01939"></a>01939 82, 82, 63, 63, 82, 82, 63, 63, 44, 44, 41, 34, 39, 30, 59, 59, 59, 20, 20, 59, 59, 20, 20, 59, 59,
-<a name="l01940"></a>01940 20, 20, 59, 59, 20, 20, 59, 59, 20, 20, 44, 44, 44, 44, 61, 70, 30, 39, 61, 70, 30, 39, 45, 45, 30,
-<a name="l01941"></a>01941 30, 45, 45, 30, 30, 45, 45, 30, 30, 61, 70, 30, 39, 61, 70, 30, 39, 61, 70, 30, 39, 61, 70, 30, 39,
-<a name="l01942"></a>01942 61, 70, 30, 39, 38, 38, 16, 16, 38, 38, 16, 16, 38, 38, 16, 16, 38, 38, 16, 16, 39, 39, 18, 18, 39,
-<a name="l01943"></a>01943 39, 39, 39, 39, 39, 18, 18, 39, 39, 42, 39, 40, 40, 21, 28, 29, 29, 29, 32, 32, 32, 32, 32, 32, 32,
-<a name="l01944"></a>01944 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 44, 48, 44, 18, 18, 32, 32, 48, 44, 18, 18, 48, 44, 61, 61,
-<a name="l01945"></a>01945 61, 61, 16, 0, 0, 0, 0, 0, 0, 0, 84, 81, 0, 0, 0, 0, 0, 0, 15, 28, 0, 0, 45, 0, 0,
-<a name="l01946"></a>01946 0, 62, 62, 40, 40, 82, 82, 63, 63, 41, 34, 39, 30, 31, 25, 21, 18, 24, 18, 18, 18, 18, 18, 61, 70,
-<a name="l01947"></a>01947 19, 0, 26, 37, 41, 45, 41, 45, 41, 45, 41, 45, 41, 45, 41, 45, 41, 45, 39, 39, 41, 45, 83, -90, 62,
-<a name="l01948"></a>01948 0, 23, 23, 25, 29, 46, 46, 74, 55, 16, 28, 28, 32, 48, 23, 28, 23, 23, 46, 46, 46, 46, 46, 46, 46,
-<a name="l01949"></a>01949 46, 46, 46, 23, 23, 48, 48, 48, 46, 84, 55, 55, 60, 60, 55, 51, 65, 60, 23, 42, 55, 46, 69, 60, 65,
-<a name="l01950"></a>01950 55, 65, 60, 55, 52, 60, 55, 83, 56, 54, 51, 23, 23, 23, 38, 46, 28, 46, 46, 42, 46, 46, 24, 46, 46,
-<a name="l01951"></a>01951 18, 19, 43, 18, 71, 46, 46, 46, 46, 28, 42, 23, 46, 41, 59, 42, 39, 40, 28, 20, 28, 48, 55, 55, 60,
-<a name="l01952"></a>01952 55, 60, 65, 60, 46, 46, 46, 46, 46, 46, 42, 46, 46, 46, 46, 23, 23, 23, 23, 46, 46, 46, 46, 46, 46,
-<a name="l01953"></a>01953 46, 46, 46, 46, 46, 33, 46, 46, 46, 29, 45, 51, 61, 61, 83, 28, 28, 46, 83, 65, 59, 46, 46, 46, 46,
-<a name="l01954"></a>01954 48, 41, 59, 68, 46, 23, 31, 30, 64, 74, 51, 51, 25, 48, 46, 46, 46, 50, 46, 46, 83, 55, 55, 65, 83,
-<a name="l01955"></a>01955 78, 46, 83, 28, 28, 18, 18, 46, 41, 39, 54, 14, 46, 28, 28, 42, 42, 46, 23, 18, 28, 83, 55, 55, 55,
-<a name="l01956"></a>01956 55, 55, 23, 23, 23, 23, 65, 65, 65, 60, 60, 60, 23, 28, 24, 28, 28, 28, 28, 28, 28, 28, 28, 46, 18,
-<a name="l01957"></a>01957 55, 42, 51, 40, 20, 60, 46, 54, 39, 55, 46, 48, 48, 28, 28, 28, 69, 69, 69, 46, 65, 46, 23, 55, 42,
-<a name="l01958"></a>01958 60, 42, 60, 42, 46, 46, 28, 55, 46, 55, 46, 60, 51, 60, 55, 46, 55, 46, 46, 18, 46, 24, 46, 28, 60,
-<a name="l01959"></a>01959 46, 60, 46, 65, 46, 60, 28, 60, 28, 55, 42, 52, 24, 52, 31, 60, 46, 60, 46, 51, 40, 51, 40, 46, 65,
-<a name="l01960"></a>01960 66, 48, 46, 37, 51, 33, 54, 46, 42, 30, 90, 83, 42, 83, 42, 83, 42, 42, 81, 60, 48, 50, 48, 50, 50,
-<a name="l01961"></a>01961 59, 52, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
-<a name="l01962"></a>01962 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 50, 83,
-<a name="l01963"></a>01963 82, 82, 82, 82, 50, 50, 50, 85, 87, 76, 62, 62, 44, 54, 49, 42, 42, 62, 61, 37, 50, 16, 29, 73, 27,
-<a name="l01964"></a>01964 50, 29, 29, 50, 29, 55, 46, 60, 42, 60, 42, 55, 46, 55, 46, 55, 46, 65, 46, 65, 46, 65, 46, 60, 46,
-<a name="l01965"></a>01965 60, 46, 23, 23, 23, 23, 23, 23, 23, 18, 42, 19, 55, 43, 42, 46, 18, 60, 46, 60, 46, 65, 46, 65, 46,
-<a name="l01966"></a>01966 60, 28, 55, 42, 51, 23, 60, 46, 60, 46, 60, 46, 60, 46, 83, 59, 54, 39, 18, 55, 46, 83, 74, 65, 51,
-<a name="l01967"></a>01967 21, 83, 59, 83, 59, 83, 59, 54, 39, 18, 28, 46, 50, 69, 69, 69, 69, 28, 28, 28, 28, 55, 65, 70, 32,
-<a name="l01968"></a>01968 64, 68, 62, 18, 55, 55, 55, 55, 51, 60, 23, 55, 55, 69, 60, 54, 65, 60, 55, 51, 52, 54, 56, 69, 62,
-<a name="l01969"></a>01969 23, 54, 48, 37, 46, 18, 45, 48, 42, 37, 46, 46, 18, 42, 42, 48, 41, 37, 46, 47, 40, 45, 44, 59, 65,
-<a name="l01970"></a>01970 18, 45, 46, 45, 65, 55, 72, 45, 60, 55, 23, 23, 42, 88, 84, 71, 48, 53, 60, 55, 54, 55, 45, 56, 55,
-<a name="l01971"></a>01971 77, 50, 60, 60, 48, 54, 69, 60, 65, 60, 55, 60, 52, 53, 63, 56, 61, 55, 76, 78, 66, 73, 54, 60, 84,
-<a name="l01972"></a>01972 60, 46, 48, 44, 30, 48, 46, 56, 38, 46, 46, 36, 48, 57, 46, 46, 45, 46, 42, 38, 39, 68, 42, 48, 43,
-<a name="l01973"></a>01973 67, 68, 52, 60, 43, 42, 62, 45, 46, 46, 30, 42, 42, 18, 23, 19, 75, 67, 46, 36, 39, 46, 41, 34, 83,
-<a name="l01974"></a>01974 89, 57, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 32, 28, 20, 28, 28, 23, 47, 45, 33, 42,
-<a name="l01975"></a>01975 50, 20, 32, 50, 49, 20, 42, 38, 38, 50, 50, 20, 29, 48, 44, 47, 45, 38, 40, 46, 42, 58, 53, 41, 41,
-<a name="l01976"></a>01976 41, 20, 35, 67, 20, 42, 42, 38, 38, 44, 58, 58, 58, 58, 47, 47, 47, 45, 33, 42, 50, 24, 34, 49, 24,
-<a name="l01977"></a>01977 42, 38, 38, 50, 29, 48, 47, 45, 40, 46, 42, 58, 53, 20, 45, 38, 45, 48, 0, 0, 0, 0, 26, 26, 30,
-<a name="l01978"></a>01978 34, 17, 17, 20, 17, 17, 17, 17, 18, 14, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 26, 44, 62, 62,
-<a name="l01979"></a>01979 23, 62, 44, 44, 44, 62, 62, 62, 62, 62, 18, 62, 62, 62, 62, 62, 62, 62, 62, 53, 62, 62, 62, 59, 59,
-<a name="l01980"></a>01980 20, 20, 62, 62, 62, 62, 47, 44, 44, 44, 41, 41, 67, 77, 33, 43, 67, 77, 33, 43, 53, 49, 62, 62, 62,
-<a name="l01981"></a>01981 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 19, 18, 18, 18, 18, 62, 62, 0, 0, 0, 0, 0,
-<a name="l01982"></a>01982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 83, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
-<a name="l01983"></a>01983 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 26, 26, 62, 51, 34, 17, 19, 17, 19,
-<a name="l01984"></a>01984 36, 36, 17, 19, 53, 49, 20, 20, 17, 19, 59, 59, 20, 20, 23, 31, 59, 59, 20, 20, 59, 59, 20, 20, 47,
-<a name="l01985"></a>01985 44, 44, 44, 47, 44, 44, 44, 47, 44, 44, 44, 28, 28, 28, 28, 41, 41, 41, 41, 68, 68, 44, 44, 68, 68,
-<a name="l01986"></a>01986 44, 44, 91, 91, 70, 70, 91, 91, 70, 70, 48, 48, 48, 48, 48, 48, 48, 48, 45, 37, 44, 33, 45, 37, 44,
-<a name="l01987"></a>01987 33, 65, 65, 22, 22, 48, 48, 22, 22, 50, 50, 33, 33, 42, 42, 17, 17, 28, 28, 33, 33, 44, 44, 20, 20,
-<a name="l01988"></a>01988 23, 31, 37, 33, 36, 36, 53, 49, 53, 49, 20, 20, 45, 50, 45, 50, 45, 50, 45, 50, 62, 62, 17, 17, 62,
-<a name="l01989"></a>01989 62, 62, 14, 18, 62, 62, 17, 20, 62, 62, 62, 18, 18, 18, 18, 18, 19, 62, 17, 17, 62, 62, 62, 62, 62,
-<a name="l01990"></a>01990 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
-<a name="l01991"></a>01991 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 26,
-<a name="l01992"></a>01992 26, 26, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
-<a name="l01993"></a>01993 62, 10, 83, -90, 71, 54, 71, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
-<a name="l01994"></a>01994 69, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l01995"></a>01995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55,
-<a name="l01996"></a>01996 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46, 55, 46,
-<a name="l01997"></a>01997 55, 46, 23, 18, 23, 18, 65, 46, 65, 46, 65, 46, 65, 46, 65, 46, 65, 46, 65, 46, 71, 54, 71, 54, 71,
-<a name="l01998"></a>01998 54, 71, 54, 71, 54, 60, 46, 60, 46, 71, 56, 71, 56, 71, 56, 71, 56, 71, 56, 54, 39, 54, 39, 54, 39,
-<a name="l01999"></a>01999 55, 46, 23, 18, 65, 46, 60, 46, 60, 46, 60, 46, 60, 46, 60, 46, 0, 0, 0, 0, 45, 30, 77, 56, 48,
-<a name="l02000"></a>02000 36, 48, 36, 60, 46, 46, 42, 46, 42, 55, 42, 55, 43, 55, 46, 62, 46, 65, 46, 59, 20, 22, 22, 48, 20,
-<a name="l02001"></a>02001 20, 20, 20, 20, 20, 22, 17, 17, 28, 28, 17, 17, 17, 0, 17, 19, 17, 19, 17, 19, 17, 19, 36, 36, 36,
-<a name="l02002"></a>02002 36, 53, 49, 59, 59, 20, 20, 59, 59, 20, 20, 59, 59, 20, 20, 59, 59, 20, 20, 59, 59, 20, 20, 59, 59,
-<a name="l02003"></a>02003 20, 20, 59, 59, 20, 20, 47, 44, 44, 44, 47, 44, 44, 44, 47, 44, 44, 44, 47, 44, 44, 44, 47, 44, 44,
-<a name="l02004"></a>02004 44, 47, 44, 44, 44, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 41, 41,
-<a name="l02005"></a>02005 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 68, 68, 44, 44, 68, 68, 44, 44, 68, 68, 44,
-<a name="l02006"></a>02006 44, 91, 91, 70, 70, 91, 91, 70, 70, 48, 48, 45, 37, 44, 33, 65, 65, 65, 22, 22, 65, 65, 22, 22, 65,
-<a name="l02007"></a>02007 65, 22, 22, 65, 65, 22, 22, 65, 65, 22, 22, 48, 48, 48, 48, 67, 77, 33, 43, 67, 77, 33, 43, 50, 50,
-<a name="l02008"></a>02008 33, 33, 50, 50, 33, 33, 50, 50, 33, 33, 67, 77, 33, 43, 67, 77, 33, 43, 67, 77, 33, 43, 67, 77, 33,
-<a name="l02009"></a>02009 43, 67, 77, 33, 43, 42, 42, 17, 17, 42, 42, 17, 17, 42, 42, 17, 17, 42, 42, 17, 17, 44, 44, 20, 20,
-<a name="l02010"></a>02010 44, 44, 44, 44, 44, 44, 20, 20, 44, 44, 47, 44, 44, 44, 23, 31, 32, 32, 32, 36, 36, 36, 36, 36, 36,
-<a name="l02011"></a>02011 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 53, 49, 53, 49, 20, 20, 36, 36, 53, 49, 20, 20, 53, 49, 67,
-<a name="l02012"></a>02012 67, 67, 67, 17, 0, 0, 0, 0, 0, 0, 0, 93, 90, 0, 0, 0, 0, 0, 0, 16, 31, 0, 0, 50, 0,
-<a name="l02013"></a>02013 0, 0, 68, 68, 44, 44, 91, 91, 70, 70, 45, 37, 44, 33, 34, 28, 23, 20, 27, 20, 20, 20, 20, 20, 67,
-<a name="l02014"></a>02014 77, 20, 0, 28, 41, 45, 50, 45, 50, 45, 50, 45, 50, 45, 50, 45, 50, 45, 50, 44, 44, 45, 50, 92, -72,
-<a name="l02015"></a>02015 69, 0, 26, 26, 26, 33, 51, 51, 82, 61, 18, 31, 31, 36, 54, 26, 31, 26, 26, 51, 51, 51, 51, 51, 51,
-<a name="l02016"></a>02016 51, 51, 51, 51, 26, 26, 54, 54, 54, 51, 93, 61, 61, 66, 66, 61, 56, 72, 66, 26, 46, 61, 51, 75, 66,
-<a name="l02017"></a>02017 72, 61, 72, 66, 61, 57, 66, 61, 91, 62, 61, 56, 26, 26, 26, 41, 51, 31, 51, 51, 46, 51, 51, 27, 52,
-<a name="l02018"></a>02018 51, 20, 21, 47, 20, 77, 51, 51, 51, 52, 31, 46, 26, 51, 45, 65, 45, 45, 45, 31, 23, 31, 54, 61, 61,
-<a name="l02019"></a>02019 66, 61, 66, 72, 66, 51, 51, 51, 51, 51, 51, 46, 51, 51, 51, 51, 24, 24, 24, 24, 51, 51, 51, 51, 51,
-<a name="l02020"></a>02020 51, 51, 51, 51, 51, 51, 37, 51, 51, 51, 32, 49, 56, 68, 68, 92, 31, 31, 51, 92, 72, 66, 51, 51, 51,
-<a name="l02021"></a>02021 51, 53, 45, 66, 76, 51, 25, 34, 34, 71, 82, 56, 56, 28, 54, 50, 51, 51, 57, 51, 51, 92, 61, 61, 72,
-<a name="l02022"></a>02022 92, 87, 51, 92, 31, 31, 20, 20, 51, 45, 45, 61, 15, 51, 31, 31, 46, 46, 51, 26, 20, 31, 93, 61, 61,
-<a name="l02023"></a>02023 61, 61, 61, 26, 26, 26, 26, 72, 72, 72, 66, 66, 66, 24, 31, 28, 31, 31, 31, 31, 31, 31, 31, 31, 51,
-<a name="l02024"></a>02024 20, 61, 46, 56, 45, 23, 66, 51, 61, 45, 61, 51, 54, 54, 31, 31, 31, 77, 77, 77, 51, 72, 52, 26, 61,
-<a name="l02025"></a>02025 46, 66, 46, 66, 46, 51, 51, 31, 61, 51, 61, 51, 66, 57, 66, 61, 51, 61, 51, 51, 20, 51, 27, 51, 31,
-<a name="l02026"></a>02026 66, 51, 66, 51, 72, 51, 66, 31, 66, 31, 61, 46, 57, 26, 57, 35, 66, 51, 66, 51, 56, 45, 56, 45, 51,
-<a name="l02027"></a>02027 72, 73, 53, 51, 41, 57, 36, 60, 51, 46, 34, 100, 92, 46, 92, 46, 92, 46, 46, 90, 66, 54, 56, 54, 56,
-<a name="l02028"></a>02028 56, 65, 58, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
-<a name="l02029"></a>02029 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 56,
-<a name="l02030"></a>02030 92, 91, 91, 91, 91, 56, 56, 56, 94, 97, 84, 69, 69, 49, 60, 55, 47, 46, 69, 68, 41, 56, 17, 33, 81,
-<a name="l02031"></a>02031 30, 56, 33, 33, 56, 33, 61, 51, 66, 46, 66, 46, 61, 51, 61, 51, 61, 51, 72, 52, 72, 52, 72, 51, 66,
-<a name="l02032"></a>02032 51, 66, 51, 26, 24, 26, 24, 26, 24, 26, 20, 46, 21, 61, 47, 46, 51, 20, 66, 51, 67, 51, 72, 51, 72,
-<a name="l02033"></a>02033 51, 66, 31, 61, 46, 56, 26, 66, 51, 66, 51, 66, 51, 66, 51, 91, 65, 61, 45, 20, 61, 51, 92, 82, 72,
-<a name="l02034"></a>02034 56, 24, 91, 65, 91, 65, 91, 65, 61, 45, 20, 31, 51, 55, 77, 77, 77, 77, 31, 31, 31, 31, 61, 72, 77,
-<a name="l02035"></a>02035 35, 71, 77, 69, 20, 61, 61, 61, 61, 56, 66, 26, 61, 61, 75, 66, 60, 72, 66, 61, 57, 57, 61, 62, 77,
-<a name="l02036"></a>02036 69, 26, 61, 53, 41, 51, 20, 50, 53, 46, 41, 51, 51, 20, 46, 46, 53, 45, 41, 51, 52, 44, 50, 48, 66,
-<a name="l02037"></a>02037 72, 20, 50, 51, 50, 72, 61, 80, 50, 66, 61, 26, 26, 46, 97, 93, 79, 54, 58, 66, 61, 60, 61, 50, 62,
-<a name="l02038"></a>02038 61, 85, 56, 66, 66, 54, 60, 75, 66, 72, 66, 61, 66, 57, 58, 70, 62, 68, 61, 84, 86, 73, 81, 60, 66,
-<a name="l02039"></a>02039 93, 66, 51, 53, 49, 34, 54, 51, 62, 42, 51, 51, 40, 54, 63, 51, 51, 50, 51, 46, 42, 45, 76, 45, 53,
-<a name="l02040"></a>02040 48, 74, 76, 58, 66, 48, 47, 69, 50, 51, 51, 34, 47, 46, 20, 24, 21, 83, 75, 51, 40, 45, 51, 45, 38,
-<a name="l02041"></a>02041 92, 99, 63, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 20, 31, 31, 26, 52, 50, 37,
-<a name="l02042"></a>02042 47, 55, 23, 35, 55, 54, 23, 47, 42, 43, 55, 55, 23, 32, 53, 49, 52, 50, 42, 44, 51, 47, 64, 59, 46,
-<a name="l02043"></a>02043 46, 46, 22, 38, 76, 23, 47, 47, 43, 43, 49, 64, 64, 64, 64, 52, 52, 52, 50, 37, 47, 55, 26, 38, 54,
-<a name="l02044"></a>02044 26, 47, 42, 43, 55, 32, 53, 52, 50, 44, 51, 47, 64, 59, 23, 50, 42, 50, 53, 0, 0, 0, 0, 29, 29,
-<a name="l02045"></a>02045 33, 38, 19, 19, 22, 19, 19, 19, 19, 19, 15, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 29, 48, 69,
-<a name="l02046"></a>02046 69, 26, 69, 48, 48, 48, 69, 69, 69, 69, 69, 19, 69, 69, 69, 69, 69, 69, 69, 69, 59, 69, 69, 69, 66,
-<a name="l02047"></a>02047 66, 22, 22, 69, 69, 69, 69, 52, 48, 49, 49, 45, 45, 75, 86, 36, 47, 75, 86, 36, 47, 59, 54, 69, 69,
-<a name="l02048"></a>02048 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 21, 19, 19, 19, 19, 69, 69, 0, 0, 0, 0,
-<a name="l02049"></a>02049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 92, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-<a name="l02050"></a>02050 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 29, 29, 69, 57, 38, 19, 21, 19,
-<a name="l02051"></a>02051 21, 40, 40, 19, 21, 59, 54, 22, 22, 19, 21, 66, 66, 22, 22, 26, 35, 66, 66, 22, 22, 66, 66, 22, 22,
-<a name="l02052"></a>02052 52, 48, 49, 49, 52, 48, 49, 49, 52, 48, 49, 49, 31, 31, 31, 31, 45, 45, 45, 45, 76, 76, 49, 49, 76,
-<a name="l02053"></a>02053 76, 49, 49, 101, 101, 78, 78, 101, 101, 78, 78, 54, 54, 54, 54, 54, 54, 54, 54, 50, 41, 48, 36, 50, 41,
-<a name="l02054"></a>02054 48, 36, 73, 73, 25, 24, 54, 54, 25, 24, 55, 55, 36, 36, 47, 47, 19, 19, 31, 31, 36, 36, 48, 48, 22,
-<a name="l02055"></a>02055 22, 26, 35, 41, 36, 40, 40, 59, 54, 59, 54, 22, 22, 50, 55, 50, 55, 50, 55, 50, 55, 69, 69, 19, 19,
-<a name="l02056"></a>02056 69, 69, 69, 15, 19, 69, 69, 19, 22, 69, 69, 69, 19, 19, 19, 19, 19, 21, 69, 19, 19, 69, 69, 69, 69,
-<a name="l02057"></a>02057 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-<a name="l02058"></a>02058 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-<a name="l02059"></a>02059 29, 29, 29, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-<a name="l02060"></a>02060 69, 69, 12, 92, -72, 79, 60, 79, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02061"></a>02061 47, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02062"></a>02062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51,
-<a name="l02063"></a>02063 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61, 51, 61,
-<a name="l02064"></a>02064 51, 61, 51, 26, 20, 26, 20, 72, 51, 72, 51, 72, 51, 72, 51, 72, 51, 72, 51, 72, 51, 79, 60, 79, 60,
-<a name="l02065"></a>02065 79, 60, 79, 60, 79, 60, 66, 51, 66, 51, 79, 62, 79, 62, 79, 62, 79, 62, 79, 62, 61, 45, 61, 45, 61,
-<a name="l02066"></a>02066 45, 61, 51, 26, 20, 72, 51, 66, 51, 66, 51, 66, 51, 66, 51, 66, 51, 0, 0, 0, 0, 50, 34, 85, 62,
-<a name="l02067"></a>02067 54, 40, 54, 40, 66, 51, 51, 46, 51, 46, 61, 46, 61, 48, 61, 51, 69, 51, 72, 51, 66, 22, 25, 24, 54,
-<a name="l02068"></a>02068 22, 22, 22, 22, 22, 22, 25, 19, 19, 31, 31, 19, 19, 19, 0, 19, 21, 19, 21, 19, 21, 19, 21, 40, 40,
-<a name="l02069"></a>02069 40, 40, 59, 54, 66, 66, 22, 22, 66, 66, 22, 22, 66, 66, 22, 22, 66, 66, 22, 22, 66, 66, 22, 22, 66,
-<a name="l02070"></a>02070 66, 22, 22, 66, 66, 22, 22, 52, 48, 49, 49, 52, 48, 49, 49, 52, 48, 49, 49, 52, 48, 49, 49, 52, 48,
-<a name="l02071"></a>02071 49, 49, 52, 48, 49, 49, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 45,
-<a name="l02072"></a>02072 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 76, 76, 49, 49, 76, 76, 49, 49, 76, 76,
-<a name="l02073"></a>02073 49, 49, 101, 101, 78, 78, 101, 101, 78, 78, 54, 54, 50, 41, 48, 36, 73, 73, 73, 25, 24, 73, 73, 25, 24,
-<a name="l02074"></a>02074 73, 73, 25, 24, 73, 73, 25, 24, 73, 73, 25, 24, 54, 54, 54, 54, 75, 86, 36, 47, 75, 86, 36, 47, 55,
-<a name="l02075"></a>02075 55, 36, 36, 55, 55, 36, 36, 55, 55, 36, 36, 75, 86, 36, 47, 75, 86, 36, 47, 75, 86, 36, 47, 75, 86,
-<a name="l02076"></a>02076 36, 47, 75, 86, 36, 47, 47, 47, 19, 19, 47, 47, 19, 19, 47, 47, 19, 19, 47, 47, 19, 19, 48, 48, 22,
-<a name="l02077"></a>02077 22, 48, 48, 48, 48, 48, 48, 22, 22, 48, 48, 52, 48, 49, 49, 26, 35, 36, 36, 36, 40, 40, 40, 40, 40,
-<a name="l02078"></a>02078 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 59, 54, 59, 54, 22, 22, 40, 40, 59, 54, 22, 22, 59, 54,
-<a name="l02079"></a>02079 75, 75, 75, 75, 19, 0, 0, 0, 0, 0, 0, 0, 103, 100, 0, 0, 0, 0, 0, 0, 18, 34, 0, 0, 55,
-<a name="l02080"></a>02080 0, 0, 0, 76, 76, 49, 49, 101, 101, 78, 78, 50, 41, 48, 36, 38, 31, 26, 22, 29, 22, 22, 22, 22, 22,
-<a name="l02081"></a>02081 75, 86, 23, 0, 31, 46, 50, 55, 50, 55, 50, 55, 50, 55, 50, 55, 50, 55, 50, 55, 48, 48, 50, 55, 100,
-<a name="l02082"></a>02082 -56, 75, 0, 28, 28, 28, 36, 56, 56, 89, 67, 19, 33, 33, 39, 58, 28, 33, 28, 28, 56, 56, 56, 56, 56,
-<a name="l02083"></a>02083 56, 56, 56, 56, 56, 28, 28, 58, 58, 58, 56, 102, 67, 67, 72, 72, 67, 61, 78, 72, 28, 50, 67, 56, 83,
-<a name="l02084"></a>02084 72, 78, 67, 78, 72, 67, 62, 72, 67, 99, 66, 66, 61, 28, 28, 28, 43, 56, 33, 56, 56, 50, 56, 56, 29,
-<a name="l02085"></a>02085 55, 56, 22, 22, 50, 22, 84, 56, 56, 56, 55, 33, 50, 28, 56, 49, 71, 49, 49, 49, 33, 26, 33, 58, 67,
-<a name="l02086"></a>02086 67, 72, 67, 72, 78, 72, 56, 56, 56, 56, 56, 56, 50, 56, 56, 56, 56, 27, 27, 27, 27, 56, 56, 56, 56,
-<a name="l02087"></a>02087 56, 56, 56, 56, 56, 56, 56, 40, 56, 56, 56, 35, 54, 61, 74, 74, 100, 33, 33, 55, 100, 78, 71, 55, 55,
-<a name="l02088"></a>02088 55, 56, 58, 49, 71, 82, 55, 29, 37, 37, 77, 89, 61, 61, 31, 58, 55, 56, 55, 61, 56, 56, 100, 67, 67,
-<a name="l02089"></a>02089 78, 100, 94, 56, 100, 33, 33, 22, 22, 55, 49, 49, 66, 17, 56, 33, 33, 50, 50, 56, 28, 22, 33, 100, 67,
-<a name="l02090"></a>02090 67, 67, 67, 67, 28, 28, 28, 28, 78, 78, 78, 72, 72, 72, 27, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33,
-<a name="l02091"></a>02091 56, 22, 67, 50, 61, 49, 26, 72, 56, 66, 49, 67, 56, 58, 58, 33, 33, 33, 83, 83, 83, 56, 78, 55, 28,
-<a name="l02092"></a>02092 67, 50, 72, 50, 72, 50, 56, 55, 33, 67, 56, 67, 56, 72, 61, 72, 67, 56, 67, 56, 56, 22, 56, 29, 56,
-<a name="l02093"></a>02093 33, 72, 56, 72, 56, 78, 56, 72, 33, 72, 33, 67, 50, 62, 29, 62, 38, 72, 56, 72, 56, 61, 49, 61, 49,
-<a name="l02094"></a>02094 55, 78, 80, 58, 56, 45, 62, 40, 65, 55, 50, 36, 109, 100, 50, 100, 50, 100, 50, 50, 98, 72, 58, 60, 58,
-<a name="l02095"></a>02095 60, 60, 71, 63, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
-<a name="l02096"></a>02096 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 73,
-<a name="l02097"></a>02097 60, 100, 99, 99, 99, 99, 60, 60, 60, 102, 105, 92, 75, 75, 53, 66, 59, 51, 50, 75, 73, 44, 60, 19, 35,
-<a name="l02098"></a>02098 89, 32, 60, 35, 35, 60, 35, 67, 56, 72, 50, 72, 50, 67, 56, 67, 56, 67, 56, 78, 55, 78, 55, 78, 56,
-<a name="l02099"></a>02099 72, 56, 72, 56, 28, 27, 28, 27, 28, 27, 28, 22, 50, 22, 67, 50, 50, 56, 22, 72, 56, 72, 56, 78, 56,
-<a name="l02100"></a>02100 78, 56, 72, 33, 67, 50, 61, 28, 72, 56, 72, 56, 72, 56, 72, 56, 99, 71, 66, 49, 22, 67, 56, 100, 89,
-<a name="l02101"></a>02101 78, 61, 27, 99, 71, 99, 71, 99, 71, 66, 49, 22, 33, 56, 60, 83, 83, 83, 83, 33, 33, 33, 33, 67, 78,
-<a name="l02102"></a>02102 84, 38, 77, 83, 75, 23, 67, 67, 67, 67, 61, 72, 28, 67, 67, 83, 72, 65, 78, 72, 67, 62, 62, 66, 66,
-<a name="l02103"></a>02103 84, 75, 28, 66, 58, 45, 56, 23, 55, 58, 50, 44, 56, 56, 23, 50, 50, 58, 49, 45, 56, 57, 48, 55, 52,
-<a name="l02104"></a>02104 71, 78, 23, 55, 56, 55, 78, 67, 86, 54, 72, 67, 28, 28, 50, 106, 101, 85, 58, 64, 72, 67, 66, 67, 54,
-<a name="l02105"></a>02105 68, 67, 92, 60, 72, 72, 58, 66, 83, 72, 78, 72, 67, 72, 62, 64, 76, 66, 74, 67, 92, 94, 79, 89, 66,
-<a name="l02106"></a>02106 72, 101, 72, 56, 57, 53, 36, 58, 56, 67, 46, 56, 56, 44, 58, 69, 55, 56, 54, 56, 50, 46, 49, 82, 49,
-<a name="l02107"></a>02107 57, 52, 80, 82, 63, 72, 52, 51, 75, 54, 56, 56, 36, 51, 50, 22, 27, 22, 91, 81, 56, 44, 49, 55, 49,
-<a name="l02108"></a>02108 41, 100, 107, 69, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 38, 33, 27, 33, 33, 28, 56, 54,
-<a name="l02109"></a>02109 40, 51, 60, 24, 38, 60, 59, 24, 51, 46, 46, 60, 60, 24, 35, 57, 53, 57, 55, 46, 48, 55, 51, 69, 64,
-<a name="l02110"></a>02110 49, 49, 49, 24, 42, 79, 24, 51, 51, 46, 46, 54, 69, 69, 69, 69, 56, 56, 56, 54, 40, 51, 60, 29, 41,
-<a name="l02111"></a>02111 59, 29, 51, 46, 46, 60, 35, 57, 57, 55, 48, 55, 51, 69, 64, 24, 54, 46, 55, 58, 0, 0, 0, 0, 32,
-<a name="l02112"></a>02112 32, 36, 41, 21, 20, 24, 20, 20, 21, 20, 21, 16, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 32, 53,
-<a name="l02113"></a>02113 75, 75, 28, 75, 53, 53, 53, 75, 75, 75, 75, 75, 21, 75, 75, 75, 75, 75, 75, 75, 75, 64, 75, 75, 75,
-<a name="l02114"></a>02114 71, 71, 24, 24, 75, 75, 75, 75, 56, 53, 53, 53, 49, 49, 81, 93, 39, 51, 81, 93, 39, 51, 64, 59, 75,
-<a name="l02115"></a>02115 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 23, 21, 21, 21, 21, 75, 75, 0, 0, 0,
-<a name="l02116"></a>02116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 100, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
-<a name="l02117"></a>02117 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 32, 32, 75, 62, 41, 21, 23,
-<a name="l02118"></a>02118 21, 23, 43, 43, 21, 23, 64, 59, 24, 24, 21, 23, 71, 71, 24, 24, 28, 38, 71, 71, 24, 24, 71, 71, 24,
-<a name="l02119"></a>02119 24, 56, 53, 53, 53, 56, 53, 53, 53, 56, 53, 53, 53, 34, 34, 34, 34, 49, 49, 49, 49, 82, 82, 53, 53,
-<a name="l02120"></a>02120 82, 82, 53, 53, 110, 110, 85, 85, 110, 110, 85, 85, 58, 58, 58, 58, 58, 58, 58, 58, 54, 45, 53, 39, 54,
-<a name="l02121"></a>02121 45, 53, 39, 79, 79, 27, 26, 58, 58, 27, 26, 60, 60, 39, 39, 51, 51, 21, 21, 34, 34, 39, 39, 53, 53,
-<a name="l02122"></a>02122 24, 24, 28, 38, 45, 39, 43, 43, 64, 59, 64, 59, 24, 24, 54, 60, 54, 60, 54, 60, 54, 60, 75, 75, 20,
-<a name="l02123"></a>02123 20, 75, 75, 75, 16, 21, 75, 75, 21, 24, 75, 75, 75, 21, 21, 21, 21, 21, 23, 75, 20, 20, 75, 75, 75,
-<a name="l02124"></a>02124 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
-<a name="l02125"></a>02125 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
-<a name="l02126"></a>02126 75, 32, 32, 32, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
-<a name="l02127"></a>02127 75, 75, 75, 13, 100, -56, 86, 66, 85, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02128"></a>02128 0, 51, 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02129"></a>02129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67,
-<a name="l02130"></a>02130 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56, 67, 56,
-<a name="l02131"></a>02131 67, 56, 67, 56, 28, 22, 28, 22, 78, 56, 78, 56, 78, 56, 78, 56, 78, 56, 78, 56, 78, 56, 86, 66, 86,
-<a name="l02132"></a>02132 66, 86, 66, 86, 66, 86, 66, 72, 56, 72, 56, 85, 67, 85, 67, 85, 67, 85, 67, 85, 67, 66, 49, 66, 49,
-<a name="l02133"></a>02133 66, 49, 67, 56, 28, 22, 78, 56, 72, 56, 72, 56, 72, 56, 72, 56, 72, 56, 0, 0, 0, 0, 54, 36, 92,
-<a name="l02134"></a>02134 67, 58, 44, 58, 44, 72, 55, 56, 50, 56, 50, 67, 50, 67, 52, 67, 56, 75, 56, 78, 56, 71, 24, 27, 26,
-<a name="l02135"></a>02135 58, 24, 24, 24, 24, 24, 24, 27, 21, 21, 33, 33, 21, 21, 21, 0, 21, 23, 21, 23, 21, 23, 21, 23, 43,
-<a name="l02136"></a>02136 43, 43, 43, 64, 59, 71, 71, 24, 24, 71, 71, 24, 24, 71, 71, 24, 24, 71, 71, 24, 24, 71, 71, 24, 24,
-<a name="l02137"></a>02137 71, 71, 24, 24, 71, 71, 24, 24, 56, 53, 53, 53, 56, 53, 53, 53, 56, 53, 53, 53, 56, 53, 53, 53, 56,
-<a name="l02138"></a>02138 53, 53, 53, 56, 53, 53, 53, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-<a name="l02139"></a>02139 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 82, 82, 53, 53, 82, 82, 53, 53, 82,
-<a name="l02140"></a>02140 82, 53, 53, 110, 110, 85, 85, 110, 110, 85, 85, 58, 58, 54, 45, 53, 39, 79, 79, 79, 27, 26, 79, 79, 27,
-<a name="l02141"></a>02141 26, 79, 79, 27, 26, 79, 79, 27, 26, 79, 79, 27, 26, 58, 58, 58, 58, 81, 93, 39, 51, 81, 93, 39, 51,
-<a name="l02142"></a>02142 60, 60, 39, 39, 60, 60, 39, 39, 60, 60, 39, 39, 81, 93, 39, 51, 81, 93, 39, 51, 81, 93, 39, 51, 81,
-<a name="l02143"></a>02143 93, 39, 51, 81, 93, 39, 51, 51, 51, 21, 21, 51, 51, 21, 21, 51, 51, 21, 21, 51, 51, 21, 21, 53, 53,
-<a name="l02144"></a>02144 24, 24, 53, 53, 53, 53, 53, 53, 24, 24, 53, 53, 56, 53, 53, 53, 28, 38, 39, 39, 39, 43, 43, 43, 43,
-<a name="l02145"></a>02145 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 64, 59, 64, 59, 24, 24, 43, 43, 64, 59, 24, 24, 64,
-<a name="l02146"></a>02146 59, 81, 81, 81, 81, 21, 0, 0, 0, 0, 0, 0, 0, 112, 108, 0, 0, 0, 0, 0, 0, 19, 37, 0, 0,
-<a name="l02147"></a>02147 60, 0, 0, 0, 82, 82, 53, 53, 110, 110, 85, 85, 54, 45, 53, 39, 41, 34, 28, 24, 32, 24, 24, 24, 24,
-<a name="l02148"></a>02148 24, 81, 93, 24, 0, 34, 49, 54, 60, 54, 60, 54, 60, 54, 60, 54, 60, 54, 60, 54, 60, 53, 53, 54, 60,
-<a name="l02149"></a>02149 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 28, 0, 1, 0, 0, 0, 0, 11, 64, 0, 3, 0, 1, 0,
-<a name="l02150"></a>02150 0, 12, 70, 0, 4, 11, 36, 0, 0, 1, 28, 1, 0, 0, 7, 0, 28, 0, 126, 1, 127, 1, -113, 1, -110,
-<a name="l02151"></a>02151 1, -95, 1, -80, 1, -36, 1, -1, 2, 89, 2, -57, 2, -55, 2, -35, 3, 1, 3, 3, 3, 9, 3, 35, 3,
-<a name="l02152"></a>02152 126, 3, -118, 3, -116, 3, -95, 3, -50, 4, 12, 4, 79, 4, 92, 4, 95, 4, -109, 4, -105, 4, -99, 4, -93,
-<a name="l02153"></a>02153 4, -77, 4, -69, 4, -39, 4, -23, 5, -61, 5, -22, 5, -12, 6, 12, 6, 27, 6, 31, 6, 58, 6, 85, 6,
-<a name="l02154"></a>02154 -19, 6, -2, 30, -123, 30, -7, 32, 15, 32, 21, 32, 30, 32, 34, 32, 38, 32, 46, 32, 48, 32, 51, 32, 58,
-<a name="l02155"></a>02155 32, 60, 32, 62, 32, 68, 32, 111, 32, 127, 32, -92, 32, -89, 32, -84, 33, 5, 33, 19, 33, 22, 33, 34, 33,
-<a name="l02156"></a>02156 38, 33, 46, 33, 84, 33, 94, 33, -107, 33, -88, 34, 2, 34, 6, 34, 15, 34, 18, 34, 21, 34, 26, 34, 31,
-<a name="l02157"></a>02157 34, 41, 34, 43, 34, 72, 34, 97, 34, 101, 35, 2, 35, 16, 35, 33, 37, 0, 37, 2, 37, 12, 37, 16, 37,
-<a name="l02158"></a>02158 20, 37, 24, 37, 28, 37, 36, 37, 44, 37, 52, 37, 60, 37, 108, 37, -128, 37, -124, 37, -120, 37, -116, 37, -109,
-<a name="l02159"></a>02159 37, -95, 37, -84, 37, -78, 37, -70, 37, -68, 37, -60, 37, -53, 37, -49, 37, -39, 37, -26, 38, 60, 38, 64, 38,
-<a name="l02160"></a>02160 66, 38, 96, 38, 99, 38, 102, 38, 107, -24, 5, -24, 24, -24, 58, -16, 2, -16, 49, -5, 2, -5, 32, -5, 54,
-<a name="l02161"></a>02161 -5, 60, -5, 62, -5, 65, -5, 68, -5, -79, -5, -25, -5, -1, -4, 98, -3, 63, -3, -14, -2, -4, -1, -4, -1,
-<a name="l02162"></a>02162 -1, 0, 0, 0, 32, 0, -96, 1, -113, 1, -110, 1, -96, 1, -81, 1, -51, 1, -6, 2, 89, 2, -58, 2, -55,
-<a name="l02163"></a>02163 2, -40, 3, 0, 3, 3, 3, 9, 3, 35, 3, 126, 3, -124, 3, -116, 3, -114, 3, -93, 4, 1, 4, 14, 4,
-<a name="l02164"></a>02164 81, 4, 94, 4, -112, 4, -106, 4, -102, 4, -94, 4, -82, 4, -72, 4, -40, 4, -24, 5, -80, 5, -48, 5, -16,
-<a name="l02165"></a>02165 6, 12, 6, 27, 6, 31, 6, 33, 6, 64, 6, 96, 6, -16, 30, -128, 30, -96, 32, 12, 32, 19, 32, 23, 32,
-<a name="l02166"></a>02166 32, 32, 38, 32, 42, 32, 48, 32, 50, 32, 57, 32, 60, 32, 62, 32, 68, 32, 106, 32, 127, 32, -93, 32, -89,
-<a name="l02167"></a>02167 32, -86, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 83, 33, 91, 33, -112, 33, -88, 34, 2, 34,
-<a name="l02168"></a>02168 6, 34, 15, 34, 17, 34, 21, 34, 25, 34, 30, 34, 41, 34, 43, 34, 72, 34, 96, 34, 100, 35, 2, 35, 16,
-<a name="l02169"></a>02169 35, 32, 37, 0, 37, 2, 37, 12, 37, 16, 37, 20, 37, 24, 37, 28, 37, 36, 37, 44, 37, 52, 37, 60, 37,
-<a name="l02170"></a>02170 80, 37, -128, 37, -124, 37, -120, 37, -116, 37, -112, 37, -96, 37, -86, 37, -78, 37, -70, 37, -68, 37, -60, 37, -54,
-<a name="l02171"></a>02171 37, -49, 37, -40, 37, -26, 38, 58, 38, 64, 38, 66, 38, 96, 38, 99, 38, 101, 38, 106, -24, 1, -24, 24, -24,
-<a name="l02172"></a>02172 58, -16, 1, -16, 4, -5, 1, -5, 29, -5, 42, -5, 56, -5, 62, -5, 64, -5, 67, -5, 70, -5, -45, -5, -4,
-<a name="l02173"></a>02173 -4, 94, -3, 62, -3, -14, -2, -128, -1, -4, -1, -1, -1, -29, 0, 0, 3, -107, -1, 20, 2, -54, 2, -67, 3,
-<a name="l02174"></a>02174 47, -1, -36, 2, -52, 0, 0, -2, 15, 0, 0, 1, -110, 1, 119, 1, 107, 1, 114, -4, -96, 0, 0, -2, 105,
-<a name="l02175"></a>02175 0, 0, 0, 0, -2, 43, -2, 42, -2, 41, -2, 40, 0, 0, 0, 124, 0, 122, 0, 118, 0, 108, 0, 104, 0,
-<a name="l02176"></a>02176 76, 0, 62, 0, 0, -4, -48, -4, -53, -4, -32, -4, -46, -4, -49, 0, 0, 0, 0, 0, 0, 0, 0, -29, 93,
-<a name="l02177"></a>02177 0, 0, -30, -36, 0, 0, 0, 0, 0, 0, -32, -123, 0, 0, -32, -107, -31, 91, -32, -124, -32, -7, -31, -88, -32,
-<a name="l02178"></a>02178 119, 0, 0, -32, -73, 0, 0, -32, -112, 0, 0, -32, -118, -32, 125, -31, 117, -33, 106, -33, 121, -32, -70, -29, 44,
-<a name="l02179"></a>02179 -32, -114, -33, -88, -33, -106, -34, -106, -34, -94, -34, -117, 0, 0, -34, -90, 0, 0, 0, 0, -33, 23, -34, 113, -34,
-<a name="l02180"></a>02180 95, 0, 0, -34, 48, -34, 64, -34, 51, -34, 36, -36, 70, -36, 69, -36, 60, -36, 57, -36, 54, -36, 51, -36, 48,
-<a name="l02181"></a>02181 -36, 41, -36, 34, -36, 27, -36, 20, -36, 1, -37, -18, -37, -21, -37, -24, -37, -27, -37, -30, 0, 0, 0, 0, -37,
-<a name="l02182"></a>02182 -58, -37, -65, -37, -66, -37, -73, 0, 0, -37, -59, -37, -91, -37, -81, -37, 69, -37, 66, -37, 65, -37, 36, -37, 34,
-<a name="l02183"></a>02183 -37, 33, -37, 30, 26, -64, 26, -6, 26, -31, 16, -66, 0, 0, 5, -66, 0, 0, 7, -99, 7, -100, 7, -101, 7,
-<a name="l02184"></a>02184 -102, 7, -103, 0, 0, 0, 0, 0, 0, 6, -23, 6, 62, 5, -115, 5, 0, 3, 99, 0, 1, 0, 0, 1, 26,
-<a name="l02185"></a>02185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -54, 0, 0, 2, -54, 0, 0, 0, 0, 0,
-<a name="l02186"></a>02186 0, 0, 0, 0, 0, 2, -54, 0, 0, 2, -44, 2, -6, 0, 0, 0, 0, 0, 0, 0, 0, 3, 72, 0, 0,
-<a name="l02187"></a>02187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
-<a name="l02188"></a>02188 92, 3, -114, 3, -72, 4, -46, 0, 0, 4, -20, 0, 0, 5, -100, 5, -96, 5, -82, 0, 0, 5, -80, 0, 0,
-<a name="l02189"></a>02189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -84, 0, 0, 5, -76, 0, 0, 5, -76, 0, 0, 0, 0, 0,
-<a name="l02190"></a>02190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -98, 0, 0,
-<a name="l02191"></a>02191 5, -98, 5, -96, 0, 0, 0, 0, 0, 0, 5, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02192"></a>02192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02193"></a>02193 0, 0, 0, 0, 5, 116, 5, 118, 0, 0, 0, 0, 0, 0, 0, 0, 5, 114, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02194"></a>02194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 88, 0, 0,
-<a name="l02195"></a>02195 5, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -84, 6, -126, 6, -86, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02196"></a>02196 0, 0, 0, 0, 0, 0, 3, 0, -93, 0, -124, 0, -123, 3, 94, 0, -106, 0, -26, 0, -122, 0, -114, 0, -117,
-<a name="l02197"></a>02197 0, -99, 0, -87, 0, -92, 0, 16, 0, -118, 1, 0, 0, -125, 0, -109, 0, -16, 0, -15, 0, -115, 0, -105, 0,
-<a name="l02198"></a>02198 -120, 0, -62, 0, -36, 0, -17, 0, -98, 0, -86, 0, -13, 0, -14, 0, -12, 0, -94, 0, -84, 0, -56, 0, -58,
-<a name="l02199"></a>02199 0, -83, 0, 98, 0, 99, 0, -112, 0, 100, 0, -54, 0, 101, 0, -57, 0, -55, 0, -50, 0, -53, 0, -52, 0,
-<a name="l02200"></a>02200 -51, 0, -25, 0, 102, 0, -47, 0, -49, 0, -48, 0, -82, 0, 103, 0, -18, 0, -111, 0, -44, 0, -46, 0, -45,
-<a name="l02201"></a>02201 0, 104, 0, -23, 0, -21, 0, -119, 0, 106, 0, 105, 0, 107, 0, 109, 0, 108, 0, 110, 0, -96, 0, 111, 0,
-<a name="l02202"></a>02202 113, 0, 112, 0, 114, 0, 115, 0, 117, 0, 116, 0, 118, 0, 119, 0, -24, 0, 120, 0, 122, 0, 121, 0, 123,
-<a name="l02203"></a>02203 0, 125, 0, 124, 0, -73, 0, -95, 0, 127, 0, 126, 0, -128, 0, -127, 0, -22, 0, -20, 0, -71, 1, -106, 1,
-<a name="l02204"></a>02204 -105, 1, 2, 1, 3, 1, 4, 1, 5, 0, -5, 0, -4, 1, -104, 1, -103, 1, -102, 1, -101, 0, -3, 0, -2,
-<a name="l02205"></a>02205 1, 6, 1, 7, 1, 8, 0, -1, 1, -100, 1, -99, 1, -98, 1, -97, 1, -96, 1, -95, 1, 9, 1, 10, 1,
-<a name="l02206"></a>02206 11, 1, 12, 1, -94, 1, -93, 0, -10, 0, -9, 1, -92, 1, -91, 1, -90, 1, -89, 1, -88, 1, -87, 1, -86,
-<a name="l02207"></a>02207 1, -85, 1, -84, 1, -83, 1, -82, 1, -81, 1, -80, 1, -79, 1, -78, 1, -77, 0, -8, 0, -43, 1, -118, 1,
-<a name="l02208"></a>02208 -117, 1, -76, 1, -75, 1, -74, 1, -73, 1, -72, 1, 13, 1, 14, 1, -71, 1, -70, 1, 15, 1, 16, 1, 17,
-<a name="l02209"></a>02209 1, 18, 0, -32, 0, -31, 1, 19, 1, 20, 1, -69, 1, -68, 1, 21, 1, 22, 1, -116, 1, -67, 1, -66, 1,
-<a name="l02210"></a>02210 -65, 1, -64, 1, -63, 1, -62, 1, 23, 1, 24, 0, -81, 0, -80, 1, 25, 1, 26, 1, -61, 1, -60, 1, 27,
-<a name="l02211"></a>02211 1, 28, 1, 29, 1, 30, 1, -59, 1, -58, 0, -7, 0, -6, 0, -30, 0, -29, 1, 31, 1, 32, 1, 33, 1,
-<a name="l02212"></a>02212 34, 1, -57, 1, -56, 1, -55, 1, -54, 1, -53, 1, -52, 1, -51, 1, -50, 1, 35, 1, 36, 1, 37, 1, 38,
-<a name="l02213"></a>02213 1, -49, 1, -48, 1, -47, 1, -46, 1, -45, 1, -44, 0, -70, 1, 39, 1, 40, 1, 41, 1, 42, 0, -28, 0,
-<a name="l02214"></a>02214 -27, 1, -43, 0, -42, 0, -33, 0, -39, 0, -38, 0, -37, 0, -34, 0, -41, 0, -35, 1, -17, 1, -16, 1, -15,
-<a name="l02215"></a>02215 1, -36, 1, -14, 1, -13, 1, -12, 1, -10, 1, -9, 1, -8, 1, -7, 1, -6, 1, 43, 1, -5, 1, -4, 1,
-<a name="l02216"></a>02216 -3, 1, -2, 1, 44, 1, -1, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8,
-<a name="l02217"></a>02217 2, 9, 2, 10, 1, 45, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2,
-<a name="l02218"></a>02218 20, 1, 46, 2, 21, 2, 22, 1, 47, 1, 48, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29,
-<a name="l02219"></a>02219 2, 30, 2, 31, 2, 32, 2, -116, 2, 33, 2, 34, 1, 49, 1, 50, 2, 35, 1, 51, 2, 36, 2, 37, 2,
-<a name="l02220"></a>02220 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, -120, 2, -119, 5, 16, 5, 17, 2, -115, 2, -114, 2, -113,
-<a name="l02221"></a>02221 2, -112, 2, -111, 2, -110, 2, -109, 2, -108, 2, -107, 2, -106, 2, -106, 2, -105, 2, -104, 2, -103, 2, -102, 2,
-<a name="l02222"></a>02222 -101, 2, -100, 2, -99, 2, -98, 2, -97, 2, -17, 3, -127, 3, -125, 3, -123, 3, -121, 3, -119, 3, -115, 3, -113,
-<a name="l02223"></a>02223 3, -109, 3, -107, 3, -103, 3, -99, 3, -95, 3, -91, 3, -87, 3, -85, 3, -83, 3, -81, 3, -79, 3, -75, 3,
-<a name="l02224"></a>02224 -71, 3, -67, 3, -63, 3, -59, 3, -55, 3, -51, 2, -16, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3, -27,
-<a name="l02225"></a>02225 3, -23, 3, -19, 3, -17, 3, -15, 2, -15, 2, -14, 2, -13, 2, -12, 2, -11, 2, -10, 2, -9, 2, -8, 5,
-<a name="l02226"></a>02226 56, 5, 57, 5, 58, 2, -7, 2, -6, 2, -5, 2, -4, 2, -3, 2, -2, 2, -1, 3, 0, 3, 1, 3, 2,
-<a name="l02227"></a>02227 3, 3, 3, 4, 2, -20, 3, 5, 5, 40, 5, 44, 5, 59, 5, 60, 5, 62, 5, 64, 5, 57, 5, 66, 5,
-<a name="l02228"></a>02228 68, 5, 70, 5, 72, 5, 74, 5, 78, 5, 82, 5, 86, 5, 90, 3, 31, 5, 94, 5, 98, 5, 102, 5, 106,
-<a name="l02229"></a>02229 5, 110, 5, 114, 5, 118, 3, 39, 5, 122, 5, 126, 5, -128, 5, -126, 5, -124, 5, -122, 5, -120, 5, -118, 5,
-<a name="l02230"></a>02230 -116, 5, -114, 5, -112, 5, -110, 5, -108, 5, -106, 5, -104, 5, -102, 5, -100, 3, 43, 5, -98, 5, -96, 5, -92,
-<a name="l02231"></a>02231 5, -88, 5, -84, 5, -80, 5, -76, 5, -74, 5, -70, 5, -69, 5, -65, 5, -61, 5, -57, 5, -53, 5, -49, 5,
-<a name="l02232"></a>02232 -47, 3, 45, 5, -45, 5, -41, 5, -37, 5, -33, 5, -29, 3, 49, 5, -25, 5, -21, 5, -17, 5, -13, 5, -9,
-<a name="l02233"></a>02233 5, -5, 5, -1, 6, 3, 6, 7, 6, 11, 6, 15, 6, 17, 6, 19, 6, 23, 3, -21, 6, 25, 6, 29, 6,
-<a name="l02234"></a>02234 31, 6, 32, 6, 33, 6, 34, 6, 36, 6, 38, 6, 40, 6, 42, 6, 44, 6, 46, 6, 48, 3, 53, 6, 50,
-<a name="l02235"></a>02235 6, 52, 6, 56, 6, 58, 6, 62, 6, 64, 6, 66, 6, 68, 3, 8, 6, 69, 6, 70, 6, 71, 6, 72, 6,
-<a name="l02236"></a>02236 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78, 6, 79, 6, 80, 6, 81, 6, 82, 6, 83, 6, 84, 6, 85,
-<a name="l02237"></a>02237 6, 86, 6, 87, 6, 88, 6, 89, 6, 90, 6, 78, 6, 91, 2, -7, 2, -6, 2, -5, 2, -4, 3, 10, 3,
-<a name="l02238"></a>02238 11, 3, 12, 3, 0, 3, 1, 3, 2, 6, 92, 6, 96, 6, 100, 6, 104, 6, 105, 4, -92, 4, -91, 4, -90,
-<a name="l02239"></a>02239 4, -89, 4, -88, 4, -87, 4, -86, 4, -85, 4, -84, 4, -83, 4, -82, 4, -81, 4, -80, 4, -79, 4, -78, 4,
-<a name="l02240"></a>02240 -77, 4, -76, 4, -75, 4, -74, 4, -73, 4, -72, 4, -71, 4, -70, 4, -69, 4, -68, 4, -67, 4, -66, 4, -65,
-<a name="l02241"></a>02241 4, -64, 4, -63, 4, -62, 4, -61, 4, -60, 4, -59, 4, -58, 4, -57, 4, -56, 4, -55, 4, -54, 4, -53, 4,
-<a name="l02242"></a>02242 -52, 4, -51, 4, -50, 4, -49, 4, -48, 4, -47, 4, -46, 4, -45, 4, -44, 4, -43, 4, -42, 4, -41, 4, -40,
-<a name="l02243"></a>02243 4, -39, 4, -38, 4, -37, 4, -36, 4, -35, 4, -34, 4, -33, 4, -32, 4, -31, 4, -30, 4, -29, 4, -28, 4,
-<a name="l02244"></a>02244 -27, 4, -26, 4, -25, 4, -24, 4, -23, 4, -22, 4, -21, 4, -20, 4, -19, 4, -18, 4, -17, 4, -16, 4, -15,
-<a name="l02245"></a>02245 4, -14, 4, -13, 4, -12, 4, -11, 1, -29, 1, -28, 4, -10, 4, -9, 4, -8, 4, -7, 4, -6, 4, -5, 0,
-<a name="l02246"></a>02246 -79, 0, -78, 2, -118, 1, 52, 0, -75, 0, -74, 0, -61, 1, -27, 0, -77, 0, -76, 0, -60, 0, -126, 0, -63,
-<a name="l02247"></a>02247 0, -121, 3, 78, 3, 79, 3, 82, 3, 80, 3, 81, 3, 85, 3, 86, 3, 87, 3, 88, 3, 83, 3, 84, 0,
-<a name="l02248"></a>02248 -11, 1, -25, 2, -64, 4, 126, 0, -68, 0, -103, 0, -19, 0, -62, 0, -91, 0, -110, 1, 63, 0, -113, 1, 65,
-<a name="l02249"></a>02249 1, 118, 1, -111, 1, -110, 1, -109, 1, 119, 0, -72, 1, 124, 1, -19, 1, -18, 4, 113, 4, 114, 4, -127, 4,
-<a name="l02250"></a>02250 115, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 4, -124, 4, 117, 4, 119, 4, -123, 4, 118, 4, -122, 4, 121,
-<a name="l02251"></a>02251 4, -121, 4, -120, 4, -119, 4, -118, 4, -117, 4, -116, 4, 120, 4, -108, 4, -115, 4, -114, 4, -113, 4, -112, 4,
-<a name="l02252"></a>02252 -111, 4, -106, 4, -102, 4, -101, 4, -100, 4, -99, 4, -98, 4, -105, 4, -104, 4, -103, 4, 125, 4, -97, 4, -96,
-<a name="l02253"></a>02253 4, -95, 4, -94, 4, -93, 6, 116, 6, 117, 6, 119, 2, -58, 2, -34, 2, -33, 2, -32, 2, -31, 2, -30, 2,
-<a name="l02254"></a>02254 -29, 2, -28, 2, -27, 2, -26, 2, -25, 5, 60, 5, 61, 5, 82, 5, 83, 5, 84, 5, 85, 3, 31, 3, 32,
-<a name="l02255"></a>02255 3, 33, 3, 34, 5, 98, 5, 99, 5, 100, 5, 101, 5, 78, 5, 79, 5, 80, 5, 81, 5, 94, 5, 95, 5,
-<a name="l02256"></a>02256 96, 5, 97, 5, 74, 5, 75, 5, 76, 5, 77, 5, -61, 5, -60, 5, -59, 5, -58, 5, -53, 5, -52, 5, -51,
-<a name="l02257"></a>02257 5, -50, 5, 114, 5, 115, 5, 116, 5, 117, 5, 110, 5, 111, 5, 112, 5, 113, 3, 39, 3, 40, 3, 41, 3,
-<a name="l02258"></a>02258 42, 5, 122, 5, 123, 5, 124, 5, 125, 5, -120, 5, -119, 5, -122, 5, -121, 5, -118, 5, -117, 5, 126, 5, 127,
-<a name="l02259"></a>02259 3, 43, 3, 44, 5, -112, 5, -111, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 5,
-<a name="l02260"></a>02260 -13, 5, -12, 5, -11, 5, -10, 5, -21, 5, -20, 5, -19, 5, -18, 6, 15, 6, 16, 6, 17, 6, 18, 5, 76,
-<a name="l02261"></a>02261 5, 77, 6, 29, 6, 30, 6, 106, 6, 31, 6, 107, 6, 108, 3, -21, 3, -22, 3, -21, 3, -20, 6, 64, 6,
-<a name="l02262"></a>02262 65, 6, 66, 6, 67, 5, -33, 5, -32, 5, -31, 5, -30, 6, 40, 6, 41, 6, 38, 6, 39, 6, 42, 6, 43,
-<a name="l02263"></a>02263 5, 70, 6, 48, 6, 49, 6, 36, 6, 37, 6, 44, 6, 45, 6, 58, 6, 59, 6, 60, 6, 61, 3, 53, 3,
-<a name="l02264"></a>02264 54, 3, -13, 3, -12, 0, 0, 1, 6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 2,
-<a name="l02265"></a>02265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 4, 5, 6, 7, 8, 9,
-<a name="l02266"></a>02266 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
-<a name="l02267"></a>02267 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
-<a name="l02268"></a>02268 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
-<a name="l02269"></a>02269 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
-<a name="l02270"></a>02270 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123,
-<a name="l02271"></a>02271 -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98,
-<a name="l02272"></a>02272 -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, 3, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74,
-<a name="l02273"></a>02273 -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49,
-<a name="l02274"></a>02274 -48, 0, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, 0, 4, 11, 36, 0, 0, 1, 28,
-<a name="l02275"></a>02275 1, 0, 0, 7, 0, 28, 0, 126, 1, 127, 1, -113, 1, -110, 1, -95, 1, -80, 1, -36, 1, -1, 2, 89, 2,
-<a name="l02276"></a>02276 -57, 2, -55, 2, -35, 3, 1, 3, 3, 3, 9, 3, 35, 3, 126, 3, -118, 3, -116, 3, -95, 3, -50, 4, 12,
-<a name="l02277"></a>02277 4, 79, 4, 92, 4, 95, 4, -109, 4, -105, 4, -99, 4, -93, 4, -77, 4, -69, 4, -39, 4, -23, 5, -61, 5,
-<a name="l02278"></a>02278 -22, 5, -12, 6, 12, 6, 27, 6, 31, 6, 58, 6, 85, 6, -19, 6, -2, 30, -123, 30, -7, 32, 15, 32, 21,
-<a name="l02279"></a>02279 32, 30, 32, 34, 32, 38, 32, 46, 32, 48, 32, 51, 32, 58, 32, 60, 32, 62, 32, 68, 32, 111, 32, 127, 32,
-<a name="l02280"></a>02280 -92, 32, -89, 32, -84, 33, 5, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 84, 33, 94, 33, -107, 33, -88,
-<a name="l02281"></a>02281 34, 2, 34, 6, 34, 15, 34, 18, 34, 21, 34, 26, 34, 31, 34, 41, 34, 43, 34, 72, 34, 97, 34, 101, 35,
-<a name="l02282"></a>02282 2, 35, 16, 35, 33, 37, 0, 37, 2, 37, 12, 37, 16, 37, 20, 37, 24, 37, 28, 37, 36, 37, 44, 37, 52,
-<a name="l02283"></a>02283 37, 60, 37, 108, 37, -128, 37, -124, 37, -120, 37, -116, 37, -109, 37, -95, 37, -84, 37, -78, 37, -70, 37, -68, 37,
-<a name="l02284"></a>02284 -60, 37, -53, 37, -49, 37, -39, 37, -26, 38, 60, 38, 64, 38, 66, 38, 96, 38, 99, 38, 102, 38, 107, -24, 5,
-<a name="l02285"></a>02285 -24, 24, -24, 58, -16, 2, -16, 49, -5, 2, -5, 32, -5, 54, -5, 60, -5, 62, -5, 65, -5, 68, -5, -79, -5,
-<a name="l02286"></a>02286 -25, -5, -1, -4, 98, -3, 63, -3, -14, -2, -4, -1, -4, -1, -1, 0, 0, 0, 32, 0, -96, 1, -113, 1, -110,
-<a name="l02287"></a>02287 1, -96, 1, -81, 1, -51, 1, -6, 2, 89, 2, -58, 2, -55, 2, -40, 3, 0, 3, 3, 3, 9, 3, 35, 3,
-<a name="l02288"></a>02288 126, 3, -124, 3, -116, 3, -114, 3, -93, 4, 1, 4, 14, 4, 81, 4, 94, 4, -112, 4, -106, 4, -102, 4, -94,
-<a name="l02289"></a>02289 4, -82, 4, -72, 4, -40, 4, -24, 5, -80, 5, -48, 5, -16, 6, 12, 6, 27, 6, 31, 6, 33, 6, 64, 6,
-<a name="l02290"></a>02290 96, 6, -16, 30, -128, 30, -96, 32, 12, 32, 19, 32, 23, 32, 32, 32, 38, 32, 42, 32, 48, 32, 50, 32, 57,
-<a name="l02291"></a>02291 32, 60, 32, 62, 32, 68, 32, 106, 32, 127, 32, -93, 32, -89, 32, -86, 33, 5, 33, 19, 33, 22, 33, 34, 33,
-<a name="l02292"></a>02292 38, 33, 46, 33, 83, 33, 91, 33, -112, 33, -88, 34, 2, 34, 6, 34, 15, 34, 17, 34, 21, 34, 25, 34, 30,
-<a name="l02293"></a>02293 34, 41, 34, 43, 34, 72, 34, 96, 34, 100, 35, 2, 35, 16, 35, 32, 37, 0, 37, 2, 37, 12, 37, 16, 37,
-<a name="l02294"></a>02294 20, 37, 24, 37, 28, 37, 36, 37, 44, 37, 52, 37, 60, 37, 80, 37, -128, 37, -124, 37, -120, 37, -116, 37, -112,
-<a name="l02295"></a>02295 37, -96, 37, -86, 37, -78, 37, -70, 37, -68, 37, -60, 37, -54, 37, -49, 37, -40, 37, -26, 38, 58, 38, 64, 38,
-<a name="l02296"></a>02296 66, 38, 96, 38, 99, 38, 101, 38, 106, -24, 1, -24, 24, -24, 58, -16, 1, -16, 4, -5, 1, -5, 29, -5, 42,
-<a name="l02297"></a>02297 -5, 56, -5, 62, -5, 64, -5, 67, -5, 70, -5, -45, -5, -4, -4, 94, -3, 62, -3, -14, -2, -128, -1, -4, -1,
-<a name="l02298"></a>02298 -1, -1, -29, 0, 0, 3, -107, -1, 20, 2, -54, 2, -67, 3, 47, -1, -36, 2, -52, 0, 0, -2, 15, 0, 0,
-<a name="l02299"></a>02299 1, -110, 1, 119, 1, 107, 1, 114, -4, -96, 0, 0, -2, 105, 0, 0, 0, 0, -2, 43, -2, 42, -2, 41, -2,
-<a name="l02300"></a>02300 40, 0, 0, 0, 124, 0, 122, 0, 118, 0, 108, 0, 104, 0, 76, 0, 62, 0, 0, -4, -48, -4, -53, -4, -32,
-<a name="l02301"></a>02301 -4, -46, -4, -49, 0, 0, 0, 0, 0, 0, 0, 0, -29, 93, 0, 0, -30, -36, 0, 0, 0, 0, 0, 0, -32,
-<a name="l02302"></a>02302 -123, 0, 0, -32, -107, -31, 91, -32, -124, -32, -7, -31, -88, -32, 119, 0, 0, -32, -73, 0, 0, -32, -112, 0, 0,
-<a name="l02303"></a>02303 -32, -118, -32, 125, -31, 117, -33, 106, -33, 121, -32, -70, -29, 44, -32, -114, -33, -88, -33, -106, -34, -106, -34, -94, -34,
-<a name="l02304"></a>02304 -117, 0, 0, -34, -90, 0, 0, 0, 0, -33, 23, -34, 113, -34, 95, 0, 0, -34, 48, -34, 64, -34, 51, -34, 36,
-<a name="l02305"></a>02305 -36, 70, -36, 69, -36, 60, -36, 57, -36, 54, -36, 51, -36, 48, -36, 41, -36, 34, -36, 27, -36, 20, -36, 1, -37,
-<a name="l02306"></a>02306 -18, -37, -21, -37, -24, -37, -27, -37, -30, 0, 0, 0, 0, -37, -58, -37, -65, -37, -66, -37, -73, 0, 0, -37, -59,
-<a name="l02307"></a>02307 -37, -91, -37, -81, -37, 69, -37, 66, -37, 65, -37, 36, -37, 34, -37, 33, -37, 30, 26, -64, 26, -6, 26, -31, 16,
-<a name="l02308"></a>02308 -66, 0, 0, 5, -66, 0, 0, 7, -99, 7, -100, 7, -101, 7, -102, 7, -103, 0, 0, 0, 0, 0, 0, 6, -23,
-<a name="l02309"></a>02309 6, 62, 5, -115, 5, 0, 3, 99, 0, 1, 0, 0, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02310"></a>02310 0, 0, 0, 2, -54, 0, 0, 2, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -54, 0, 0, 2, -44,
-<a name="l02311"></a>02311 2, -6, 0, 0, 0, 0, 0, 0, 0, 0, 3, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02312"></a>02312 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 92, 3, -114, 3, -72, 4, -46, 0, 0, 4, -20,
-<a name="l02313"></a>02313 0, 0, 5, -100, 5, -96, 5, -82, 0, 0, 5, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-<a name="l02314"></a>02314 -84, 0, 0, 5, -76, 0, 0, 5, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02315"></a>02315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -98, 0, 0, 5, -98, 5, -96, 0, 0, 0, 0, 0, 0, 5,
-<a name="l02316"></a>02316 -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02317"></a>02317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 116, 5, 118, 0, 0, 0,
-<a name="l02318"></a>02318 0, 0, 0, 0, 0, 5, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02319"></a>02319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 88, 0, 0, 5, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02320"></a>02320 0, 5, -84, 6, -126, 6, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, -93, 0, -124,
-<a name="l02321"></a>02321 0, -123, 3, 94, 0, -106, 0, -26, 0, -122, 0, -114, 0, -117, 0, -99, 0, -87, 0, -92, 0, 16, 0, -118, 1,
-<a name="l02322"></a>02322 0, 0, -125, 0, -109, 0, -16, 0, -15, 0, -115, 0, -105, 0, -120, 0, -62, 0, -36, 0, -17, 0, -98, 0, -86,
-<a name="l02323"></a>02323 0, -13, 0, -14, 0, -12, 0, -94, 0, -84, 0, -56, 0, -58, 0, -83, 0, 98, 0, 99, 0, -112, 0, 100, 0,
-<a name="l02324"></a>02324 -54, 0, 101, 0, -57, 0, -55, 0, -50, 0, -53, 0, -52, 0, -51, 0, -25, 0, 102, 0, -47, 0, -49, 0, -48,
-<a name="l02325"></a>02325 0, -82, 0, 103, 0, -18, 0, -111, 0, -44, 0, -46, 0, -45, 0, 104, 0, -23, 0, -21, 0, -119, 0, 106, 0,
-<a name="l02326"></a>02326 105, 0, 107, 0, 109, 0, 108, 0, 110, 0, -96, 0, 111, 0, 113, 0, 112, 0, 114, 0, 115, 0, 117, 0, 116,
-<a name="l02327"></a>02327 0, 118, 0, 119, 0, -24, 0, 120, 0, 122, 0, 121, 0, 123, 0, 125, 0, 124, 0, -73, 0, -95, 0, 127, 0,
-<a name="l02328"></a>02328 126, 0, -128, 0, -127, 0, -22, 0, -20, 0, -71, 1, -106, 1, -105, 1, 2, 1, 3, 1, 4, 1, 5, 0, -5,
-<a name="l02329"></a>02329 0, -4, 1, -104, 1, -103, 1, -102, 1, -101, 0, -3, 0, -2, 1, 6, 1, 7, 1, 8, 0, -1, 1, -100, 1,
-<a name="l02330"></a>02330 -99, 1, -98, 1, -97, 1, -96, 1, -95, 1, 9, 1, 10, 1, 11, 1, 12, 1, -94, 1, -93, 0, -10, 0, -9,
-<a name="l02331"></a>02331 1, -92, 1, -91, 1, -90, 1, -89, 1, -88, 1, -87, 1, -86, 1, -85, 1, -84, 1, -83, 1, -82, 1, -81, 1,
-<a name="l02332"></a>02332 -80, 1, -79, 1, -78, 1, -77, 0, -8, 0, -43, 1, -118, 1, -117, 1, -76, 1, -75, 1, -74, 1, -73, 1, -72,
-<a name="l02333"></a>02333 1, 13, 1, 14, 1, -71, 1, -70, 1, 15, 1, 16, 1, 17, 1, 18, 0, -32, 0, -31, 1, 19, 1, 20, 1,
-<a name="l02334"></a>02334 -69, 1, -68, 1, 21, 1, 22, 1, -116, 1, -67, 1, -66, 1, -65, 1, -64, 1, -63, 1, -62, 1, 23, 1, 24,
-<a name="l02335"></a>02335 0, -81, 0, -80, 1, 25, 1, 26, 1, -61, 1, -60, 1, 27, 1, 28, 1, 29, 1, 30, 1, -59, 1, -58, 0,
-<a name="l02336"></a>02336 -7, 0, -6, 0, -30, 0, -29, 1, 31, 1, 32, 1, 33, 1, 34, 1, -57, 1, -56, 1, -55, 1, -54, 1, -53,
-<a name="l02337"></a>02337 1, -52, 1, -51, 1, -50, 1, 35, 1, 36, 1, 37, 1, 38, 1, -49, 1, -48, 1, -47, 1, -46, 1, -45, 1,
-<a name="l02338"></a>02338 -44, 0, -70, 1, 39, 1, 40, 1, 41, 1, 42, 0, -28, 0, -27, 1, -43, 0, -42, 0, -33, 0, -39, 0, -38,
-<a name="l02339"></a>02339 0, -37, 0, -34, 0, -41, 0, -35, 1, -17, 1, -16, 1, -15, 1, -36, 1, -14, 1, -13, 1, -12, 1, -10, 1,
-<a name="l02340"></a>02340 -9, 1, -8, 1, -7, 1, -6, 1, 43, 1, -5, 1, -4, 1, -3, 1, -2, 1, 44, 1, -1, 2, 0, 2, 1,
-<a name="l02341"></a>02341 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 1, 45, 2, 11, 2, 12, 2,
-<a name="l02342"></a>02342 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 1, 46, 2, 21, 2, 22, 1, 47, 1, 48,
-<a name="l02343"></a>02343 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, -116, 2, 33, 2,
-<a name="l02344"></a>02344 34, 1, 49, 1, 50, 2, 35, 1, 51, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43,
-<a name="l02345"></a>02345 2, -120, 2, -119, 5, 16, 5, 17, 2, -115, 2, -114, 2, -113, 2, -112, 2, -111, 2, -110, 2, -109, 2, -108, 2,
-<a name="l02346"></a>02346 -107, 2, -106, 2, -106, 2, -105, 2, -104, 2, -103, 2, -102, 2, -101, 2, -100, 2, -99, 2, -98, 2, -97, 2, -17,
-<a name="l02347"></a>02347 3, -127, 3, -125, 3, -123, 3, -121, 3, -119, 3, -115, 3, -113, 3, -109, 3, -107, 3, -103, 3, -99, 3, -95, 3,
-<a name="l02348"></a>02348 -91, 3, -87, 3, -85, 3, -83, 3, -81, 3, -79, 3, -75, 3, -71, 3, -67, 3, -63, 3, -59, 3, -55, 3, -51,
-<a name="l02349"></a>02349 2, -16, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3, -27, 3, -23, 3, -19, 3, -17, 3, -15, 2, -15, 2,
-<a name="l02350"></a>02350 -14, 2, -13, 2, -12, 2, -11, 2, -10, 2, -9, 2, -8, 5, 56, 5, 57, 5, 58, 2, -7, 2, -6, 2, -5,
-<a name="l02351"></a>02351 2, -4, 2, -3, 2, -2, 2, -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 2, -20, 3, 5, 5, 40, 5,
-<a name="l02352"></a>02352 44, 5, 59, 5, 60, 5, 62, 5, 64, 5, 57, 5, 66, 5, 68, 5, 70, 5, 72, 5, 74, 5, 78, 5, 82,
-<a name="l02353"></a>02353 5, 86, 5, 90, 3, 31, 5, 94, 5, 98, 5, 102, 5, 106, 5, 110, 5, 114, 5, 118, 3, 39, 5, 122, 5,
-<a name="l02354"></a>02354 126, 5, -128, 5, -126, 5, -124, 5, -122, 5, -120, 5, -118, 5, -116, 5, -114, 5, -112, 5, -110, 5, -108, 5, -106,
-<a name="l02355"></a>02355 5, -104, 5, -102, 5, -100, 3, 43, 5, -98, 5, -96, 5, -92, 5, -88, 5, -84, 5, -80, 5, -76, 5, -74, 5,
-<a name="l02356"></a>02356 -70, 5, -69, 5, -65, 5, -61, 5, -57, 5, -53, 5, -49, 5, -47, 3, 45, 5, -45, 5, -41, 5, -37, 5, -33,
-<a name="l02357"></a>02357 5, -29, 3, 49, 5, -25, 5, -21, 5, -17, 5, -13, 5, -9, 5, -5, 5, -1, 6, 3, 6, 7, 6, 11, 6,
-<a name="l02358"></a>02358 15, 6, 17, 6, 19, 6, 23, 3, -21, 6, 25, 6, 29, 6, 31, 6, 32, 6, 33, 6, 34, 6, 36, 6, 38,
-<a name="l02359"></a>02359 6, 40, 6, 42, 6, 44, 6, 46, 6, 48, 3, 53, 6, 50, 6, 52, 6, 56, 6, 58, 6, 62, 6, 64, 6,
-<a name="l02360"></a>02360 66, 6, 68, 3, 8, 6, 69, 6, 70, 6, 71, 6, 72, 6, 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78,
-<a name="l02361"></a>02361 6, 79, 6, 80, 6, 81, 6, 82, 6, 83, 6, 84, 6, 85, 6, 86, 6, 87, 6, 88, 6, 89, 6, 90, 6,
-<a name="l02362"></a>02362 78, 6, 91, 2, -7, 2, -6, 2, -5, 2, -4, 3, 10, 3, 11, 3, 12, 3, 0, 3, 1, 3, 2, 6, 92,
-<a name="l02363"></a>02363 6, 96, 6, 100, 6, 104, 6, 105, 4, -92, 4, -91, 4, -90, 4, -89, 4, -88, 4, -87, 4, -86, 4, -85, 4,
-<a name="l02364"></a>02364 -84, 4, -83, 4, -82, 4, -81, 4, -80, 4, -79, 4, -78, 4, -77, 4, -76, 4, -75, 4, -74, 4, -73, 4, -72,
-<a name="l02365"></a>02365 4, -71, 4, -70, 4, -69, 4, -68, 4, -67, 4, -66, 4, -65, 4, -64, 4, -63, 4, -62, 4, -61, 4, -60, 4,
-<a name="l02366"></a>02366 -59, 4, -58, 4, -57, 4, -56, 4, -55, 4, -54, 4, -53, 4, -52, 4, -51, 4, -50, 4, -49, 4, -48, 4, -47,
-<a name="l02367"></a>02367 4, -46, 4, -45, 4, -44, 4, -43, 4, -42, 4, -41, 4, -40, 4, -39, 4, -38, 4, -37, 4, -36, 4, -35, 4,
-<a name="l02368"></a>02368 -34, 4, -33, 4, -32, 4, -31, 4, -30, 4, -29, 4, -28, 4, -27, 4, -26, 4, -25, 4, -24, 4, -23, 4, -22,
-<a name="l02369"></a>02369 4, -21, 4, -20, 4, -19, 4, -18, 4, -17, 4, -16, 4, -15, 4, -14, 4, -13, 4, -12, 4, -11, 1, -29, 1,
-<a name="l02370"></a>02370 -28, 4, -10, 4, -9, 4, -8, 4, -7, 4, -6, 4, -5, 0, -79, 0, -78, 2, -118, 1, 52, 0, -75, 0, -74,
-<a name="l02371"></a>02371 0, -61, 1, -27, 0, -77, 0, -76, 0, -60, 0, -126, 0, -63, 0, -121, 3, 78, 3, 79, 3, 82, 3, 80, 3,
-<a name="l02372"></a>02372 81, 3, 85, 3, 86, 3, 87, 3, 88, 3, 83, 3, 84, 0, -11, 1, -25, 2, -64, 4, 126, 0, -68, 0, -103,
-<a name="l02373"></a>02373 0, -19, 0, -62, 0, -91, 0, -110, 1, 63, 0, -113, 1, 65, 1, 118, 1, -111, 1, -110, 1, -109, 1, 119, 0,
-<a name="l02374"></a>02374 -72, 1, 124, 1, -19, 1, -18, 4, 113, 4, 114, 4, -127, 4, 115, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93,
-<a name="l02375"></a>02375 4, -124, 4, 117, 4, 119, 4, -123, 4, 118, 4, -122, 4, 121, 4, -121, 4, -120, 4, -119, 4, -118, 4, -117, 4,
-<a name="l02376"></a>02376 -116, 4, 120, 4, -108, 4, -115, 4, -114, 4, -113, 4, -112, 4, -111, 4, -106, 4, -102, 4, -101, 4, -100, 4, -99,
-<a name="l02377"></a>02377 4, -98, 4, -105, 4, -104, 4, -103, 4, 125, 4, -97, 4, -96, 4, -95, 4, -94, 4, -93, 6, 116, 6, 117, 6,
-<a name="l02378"></a>02378 119, 2, -58, 2, -34, 2, -33, 2, -32, 2, -31, 2, -30, 2, -29, 2, -28, 2, -27, 2, -26, 2, -25, 5, 60,
-<a name="l02379"></a>02379 5, 61, 5, 82, 5, 83, 5, 84, 5, 85, 3, 31, 3, 32, 3, 33, 3, 34, 5, 98, 5, 99, 5, 100, 5,
-<a name="l02380"></a>02380 101, 5, 78, 5, 79, 5, 80, 5, 81, 5, 94, 5, 95, 5, 96, 5, 97, 5, 74, 5, 75, 5, 76, 5, 77,
-<a name="l02381"></a>02381 5, -61, 5, -60, 5, -59, 5, -58, 5, -53, 5, -52, 5, -51, 5, -50, 5, 114, 5, 115, 5, 116, 5, 117, 5,
-<a name="l02382"></a>02382 110, 5, 111, 5, 112, 5, 113, 3, 39, 3, 40, 3, 41, 3, 42, 5, 122, 5, 123, 5, 124, 5, 125, 5, -120,
-<a name="l02383"></a>02383 5, -119, 5, -122, 5, -121, 5, -118, 5, -117, 5, 126, 5, 127, 3, 43, 3, 44, 5, -112, 5, -111, 3, 45, 3,
-<a name="l02384"></a>02384 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 5, -13, 5, -12, 5, -11, 5, -10, 5, -21, 5, -20,
-<a name="l02385"></a>02385 5, -19, 5, -18, 6, 15, 6, 16, 6, 17, 6, 18, 5, 76, 5, 77, 6, 29, 6, 30, 6, 106, 6, 31, 6,
-<a name="l02386"></a>02386 107, 6, 108, 3, -21, 3, -22, 3, -21, 3, -20, 6, 64, 6, 65, 6, 66, 6, 67, 5, -33, 5, -32, 5, -31,
-<a name="l02387"></a>02387 5, -30, 6, 40, 6, 41, 6, 38, 6, 39, 6, 42, 6, 43, 5, 70, 6, 48, 6, 49, 6, 36, 6, 37, 6,
-<a name="l02388"></a>02388 44, 6, 45, 6, 58, 6, 59, 6, 60, 6, 61, 3, 53, 3, 54, 3, -13, 3, -12, 0, 0, 64, 67, 85, 84,
-<a name="l02389"></a>02389 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40,
-<a name="l02390"></a>02390 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15,
-<a name="l02391"></a>02391 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 44, 69, 35, 70, 96, 32, -80, 38, 96, -80,
-<a name="l02392"></a>02392 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 35, 97, 32, -80, 38, 97, -80, 4, 38, 35, 72, 72, 45, 44, 69,
-<a name="l02393"></a>02393 35, 70, 96, -80, 32, 97, 32, -80, 70, 96, -80, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 35, 97, -80, 32,
-<a name="l02394"></a>02394 96, 32, -80, 38, 97, -80, 32, 97, -80, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 96, -80, 64, 97, 32, -80,
-<a name="l02395"></a>02395 102, 96, -80, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 35, 97, -80, 64, 96, 32, -80, 38, 97, -80, 64, 97,
-<a name="l02396"></a>02396 -80, 4, 38, 35, 72, 72, 45, 44, 1, 16, 32, 60, 0, 60, 45, 44, 32, 69, 35, 32, -80, -51, 68, 35, 32,
-<a name="l02397"></a>02397 -72, 1, 90, 81, 88, 35, 32, -80, -115, 68, 35, 89, 32, -80, -19, 81, 88, 35, 32, -80, 77, 68, 35, 89, 32,
-<a name="l02398"></a>02398 -80, -112, 81, 88, 35, 32, -80, 13, 68, 35, 89, 33, 33, 45, 44, 32, 32, 69, 24, 104, 68, 32, -80, 1, 96,
-<a name="l02399"></a>02399 32, 69, -80, 70, 118, 104, -118, 69, 96, 68, 45, 44, 1, -79, 11, 10, 67, 35, 67, 101, 10, 45, 44, 0, -79,
-<a name="l02400"></a>02400 10, 11, 67, 35, 67, 11, 45, 44, 0, -80, 23, 35, 112, -79, 1, 23, 62, 1, -80, 23, 35, 112, -79, 2, 23,
-<a name="l02401"></a>02401 69, 58, -79, 2, 0, 8, 13, 45, 44, 69, -80, 26, 35, 68, 69, -80, 25, 35, 68, 45, 44, 32, 69, -80, 3,
-<a name="l02402"></a>02402 37, 69, 97, 100, -80, 80, 81, 88, 69, 68, 27, 33, 33, 89, 45, 44, -80, 1, 67, 99, 35, 98, -80, 0, 35,
-<a name="l02403"></a>02403 66, -80, 15, 43, 45, 44, 32, 69, -80, 0, 67, 96, 68, 45, 44, 1, -80, 6, 67, -80, 7, 67, 101, 10, 45,
-<a name="l02404"></a>02404 44, 32, 105, -80, 64, 97, -80, 0, -117, 32, -79, 44, -64, -118, -116, -72, 16, 0, 98, 96, 43, 12, 100, 35, 100,
-<a name="l02405"></a>02405 97, 92, 88, -80, 3, 97, 89, 45, 44, 69, -80, 17, 43, -80, 23, 35, 68, -80, 23, 122, -28, 24, 45, 44, 69,
-<a name="l02406"></a>02406 -80, 17, 43, -80, 23, 35, 68, 45, 44, -80, 18, 67, 88, -121, 69, -80, 17, 43, -80, 23, 35, 68, -80, 23, 122,
-<a name="l02407"></a>02407 -28, 27, 3, -118, 69, 24, 105, 32, -80, 23, 35, 68, -118, -118, -121, 32, -80, -96, 81, 88, -80, 17, 43, -80, 23,
-<a name="l02408"></a>02408 35, 68, -80, 23, 122, -28, 27, 33, -80, 23, 122, -28, 89, 89, 24, 45, 44, 45, 44, -80, 2, 37, 70, 96, -118,
-<a name="l02409"></a>02409 70, -80, 64, 97, -116, 72, 45, 44, 75, 83, 32, 92, 88, -80, 2, -123, 89, 88, -80, 1, -123, 89, 45, 44, 32,
-<a name="l02410"></a>02410 -80, 3, 37, 69, -80, 25, 35, 68, 69, -80, 26, 35, 68, 69, 101, 35, 69, 32, -80, 3, 37, 96, 106, 32, -80,
-<a name="l02411"></a>02411 9, 35, 66, 35, 104, -118, 106, 96, 97, 32, -80, 26, -118, -80, 0, 82, 121, 33, -78, 26, 26, 64, -71, -1, -32,
-<a name="l02412"></a>02412 0, 26, 69, 32, -118, 84, 88, 35, 33, -80, 63, 27, 35, 89, 97, 68, 28, -79, 20, 0, -118, 82, 121, -77, 25,
-<a name="l02413"></a>02413 64, 32, 25, 69, 32, -118, 84, 88, 35, 33, -80, 63, 27, 35, 89, 97, 68, 45, 44, -79, 16, 17, 67, 35, 67,
-<a name="l02414"></a>02414 11, 45, 44, -79, 14, 15, 67, 35, 67, 11, 45, 44, -79, 12, 13, 67, 35, 67, 11, 45, 44, -79, 12, 13, 67,
-<a name="l02415"></a>02415 35, 67, 101, 11, 45, 44, -79, 14, 15, 67, 35, 67, 101, 11, 45, 44, -79, 16, 17, 67, 35, 67, 101, 11, 45,
-<a name="l02416"></a>02416 44, 75, 82, 88, 69, 68, 27, 33, 33, 89, 45, 44, 1, 32, -80, 3, 37, 35, 73, -80, 64, 96, -80, 32, 99,
-<a name="l02417"></a>02417 32, -80, 0, 82, 88, 35, -80, 2, 37, 56, 35, -80, 2, 37, 101, 56, 0, -118, 99, 56, 27, 33, 33, 33, 33,
-<a name="l02418"></a>02418 33, 89, 1, 45, 44, 75, -80, 100, 81, 88, 69, 105, -80, 9, 67, 96, -118, 16, 58, 27, 33, 33, 33, 89, 45,
-<a name="l02419"></a>02419 44, 1, -80, 5, 37, 16, 35, 32, -118, -11, 0, -80, 1, 96, 35, -19, -20, 45, 44, 1, -80, 5, 37, 16, 35,
-<a name="l02420"></a>02420 32, -118, -11, 0, -80, 1, 97, 35, -19, -20, 45, 44, 1, -80, 6, 37, 16, -11, 0, -19, -20, 45, 44, 32, -80,
-<a name="l02421"></a>02421 1, 96, 1, 16, 32, 60, 0, 60, 45, 44, 32, -80, 1, 97, 1, 16, 32, 60, 0, 60, 45, 44, -80, 43, 43,
-<a name="l02422"></a>02422 -80, 42, 42, 45, 44, 0, -80, 7, 67, -80, 6, 67, 11, 45, 44, 62, -80, 42, 42, 45, 44, 53, 45, 44, 118,
-<a name="l02423"></a>02423 -72, 2, 35, 35, 112, 16, 32, -72, 2, 35, 69, 32, -80, 0, 80, 88, -80, 1, 97, 89, 58, 47, 24, 45, 44,
-<a name="l02424"></a>02424 33, 33, 12, 100, 35, 100, -117, -72, 64, 0, 98, 45, 44, 33, -80, -128, 81, 88, 12, 100, 35, 100, -117, -72, 32,
-<a name="l02425"></a>02425 0, 98, 27, -78, 0, 64, 47, 43, 89, -80, 2, 96, 45, 44, 33, -80, -64, 81, 88, 12, 100, 35, 100, -117, -72,
-<a name="l02426"></a>02426 21, 85, 98, 27, -78, 0, -128, 47, 43, 89, -80, 2, 96, 45, 44, 12, 100, 35, 100, -117, -72, 64, 0, 98, 96,
-<a name="l02427"></a>02427 35, 33, 45, 44, -76, 0, 1, 0, 0, 0, 21, -80, 8, 38, -80, 8, 38, -80, 8, 38, -80, 8, 38, 15, 16,
-<a name="l02428"></a>02428 22, 19, 69, 104, 58, -80, 1, 22, 45, 44, -76, 0, 1, 0, 0, 0, 21, -80, 8, 38, -80, 8, 38, -80, 8,
-<a name="l02429"></a>02429 38, -80, 8, 38, 15, 16, 22, 19, 69, 104, 101, 58, -80, 1, 22, 45, 44, 75, 83, 35, 75, 81, 90, 88, 32,
-<a name="l02430"></a>02430 69, -118, 96, 68, 27, 33, 33, 89, 45, 44, 75, 84, 88, 32, 69, -118, 96, 68, 27, 33, 33, 89, 45, 44, 75,
-<a name="l02431"></a>02431 83, 35, 75, 81, 90, 88, 56, 27, 33, 33, 89, 45, 44, 75, 84, 88, 56, 27, 33, 33, 89, 45, 44, -80, 19,
-<a name="l02432"></a>02432 67, 88, 3, 27, 2, 89, 45, 44, -80, 19, 67, 88, 2, 27, 3, 89, 45, 44, 75, 84, -80, 18, 67, 92, 90,
-<a name="l02433"></a>02433 88, 56, 27, 33, 33, 89, 45, 44, -80, 18, 67, 92, 88, 12, -80, 4, 37, -80, 4, 37, 6, 12, 100, 35, 100,
-<a name="l02434"></a>02434 97, 100, -72, 7, 8, 81, 88, -80, 4, 37, -80, 4, 37, 1, 32, 70, -80, 16, 96, 72, 32, 70, -80, 16, 96,
-<a name="l02435"></a>02435 72, 89, 10, 33, 33, 27, 33, 33, 89, 45, 44, -80, 18, 67, 92, 88, 12, -80, 4, 37, -80, 4, 37, 6, 12,
-<a name="l02436"></a>02436 100, 35, 100, 97, 100, -72, 7, 8, 81, 88, -80, 4, 37, -80, 4, 37, 1, 32, 70, -72, -1, -16, 96, 72, 32,
-<a name="l02437"></a>02437 70, -72, -1, -16, 96, 72, 89, 10, 33, 33, 27, 33, 33, 89, 45, 44, 75, 83, 35, 75, 81, 90, 88, -80, 58,
-<a name="l02438"></a>02438 43, 27, 33, 33, 89, 45, 44, 75, 83, 35, 75, 81, 90, 88, -80, 59, 43, 27, 33, 33, 89, 45, 44, 75, 83,
-<a name="l02439"></a>02439 35, 75, 81, 90, -80, 18, 67, 92, 90, 88, 56, 27, 33, 33, 89, 45, 44, 12, -118, 3, 75, 84, -80, 4, 38,
-<a name="l02440"></a>02440 2, 75, 84, 90, -118, -118, 10, -80, 18, 67, 92, 90, 88, 56, 27, 33, 33, 89, 45, 44, 75, 82, 88, -80, 4,
-<a name="l02441"></a>02441 37, -80, 4, 37, 73, -80, 4, 37, -80, 4, 37, 73, 97, 32, -80, 0, 84, 88, 33, 32, 67, -80, 0, 85, 88,
-<a name="l02442"></a>02442 -80, 3, 37, -80, 3, 37, -72, -1, -64, 56, -72, -1, -64, 56, 89, 27, -80, 64, 84, 88, 32, 67, -80, 0, 84,
-<a name="l02443"></a>02443 88, -80, 2, 37, -72, -1, -64, 56, 89, 27, 32, 67, -80, 0, 84, 88, -80, 3, 37, -80, 3, 37, -72, -1, -64,
-<a name="l02444"></a>02444 56, -72, -1, -64, 56, 27, -80, 3, 37, -72, -1, -64, 56, 89, 89, 89, 89, 33, 33, 33, 33, 45, 44, 70, 35,
-<a name="l02445"></a>02445 70, 96, -118, -118, 70, 35, 32, 70, -118, 96, -118, 97, -72, -1, -128, 98, 35, 32, 16, 35, -118, -71, 2, -62, 2,
-<a name="l02446"></a>02446 -62, -118, 112, 69, 96, 32, -80, 0, 80, 88, -80, 1, 97, -72, -1, -70, -117, 27, -80, 70, -116, 89, -80, 16, 96,
-<a name="l02447"></a>02447 104, 1, 58, 45, 44, -79, 2, 0, 66, -79, 35, 1, -120, 81, -79, 64, 1, -120, 83, 90, 88, -71, 16, 0, 0,
-<a name="l02448"></a>02448 32, -120, 84, 88, -78, 2, 1, 2, 67, 96, 66, 89, -79, 36, 1, -120, 81, 88, -71, 32, 0, 0, 64, -120, 84,
-<a name="l02449"></a>02449 88, -78, 2, 2, 2, 67, 96, 66, -79, 36, 1, -120, 84, 88, -78, 2, 32, 2, 67, 96, 66, 0, 75, 1, 75,
-<a name="l02450"></a>02450 82, 88, -78, 2, 8, 2, 67, 96, 66, 89, 27, -71, 64, 0, 0, -128, -120, 84, 88, -78, 2, 4, 2, 67, 96,
-<a name="l02451"></a>02451 66, 89, -71, 64, 0, 0, -128, 99, -72, 1, 0, -120, 84, 88, -78, 2, 8, 2, 67, 96, 66, 89, -71, 64, 0,
-<a name="l02452"></a>02452 1, 0, 99, -72, 2, 0, -120, 84, 88, -78, 2, 16, 2, 67, 96, 66, 89, -71, 64, 0, 2, 0, 99, -72, 4,
-<a name="l02453"></a>02453 0, -120, 84, 88, -78, 2, 64, 2, 67, 96, 66, 89, 89, 89, 89, 89, 45, 44, -80, 2, 67, 84, 88, 75, 83,
-<a name="l02454"></a>02454 35, 75, 81, 90, 88, 56, 27, 33, 33, 89, 27, 33, 33, 33, 33, 89, 45, 0, 0, -79, 84, 15, 65, 34, 3,
-<a name="l02455"></a>02455 23, 0, -17, 3, 23, 0, -1, 3, 23, 0, 3, 0, 31, 3, 23, 0, 47, 3, 23, 0, 79, 3, 23, 0, 95,
-<a name="l02456"></a>02456 3, 23, 0, -113, 3, 23, 0, -97, 3, 23, 0, 6, 0, 15, 3, 23, 0, 95, 3, 23, 0, 111, 3, 23, 0,
-<a name="l02457"></a>02457 127, 3, 23, 0, -65, 3, 23, 0, -16, 3, 23, 0, 6, 0, 64, 3, 23, -78, -110, 51, 64, -72, 3, 23, -78,
-<a name="l02458"></a>02458 -117, 51, 64, -72, 3, 23, -77, 106, 108, 50, 64, -72, 3, 23, -78, 97, 51, 64, -72, 3, 23, -77, 92, 93, 50,
-<a name="l02459"></a>02459 64, -72, 3, 23, -77, 87, 89, 50, 64, -72, 3, 23, -77, 77, 81, 50, 64, -72, 3, 23, -77, 68, 73, 50, 64,
-<a name="l02460"></a>02460 -72, 3, 23, -78, 58, 51, 64, -72, 3, 23, -77, 49, 52, 50, 64, -72, 3, 23, -77, 46, 66, 50, 64, -72, 3,
-<a name="l02461"></a>02461 23, -77, 39, 44, 50, 64, -72, 3, 23, -77, 18, 37, 50, -128, -72, 3, 23, -77, 10, 13, 50, -64, 65, 22, 3,
-<a name="l02462"></a>02462 22, 0, -48, 3, 22, 0, 2, 0, 112, 3, 22, 0, 1, 2, -60, 0, 15, 1, 1, 0, 31, 0, -96, 3, 21,
-<a name="l02463"></a>02463 0, -80, 3, 21, 0, 2, 3, 6, 0, 15, 1, 1, 0, 31, 0, 64, 3, 18, -77, 36, 38, 50, -97, -65, 3,
-<a name="l02464"></a>02464 4, 0, 1, 3, 2, 3, 1, 0, 100, 0, 31, -1, -64, 3, 1, -78, 13, 17, 50, 65, 10, 2, -1, 2, -17,
-<a name="l02465"></a>02465 0, 18, 0, 31, 2, -18, 2, -19, 0, 100, 0, 31, -1, -64, 2, -19, -77, 14, 17, 50, -97, 65, 74, 2, -30,
-<a name="l02466"></a>02466 0, -81, 2, -30, 0, -65, 2, -30, 0, 3, 2, -30, 2, -30, 2, -31, 2, -31, 0, 127, 2, -32, 0, 1, 0,
-<a name="l02467"></a>02467 16, 2, -32, 0, 63, 2, -32, 0, -97, 2, -32, 0, -65, 2, -32, 0, -49, 2, -32, 0, -17, 2, -32, 0, 6,
-<a name="l02468"></a>02468 2, -32, 2, -32, 2, -33, 2, -33, 2, -34, 2, -34, 0, 15, 2, -35, 0, 47, 2, -35, 0, 63, 2, -35, 0,
-<a name="l02469"></a>02469 95, 2, -35, 0, -97, 2, -35, 0, -65, 2, -35, 0, -17, 2, -35, 0, 7, 2, -35, 2, -35, 0, 16, 2, -36,
-<a name="l02470"></a>02470 0, 1, 0, 0, 2, -36, 0, 1, 0, 16, 2, -36, 0, 63, 2, -36, 0, 2, 2, -36, 2, -36, 0, 16, 2,
-<a name="l02471"></a>02471 -37, 0, 1, 2, -37, 2, -37, 0, 15, 2, -38, 0, 1, 2, -38, 2, -38, -1, -64, 2, -45, -78, 55, 57, 50,
-<a name="l02472"></a>02472 -71, -1, -64, 2, -45, -78, 43, 47, 50, -71, -1, -64, 2, -45, -78, 31, 37, 50, -71, -1, -64, 2, -45, -78, 23,
-<a name="l02473"></a>02473 27, 50, -71, -1, -64, 2, -45, -78, 18, 22, 50, -72, 2, -46, -78, -7, 41, 31, -72, 2, -29, -77, 32, 43, 31,
-<a name="l02474"></a>02474 -96, 65, 48, 2, -44, 0, -80, 2, -44, 0, 2, 0, 0, 2, -44, 0, 16, 2, -44, 0, 32, 2, -44, 0, 80,
-<a name="l02475"></a>02475 2, -44, 0, 96, 2, -44, 0, 112, 2, -44, 0, 6, 0, 96, 2, -42, 0, 112, 2, -42, 0, -128, 2, -42, 0,
-<a name="l02476"></a>02476 -112, 2, -42, 0, -96, 2, -42, 0, -80, 2, -42, 0, 6, 0, 0, 2, -42, 0, 16, 2, -42, 0, 32, 2, -54,
-<a name="l02477"></a>02477 0, 32, 2, -52, 0, 32, 2, -42, 0, 48, 2, -42, 0, 64, 2, -42, 0, 80, 2, -42, 0, 8, 2, -48, -78,
-<a name="l02478"></a>02478 32, 43, 31, -72, 2, -49, -78, 38, 66, 31, 65, 22, 2, -50, 2, -57, 0, 23, 0, 31, 2, -51, 2, -56, 0,
-<a name="l02479"></a>02479 23, 0, 31, 2, -52, 2, -58, 0, 23, 0, 31, 2, -53, 2, -59, 0, 23, 0, 31, 2, -55, 2, -59, 0, 30,
-<a name="l02480"></a>02480 0, 31, 2, -54, 2, -58, -78, 30, 31, 0, 65, 11, 2, -58, 0, 0, 2, -57, 0, 16, 2, -58, 0, 16, 2,
-<a name="l02481"></a>02481 -57, 0, 47, 2, -59, 0, 5, 2, -63, -77, 36, 18, 31, -1, 65, 17, 2, -65, 0, 1, 0, 31, 2, -65, 0,
-<a name="l02482"></a>02482 47, 2, -65, 0, 63, 2, -65, 0, 79, 2, -65, 0, 95, 2, -65, 0, -113, 2, -65, 0, 6, 2, -65, 2, 34,
-<a name="l02483"></a>02483 -78, 100, 31, 18, 65, 11, 2, -69, 0, -54, 8, 0, 0, 31, 2, -78, 0, -23, 8, 0, 0, 31, 2, -90, 0,
-<a name="l02484"></a>02484 -94, 8, 0, 64, 106, 31, 64, 38, 67, 73, 50, 64, 32, 67, 73, 50, 64, 38, 58, 61, 50, 64, 32, 58, 61,
-<a name="l02485"></a>02485 50, -97, 32, -97, 38, 2, 64, 38, -106, -103, 50, 64, 32, -106, -103, 50, 64, 38, -114, -110, 50, 64, 32, -114, -110,
-<a name="l02486"></a>02486 50, 64, 38, -124, -116, 50, 64, 32, -124, -116, 50, 64, 38, 122, -127, 50, 64, 32, 122, -127, 50, 64, 38, 108, 118,
-<a name="l02487"></a>02487 50, 64, 32, 108, 118, 50, 64, 38, 100, 106, 50, 64, 32, 100, 106, 50, 64, 38, 90, 95, 50, 64, 32, 90, 95,
-<a name="l02488"></a>02488 50, 64, 38, 79, 84, 50, 64, 32, 79, 84, 50, -72, 2, -98, -73, 36, 39, 31, 55, 79, 107, 1, 32, 65, 15,
-<a name="l02489"></a>02489 2, 119, 0, 48, 2, 119, 0, 64, 2, 119, 0, 80, 2, 119, 0, 4, 2, 119, 2, 119, 2, 119, 0, -7, 4,
-<a name="l02490"></a>02490 0, 0, 31, 2, -101, -78, 42, 42, 31, -72, 2, -102, 64, 43, 41, 42, 31, -128, -70, 1, -128, -68, 1, -128, 82,
-<a name="l02491"></a>02491 1, -128, -94, 1, -128, 101, 1, -128, 126, 1, -128, -127, 1, -128, 60, 1, -128, 94, 1, -128, 43, 1, -128, 28, 1,
-<a name="l02492"></a>02492 -128, 30, 1, -128, 64, 1, -128, -69, 1, 56, 0, 1, 0, -128, 1, 64, -76, 1, -128, 64, 1, -128, -69, 1, 56,
-<a name="l02493"></a>02493 0, 1, 0, -128, 1, 57, 64, 24, 1, -128, -54, 1, -128, -83, 1, -128, 115, 1, -128, 38, 1, -128, 37, 1, -128,
-<a name="l02494"></a>02494 36, 1, -128, 32, 1, 55, 64, -72, 2, 33, -78, 73, 51, 64, -72, 2, 33, -78, 69, 51, 64, -72, 2, 33, -77,
-<a name="l02495"></a>02495 65, 66, 50, 64, -72, 2, 33, -77, 61, 62, 50, 15, 65, 15, 2, 33, 0, 63, 2, 33, 0, 127, 2, 33, 0,
-<a name="l02496"></a>02496 3, 0, -65, 2, 33, 0, -49, 2, 33, 0, -1, 2, 33, 0, 3, 0, 64, 2, 33, -77, 32, 34, 50, 64, -72,
-<a name="l02497"></a>02497 2, 33, -77, 25, 30, 50, 64, -72, 2, 34, -77, 42, 63, 50, 64, -72, 2, 33, -77, 46, 58, 50, 111, 65, 72,
-<a name="l02498"></a>02498 2, -61, 0, 127, 2, -61, 0, -113, 2, -61, 0, -33, 2, -61, 0, 4, 0, 47, 2, -61, 0, 96, 2, -61, 0,
-<a name="l02499"></a>02499 -49, 2, -61, 0, 3, 0, 15, 2, -61, 0, 63, 2, -61, 0, 95, 2, -61, 0, -64, 2, -61, 0, -17, 2, -61,
-<a name="l02500"></a>02500 0, -1, 2, -61, 0, 6, 0, -33, 2, 34, 0, 1, 0, -113, 2, 34, 0, 1, 0, 15, 2, 34, 0, 47, 2,
-<a name="l02501"></a>02501 34, 0, 63, 2, 34, 0, 95, 2, 34, 0, 127, 2, 34, 0, -17, 2, 34, 0, 6, 0, -65, 2, 33, 0, -17,
-<a name="l02502"></a>02502 2, 33, 0, 2, 0, 111, 2, 33, 0, 127, 2, 33, 0, -81, 2, 33, 0, 3, 0, 47, 2, 33, 0, 63, 2,
-<a name="l02503"></a>02503 33, 0, 79, 2, 33, 0, 3, 2, -61, 2, -61, 2, 34, 2, 34, 2, 33, 2, 33, 64, 29, 16, 28, 16, 43,
-<a name="l02504"></a>02504 16, 72, 3, -113, 28, 1, 15, 30, 1, 79, 30, -1, 30, 2, 55, 0, 22, 22, 0, 0, 0, 18, 17, 8, 17,
-<a name="l02505"></a>02505 -72, 1, 13, -74, -9, 13, -8, -9, 13, 0, 9, 65, 9, 2, -114, 2, -113, 0, 29, 0, 31, 2, -112, 2, -113,
-<a name="l02506"></a>02506 0, 29, 0, 31, 2, -113, -78, -7, 29, 31, -72, 1, -104, -78, 38, -69, 31, 65, 21, 1, -105, 0, 30, 4, 1,
-<a name="l02507"></a>02507 0, 31, 1, 57, 0, 38, 1, 37, 0, 31, 1, 56, 0, 115, 4, 1, 0, 31, 1, 53, 0, 28, 8, 1, 0,
-<a name="l02508"></a>02508 31, 1, 52, 0, 28, 2, -85, 0, 31, 1, 50, -78, 28, 86, 31, -72, 1, 15, -78, 38, 44, 31, -70, 1, 14,
-<a name="l02509"></a>02509 0, 30, 4, 1, -74, 31, -7, 28, -28, 31, -23, 28, -72, 2, 1, -74, 31, -24, 28, -69, 31, -41, 32, -72, 4,
-<a name="l02510"></a>02510 1, -78, 31, -43, 28, -72, 2, -85, -74, 31, -44, 28, -119, 31, -55, 47, -72, 8, 1, -78, 31, -68, 38, -72, 1,
-<a name="l02511"></a>02511 1, -78, 31, -70, 32, -72, 2, 1, -74, 31, -71, 28, 56, 31, -83, -54, -72, 4, 1, -78, 31, -127, 38, -72, 1,
-<a name="l02512"></a>02512 -102, -78, 31, 126, 38, -72, 1, -102, -74, 31, 125, 28, 71, 31, 107, 28, -72, 4, 1, -78, 31, 101, 38, -72, 1,
-<a name="l02513"></a>02513 -102, -78, 31, 94, 115, -72, 4, 1, 64, 15, 31, 82, 38, 90, 31, 72, 28, -119, 31, 68, 28, 98, 31, 64, 115,
-<a name="l02514"></a>02514 -72, 8, 1, -74, 31, 63, 28, 94, 31, 60, 38, -72, 1, -102, -78, 31, 53, 28, -72, 4, 1, -74, 31, 48, 28,
-<a name="l02515"></a>02515 -69, 31, 43, 28, -72, 4, 1, -74, 31, 42, 28, 86, 31, 41, 28, -72, 1, 1, -78, 31, 35, 30, -72, 4, 1,
-<a name="l02516"></a>02516 -78, 31, 85, 55, -72, 1, 104, 64, 44, 7, -106, 7, 88, 7, 79, 7, 54, 7, 50, 7, 44, 7, 33, 7, 31,
-<a name="l02517"></a>02517 7, 29, 7, 27, 7, 20, 8, 18, 8, 16, 8, 14, 8, 12, 8, 10, 8, 8, 8, 6, 8, 4, 8, 2, 8,
-<a name="l02518"></a>02518 0, 8, 20, -72, -1, -32, 64, 43, 0, 0, 1, 0, 20, 6, 16, 0, 0, 1, 0, 6, 4, 0, 0, 1, 0,
-<a name="l02519"></a>02519 4, 16, 0, 0, 1, 0, 16, 2, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 2, 1, 8, 2, 0, 74,
-<a name="l02520"></a>02520 0, -80, 19, 3, 75, 2, 75, 83, 66, 1, 75, -80, -64, 99, 0, 75, 98, 32, -80, -10, 83, 35, -72, 1, 10,
-<a name="l02521"></a>02521 81, 90, -80, 5, 35, 66, 1, -80, 18, 75, 0, 75, 84, 66, -80, 56, 43, 75, -72, 7, -1, 82, -80, 55, 43,
-<a name="l02522"></a>02522 75, -80, 7, 80, 91, 88, -79, 1, 1, -114, 89, -80, 56, 43, -80, 2, -120, -72, 1, 0, 84, 88, -72, 1, -1,
-<a name="l02523"></a>02523 -79, 1, 1, -114, -123, 27, -80, 18, 67, 88, -71, 0, 1, 1, 17, -123, -115, 27, -71, 0, 1, 1, 40, -123, -115,
-<a name="l02524"></a>02524 89, 89, 0, 24, 22, 118, 63, 24, 63, 18, 62, 17, 57, 70, 68, 62, 17, 57, 70, 68, 62, 17, 57, 70, 68,
-<a name="l02525"></a>02525 62, 17, 57, 70, 68, 62, 17, 57, 70, 96, 68, 62, 17, 57, 70, 96, 68, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l02526"></a>02526 43, 43, 43, 24, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 24, 43, 29, -80, -106, 75, 83, 88, -80, -86,
-<a name="l02527"></a>02527 29, 89, -80, 50, 75, 83, 88, -80, -1, 29, 89, 75, -80, -109, 83, 32, 92, 88, -71, 1, -14, 1, -16, 69, 68,
-<a name="l02528"></a>02528 -71, 1, -15, 1, -16, 69, 68, 89, 88, -71, 3, 62, 1, -14, 69, 82, 88, -71, 1, -14, 3, 62, 68, 89, 89,
-<a name="l02529"></a>02529 75, -72, 1, 86, 83, 32, 92, 88, -71, 0, 32, 1, -15, 69, 68, -71, 0, 38, 1, -15, 69, 68, 89, 88, -71,
-<a name="l02530"></a>02530 8, 30, 0, 32, 69, 82, 88, -71, 0, 32, 8, 30, 68, 89, 89, 75, -72, 1, -102, 83, 32, 92, 88, -71, 0,
-<a name="l02531"></a>02531 37, 1, -14, 69, 68, -71, 0, 36, 1, -14, 69, 68, 89, 88, -71, 9, 9, 0, 37, 69, 82, 88, -71, 0, 37,
-<a name="l02532"></a>02532 9, 9, 68, 89, 89, 75, -72, 4, 1, 83, 32, 92, 88, -79, 115, 36, 69, 68, -79, 36, 36, 69, 68, 89, 88,
-<a name="l02533"></a>02533 -71, 23, 32, 0, 115, 69, 82, 88, -71, 0, 115, 23, 32, 68, 89, 89, 75, -72, 4, 1, 83, 32, 92, 88, -79,
-<a name="l02534"></a>02534 -54, 37, 69, 68, -79, 37, 37, 69, 68, 89, 88, -71, 22, -128, 0, -54, 69, 82, 88, -71, 0, -54, 22, -128, 68,
-<a name="l02535"></a>02535 89, 89, 75, -80, 62, 83, 32, 92, 88, -79, 28, 28, 69, 68, -79, 30, 28, 69, 68, 89, 88, -71, 1, 26, 0,
-<a name="l02536"></a>02536 28, 69, 82, 88, -71, 0, 28, 1, 26, 68, 89, 89, 75, -80, 86, 83, 32, 92, 88, -79, 28, 28, 69, 68, -79,
-<a name="l02537"></a>02537 47, 28, 69, 68, 89, 88, -71, 1, -119, 0, 28, 69, 82, 88, -71, 0, 28, 1, -119, 68, 89, 89, 75, -72, 3,
-<a name="l02538"></a>02538 1, 83, 32, 92, 88, -79, 28, 28, 69, 68, -79, 28, 28, 69, 68, 89, 88, -71, 13, -32, 0, 28, 69, 82, 88,
-<a name="l02539"></a>02539 -71, 0, 28, 13, -32, 68, 89, 89, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l02540"></a>02540 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 101,
-<a name="l02541"></a>02541 66, 43, 43, 1, -77, 59, 89, 99, 92, 69, 101, 35, 69, 96, 35, 69, 101, 96, 35, 69, 96, -80, -117, 118, 104,
-<a name="l02542"></a>02542 24, -80, -128, 98, 32, 32, -79, 99, 89, 69, 101, 35, 69, 32, -80, 3, 38, 96, 98, 99, 104, 32, -80, 3, 38,
-<a name="l02543"></a>02543 97, 101, -80, 89, 35, 101, 68, -80, 99, 35, 68, 32, -79, 59, 92, 69, 101, 35, 69, 32, -80, 3, 38, 96, 98,
-<a name="l02544"></a>02544 99, 104, 32, -80, 3, 38, 97, 101, -80, 92, 35, 101, 68, -80, 59, 35, 68, -79, 0, 92, 69, 84, 88, -79, 92,
-<a name="l02545"></a>02545 64, 101, 68, -78, 59, 64, 59, 69, 35, 97, 68, 89, -77, 71, 80, 52, 55, 69, 101, 35, 69, 96, 35, 69, 101,
-<a name="l02546"></a>02546 96, 35, 69, 96, -80, -119, 118, 104, 24, -80, -128, 98, 32, 32, -79, 52, 80, 69, 101, 35, 69, 32, -80, 3, 38,
-<a name="l02547"></a>02547 96, 98, 99, 104, 32, -80, 3, 38, 97, 101, -80, 80, 35, 101, 68, -80, 52, 35, 68, 32, -79, 71, 55, 69, 101,
-<a name="l02548"></a>02548 35, 69, 32, -80, 3, 38, 96, 98, 99, 104, 32, -80, 3, 38, 97, 101, -80, 55, 35, 101, 68, -80, 71, 35, 68,
-<a name="l02549"></a>02549 -79, 0, 55, 69, 84, 88, -79, 55, 64, 101, 68, -78, 71, 64, 71, 69, 35, 97, 68, 89, 0, 75, 83, 66, 1,
-<a name="l02550"></a>02550 75, 80, 88, -79, 8, 0, 66, 89, 67, 92, 88, -79, 8, 0, 66, 89, -77, 2, 11, 10, 18, 67, 88, 96, 27,
-<a name="l02551"></a>02551 33, 89, 66, 22, 16, 112, 62, -80, 18, 67, 88, -71, 59, 33, 24, 126, 27, -70, 4, 0, 1, -88, 0, 11, 43,
-<a name="l02552"></a>02552 89, -80, 12, 35, 66, -80, 13, 35, 66, -80, 18, 67, 88, -71, 45, 65, 45, 65, 27, -70, 4, 0, 4, 0, 0,
-<a name="l02553"></a>02553 11, 43, 89, -80, 14, 35, 66, -80, 15, 35, 66, -80, 18, 67, 88, -71, 24, 126, 59, 33, 27, -70, 1, -88, 4,
-<a name="l02554"></a>02554 0, 0, 11, 43, 89, -80, 16, 35, 66, -80, 17, 35, 66, 0, 43, 116, 117, 115, 117, 0, 24, 69, 105, 68, 69,
-<a name="l02555"></a>02555 105, 68, 69, 105, 68, 115, 115, 115, 115, 116, 117, 115, 116, 117, 43, 43, 43, 43, 116, 117, 43, 43, 43, 43, 43,
-<a name="l02556"></a>02556 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-<a name="l02557"></a>02557 43, 43, 43, 69, -80, 64, 97, 68, 115, 116, 0, 0, 75, -80, 42, 83, 75, -80, 63, 81, 90, 88, -79, 7, 7,
-<a name="l02558"></a>02558 69, -80, 64, 96, 68, 89, 0, 75, -80, 58, 83, 75, -80, 63, 81, 90, 88, -79, 11, 11, 69, -72, -1, -64, 96,
-<a name="l02559"></a>02559 68, 89, 0, 75, -80, 46, 83, 75, -80, 58, 81, 90, 88, -79, 3, 3, 69, -80, 64, 96, 68, 89, 0, 75, -80,
-<a name="l02560"></a>02560 46, 83, 75, -80, 60, 81, 90, 88, -79, 9, 9, 69, -72, -1, -64, 96, 68, 89, 43, 43, 43, 43, 43, 43, 43,
-<a name="l02561"></a>02561 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 117, 43, 43, 43, 43, 43, 43, 43, 67, 92, 88, -71, 0, -128,
-<a name="l02562"></a>02562 2, -69, -77, 1, 64, 30, 1, 116, 0, 115, 89, 3, -80, 30, 75, 84, 2, -80, 18, 75, 84, 90, -80, 18, 67,
-<a name="l02563"></a>02563 92, 90, 88, -70, 0, -97, 2, 34, 0, 1, 0, 115, 89, 0, 43, 116, 115, 1, 43, 1, 115, 43, 43, 43, 43,
-<a name="l02564"></a>02564 43, 43, 43, 43, 115, 115, 115, 115, 43, 0, 43, 43, 43, 43, 43, 43, 0, 69, 105, 68, 115, 69, 105, 68, 115,
-<a name="l02565"></a>02565 69, 105, 68, 115, 116, 117, 69, 105, 68, 115, 69, 105, 68, 69, 105, 68, 69, 105, 68, 115, 116, 69, 105, 68, 69,
-<a name="l02566"></a>02566 105, 68, 115, 43, 43, 43, 43, 43, 115, 43, 0, 43, 115, 43, 116, 117, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l02567"></a>02567 43, 43, 43, 43, 43, 115, 116, 117, 43, 0, 5, -70, 0, 25, 5, -70, 0, 26, 5, -89, 0, 25, 4, 38, 0,
-<a name="l02568"></a>02568 24, 0, 0, -1, -25, 0, 0, -1, -24, 0, 0, -1, -25, -2, 105, -1, -24, 5, -70, 0, 25, -2, 105, -1, -24,
-<a name="l02569"></a>02569 2, -22, 0, 0, 0, -72, 0, 0, 0, -72, 0, 0, 0, 0, 0, -88, 0, -83, 1, 105, 0, -83, 0, -65, 0,
-<a name="l02570"></a>02570 -62, 1, -16, 0, 24, 0, -81, 0, -71, 0, -76, 0, -56, 0, 23, 0, 68, 0, -100, 0, 124, 0, -108, 0, -121,
-<a name="l02571"></a>02571 0, 6, 0, 90, 0, -56, 0, -119, 0, 82, 0, 82, 0, 5, 0, 68, 0, -108, 1, 25, -1, -76, 0, 47, 0,
-<a name="l02572"></a>02572 -95, 0, 3, 0, -95, 0, -51, 0, 23, 0, 87, 0, 126, 0, -70, 0, 22, 1, 24, -1, -23, 0, 127, 0, -123,
-<a name="l02573"></a>02573 3, -45, 0, -121, 0, -123, 0, 13, 0, 34, 0, 65, 0, 80, 0, 111, 0, -115, 1, 76, -1, 117, 0, 92, 0,
-<a name="l02574"></a>02574 -33, 4, -125, 0, 55, 0, 76, 0, 110, 0, 112, 1, -128, -1, 88, -1, -114, -1, -110, -1, -92, 0, -91, 0, -71,
-<a name="l02575"></a>02575 3, -56, -1, -3, 0, 11, 0, 26, 0, 99, 0, 99, 0, -51, -1, -18, 5, -40, -1, -36, 0, 45, 0, 92, 0,
-<a name="l02576"></a>02576 -107, 0, -103, 0, -33, 1, -110, 9, -75, 0, 64, 0, 87, 0, -128, 0, -71, 3, -99, 0, 114, 0, -102, 3, 93,
-<a name="l02577"></a>02577 4, 1, -1, 103, -1, -6, 0, 3, 0, 33, 0, 119, 0, -51, 0, 4, 0, 77, 0, -51, 1, -64, 2, 43, 0,
-<a name="l02578"></a>02578 76, 0, 101, 0, -25, 1, 24, 1, 124, 3, 67, 5, -40, -1, -93, -1, -80, -1, -60, 0, 3, 0, 28, 0, 93,
-<a name="l02579"></a>02579 0, 104, 0, -102, 0, -70, 1, 53, 1, 71, 2, 33, 5, 92, -1, 77, -1, -51, 0, 22, 0, 45, 0, 120, 0,
-<a name="l02580"></a>02580 -128, 0, -103, 0, -78, 0, -74, 0, -74, 0, -72, 0, -67, 0, -38, 1, 12, 5, -16, -1, -92, -1, -16, 0, 25,
-<a name="l02581"></a>02581 0, 44, 0, 73, 0, 127, 0, -76, 0, -50, 1, -64, 3, -2, -3, -127, -2, 63, 0, 0, 0, 5, 0, 24, 0,
-<a name="l02582"></a>02582 41, 0, 57, 0, 73, 0, 111, 0, -66, 0, -57, 0, -48, 1, 35, 1, -63, 2, 111, 5, 12, 5, 50, 5, 64,
-<a name="l02583"></a>02583 5, 122, -1, -44, 0, 20, 0, 49, 0, 85, 0, 87, 0, -89, 0, -76, 0, -26, 1, -9, 2, 126, 2, 126, 2,
-<a name="l02584"></a>02584 127, 3, -58, 4, 70, -1, 66, 0, 14, 0, -123, 0, -111, 0, -65, 0, -62, 0, -59, 0, -31, 1, 26, 1, 47,
-<a name="l02585"></a>02585 1, 79, 1, 86, 2, 41, 2, 111, 2, -98, 3, 114, 0, 8, 0, 44, 0, 49, 0, 49, 0, 100, 0, 105, 0,
-<a name="l02586"></a>02586 -119, 0, -104, 0, -57, 0, -34, 1, 43, 1, -74, 2, 12, 2, -49, 3, -93, 4, -85, 4, -5, 6, 29, -2, -32,
-<a name="l02587"></a>02587 -1, 14, 0, 6, 0, 38, 0, -101, 0, -99, 0, -63, 1, 13, 1, 24, 1, 32, 1, 115, 1, -126, 1, -42, 1,
-<a name="l02588"></a>02588 -29, 2, 67, 2, 95, 2, -101, 2, -30, 3, -108, 4, -87, 4, -46, 7, 97, 0, 28, 0, 94, 0, 109, 0, -115,
-<a name="l02589"></a>02589 0, -85, 0, -9, 1, 18, 1, 56, 1, 81, 1, 91, 1, 104, 1, 124, 1, -121, 1, -111, 1, -103, 1, -51, 1,
-<a name="l02590"></a>02590 -48, 1, -24, 2, 65, 2, 84, 2, 107, 2, -17, 3, 104, 3, 113, 3, -67, 4, 66, 4, 66, 4, 83, 4, 115,
-<a name="l02591"></a>02591 4, -125, 5, -122, 5, -117, 6, -24, -2, 88, -2, -60, -2, -47, -2, -9, -1, 50, -1, -122, 0, 81, 0, 124, 0,
-<a name="l02592"></a>02592 -127, 0, -111, 0, -107, 0, -98, 0, -76, 0, -71, 0, -49, 0, -39, 0, -39, 0, -33, 0, -30, 1, 5, 1, 11,
-<a name="l02593"></a>02593 1, 14, 1, 14, 1, 32, 1, 33, 1, 85, 1, 123, 1, 123, 1, 126, 1, -115, 1, -94, 1, -88, 1, -87, 1,
-<a name="l02594"></a>02594 -76, 1, -48, 1, -48, 1, -30, 1, -23, 1, -14, 1, -11, 1, -5, 2, 0, 2, 0, 2, 6, 2, 27, 2, 33,
-<a name="l02595"></a>02595 2, 34, 2, 34, 2, 35, 2, 114, 2, 119, 2, -108, 2, -100, 2, -49, 2, -49, 2, -48, 2, -20, 2, -7, 3,
-<a name="l02596"></a>02596 23, 3, 34, 3, 43, 3, 53, 3, 60, 3, 89, 3, 111, 3, 113, 3, -121, 3, -112, 3, -112, 3, -75, 3, -31,
-<a name="l02597"></a>02597 4, 26, 4, -49, 4, -1, 5, 50, 5, 50, 5, -106, 5, -97, 5, -88, 5, -85, 5, -62, 5, -16, 6, 12, 7,
-<a name="l02598"></a>02598 -126, 8, 0, 8, -52, -4, -93, -3, 42, -3, -34, -2, 0, -2, -120, -2, -106, -2, -78, -2, -76, -1, -31, 0, 21,
-<a name="l02599"></a>02599 0, 25, 0, 26, 0, 28, 0, 31, 0, 60, 0, 81, 0, 97, 0, 97, 0, 106, 0, 120, 0, -106, 0, -91, 0,
-<a name="l02600"></a>02600 -81, 0, -45, 1, 12, 1, 24, 1, 26, 1, 42, 1, 62, 1, 76, 1, 81, 1, 95, 1, 106, 1, 113, 1, 120,
-<a name="l02601"></a>02601 1, -126, 1, -124, 1, -102, 1, -91, 1, -88, 1, -87, 1, -82, 1, -68, 1, -51, 1, -41, 1, -17, 2, 0, 2,
-<a name="l02602"></a>02602 13, 2, 28, 2, 33, 2, 34, 2, 46, 2, 53, 2, 66, 2, 79, 2, 79, 2, 94, 2, 101, 2, 113, 2, -112,
-<a name="l02603"></a>02603 2, -110, 2, -76, 2, -42, 2, -6, 3, 7, 3, 11, 3, 15, 3, 21, 3, 42, 3, 71, 3, 93, 3, 101, 3,
-<a name="l02604"></a>02604 116, 3, 121, 3, -106, 3, -80, 3, -52, 3, -35, 3, -30, 3, -10, 3, -4, 3, -4, 3, -1, 4, 10, 4, 31,
-<a name="l02605"></a>02605 4, 34, 4, 38, 4, 43, 4, 71, 4, 95, 4, 117, 4, -98, 4, -25, 4, -25, 5, 92, 5, -53, 5, -27, 6,
-<a name="l02606"></a>02606 10, 6, 109, 6, -122, 6, -72, 6, -15, 7, 54, 7, 62, 7, 80, 7, 81, 7, 93, 7, -113, 7, -74, 7, -44,
-<a name="l02607"></a>02607 8, 96, 0, -74, 0, -61, 0, -75, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -32, 3,
-<a name="l02608"></a>02608 -127, 3, 69, 3, -75, 0, -114, 2, 51, 4, 25, 2, -50, 2, -50, 0, 45, 0, 95, 0, 100, 3, 77, 2, 63,
-<a name="l02609"></a>02609 0, 0, 2, -88, 1, -120, 2, 125, 1, -76, 2, 36, 5, 120, 6, 59, 2, 59, 1, 78, 0, -16, 4, 38, 2,
-<a name="l02610"></a>02610 -108, 2, -58, 2, -97, 2, -10, 2, 59, 3, 77, 1, 75, 1, 83, 0, 106, 2, 49, 0, 0, 0, 0, 0, 0,
-<a name="l02611"></a>02611 6, 20, 4, -86, 0, 0, 0, 60, 4, -61, 0, -19, 4, -68, 2, 101, 2, -50, 3, -75, 0, 120, 6, 12, 1,
-<a name="l02612"></a>02612 126, 2, -17, 6, 12, 0, -78, 1, 0, 2, 57, 0, 0, 1, -59, 3, 48, 4, 43, 3, -53, 0, -38, 3, -33,
-<a name="l02613"></a>02613 1, 7, 4, -95, 0, -37, 4, 10, 1, 23, 1, -19, 2, -89, 3, 80, 1, 11, 1, -67, 4, 62, 5, 88, 0,
-<a name="l02614"></a>02614 33, 3, -100, 0, -82, 3, 113, 1, 125, 0, -75, 2, 69, 0, 0, 10, -5, 8, -116, 1, 43, 1, 78, 1, -86,
-<a name="l02615"></a>02615 0, -121, 0, 84, 1, 50, 1, -8, 3, -1, 0, 3, 2, 78, 0, -76, 0, 55, 3, -29, 0, -125, 0, 107, 2,
-<a name="l02616"></a>02616 -40, 0, -19, 0, 119, 0, -120, 0, -105, 1, 100, 4, 103, 0, -114, 0, 51, 1, 124, 0, -25, 0, -90, 2, -98,
-<a name="l02617"></a>02617 3, 41, 5, 110, 6, 42, 6, 21, 1, -55, 2, 105, 4, -118, 2, 19, 1, -76, 0, 2, 4, -87, 0, 0, 2,
-<a name="l02618"></a>02618 57, 1, 36, 1, 3, 5, 20, 0, -124, 1, 93, 3, -102, 6, -17, 2, -39, 0, 117, 0, -49, 4, 10, 0, -34,
-<a name="l02619"></a>02619 3, -84, 4, -68, 2, -49, 2, -82, 3, 77, 4, -16, 5, 82, 1, 104, 0, 109, 0, 125, 0, -122, 0, 113, -1,
-<a name="l02620"></a>02620 -127, 0, 121, 5, 88, 4, -46, 1, 103, 0, 3, 1, 86, 0, 37, 4, -32, 0, -108, 0, 124, 3, 50, 4, 33,
-<a name="l02621"></a>02621 0, -108, 0, 127, 0, 114, 0, 92, 0, 47, 0, -74, 0, 24, 0, -70, 0, -72, 0, 65, 3, 77, 0, 114, 0,
-<a name="l02622"></a>02622 24, 0, 31, 0, 76, 1, 106, 1, 85, 0, -103, 0, -102, 0, -102, 0, -104, 0, -78, 0, 4, 0, 120, 0, 105,
-<a name="l02623"></a>02623 0, 20, 0, 87, 0, 110, 0, -50, 0, -76, 6, 84, 2, -72, 0, 103, 5, 14, 1, 101, 0, -25, 0, 0, 4,
-<a name="l02624"></a>02624 -53, -2, 82, 0, 90, -1, -90, 0, -103, -1, 103, 0, 110, -1, -110, 0, 45, -1, -44, 0, -121, -1, 124, 0, -72,
-<a name="l02625"></a>02625 0, -88, 0, -27, 0, -113, 0, -88, 1, -123, -2, 123, 0, 112, 0, 30, 0, -39, 0, -34, 1, 76, 5, 70, 2,
-<a name="l02626"></a>02626 -49, 5, 70, -1, 45, 2, -118, 2, -39, 2, 83, 2, -106, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l02627"></a>02627 0, 0, 0, 0, 1, 37, 1, 24, 0, -22, 0, -22, 0, -82, 0, 0, 0, 62, 5, -69, 0, -118, 4, -41, 0,
-<a name="l02628"></a>02628 83, 0, 63, -1, -116, -1, -43, 0, 21, 0, 40, 0, 34, 0, -103, 0, 98, 0, 74, 0, -28, 0, 109, 0, -18,
-<a name="l02629"></a>02629 0, -27, 0, 72, 3, -64, 0, 51, -2, 78, 2, -79, -1, 70, 3, 112, 0, 121, 5, -33, 0, 81, -1, -89, -1,
-<a name="l02630"></a>02630 31, 1, 10, 0, 104, -1, 108, 0, 79, 0, -68, 0, -91, 7, 5, 0, 97, 7, 43, 0, 0, 0, 0, 0, 0,
-<a name="l02631"></a>02631 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, -42, 0, 0, 1, 126, 0, 0, 3,
-<a name="l02632"></a>02632 32, 0, 0, 5, -90, 0, 0, 7, 78, 0, 0, 9, 56, 0, 0, 9, 126, 0, 0, 9, -2, 0, 0, 10, -92,
-<a name="l02633"></a>02633 0, 0, 11, -124, 0, 0, 11, -20, 0, 0, 12, 100, 0, 0, 12, -86, 0, 0, 12, -26, 0, 0, 13, 86, 0,
-<a name="l02634"></a>02634 0, 15, 18, 0, 0, 15, -18, 0, 0, 18, 24, 0, 0, 19, -14, 0, 0, 21, 82, 0, 0, 23, 12, 0, 0,
-<a name="l02635"></a>02635 24, -30, 0, 0, 25, -114, 0, 0, 28, 34, 0, 0, 30, 86, 0, 0, 30, -78, 0, 0, 31, 112, 0, 0, 31,
-<a name="l02636"></a>02636 -14, 0, 0, 32, 98, 0, 0, 32, -24, 0, 0, 33, -38, 0, 0, 35, -38, 0, 0, 37, -124, 0, 0, 39, 28,
-<a name="l02637"></a>02637 0, 0, 40, 86, 0, 0, 41, -98, 0, 0, 42, 98, 0, 0, 43, 24, 0, 0, 44, -88, 0, 0, 45, -82, 0,
-<a name="l02638"></a>02638 0, 46, -110, 0, 0, 47, 122, 0, 0, 49, -80, 0, 0, 50, 58, 0, 0, 53, 100, 0, 0, 55, 14, 0, 0,
-<a name="l02639"></a>02639 56, 66, 0, 0, 57, 72, 0, 0, 59, 60, 0, 0, 61, -88, 0, 0, 64, 82, 0, 0, 65, 0, 0, 0, 66,
-<a name="l02640"></a>02640 36, 0, 0, 67, -104, 0, 0, 69, -42, 0, 0, 72, -30, 0, 0, 74, -120, 0, 0, 75, -56, 0, 0, 76, 50,
-<a name="l02641"></a>02641 0, 0, 76, -100, 0, 0, 77, 0, 0, 0, 77, -120, 0, 0, 77, -68, 0, 0, 78, 56, 0, 0, 81, 10, 0,
-<a name="l02642"></a>02642 0, 82, -24, 0, 0, 84, -100, 0, 0, 86, 80, 0, 0, 88, 14, 0, 0, 89, 98, 0, 0, 91, 82, 0, 0,
-<a name="l02643"></a>02643 92, -10, 0, 0, 93, -22, 0, 0, 95, 2, 0, 0, 97, -102, 0, 0, 98, -106, 0, 0, 100, -58, 0, 0, 102,
-<a name="l02644"></a>02644 -116, 0, 0, 104, 78, 0, 0, 106, 18, 0, 0, 107, -88, 0, 0, 108, -82, 0, 0, 112, 86, 0, 0, 113, 122,
-<a name="l02645"></a>02645 0, 0, 115, 24, 0, 0, 117, 54, 0, 0, 121, -96, 0, 0, 123, -60, 0, 0, 126, 28, 0, 0, -128, 4, 0,
-<a name="l02646"></a>02646 0, -127, 2, 0, 0, -127, 78, 0, 0, -126, 80, 0, 0, -126, -16, 0, 0, -125, 60, 0, 0, -125, 112, 0, 0,
-<a name="l02647"></a>02647 -125, -84, 0, 0, -125, -18, 0, 0, -124, 84, 0, 0, -124, -102, 0, 0, -124, -50, 0, 0, -123, 4, 0, 0, -123,
-<a name="l02648"></a>02648 58, 0, 0, -123, -118, 0, 0, -123, -52, 0, 0, -122, 30, 0, 0, -122, 86, 0, 0, -122, -88, 0, 0, -122, -34,
-<a name="l02649"></a>02649 0, 0, -121, 30, 0, 0, -121, 96, 0, 0, -121, -98, 0, 0, -121, -24, 0, 0, -120, 40, 0, 0, -120, 86, 0,
-<a name="l02650"></a>02650 0, -120, -114, 0, 0, -120, -34, 0, 0, -119, 20, 0, 0, -119, 84, 0, 0, -119, -114, 0, 0, -119, -46, 0, 0,
-<a name="l02651"></a>02651 -118, 28, 0, 0, -118, 88, 0, 0, -118, -120, 0, 0, -118, -52, 0, 0, -117, 4, 0, 0, -117, -108, 0, 0, -116,
-<a name="l02652"></a>02652 26, 0, 0, -114, 40, 0, 0, -113, -68, 0, 0, -111, 108, 0, 0, -111, -72, 0, 0, -110, 76, 0, 0, -108, 112,
-<a name="l02653"></a>02653 0, 0, -106, -60, 0, 0, -104, -76, 0, 0, -103, -96, 0, 0, -102, 34, 0, 0, -102, -116, 0, 0, -101, -86, 0,
-<a name="l02654"></a>02654 0, -99, 6, 0, 0, -97, 78, 0, 0, -96, -80, 0, 0, -95, 62, 0, 0, -95, -24, 0, 0, -94, -84, 0, 0,
-<a name="l02655"></a>02655 -93, -12, 0, 0, -91, -98, 0, 0, -90, -116, 0, 0, -89, 82, 0, 0, -89, -74, 0, 0, -88, 36, 0, 0, -87,
-<a name="l02656"></a>02656 78, 0, 0, -86, 114, 0, 0, -85, 2, 0, 0, -84, -28, 0, 0, -81, 62, 0, 0, -78, -112, 0, 0, -77, -122,
-<a name="l02657"></a>02657 0, 0, -76, 44, 0, 0, -76, 124, 0, 0, -75, 50, 0, 0, -74, 82, 0, 0, -73, -16, 0, 0, -72, -118, 0,
-<a name="l02658"></a>02658 0, -71, 78, 0, 0, -70, 14, 0, 0, -70, 118, 0, 0, -70, -78, 0, 0, -69, 10, 0, 0, -69, 88, 0, 0,
-<a name="l02659"></a>02659 -67, 112, 0, 0, -65, -74, 0, 0, -65, -18, 0, 0, -64, 32, 0, 0, -63, 74, 0, 0, -62, 118, 0, 0, -61,
-<a name="l02660"></a>02660 36, 0, 0, -61, -56, 0, 0, -60, 106, 0, 0, -59, 60, 0, 0, -59, -112, 0, 0, -59, -58, 0, 0, -58, 30,
-<a name="l02661"></a>02661 0, 0, -57, 112, 0, 0, -57, -30, 0, 0, -56, 60, 0, 0, -55, -76, 0, 0, -53, 32, 0, 0, -52, 0, 0,
-<a name="l02662"></a>02662 0, -52, 50, 0, 0, -52, -50, 0, 0, -51, -14, 0, 0, -48, 104, 0, 0, -48, -94, 0, 0, -48, -26, 0, 0,
-<a name="l02663"></a>02663 -47, 34, 0, 0, -47, -124, 0, 0, -47, -58, 0, 0, -46, 12, 0, 0, -46, 88, 0, 0, -46, -118, 0, 0, -46,
-<a name="l02664"></a>02664 -34, 0, 0, -45, 28, 0, 0, -45, 76, 0, 0, -45, -118, 0, 0, -45, -48, 0, 0, -44, 18, 0, 0, -44, 80,
-<a name="l02665"></a>02665 0, 0, -44, -46, 0, 0, -43, 64, 0, 0, -42, 38, 0, 0, -42, 98, 0, 0, -42, -30, 0, 0, -41, 22, 0,
-<a name="l02666"></a>02666 0, -41, -72, 0, 0, -40, 64, 0, 0, -40, -84, 0, 0, -39, 56, 0, 0, -39, -92, 0, 0, -38, -112, 0, 0,
-<a name="l02667"></a>02667 -37, -126, 0, 0, -37, -74, 0, 0, -37, -22, 0, 0, -36, 26, 0, 0, -36, 94, 0, 0, -36, -42, 0, 0, -34,
-<a name="l02668"></a>02668 80, 0, 0, -32, 106, 0, 0, -32, -100, 0, 0, -32, -42, 0, 0, -31, -48, 0, 0, -29, 94, 0, 0, -29, -108,
-<a name="l02669"></a>02669 0, 0, -28, -8, 0, 0, -27, 116, 0, 0, -26, 84, 0, 0, -25, 74, 0, 0, -24, -38, 0, 0, -22, 68, 0,
-<a name="l02670"></a>02670 0, -20, 50, 0, 0, -19, 46, 0, 0, -19, 116, 0, 0, -19, -88, 0, 0, -19, -22, 0, 0, -18, 36, 0, 0,
-<a name="l02671"></a>02671 -18, 120, 0, 0, -18, -64, 0, 0, -17, 10, 0, 0, -17, 58, 0, 0, -17, 106, 0, 0, -15, 82, 0, 0, -15,
-<a name="l02672"></a>02672 -112, 0, 0, -15, -54, 0, 0, -15, -6, 0, 0, -14, 46, 0, 0, -14, 94, 0, 0, -14, -118, 0, 0, -14, -46,
-<a name="l02673"></a>02673 0, 0, -12, -120, 0, 0, -10, 2, 0, 0, -10, 46, 0, 0, -10, 112, 0, 0, -10, -76, 0, 0, -10, -28, 0,
-<a name="l02674"></a>02674 0, -9, 20, 0, 0, -9, 106, 0, 0, -8, 72, 0, 0, -7, 90, 0, 0, -7, -98, 0, 0, -7, -44, 0, 0,
-<a name="l02675"></a>02675 -6, 46, 0, 0, -6, 108, 0, 0, -6, -96, 0, 0, -6, -48, 0, 0, -5, 12, 0, 0, -5, 76, 0, 0, -5,
-<a name="l02676"></a>02676 -118, 0, 0, -5, -58, 0, 0, -4, 8, 0, 0, -4, 62, 0, 0, -4, 122, 0, 0, -4, -70, 0, 0, -3, -56,
-<a name="l02677"></a>02677 0, 0, -1, 52, 0, 0, -1, -124, 0, 1, 0, -32, 0, 1, 1, 54, 0, 1, 1, 106, 0, 1, 1, -72, 0,
-<a name="l02678"></a>02678 1, 2, 4, 0, 1, 2, 70, 0, 1, 2, 126, 0, 1, 2, -76, 0, 1, 2, -4, 0, 1, 3, -98, 0, 1,
-<a name="l02679"></a>02679 5, 58, 0, 1, 7, 2, 0, 1, 8, -124, 0, 1, 10, 118, 0, 1, 11, -56, 0, 1, 13, 76, 0, 1, 14,
-<a name="l02680"></a>02680 46, 0, 1, 15, -56, 0, 1, 16, 50, 0, 1, 16, 90, 0, 1, 16, -8, 0, 1, 19, 122, 0, 1, 19, -70,
-<a name="l02681"></a>02681 0, 1, 19, -6, 0, 1, 20, 58, 0, 1, 20, 120, 0, 1, 20, -42, 0, 1, 21, 52, 0, 1, 21, -94, 0,
-<a name="l02682"></a>02682 1, 21, -62, 0, 1, 22, -84, 0, 1, 23, 76, 0, 1, 23, -126, 0, 1, 23, -48, 0, 1, 24, 26, 0, 1,
-<a name="l02683"></a>02683 24, 100, 0, 1, 24, -128, 0, 1, 24, -100, 0, 1, 24, -68, 0, 1, 24, -36, 0, 1, 24, -4, 0, 1, 25,
-<a name="l02684"></a>02684 28, 0, 1, 25, 66, 0, 1, 25, 104, 0, 1, 25, -114, 0, 1, 25, -76, 0, 1, 25, -28, 0, 1, 26, 12,
-<a name="l02685"></a>02685 0, 1, 26, 52, 0, 1, 26, 96, 0, 1, 26, -116, 0, 1, 26, -64, 0, 1, 26, -22, 0, 1, 27, 22, 0,
-<a name="l02686"></a>02686 1, 27, 76, 0, 1, 27, 118, 0, 1, 27, -94, 0, 1, 27, -40, 0, 1, 28, 2, 0, 1, 28, 44, 0, 1,
-<a name="l02687"></a>02687 28, 96, 0, 1, 28, -112, 0, 1, 28, -60, 0, 1, 29, 8, 0, 1, 29, 56, 0, 1, 29, 108, 0, 1, 29,
-<a name="l02688"></a>02688 -82, 0, 1, 29, -30, 0, 1, 30, 20, 0, 1, 30, 86, 0, 1, 30, -118, 0, 1, 30, -70, 0, 1, 30, -4,
-<a name="l02689"></a>02689 0, 1, 31, 64, 0, 1, 31, -122, 0, 1, 31, -30, 0, 1, 31, -2, 0, 1, 32, 26, 0, 1, 32, 54, 0,
-<a name="l02690"></a>02690 1, 32, 82, 0, 1, 32, 110, 0, 1, 33, -36, 0, 1, 36, -84, 0, 1, 39, 28, 0, 1, 39, 56, 0, 1,
-<a name="l02691"></a>02691 39, 82, 0, 1, 39, 110, 0, 1, 39, -118, 0, 1, 39, -90, 0, 1, 39, -62, 0, 1, 40, 30, 0, 1, 40,
-<a name="l02692"></a>02692 88, 0, 1, 40, -62, 0, 1, 41, -116, 0, 1, 42, 44, 0, 1, 43, 2, 0, 1, 43, -126, 0, 1, 44, 10,
-<a name="l02693"></a>02693 0, 1, 44, 122, 0, 1, 45, 16, 0, 1, 45, 110, 0, 1, 45, -76, 0, 1, 46, 18, 0, 1, 46, 116, 0,
-<a name="l02694"></a>02694 1, 47, 44, 0, 1, 47, -22, 0, 1, 48, 22, 0, 1, 48, 114, 0, 1, 48, -74, 0, 1, 50, 34, 0, 1,
-<a name="l02695"></a>02695 51, 22, 0, 1, 51, 64, 0, 1, 51, 92, 0, 1, 51, -120, 0, 1, 51, -64, 0, 1, 52, 12, 0, 1, 52,
-<a name="l02696"></a>02696 76, 0, 1, 52, -128, 0, 1, 52, -80, 0, 1, 52, -32, 0, 1, 53, 16, 0, 1, 53, 84, 0, 1, 53, -124,
-<a name="l02697"></a>02697 0, 1, 53, -76, 0, 1, 53, -12, 0, 1, 54, 36, 0, 1, 54, 84, 0, 1, 54, -124, 0, 1, 54, -60, 0,
-<a name="l02698"></a>02698 1, 54, -12, 0, 1, 55, 36, 0, 1, 55, 84, 0, 1, 55, -126, 0, 1, 57, -122, 0, 1, 57, -74, 0, 1,
-<a name="l02699"></a>02699 57, -26, 0, 1, 59, 54, 0, 1, 60, -20, 0, 1, 61, 28, 0, 1, 61, 74, 0, 1, 61, 122, 0, 1, 61,
-<a name="l02700"></a>02700 -88, 0, 1, 61, -40, 0, 1, 62, 6, 0, 1, 63, 52, 0, 1, 64, 98, 0, 1, 64, -110, 0, 1, 66, 2,
-<a name="l02701"></a>02701 0, 1, 66, 58, 0, 1, 66, 106, 0, 1, 67, -4, 0, 1, 68, 42, 0, 1, 68, 88, 0, 1, 68, -122, 0,
-<a name="l02702"></a>02702 1, 68, -82, 0, 1, 70, 12, 0, 1, 71, -92, 0, 1, 71, -36, 0, 1, 72, 28, 0, 1, 72, 88, 0, 1,
-<a name="l02703"></a>02703 72, -120, 0, 1, 72, -74, 0, 1, 72, -46, 0, 1, 73, 2, 0, 1, 73, 50, 0, 1, 74, 34, 0, 1, 75,
-<a name="l02704"></a>02704 -118, 0, 1, 75, -70, 0, 1, 75, -12, 0, 1, 76, 52, 0, 1, 76, 100, 0, 1, 76, -108, 0, 1, 76, -42,
-<a name="l02705"></a>02705 0, 1, 78, 118, 0, 1, 80, 86, 0, 1, 80, -106, 0, 1, 80, -42, 0, 1, 81, 6, 0, 1, 81, 70, 0,
-<a name="l02706"></a>02706 1, 82, 48, 0, 1, 82, -80, 0, 1, 83, -108, 0, 1, 83, -60, 0, 1, 83, -12, 0, 1, 84, 36, 0, 1,
-<a name="l02707"></a>02707 84, 84, 0, 1, 84, -112, 0, 1, 84, -62, 0, 1, 84, -12, 0, 1, 85, 36, 0, 1, 85, 84, 0, 1, 85,
-<a name="l02708"></a>02708 -102, 0, 1, 85, -52, 0, 1, 85, -4, 0, 1, 86, 50, 0, 1, 86, -92, 0, 1, 86, -40, 0, 1, 88, -90,
-<a name="l02709"></a>02709 0, 1, 89, -88, 0, 1, 91, 56, 0, 1, 93, 104, 0, 1, 95, -72, 0, 1, 97, 74, 0, 1, 97, -82, 0,
-<a name="l02710"></a>02710 1, 98, 56, 0, 1, 98, 72, 0, 1, 98, -42, 0, 1, 100, -44, 0, 1, 102, 0, 0, 1, 103, 108, 0, 1,
-<a name="l02711"></a>02711 104, 92, 0, 1, 105, -32, 0, 1, 107, -6, 0, 1, 110, 38, 0, 1, 111, 24, 0, 1, 111, 40, 0, 1, 111,
-<a name="l02712"></a>02712 56, 0, 1, 112, 80, 0, 1, 112, 96, 0, 1, 112, 112, 0, 1, 112, -128, 0, 1, 112, -112, 0, 1, 112, -96,
-<a name="l02713"></a>02713 0, 1, 113, -66, 0, 1, 113, -50, 0, 1, 113, -34, 0, 1, 114, 82, 0, 1, 114, 98, 0, 1, 115, 50, 0,
-<a name="l02714"></a>02714 1, 115, 66, 0, 1, 116, 84, 0, 1, 116, 100, 0, 1, 116, 116, 0, 1, 116, -124, 0, 1, 117, -30, 0, 1,
-<a name="l02715"></a>02715 119, -64, 0, 1, 120, 2, 0, 1, 120, 56, 0, 1, 120, 110, 0, 1, 120, -98, 0, 1, 120, -50, 0, 1, 121,
-<a name="l02716"></a>02716 34, 0, 1, 121, 74, 0, 1, 122, -44, 0, 1, 124, 28, 0, 1, 125, 112, 0, 1, 126, -40, 0, 1, -128, 92,
-<a name="l02717"></a>02717 0, 1, -128, -64, 0, 1, -126, 82, 0, 1, -125, 110, 0, 1, -125, 126, 0, 1, -125, -114, 0, 1, -123, 20, 0,
-<a name="l02718"></a>02718 1, -123, 36, 0, 1, -122, -118, 0, 1, -121, -28, 0, 1, -119, 24, 0, 1, -118, 118, 0, 1, -117, -28, 0, 1,
-<a name="l02719"></a>02719 -115, -86, 0, 1, -115, -22, 0, 1, -114, 34, 0, 1, -114, 88, 0, 1, -114, 126, 0, 1, -114, -82, 0, 1, -114,
-<a name="l02720"></a>02720 -44, 0, 1, -112, 74, 0, 1, -112, 122, 0, 1, -111, -80, 0, 1, -111, -64, 0, 1, -111, -48, 0, 1, -110, 18,
-<a name="l02721"></a>02721 0, 1, -110, 34, 0, 1, -109, -74, 0, 1, -107, 98, 0, 1, -106, -20, 0, 1, -105, 20, 0, 1, -105, 68, 0,
-<a name="l02722"></a>02722 1, -104, -96, 0, 1, -104, -80, 0, 1, -103, -24, 0, 1, -103, -8, 0, 1, -102, -110, 0, 1, -101, -14, 0, 1,
-<a name="l02723"></a>02723 -100, 2, 0, 1, -98, 104, 0, 1, -97, -14, 0, 1, -95, 90, 0, 1, -95, -118, 0, 1, -93, 0, 0, 1, -92,
-<a name="l02724"></a>02724 50, 0, 1, -92, 66, 0, 1, -92, 82, 0, 1, -92, 98, 0, 1, -91, 60, 0, 1, -91, 76, 0, 1, -91, 92,
-<a name="l02725"></a>02725 0, 1, -91, 108, 0, 1, -90, 100, 0, 1, -89, -34, 0, 1, -89, -18, 0, 1, -87, 22, 0, 1, -86, 74, 0,
-<a name="l02726"></a>02726 1, -85, -100, 0, 1, -83, 48, 0, 1, -82, 78, 0, 1, -81, -38, 0, 1, -80, -20, 0, 1, -79, 34, 0, 1,
-<a name="l02727"></a>02727 -77, 88, 0, 1, -77, -8, 0, 1, -76, 8, 0, 1, -75, -98, 0, 1, -73, 64, 0, 1, -73, -60, 0, 1, -71,
-<a name="l02728"></a>02728 70, 0, 1, -71, 86, 0, 1, -69, -66, 0, 1, -67, 62, 0, 1, -66, -66, 0, 1, -66, -18, 0, 1, -64, -114,
-<a name="l02729"></a>02729 0, 1, -62, 20, 0, 1, -61, -40, 0, 1, -59, 4, 0, 1, -59, 20, 0, 1, -58, 68, 0, 1, -58, 84, 0,
-<a name="l02730"></a>02730 1, -58, 100, 0, 1, -57, 36, 0, 1, -57, 52, 0, 1, -55, 26, 0, 1, -55, 42, 0, 1, -54, 96, 0, 1,
-<a name="l02731"></a>02731 -53, 110, 0, 1, -51, 26, 0, 1, -50, -48, 0, 1, -48, 18, 0, 1, -47, -126, 0, 1, -46, -54, 0, 1, -45,
-<a name="l02732"></a>02732 28, 0, 1, -44, -2, 0, 1, -42, 122, 0, 1, -42, -72, 0, 1, -40, 94, 0, 1, -40, -126, 0, 1, -39, -62,
-<a name="l02733"></a>02733 0, 1, -39, -46, 0, 1, -39, -30, 0, 1, -38, 26, 0, 1, -38, 42, 0, 1, -37, -74, 0, 1, -35, 36, 0,
-<a name="l02734"></a>02734 1, -34, -104, 0, 1, -34, -68, 0, 1, -34, -20, 0, 1, -32, 90, 0, 1, -31, 12, 0, 1, -31, -54, 0, 1,
-<a name="l02735"></a>02735 -31, -8, 0, 1, -29, -82, 0, 1, -28, -90, 0, 1, -27, 52, 0, 1, -26, 96, 0, 1, -25, 20, 0, 1, -25,
-<a name="l02736"></a>02736 -18, 0, 1, -24, 56, 0, 1, -24, -74, 0, 1, -23, 124, 0, 1, -23, -92, 0, 1, -23, -18, 0, 1, -22, 68,
-<a name="l02737"></a>02737 0, 1, -21, 48, 0, 1, -21, 122, 0, 1, -21, -82, 0, 1, -21, -42, 0, 1, -21, -2, 0, 1, -20, 50, 0,
-<a name="l02738"></a>02738 1, -20, 118, 0, 1, -20, -70, 0, 1, -20, -8, 0, 1, -18, 54, 0, 1, -18, -18, 0, 1, -16, 14, 0, 1,
-<a name="l02739"></a>02739 -16, -124, 0, 1, -15, 82, 0, 1, -15, -92, 0, 1, -14, 54, 0, 1, -14, -26, 0, 1, -13, -38, 0, 1, -12,
-<a name="l02740"></a>02740 46, 0, 1, -12, -60, 0, 1, -11, -126, 0, 1, -10, 108, 0, 1, -9, 30, 0, 1, -8, 62, 0, 1, -8, -112,
-<a name="l02741"></a>02741 0, 1, -7, 58, 0, 1, -6, 112, 0, 1, -5, 72, 0, 1, -4, 46, 0, 1, -3, 52, 0, 1, -2, 26, 0,
-<a name="l02742"></a>02742 1, -2, -4, 0, 1, -1, -16, 0, 2, 0, -114, 0, 2, 1, -108, 0, 2, 2, -114, 0, 2, 3, 6, 0, 2,
-<a name="l02743"></a>02743 3, 126, 0, 2, 3, -12, 0, 2, 4, 42, 0, 2, 4, -122, 0, 2, 5, 78, 0, 2, 5, -38, 0, 2, 6,
-<a name="l02744"></a>02744 18, 0, 2, 6, 88, 0, 2, 6, -120, 0, 2, 6, -14, 0, 2, 7, -78, 0, 2, 7, -26, 0, 2, 8, 22,
-<a name="l02745"></a>02745 0, 2, 8, 74, 0, 2, 8, 122, 0, 2, 8, -86, 0, 2, 8, -38, 0, 2, 10, 122, 0, 2, 10, -78, 0,
-<a name="l02746"></a>02746 2, 10, -14, 0, 2, 11, 42, 0, 2, 11, 98, 0, 2, 11, -2, 0, 2, 12, -8, 0, 2, 13, 40, 0, 2,
-<a name="l02747"></a>02747 13, -52, 0, 2, 13, -6, 0, 2, 14, 58, 0, 2, 14, -118, 0, 2, 14, -70, 0, 2, 15, 6, 0, 2, 16,
-<a name="l02748"></a>02748 -98, 0, 2, 18, 4, 0, 2, 19, 100, 0, 2, 19, -86, 0, 2, 19, -2, 0, 2, 20, 54, 0, 2, 21, -88,
-<a name="l02749"></a>02749 0, 2, 21, -34, 0, 2, 22, 112, 0, 2, 22, -82, 0, 2, 22, -36, 0, 2, 23, 26, 0, 2, 24, 74, 0,
-<a name="l02750"></a>02750 2, 24, 114, 0, 2, 25, -82, 0, 2, 26, 62, 0, 2, 26, -24, 0, 2, 27, 106, 0, 2, 28, 38, 0, 2,
-<a name="l02751"></a>02751 29, 62, 0, 2, 30, 76, 0, 2, 30, -128, 0, 2, 31, 6, 0, 2, 32, 98, 0, 2, 32, -28, 0, 2, 33,
-<a name="l02752"></a>02752 46, 0, 2, 34, 56, 0, 2, 34, -128, 0, 2, 35, -124, 0, 2, 36, 0, 0, 2, 36, 88, 0, 2, 36, -36,
-<a name="l02753"></a>02753 0, 2, 37, -58, 0, 2, 38, -36, 0, 2, 39, -40, 0, 2, 40, -126, 0, 2, 41, 114, 0, 2, 42, 68, 0,
-<a name="l02754"></a>02754 2, 43, 46, 0, 2, 44, 22, 0, 2, 44, -58, 0, 2, 45, 72, 0, 2, 47, -90, 0, 2, 47, -48, 0, 2,
-<a name="l02755"></a>02755 47, -6, 0, 2, 48, -78, 0, 2, 48, -36, 0, 2, 50, 30, 0, 2, 51, 36, 0, 2, 52, 14, 0, 2, 52,
-<a name="l02756"></a>02756 56, 0, 2, 52, 98, 0, 2, 52, -116, 0, 2, 52, -74, 0, 2, 52, -32, 0, 2, 54, 96, 0, 2, 54, -118,
-<a name="l02757"></a>02757 0, 2, 54, -76, 0, 2, 54, -34, 0, 2, 55, 8, 0, 2, 55, 50, 0, 2, 55, 92, 0, 2, 55, -122, 0,
-<a name="l02758"></a>02758 2, 55, -80, 0, 2, 55, -28, 0, 2, 56, 14, 0, 2, 56, 56, 0, 2, 56, 98, 0, 2, 57, -36, 0, 2,
-<a name="l02759"></a>02759 57, -20, 0, 2, 59, 6, 0, 2, 59, 22, 0, 2, 59, 64, 0, 2, 59, 106, 0, 2, 59, -108, 0, 2, 59,
-<a name="l02760"></a>02760 -66, 0, 2, 61, 104, 0, 2, 63, -124, 0, 2, 64, -78, 0, 2, 64, -62, 0, 2, 66, 62, 0, 2, 66, 78,
-<a name="l02761"></a>02761 0, 2, 67, -108, 0, 2, 69, 96, 0, 2, 70, 102, 0, 2, 71, -26, 0, 2, 73, -122, 0, 2, 75, -86, 0,
-<a name="l02762"></a>02762 2, 77, 4, 0, 2, 78, -26, 0, 2, 80, 42, 0, 2, 81, 88, 0, 2, 81, -126, 0, 2, 81, -84, 0, 2,
-<a name="l02763"></a>02763 81, -42, 0, 2, 82, 0, 0, 2, 82, 42, 0, 2, 82, 84, 0, 2, 82, 126, 0, 2, 82, -88, 0, 2, 82,
-<a name="l02764"></a>02764 -46, 0, 2, 82, -4, 0, 2, 83, 38, 0, 2, 83, 80, 0, 2, 83, 122, 0, 2, 83, -92, 0, 2, 83, -50,
-<a name="l02765"></a>02765 0, 2, 83, -8, 0, 2, 86, 52, 0, 2, 87, -80, 0, 2, 88, -12, 0, 2, 90, -36, 0, 2, 92, 36, 0,
-<a name="l02766"></a>02766 2, 92, 78, 0, 2, 92, 120, 0, 2, 92, -88, 0, 2, 92, -40, 0, 2, 93, 40, 0, 2, 93, 120, 0, 2,
-<a name="l02767"></a>02767 93, -72, 0, 2, 94, 42, 0, 2, 94, 126, 0, 2, 94, -36, 0, 2, 95, 50, 0, 2, 95, 104, 0, 2, 95,
-<a name="l02768"></a>02768 -86, 0, 2, 95, -16, 0, 2, 96, 58, 0, 2, 96, 106, 0, 2, 96, -94, 0, 2, 96, -46, 0, 2, 98, 10,
-<a name="l02769"></a>02769 0, 2, 101, 80, 0, 2, 101, 122, 0, 2, 101, -92, 0, 2, 101, -50, 0, 2, 101, -8, 0, 2, 102, 34, 0,
-<a name="l02770"></a>02770 2, 102, 76, 0, 2, 102, 118, 0, 2, 102, -96, 0, 2, 102, -54, 0, 2, 102, -12, 0, 2, 103, 30, 0, 2,
-<a name="l02771"></a>02771 103, 72, 0, 2, 103, 114, 0, 2, 103, -100, 0, 2, 103, -58, 0, 2, 103, -16, 0, 2, 104, 26, 0, 2, 104,
-<a name="l02772"></a>02772 68, 0, 2, 104, 110, 0, 2, 104, -104, 0, 2, 104, -62, 0, 2, 104, -20, 0, 2, 105, 22, 0, 2, 105, 64,
-<a name="l02773"></a>02773 0, 2, 105, 106, 0, 2, 105, -108, 0, 2, 105, -66, 0, 2, 105, -24, 0, 2, 106, -122, 0, 2, 106, -100, 0,
-<a name="l02774"></a>02774 2, 106, -58, 0, 2, 109, -90, 0, 2, 109, -74, 0, 2, 110, -48, 0, 2, 111, -14, 0, 2, 113, 48, 0, 2,
-<a name="l02775"></a>02775 114, 114, 0, 2, 116, 24, 0, 2, 116, 40, 0, 2, 117, 106, 0, 2, 118, -70, 0, 2, 120, -86, 0, 2, 122,
-<a name="l02776"></a>02776 126, 0, 2, 123, -106, 0, 2, 123, -90, 0, 2, 124, 40, 0, 2, 124, -74, 0, 2, 125, -74, 0, 2, 125, -58,
-<a name="l02777"></a>02777 0, 2, 126, 102, 0, 2, 126, 118, 0, 2, 127, -116, 0, 2, -128, -34, 0, 2, -126, 14, 0, 2, -126, 30, 0,
-<a name="l02778"></a>02778 2, -126, -20, 0, 2, -126, -4, 0, 2, -124, 114, 0, 2, -124, -126, 0, 2, -123, -106, 0, 2, -123, -90, 0, 2,
-<a name="l02779"></a>02779 -122, -38, 0, 2, -120, 112, 0, 2, -119, 44, 0, 2, -119, 60, 0, 2, -118, 58, 0, 2, -117, -108, 0, 2, -116,
-<a name="l02780"></a>02780 32, 0, 2, -116, 48, 0, 2, -115, 90, 0, 2, -114, -26, 0, 2, -113, -94, 0, 2, -113, -78, 0, 2, -112, 78,
-<a name="l02781"></a>02781 0, 2, -112, 94, 0, 2, -111, 44, 0, 2, -111, 60, 0, 2, -110, 20, 0, 2, -110, 36, 0, 2, -109, 44, 0,
-<a name="l02782"></a>02782 2, -109, 60, 0, 2, -107, 2, 0, 2, -107, 18, 0, 2, -106, 106, 0, 2, -106, 122, 0, 2, -104, -28, 0, 2,
-<a name="l02783"></a>02783 -104, -12, 0, 2, -102, -18, 0, 2, -102, -2, 0, 2, -100, 104, 0, 2, -100, 120, 0, 2, -99, 104, 0, 2, -99,
-<a name="l02784"></a>02784 120, 0, 2, -97, 16, 0, 2, -97, 32, 0, 2, -96, 62, 0, 2, -96, 78, 0, 2, -95, -114, 0, 2, -95, -98,
-<a name="l02785"></a>02785 0, 2, -95, -82, 0, 2, -95, -66, 0, 2, -93, 54, 0, 2, -93, 70, 0, 2, -93, 86, 0, 2, -93, 102, 0,
-<a name="l02786"></a>02786 2, -92, -72, 0, 2, -90, 6, 0, 2, -90, -44, 0, 2, -89, -72, 0, 2, -87, 56, 0, 2, -86, -70, 0, 2,
-<a name="l02787"></a>02787 -85, -70, 0, 2, -84, -50, 0, 2, -82, 18, 0, 2, -82, 34, 0, 2, -81, 16, 0, 2, -81, -22, 0, 2, -79,
-<a name="l02788"></a>02788 -122, 0, 2, -79, -106, 0, 2, -78, -76, 0, 2, -77, -70, 0, 2, -75, -72, 0, 2, -75, -56, 0, 2, -75, -40,
-<a name="l02789"></a>02789 0, 2, -75, -24, 0, 2, -73, 50, 0, 2, -73, 66, 0, 2, -73, -6, 0, 2, -72, 10, 0, 2, -71, 24, 0,
-<a name="l02790"></a>02790 2, -71, 40, 0, 2, -70, 20, 0, 2, -70, 36, 0, 2, -69, 66, 0, 2, -69, 82, 0, 2, -69, -16, 0, 2,
-<a name="l02791"></a>02791 -68, 0, 0, 2, -68, 16, 0, 2, -68, -2, 0, 2, -66, 114, 0, 2, -65, -98, 0, 2, -64, -104, 0, 2, -64,
-<a name="l02792"></a>02792 -88, 0, 2, -64, -72, 0, 2, -64, -56, 0, 2, -62, 102, 0, 2, -60, 32, 0, 2, -60, -18, 0, 2, -60, -2,
-<a name="l02793"></a>02793 0, 2, -57, 94, 0, 2, -55, -92, 0, 2, -52, 42, 0, 2, -50, -114, 0, 2, -47, 18, 0, 2, -45, -124, 0,
-<a name="l02794"></a>02794 2, -43, 84, 0, 2, -41, 10, 0, 2, -41, 52, 0, 2, -41, 94, 0, 2, -41, 110, 0, 2, -41, 126, 0, 2,
-<a name="l02795"></a>02795 -41, -88, 0, 2, -41, -46, 0, 2, -41, -4, 0, 2, -40, 12, 0, 2, -40, 28, 0, 2, -40, 70, 0, 2, -40,
-<a name="l02796"></a>02796 112, 0, 2, -40, -128, 0, 2, -40, -112, 0, 2, -40, -70, 0, 2, -40, -28, 0, 2, -39, 14, 0, 2, -39, 30,
-<a name="l02797"></a>02797 0, 2, -39, 46, 0, 2, -39, 62, 0, 2, -39, 78, 0, 2, -39, 94, 0, 2, -39, 110, 0, 2, -39, -104, 0,
-<a name="l02798"></a>02798 2, -39, -88, 0, 2, -39, -72, 0, 2, -39, -30, 0, 2, -38, 12, 0, 2, -38, 54, 0, 2, -38, 96, 0, 2,
-<a name="l02799"></a>02799 -38, -118, 0, 2, -38, -76, 0, 2, -38, -34, 0, 2, -37, 8, 0, 2, -37, 50, 0, 2, -37, 92, 0, 2, -37,
-<a name="l02800"></a>02800 -122, 0, 2, -37, -80, 0, 2, -37, -38, 0, 2, -36, 4, 0, 2, -36, 46, 0, 2, -36, 88, 0, 2, -36, -126,
-<a name="l02801"></a>02801 0, 2, -36, -84, 0, 2, -36, -42, 0, 2, -35, 0, 0, 2, -35, 42, 0, 2, -35, 84, 0, 2, -35, 126, 0,
-<a name="l02802"></a>02802 2, -35, -88, 0, 2, -35, -46, 0, 2, -35, -4, 0, 2, -34, 38, 0, 2, -34, 80, 0, 2, -34, 122, 0, 2,
-<a name="l02803"></a>02803 -34, -92, 0, 2, -34, -50, 0, 2, -34, -8, 0, 2, -33, 34, 0, 2, -33, 76, 0, 2, -33, 118, 0, 2, -33,
-<a name="l02804"></a>02804 -96, 0, 2, -33, -54, 0, 2, -33, -12, 0, 2, -32, 30, 0, 2, -32, 72, 0, 2, -32, 114, 0, 2, -32, -100,
-<a name="l02805"></a>02805 0, 2, -32, -58, 0, 2, -32, -16, 0, 2, -31, 26, 0, 2, -31, 68, 0, 2, -31, 110, 0, 2, -31, -104, 0,
-<a name="l02806"></a>02806 2, -31, -62, 0, 2, -31, -20, 0, 2, -30, 22, 0, 2, -30, 64, 0, 2, -30, 106, 0, 2, -30, -108, 0, 2,
-<a name="l02807"></a>02807 -29, 52, 0, 2, -29, 120, 0, 2, -29, -18, 0, 2, -28, 24, 0, 2, -28, 66, 0, 2, -28, 108, 0, 2, -28,
-<a name="l02808"></a>02808 -106, 0, 2, -28, -64, 0, 2, -28, -22, 0, 2, -27, 20, 0, 2, -27, 62, 0, 2, -27, 104, 0, 2, -27, -110,
-<a name="l02809"></a>02809 0, 2, -27, -68, 0, 2, -27, -26, 0, 2, -26, 16, 0, 2, -26, 58, 0, 2, -26, 100, 0, 2, -26, -114, 0,
-<a name="l02810"></a>02810 2, -26, -72, 0, 2, -26, -30, 0, 2, -25, 12, 0, 2, -25, 54, 0, 2, -25, 96, 0, 2, -25, -118, 0, 2,
-<a name="l02811"></a>02811 -25, -76, 0, 2, -25, -34, 0, 2, -24, 18, 0, 2, -24, 70, 0, 2, -24, 122, 0, 2, -22, 12, 0, 2, -21,
-<a name="l02812"></a>02812 -88, 0, 2, -19, 68, 0, 2, -18, -48, 0, 2, -17, 22, 0, 2, -17, 92, 0, 2, -17, -54, 0, 2, -16, 38,
-<a name="l02813"></a>02813 0, 2, -16, 120, 0, 2, -16, -24, 0, 2, -15, -64, 0, 2, -14, -116, 0, 2, -13, 100, 0, 2, -12, 48, 0,
-<a name="l02814"></a>02814 2, -12, -48, 0, 2, -11, -22, 0, 2, -10, -98, 0, 2, -9, 32, 0, 2, -9, 122, 0, 2, -9, -70, 0, 2,
-<a name="l02815"></a>02815 -8, -40, 0, 2, -6, 34, 0, 2, -5, -70, 0, 2, -4, 22, 0, 2, -4, 116, 0, 2, -4, -48, 0, 2, -3,
-<a name="l02816"></a>02816 44, 0, 2, -3, -32, 0, 2, -2, -106, 0, 2, -1, 66, 0, 2, -1, -18, 0, 3, 0, -102, 0, 3, 1, 82,
-<a name="l02817"></a>02817 0, 3, 2, 10, 0, 3, 2, -62, 0, 3, 2, -44, 0, 3, 2, -26, 0, 3, 2, -8, 0, 3, 3, 10, 0,
-<a name="l02818"></a>02818 3, 3, 28, 0, 3, 3, -118, 0, 3, 3, -8, 0, 3, 4, -80, 0, 3, 4, -62, 0, 3, 4, -44, 0, 3,
-<a name="l02819"></a>02819 4, -26, 0, 3, 4, -10, 0, 3, 5, 8, 0, 3, 5, 26, 0, 3, 5, 44, 0, 3, 5, 62, 0, 3, 5,
-<a name="l02820"></a>02820 80, 0, 3, 5, 98, 0, 3, 6, 16, 0, 3, 6, -68, 0, 3, 7, 106, 0, 3, 8, 22, 0, 3, 8, -82,
-<a name="l02821"></a>02821 0, 3, 8, -24, 0, 3, 9, 18, 0, 3, 9, 60, 0, 3, 9, -112, 0, 3, 9, -30, 0, 3, 10, 94, 0,
-<a name="l02822"></a>02822 3, 10, -88, 0, 3, 11, 36, 0, 3, 11, 120, 0, 3, 11, -4, 0, 3, 12, 78, 0, 3, 12, -60, 0, 3,
-<a name="l02823"></a>02823 13, 28, 0, 3, 13, -126, 0, 3, 13, -40, 0, 3, 14, 50, 0, 3, 14, -80, 0, 3, 14, -4, 0, 3, 15,
-<a name="l02824"></a>02824 90, 0, 3, 15, -66, 0, 3, 16, 12, 0, 3, 16, 90, 0, 3, 16, -78, 0, 3, 16, -6, 0, 3, 17, 36,
-<a name="l02825"></a>02825 0, 3, 17, 82, 0, 3, 17, 120, 0, 3, 17, -84, 0, 3, 17, -36, 0, 3, 18, 12, 0, 3, 18, 94, 0,
-<a name="l02826"></a>02826 3, 18, -52, 0, 3, 19, 34, 0, 3, 19, -106, 0, 3, 19, -22, 0, 3, 20, 94, 0, 3, 20, -92, 0, 3,
-<a name="l02827"></a>02827 21, 12, 0, 3, 21, 82, 0, 3, 21, -82, 0, 3, 21, -34, 0, 3, 22, 24, 0, 3, 22, 62, 0, 3, 22,
-<a name="l02828"></a>02828 110, 0, 3, 22, -108, 0, 3, 22, -70, 0, 3, 22, -20, 0, 3, 23, 28, 0, 3, 23, 110, 0, 3, 23, -44,
-<a name="l02829"></a>02829 0, 3, 24, 42, 0, 3, 24, -112, 0, 3, 24, -28, 0, 3, 25, 82, 0, 3, 25, -108, 0, 3, 25, -12, 0,
-<a name="l02830"></a>02830 3, 26, 54, 0, 3, 26, -126, 0, 3, 26, -68, 0, 3, 26, -8, 0, 3, 27, 50, 0, 3, 27, 110, 0, 3,
-<a name="l02831"></a>02831 27, -94, 0, 3, 27, -44, 0, 3, 28, 4, 0, 3, 28, 52, 0, 3, 28, 94, 0, 3, 28, -124, 0, 3, 28,
-<a name="l02832"></a>02832 -82, 0, 3, 28, -36, 0, 3, 29, 6, 0, 3, 29, 82, 0, 3, 29, -106, 0, 3, 29, -52, 0, 3, 30, 8,
-<a name="l02833"></a>02833 0, 3, 30, 60, 0, 3, 30, 106, 0, 3, 30, -88, 0, 3, 30, -40, 0, 3, 31, 18, 0, 3, 31, 60, 0,
-<a name="l02834"></a>02834 3, 31, 106, 0, 3, 31, -112, 0, 3, 31, -74, 0, 3, 31, -30, 0, 3, 32, 62, 0, 3, 32, 110, 0, 3,
-<a name="l02835"></a>02835 32, -98, 0, 3, 32, -50, 0, 3, 33, 6, 0, 3, 33, 58, 0, 3, 33, 104, 0, 3, 33, -104, 0, 3, 33,
-<a name="l02836"></a>02836 -56, 0, 3, 33, -8, 0, 3, 34, 40, 0, 3, 34, 92, 0, 3, 34, -78, 0, 3, 34, -26, 0, 3, 35, 70,
-<a name="l02837"></a>02837 0, 3, 35, 122, 0, 3, 35, -46, 0, 3, 36, 6, 0, 3, 36, 98, 0, 3, 37, 0, 0, 3, 37, -50, 0,
-<a name="l02838"></a>02838 3, 38, -18, 0, 3, 39, -74, 0, 3, 40, 70, 0, 3, 40, -36, 0, 3, 42, -56, 0, 3, 44, -60, 0, 3,
-<a name="l02839"></a>02839 46, 60, 0, 3, 47, -72, 0, 3, 49, 98, 0, 3, 51, 20, 0, 3, 51, -4, 0, 3, 53, 50, 0, 3, 54,
-<a name="l02840"></a>02840 42, 0, 3, 55, 60, 0, 3, 56, 90, 0, 3, 57, -112, 0, 3, 58, -6, 0, 3, 60, 104, 0, 3, 61, -2,
-<a name="l02841"></a>02841 0, 3, 63, 122, 0, 3, 64, -118, 0, 3, 64, -102, 0, 3, 65, -58, 0, 3, 67, 2, 0, 3, 68, 68, 0,
-<a name="l02842"></a>02842 3, 69, -56, 0, 3, 70, -94, 0, 3, 71, 24, 0, 3, 71, -50, 0, 3, 72, 116, 0, 3, 73, -28, 0, 3,
-<a name="l02843"></a>02843 74, 28, 0, 3, 74, -106, 0, 3, 75, 88, 0, 3, 76, 18, 0, 3, 76, 122, 0, 3, 77, -128, 0, 3, 78,
-<a name="l02844"></a>02844 -74, 0, 3, 79, -124, 0, 3, 80, -30, 0, 3, 81, 92, 0, 3, 81, -42, 0, 3, 82, -98, 0, 3, 83, 88,
-<a name="l02845"></a>02845 0, 3, 84, 12, 0, 3, 84, 104, 0, 3, 84, -62, 0, 3, 85, 10, 0, 3, 85, 122, 0, 3, 85, -10, 0,
-<a name="l02846"></a>02846 3, 86, 64, 0, 3, 86, 122, 0, 3, 86, -64, 0, 3, 87, 4, 0, 3, 87, 86, 0, 3, 87, -88, 0, 3,
-<a name="l02847"></a>02847 88, 42, 0, 3, 88, -84, 0, 3, 88, -18, 0, 3, 89, 46, 0, 3, 89, 100, 0, 3, 89, -102, 0, 3, 89,
-<a name="l02848"></a>02848 -56, 0, 3, 89, -10, 0, 3, 90, 42, 0, 3, 90, 94, 0, 3, 90, -96, 0, 3, 90, -30, 0, 3, 91, 30,
-<a name="l02849"></a>02849 0, 3, 91, 90, 0, 3, 91, -108, 0, 3, 91, -50, 0, 3, 92, 0, 0, 3, 92, 50, 0, 3, 92, 100, 0,
-<a name="l02850"></a>02850 3, 92, -106, 0, 3, 92, -48, 0, 3, 93, 10, 0, 3, 93, 76, 0, 3, 93, -114, 0, 3, 93, -48, 0, 3,
-<a name="l02851"></a>02851 94, 18, 0, 3, 94, 96, 0, 3, 94, -82, 0, 3, 94, -16, 0, 3, 95, 50, 0, 3, 95, 114, 0, 3, 95,
-<a name="l02852"></a>02852 -78, 0, 3, 95, -20, 0, 3, 96, 38, 0, 3, 96, 114, 0, 3, 96, -66, 0, 3, 96, -4, 0, 3, 97, 60,
-<a name="l02853"></a>02853 0, 3, 97, -126, 0, 3, 97, -56, 0, 3, 98, 4, 0, 3, 98, 90, 0, 3, 98, -106, 0, 3, 98, -46, 0,
-<a name="l02854"></a>02854 3, 99, 18, 0, 3, 99, 82, 0, 3, 99, -114, 0, 3, 99, -54, 0, 3, 100, 10, 0, 3, 100, 74, 0, 3,
-<a name="l02855"></a>02855 100, -114, 0, 3, 100, -46, 0, 3, 101, 38, 0, 3, 101, -76, 0, 3, 101, -10, 0, 3, 102, 56, 0, 3, 102,
-<a name="l02856"></a>02856 -96, 0, 3, 103, 8, 0, 3, 103, 58, 0, 3, 103, 108, 0, 3, 103, -92, 0, 3, 103, -36, 0, 3, 104, 114,
-<a name="l02857"></a>02857 0, 3, 105, 8, 0, 3, 105, 82, 0, 3, 105, -100, 0, 3, 105, -40, 0, 3, 106, 20, 0, 3, 106, 106, 0,
-<a name="l02858"></a>02858 3, 106, -64, 0, 3, 107, 10, 0, 3, 107, 84, 0, 3, 107, -84, 0, 3, 108, 4, 0, 3, 108, 68, 0, 3,
-<a name="l02859"></a>02859 108, -124, 0, 3, 108, -68, 0, 3, 108, -12, 0, 3, 109, 62, 0, 3, 109, -120, 0, 3, 109, -58, 0, 3, 110,
-<a name="l02860"></a>02860 4, 0, 3, 110, 70, 0, 3, 110, -120, 0, 3, 110, -36, 0, 3, 111, 48, 0, 3, 111, 118, 0, 3, 111, -68,
-<a name="l02861"></a>02861 0, 3, 112, 2, 0, 3, 112, 72, 0, 3, 112, -98, 0, 3, 112, -12, 0, 3, 113, 74, 0, 3, 113, -96, 0,
-<a name="l02862"></a>02862 3, 113, -20, 0, 3, 114, 56, 0, 3, 114, -124, 0, 3, 114, -48, 0, 3, 115, 68, 0, 3, 115, -72, 0, 3,
-<a name="l02863"></a>02863 116, 44, 0, 3, 116, -96, 0, 3, 116, -34, 0, 3, 117, 28, 0, 3, 117, 90, 0, 3, 117, -104, 0, 3, 117,
-<a name="l02864"></a>02864 -42, 0, 3, 118, 20, 0, 3, 118, 88, 0, 3, 118, -100, 0, 3, 118, -24, 0, 3, 119, 52, 0, 3, 119, -108,
-<a name="l02865"></a>02865 0, 3, 119, -32, 0, 3, 120, 30, 0, 3, 120, 108, 0, 3, 121, 124, 0, 3, 121, -52, 0, 3, 122, 28, 0,
-<a name="l02866"></a>02866 3, 122, 84, 0, 3, 122, -116, 0, 3, 122, -30, 0, 3, 123, 56, 0, 3, 123, -84, 0, 3, 124, 16, 0, 3,
-<a name="l02867"></a>02867 124, 82, 0, 3, 124, -108, 0, 3, 124, -22, 0, 3, 125, 56, 0, 3, 125, -124, 0, 3, 125, -48, 0, 3, 126,
-<a name="l02868"></a>02868 16, 0, 3, 126, 80, 0, 3, 126, -104, 0, 3, 126, -32, 0, 3, 127, 76, 0, 3, 127, -90, 0, 3, 127, -34,
-<a name="l02869"></a>02869 0, 3, -128, 22, 0, 3, -128, 86, 0, 3, -128, -106, 0, 3, -127, -80, 0, 3, -126, -10, 0, 3, -125, -26, 0,
-<a name="l02870"></a>02870 3, -124, -10, 0, 3, -123, 76, 0, 3, -123, -94, 0, 3, -123, -12, 0, 3, -122, 72, 0, 3, -122, -84, 0, 3,
-<a name="l02871"></a>02871 -121, 16, 0, 3, -121, 102, 0, 3, -121, -68, 0, 3, -120, 50, 0, 3, -120, -88, 0, 3, -120, -22, 0, 3, -119,
-<a name="l02872"></a>02872 44, 0, 3, -119, 110, 0, 3, -119, -80, 0, 3, -119, -14, 0, 3, -118, 52, 0, 3, -118, -118, 0, 3, -118, -32,
-<a name="l02873"></a>02873 0, 3, -117, 50, 0, 3, -117, -122, 0, 3, -116, 14, 0, 3, -116, -112, 0, 3, -115, 48, 0, 3, -115, -46, 0,
-<a name="l02874"></a>02874 3, -114, 16, 0, 3, -114, 78, 0, 3, -114, -116, 0, 3, -114, -56, 0, 3, -113, 6, 0, 3, -113, 68, 0, 3,
-<a name="l02875"></a>02875 -113, -126, 0, 3, -113, -66, 0, 3, -112, -94, 0, 3, -111, -114, 0, 3, -110, -92, 0, 3, -109, -64, 0, 3, -108,
-<a name="l02876"></a>02876 -118, 0, 3, -107, 84, 0, 3, -106, 78, 0, 3, -105, 72, 0, 3, -104, 70, 0, 3, -103, 68, 0, 3, -102, 98,
-<a name="l02877"></a>02877 0, 3, -101, -128, 0, 3, -100, -90, 0, 3, -99, -52, 0, 3, -98, -50, 0, 3, -97, -48, 0, 3, -96, 98, 0,
-<a name="l02878"></a>02878 3, -96, -12, 0, 3, -95, 50, 0, 3, -95, 112, 0, 3, -95, -54, 0, 3, -94, 36, 0, 3, -94, 92, 0, 3,
-<a name="l02879"></a>02879 -94, -108, 0, 3, -93, -92, 0, 3, -93, -76, 0, 3, -93, -4, 0, 3, -92, 68, 0, 3, -92, -100, 0, 3, -92,
-<a name="l02880"></a>02880 -12, 0, 3, -91, 38, 0, 3, -91, 88, 0, 3, -91, -102, 0, 3, -91, -36, 0, 3, -90, 22, 0, 3, -90, 80,
-<a name="l02881"></a>02881 0, 3, -90, -108, 0, 3, -90, -40, 0, 3, -89, 80, 0, 3, -89, -54, 0, 3, -88, 90, 0, 3, -88, -98, 0,
-<a name="l02882"></a>02882 3, -88, -34, 0, 3, -87, 96, 0, 3, -87, -30, 0, 3, -85, 58, 0, 3, -85, 74, 0, 3, -85, -104, 0, 3,
-<a name="l02883"></a>02883 -85, -26, 0, 3, -84, 34, 0, 3, -84, 94, 0, 3, -84, -92, 0, 3, -84, -22, 0, 3, -83, 56, 0, 3, -83,
-<a name="l02884"></a>02884 -122, 0, 3, -83, -42, 0, 3, -82, 38, 0, 3, -82, -126, 0, 3, -82, -34, 0, 3, -80, 84, 0, 3, -79, -68,
-<a name="l02885"></a>02885 0, 3, -79, -12, 0, 3, -78, 46, 0, 3, -78, 122, 0, 3, -78, -58, 0, 3, -77, 24, 0, 3, -77, 106, 0,
-<a name="l02886"></a>02886 3, -77, -68, 0, 3, -76, 18, 0, 3, -76, 78, 0, 3, -76, -118, 0, 3, -76, -32, 0, 3, -75, 52, 0, 3,
-<a name="l02887"></a>02887 -74, 108, 0, 3, -73, 12, 0, 3, -73, 90, 0, 3, -73, -102, 0, 3, -73, -44, 0, 3, -71, 106, 0, 3, -69,
-<a name="l02888"></a>02888 -46, 0, 3, -68, -106, 0, 3, -66, 44, 0, 3, -65, -118, 0, 3, -64, 88, 0, 3, -63, -2, 0, 3, -60, 82,
-<a name="l02889"></a>02889 0, 3, -58, -118, 0, 3, -58, -48, 0, 3, -57, 2, 0, 3, -57, -84, 0, 3, -56, -48, 0, 3, -56, -12, 0,
-<a name="l02890"></a>02890 3, -55, -114, 0, 3, -54, -102, 0, 3, -53, -86, 0, 3, -52, -70, 0, 3, -51, -56, 0, 3, -49, 78, 0, 3,
-<a name="l02891"></a>02891 -49, -128, 0, 3, -48, 34, 0, 3, -48, 74, 0, 3, -48, -84, 0, 3, -47, 14, 0, 3, -47, 112, 0, 3, -47,
-<a name="l02892"></a>02892 -46, 0, 3, -46, 16, 0, 3, -46, 78, 0, 3, -46, -120, 0, 3, -46, -62, 0, 3, -46, -18, 0, 3, -45, 58,
-<a name="l02893"></a>02893 0, 3, -45, 116, 0, 3, -45, -82, 0, 3, -43, 10, 0, 3, -42, 94, 0, 3, -42, 110, 0, 3, -41, 44, 0,
-<a name="l02894"></a>02894 3, -40, 98, 0, 3, -40, -64, 0, 3, -39, -40, 0, 3, -37, 102, 0, 3, -36, 12, 0, 3, -35, 82, 0, 3,
-<a name="l02895"></a>02895 -35, -112, 0, 3, -35, -50, 0, 3, -34, 12, 0, 3, -34, 96, 0, 3, -34, -120, 0, 3, -34, -30, 0, 3, -33,
-<a name="l02896"></a>02896 70, 0, 3, -33, -114, 0, 3, -33, -16, 0, 3, -32, 80, 0, 3, -32, -62, 0, 3, -31, 62, 0, 3, -31, -70,
-<a name="l02897"></a>02897 0, 3, -30, 60, 0, 3, -30, -56, 0, 3, -29, 84, 0, 3, -29, -34, 0, 3, -28, 94, 0, 3, -28, -104, 0,
-<a name="l02898"></a>02898 3, -28, -44, 0, 3, -26, 56, 0, 3, -25, 2, 0, 3, -25, 50, 0, 3, -25, 98, 0, 2, 1, 0, 0, 0,
-<a name="l02899"></a>02899 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l02900"></a>02900 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 0, -80, 0, 0, 1, -113, 5, -70, 0, 5, 0, 9,
-<a name="l02901"></a>02901 0, 125, -79, 6, 2, 67, 84, 88, -78, 2, 0, 5, -72, 2, -81, 64, 11, 8, 60, 6, 10, 9, 58, 4, 60,
-<a name="l02902"></a>02902 6, 58, 1, 1, 47, -28, -3, -28, 0, 63, -3, -26, 63, 27, -79, 28, 5, -72, 2, -81, 64, 38, 8, 60, 6,
-<a name="l02903"></a>02903 2, 0, 6, 10, 11, -53, 3, 9, 58, 5, 56, 4, 60, 0, 56, 6, 58, 1, 3, 60, 2, 2, 32, 1, 1,
-<a name="l02904"></a>02904 1, -53, 10, 10, 11, -127, 33, -95, -104, 24, 43, 43, 78, 16, -12, 93, 60, 77, 16, -19, 16, -28, -28, -3, -28,
-<a name="l02905"></a>02905 -28, 16, -18, 0, 63, 63, 77, 16, -3, -26, 75, 83, 88, -77, 5, 4, 0, 1, 1, 16, 60, 16, 60, 89, 89,
-<a name="l02906"></a>02906 49, 48, 19, 3, 17, 51, 17, 3, 3, 53, 51, 21, -25, 55, -33, 52, -93, -49, 1, 108, 3, 9, 1, 69, -2,
-<a name="l02907"></a>02907 -69, -4, -9, -2, -108, -51, -51, 0, 0, 2, 0, 94, 3, -77, 2, 119, 5, -70, 0, 5, 0, 11, 0, 117, -71,
-<a name="l02908"></a>02908 0, 0, -1, -8, -77, 34, 37, 52, 5, -72, -1, -8, 64, 34, 38, 41, 52, 11, 6, 10, 7, 5, 0, 4, 1,
-<a name="l02909"></a>02909 0, 5, 5, 6, 11, -18, 9, 8, 8, 3, 3, 2, 0, 7, 8, 60, 10, 15, 9, -128, 9, 2, 9, -72, -1,
-<a name="l02910"></a>02910 -64, 64, 21, 13, 15, 52, 9, -34, 1, 3, 4, 60, 2, 1, 64, 13, 17, 52, 1, 25, 12, 113, -89, 24, 43,
-<a name="l02911"></a>02911 78, 16, -12, 43, 60, 77, -3, 60, 16, -3, 43, 93, 60, -3, 60, 0, 63, 60, 16, 60, 16, 60, -3, 60, 60,
-<a name="l02912"></a>02912 16, 60, 1, 17, 18, 57, 57, 17, 18, 57, 57, 49, 48, 1, 43, 43, 19, 3, 53, 51, 21, 3, 51, 3, 53,
-<a name="l02913"></a>02913 51, 21, 3, -112, 50, -51, 45, -35, 49, -51, 48, 3, -77, 1, 23, -16, -16, -2, -23, 1, 23, -16, -16, -2, -23,
-<a name="l02914"></a>02914 0, 0, 2, 0, 21, -1, -25, 4, 89, 5, -45, 0, 27, 0, 31, 1, 49, 64, -121, 40, 29, 56, 29, 2, 9,
-<a name="l02915"></a>02915 4, 9, 29, 2, 87, 15, -73, 19, -73, 28, -57, 19, -57, 28, -8, 29, 6, 1, 2, 21, 0, 9, 4, 3, 20,
-<a name="l02916"></a>02916 0, 9, 5, 6, 17, 0, 9, 8, 7, 16, 0, 9, 11, 7, 16, 27, 10, 12, 7, 16, 24, 13, 15, 7, 16,
-<a name="l02917"></a>02917 23, 14, 18, 6, 17, 23, 14, 19, 3, 20, 23, 14, 22, 2, 21, 23, 14, 25, 2, 21, 24, 13, 26, 2, 21,
-<a name="l02918"></a>02918 27, 10, 28, 3, 20, 27, 10, 29, 3, 20, 24, 13, 30, 6, 17, 24, 13, 31, 6, 17, 27, 10, 10, 27, 27,
-<a name="l02919"></a>02919 37, 0, 9, 20, 0, 0, 9, 13, 24, 24, 37, 23, 14, 20, 23, 23, 14, 21, 2, 37, 20, 3, 3, 0, 16,
-<a name="l02920"></a>02920 7, 37, 17, 6, -72, 1, -74, 64, 56, 14, 14, 13, 13, 10, 10, 9, 0, 27, 24, 24, 23, 23, 0, 10, 21,
-<a name="l02921"></a>02921 20, 20, 17, 16, 62, 14, 7, 6, 6, 3, 2, 62, 0, 24, -108, 13, 23, -108, 13, 37, 14, 64, 17, 57, 79,
-<a name="l02922"></a>02922 14, -97, 14, 2, 14, 117, 33, 10, -108, 27, 9, -108, 27, 37, 0, -72, -1, -64, -75, 17, 57, 32, 0, 1, 0,
-<a name="l02923"></a>02923 -72, 2, -95, -77, 32, -87, 104, 24, 43, 16, -10, 93, 43, -19, -28, 16, -28, 16, -10, 93, 43, -19, -28, 16, -28,
-<a name="l02924"></a>02924 16, -12, 60, 60, 16, 60, 16, -12, 60, 60, 16, 60, 0, 63, 60, 16, 60, 16, 60, 63, 60, 16, 60, 16, 60,
-<a name="l02925"></a>02925 16, -3, 60, -3, 60, 17, 57, 47, 60, -3, 60, -121, 5, 46, 43, 125, 16, -60, -121, 46, 24, 43, 125, 16, -60,
-<a name="l02926"></a>02926 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 49, 48, 1, 93, 93, 113, 23, 19, 35,
-<a name="l02927"></a>02927 53, 51, 19, 33, 53, 33, 19, 51, 3, 33, 19, 51, 3, 51, 21, 35, 3, 33, 21, 33, 3, 35, 19, 33, 3,
-<a name="l02928"></a>02928 19, 33, 19, 33, 103, 87, -87, -57, 74, -2, -17, 1, 47, 87, -106, 87, 1, 59, 87, -105, 87, -83, -53, 75, 1,
-<a name="l02929"></a>02929 22, -2, -52, 87, -106, 86, -2, -58, 87, 117, 1, 58, 75, -2, -59, 25, 1, -86, -107, 1, 107, -107, 1, -83, -2,
-<a name="l02930"></a>02930 83, 1, -83, -2, 83, -107, -2, -107, -107, -2, 86, 1, -86, -2, 86, 2, 63, 1, 107, 0, 3, 0, 73, -1, 45,
-<a name="l02931"></a>02931 4, 19, 6, 65, 0, 42, 0, 49, 0, 56, 1, -44, 64, 37, 124, 30, 1, 4, 48, 44, 54, 54, 47, 70, 33,
-<a name="l02932"></a>02932 85, 33, 80, 47, 93, 54, 106, 3, 99, 47, 122, 3, 119, 33, 115, 47, 123, 54, -121, 33, -128, 47, -114, 54, 16,
-<a name="l02933"></a>02933 49, -72, -1, -34, -73, 11, 57, 30, 32, 32, 36, 52, 44, -72, -1, -32, 64, 44, 32, 35, 52, 106, 8, 56, 42,
-<a name="l02934"></a>02934 22, 12, 55, 32, 22, 42, 48, 33, 11, 0, 21, 12, 55, 49, 48, 33, 0, 21, 55, 33, 48, 48, -54, 12, 55,
-<a name="l02935"></a>02935 20, 12, 12, 55, 48, 12, 33, 55, 4, 23, 50, 6, -72, 2, -92, -74, 80, 5, 1, 5, -19, 1, 28, -70, 2,
-<a name="l02936"></a>02936 -92, 0, 27, 2, -83, -77, 23, 31, -45, 43, -72, 1, 53, 64, 10, 20, 21, 22, -128, 23, 23, 20, 5, 0, 42,
-<a name="l02937"></a>02937 -72, 1, 55, -78, 1, 10, 50, -72, 1, 53, -76, 41, -45, 1, 13, 28, -70, 1, 56, 0, 27, 2, -104, -78, 53,
-<a name="l02938"></a>02938 115, 38, -72, -1, -64, 64, 10, 18, 57, 48, 38, 64, 38, -128, 38, 3, 38, -72, 2, 82, 64, 15, 42, 22, 23,
-<a name="l02939"></a>02939 23, 31, 31, 32, 32, 56, 56, 50, 50, 41, 41, 42, -72, 1, -109, 64, 22, 0, 21, 20, 20, 43, 43, 49, 49,
-<a name="l02940"></a>02940 11, 11, 10, 10, 48, 0, 64, 0, -128, 0, -48, 0, 4, 0, -72, 2, 12, 64, 9, 5, 46, 115, 111, 16, 127,
-<a name="l02941"></a>02941 16, 2, 16, -70, 1, -114, 0, 6, 1, 56, 64, 15, 63, 5, 79, 5, 127, 5, -113, 5, 4, 5, 25, 57, -57,
-<a name="l02942"></a>02942 -117, 24, 43, 78, 16, -12, 93, 77, -19, -12, 113, -19, 16, -12, 93, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16,
-<a name="l02943"></a>02943 60, 16, -3, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16, -12, 93, 43, -19, -12, -19, 0, 63,
-<a name="l02944"></a>02944 -12, -3, 60, 16, -12, 60, 63, 60, 16, -12, 60, 16, -3, -28, 16, -3, -28, 16, -3, 93, -28, 17, 18, 23, 57,
-<a name="l02945"></a>02945 -121, 14, 46, 43, -121, 14, 125, -60, 15, 15, 15, 15, 49, 48, 24, 67, 121, 64, 74, 33, 55, 12, 19, 36, 37,
-<a name="l02946"></a>02946 35, 37, 34, 37, 3, 6, 18, 38, 14, 15, 13, 15, 2, 6, 55, 33, 53, 79, 1, 51, 40, 53, 79, 1, 44,
-<a name="l02947"></a>02947 19, 46, 79, 0, 48, 12, 46, 79, 0, 54, 37, 56, 79, 1, 33, 32, 55, 56, 52, 39, 50, 79, 0, 51, 50,
-<a name="l02948"></a>02948 45, 17, 43, 79, 1, 44, 43, 19, 20, 47, 15, 49, 79, 0, 48, 49, 12, 11, 0, 16, 60, 16, 60, 43, 16,
-<a name="l02949"></a>02949 60, 16, 60, 43, 16, 60, 43, 16, 60, 16, 60, 43, 1, 43, 43, 43, 43, 42, 43, 42, -127, -127, 1, 43, 43,
-<a name="l02950"></a>02950 0, 43, 93, 1, 93, 5, 53, 46, 2, 39, 55, 22, 23, 22, 23, 17, 38, 39, 38, 38, 53, 52, 55, 54, 55,
-<a name="l02951"></a>02951 53, 51, 21, 22, 23, 22, 23, 7, 38, 38, 39, 17, 22, 23, 30, 2, 21, 20, 6, 7, 21, 3, 6, 6, 21,
-<a name="l02952"></a>02952 20, 22, 23, 19, 54, 54, 53, 52, 38, 39, 1, -2, -121, -87, 123, 10, -75, 21, 53, 76, 106, 111, 116, 86, 93,
-<a name="l02953"></a>02953 -120, 91, -77, 106, -99, 92, 118, 24, -70, 16, 101, 88, -120, 44, 84, 106, 57, -18, -67, 106, 105, 121, 103, 123, 106,
-<a name="l02954"></a>02954 105, -119, 97, -111, -45, -76, 17, 87, -62, -116, 34, -111, 68, 96, 11, 2, 61, 21, 65, 48, -86, 108, -64, 119, 80,
-<a name="l02955"></a>02955 18, 86, 86, 15, 77, 98, -85, 28, 106, 113, 18, -3, -7, 34, 19, 37, 106, -110, 85, -69, -6, 9, -74, 6, 40,
-<a name="l02956"></a>02956 16, -120, 93, 92, 124, 37, -3, 22, 13, -100, 115, 98, 119, 47, 0, 0, 5, 0, 119, -1, -54, 6, -97, 5, -45,
-<a name="l02957"></a>02957 0, 11, 0, 23, 0, 27, 0, 39, 0, 51, 1, 7, 64, 10, -112, 25, -112, 26, 2, 104, 8, 26, 27, 27, -72,
-<a name="l02958"></a>02958 2, -102, 64, 15, 24, 25, 20, 24, 24, 25, 24, 27, 21, 15, 25, 26, 49, 43, 18, -68, 2, -97, 0, 9, 1,
-<a name="l02959"></a>02959 101, 0, 12, 2, -97, 64, 11, 3, 26, 25, 25, 3, 1, 27, 24, 24, 37, 40, -68, 2, -97, 0, 31, 1, 101,
-<a name="l02960"></a>02960 0, 46, 2, -97, -78, 37, 11, 28, -68, 2, -102, 0, 43, 1, 0, 0, 49, 2, -102, -77, 34, -84, 53, 6, -68,
-<a name="l02961"></a>02961 2, -102, 0, 21, 1, 0, 0, 15, 2, -102, 64, 9, 32, 0, 1, 0, 117, 52, 87, 90, 24, 43, 16, -10, 93,
-<a name="l02962"></a>02962 -19, -12, -19, 16, -10, -19, -12, -19, 0, 63, -19, -3, -19, 16, 60, 16, 60, 63, 60, 16, 60, 16, -19, -3, -19,
-<a name="l02963"></a>02963 1, 17, 18, 57, 57, 17, 18, 57, 57, -121, 46, 43, 125, 16, -60, 49, 48, 24, 67, 121, 64, 82, 1, 51, 41,
-<a name="l02964"></a>02964 30, 43, 31, 0, 51, 32, 49, 31, 1, 45, 38, 43, 31, 0, 47, 36, 49, 31, 1, 13, 2, 15, 31, 0, 23,
-<a name="l02965"></a>02965 4, 21, 31, 1, 17, 10, 15, 31, 0, 19, 8, 21, 31, 1, 42, 29, 40, 31, 1, 50, 33, 40, 31, 1, 44,
-<a name="l02966"></a>02966 39, 46, 31, 0, 48, 35, 46, 31, 0, 14, 1, 12, 31, 1, 22, 5, 12, 31, 1, 16, 11, 18, 31, 0, 20,
-<a name="l02967"></a>02967 7, 18, 31, 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, -127, 1, 93,
-<a name="l02968"></a>02968 19, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 3,
-<a name="l02969"></a>02969 1, 51, 1, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53,
-<a name="l02970"></a>02970 52, 38, 119, -98, -106, -118, -75, -73, -122, -123, -79, 1, 57, 67, 89, 90, 66, 68, 89, 90, 66, 3, 34, -110, -4,
-<a name="l02971"></a>02971 -31, 1, -27, -98, -105, -118, -75, -73, -121, -123, -79, 1, 58, 68, 89, 90, 66, 69, 89, 90, 4, 90, -99, -36, -59,
-<a name="l02972"></a>02972 -65, -70, -55, -58, 1, -59, 116, -101, -115, 115, 116, -102, -114, 115, -6, 115, 6, 9, -7, -9, 1, -114, -98, -37, -59,
-<a name="l02973"></a>02973 -65, -70, -55, -57, 1, -60, 116, -101, -116, 116, 116, -102, -114, 115, 0, 3, 0, 88, -1, -34, 5, 39, 5, -45, 0,
-<a name="l02974"></a>02974 31, 0, 44, 0, 54, 1, 61, 64, -56, 122, 21, 114, 22, 114, 23, 122, 46, 122, 47, -122, 22, -90, 47, -35, 0,
-<a name="l02975"></a>02975 8, -106, 29, -93, 22, 2, -119, 47, -125, 54, 2, -125, 28, -124, 33, 2, -76, 22, 1, 96, 23, 97, 33, 2, 22,
-<a name="l02976"></a>02976 21, 64, 22, 106, 0, 3, -86, 30, -38, 22, 2, 115, 28, 115, 29, 2, 117, 26, 114, 27, 2, 117, 0, 123, 22,
-<a name="l02977"></a>02977 2, -118, 23, -125, 27, 2, -87, 21, -82, 22, 2, -125, 30, -118, 32, 2, -118, 10, -125, 28, 2, -53, 32, -58, 39,
-<a name="l02978"></a>02978 2, -51, 22, -62, 27, 2, -70, 26, -58, 20, 2, 105, 54, -70, 22, 2, 105, 23, 101, 51, 2, 101, 47, 1, 86,
-<a name="l02979"></a>02979 51, 92, 54, 2, 70, 51, 90, 31, 2, 77, 22, 66, 27, 2, 48, 26, 57, 31, 2, 38, 27, 36, 32, 2, 0,
-<a name="l02980"></a>02980 45, 45, 30, 45, 46, 10, 10, 0, 27, 22, 22, 29, 21, 32, 22, 22, 32, 32, -70, 10, 45, 20, 10, 10, 45,
-<a name="l02981"></a>02981 38, 41, 16, 1, 52, 41, 30, 58, 3, 11, 27, -122, 29, 35, 94, 96, 19, 112, 19, -96, 19, 3, 47, 19, 64,
-<a name="l02982"></a>02982 19, 2, 19, -36, 29, -113, 24, 1, 24, -72, 2, 90, 64, 28, 25, 62, 30, 114, 32, 29, 1, 29, 56, 56, 41,
-<a name="l02983"></a>02983 94, -96, 13, 1, 13, -96, 49, 94, 32, 7, 1, 7, 106, 55, 113, -104, 24, 43, 16, -10, 93, -19, -12, 93, -19,
-<a name="l02984"></a>02984 16, -12, 93, -28, -12, -19, 93, 16, -12, 93, 93, -19, 16, -28, 0, 63, -28, -19, 63, -19, -121, 14, 46, 43, 14,
-<a name="l02985"></a>02985 125, 16, -60, 7, 14, 60, -121, 14, 16, -60, 7, 14, 16, 60, 60, -121, 14, 16, -60, 49, 48, 1, 93, 93, 93,
-<a name="l02986"></a>02986 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 0, 93, 93, 93, 93, 93, 93, 93, 37,
-<a name="l02987"></a>02987 6, 6, 35, 34, 39, 38, 53, 52, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 5, 1, 54, 55, 23,
-<a name="l02988"></a>02988 6, 7, 22, 23, 7, 38, 1, 54, 54, 53, 52, 38, 35, 34, 6, 21, 20, 22, 23, 1, 1, 6, 6, 21, 20,
-<a name="l02989"></a>02989 22, 51, 50, 54, 3, -51, 89, -46, 122, -31, -124, 107, -81, -82, 99, 66, -49, -99, -106, -65, -2, -21, 1, 7, 45,
-<a name="l02990"></a>02990 25, -69, 48, 82, 101, -128, 121, 109, -2, 30, 117, 69, 95, 71, 73, 97, 35, 35, 1, 77, -2, -74, -110, 102, -114,
-<a name="l02991"></a>02991 -126, 81, -83, -83, 99, 99, -104, 124, -103, -120, -37, 83, 114, -114, 66, -124, -61, -72, -127, -47, -108, -2, -79, 88, 116,
-<a name="l02992"></a>02992 40, -64, 124, -122, 91, -113, 70, 3, -123, 69, 104, 63, 75, 95, 94, 68, 34, 75, 42, -3, 53, 1, -103, 87, -107,
-<a name="l02993"></a>02993 73, 89, -64, 101, 0, 1, 0, 90, 3, -77, 1, 39, 5, -70, 0, 5, 0, 38, 64, 21, 0, 5, 3, 1, 5,
-<a name="l02994"></a>02994 -18, 2, 0, 3, -127, 32, 1, -112, 1, 2, 1, 106, 6, 113, -89, 24, 43, 16, -10, 93, -19, 0, 63, -19, 1,
-<a name="l02995"></a>02995 17, 18, 57, 57, 49, 48, 19, 3, 53, 51, 21, 3, -120, 46, -51, 48, 3, -77, 1, 18, -11, -11, -2, -18, 0,
-<a name="l02996"></a>02996 1, 0, 124, -2, 81, 2, 96, 5, -45, 0, 16, 0, 61, 64, 10, 39, 15, 1, 0, 16, 18, 7, 8, 16, 16,
-<a name="l02997"></a>02997 -72, 1, 51, -77, 0, -97, 14, 8, -72, 1, 51, 64, 17, 7, -97, 14, 94, 0, 3, 16, 3, 32, 3, 3, 3,
-<a name="l02998"></a>02998 -84, 17, -99, -116, 24, 43, 16, -10, 93, -3, -10, -19, 16, -10, -19, 0, 63, 60, 63, 60, 49, 48, 1, 93, 1,
-<a name="l02999"></a>02999 38, 2, 17, 52, 55, 54, 55, 51, 6, 7, 6, 7, 6, 21, 16, 1, 1, -33, -107, -50, 77, 90, -68, -127, 121,
-<a name="l03000"></a>03000 39, 61, 35, 43, 1, 43, -2, 81, -68, 1, -8, 1, 14, -18, -38, -3, -5, -48, 89, -118, -106, -69, -67, -2, 31,
-<a name="l03001"></a>03001 -2, 32, 0, 1, 0, 124, -2, 81, 2, 96, 5, -45, 0, 16, 0, 101, 64, 12, 40, 2, 40, 16, 2, 9, 10,
-<a name="l03002"></a>03002 16, 1, 0, 18, 9, -72, 1, 51, -77, 10, -97, 3, 1, -72, 1, 51, -76, 0, -97, 3, 94, 14, -72, -1, -16,
-<a name="l03003"></a>03003 -76, 16, 16, 2, 85, 14, -72, -1, -8, -76, 15, 15, 2, 85, 14, -72, -1, -28, -76, 13, 13, 2, 85, 14, -72,
-<a name="l03004"></a>03004 -1, -20, 64, 15, 10, 10, 2, 85, 15, 14, 31, 14, 2, 14, -84, 18, -99, -116, 24, 43, 16, -10, 93, 43, 43,
-<a name="l03005"></a>03005 43, 43, -3, -10, -19, 16, -10, -19, 0, 63, 60, 63, 60, 49, 48, 1, 93, 19, 35, 0, 17, 52, 39, 38, 39,
-<a name="l03006"></a>03006 38, 39, 51, 22, 23, 22, 21, 16, 2, -3, -127, 1, 43, 43, 34, 61, 39, 122, -127, -68, 90, 77, -49, -2, 81,
-<a name="l03007"></a>03007 1, -32, 1, -31, -68, -71, -106, -118, 90, -46, -5, -3, -38, -18, -2, -14, -2, 8, 0, 1, 0, 64, 3, 99, 2,
-<a name="l03008"></a>03008 -43, 5, -45, 0, 24, 0, -122, 64, 74, 11, 1, 11, 10, 27, 1, 27, 10, 4, 10, 9, 12, 14, 15, 16, 17,
-<a name="l03009"></a>03009 7, 6, 11, 1, 2, 24, 22, 21, 20, 19, 7, 0, 4, 3, 8, 23, 18, 13, 7, 7, 6, 5, 24, 23, 22,
-<a name="l03010"></a>03010 21, 19, 18, 17, 16, 15, 13, 12, 11, 20, 4, 7, 3, 8, 1, 10, 6, 5, 11, 0, 0, 16, 32, 20, 1,
-<a name="l03011"></a>03011 20, -65, 6, 5, 0, 11, -91, 6, -72, 1, -107, 64, 13, 5, -91, 0, 64, 17, 19, 52, 0, 25, 25, 112, -116,
-<a name="l03012"></a>03012 24, 43, 78, 16, -12, 43, 77, -12, -3, -28, 0, 63, 60, -3, 93, 60, 57, 47, 60, 18, 23, 57, 18, 23, 57,
-<a name="l03013"></a>03013 1, 17, 18, 23, 57, 18, 23, 57, 17, 18, 23, 57, 49, 48, 0, 93, 19, 55, 22, 23, 38, 39, 51, 6, 7,
-<a name="l03014"></a>03014 54, 55, 23, 6, 7, 22, 23, 7, 38, 39, 6, 7, 39, 54, 55, 38, 64, 46, -97, 72, 19, 1, -111, 3, 20,
-<a name="l03015"></a>03015 103, -123, 46, 127, 122, 61, 111, 120, 58, 79, 74, 56, 118, 116, 50, -127, 4, -83, -114, 56, 41, -75, 68, 99, -107,
-<a name="l03016"></a>03016 52, 44, -114, 42, 14, 53, -120, 85, 79, -120, -115, 74, 85, -113, 46, 25, 0, 0, 1, 0, 114, 0, -19, 4, 58,
-<a name="l03017"></a>03017 4, -74, 0, 11, 0, 56, 64, 31, 0, 110, 9, 2, -7, 8, 3, 110, 5, 7, 6, 9, 110, 10, 4, 10, -7,
-<a name="l03018"></a>03018 5, 1, 110, 63, 2, 79, 2, 2, 2, 25, 12, 87, 90, 24, 43, 78, 16, -12, 93, 77, -12, 60, -19, 60, 16,
-<a name="l03019"></a>03019 -28, 60, 60, 0, 47, -12, 60, -3, 60, -12, 49, 48, 37, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 2,
-<a name="l03020"></a>03020 1, -2, 113, 1, -113, -86, 1, -113, -2, 113, -19, 1, -110, -88, 1, -113, -2, 113, -88, -2, 110, 0, 1, 0, -86,
-<a name="l03021"></a>03021 -2, -34, 1, -125, 0, -51, 0, 10, 0, 78, -75, 10, 3, 0, 7, -85, 6, -72, 1, 80, 64, 38, 1, 3, 60,
-<a name="l03022"></a>03022 2, 2, 1, 10, 1, 60, 0, 10, 2, 3, 1, 3, 60, 0, 6, 56, 7, 58, 79, 0, 95, 0, 111, 0, 127,
-<a name="l03023"></a>03023 0, -96, 0, 5, 0, -96, 11, -95, -104, 24, 43, 16, -12, 93, -12, -28, 16, -19, 60, 16, 60, 0, 63, -19, 60,
-<a name="l03024"></a>03024 16, 60, 16, -19, 16, -3, -19, 1, 17, 18, 57, 49, 48, 51, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, -74,
-<a name="l03025"></a>03025 -51, 80, 87, 50, 57, 54, 3, -51, -51, 113, -117, 38, 77, 25, 97, 91, 0, 1, 0, 65, 1, -72, 2, 106, 2,
-<a name="l03026"></a>03026 109, 0, 3, 0, 44, 64, 25, 112, 2, 112, 3, 2, 77, 1, 77, 2, 2, 1, 35, 0, 2, 26, 5, 112, 0,
-<a name="l03027"></a>03027 1, 0, 25, 4, 112, -115, 24, 43, 78, 16, -28, 93, 16, -26, 0, 47, 77, -19, 49, 48, 0, 113, 1, 93, 19,
-<a name="l03028"></a>03028 53, 33, 21, 65, 2, 41, 1, -72, -75, -75, 0, 0, 1, 0, -70, 0, 0, 1, -121, 0, -51, 0, 3, 0, 37,
-<a name="l03029"></a>03029 64, 24, 2, 60, 0, 10, 2, 60, 95, 0, 111, 0, 127, 0, -81, 0, 4, -96, 0, 1, 0, -96, 4, -95, -104,
-<a name="l03030"></a>03030 24, 43, 16, -10, 93, 93, -19, 0, 63, -19, 49, 48, 51, 53, 51, 21, -70, -51, -51, -51, 0, 0, 1, 0, 0,
-<a name="l03031"></a>03031 -1, -25, 2, 57, 5, -45, 0, 3, 0, 83, -71, 0, 3, -1, -34, -78, 20, 57, 2, -72, -1, -34, 64, 32, 20,
-<a name="l03032"></a>03032 57, -105, 3, 1, 2, 3, -97, 3, -81, 3, 2, 3, 118, 0, 1, 20, 0, 0, 1, 2, 1, 0, 3, 0, 10,
-<a name="l03033"></a>03033 3, -24, 0, 2, -24, 1, -72, 1, -87, -75, 0, 0, 4, -77, 122, 24, 43, 16, 60, 16, -12, -19, 16, -19, 0,
-<a name="l03034"></a>03034 63, 60, 63, 60, -121, 5, 46, 43, 93, 125, 16, -60, 49, 48, 1, 93, 43, 43, 21, 1, 51, 1, 1, -87, -112,
-<a name="l03035"></a>03035 -2, 88, 25, 5, -20, -6, 20, 0, 0, 2, 0, 85, -1, -25, 4, 17, 5, -64, 0, 16, 0, 29, 1, 85, -79,
-<a name="l03036"></a>03036 2, 2, 67, 84, 88, 64, 10, 26, 30, 4, 5, 20, 30, 13, 13, 23, 9, -72, -1, -24, -76, 15, 15, 2, 85,
-<a name="l03037"></a>03037 9, -72, -1, -24, 64, 25, 13, 13, 2, 85, 9, 17, 0, 12, 15, 15, 2, 85, 0, 22, 12, 12, 2, 85, 0,
-<a name="l03038"></a>03038 12, 13, 13, 2, 85, 0, 47, 43, 43, 43, -51, 47, 43, 43, -51, 0, 63, -19, 63, -19, 49, 48, 27, -79, 6,
-<a name="l03039"></a>03039 2, 67, 84, 88, 64, 10, 26, 30, 4, 5, 20, 30, 13, 13, 23, 9, -72, -1, -12, -76, 15, 15, 6, 85, 9,
-<a name="l03040"></a>03040 -72, -1, -26, -76, 13, 13, 6, 85, 9, -72, -1, -18, 64, 25, 11, 11, 6, 85, 9, 17, 0, 16, 13, 13, 6,
-<a name="l03041"></a>03041 85, 0, 16, 12, 12, 6, 85, 0, 16, 11, 11, 6, 85, 0, 47, 43, 43, 43, -51, 47, 43, 43, 43, -51, 0,
-<a name="l03042"></a>03042 63, -19, 63, -19, 49, 48, 27, -76, 6, 32, 25, 16, 28, -72, -1, -16, -78, 2, 32, 11, -66, -1, -32, 0, 22,
-<a name="l03043"></a>03043 -1, -32, 0, 18, -1, -32, 0, 15, -1, -32, 64, 98, 4, 6, -121, 2, -120, 11, -120, 15, -55, 14, 5, 9, 7,
-<a name="l03044"></a>03044 11, 24, 2, 69, 19, 76, 21, 74, 25, 67, 27, 84, 19, 92, 21, 92, 25, 82, 27, 107, 7, 107, 11, 99, 19,
-<a name="l03045"></a>03045 108, 21, 107, 25, 96, 27, 121, 2, 119, 6, 118, 11, 122, 15, -121, 6, -104, 7, -106, 16, -55, 24, -38, 2, -42,
-<a name="l03046"></a>03046 6, -42, 11, -37, 15, 26, 26, 30, 4, 5, 20, 30, 13, 13, 23, 115, 9, 64, 33, 35, 52, 48, 9, 1, 0,
-<a name="l03047"></a>03047 9, 16, 9, 2, 9, -112, 31, 17, 115, 0, -72, -1, -64, 64, 14, 33, 35, 52, 32, 0, 64, 0, 2, 0, -112,
-<a name="l03048"></a>03048 30, -57, -117, 24, 43, 16, -10, 93, 43, -19, 16, -10, 93, 113, 43, -19, 0, 63, -19, 63, -19, 49, 48, 1, 93,
-<a name="l03049"></a>03049 113, 0, 93, 0, 56, 56, 56, 56, 56, 1, 56, 56, 56, 89, 89, 19, 16, 18, 54, 51, 50, 22, 22, 18, 21,
-<a name="l03050"></a>03050 16, 2, 6, 35, 34, 39, 38, 19, 16, 22, 51, 50, 54, 17, 16, 38, 35, 34, 7, 6, 85, 107, -45, -96, 118,
-<a name="l03051"></a>03051 -78, 116, 66, 106, -45, -95, -44, 121, -111, -71, -87, 124, 124, -87, -87, 126, 124, 74, 93, 2, -45, 1, 4, 1, 61,
-<a name="l03052"></a>03052 -84, 95, -77, -2, -1, -38, -2, -2, -2, -61, -83, -104, -73, 1, -99, -2, -105, -17, -16, 1, 104, 1, 106, -18, 105,
-<a name="l03053"></a>03053 -122, 0, 0, 1, 0, -33, 0, 0, 2, -5, 5, -64, 0, 10, 0, -81, 64, 32, 3, 64, 13, 17, 52, 107, 4,
-<a name="l03054"></a>03054 127, 2, -113, 2, -103, 8, 4, -84, 4, 1, 9, 0, 6, 5, 2, 3, 9, 5, 1, 12, 2, 1, -54, 10, 0,
-<a name="l03055"></a>03055 -72, -1, -64, 64, 10, 33, 35, 52, 48, 0, 1, 32, 0, 1, 0, -72, -1, -32, -76, 16, 16, 2, 85, 0, -72,
-<a name="l03056"></a>03056 -1, -22, 64, 17, 15, 15, 2, 85, 0, 28, 12, 12, 2, 85, 0, 14, 13, 13, 2, 85, 0, -72, -1, -16, 64,
-<a name="l03057"></a>03057 25, 15, 15, 6, 85, 0, 16, 12, 12, 6, 85, 0, 16, 13, 13, 6, 85, 0, 26, 12, 5, 64, 13, 15, 52,
-<a name="l03058"></a>03058 5, -72, -1, -64, 64, 14, 33, 35, 52, 48, 5, 1, 32, 5, 64, 5, 2, 5, 25, 11, -70, 1, 60, 1, -123,
-<a name="l03059"></a>03059 0, 24, 43, 78, 16, -28, 93, 113, 43, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 93, 113, 43, 60, 77, -3,
-<a name="l03060"></a>03060 60, 0, 63, 63, 23, 57, 1, 17, 57, 49, 48, 1, 93, 0, 93, 43, 33, 35, 17, 6, 6, 7, 53, 54, 54,
-<a name="l03061"></a>03061 55, 51, 2, -5, -76, 65, -45, 84, -105, -30, 47, 116, 4, 123, 62, 124, 31, -82, 71, -54, 95, 0, 0, 1, 0,
-<a name="l03062"></a>03062 60, 0, 0, 4, 7, 5, -64, 0, 30, 1, -57, -79, 6, 2, 67, 84, 88, 64, 9, 17, 16, 13, 24, 19, 19,
-<a name="l03063"></a>03063 6, 85, 13, -72, -1, -12, -76, 17, 17, 6, 85, 13, -72, -1, -18, 64, 9, 16, 16, 6, 85, 13, 30, 20, 5,
-<a name="l03064"></a>03064 30, -72, -1, -24, 64, 23, 19, 19, 6, 85, 30, 30, 17, 17, 6, 85, 30, 28, 14, 16, 6, 85, 30, 12, 13,
-<a name="l03065"></a>03065 13, 6, 85, 30, -72, 2, -69, 64, 12, 2, 10, 23, 23, 32, 31, 16, 17, 2, 2, 32, 31, 17, 18, 57, 47,
-<a name="l03066"></a>03066 -44, -51, 17, 18, 57, 47, -51, 0, 47, -19, 43, 43, 43, 43, 63, -19, 43, 43, 43, -60, 50, 49, 48, 27, -79,
-<a name="l03067"></a>03067 2, 2, 67, 84, 88, 64, 9, 17, 16, 13, 12, 18, 18, 2, 85, 13, -72, -1, -12, 64, 9, 15, 17, 2, 85,
-<a name="l03068"></a>03068 13, 30, 20, 5, 30, -72, -1, -32, 64, 11, 18, 19, 2, 85, 30, 20, 15, 17, 2, 85, 30, -72, 2, -69, -78,
-<a name="l03069"></a>03069 2, 10, 23, -72, -1, -24, -76, 11, 11, 2, 85, 23, -72, -1, -20, 64, 14, 13, 13, 2, 85, 23, 23, 32, 31,
-<a name="l03070"></a>03070 16, 17, 2, 2, 32, 31, 17, 18, 57, 47, -44, -51, 17, 18, 57, 47, 43, 43, -51, 0, 47, -19, 43, 43, 63,
-<a name="l03071"></a>03071 -19, 43, 43, -60, 50, 49, 48, 27, 64, 54, 59, 5, 59, 6, -69, 5, -65, 6, -69, 7, -57, 8, -55, 28, 7,
-<a name="l03072"></a>03072 73, 12, 89, 12, 84, 14, 107, 12, 100, 14, 122, 18, 122, 19, -119, 18, -68, 18, -27, 26, -27, 27, -16, 26, 12,
-<a name="l03073"></a>03073 -65, 11, -73, 19, 2, 27, 16, 28, 16, 29, 16, 30, 16, 6, -66, -1, -16, 0, 7, -1, -32, 0, 8, -1, -16,
-<a name="l03074"></a>03074 0, 9, -1, -16, 64, 26, 30, 10, 16, 8, 6, 6, -54, 28, 26, 20, 28, 28, 26, 8, 28, 26, 3, 1, 2,
-<a name="l03075"></a>03075 8, 26, 28, 3, 13, 30, 16, -72, 2, -92, -77, 79, 17, 1, 17, -72, 1, 24, -75, 13, 30, 20, 5, 0, 30,
-<a name="l03076"></a>03076 -72, 2, -69, 64, 15, 1, 2, 12, 10, 115, 23, -45, 0, 0, 1, 64, 33, 35, 52, 1, -69, 2, -127, 0, 32,
-<a name="l03077"></a>03077 0, 16, 1, 56, 64, 12, 17, -75, 63, 2, 95, 2, 111, 2, 127, 2, 4, 2, -70, 2, 36, 0, 31, 1, -113,
-<a name="l03078"></a>03078 -79, -117, 24, 43, 16, -10, 93, -12, -19, 16, -10, 43, 60, 16, -12, -19, 0, 63, 60, -3, 60, 63, -19, -3, 93,
-<a name="l03079"></a>03079 -28, 17, 18, 23, 57, 1, 17, 18, 23, 57, -121, 14, 46, 43, 14, 125, 16, -60, 1, 17, 18, 57, 49, 48, 0,
-<a name="l03080"></a>03080 56, 56, 56, 56, 1, 56, 56, 56, 56, 0, 93, 1, 93, 114, 89, 89, 37, 21, 33, 38, 55, 54, 54, 55, 54,
-<a name="l03081"></a>03081 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 6, 6, 7, 6, 6, 7, 4, 7, -4,
-<a name="l03082"></a>03082 55, 2, 23, 37, -93, -102, -17, -88, -103, 123, -126, -100, 1, -71, 19, -8, -47, -45, -10, 72, -89, -62, -94, 92, 30,
-<a name="l03083"></a>03083 -83, -83, 65, 60, 99, -64, 126, -60, -27, 102, 107, -109, -100, -118, 19, -49, -39, -22, -83, 88, -86, -68, -92, -120, 97,
-<a name="l03084"></a>03084 49, 0, 1, 0, 86, -1, -26, 4, 22, 5, -64, 0, 43, 1, 89, -79, 2, 2, 67, 84, 88, 64, 11, 25, 24,
-<a name="l03085"></a>03085 64, 13, 13, 2, 85, 24, 28, 0, 1, -72, -1, -64, 64, 43, 12, 13, 2, 85, 1, 41, 35, 10, 13, 15, 12,
-<a name="l03086"></a>03086 15, 30, 10, 10, 41, 21, 30, 28, 4, 30, 41, 28, 5, 41, 13, 35, 13, 12, 24, 25, 1, 0, 18, 32, 16,
-<a name="l03087"></a>03087 12, 12, 2, 85, 32, 7, 38, -72, -1, -24, -76, 12, 13, 2, 85, 38, 47, 43, -51, 47, 43, -51, 47, -51, 47,
-<a name="l03088"></a>03088 -51, 47, 0, 18, 57, 63, 63, 16, -19, 16, -19, 18, 57, 47, -19, -58, 16, -58, 18, 57, 16, -60, 43, 50, 16,
-<a name="l03089"></a>03089 -60, 43, 50, 49, 48, 27, 64, 40, 5, 13, 22, 13, 69, 13, -122, 13, 4, 69, 17, 87, 17, 118, 27, 3, 82,
-<a name="l03090"></a>03090 22, 108, 16, 106, 20, 100, 22, 117, 13, 121, 20, -122, 13, -118, 20, -119, 27, -91, 13, 10, 5, 32, 3, -72, -1,
-<a name="l03091"></a>03091 -32, 64, 11, 11, 12, 13, 14, 4, 7, 1, 35, 13, 12, 1, -72, 2, -92, -77, 64, 0, 1, 0, -69, 1, 24,
-<a name="l03092"></a>03092 0, 41, 0, 13, 1, 53, -76, 12, 12, 21, 4, 24, -70, 2, -92, 0, 25, 2, 104, 64, 39, 21, 30, 28, 5,
-<a name="l03093"></a>03093 4, 30, 41, 13, 18, 115, 95, 32, 111, 32, 2, 32, 24, 13, 13, 6, 85, 32, -128, 7, 115, 38, 64, 33, 35,
-<a name="l03094"></a>03094 52, 48, 38, 1, 0, 38, 16, 38, 2, 38, -72, -1, -12, -73, 13, 13, 6, 85, 38, -112, 45, 24, -72, 1, 56,
-<a name="l03095"></a>03095 -78, 25, -45, 1, -70, 1, 56, 0, 0, -1, -64, 64, 11, 33, 35, 52, 32, 0, 64, 0, 2, 0, -112, 44, -72,
-<a name="l03096"></a>03096 1, -110, -79, -117, 24, 43, 16, -10, 93, 43, -19, -12, -19, 16, -10, 43, 93, 113, 43, -19, -12, 43, 93, -19, 0,
-<a name="l03097"></a>03097 63, -19, 63, -19, -3, -28, 17, 18, 57, 47, -19, 16, -3, 93, -28, 17, 18, 57, 1, 17, 18, 23, 57, 49, 48,
-<a name="l03098"></a>03098 1, 56, 56, 1, 93, 0, 93, 1, 113, 89, 19, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 7, 55, 22,
-<a name="l03099"></a>03099 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 22, 21, 20, 6, 7, 22, 22, 21, 20,
-<a name="l03100"></a>03100 0, 35, 34, 38, 86, -76, 31, -107, 107, 127, -81, -94, 125, 51, 76, 20, 18, 11, 115, -72, -122, 106, 105, -116, 20,
-<a name="l03101"></a>03101 -76, 33, -22, -82, 120, -54, 107, 102, 100, -126, -112, -2, -24, -42, -63, -1, 1, -125, 24, -103, -121, -80, -126, 124, -95,
-<a name="l03102"></a>03102 20, -98, 2, 120, 125, 99, -126, -124, -124, 32, -75, -57, 103, -78, 100, 95, -100, 46, 30, -67, -114, -64, -2, -11, -26,
-<a name="l03103"></a>03103 0, 2, 0, 26, 0, 0, 4, 16, 5, -70, 0, 10, 0, 13, 1, 38, 64, 54, 18, 88, 12, 104, 12, -102, 12,
-<a name="l03104"></a>03104 -87, 12, -55, 12, 5, 76, 3, 76, 13, -108, 4, 3, 18, 1, 2, 8, 0, 12, 6, 3, 7, 5, 10, 11, 3,
-<a name="l03105"></a>03105 7, 0, 12, 12, 13, 13, -54, 3, 4, 20, 3, 3, 4, 3, 13, 0, 2, 12, 13, 4, 7, 3, -69, 2, -69,
-<a name="l03106"></a>03106 0, 8, 0, 2, 1, -96, 64, 10, 0, 4, 4, 0, 12, 12, 0, -54, 10, 4, -72, 2, 102, -73, 5, 5, 10,
-<a name="l03107"></a>03107 64, 29, 31, 52, 10, -72, -1, -32, -76, 16, 16, 2, 85, 10, -72, -1, -26, -76, 13, 13, 2, 85, 10, -72, -1,
-<a name="l03108"></a>03108 -18, -76, 13, 13, 6, 85, 10, -72, 1, 55, 64, 13, 7, 64, 34, 35, 52, 7, -128, 33, 53, 7, -112, 15, 2,
-<a name="l03109"></a>03109 -72, -1, -64, 64, 11, 13, 20, 52, 0, 2, 16, 2, 32, 2, 3, 2, -72, -1, -32, -76, 13, 13, 2, 85, 2,
-<a name="l03110"></a>03110 -72, -1, -28, -74, 13, 13, 6, 85, 2, -75, 14, -72, 1, -116, -79, -117, 24, 43, 16, -20, 43, 43, 93, 43, 16,
-<a name="l03111"></a>03111 -10, 43, 43, -12, 43, 43, 43, 43, 60, 16, -26, 16, -3, 60, 0, 63, 63, 16, -12, 60, -10, 60, 17, 57, 57,
-<a name="l03112"></a>03112 1, 17, 18, 57, 57, -121, 46, 43, 4, 125, 16, -60, 15, 15, 15, 49, 48, 1, 67, 92, 88, -71, 0, 13, -1,
-<a name="l03113"></a>03113 -34, -78, 18, 57, 13, -72, -1, -44, 64, 11, 51, 57, 3, 34, 45, 57, 3, 4, 29, 29, 60, 43, 43, 43, 43,
-<a name="l03114"></a>03114 89, 93, 0, 93, 67, 92, 88, 64, 20, 12, 64, 11, 57, 12, -128, 80, 57, 12, 64, 38, 57, 12, 34, 28, 57,
-<a name="l03115"></a>03115 12, 64, 45, 57, 43, 43, 43, 43, 43, 89, 33, 17, 33, 53, 1, 51, 17, 51, 21, 35, 17, 3, 17, 1, 2,
-<a name="l03116"></a>03116 -106, -3, -124, 2, -99, -109, -58, -58, -76, -2, 53, 1, 95, -91, 3, -74, -4, 74, -91, -2, -95, 2, 4, 2, -107,
-<a name="l03117"></a>03117 -3, 107, 0, 1, 0, 85, -1, -25, 4, 33, 5, -90, 0, 30, 1, 86, -79, 2, 2, 67, 84, 88, -71, 0, 1,
-<a name="l03118"></a>03118 -1, -64, 64, 13, 13, 13, 2, 85, 1, 28, 14, 10, 30, 21, 21, 28, 18, -72, 2, -69, 64, 11, 15, 4, 4,
-<a name="l03119"></a>03119 30, 28, 13, 14, 1, 0, 7, 24, -72, -1, -22, -76, 15, 15, 2, 85, 24, -72, -1, -22, -76, 13, 13, 2, 85,
-<a name="l03120"></a>03120 24, 47, 43, 43, -51, 47, -51, 47, 0, 63, -19, 63, -19, 18, 57, 47, -3, -60, 16, -60, 43, 49, 48, 27, 64,
-<a name="l03121"></a>03121 41, 18, 12, 13, 13, 6, 85, 15, 12, 13, 13, 6, 85, 75, 26, 121, 29, -118, 29, -106, 19, -89, 19, -61, 12,
-<a name="l03122"></a>03122 -42, 12, -37, 27, 8, 9, 19, 24, 14, 42, 26, 3, 9, 48, 5, 48, 11, -70, -1, -32, 0, 3, -1, -32, 64,
-<a name="l03123"></a>03123 16, 19, 10, 21, 18, 19, 19, -54, 14, 15, 20, 14, 19, 20, 14, 15, 13, -72, 2, -92, 64, 19, 14, 10, 30,
-<a name="l03124"></a>03124 21, 64, 14, -96, 14, 2, 14, 14, 15, 64, 21, 1, 21, 21, 28, 18, -72, 2, -69, -73, 15, 4, 1, -45, 64,
-<a name="l03125"></a>03125 0, 1, 0, -72, 1, 24, 64, 32, 4, 30, 28, 13, 17, 95, 16, 111, 16, 127, 16, -113, 16, 4, 16, -128, 7,
-<a name="l03126"></a>03126 115, 24, 64, 33, 35, 52, 48, 24, 1, 0, 24, 16, 24, 2, 24, -72, -1, -12, -73, 13, 13, 6, 85, 24, -112,
-<a name="l03127"></a>03127 32, 18, -68, 1, 53, 0, 15, 1, -107, 0, 13, 1, 56, -78, 14, -75, 1, -70, 1, 56, 0, 0, -1, -64, 64,
-<a name="l03128"></a>03128 11, 33, 35, 52, 32, 0, 64, 0, 2, 0, -112, 31, -72, 1, -110, -79, -117, 24, 43, 16, -10, 93, 43, -19, -12,
-<a name="l03129"></a>03129 -19, -12, -19, 16, -10, 43, 93, 113, 43, -19, -12, 93, 60, 0, 63, -19, -3, 93, -28, 63, -19, 18, 57, 47, 93,
-<a name="l03130"></a>03130 17, 57, 47, 93, 16, -19, 16, -28, -121, 8, 46, 43, 5, 125, 16, -60, 0, 17, 18, 57, 49, 48, 1, 56, 56,
-<a name="l03131"></a>03131 56, 56, 1, 113, 93, 43, 43, 89, 19, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 19, 33,
-<a name="l03132"></a>03132 21, 33, 3, 54, 51, 50, 0, 21, 20, 7, 6, 35, 34, 38, 85, -67, 21, -103, 108, -126, -76, -83, -116, 87, -116,
-<a name="l03133"></a>03133 40, -87, -114, 2, -39, -3, -73, 79, -124, -111, -64, 1, 8, 116, -115, -12, -56, -3, 1, -128, 16, -118, -117, -60, -94,
-<a name="l03134"></a>03134 -102, -78, 79, 63, 22, 2, -15, -84, -2, 118, 92, -2, -10, -47, -57, -111, -78, -32, 0, 0, 2, 0, 77, -1, -25,
-<a name="l03135"></a>03135 4, 21, 5, -64, 0, 29, 0, 42, 1, 79, -79, 2, 2, 67, 84, 88, 64, 31, 15, 1, 31, 1, 95, 1, 3,
-<a name="l03136"></a>03136 1, 27, 40, 30, 64, 13, 1, 13, 13, 20, 5, 30, 27, 5, 34, 30, 20, 13, 10, 30, 1, 0, 37, 16, -72,
-<a name="l03137"></a>03137 -1, -12, 64, 25, 13, 13, 2, 85, 16, 30, 23, 16, 15, 15, 2, 85, 23, 16, 12, 12, 2, 85, 23, 12, 13,
-<a name="l03138"></a>03138 13, 2, 85, 23, 47, 43, 43, 43, -51, 47, 43, -51, -44, -51, 16, -59, 0, 63, -19, 63, -19, 18, 57, 47, 93,
-<a name="l03139"></a>03139 -19, 16, -60, 93, 49, 48, 27, 64, 45, 107, 25, 1, 68, 7, 64, 21, 68, 25, 68, 32, 90, 18, 84, 32, 107,
-<a name="l03140"></a>03140 3, 100, 7, 100, 8, 106, 18, 100, 32, 116, 8, 117, 28, -123, 8, -122, 28, -42, 8, -44, 22, 17, 7, 32, 13,
-<a name="l03141"></a>03141 13, 6, 85, 39, -72, -1, -32, -76, 13, 13, 6, 85, 35, -72, -1, -32, 64, 11, 13, 13, 6, 85, 33, 32, 13,
-<a name="l03142"></a>03142 13, 6, 85, 7, -72, -1, -32, -76, 39, 32, 35, 32, 33, -72, -1, -32, 64, 17, 40, 30, 64, 13, 80, 13, 2,
-<a name="l03143"></a>03143 13, 13, 20, 27, 1, -45, 95, 0, 1, 0, -72, 2, 104, 64, 9, 5, 30, 27, 5, 34, 30, 20, 13, 1, -72,
-<a name="l03144"></a>03144 1, 56, 64, 18, 0, -75, 37, 115, 16, 64, 33, 35, 52, 48, 16, 1, 0, 16, 16, 16, 2, 16, -72, -1, -16,
-<a name="l03145"></a>03145 -73, 12, 12, 6, 85, 16, -112, 44, 10, -70, 1, 56, 0, 30, 1, 57, 64, 22, 63, 23, 95, 23, 111, 23, 127,
-<a name="l03146"></a>03146 23, 4, 23, 22, 12, 12, 6, 85, 23, 22, 13, 13, 6, 85, 23, -72, 2, 36, -77, 43, -57, -117, 24, 43, 16,
-<a name="l03147"></a>03147 -10, 43, 43, 93, -19, -19, 16, -10, 43, 93, 113, 43, -19, -12, -19, 0, 63, -19, 63, -19, -3, 93, -28, 17, 18,
-<a name="l03148"></a>03148 57, 47, 93, -19, 49, 48, 1, 56, 56, 56, 56, 43, 43, 43, 43, 1, 93, 0, 93, 89, 1, 7, 38, 39, 38,
-<a name="l03149"></a>03149 35, 34, 7, 6, 6, 7, 54, 54, 51, 50, 18, 21, 20, 6, 6, 35, 34, 0, 17, 16, 55, 54, 51, 50, 22,
-<a name="l03150"></a>03150 1, 20, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, -5, -77, 24, 44, 73, 107, 86, 65, 85, 98, 2,
-<a name="l03151"></a>03151 65, -68, 103, -76, -3, 119, -48, -124, -31, -2, -28, -99, -119, -24, -83, -35, -3, 55, 79, -114, 78, 114, -92, -94, 123,
-<a name="l03152"></a>03152 122, -86, 4, 83, 14, 106, 48, 77, 48, 62, -18, -36, 99, 96, -2, -9, -46, -118, -19, 126, 1, 75, 1, 124, 1,
-<a name="l03153"></a>03153 -87, -63, -88, -62, -4, -35, 93, -86, 89, -72, -98, -104, -81, -81, 0, 1, 0, 97, 0, 0, 4, 22, 5, -89, 0,
-<a name="l03154"></a>03154 13, 0, 112, 64, 14, -60, 13, 1, 4, 13, 1, 4, 2, 8, 4, 9, 3, 13, 0, -72, 2, -69, 64, 48, 2,
-<a name="l03155"></a>03155 1, 4, 9, 12, 13, 115, 3, 3, 2, 64, 33, 35, 52, 79, 2, 95, 2, 111, 2, 3, 2, 26, 15, 8, 115,
-<a name="l03156"></a>03156 9, -21, 0, 79, 1, 95, 1, 95, 2, 3, 63, 1, 95, 1, 111, 1, 127, 1, 4, 1, 25, 14, -72, 1, -110,
-<a name="l03157"></a>03157 -79, -117, 24, 43, 78, 16, -12, 93, 113, 60, 77, -12, -19, 78, 16, -10, 113, 43, 60, 77, 16, -19, 0, 63, 63,
-<a name="l03158"></a>03158 60, -3, 60, 57, 17, 57, 1, 17, 18, 57, 49, 48, 1, 113, 93, 19, 53, 33, 21, 6, 0, 3, 6, 7, 35,
-<a name="l03159"></a>03159 54, 18, 18, 55, 97, 3, -75, -116, -2, -19, 75, 54, 15, -71, 3, -126, -13, -119, 4, -6, -83, -116, -107, -2, 18,
-<a name="l03160"></a>03160 -2, -5, -72, -37, -83, 1, -22, 1, -57, -100, 0, 0, 3, 0, 83, -1, -25, 4, 25, 5, -64, 0, 23, 0, 35,
-<a name="l03161"></a>03161 0, 48, 2, 0, -79, 2, 2, 67, 84, 88, -76, 12, 0, 27, 30, 46, -72, -1, -64, 64, 23, 19, 19, 2, 85,
-<a name="l03162"></a>03162 46, 46, 18, 33, 30, 6, 5, 40, 30, 18, 13, 30, 9, 12, 12, 12, 2, 85, 9, -72, -1, -12, -74, 13, 13,
-<a name="l03163"></a>03163 2, 85, 9, 43, 15, -72, -1, -16, -76, 15, 15, 2, 85, 15, -72, -1, -24, -76, 11, 11, 2, 85, 15, -72, -1,
-<a name="l03164"></a>03164 -24, -74, 13, 13, 2, 85, 15, 24, 3, -72, -1, -16, -76, 16, 16, 2, 85, 3, -72, -1, -16, -76, 15, 15, 2,
-<a name="l03165"></a>03165 85, 3, -72, -1, -12, 64, 25, 13, 13, 2, 85, 3, 36, 21, 12, 11, 11, 2, 85, 21, 12, 12, 12, 2, 85,
-<a name="l03166"></a>03166 21, 12, 13, 13, 2, 85, 21, 47, 43, 43, 43, -51, 47, 43, 43, 43, -51, 47, 43, 43, 43, -51, 47, 43, 43,
-<a name="l03167"></a>03167 -51, 0, 63, -19, 63, -19, 18, 57, 47, 43, -19, 57, 57, 49, 48, 27, -79, 6, 2, 67, 84, 88, -73, 30, 9,
-<a name="l03168"></a>03168 12, 12, 12, 6, 85, 9, -72, -1, -12, -74, 13, 13, 6, 85, 9, 43, 15, -72, -1, -28, -76, 15, 15, 6, 85,
-<a name="l03169"></a>03169 15, -72, -1, -28, -74, 13, 13, 6, 85, 15, 24, 3, -72, -1, -16, -76, 15, 15, 6, 85, 3, -72, -1, -4, 64,
-<a name="l03170"></a>03170 34, 13, 13, 6, 85, 3, 36, 21, 12, 12, 12, 6, 85, 21, 12, 13, 13, 6, 85, 21, 12, 0, 27, 30, 46,
-<a name="l03171"></a>03171 46, 18, 33, 30, 6, 5, 40, 30, 18, 13, 0, 63, -19, 63, -19, 18, 57, 47, -19, 57, 57, 1, 47, 43, 43,
-<a name="l03172"></a>03172 -51, 47, 43, 43, -51, 47, 43, 43, -51, 47, 43, 43, -51, 49, 48, 27, 64, 55, 53, 22, 1, 41, 22, 73, 22,
-<a name="l03173"></a>03173 73, 38, -26, 12, -23, 48, 5, 9, 48, 1, 125, 0, 125, 1, 124, 4, 116, 8, 113, 11, 114, 12, 117, 13, 122,
-<a name="l03174"></a>03174 23, -117, 0, -118, 1, -116, 4, -122, 8, -127, 11, -124, 12, -122, 13, -115, 23, -52, 17, -58, 19, 18, 34, -72, -1,
-<a name="l03175"></a>03175 -32, -78, 28, 32, 26, -72, -1, -32, -78, 32, 32, 47, -72, -1, -32, -78, 45, 32, 38, -72, -1, -32, 64, 30, 41,
-<a name="l03176"></a>03176 32, 12, 0, 30, 24, 0, 12, 27, 30, 46, -96, 46, 1, 46, 18, 33, 30, 6, 5, 40, 30, 18, 13, 30, 115,
-<a name="l03177"></a>03177 -65, 9, 1, 9, -72, 2, 103, 64, 16, 43, 115, 15, 64, 32, 35, 52, 48, 15, 1, 0, 15, 16, 15, 2, 15,
-<a name="l03178"></a>03178 -72, 1, -111, -74, 50, 24, 115, -80, 3, 1, 3, -72, 2, 103, -78, 36, 115, 21, -72, -1, -64, 64, 14, 33, 35,
-<a name="l03179"></a>03179 52, 32, 21, 64, 21, 2, 21, -112, 49, -57, -117, 24, 43, 16, -10, 93, 43, -19, -12, 93, -19, 16, -12, 93, 113,
-<a name="l03180"></a>03180 43, -19, -12, 93, -19, 0, 63, -19, 63, -19, 18, 57, 93, 47, -19, 57, 57, 1, 17, 18, 57, 57, 49, 48, 1,
-<a name="l03181"></a>03181 56, 56, 56, 56, 56, 56, 56, 56, 1, 93, 114, 113, 0, 113, 89, 89, 1, 38, 38, 53, 52, 54, 51, 50, 22,
-<a name="l03182"></a>03182 21, 20, 6, 7, 22, 22, 21, 20, 0, 35, 34, 0, 53, 52, 54, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35,
-<a name="l03183"></a>03183 34, 6, 3, 20, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 106, 112, 108, -26, -65, -64, -22, 107, 109,
-<a name="l03184"></a>03184 -121, -115, -2, -10, -39, -39, -2, -10, -111, 98, -122, 107, 104, -123, -119, 102, 103, -120, 58, 73, -112, 83, -127, -88, -83,
-<a name="l03185"></a>03185 -126, 127, -89, 3, 27, 41, -104, 106, -96, -38, -33, -96, 102, -105, 41, 44, -60, -120, -68, -1, 0, 1, 1, -64, -113,
-<a name="l03186"></a>03186 -63, 1, 84, 104, -124, -125, 95, 99, -121, -124, -4, -1, 77, -112, 79, -90, -128, -126, -86, -88, 0, 0, 2, 0, 85,
-<a name="l03187"></a>03187 -1, -25, 4, 25, 5, -64, 0, 30, 0, 42, 1, -82, -79, 6, 2, 67, 84, 88, -73, 11, 31, 24, 1, 0, 37,
-<a name="l03188"></a>03188 17, 24, -72, -1, -10, -76, 15, 15, 6, 85, 24, -72, -1, -12, -76, 13, 13, 6, 85, 24, -72, -1, -16, 64, 40,
-<a name="l03189"></a>03189 12, 12, 6, 85, 24, 17, 12, 13, 13, 6, 85, 17, 16, 12, 12, 6, 85, 17, 24, 17, 44, 43, 11, 40, 30,
-<a name="l03190"></a>03190 15, 14, 31, 14, 79, 14, 3, 14, 14, 20, 0, 80, 1, 1, 1, -72, -1, -64, 64, 13, 16, 17, 6, 85, 1,
-<a name="l03191"></a>03191 4, 30, 28, 13, 34, 30, 20, 5, 0, 63, -19, 63, -19, -60, 43, 93, 50, 18, 57, 47, 93, -19, 50, 1, 17,
-<a name="l03192"></a>03192 18, 57, 57, 47, 43, 43, 47, 43, 43, 43, 16, -51, -44, -51, 16, -35, -59, 49, 48, 27, -79, 2, 2, 67, 84,
-<a name="l03193"></a>03193 88, -73, 11, 31, 24, 1, 0, 37, 17, 24, -72, -1, -22, -76, 15, 15, 2, 85, 24, -72, -1, -22, 64, 42, 13,
-<a name="l03194"></a>03194 13, 2, 85, 24, 17, 12, 12, 12, 2, 85, 17, 24, 17, 44, 43, 11, 40, 30, 15, 14, 31, 14, 79, 14, 3,
-<a name="l03195"></a>03195 14, 14, 20, 0, 80, 1, 1, 1, 4, 30, 28, 13, 34, 30, 20, 5, 0, 63, -19, 63, -19, -60, 93, 50, 18,
-<a name="l03196"></a>03196 57, 47, 93, -19, 50, 1, 17, 18, 57, 57, 47, 43, 47, 43, 43, 16, -51, -44, -51, 16, -35, -59, 49, 48, 27,
-<a name="l03197"></a>03197 64, 52, 58, 26, 76, 22, 64, 35, 91, 22, 87, 35, 102, 3, 108, 22, 109, 26, 103, 35, 122, 26, 125, 30, -116,
-<a name="l03198"></a>03198 26, -117, 30, -102, 22, -87, 26, -68, 26, -22, 22, -26, 32, -10, 32, 19, 61, 22, -98, 22, -83, 22, 3, 58, 41,
-<a name="l03199"></a>03199 100, 6, 2, 39, -70, -1, -32, 0, 35, -1, -32, 64, 24, 33, 32, 6, 32, 40, 30, 79, 14, 95, 14, 2, 14,
-<a name="l03200"></a>03200 14, 28, 34, 30, 20, 5, 1, -45, 80, 0, 1, 0, -72, 2, 104, -76, 4, 30, 28, 13, 31, -70, 1, 57, 0,
-<a name="l03201"></a>03201 11, 1, 56, 64, 17, 24, 64, 33, 35, 52, 48, 24, 1, 0, 24, 16, 24, 2, 24, -112, 44, 1, -72, 1, 56,
-<a name="l03202"></a>03202 -76, 0, -75, 37, 115, 17, -72, -1, -64, 64, 14, 33, 35, 52, 32, 17, 64, 17, 2, 17, -112, 43, -57, -117, 24,
-<a name="l03203"></a>03203 43, 16, -10, 93, 43, -19, -12, -19, 16, -10, 93, 113, 43, -19, -19, 0, 63, -19, -3, 93, -28, 63, -19, 18, 57,
-<a name="l03204"></a>03204 47, 93, -19, 49, 48, 1, 56, 56, 56, 56, 0, 93, 113, 1, 93, 89, 89, 19, 55, 22, 22, 51, 50, 62, 2,
-<a name="l03205"></a>03205 53, 52, 39, 6, 6, 35, 34, 2, 53, 52, 0, 51, 50, 22, 18, 17, 16, 2, 6, 35, 34, 38, 1, 52, 38,
-<a name="l03206"></a>03206 35, 34, 6, 21, 20, 22, 51, 50, 54, 112, -83, 22, 124, 97, 83, 125, 80, 54, 1, 54, -69, 109, -74, -4, 1,
-<a name="l03207"></a>03207 7, -58, -113, -19, 123, 122, -15, -94, -84, -38, 2, -53, -91, 116, 120, -78, -87, 124, 125, -95, 1, 83, 16, 122, 110,
-<a name="l03208"></a>03208 76, 127, -40, 112, 12, 24, 86, 107, 1, 8, -40, -33, 1, 16, -102, -2, -29, -2, -14, -2, -25, -2, -77, -82, -65,
-<a name="l03209"></a>03209 3, 52, -101, -74, -60, -100, -116, -81, -81, 0, 0, 2, 0, -71, 0, 0, 1, -122, 4, 38, 0, 3, 0, 7, 0,
-<a name="l03210"></a>03210 56, 64, 32, 4, 5, 0, 6, 7, 9, 2, 6, 60, 4, 3, 60, 1, 6, 4, 10, 2, 60, 47, 0, 63, 0,
-<a name="l03211"></a>03211 2, 32, 0, 1, 0, -95, 8, -95, -104, 24, 43, 16, -12, 93, 113, -19, 0, 63, 63, -19, 16, -19, 1, 17, 18,
-<a name="l03212"></a>03212 57, 57, 18, 57, 57, 49, 48, 19, 53, 51, 21, 3, 53, 51, 21, -71, -51, -51, -51, 3, 89, -51, -51, -4, -89,
-<a name="l03213"></a>03213 -51, -51, 0, 2, 0, -86, -2, -34, 1, -125, 4, 38, 0, 3, 0, 14, 0, -123, 64, 47, 115, 11, -125, 11, -109,
-<a name="l03214"></a>03214 11, -93, 11, -16, 11, 5, 0, 11, 1, 38, 10, 55, 10, 70, 10, 86, 10, 101, 10, -75, 10, -30, 10, 7, 11,
-<a name="l03215"></a>03215 10, 14, 7, 4, 3, 60, 1, 7, 60, 6, 6, 5, 14, 4, 11, -85, 10, -72, 1, 80, 64, 35, 5, 60, 4,
-<a name="l03216"></a>03216 1, 6, 4, 10, 2, -127, 0, 0, 5, 6, 7, 60, 4, 10, 56, 11, 58, 5, 47, 4, 63, 4, 2, 32, 4,
-<a name="l03217"></a>03217 1, 4, -95, 15, -95, -104, 24, 43, 16, -12, 93, 113, 60, -12, -28, 16, -3, 60, 16, 60, 16, -19, 0, 63, 63,
-<a name="l03218"></a>03218 16, -3, -3, -19, 16, 60, 16, 60, 16, -19, 16, -19, 1, 17, 18, 57, 0, 16, -55, 49, 48, 1, 113, 0, 114,
-<a name="l03219"></a>03219 113, 19, 53, 51, 21, 3, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, -74, -51, -51, -51, 80, 87, 50, 57, 54,
-<a name="l03220"></a>03220 3, 3, 89, -51, -51, -4, -89, -51, -51, 113, -117, 38, 77, 25, 97, 91, 0, 0, 1, 0, 112, 0, -30, 4, 59,
-<a name="l03221"></a>03221 4, -61, 0, 6, 0, 90, 64, 12, -113, 3, -128, 5, 2, 3, 5, 6, 3, 8, 2, 5, -69, 2, 90, 0, 6,
-<a name="l03222"></a>03222 0, 3, 2, 90, -78, 2, 64, 6, -70, 1, 80, 0, 2, 1, 80, 64, 21, 0, -85, 1, -85, 32, 4, 2, 26,
-<a name="l03223"></a>03223 8, 4, 60, 1, 32, 0, 1, 0, 117, 7, 87, 90, 24, 43, 16, -10, 93, 60, -19, 78, 16, -10, 0, 25, 47,
-<a name="l03224"></a>03224 26, 77, -19, -19, -19, -19, 24, 26, 16, -19, 16, -19, 1, 17, 18, 23, 57, 49, 48, 0, 93, 19, 53, 1, 21,
-<a name="l03225"></a>03225 1, 1, 21, 112, 3, -53, -4, -2, 3, 2, 2, -127, -88, 1, -102, -77, -2, -60, -2, -63, -77, 0, 0, 2, 0,
-<a name="l03226"></a>03226 114, 1, -95, 4, 58, 4, 6, 0, 3, 0, 7, 0, 71, 64, 39, 5, 6, 1, 4, 7, 9, 0, 37, 3, 1,
-<a name="l03227"></a>03227 37, 3, 2, 7, 37, 4, 4, 6, 37, 48, 2, 1, -97, 2, -49, 2, 2, 2, -65, 5, 0, 26, 9, 1, 25,
-<a name="l03228"></a>03228 8, 87, 90, 24, 43, 78, 16, -28, 16, -26, 0, 47, 77, -19, 93, 113, -19, 60, 16, -19, 16, 60, -19, 16, -19,
-<a name="l03229"></a>03229 1, 17, 57, 57, 17, 57, 57, 49, 48, 1, 33, 53, 33, 17, 33, 53, 33, 4, 58, -4, 56, 3, -56, -4, 56,
-<a name="l03230"></a>03230 3, -56, 3, 94, -88, -3, -101, -88, 0, 0, 1, 0, 112, 0, -30, 4, 59, 4, -61, 0, 6, 0, 90, 64, 12,
-<a name="l03231"></a>03231 -128, 2, -113, 4, 2, 4, 2, 1, 3, 7, 5, 2, -69, 2, 90, 0, 1, 0, 4, 2, 90, -78, 5, 64, 1,
-<a name="l03232"></a>03232 -70, 1, 80, 0, 5, 1, 80, 64, 21, 0, -85, 6, -85, 32, 3, 3, 60, 6, 0, 26, 8, 32, 5, 1, 5,
-<a name="l03233"></a>03233 117, 7, 87, 90, 24, 43, 16, -26, 93, 78, 16, -10, 60, 77, -19, 0, 25, 47, 26, -19, -19, -19, -19, 24, 26,
-<a name="l03234"></a>03234 16, -19, 16, -19, 1, 17, 18, 23, 57, 49, 48, 0, 93, 1, 1, 53, 1, 1, 53, 1, 4, 59, -4, 53, 3,
-<a name="l03235"></a>03235 1, -4, -1, 3, -53, 2, -127, -2, 97, -77, 1, 63, 1, 60, -77, -2, 102, 0, 0, 2, 0, 90, 0, 0, 4,
-<a name="l03236"></a>03236 12, 5, -45, 0, 30, 0, 34, 0, -124, 64, 47, -116, 26, -117, 27, 2, 124, 26, 124, 27, 2, 98, 26, 101, 27,
-<a name="l03237"></a>03237 2, 107, 12, 97, 14, 2, 90, 12, 84, 14, 2, 54, 14, 68, 14, 2, 27, 25, 8, 7, 4, 0, 16, 39, 17,
-<a name="l03238"></a>03238 17, 0, 13, 41, 20, 1, 30, 0, -72, 2, -81, 64, 35, 33, 34, 33, 60, 31, 10, 31, 60, 34, 34, 32, 60,
-<a name="l03239"></a>03239 33, 33, 30, 0, 94, 30, 110, 10, 94, 23, 106, 36, 16, 94, 32, 17, 1, 17, 106, 35, 87, 90, 24, 43, 16,
-<a name="l03240"></a>03240 -10, 93, -19, 16, -10, -19, -12, -19, 16, 60, 16, -19, 60, 16, -3, 0, 63, -19, 60, 16, -10, 60, 63, -19, 18,
-<a name="l03241"></a>03241 57, 47, -28, 17, 23, 57, 49, 48, 1, 93, 93, 93, 93, 0, 93, 93, 1, 38, 53, 52, 55, 54, 55, 62, 2,
-<a name="l03242"></a>03242 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 4, 21, 20, 6, 7, 14, 2, 7, 3, 53, 51, 21, 1,
-<a name="l03243"></a>03243 -40, 1, 30, 22, 49, 36, -69, 56, -92, 119, 115, -102, 24, -71, 25, -9, -53, -41, 1, 0, 90, -125, 88, 54, 26,
-<a name="l03244"></a>03244 2, -72, -51, 1, 105, 36, 18, 106, 77, 58, 59, 43, -91, 98, 58, 105, -97, -112, -103, 22, -51, -38, -22, -90, 96,
-<a name="l03245"></a>03245 -94, 116, 78, 74, 96, 108, -2, -105, -51, -51, 0, 2, 0, 111, -2, 81, 7, -43, 5, -43, 0, 71, 0, 87, 0,
-<a name="l03246"></a>03246 -9, 64, 87, 4, 33, 16, 32, 22, 33, 33, 37, 53, 13, 51, 14, 69, 14, 73, 24, 68, 33, 70, 36, 70, 73,
-<a name="l03247"></a>03247 71, 86, 84, 14, 122, 41, 14, 22, 37, 41, 1, 38, 9, 42, 29, 38, 41, 53, 26, 54, 57, 67, 37, 86, 24,
-<a name="l03248"></a>03248 89, 29, 91, 33, 86, 41, 86, 73, 89, 86, 101, 24, 101, 37, 102, 41, 118, 26, 122, 29, 114, 36, -123, 24, -124,
-<a name="l03249"></a>03249 26, -116, 29, -117, 33, -121, 38, 25, 14, 16, 80, 14, 0, 3, 83, -72, 2, -69, 64, 10, 15, 39, 48, 11, 80,
-<a name="l03250"></a>03250 11, 2, 11, 7, 22, -69, 2, 72, 0, 67, 0, 75, 2, -69, -76, 67, 58, 3, 10, 31, -72, 2, -69, -73, 58,
-<a name="l03251"></a>03251 1, 32, 43, 112, 43, 2, 43, -70, 1, 77, 0, 39, 2, -69, -74, 47, 72, 36, 15, 7, 1, 7, -72, 2, -125,
-<a name="l03252"></a>03252 64, 15, 16, 80, 62, 0, 36, 18, -96, 15, 36, 48, 16, 112, 16, 2, 16, -70, 1, -87, 0, 27, 2, -98, -76,
-<a name="l03253"></a>03253 63, 56, 42, 36, 43, -70, 1, 9, 0, 35, 2, -98, 64, 9, 32, 53, 1, 53, 25, 88, 87, -116, 24, 43, 78,
-<a name="l03254"></a>03254 16, -12, 93, 77, -19, -3, -19, -12, -19, -12, 93, -19, -12, -3, -28, 16, -3, 93, -19, 0, 47, -19, -19, 93, 63,
-<a name="l03255"></a>03255 -19, 63, -28, -19, 16, -19, 63, 93, -28, -19, 18, 57, 57, 1, 17, 18, 57, 49, 48, 0, 93, 1, 93, 37, 6,
-<a name="l03256"></a>03256 6, 35, 34, 38, 38, 53, 52, 18, 54, 51, 50, 22, 23, 55, 51, 3, 6, 21, 20, 22, 51, 50, 55, 54, 18,
-<a name="l03257"></a>03257 53, 52, 2, 36, 35, 34, 4, 2, 21, 20, 18, 4, 51, 32, 36, 55, 51, 6, 6, 4, 35, 34, 36, 36, 39,
-<a name="l03258"></a>03258 38, 53, 52, 55, 18, 0, 33, 50, 4, 23, 22, 21, 16, 7, 6, 35, 34, 38, 39, 38, 1, 20, 22, 51, 50,
-<a name="l03259"></a>03259 62, 2, 53, 52, 38, 35, 34, 14, 2, 4, -119, 65, -95, 81, 89, -88, 105, -93, -14, 114, 87, -98, 57, 34, -77,
-<a name="l03260"></a>03260 -112, 30, 41, 29, 53, 86, 114, -123, -85, -2, -83, -51, -22, -2, 125, -43, -43, 1, -109, -11, 1, 6, 1, 98, 88,
-<a name="l03261"></a>03261 -75, 51, -8, -2, -86, -15, -34, -2, -119, -2, -8, 67, 84, 100, 122, 1, -63, 1, 64, -8, 1, -117, 114, 97, -52,
-<a name="l03262"></a>03262 -74, -40, 69, 85, 20, 13, -2, 22, -126, 84, 56, 124, 113, 72, -121, 97, 64, 113, 106, 64, -93, 75, 91, 104, -40,
-<a name="l03263"></a>03263 -127, -97, 1, 63, -96, 91, 93, -101, -3, 97, -116, 15, 27, 39, 61, 80, 1, 13, -113, -89, 1, 34, -82, -37, -2,
-<a name="l03264"></a>03264 103, -22, -11, -2, -98, -87, -80, 126, 105, -38, 127, 114, -27, -107, -67, -37, -12, -35, 1, 15, 1, 32, -53, -55, -83,
-<a name="l03265"></a>03265 -53, -2, -34, -31, -54, 42, 39, 25, 1, 76, -119, -104, 67, -124, -53, 102, -120, -106, 65, -112, -50, 0, 0, 2, -1,
-<a name="l03266"></a>03266 -3, 0, 0, 5, 89, 5, -70, 0, 7, 0, 14, 1, 103, -74, 1, 14, 15, 16, 2, 85, 2, -72, -1, -14, -76,
-<a name="l03267"></a>03267 15, 16, 2, 85, 2, -72, -1, -8, -76, 13, 13, 6, 85, 2, -72, -1, -12, 64, 89, 12, 12, 6, 85, 9, 12,
-<a name="l03268"></a>03268 12, 12, 6, 85, 5, 12, 12, 12, 6, 85, 47, 16, 48, 16, 103, 8, 104, 9, 96, 16, -120, 3, -112, 16, -55,
-<a name="l03269"></a>03269 5, -58, 6, -64, 16, -16, 16, 11, 8, 5, 89, 1, 86, 2, 80, 16, 104, 11, -80, 16, -13, 12, -13, 13, -13,
-<a name="l03270"></a>03270 14, 9, 4, 12, 4, 13, 4, 14, 3, 11, 10, 9, 5, 4, 4, 12, 13, 14, 8, 6, 7, 7, 12, 9, 5,
-<a name="l03271"></a>03271 4, 8, 6, 12, 7, 1, 0, 0, -72, -1, -8, 64, 15, 12, 12, 2, 85, 0, 32, 7, 12, 20, 7, 7, 12,
-<a name="l03272"></a>03272 2, 3, 3, -72, -1, -8, 64, 21, 12, 12, 2, 85, 3, 32, 4, 12, 20, 4, 4, 12, 9, 30, 5, 5, 8,
-<a name="l03273"></a>03273 30, 6, 3, 6, -72, 2, 112, 64, 9, 0, 8, 12, -23, 64, 2, 1, 2, 2, -70, 1, 11, 0, 1, 1, 11,
-<a name="l03274"></a>03274 64, 18, 12, 32, 0, 101, 7, 3, 82, 80, 4, -49, 4, -33, 4, 3, -112, 4, 1, 4, -72, 1, 1, 64, 11,
-<a name="l03275"></a>03275 80, 12, -64, 7, -33, 12, 3, -112, 12, 1, 12, -72, 1, 1, 64, 16, 15, 7, -49, 7, 2, 127, 7, -128, 7,
-<a name="l03276"></a>03276 2, 7, -109, 15, -42, -41, 24, 43, 16, -12, 93, 113, 25, -12, 93, 113, -12, 93, 113, 24, -19, 16, -19, 26, 25,
-<a name="l03277"></a>03277 16, -19, -19, 0, 24, 63, 60, 26, -19, 63, -28, 60, 16, -19, 60, 16, -19, -121, 5, 46, 43, 43, 125, 16, -60,
-<a name="l03278"></a>03278 -121, 46, 24, 43, 43, 125, 16, -60, 1, 17, 18, 57, 57, 17, 57, 57, -121, 16, -60, -60, 14, -60, -60, -121, 5,
-<a name="l03279"></a>03279 16, -60, -60, 14, -60, -60, 49, 48, 1, 75, -80, 11, 83, 75, -80, 30, 81, 90, 88, -76, 4, 15, 3, 8, 7,
-<a name="l03280"></a>03280 -70, -1, -16, 0, 0, -1, -8, 56, 56, 56, 56, 89, 1, 114, 113, 93, 43, 43, 43, 43, 43, 43, 35, 1, 51,
-<a name="l03281"></a>03281 1, 35, 3, 33, 3, 19, 33, 3, 38, 39, 6, 7, 3, 2, 51, -47, 2, 88, -35, -85, -3, -101, -95, -39, 1,
-<a name="l03282"></a>03282 -15, -103, 70, 34, 28, 51, 5, -70, -6, 70, 1, -68, -2, 68, 2, 90, 1, -106, -71, 119, -115, -117, 0, 0, 3,
-<a name="l03283"></a>03283 0, -106, 0, 0, 4, -23, 5, -70, 0, 17, 0, 29, 0, 42, 1, 19, -71, 0, 4, -1, -12, 64, 71, 11, 11,
-<a name="l03284"></a>03284 6, 85, 4, 4, 70, 35, 86, 35, 102, 35, 115, 9, -124, 9, 6, 105, 26, 117, 5, 112, 9, 115, 11, -125, 5,
-<a name="l03285"></a>03285 -125, 11, 6, 39, 22, 9, 3, 24, 39, 42, 30, 22, 29, 9, 9, 19, 18, 30, 42, 42, 41, 41, 0, 28, 29,
-<a name="l03286"></a>03286 30, 2, 1, 2, 31, 30, 30, 17, 0, 8, 24, 38, 6, 12, 16, 16, 2, 85, 6, -72, -1, -26, 64, 51, 15,
-<a name="l03287"></a>03287 15, 2, 85, 6, 18, 13, 13, 2, 85, 6, 6, 12, 12, 2, 85, 6, 8, 11, 11, 6, 85, 6, 12, 12, 12,
-<a name="l03288"></a>03288 6, 85, 6, 20, 13, 13, 6, 85, 6, 84, 37, 38, 12, 28, 16, 16, 2, 85, 12, 10, 13, 13, 2, 85, 12,
-<a name="l03289"></a>03289 -72, -1, -12, 64, 21, 11, 11, 6, 85, 12, 26, 44, 29, 30, 32, 1, 32, 0, 1, 0, 32, 16, 16, 2, 85,
-<a name="l03290"></a>03290 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12,
-<a name="l03291"></a>03291 2, 85, 0, -72, -1, -6, -76, 12, 12, 6, 85, 0, -72, -1, -16, 64, 10, 13, 13, 6, 85, 0, 93, 43, 59,
-<a name="l03292"></a>03292 92, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 93, 60, -3, 60, 78, 16, -10, 43, 43, 43, 77, -19, -12, 43,
-<a name="l03293"></a>03293 43, 43, 43, 43, 43, 43, -19, 0, 63, 60, -3, 60, 63, 60, -3, 60, 18, 57, 47, 60, 16, -3, 60, 57, 47,
-<a name="l03294"></a>03294 17, 57, 17, 18, 57, 1, 18, 23, 57, 49, 48, 1, 93, 0, 93, 43, 51, 17, 33, 50, 22, 22, 21, 20, 6,
-<a name="l03295"></a>03295 7, 22, 22, 21, 20, 14, 2, 35, 1, 33, 50, 55, 54, 54, 53, 52, 38, 38, 35, 33, 17, 33, 50, 55, 62,
-<a name="l03296"></a>03296 2, 53, 52, 38, 38, 35, 33, -106, 2, 38, -88, -53, 115, 102, 103, -123, -113, 87, -128, -63, -116, -2, -109, 1, 61,
-<a name="l03297"></a>03297 -127, 56, 74, 75, 70, -126, -98, -2, -37, 1, 109, 94, 38, 67, 90, 58, 84, -107, -116, -2, -83, 5, -70, 89, -71,
-<a name="l03298"></a>03298 101, 94, -90, 51, 39, -68, -128, 103, -79, 96, 49, 3, 82, 17, 22, 102, 77, 73, 111, 41, -5, -96, 7, 12, 56,
-<a name="l03299"></a>03299 107, 70, 82, 121, 49, 0, 0, 1, 0, 102, -1, -25, 5, 118, 5, -45, 0, 29, 0, -45, -75, 99, 2, 106, 29,
-<a name="l03300"></a>03300 2, 1, -72, -1, -24, -76, 11, 11, 6, 85, 0, -72, -1, -24, 64, 95, 11, 11, 6, 85, 32, 0, 50, 13, 99,
-<a name="l03301"></a>03301 0, 112, 0, 116, 29, -128, 0, -124, 29, -112, 0, -102, 5, -85, 3, -91, 13, -71, 3, -76, 13, -57, 13, -48, 0,
-<a name="l03302"></a>03302 -28, 29, -13, 29, 17, 14, 18, 29, 17, 29, 29, 3, 42, 6, 40, 17, 42, 28, 32, 31, 71, 13, 86, 20, 87,
-<a name="l03303"></a>03303 21, 86, 25, 104, 5, 107, 29, 123, 18, -117, 18, -102, 3, -103, 14, -102, 28, -88, 1, -92, 2, -88, 17, -43, 14,
-<a name="l03304"></a>03304 19, 0, 20, 0, 26, 16, 20, 16, 26, 4, 2, -72, -1, -34, -78, 40, 57, 1, -72, -1, -64, 64, 45, 40, 57,
-<a name="l03305"></a>03305 16, 15, 0, 1, 4, 27, 19, 30, 12, 3, 27, 30, 4, 9, 16, 38, 15, 74, 0, 38, 32, 1, 1, 1, 26,
-<a name="l03306"></a>03306 31, 23, 38, 32, 8, 1, 8, 12, 11, 11, 6, 85, 8, 25, 30, 99, 92, 24, 43, 78, 16, -12, 43, 93, 77,
-<a name="l03307"></a>03307 -19, 78, 16, -10, 93, 77, -19, -12, -19, 0, 63, -19, 63, -19, 17, 23, 57, 49, 48, 1, 43, 43, 93, 93, 113,
-<a name="l03308"></a>03308 0, 93, 43, 43, 1, 114, 1, 23, 6, 4, 35, 34, 36, 2, 53, 52, 18, 36, 51, 50, 4, 23, 7, 38, 38,
-<a name="l03309"></a>03309 35, 34, 6, 2, 21, 20, 18, 22, 51, 50, 54, 4, -76, -62, 61, -2, -61, -27, -19, -2, -41, -101, -81, 1, 67,
-<a name="l03310"></a>03310 -62, -36, 1, 44, 59, -65, 51, -62, -109, -87, -29, 92, 109, -26, -122, -93, -30, 2, 2, 49, -17, -5, -63, 1, 110,
-<a name="l03311"></a>03311 -46, -27, 1, 85, -79, -32, -53, 45, -96, -110, -94, -2, -17, -111, -69, -2, -23, -118, -68, 0, 0, 2, 0, -98, 0,
-<a name="l03312"></a>03312 0, 5, 90, 5, -70, 0, 15, 0, 29, 0, -27, 64, 47, 32, 31, 1, 67, 8, 28, 29, 30, 2, 1, 2, 17,
-<a name="l03313"></a>03313 16, 30, 15, 0, 8, 23, 38, 32, 9, 1, 31, 64, 13, 13, 2, 85, 9, 32, 16, 16, 2, 85, 9, 10, 15,
-<a name="l03314"></a>03314 15, 2, 85, 9, 24, 13, 13, 2, 85, 9, -72, -1, -12, 64, 21, 12, 12, 6, 85, 9, 26, 31, 29, 16, 32,
-<a name="l03315"></a>03315 1, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13,
-<a name="l03316"></a>03316 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72, -1, -8,
-<a name="l03317"></a>03317 64, 10, 13, 13, 6, 85, 0, 93, 30, 59, 92, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 93, 60, -3, 60,
-<a name="l03318"></a>03318 16, -10, 43, 43, 43, 43, 43, 93, -19, 0, 63, 60, -3, 60, 63, 60, -3, 60, 49, 48, 67, 121, 64, 54, 3,
-<a name="l03319"></a>03319 27, 7, 8, 6, 8, 5, 8, 4, 8, 4, 6, 25, 24, 26, 24, 2, 6, 11, 10, 12, 10, 13, 10, 3, 6,
-<a name="l03320"></a>03320 21, 22, 20, 22, 19, 22, 3, 6, 27, 3, 23, 33, 1, 18, 14, 23, 33, 1, 24, 8, 28, 33, 1, 22, 10,
-<a name="l03321"></a>03321 17, 33, 0, 43, 43, 1, 43, 43, 42, 42, 42, 42, -127, 1, 93, 51, 17, 33, 50, 23, 22, 23, 22, 18, 21,
-<a name="l03322"></a>03322 20, 2, 14, 2, 35, 37, 33, 50, 54, 55, 54, 54, 53, 52, 38, 39, 38, 35, 33, -98, 1, -7, -85, 90, 126,
-<a name="l03323"></a>03323 89, 116, 115, 78, 122, -111, -51, -123, -2, -79, 1, 57, -111, -91, 49, 69, 77, -105, 108, 78, -83, -2, -52, 5, -70,
-<a name="l03324"></a>03324 21, 29, 76, 98, -2, -49, -60, -89, -2, -2, -87, 97, 50, -83, 54, 49, 69, -23, -90, -26, -9, 42, 30, 0, 1,
-<a name="l03325"></a>03325 0, -94, 0, 0, 4, -24, 5, -70, 0, 11, 0, -107, 64, 21, 6, 5, 30, 8, 8, 7, 7, 0, 3, 4, 30,
-<a name="l03326"></a>03326 2, 1, 2, 10, 9, 30, 11, 0, 8, 7, -72, -1, -64, 64, 29, 16, 18, 52, 7, 84, 3, 74, 32, 10, 32,
-<a name="l03327"></a>03327 13, 2, 10, 26, 13, 4, 9, 32, 1, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15,
-<a name="l03328"></a>03328 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -6, -76,
-<a name="l03329"></a>03329 12, 12, 6, 85, 0, -72, -1, -16, 64, 10, 13, 13, 6, 85, 0, 93, 12, 59, 91, 24, 43, 78, 16, -12, 43,
-<a name="l03330"></a>03330 43, 43, 43, 43, 43, 93, 60, 77, -3, 60, 78, 16, -10, 93, 77, -12, -28, 43, 0, 63, 60, -3, 60, 63, 60,
-<a name="l03331"></a>03331 -3, 60, 18, 57, 47, 60, 16, -3, 60, 49, 48, 51, 17, 33, 21, 33, 17, 33, 21, 33, 17, 33, 21, -94, 4,
-<a name="l03332"></a>03332 36, -4, -98, 3, 43, -4, -43, 3, -124, 5, -70, -83, -2, 63, -84, -2, 13, -83, 0, 0, 1, 0, -88, 0, 0,
-<a name="l03333"></a>03333 4, -123, 5, -70, 0, 9, 0, -115, 64, 43, 6, 5, 30, 8, 8, -113, 7, 1, 7, 7, 0, 3, 4, 30, 2,
-<a name="l03334"></a>03334 1, 2, 0, 8, 7, -100, 32, 2, 32, 11, 2, 2, 26, 11, 4, 9, 32, 1, 32, 0, 1, 0, 32, 16, 16,
-<a name="l03335"></a>03335 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, 64,
-<a name="l03336"></a>03336 11, 12, 12, 2, 85, 0, 12, 11, 11, 6, 85, 0, -72, -1, -2, -76, 12, 12, 6, 85, 0, -72, -1, -16, 64,
-<a name="l03337"></a>03337 10, 13, 13, 6, 85, 0, 93, 10, 59, 92, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 93, 60, 77,
-<a name="l03338"></a>03338 -3, 60, 78, 16, -10, 93, 77, -28, 0, 63, 63, 60, -3, 60, 18, 57, 47, 93, 60, 16, -3, 60, 49, 48, 51,
-<a name="l03339"></a>03339 17, 33, 21, 33, 17, 33, 21, 33, 17, -88, 3, -35, -4, -27, 2, -80, -3, 80, 5, -70, -83, -2, 58, -83, -3,
-<a name="l03340"></a>03340 102, 0, 1, 0, 109, -1, -25, 5, -71, 5, -45, 0, 37, 1, 19, 64, 26, 27, 20, 27, 21, 2, 96, 39, 1,
-<a name="l03341"></a>03341 94, 8, 19, 1, 18, 3, 36, 36, 0, 33, 18, 23, 2, 37, 0, 30, 2, 1, -72, -1, -64, 64, 32, 12, 12,
-<a name="l03342"></a>03342 6, 85, 1, 1, 6, 23, 30, 14, 3, 33, 30, 6, 9, 1, 1, 38, 39, 37, 36, 32, 3, 3, 32, 2, 32,
-<a name="l03343"></a>03343 39, 96, 2, 3, 2, -72, -1, -28, -76, 15, 15, 2, 85, 2, -72, -1, -14, -76, 13, 13, 2, 85, 2, -72, -1,
-<a name="l03344"></a>03344 -38, -76, 12, 12, 2, 85, 2, -72, -1, -12, 64, 27, 12, 12, 6, 85, 2, 114, -128, 39, 1, 39, 29, 38, 32,
-<a name="l03345"></a>03345 10, 1, 10, 16, 12, 12, 6, 85, 10, 25, 38, 99, 91, 24, 43, 78, 16, -12, 43, 93, 77, -19, 77, 16, 93,
-<a name="l03346"></a>03346 -10, 43, 43, 43, 43, 93, 60, 77, 16, -3, 60, 17, 18, 57, 47, 0, 63, -19, 63, -19, 18, 57, 47, 43, 60,
-<a name="l03347"></a>03347 -3, 60, 17, 18, 57, 17, 18, 57, 1, 17, 18, 57, 18, 57, 49, 48, 67, 121, 64, 68, 4, 35, 27, 28, 26,
-<a name="l03348"></a>03348 28, 25, 28, 3, 6, 12, 38, 16, 37, 21, 38, 31, 38, 8, 37, 4, 38, 35, 37, 24, 13, 29, 33, 0, 22,
-<a name="l03349"></a>03349 15, 19, 33, 1, 17, 18, 20, 19, 32, 7, 29, 33, 0, 34, 5, 37, 33, 1, 28, 11, 23, 33, 1, 20, 17,
-<a name="l03350"></a>03350 23, 33, 1, 30, 9, 33, 33, 0, 36, 3, 33, 33, 0, 0, 43, 43, 43, 43, 1, 43, 43, 16, 60, 16, 60,
-<a name="l03351"></a>03351 43, 43, 43, 43, 43, 43, 43, 43, 43, 42, -127, 1, 93, 0, 93, 1, 53, 37, 17, 6, 4, 35, 34, 36, 2,
-<a name="l03352"></a>03352 53, 52, 18, 36, 51, 50, 4, 22, 23, 7, 46, 2, 35, 34, 6, 6, 7, 6, 21, 20, 18, 4, 51, 50, 54,
-<a name="l03353"></a>03353 55, 17, 3, 76, 2, 109, -113, -2, -48, -96, -40, -2, -97, -76, -77, 1, 80, -37, -97, 1, 1, -110, 38, -81, 33,
-<a name="l03354"></a>03354 98, -74, 111, -123, -62, 119, 33, 56, -121, 1, 2, -111, 126, -16, 62, 2, 63, -84, 1, -3, -32, 114, 115, -71, 1,
-<a name="l03355"></a>03355 94, -40, -42, 1, 115, -76, 103, -72, -108, 48, 112, -128, 77, 81, -124, 79, -120, -97, -60, -2, -8, -128, 97, 55, 1,
-<a name="l03356"></a>03356 17, 0, 1, 0, -92, 0, 0, 5, 34, 5, -70, 0, 11, 0, -40, -71, 0, 13, -1, -64, 64, 26, 19, 21, 52,
-<a name="l03357"></a>03357 4, 3, 30, 9, 10, -96, 10, -48, 10, 2, 10, 5, 2, 2, 11, 8, 8, 5, 8, 32, 7, 7, 6, -72, -1,
-<a name="l03358"></a>03358 -18, -76, 15, 15, 2, 85, 6, -72, -1, -14, 64, 11, 13, 13, 2, 85, 6, 16, 12, 12, 2, 85, 6, -72, -1,
-<a name="l03359"></a>03359 -32, 64, 24, 11, 11, 6, 85, 6, 1, 12, 12, 6, 85, 6, 93, -128, 13, 1, 13, 2, 11, 32, 1, 32, 0,
-<a name="l03360"></a>03360 1, 0, -72, -1, -64, 64, 10, 19, 21, 52, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85,
-<a name="l03361"></a>03361 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, 64, 11, 12, 12, 2, 85, 0, 8, 11, 11, 6, 85,
-<a name="l03362"></a>03362 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72, -1, -8, 64, 22, 13, 13, 6, 85, 0, 93, 12, 32, 13, 1,
-<a name="l03363"></a>03363 32, 13, 80, 13, 96, 13, 112, 13, 4, 59, 89, 24, 43, 93, 113, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l03364"></a>03364 93, 60, -3, 60, 16, 93, -10, 43, 43, 43, 43, 43, 60, 16, -3, 60, 0, 63, 60, 63, 60, 57, 93, 47, 60,
-<a name="l03365"></a>03365 -3, 60, 49, 48, 1, 43, 51, 17, 51, 17, 33, 17, 51, 17, 35, 17, 33, 17, -92, -62, 2, -6, -62, -62, -3,
-<a name="l03366"></a>03366 6, 5, -70, -3, -90, 2, 90, -6, 70, 2, -77, -3, 77, 0, 1, 0, -65, 0, 0, 1, -127, 5, -70, 0, 3,
-<a name="l03367"></a>03367 0, -52, -75, 1, 2, 0, 8, 2, 5, -72, -1, -64, -77, 56, 61, 52, 5, -72, -1, -64, -77, 51, 52, 52, 5,
-<a name="l03368"></a>03368 -72, -1, -64, -77, 45, 48, 52, 5, -72, -1, -64, -77, 40, 41, 52, 5, -72, -1, -64, -77, 35, 37, 52, 5, -72,
-<a name="l03369"></a>03369 -1, -64, -77, 29, 30, 52, 5, -72, -1, -64, -77, 24, 26, 52, 5, -72, -1, -64, 64, 42, 13, 16, 52, 32, 5,
-<a name="l03370"></a>03370 -112, 5, -81, 5, 3, 3, 32, 1, 0, 0, -113, 0, -96, 0, -80, 0, 4, 47, 0, 64, 0, 80, 0, -33, 0,
-<a name="l03371"></a>03371 -16, 0, 5, 18, 32, 0, -113, 0, -112, 0, 3, 5, -72, -1, -64, 64, 11, 13, 13, 2, 85, 0, 24, 16, 16,
-<a name="l03372"></a>03372 2, 85, 0, -72, -1, -20, -76, 15, 15, 2, 85, 0, -72, -1, -18, -76, 13, 13, 2, 85, 0, -72, -1, -10, 64,
-<a name="l03373"></a>03373 16, 12, 12, 2, 85, 0, 32, 11, 11, 6, 85, 0, -94, 4, -42, 89, 24, 43, 16, -10, 43, 43, 43, 43, 43,
-<a name="l03374"></a>03374 43, 93, 67, 92, 88, -78, -128, 0, 1, 1, 93, 89, 113, 114, 60, -3, 93, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l03375"></a>03375 60, 0, 63, 63, 49, 48, 51, 17, 51, 17, -65, -62, 5, -70, -6, 70, 0, 1, 0, 55, -1, -25, 3, 97, 5,
-<a name="l03376"></a>03376 -70, 0, 17, 0, -87, 64, 16, 101, 2, 103, 6, 116, 2, 117, 6, -120, 13, -120, 17, 6, 9, 2, 1, -72, -1,
-<a name="l03377"></a>03377 -64, -76, 11, 12, 6, 85, 1, -72, 1, 26, 64, 11, 4, 30, 15, 9, 9, 38, 10, 10, 8, 38, 11, -72, -1,
-<a name="l03378"></a>03378 -22, -76, 16, 16, 2, 85, 11, -72, -1, -22, -76, 13, 13, 2, 85, 11, -72, -1, -2, -76, 12, 12, 2, 85, 11,
-<a name="l03379"></a>03379 -72, -1, -24, -76, 11, 11, 6, 85, 11, -72, -1, -2, 64, 22, 12, 12, 6, 85, 11, 93, 32, 19, 1, 32, 19,
-<a name="l03380"></a>03380 64, 19, 80, 19, 96, 19, 4, 19, 1, 38, 0, -72, -1, -24, -76, 12, 12, 2, 85, 0, -72, -1, -22, -76, 12,
-<a name="l03381"></a>03381 12, 6, 85, 0, -72, -1, -36, 64, 10, 13, 13, 6, 85, 0, 75, 18, -74, 89, 24, 43, 16, -10, 43, 43, 43,
-<a name="l03382"></a>03382 -19, 16, 93, 113, -10, 43, 43, 43, 43, 43, -19, 60, 16, -19, 0, 63, -19, -19, 43, 63, 49, 48, 0, 93, 19,
-<a name="l03383"></a>03383 55, 22, 22, 51, 50, 54, 54, 53, 17, 51, 17, 20, 6, 6, 35, 34, 38, 59, -81, 7, 112, 99, 73, 106, 40,
-<a name="l03384"></a>03384 -62, 89, -63, -126, -63, -51, 1, -96, 24, -88, 124, 67, 115, 126, 3, -14, -4, 25, -72, -54, 106, -34, 0, 0, 1,
-<a name="l03385"></a>03385 0, -106, 0, 0, 5, 82, 5, -70, 0, 11, 1, -2, 64, 30, 3, 34, 55, 57, 8, 9, 58, 39, 10, 53, 6,
-<a name="l03386"></a>03386 54, 10, 71, 10, 87, 3, -122, 3, -41, 3, 7, 118, 10, -39, 3, -39, 10, 3, 6, -72, -1, -12, 64, 24, 13,
-<a name="l03387"></a>03387 13, 2, 85, 40, 5, -116, 4, -118, 5, -86, 4, -22, 8, 5, 10, 4, 1, 53, 4, -42, 4, 2, 9, -72, -1,
-<a name="l03388"></a>03388 -32, 64, 9, 18, 33, 52, 3, 32, 18, 33, 52, 3, -72, -1, -34, -77, 12, 57, 18, 9, -72, -1, -32, -77, 18,
-<a name="l03389"></a>03389 33, 52, 8, -72, -1, -32, -77, 18, 33, 52, 4, -72, -1, -32, -77, 29, 33, 52, 4, -72, -1, -64, -77, 18, 22,
-<a name="l03390"></a>03390 52, 8, -72, -1, -34, 64, 61, 25, 57, 8, 9, 37, 37, 61, 8, 9, 25, 25, 61, 6, 6, 7, 9, 10, 9,
-<a name="l03391"></a>03391 8, 10, 5, 3, 4, 4, 32, 5, 10, 20, 5, 5, 10, 9, 8, 8, 32, 7, 6, 20, 7, 7, 6, 10, 10,
-<a name="l03392"></a>03392 0, 5, 2, 4, 1, 2, 7, 11, 8, 0, 8, 10, 3, 2, 11, 1, 0, 4, -72, 2, 58, 64, 15, 48, 5,
-<a name="l03393"></a>03393 1, -96, 5, -80, 5, -64, 5, -32, 5, 4, 5, 74, 8, -72, 2, 58, 64, 11, 48, 7, 1, 32, 7, -128, 7,
-<a name="l03394"></a>03394 -80, 7, 3, 7, -72, 2, -122, 64, 12, 11, 32, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76,
-<a name="l03395"></a>03395 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1,
-<a name="l03396"></a>03396 -6, -76, 12, 12, 6, 85, 0, -72, -1, -14, 64, 10, 13, 13, 6, 85, 0, 93, 12, 59, -88, 24, 43, 16, -12,
-<a name="l03397"></a>03397 43, 43, 43, 43, 43, 43, 93, -19, -3, 93, 113, -19, -12, 93, 113, -19, 16, 60, 16, 60, 60, 60, 0, 63, 60,
-<a name="l03398"></a>03398 60, 60, 63, 60, 60, 60, 18, 57, 47, -121, 5, 46, 43, 14, 125, 16, -60, -121, 5, 46, 24, 43, 4, 125, 16,
-<a name="l03399"></a>03399 -60, 7, 8, 16, 60, 8, 60, 1, 75, -80, 24, 83, 75, -80, 27, 81, 90, 88, -71, 0, 4, -1, -40, 56, 89,
-<a name="l03400"></a>03400 -79, 6, 2, 67, 84, 88, -71, 0, 4, -1, -16, -77, 12, 17, 52, 3, -72, -1, -16, 64, 23, 12, 17, 52, 6,
-<a name="l03401"></a>03401 16, 14, 17, 52, 8, 16, 14, 16, 52, 9, 16, 14, 17, 52, 10, 16, 13, 16, 52, 0, 43, 43, 43, 43, 43,
-<a name="l03402"></a>03402 43, 89, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 67, 92, 88, 64, 17, 9, 34, 25, 57, 8, 44, 25, 57,
-<a name="l03403"></a>03403 4, 44, 25, 57, 4, 34, 27, 57, 5, -72, -1, -34, -74, 22, 57, 4, 34, 22, 57, 6, -72, -1, -34, 64, 11,
-<a name="l03404"></a>03404 18, 57, 8, 34, 20, 57, 4, 64, 20, 57, 8, -72, -1, -34, -75, 37, 57, 4, 64, 21, 57, 43, 43, 43, 43,
-<a name="l03405"></a>03405 43, 43, 43, 43, 43, 43, 43, 89, 0, 43, 43, 43, 1, 113, 114, 93, 43, 0, 113, 93, 43, 43, 51, 17, 51,
-<a name="l03406"></a>03406 17, 1, 33, 1, 1, 33, 1, 7, 17, -106, -62, 2, -40, 1, 7, -3, -103, 2, -126, -1, 0, -3, -10, -16, 5,
-<a name="l03407"></a>03407 -70, -3, 41, 2, -41, -3, -82, -4, -104, 2, -26, -22, -2, 4, 0, 1, 0, -106, 0, 0, 4, 42, 5, -70, 0,
-<a name="l03408"></a>03408 5, 0, 109, 64, 12, 1, 2, 4, 3, 30, 5, 0, 8, 32, 4, 1, 4, -72, 2, -89, 64, 15, 7, 2, 3,
-<a name="l03409"></a>03409 32, 1, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76,
-<a name="l03410"></a>03410 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -10, -76, 12, 12, 6, 85, 0, -72, -1,
-<a name="l03411"></a>03411 -8, 64, 10, 13, 13, 6, 85, 0, 93, 6, 59, 92, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 93, 60, -3,
-<a name="l03412"></a>03412 60, 16, -26, 93, 0, 63, 60, -3, 60, 63, 49, 48, 51, 17, 51, 17, 33, 21, -106, -62, 2, -46, 5, -70, -6,
-<a name="l03413"></a>03413 -13, -83, 0, 1, 0, -104, 0, 0, 6, 15, 5, -70, 0, 16, 2, -28, -79, 2, 2, 67, 84, 88, -71, 0, 8,
-<a name="l03414"></a>03414 -1, -10, 64, 11, 12, 12, 2, 85, 8, 14, 13, 17, 2, 85, 2, -72, -1, -18, -76, 13, 17, 2, 85, 5, -72,
-<a name="l03415"></a>03415 -1, -18, 64, 40, 13, 17, 2, 85, 12, 18, 12, 12, 2, 85, 5, 15, 12, 3, 9, 0, 1, 2, 8, 9, 11,
-<a name="l03416"></a>03416 14, 0, 8, 9, 2, 10, 11, 6, 16, 16, 2, 85, 11, 16, 13, 13, 2, 85, 11, -72, -1, -6, -74, 12, 12,
-<a name="l03417"></a>03417 2, 85, 11, 16, 0, -72, -1, -26, -76, 16, 16, 2, 85, 0, -72, -1, -8, -76, 15, 15, 2, 85, 0, -72, -1,
-<a name="l03418"></a>03418 -4, -76, 13, 13, 2, 85, 0, 47, 43, 43, 43, -51, 47, 43, 43, 43, -51, 0, 63, 63, -64, -64, 16, -48, -48,
-<a name="l03419"></a>03419 -64, 17, 18, 23, 57, 43, 43, 49, 48, 1, 43, 43, 43, 0, 27, -79, 6, 2, 67, 84, 88, 64, 31, 7, 32,
-<a name="l03420"></a>03420 11, 11, 6, 85, 6, 32, 11, 11, 6, 85, 3, 32, 11, 11, 6, 85, 4, 32, 11, 11, 6, 85, 5, 32, 11,
-<a name="l03421"></a>03421 11, 6, 85, 8, -72, -1, -14, 64, 35, 11, 11, 6, 85, 2, 12, 11, 11, 6, 85, 3, 6, 12, 12, 6, 85,
-<a name="l03422"></a>03422 2, 14, 12, 12, 6, 85, 9, 12, 12, 12, 6, 85, 10, 12, 12, 12, 6, 85, 7, -72, -1, -8, -76, 13, 13,
-<a name="l03423"></a>03423 6, 85, 8, -72, -1, -8, 64, 31, 13, 13, 6, 85, 38, 5, 1, 12, 32, 10, 18, 52, 15, 32, 10, 18, 52,
-<a name="l03424"></a>03424 15, 5, 12, 3, 0, 1, 14, 11, 0, 8, 8, 1, 2, 10, -72, -1, -18, -76, 11, 11, 6, 85, 10, -72, -1,
-<a name="l03425"></a>03425 -18, -76, 12, 12, 6, 85, 10, -69, 2, 86, 0, 18, 0, 16, 2, 86, 64, 13, 0, 12, 11, 11, 6, 85, 0,
-<a name="l03426"></a>03426 6, 12, 12, 6, 85, 0, -72, -1, -8, -76, 13, 13, 6, 85, 0, 1, 47, 43, 43, 43, -12, 47, -12, 43, 43,
-<a name="l03427"></a>03427 0, 63, 60, 63, 60, 60, 17, 18, 23, 57, 43, 43, 93, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 0,
-<a name="l03428"></a>03428 43, 43, 43, 43, 43, 27, 64, 127, 0, 2, 15, 8, 20, 2, 27, 8, 4, 118, 12, -122, 12, -56, 12, 3, 9,
-<a name="l03429"></a>03429 12, 73, 12, 73, 15, 3, 41, 4, 37, 13, 44, 14, 88, 3, 91, 4, 118, 13, 120, 14, -121, 13, 8, 11, 2,
-<a name="l03430"></a>03430 5, 8, 57, 13, 54, 14, 79, 2, 75, 3, 68, 7, 64, 8, 77, 13, 66, 14, 10, -104, 2, -103, 3, -106, 7,
-<a name="l03431"></a>03431 -106, 8, -88, 3, -89, 7, 6, 18, 2, 15, 14, 14, 48, 5, 2, 20, 5, 5, 2, 8, 12, 13, 13, 48, 5,
-<a name="l03432"></a>03432 8, 20, 5, 5, 8, 12, 82, 15, 82, 1, 64, 1, 2, 2, 8, 8, 9, 10, 11, 11, 13, 13, 14, 14, 16,
-<a name="l03433"></a>03433 0, 8, 9, 2, 96, 18, -128, 18, 2, 18, -70, 2, -88, 0, 13, 1, 49, -78, 5, 32, 8, -72, 1, 49, 64,
-<a name="l03434"></a>03434 10, 12, 9, 10, 32, 64, 12, 127, 11, 1, 11, -70, 2, 86, 0, 14, 1, 11, -78, 5, 32, 2, -72, 1, 11,
-<a name="l03435"></a>03435 64, 9, 15, 1, 0, 32, 15, 112, 16, 1, 16, -72, 2, 86, -73, 32, 5, 96, 5, -128, 5, 3, 5, -72, 2,
-<a name="l03436"></a>03436 -88, -77, 17, 59, 89, 24, 43, 25, 16, -12, 93, -12, 93, 60, 24, -3, 60, 16, -19, 26, 25, 16, -19, -12, 93,
-<a name="l03437"></a>03437 60, 26, 24, -3, 60, 16, -19, 26, 25, 16, -19, -28, 93, 0, 24, 63, 63, 60, 60, 16, 60, 16, 60, 16, 60,
-<a name="l03438"></a>03438 16, 60, 16, 60, 16, 60, 26, 16, -19, -19, -121, 5, 46, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125, -60, 49,
-<a name="l03439"></a>03439 48, 0, 75, -80, 11, 83, 75, -80, 30, 81, 90, 88, -67, 0, 12, -1, -5, 0, 8, -1, -42, 0, 2, -1, -42,
-<a name="l03440"></a>03440 56, 56, 56, 89, 1, 75, -80, 12, 83, 75, -80, 40, 81, 90, 88, -71, 0, 13, -1, -8, -79, 14, 10, 56, 56,
-<a name="l03441"></a>03441 89, 1, 67, 92, 88, -71, 0, 13, -1, -44, -74, 33, 57, 14, 44, 33, 57, 13, -72, -1, -44, -74, 55, 57, 14,
-<a name="l03442"></a>03442 50, 55, 57, 13, -72, -1, -44, -75, 45, 57, 14, 44, 45, 57, 43, 43, 43, 43, 43, 43, 89, 114, 113, 93, 0,
-<a name="l03443"></a>03443 113, 93, 1, 93, 89, 89, 51, 17, 33, 1, 22, 23, 54, 55, 1, 33, 17, 35, 17, 1, 35, 1, 17, -104, 1,
-<a name="l03444"></a>03444 36, 1, 91, 48, 22, 25, 53, 1, 95, 1, 5, -69, -2, 86, -81, -2, 88, 5, -70, -5, -14, -111, 72, 80, -101,
-<a name="l03445"></a>03445 3, -4, -6, 70, 4, -53, -5, 53, 4, -32, -5, 32, 0, 1, 0, -100, 0, 0, 5, 31, 5, -70, 0, 9, 1,
-<a name="l03446"></a>03446 125, -79, 18, 11, -72, -1, -64, 64, 10, 19, 21, 52, 8, 24, 12, 22, 2, 85, 3, -72, -1, -24, 64, 33, 12,
-<a name="l03447"></a>03447 22, 2, 85, 8, 2, 3, 3, 32, 7, 8, 20, 7, 7, 8, 2, 7, 3, 3, 8, 9, 4, 2, 2, 9, 7,
-<a name="l03448"></a>03448 8, 4, 3, 32, 6, 6, 5, -72, -1, -20, -76, 15, 15, 2, 85, 5, -72, -1, -14, 64, 11, 13, 13, 2, 85,
-<a name="l03449"></a>03449 5, 18, 12, 12, 2, 85, 5, -72, -1, -9, 64, 26, 11, 11, 6, 85, 5, 93, 32, 11, 1, 32, 11, 80, 11,
-<a name="l03450"></a>03450 96, 11, 112, 11, -128, 11, 5, 11, 8, 9, 32, 1, 0, -72, -1, -64, 64, 13, 19, 21, 52, 32, 0, 1, 0,
-<a name="l03451"></a>03451 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72,
-<a name="l03452"></a>03452 -1, -6, 64, 11, 12, 12, 2, 85, 0, 4, 11, 11, 6, 85, 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72,
-<a name="l03453"></a>03453 -1, -8, 64, 10, 13, 13, 6, 85, 0, 93, 10, 59, 89, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 93,
-<a name="l03454"></a>03454 43, 60, -3, 60, 16, 93, 113, -12, 43, 43, 43, 43, 60, 16, -3, 60, 0, 63, 60, 63, 60, 18, 57, 57, 1,
-<a name="l03455"></a>03455 17, 57, 57, -121, 4, 46, 43, -121, 125, -60, -79, 6, 2, 67, 84, 88, -71, 0, 3, -1, -32, -73, 12, 17, 52,
-<a name="l03456"></a>03456 8, 32, 12, 17, 52, 0, 43, 43, 89, 49, 48, 43, 43, 1, 43, 67, 92, 88, -76, 8, 64, 70, 57, 3, -72,
-<a name="l03457"></a>03457 -1, -64, -74, 70, 57, 8, 64, 50, 57, 3, -72, -1, -64, -74, 50, 57, 7, 34, 25, 57, 2, -72, -1, -34, -74,
-<a name="l03458"></a>03458 25, 57, 7, 34, 50, 57, 2, -72, -1, -34, -74, 50, 57, 7, 34, 35, 57, 2, -72, -1, -34, 64, 11, 35, 57,
-<a name="l03459"></a>03459 7, 14, 20, 57, 7, 14, 19, 57, 2, -72, -1, -12, -74, 19, 57, 7, 14, 29, 57, 2, -72, -1, -12, -74, 29,
-<a name="l03460"></a>03460 57, 7, 14, 21, 57, 2, -72, -1, -8, -79, 21, 57, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43,
-<a name="l03461"></a>03461 43, 0, 43, 43, 43, 43, 89, 51, 17, 51, 1, 17, 51, 17, 35, 1, 17, -100, -57, 3, 2, -70, -57, -4, -2,
-<a name="l03462"></a>03462 5, -70, -5, -127, 4, 127, -6, 70, 4, -128, -5, -128, 0, 0, 2, 0, 99, -1, -25, 5, -35, 5, -44, 0, 14,
-<a name="l03463"></a>03463 0, 27, 0, -54, 64, 80, 26, 15, 1, 20, 16, 20, 20, 27, 23, 27, 27, 4, 4, 16, 4, 20, 11, 23, 11,
-<a name="l03464"></a>03464 27, 4, -87, 23, -74, 14, -58, 14, 3, 23, 23, 24, 27, 2, 32, 29, 64, 17, 79, 19, 79, 23, 64, 26, 88,
-<a name="l03465"></a>03465 5, 88, 9, 87, 16, 85, 17, 95, 19, 90, 23, 95, 24, 86, 26, 87, 27, -117, 23, -103, 2, 16, 25, 30, 3,
-<a name="l03466"></a>03466 3, 18, 30, 11, 9, 21, 38, 32, 7, 1, 7, -72, -1, -24, -76, 16, 16, 2, 85, 7, -72, -1, -18, -76, 13,
-<a name="l03467"></a>03467 13, 2, 85, 7, -72, -1, -16, -76, 12, 12, 2, 85, 7, -72, -1, -22, -76, 11, 11, 6, 85, 7, -72, -1, -12,
-<a name="l03468"></a>03468 -76, 13, 13, 6, 85, 7, -72, -1, -6, 64, 33, 12, 12, 6, 85, 7, 26, -128, 29, 1, 29, 15, 38, 32, 0,
-<a name="l03469"></a>03469 1, 0, 6, 11, 11, 6, 85, 0, 6, 12, 12, 6, 85, 0, 25, 28, 99, 92, 24, 43, 78, 16, -12, 43, 43,
-<a name="l03470"></a>03470 93, 77, -19, 78, 16, 93, -10, 43, 43, 43, 43, 43, 43, 93, 77, -19, 0, 63, -19, 63, -19, 49, 48, 1, 93,
-<a name="l03471"></a>03471 113, 0, 93, 93, 93, 113, 19, 16, 0, 33, 50, 4, 18, 21, 20, 2, 4, 35, 34, 36, 2, 55, 16, 0, 51,
-<a name="l03472"></a>03472 50, 0, 17, 52, 2, 38, 35, 34, 0, 99, 1, -120, 1, 54, -53, 1, 70, -85, -76, -2, -74, -65, -49, -2, -70,
-<a name="l03473"></a>03473 -88, -56, 1, 29, -41, -37, 1, 27, 121, -23, -111, -50, -2, -41, 2, -54, 1, 109, 1, -99, -62, -2, -91, -36, -33,
-<a name="l03474"></a>03474 -2, -96, -75, -56, 1, 90, -66, -2, -9, -2, -49, 1, 52, 1, 27, -77, 1, 11, -109, -2, -27, 0, 2, 0, -98,
-<a name="l03475"></a>03475 0, 0, 4, -3, 5, -70, 0, 13, 0, 24, 0, -78, 64, 44, 101, 17, 107, 20, 2, 75, 16, 75, 20, 91, 16,
-<a name="l03476"></a>03476 91, 20, 4, 11, 12, 30, 15, 14, 14, 0, 23, 24, 30, 2, 1, 2, 0, 8, 18, 38, 8, 10, 13, 13, 2,
-<a name="l03477"></a>03477 85, 8, 16, 11, 11, 6, 85, 8, -72, -1, -12, 64, 27, 12, 12, 6, 85, 8, 26, 32, 26, 1, 32, 26, 1,
-<a name="l03478"></a>03478 26, 24, 13, 32, 1, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72,
-<a name="l03479"></a>03479 -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, 64, 11, 12, 12, 2, 85, 0, 12, 11, 11, 6, 85, 0, -72,
-<a name="l03480"></a>03480 -1, -6, -76, 12, 12, 6, 85, 0, -72, -1, -16, 64, 10, 13, 13, 6, 85, 0, 93, 25, 59, 92, 24, 43, 16,
-<a name="l03481"></a>03481 -10, 43, 43, 43, 43, 43, 43, 43, 93, 60, -3, 60, 78, 16, 113, 93, -10, 43, 43, 43, 77, -19, 0, 63, 63,
-<a name="l03482"></a>03482 60, -3, 60, 18, 57, 47, 60, -3, 60, 49, 48, 1, 93, 0, 93, 51, 17, 33, 50, 23, 30, 2, 21, 20, 2,
-<a name="l03483"></a>03483 33, 33, 17, 17, 33, 50, 54, 53, 52, 38, 39, 38, 35, 33, -98, 2, 41, -110, 77, 108, -110, 89, -18, -2, -55,
-<a name="l03484"></a>03484 -2, -120, 1, 123, -68, -98, 93, 76, 49, -124, -2, -119, 5, -70, 14, 18, 101, -74, 109, -69, -2, -3, -3, -84, 3,
-<a name="l03485"></a>03485 1, -116, 127, 92, -125, 21, 13, 0, 0, 2, 0, 88, -1, -114, 5, -18, 5, -44, 0, 21, 0, 40, 1, 104, 64,
-<a name="l03486"></a>03486 -107, 95, 38, -97, 38, 2, 25, 24, 55, 21, 2, 11, 28, 4, 31, 4, 35, 27, 28, 20, 31, 20, 35, 6, 42,
-<a name="l03487"></a>03487 5, 45, 23, 43, 38, 59, 5, 60, 23, 58, 38, 76, 5, 76, 23, 73, 38, 93, 5, 85, 35, 88, 38, 111, 5,
-<a name="l03488"></a>03488 123, 3, 122, 5, -116, 3, -116, 5, -107, 0, -102, 3, -92, 0, -85, 3, -43, 0, -43, 22, -27, 0, -27, 23, -27,
-<a name="l03489"></a>03489 24, 26, 28, 5, 43, 0, 42, 5, 59, 5, 4, 93, 5, -110, 24, -106, 38, -43, 38, 4, 37, 22, 42, 38, 52,
-<a name="l03490"></a>03490 22, 57, 38, 73, 24, 73, 28, 69, 31, 69, 35, 75, 38, 86, 8, 88, 17, 85, 21, 90, 28, 90, 29, 86, 31,
-<a name="l03491"></a>03491 87, 32, 87, 34, 105, 5, 102, 21, 107, 38, 123, 38, -114, 28, -114, 38, -37, 24, -36, 38, 25, 11, 24, 1, 21,
-<a name="l03492"></a>03492 -72, -1, -44, -78, 27, 57, 0, -72, -1, -44, 64, 56, 27, 57, 4, 24, 20, 24, 42, 5, 58, 5, 4, 2, 3,
-<a name="l03493"></a>03493 22, 40, 3, 7, 40, 38, 24, 22, 5, 0, 6, 33, 3, 19, 26, 5, 2, 40, 38, 24, 22, 0, 5, 36, 30,
-<a name="l03494"></a>03494 30, 15, 3, 2, 8, 36, 30, 7, 9, 26, 38, 19, 24, 15, 15, 2, 85, 19, -72, -1, -18, -76, 13, 13, 2,
-<a name="l03495"></a>03495 85, 19, -72, -1, -24, -76, 12, 12, 2, 85, 19, -72, -1, -16, -76, 11, 11, 6, 85, 19, -72, -1, -12, -76, 13,
-<a name="l03496"></a>03496 13, 6, 85, 19, -72, -1, -12, 64, 37, 12, 12, 6, 85, 19, 74, 2, 26, 32, 42, -128, 42, 2, 42, 33, 38,
-<a name="l03497"></a>03497 32, 11, 1, 11, 24, 11, 11, 6, 85, 11, 6, 12, 12, 6, 85, 11, 25, 41, 99, 92, 24, 43, 78, 16, -12,
-<a name="l03498"></a>03498 43, 43, 93, 77, -19, 78, 16, 93, -10, 77, -12, 43, 43, 43, 43, 43, 43, -19, 0, 63, -19, 63, 63, -19, 17,
-<a name="l03499"></a>03499 23, 57, 18, 57, 1, 17, 18, 57, 18, 23, 57, 0, 17, 51, 16, -55, 16, -55, 93, 49, 48, 1, 43, 43, 93,
-<a name="l03500"></a>03500 93, 0, 114, 113, 93, 1, 93, 113, 114, 37, 22, 23, 7, 38, 39, 6, 35, 34, 36, 2, 53, 52, 18, 36, 51,
-<a name="l03501"></a>03501 50, 4, 18, 21, 20, 2, 37, 22, 23, 54, 17, 52, 2, 38, 35, 34, 0, 17, 16, 0, 51, 50, 55, 38, 39,
-<a name="l03502"></a>03502 4, -11, -121, 114, 57, -98, -99, -93, -59, -57, -2, -68, -81, -80, 1, 69, -55, -53, 1, 70, -85, 110, -3, -26, -88,
-<a name="l03503"></a>03503 109, -85, 121, -23, -111, -39, -2, -30, 1, 27, -36, 104, 92, 91, 101, -99, 93, 43, -121, 57, 123, 91, -64, 1, 92,
-<a name="l03504"></a>03504 -38, -39, 1, 100, -70, -63, -2, -91, -38, -75, -2, -33, -115, 47, 93, -100, 1, 57, -78, 1, 10, -109, -2, -41, -2,
-<a name="l03505"></a>03505 -39, -2, -30, -2, -50, 39, 59, 25, 0, 2, 0, -95, 0, 0, 5, -83, 5, -70, 0, 24, 0, 34, 1, -4, 64,
-<a name="l03506"></a>03506 33, 18, 11, 14, 1, 18, 54, 28, 90, 31, 102, 8, 109, 31, 4, 9, 16, 13, 13, 6, 85, 8, 16, 13, 13,
-<a name="l03507"></a>03507 6, 85, 7, 16, 13, 13, 6, 85, 36, -72, -1, -64, -76, 12, 12, 2, 85, 13, -72, -1, -12, -76, 12, 12, 2,
-<a name="l03508"></a>03508 85, 12, -72, -1, -12, -76, 12, 12, 2, 85, 11, -72, -1, -12, -76, 12, 12, 2, 85, 18, -72, -1, -30, -77, 18,
-<a name="l03509"></a>03509 26, 52, 18, -72, -1, -16, -77, 34, 39, 52, 17, -72, -1, -30, -77, 29, 39, 52, 16, -72, -1, -30, -77, 29, 39,
-<a name="l03510"></a>03510 52, 15, -72, -1, -30, -77, 29, 39, 52, 18, -72, -1, -40, -77, 29, 38, 52, 17, -72, -1, -30, -77, 18, 26, 52,
-<a name="l03511"></a>03511 16, -72, -1, -30, -77, 18, 26, 52, 15, -72, -1, -30, 64, 73, 18, 26, 52, 37, 14, 74, 28, 74, 32, 83, 11,
-<a name="l03512"></a>03512 92, 28, 109, 28, 114, 9, 120, 14, 121, 15, -123, 10, -120, 15, -105, 13, -87, 15, -72, 15, -24, 14, -25, 15, 16,
-<a name="l03513"></a>03513 14, 12, 12, 32, 17, 15, 20, 17, 17, 15, 17, 15, 12, 9, 18, 27, 2, 33, 26, 22, 10, 6, 18, 17, 16,
-<a name="l03514"></a>03514 13, 12, 5, 24, 9, 9, 22, 23, 26, 25, 30, 23, -72, -1, -64, 64, 25, 11, 11, 6, 85, 23, 23, 0, 33,
-<a name="l03515"></a>03515 34, 30, 2, 1, 2, 0, 24, 24, 15, 15, 14, 8, 30, 38, 14, -100, 6, -72, -1, -24, -76, 15, 15, 2, 85,
-<a name="l03516"></a>03516 6, -72, -1, -10, -76, 13, 13, 2, 85, 6, -72, -1, -32, 64, 34, 12, 12, 2, 85, 6, 6, 13, 13, 6, 85,
-<a name="l03517"></a>03517 6, 93, 32, 36, 112, 36, -128, 36, 3, 36, 34, 24, 32, 1, 32, 0, 1, 0, 32, 16, 16, 2, 85, 0, -72,
-<a name="l03518"></a>03518 -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, 64, 11, 12, 12, 2,
-<a name="l03519"></a>03519 85, 0, 6, 11, 11, 6, 85, 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72, -1, -8, 64, 10, 13, 13, 6,
-<a name="l03520"></a>03520 85, 0, 93, 35, 59, -88, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 93, 60, 77, -3, 60, 16, 93,
-<a name="l03521"></a>03521 -10, 43, 43, 43, 43, 25, -28, 24, -19, 0, 63, 60, 16, 60, 16, 60, 63, 60, -3, 60, 18, 57, 47, 43, -3,
-<a name="l03522"></a>03522 60, 16, 60, 57, 47, 18, 23, 57, 1, 17, 23, 57, -121, 14, 46, 43, 5, 125, 16, -60, 49, 48, 1, 93, 43,
-<a name="l03523"></a>03523 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 43, 43, 43, 93, 67, 92, 88, 64, 10, 8, 64, 15,
-<a name="l03524"></a>03524 57, 15, 16, 58, 17, 18, 58, 43, 43, 43, 89, 1, 113, 67, 92, 88, -71, 0, 14, -1, -34, 64, 26, 25, 57,
-<a name="l03525"></a>03525 17, 34, 25, 57, 18, 34, 25, 57, 14, 64, 28, 57, 16, 34, 20, 57, 16, 34, 31, 57, 16, 34, 21, 57, 43,
-<a name="l03526"></a>03526 43, 43, 43, 43, 43, 43, 89, 51, 17, 33, 50, 22, 22, 21, 20, 6, 7, 22, 23, 22, 23, 19, 35, 3, 46,
-<a name="l03527"></a>03527 2, 39, 38, 35, 35, 17, 17, 33, 50, 54, 54, 53, 52, 38, 35, 33, -95, 2, -118, -60, -52, 122, -54, -45, 77,
-<a name="l03528"></a>03528 40, 85, 76, -1, -12, -62, 85, 110, 87, 45, 33, 75, -31, 1, -95, -123, -106, 78, -105, -93, -2, 48, 5, -70, 79,
-<a name="l03529"></a>03529 -56, 121, -100, -42, 29, 37, 36, 78, 117, -2, 113, 1, 49, -124, -116, 56, 11, 7, -3, 117, 3, 51, 55, 121, 71,
-<a name="l03530"></a>03530 104, -122, 0, 0, 1, 0, 92, -1, -25, 4, -21, 5, -45, 0, 48, 2, 21, 64, 39, 99, 3, 99, 4, 115, 3,
-<a name="l03531"></a>03531 116, 4, 4, 37, 39, 53, 3, 57, 28, 67, 3, 73, 7, 76, 29, 69, 31, 68, 36, 70, 39, 83, 3, 89, 7,
-<a name="l03532"></a>03532 92, 29, 87, 40, -119, 19, 14, 35, -72, -1, -14, -76, 16, 16, 2, 85, 36, -72, -1, -14, -76, 16, 16, 2, 85,
-<a name="l03533"></a>03533 37, -72, -1, -14, -76, 16, 16, 2, 85, 38, -72, -1, -14, -76, 16, 16, 2, 85, 39, -72, -1, -14, -76, 16, 16,
-<a name="l03534"></a>03534 2, 85, 35, -72, -1, -10, -76, 13, 16, 2, 85, 36, -72, -1, -10, -76, 13, 16, 2, 85, 37, -72, -1, -10, -76,
-<a name="l03535"></a>03535 13, 16, 2, 85, 38, -72, -1, -10, -76, 13, 16, 2, 85, 39, -72, -1, -10, 64, 70, 13, 16, 2, 85, 40, 13,
-<a name="l03536"></a>03536 38, 36, 2, 36, 3, 39, 37, 54, 15, 52, 35, 68, 37, 69, 47, 90, 32, 86, 35, 85, 37, 108, 11, 106, 13,
-<a name="l03537"></a>03537 107, 14, 102, 20, 101, 24, 121, 11, 122, 13, 122, 15, 125, 16, 117, 36, 115, 37, -122, 3, -118, 11, -119, 13, -118,
-<a name="l03538"></a>03538 15, -115, 16, -123, 36, -125, 37, -110, 13, -106, 15, -106, 21, 30, -79, 6, 2, 67, 84, 88, 64, 45, 33, 38, 18,
-<a name="l03539"></a>03539 27, 38, 26, 9, 38, 41, 1, 38, 0, 0, 41, 26, 18, 4, 50, 49, 38, 0, 101, 0, 2, 0, 13, 45, 121,
-<a name="l03540"></a>03540 27, -119, 27, 2, 27, 37, 22, 13, 45, 30, 39, 37, 1, 37, 5, 22, 5, -72, -1, -12, 64, 12, 12, 12, 6,
-<a name="l03541"></a>03541 85, 5, 30, 45, 9, 30, 30, 22, 3, 0, 63, -19, 63, -19, 43, 17, 18, 57, 93, 17, 18, 57, 17, 18, 57,
-<a name="l03542"></a>03542 93, 17, 18, 57, 93, 1, 17, 18, 23, 57, 47, -19, 47, -19, 47, -19, 47, -19, 27, 64, 45, 37, 36, 14, 13,
-<a name="l03543"></a>03543 11, 5, 33, 28, 29, 30, 27, 8, 7, 6, 4, 3, 2, 6, 1, 37, 36, 34, 14, 13, 11, 6, 5, 30, 27,
-<a name="l03544"></a>03544 45, 26, 64, 12, 12, 2, 85, -113, 26, 1, 26, -19, 22, 0, 45, 1, -72, -1, -64, 64, 18, 12, 12, 2, 85,
-<a name="l03545"></a>03545 16, 1, 32, 1, 80, 1, 96, 1, 112, 1, -112, 1, 6, 1, -72, 1, -80, 64, 19, 45, 30, 30, 22, 3, 5,
-<a name="l03546"></a>03546 30, 45, 9, 27, 38, 26, 74, 9, 38, 0, 41, 1, 41, -72, -1, -22, -76, 14, 14, 2, 85, 41, -72, -1, -12,
-<a name="l03547"></a>03547 64, 13, 12, 12, 2, 85, 41, 26, 50, 33, 38, 18, 1, 38, 18, -72, -1, -20, -76, 14, 14, 2, 85, 18, -72,
-<a name="l03548"></a>03548 -1, -10, -76, 13, 13, 2, 85, 18, -72, -1, -8, 64, 15, 12, 12, 2, 85, 18, 84, 32, 0, 1, 0, 25, 49,
-<a name="l03549"></a>03549 99, 91, 24, 43, 78, 16, -12, 93, 77, -28, 43, 43, 43, -19, 16, -19, 78, 16, -10, 43, 43, 93, 77, -19, -12,
-<a name="l03550"></a>03550 -19, 0, 63, -19, 63, -19, 16, -3, 93, 43, -28, 16, -3, 93, 43, -12, 17, 18, 23, 57, 17, 23, 57, 17, 18,
-<a name="l03551"></a>03551 57, 57, 1, 18, 23, 57, 89, 49, 48, 0, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 93, 113,
-<a name="l03552"></a>03552 19, 55, 30, 2, 51, 50, 54, 54, 53, 52, 38, 39, 38, 36, 39, 38, 38, 53, 52, 54, 54, 51, 50, 22, 22,
-<a name="l03553"></a>03553 23, 7, 38, 38, 35, 34, 6, 21, 20, 23, 22, 4, 23, 22, 22, 21, 20, 6, 6, 35, 34, 36, 38, 92, -73,
-<a name="l03554"></a>03554 13, 95, -56, 125, 111, -86, 83, 80, 92, 59, -2, 108, 81, 105, 103, 126, -14, -108, -93, -7, -122, 5, -70, 15, -83,
-<a name="l03555"></a>03555 -87, -80, -95, 57, 56, 1, -39, 88, -128, 122, -122, -5, -99, -57, -2, -13, -103, 1, -41, 16, 110, -115, 87, 66, 115,
-<a name="l03556"></a>03556 68, 69, 103, 35, 23, 97, 43, 55, -93, 101, 111, -63, 100, 105, -52, -127, 14, -117, -114, -127, 91, 79, 51, 51, 107,
-<a name="l03557"></a>03557 40, 59, -75, 118, 117, -49, 115, 116, -23, 0, 0, 1, 0, 48, 0, 0, 4, -70, 5, -70, 0, 7, 0, -119, 64,
-<a name="l03558"></a>03558 13, 5, 2, 30, 4, 3, 2, 0, 8, 7, 6, 5, 4, 9, -72, 2, 115, -77, 32, 4, 1, 4, -72, 1, 1,
-<a name="l03559"></a>03559 -73, 6, 32, 1, 2, 47, 3, 1, 3, -72, 1, 1, -75, 1, 1, 32, 0, 1, 0, -72, -1, -24, 64, 11, 16,
-<a name="l03560"></a>03560 16, 2, 85, 0, 8, 15, 15, 2, 85, 0, -72, -1, -14, -76, 12, 12, 2, 85, 0, -72, -1, -30, -76, 13, 13,
-<a name="l03561"></a>03561 2, 85, 0, -72, -1, -4, -76, 12, 12, 6, 85, 0, -72, -1, -2, -76, 13, 13, 6, 85, 0, -72, 2, 115, -77,
-<a name="l03562"></a>03562 8, -74, -103, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 93, 60, 16, -12, 93, 60, 16, -3, -28, 93, -26, 16,
-<a name="l03563"></a>03563 60, 16, 60, 0, 63, 63, 60, -3, 60, 49, 48, 33, 17, 33, 53, 33, 21, 33, 17, 2, 19, -2, 29, 4, -118,
-<a name="l03564"></a>03564 -2, 27, 5, 13, -83, -83, -6, -13, 0, 0, 1, 0, -95, -1, -25, 5, 34, 5, -70, 0, 20, 0, -39, 64, 10,
-<a name="l03565"></a>03565 38, 15, 88, 4, 88, 8, -55, 8, 4, 22, -72, -1, -64, 64, 22, 19, 21, 52, 52, 4, 59, 8, 70, 4, 74,
-<a name="l03566"></a>03566 8, 118, 15, -90, 5, -24, 15, 7, 12, 0, 2, 17, -72, 2, -69, -76, 6, 9, 20, 38, 2, -72, -1, -20, -76,
-<a name="l03567"></a>03567 15, 15, 2, 85, 2, -72, -1, -14, 64, 11, 13, 13, 2, 85, 2, 16, 12, 12, 2, 85, 2, -72, -1, -32, 64,
-<a name="l03568"></a>03568 28, 11, 11, 6, 85, 2, 93, 32, 22, 1, 32, 22, 80, 22, 2, 96, 22, 112, 22, -128, 22, 3, 22, 13, 38,
-<a name="l03569"></a>03569 32, 10, 1, 10, -72, -1, -64, 64, 10, 19, 21, 52, 10, 32, 16, 16, 2, 85, 10, -72, -1, -10, -76, 15, 15,
-<a name="l03570"></a>03570 2, 85, 10, -72, -1, -10, -76, 13, 13, 2, 85, 10, -72, -1, -6, 64, 11, 12, 12, 2, 85, 10, 4, 11, 11,
-<a name="l03571"></a>03571 6, 85, 10, -72, -1, -9, -76, 12, 12, 6, 85, 10, -72, -1, -8, 64, 10, 13, 13, 6, 85, 10, 93, 21, 59,
-<a name="l03572"></a>03572 89, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 93, -19, 77, 16, 93, 93, 113, -10, 43, 43, 43,
-<a name="l03573"></a>03573 43, 77, -19, 0, 63, -19, 63, 60, 49, 48, 1, 93, 43, 0, 93, 1, 51, 17, 20, 2, 4, 35, 34, 36, 2,
-<a name="l03574"></a>03574 53, 17, 51, 17, 20, 22, 22, 51, 50, 54, 17, 4, 96, -62, 100, -2, -5, -44, -50, -2, -6, 112, -62, 71, -83,
-<a name="l03575"></a>03575 125, -42, -74, 5, -70, -4, -79, -35, -2, -4, -93, -114, 1, 13, -23, 3, 79, -4, -78, -65, -75, 98, -62, 1, 20,
-<a name="l03576"></a>03576 0, 0, 1, 0, 9, 0, 0, 5, 70, 5, -70, 0, 10, 1, 62, -79, 2, 2, 67, 84, 88, 64, 18, 5, 1,
-<a name="l03577"></a>03577 0, 8, 2, 1, 2, 0, 8, 10, 0, 5, 9, 8, 5, 1, 2, 5, 47, -35, -51, 16, -35, -51, 17, 51, 51,
-<a name="l03578"></a>03578 0, 63, 63, 63, 17, 18, 57, 49, 48, 27, 64, 36, 47, 5, 1, 42, 0, 40, 3, 37, 10, 47, 12, 48, 12,
-<a name="l03579"></a>03579 96, 12, -119, 8, -119, 9, -112, 12, -64, 12, -16, 12, 11, 32, 12, 80, 12, 2, 4, 2, 11, 8, 2, -79, 6,
-<a name="l03580"></a>03580 2, 67, 84, 88, -73, 9, 1, 12, 11, 0, 8, 1, 2, 0, 63, 63, 1, 17, 18, 57, 57, 27, 64, 36, 10,
-<a name="l03581"></a>03581 9, 9, 32, 8, 5, 20, 8, 8, 5, 0, 1, 1, 32, 2, 5, 20, 2, 2, 5, 9, 1, 2, 5, -23, 32,
-<a name="l03582"></a>03582 10, 0, 8, 9, 101, 8, 1, 101, 2, 8, -72, -1, -64, 64, 11, 40, 57, 80, 8, 1, -128, 8, -112, 8, 2,
-<a name="l03583"></a>03583 8, -72, 1, 1, 64, 13, 2, 64, 40, 57, 95, 2, 1, -113, 2, -97, 2, 2, 2, -72, 1, 1, 64, 17, 32,
-<a name="l03584"></a>03584 5, 80, 5, 2, 48, 5, 96, 5, -112, 5, -64, 5, -16, 5, 5, 5, -72, 2, -120, -77, 11, 96, -88, 24, 43,
-<a name="l03585"></a>03585 25, 16, -12, 93, 113, -28, 93, 113, 43, -28, 93, 113, 43, 24, 16, -19, 16, -19, 0, 63, 60, 26, 25, -19, 24,
-<a name="l03586"></a>03586 63, 60, -121, 5, 46, 43, 125, 16, -60, -121, 46, 24, 43, 125, 16, -60, 1, 75, -80, 11, 83, 75, -80, 20, 81,
-<a name="l03587"></a>03587 90, 88, -78, 0, 15, 10, -72, -1, -15, -78, 9, 18, 1, -72, -1, -15, -78, 8, 20, 2, -72, -1, -18, 56, 56,
-<a name="l03588"></a>03588 56, 56, 56, 56, 89, 1, 75, -80, 40, 83, 75, -80, 54, 81, 90, 88, -71, 0, 0, -1, -64, 56, 89, 89, 49,
-<a name="l03589"></a>03589 48, 1, 93, 113, 93, 0, 93, 89, 33, 1, 51, 1, 22, 23, 54, 55, 1, 51, 1, 2, 65, -3, -56, -46, 1,
-<a name="l03590"></a>03590 125, 46, 31, 34, 45, 1, -116, -58, -3, -62, 5, -70, -5, -41, -128, 112, 120, 120, 4, 41, -6, 70, 0, 0, 1,
-<a name="l03591"></a>03591 0, 25, 0, 0, 7, 118, 5, -70, 0, 24, 1, -37, 64, 38, 41, 0, 38, 17, 41, 18, 38, 24, 57, 0, 54,
-<a name="l03592"></a>03592 17, 57, 18, 54, 24, 73, 0, 71, 17, 73, 18, 71, 24, 88, 0, 87, 17, 88, 18, 87, 24, 16, -104, 8, -104,
-<a name="l03593"></a>03593 15, 2, -79, 6, 2, 67, 84, 88, 64, 51, 16, 1, 26, 25, 43, 21, 52, 5, 52, 12, 68, 5, 68, 12, 75,
-<a name="l03594"></a>03594 21, 84, 5, 84, 12, 91, 21, 100, 5, 100, 12, 107, 21, 116, 5, 116, 12, 123, 21, 15, 5, 21, 12, 3, 0,
-<a name="l03595"></a>03595 1, 18, 8, 0, 8, 15, 2, 8, 2, 1, 2, 0, 63, 63, 63, 63, 63, 17, 18, 23, 57, 93, 1, 17, 18,
-<a name="l03596"></a>03596 57, 57, 27, 64, 30, 3, 4, 5, 5, 2, 6, 7, 8, 8, 5, 10, 11, 12, 12, 9, 13, 14, 15, 15, 12,
-<a name="l03597"></a>03597 20, 19, 18, 18, 21, 22, 23, 24, 24, 21, -72, -1, 60, -77, 5, 0, 24, 32, -72, -1, 60, -77, 12, 18, 17,
-<a name="l03598"></a>03598 32, -72, -1, 60, 64, 90, 21, 8, 9, 32, 0, 5, 2, 2, 32, 1, 0, 20, 1, 1, 0, 24, 5, 8, 8,
-<a name="l03599"></a>03599 30, 21, 24, 20, 21, 21, 24, 18, 12, 9, 9, 30, 21, 18, 20, 21, 21, 18, 17, 12, 15, 15, 32, 16, 17,
-<a name="l03600"></a>03600 20, 16, 16, 17, 18, 9, 12, 8, 24, 21, 5, 15, 17, 16, 12, 0, 2, 5, 21, 12, 5, 3, 24, 16, 15,
-<a name="l03601"></a>03601 15, 9, 9, 8, 8, 2, 2, 1, 2, 24, 18, 18, 17, 17, 0, 8, 26, 23, 23, 26, 16, 65, 9, 1, 81,
-<a name="l03602"></a>03602 0, 32, 0, 12, 1, 81, 0, 21, 1, 81, 0, 64, 0, 5, 1, 81, -74, 32, 32, 1, 1, 1, 25, 25, -72,
-<a name="l03603"></a>03603 1, -117, -79, -88, 24, 43, 78, 16, -12, 93, 26, 25, 77, -3, 26, 24, -3, -3, 26, 25, -3, 24, 78, 69, 101,
-<a name="l03604"></a>03604 68, -26, 0, 63, 60, 16, 60, 16, 60, 63, 60, 16, 60, 16, 60, 16, 60, 16, 60, 18, 23, 57, 1, 18, 57,
-<a name="l03605"></a>03605 57, 17, 18, 57, 57, 17, 18, 57, 57, 17, 57, 57, -121, 77, 46, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125,
-<a name="l03606"></a>03606 -60, -121, 46, 24, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125, -60, 43, 43, 43, -121, 14, 16, -60, -60, -121, 14,
-<a name="l03607"></a>03607 16, 60, -60, -121, 14, 16, -60, -60, -121, 14, 16, -60, -60, -121, 14, 16, -60, -60, -121, 14, 16, -60, -60, 1, 75,
-<a name="l03608"></a>03608 -80, 15, 83, 75, -80, 17, 81, 90, 88, -78, 18, 10, 24, -72, -1, -10, 56, 56, 89, 1, 75, -80, 37, 83, 75,
-<a name="l03609"></a>03609 -80, 42, 81, 90, 88, -71, 0, 0, -1, -64, 56, 89, 0, 75, -80, 11, 83, 75, -80, 14, 81, 90, 88, -77, 12,
-<a name="l03610"></a>03610 64, 5, 64, 56, 56, 89, 89, 49, 48, 1, 114, 93, 33, 1, 51, 19, 22, 23, 54, 55, 1, 51, 19, 18, 23,
-<a name="l03611"></a>03611 54, 55, 19, 51, 1, 35, 1, 38, 39, 6, 7, 1, 1, -98, -2, 123, -57, -33, 36, 26, 56, 10, 1, 23, -22,
-<a name="l03612"></a>03612 -46, 79, 35, 28, 45, -26, -61, -2, 110, -69, -2, -53, 39, 7, 23, 20, -2, -55, 5, -70, -4, 63, -105, -107, -21,
-<a name="l03613"></a>03613 36, 3, -34, -3, 26, -2, -20, -13, -117, -76, 3, -82, -6, 70, 4, 93, -116, 32, 101, 71, -5, -93, 0, 1, 0,
-<a name="l03614"></a>03614 9, 0, 0, 5, 73, 5, -70, 0, 19, 2, -75, 64, 41, 38, 18, 1, 25, 1, 22, 11, 2, 41, 18, 41, 19,
-<a name="l03615"></a>03615 56, 1, 55, 3, 56, 8, 56, 9, 56, 13, 58, 14, 53, 18, 55, 19, 10, 18, 19, 32, 18, 33, 52, 18, 32,
-<a name="l03616"></a>03616 18, 33, 52, 14, -72, -1, -32, -77, 18, 33, 52, 13, -72, -1, -32, -77, 18, 33, 52, 9, -72, -1, -32, -77, 18,
-<a name="l03617"></a>03617 33, 52, 8, -72, -1, -32, 64, 108, 18, 33, 52, 4, 32, 18, 33, 52, 3, 32, 18, 33, 52, 119, 1, 119, 11,
-<a name="l03618"></a>03618 2, 38, 4, 41, 7, 40, 11, 42, 14, 38, 18, 54, 4, 58, 8, 58, 11, 58, 14, 53, 18, 72, 8, 84, 4,
-<a name="l03619"></a>03619 93, 8, 92, 11, 90, 14, 84, 18, 103, 1, 101, 4, 106, 8, 107, 11, 105, 14, 101, 18, 117, 4, 122, 8, 121,
-<a name="l03620"></a>03620 11, 122, 13, 119, 18, 119, 19, -122, 4, -118, 7, -118, 10, -107, 4, -72, 8, -73, 18, -58, 4, -55, 8, -41, 4,
-<a name="l03621"></a>03621 -40, 8, -39, 14, -42, 18, -25, 4, -24, 8, -24, 14, -26, 18, 44, 6, -72, -1, -22, 64, 17, 12, 17, 2, 85,
-<a name="l03622"></a>03622 16, 22, 12, 17, 2, 85, 11, 8, 12, 17, 2, 85, 1, -72, -1, -8, -77, 12, 17, 2, 85, -79, 6, 2, 67,
-<a name="l03623"></a>03623 84, 88, 64, 11, 12, 0, 21, 20, 16, 24, 10, 17, 6, 85, 6, -72, -1, -24, 64, 14, 10, 17, 6, 85, 16,
-<a name="l03624"></a>03624 6, 0, 2, 13, 0, 8, 10, 2, 2, 0, 63, 60, 63, 60, 17, 18, 57, 57, 43, 43, 1, 17, 18, 57, 57,
-<a name="l03625"></a>03625 27, 64, 93, 6, 7, 8, 9, 9, 1, 6, 5, 4, 3, 3, 11, 16, 16, 19, 15, 14, 13, 13, 1, 16, 16,
-<a name="l03626"></a>03626 13, 17, 18, 19, 19, 11, 1, 0, 9, 2, 13, 11, 3, 12, 19, 10, 11, 1, 6, 16, 2, 19, 9, 10, 19,
-<a name="l03627"></a>03627 19, 32, 0, 9, 20, 0, 0, 9, 3, 2, 13, 13, 32, 12, 3, 20, 12, 12, 3, 10, 9, 9, 3, 3, 2,
-<a name="l03628"></a>03628 2, 19, 13, 13, 12, 12, 0, 8, 47, 21, 1, 21, 23, 23, 26, 32, 12, 64, 12, 2, 12, -72, 1, 95, -73,
-<a name="l03629"></a>03629 32, 10, -112, 10, -64, 10, 3, 10, -72, 1, -72, -75, 95, 2, -97, 2, 2, 2, -72, 1, -72, 64, 10, 6, -76,
-<a name="l03630"></a>03630 64, 16, 80, 16, -49, 16, 3, 16, -72, 1, 95, 64, 10, 32, 0, 25, 20, 21, -62, 33, 96, -88, 24, 43, 43,
-<a name="l03631"></a>03631 78, -12, 26, 25, 77, -3, 93, 24, -27, 25, -19, 93, -19, 93, -3, 93, 24, 78, 69, 101, 68, -26, 93, 0, 63,
-<a name="l03632"></a>03632 60, 16, 60, 16, 60, 63, 60, 16, 60, 16, 60, -121, 5, 77, 46, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125,
-<a name="l03633"></a>03633 -60, 0, 17, 18, 57, 57, 57, 57, 15, 15, -121, 14, 16, 60, 60, 8, -60, -121, 14, 16, 60, 60, 8, -60, -121,
-<a name="l03634"></a>03634 14, 16, 60, 60, -60, -121, 14, 16, -60, -60, -60, 89, 43, 43, 0, 43, 43, 49, 48, 1, 93, 0, 93, 1, 43,
-<a name="l03635"></a>03635 43, 43, 43, 43, 43, 43, 43, 67, 92, 88, -71, 0, 11, -1, -34, 64, 11, 25, 57, 1, 34, 25, 57, 14, 24,
-<a name="l03636"></a>03636 27, 57, 18, -72, -1, -34, -78, 27, 57, 19, -72, -1, -34, -78, 27, 57, 4, -72, -1, -24, -74, 27, 57, 8, 34,
-<a name="l03637"></a>03637 27, 57, 9, -72, -1, -64, -78, 28, 57, 13, -72, -1, -64, 64, 31, 28, 57, 19, 64, 28, 57, 3, 64, 28, 57,
-<a name="l03638"></a>03638 13, 14, 22, 23, 60, 19, 18, 22, 23, 61, 8, 9, 22, 23, 60, 3, 4, 22, 23, 61, 11, -72, -1, -34, 64,
-<a name="l03639"></a>03639 46, 18, 57, 1, 34, 18, 57, 11, 12, 29, 33, 61, 1, 0, 29, 33, 60, 11, 10, 29, 33, 61, 1, 2, 29,
-<a name="l03640"></a>03640 33, 60, 11, 12, 19, 23, 61, 1, 0, 19, 23, 60, 11, 10, 19, 23, 61, 1, 2, 19, 23, 60, 43, 43, 43,
-<a name="l03641"></a>03641 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 89, 1,
-<a name="l03642"></a>03642 113, 1, 93, 113, 51, 1, 1, 51, 1, 22, 23, 54, 55, 1, 51, 1, 1, 35, 1, 38, 39, 6, 7, 1, 9,
-<a name="l03643"></a>03643 2, 55, -2, 12, -25, 1, 10, 83, 35, 49, 67, 1, 39, -45, -3, -3, 2, 43, -16, -2, -113, 31, 33, 49, 21,
-<a name="l03644"></a>03644 -2, -112, 2, -4, 2, -66, -2, -120, 117, 63, 80, 87, 1, -123, -3, 77, -4, -7, 2, 11, 45, 53, 80, 30, -2,
-<a name="l03645"></a>03645 1, 0, 0, 1, 0, 6, 0, 0, 5, 70, 5, -70, 0, 12, 1, 106, -74, 8, 9, 58, 3, 4, 59, 9, -72,
-<a name="l03646"></a>03646 -1, -25, -77, 18, 23, 52, 8, -72, -1, -25, 64, 14, 18, 23, 52, 4, 25, 18, 23, 52, 3, 25, 18, 23, 52,
-<a name="l03647"></a>03647 9, -72, -1, -40, -77, 24, 33, 52, 8, -72, -1, -40, 64, 59, 24, 33, 52, 4, 40, 24, 33, 52, 18, 38, 4,
-<a name="l03648"></a>03648 41, 8, 42, 10, 47, 14, 4, 104, 1, 104, 6, 104, 11, -34, 6, 4, 5, 4, 3, 3, 6, 8, 7, 9, 6,
-<a name="l03649"></a>03649 6, 9, 6, 3, 9, 10, 12, 16, 2, 85, 9, 32, 10, 11, 20, 10, 10, 11, 6, 3, 6, 9, 3, -72, -1,
-<a name="l03650"></a>03650 -10, 64, 22, 12, 16, 2, 85, 3, 32, 2, 1, 20, 2, 2, 1, 6, 12, 11, 6, 1, 3, 2, 0, 1, 11,
-<a name="l03651"></a>03651 -72, 2, 25, 64, 9, 10, 10, 9, 3, 2, 2, 0, 8, 14, -72, 2, 24, 64, 9, 12, 9, 82, 64, 10, -128,
-<a name="l03652"></a>03652 10, 2, 10, -72, 1, -75, 64, 13, 11, 11, 12, 32, 0, 3, 82, 79, 2, -113, 2, 2, 2, -72, 1, -75, 64,
-<a name="l03653"></a>03653 9, 1, 1, 0, 20, 16, 16, 2, 85, 0, -72, -1, -10, 64, 11, 15, 15, 2, 85, 0, 12, 13, 13, 2, 85,
-<a name="l03654"></a>03654 0, -72, -1, -30, -76, 12, 12, 2, 85, 0, -72, 2, 24, -74, 13, 14, -62, 33, 96, -88, 24, 43, 43, -10, 43,
-<a name="l03655"></a>03655 43, 43, 43, 60, 16, -12, 93, -19, 16, -3, 60, 16, -12, 93, -19, 16, -26, 0, 63, 63, 60, 60, 60, 16, -12,
-<a name="l03656"></a>03656 60, 17, 18, 23, 57, 1, 18, 57, -121, 46, 43, 43, 8, 125, 16, -60, 5, -121, 46, 24, 43, 43, 8, 125, 16,
-<a name="l03657"></a>03657 -60, -121, 14, -60, -60, -121, 16, 14, -60, -60, 75, -80, 23, 83, 75, -80, 28, 81, 90, 88, -76, 8, 12, 9, 12,
-<a name="l03658"></a>03658 4, -70, -1, -12, 0, 3, -1, -12, 1, 56, 56, 56, 56, 89, 49, 48, 0, 93, 1, 93, 67, 92, 88, 64, 9,
-<a name="l03659"></a>03659 9, 34, 25, 57, 8, 34, 25, 57, 4, -72, -1, -34, -79, 25, 57, 43, 43, 43, 89, 43, 43, 43, 43, 43, 43,
-<a name="l03660"></a>03660 43, 43, 43, 33, 17, 1, 51, 1, 22, 23, 54, 55, 1, 51, 1, 17, 2, 59, -3, -53, -20, 1, 33, 80, 69,
-<a name="l03661"></a>03661 66, 94, 1, 28, -30, -3, -73, 2, 109, 3, 77, -2, 70, 124, 124, 115, -112, 1, -81, -4, -77, -3, -109, 0, 0,
-<a name="l03662"></a>03662 1, 0, 41, 0, 0, 4, -80, 5, -70, 0, 12, 1, 12, -79, 18, 14, -72, -1, -64, 64, 15, 13, 17, 52, 72,
-<a name="l03663"></a>03663 1, 71, 8, 72, 9, 3, 10, 8, 11, 9, 2, -79, 6, 2, 67, 84, 88, 64, 14, 12, 0, 14, 13, 1, 11,
-<a name="l03664"></a>03664 30, 12, 8, 8, 5, 30, 6, 2, 0, 63, -3, 60, 63, -3, -60, 1, 17, 18, 57, 57, 27, 64, 43, -85, 4,
-<a name="l03665"></a>03665 1, 3, 2, 1, 1, 4, 9, 10, 4, 8, 10, 10, 38, 29, 33, 52, 40, 10, 1, -7, 10, 1, 10, 32, 1,
-<a name="l03666"></a>03666 4, 20, 1, 1, 4, 10, 40, 11, 28, 52, 1, 40, 11, 28, 52, 8, -72, -1, -40, -77, 11, 28, 52, 4, -72,
-<a name="l03667"></a>03667 -1, -40, 64, 19, 11, 28, 52, 1, 10, 4, 8, 5, 30, 7, 6, 2, 11, 10, 30, 12, 0, 8, 10, -69, 1,
-<a name="l03668"></a>03668 -75, 0, 1, 0, 4, 1, -75, 64, 27, 0, 7, 48, 8, 64, 8, 2, 8, 74, 12, 63, 11, 1, 11, 26, 14,
-<a name="l03669"></a>03669 1, 0, 5, 6, 81, 0, 25, 13, -74, -103, 24, 43, 78, 16, -12, 77, -12, 60, 16, 60, 78, 16, -10, 93, 60,
-<a name="l03670"></a>03670 77, -12, 113, 60, 16, -28, 16, -4, 0, 63, 60, -3, 60, 63, 60, -3, 60, 60, 17, 57, 1, 43, 43, 43, 43,
-<a name="l03671"></a>03671 -121, 5, 46, 43, 93, 113, 43, -121, 125, -60, 14, 16, -60, -121, 14, 16, -60, -60, 1, 114, 89, 49, 48, 1, 113,
-<a name="l03672"></a>03672 93, 43, 67, 92, 88, 64, 9, 2, 34, 33, 57, 1, 24, 33, 57, 9, -72, -1, -34, -75, 25, 57, 2, 34, 25,
-<a name="l03673"></a>03673 57, 43, 43, 43, 43, 89, 51, 53, 1, 54, 55, 33, 53, 33, 21, 1, 7, 33, 21, 41, 2, -17, 80, 72, -4,
-<a name="l03674"></a>03674 -50, 4, 26, -4, -55, 89, 3, -88, -76, 3, -85, 100, 74, -83, -83, -4, 7, 103, -83, 0, 1, 0, -117, -2, 105,
-<a name="l03675"></a>03675 2, 24, 5, -70, 0, 7, 0, 70, 64, 43, 4, 3, 43, 1, 2, 16, 5, 6, 43, 0, 7, 18, 3, 2, 2,
-<a name="l03676"></a>03676 7, 6, -82, 4, 5, 37, 1, 0, 6, 12, 12, 2, 85, 0, 8, 9, 9, 2, 85, 32, 0, 1, 0, -84, 8,
-<a name="l03677"></a>03677 -99, 104, 24, 43, 16, -10, 93, 43, 43, 60, -3, 60, -12, 60, 60, 16, 60, 0, 63, 60, -3, 60, 63, 60, -3,
-<a name="l03678"></a>03678 60, 49, 48, 19, 17, 33, 21, 35, 17, 51, 21, -117, 1, -115, -39, -39, -2, 105, 7, 81, -107, -7, -39, -107, 0,
-<a name="l03679"></a>03679 0, 1, 0, 0, -1, -25, 2, 57, 5, -45, 0, 3, 0, 76, 64, 36, 1, 1, 34, 20, 57, 0, 34, 20, 57,
-<a name="l03680"></a>03680 -104, 0, 1, 1, 0, -112, 0, -96, 0, 2, 0, 118, 3, 2, 20, 3, 3, 2, 2, 1, 0, 3, 0, 10, 3,
-<a name="l03681"></a>03681 -24, 0, -72, 1, -87, -73, 2, -24, 1, 1, 4, -77, 122, 24, 43, 16, 60, 16, -19, -12, -19, 0, 63, 60, 63,
-<a name="l03682"></a>03682 60, -121, 5, 46, 43, 93, 125, 16, -60, 49, 48, 1, 93, 43, 43, 5, 1, 51, 1, 1, -87, -2, 87, -111, 1,
-<a name="l03683"></a>03683 -88, 25, 5, -20, -6, 20, 0, 1, 0, 39, -2, 105, 1, -76, 5, -70, 0, 7, 0, 63, 64, 23, 4, 5, 43,
-<a name="l03684"></a>03684 7, 6, 16, 3, 2, 43, 0, 1, 18, 6, 5, 5, 1, 2, -82, 4, 3, 37, 7, 0, -72, -1, -20, 64, 10,
-<a name="l03685"></a>03685 12, 12, 2, 85, 0, -84, 9, -101, 90, 24, 43, 16, -12, 43, 60, -3, 60, -12, 60, 60, 16, 60, 0, 63, 60,
-<a name="l03686"></a>03686 -3, 60, 63, 60, -3, 60, 49, 48, 1, 33, 53, 51, 17, 35, 53, 33, 1, -76, -2, 115, -39, -39, 1, -115, -2,
-<a name="l03687"></a>03687 105, -107, 6, 39, -107, 0, 0, 1, 0, 54, 2, -78, 3, -117, 5, -45, 0, 6, 0, 97, -71, 0, 0, -1, -64,
-<a name="l03688"></a>03688 64, 21, 20, 57, 0, 64, 20, 57, 38, 2, 41, 3, 2, 6, 2, 9, 3, 2, 5, 1, 6, 60, 1, -72, 1,
-<a name="l03689"></a>03689 101, 64, 23, 2, 5, 60, 4, 0, 60, 1, 6, 6, 3, 2, 8, 56, 4, -36, 3, 108, 2, -36, 1, 105, 7,
-<a name="l03690"></a>03690 8, -68, 1, 50, 0, 33, 1, -65, 1, -127, 0, 24, 43, 43, -10, -12, -10, -12, -28, 17, 18, 61, 57, 47, 24,
-<a name="l03691"></a>03691 16, -19, 16, -19, 0, 47, -19, -19, 16, 60, 49, 48, 1, 113, 113, 43, 43, 19, 35, 1, 51, 1, 35, 3, -17,
-<a name="l03692"></a>03692 -71, 1, 97, -111, 1, 99, -75, -9, 2, -78, 3, 33, -4, -33, 2, 85, 0, 0, 1, -1, -31, -2, 105, 4, -118,
-<a name="l03693"></a>03693 -2, -21, 0, 3, 0, 26, 64, 12, 1, 63, 0, 2, 26, 5, 0, 25, 4, 67, 65, 24, 43, 78, 16, -28, 16,
-<a name="l03694"></a>03694 -26, 0, 47, 77, -19, 49, 48, 3, 53, 33, 21, 31, 4, -87, -2, 105, -126, -126, 0, 0, 1, 0, 89, 4, -86,
-<a name="l03695"></a>03695 1, -47, 5, -62, 0, 3, 0, 96, 64, 11, 3, 56, 23, 25, 52, 2, 64, 15, 17, 52, 0, -72, -1, -64, -77,
-<a name="l03696"></a>03696 23, 25, 52, 3, -72, -1, -64, 64, 26, 22, 25, 52, 80, 1, 80, 3, 2, 64, 3, 80, 0, 2, 3, 2, 0,
-<a name="l03697"></a>03697 0, 1, 16, 1, 2, 1, -121, 2, 0, 0, -72, 2, 83, -78, 1, -122, 3, -72, 2, 96, -77, 2, 25, 4, 113,
-<a name="l03698"></a>03698 -71, 1, 47, 0, 24, 43, 78, 16, -12, 77, -19, -12, -19, 0, 63, -3, 93, 60, 16, 60, 49, 48, 1, 93, 93,
-<a name="l03699"></a>03699 43, 43, 43, 43, 1, 35, 3, 51, 1, -47, -111, -25, -15, 4, -86, 1, 24, 0, 0, 2, 0, 74, -1, -24, 4,
-<a name="l03700"></a>03700 28, 4, 62, 0, 40, 0, 55, 2, 45, 64, 44, 9, 13, 9, 42, 25, 13, 26, 42, 41, 13, 42, 42, 57, 13,
-<a name="l03701"></a>03701 54, 21, 55, 27, 58, 42, 73, 42, 93, 13, 93, 42, 106, 13, 105, 42, 96, 48, -118, 13, -122, 41, -102, 22, -101,
-<a name="l03702"></a>03702 26, -87, 13, 21, 40, -72, -1, -24, -76, 11, 11, 6, 85, 39, -72, -1, -24, 64, 25, 11, 11, 6, 85, -90, 25,
-<a name="l03703"></a>03703 -86, 40, -74, 25, -69, 40, -60, 25, -49, 40, -46, 21, -35, 40, 8, 68, 22, 1, 30, -72, -1, -12, 64, 17, 12,
-<a name="l03704"></a>03704 12, 6, 85, 18, 18, 12, 12, 6, 85, 5, 12, 12, 12, 6, 85, 53, -72, -1, -32, 64, 85, 12, 12, 6, 85,
-<a name="l03705"></a>03705 31, 23, 31, 24, 43, 44, 42, 52, 57, 4, 57, 44, 73, 4, 72, 44, 86, 8, 89, 43, 102, 8, 105, 43, 118,
-<a name="l03706"></a>03706 12, -121, 12, -55, 12, -7, 13, -7, 43, 17, 55, 52, 14, 1, 4, 16, 47, 36, 52, 23, 50, 33, 20, 24, 95,
-<a name="l03707"></a>03707 41, 111, 41, 2, 41, 28, 47, 14, 63, 14, -113, 14, -97, 14, -1, 14, 5, -97, 14, -81, 14, -17, 14, 3, 14,
-<a name="l03708"></a>03708 12, 15, 15, 2, 85, 14, -72, -1, -22, -76, 16, 16, 2, 85, 14, -72, -1, -12, 64, 21, 16, 16, 6, 85, 14,
-<a name="l03709"></a>03709 12, 13, 13, 6, 85, 14, 6, 15, 15, 6, 85, 14, 14, 28, 3, 23, -72, 2, -86, -74, 24, -107, 20, 28, 28,
-<a name="l03710"></a>03710 7, 0, -72, -1, -12, 64, 26, 12, 12, 6, 85, 0, 69, 39, 10, 50, 28, 3, 11, 41, 97, 16, 97, 0, 6,
-<a name="l03711"></a>03711 13, 13, 2, 85, 0, 37, 33, 36, -72, -1, -20, -76, 16, 16, 2, 85, 36, -72, -1, -20, 64, 11, 13, 13, 2,
-<a name="l03712"></a>03712 85, 36, 4, 12, 12, 2, 85, 36, -72, -1, -28, -76, 11, 11, 2, 85, 36, -72, -1, -12, -76, 11, 11, 6, 85,
-<a name="l03713"></a>03713 36, -72, -1, -36, 64, 11, 16, 16, 6, 85, 36, 6, 15, 15, 6, 85, 36, -72, -1, -4, -76, 12, 12, 6, 85,
-<a name="l03714"></a>03714 36, -72, 2, 91, 64, 14, 39, 64, 0, 38, 16, 38, 32, 38, 48, 38, -81, 38, 5, 57, -72, -1, -64, -76, 14,
-<a name="l03715"></a>03715 14, 2, 85, 38, -72, -1, -42, -74, 14, 14, 2, 85, 38, 49, 57, -72, -1, -64, 64, 13, 30, 35, 52, 48, 57,
-<a name="l03716"></a>03716 -64, 57, 2, -96, 57, 1, 57, 23, -72, -1, -12, 64, 65, 16, 16, 6, 85, 23, 37, 24, 34, 47, 36, -65, 6,
-<a name="l03717"></a>03717 -49, 6, 2, 31, 6, 63, 6, 2, 6, 14, 15, 15, 2, 85, 6, 12, 13, 13, 2, 85, 6, 24, 12, 12, 2,
-<a name="l03718"></a>03718 85, 6, 12, 11, 11, 2, 85, 6, 12, 11, 11, 6, 85, 6, 14, 13, 13, 6, 85, 6, 16, 12, 12, 6, 85,
-<a name="l03719"></a>03719 6, 49, 56, 16, -10, 43, 43, 43, 43, 43, 43, 43, 93, 113, -19, -12, -19, 43, 16, 93, 113, 43, -10, 43, 43,
-<a name="l03720"></a>03720 93, -19, -12, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 43, -27, -27, 0, 63, -19, 63, -28, 43, 63, -19, -3,
-<a name="l03721"></a>03721 -28, 17, 18, 57, 47, 43, 43, 43, 43, 43, 93, 113, -19, 113, 17, 18, 57, 17, 18, 57, 57, 1, 17, 18, 23,
-<a name="l03722"></a>03722 57, 49, 48, 0, 93, 43, 43, 43, 43, 1, 113, 93, 43, 43, 0, 113, 37, 6, 6, 35, 34, 38, 53, 52, 54,
-<a name="l03723"></a>03723 54, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 35, 34, 6, 7, 39, 62, 2, 51, 50, 22, 22, 23, 22, 21,
-<a name="l03724"></a>03724 21, 20, 22, 23, 35, 38, 3, 6, 7, 14, 2, 21, 20, 22, 51, 50, 54, 55, 54, 53, 3, 60, 100, -71, 106,
-<a name="l03725"></a>03725 -81, -68, 71, 115, 72, 53, 107, -38, 103, 1, 51, 69, -120, 127, 121, 29, -80, 24, 110, -48, -119, -120, -86, 80, 16,
-<a name="l03726"></a>03726 9, 23, 34, -68, 28, 23, 98, -60, 111, 92, 50, 109, 105, 104, -94, 38, 29, -125, 85, 70, -85, -123, 78, -127, 78,
-<a name="l03727"></a>03727 20, 14, 13, 26, 36, 37, 10, 110, 45, 61, 89, 113, 24, 113, -117, 75, 64, 97, 74, 46, 120, -16, -5, -123, 61,
-<a name="l03728"></a>03728 56, 1, -35, 40, 28, 16, 40, 77, 47, 72, 96, 91, 79, 61, 119, 0, 2, 0, -122, -1, -24, 4, 31, 5, -70,
-<a name="l03729"></a>03729 0, 16, 0, 29, 1, -128, 64, -101, 1, 5, 12, 15, 36, 5, 53, 5, 69, 5, 5, 63, 31, -80, 31, 2, 31,
-<a name="l03730"></a>03730 31, 34, 28, 51, 28, 66, 28, 112, 31, -112, 31, 6, 58, 19, 60, 22, 60, 26, 76, 22, 76, 26, 93, 8, 93,
-<a name="l03731"></a>03731 13, 88, 15, 93, 22, 94, 26, 106, 8, 108, 13, 104, 15, 110, 22, 110, 26, -64, 31, -39, 12, -38, 23, -38, 25,
-<a name="l03732"></a>03732 -30, 19, -20, 23, -20, 25, -29, 29, -32, 31, -1, 31, 25, 32, 5, 47, 15, 47, 20, 48, 5, 63, 15, 64, 5,
-<a name="l03733"></a>03733 76, 15, 80, 5, 102, 5, -38, 29, -11, 4, -6, 16, 12, 16, 21, 14, 4, 6, 2, 0, 27, 28, 6, 7, 1,
-<a name="l03734"></a>03734 10, 21, 28, 14, 11, 24, 36, -48, 11, 1, 16, 11, 64, 11, 96, 11, -128, 11, 4, 31, 64, 13, 13, 2, 85,
-<a name="l03735"></a>03735 11, 12, 15, 15, 2, 85, 11, 24, 13, 13, 2, 85, 11, -72, -1, -10, -76, 12, 12, 2, 85, 11, -72, -1, -16,
-<a name="l03736"></a>03736 -76, 11, 11, 6, 85, 11, -72, -1, -12, -76, 15, 15, 6, 85, 11, -72, -1, -32, -76, 12, 12, 6, 85, 11, -72,
-<a name="l03737"></a>03737 -1, -12, 64, 47, 13, 13, 6, 85, 11, 116, 1, 17, 51, 0, 4, 12, 12, 2, 85, 0, 4, 13, 13, 6, 85,
-<a name="l03738"></a>03738 0, 51, 3, 37, 2, 2, -64, 1, 1, -112, 1, -96, 1, -80, 1, -16, 1, 4, 31, 1, 63, 1, 79, 1, 3,
-<a name="l03739"></a>03739 1, -72, -1, -2, -76, 16, 16, 2, 85, 1, -72, -1, -4, 64, 29, 14, 14, 2, 85, 1, 12, 13, 13, 2, 85,
-<a name="l03740"></a>03740 1, 16, 12, 12, 2, 85, 1, 18, 11, 11, 2, 85, 1, 12, 11, 11, 6, 85, 1, -72, -1, -8, -76, 16, 16,
-<a name="l03741"></a>03741 6, 85, 1, -72, -1, -4, 64, 22, 15, 15, 6, 85, 1, 24, 12, 12, 6, 85, 1, 20, 13, 13, 6, 85, 1,
-<a name="l03742"></a>03742 25, 30, 71, 55, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 60, 77, 16,
-<a name="l03743"></a>03743 -3, -12, 43, 43, -28, 16, -3, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, -19, 0, 63, -19, 63, 63, -19, 63,
-<a name="l03744"></a>03744 17, 57, 17, 18, 57, 49, 48, 0, 93, 1, 93, 113, 114, 0, 113, 33, 35, 17, 51, 17, 54, 51, 50, 30, 2,
-<a name="l03745"></a>03745 21, 16, 0, 35, 34, 39, 3, 20, 23, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 45, -89, -76, 114, -79,
-<a name="l03746"></a>03746 98, -81, 113, 64, -2, -14, -67, -68, 107, 2, 52, 85, -111, 118, -84, -91, 117, 118, -84, 5, -70, -3, -11, -113, 79,
-<a name="l03747"></a>03747 -113, -54, 115, -2, -17, -2, -42, -99, 1, -106, -65, 85, -117, -51, -53, -48, -58, -51, 0, 1, 0, 80, -1, -24, 3,
-<a name="l03748"></a>03748 -19, 4, 62, 0, 26, 1, 90, -79, 2, 2, 67, 84, 88, 64, 52, 14, 127, 15, 1, 15, 11, 1, 64, 0, 80,
-<a name="l03749"></a>03749 0, 112, 0, 3, 0, 4, 18, 28, 11, 7, 24, 28, 4, 11, 1, 14, 21, 7, 8, 14, 14, 2, 85, 7, 12,
-<a name="l03750"></a>03750 13, 13, 2, 85, 7, 12, 12, 12, 2, 85, 7, 16, 11, 11, 2, 85, 7, 47, 43, 43, 43, 43, -51, -44, -58,
-<a name="l03751"></a>03751 0, 63, -19, 63, -19, 16, -60, 93, 50, 16, -60, 93, 50, 49, 48, 27, 64, 71, 9, 12, 1, 31, 28, 67, 19,
-<a name="l03752"></a>03752 67, 23, 83, 19, 83, 23, 96, 19, 96, 23, -101, 2, -101, 3, -102, 13, -92, 16, -92, 26, 12, 8, 13, 25, 10,
-<a name="l03753"></a>03753 106, 2, 105, 3, 106, 5, 117, 12, 112, 13, -128, 13, -90, 12, -75, 9, -74, 10, -75, 12, 12, 22, 12, -122, 12,
-<a name="l03754"></a>03754 -29, 2, 3, 14, 34, 95, 15, 111, 15, 127, 15, 3, 15, 1, -72, 2, -86, 64, 121, 48, 0, 64, 0, 80, 0,
-<a name="l03755"></a>03755 96, 0, 112, 0, -112, 0, -96, 0, -32, 0, -16, 0, 9, 0, 15, 15, 11, 0, 0, 4, 18, 28, 11, 7, 24,
-<a name="l03756"></a>03756 28, 4, 11, 28, 15, 1, 15, 36, 14, 8, 13, 13, 6, 85, 14, 34, 27, 0, 1, 0, 36, 11, 43, 31, 1,
-<a name="l03757"></a>03757 1, 0, 1, 1, 1, 64, 11, 11, 6, 85, 1, 64, 16, 16, 6, 85, 1, 72, 12, 12, 6, 85, 1, 26, 13,
-<a name="l03758"></a>03758 13, 6, 85, 1, 73, 28, 21, 36, -49, 7, 1, 31, 7, 63, 7, 2, 7, 14, 11, 11, 6, 85, 7, 10, 16,
-<a name="l03759"></a>03759 16, 6, 85, 7, 18, 12, 12, 6, 85, 7, 49, 27, 52, -60, 24, 43, 16, -10, 43, 43, 43, 93, 113, -19, 16,
-<a name="l03760"></a>03760 -10, 43, 43, 43, 43, 93, 114, 75, 83, 35, 75, 81, 90, 88, -71, 0, 1, -1, -64, 56, 89, -19, 114, -12, 43,
-<a name="l03761"></a>03761 -19, 114, 0, 63, -19, 63, -19, 18, 57, 47, 17, 57, 47, 16, 93, -28, 16, 93, -28, 49, 48, 0, 93, 113, 1,
-<a name="l03762"></a>03762 93, 113, 89, 1, 23, 6, 6, 35, 34, 0, 17, 52, 18, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21,
-<a name="l03763"></a>03763 20, 22, 51, 50, 54, 3, 60, -79, 29, -17, -82, -38, -2, -9, 114, -23, -119, -83, -36, 31, -81, 25, 127, 90, -120,
-<a name="l03764"></a>03764 -86, -92, -124, 106, -114, 1, -123, 23, -73, -49, 1, 29, 1, 10, -84, 1, 2, -127, -81, -95, 27, 107, 108, -61, -45,
-<a name="l03765"></a>03765 -42, -62, -126, 0, 0, 2, 0, 70, -1, -24, 3, -33, 5, -70, 0, 17, 0, 29, 1, 85, 64, -92, 10, 2, 4,
-<a name="l03766"></a>03766 13, 37, 13, 52, 13, 68, 13, 5, 53, 20, 53, 28, 87, 2, 84, 10, 82, 20, 83, 28, 103, 2, 100, 5, 101,
-<a name="l03767"></a>03767 9, 99, 20, 96, 28, -64, 31, -44, 5, -43, 19, -35, 25, -27, 19, -27, 20, -17, 23, -21, 25, -27, 29, -32, 31,
-<a name="l03768"></a>03768 -1, 31, 22, 31, 31, 43, 26, 60, 22, 60, 26, 75, 26, 112, 31, -112, 31, 7, 46, 2, 36, 13, 46, 22, 58,
-<a name="l03769"></a>03769 2, 53, 13, 75, 2, 69, 13, 70, 20, 73, 28, 87, 10, 86, 13, 103, 13, -27, 6, -25, 22, -6, 1, -12, 14,
-<a name="l03770"></a>03770 16, 1, 21, 3, 14, 11, 16, 15, 0, 27, 28, 11, 7, 17, 0, 10, 21, 28, 3, 11, 24, 51, 1, 0, 37,
-<a name="l03771"></a>03771 17, 15, 37, 16, 16, -48, 17, 1, 16, 17, 64, 17, 96, 17, -128, 17, 4, 31, 64, 11, 11, 2, 85, 31, 64,
-<a name="l03772"></a>03772 13, 13, 2, 85, 17, 18, 16, 16, 2, 85, 17, -72, -1, -12, 64, 17, 15, 15, 2, 85, 17, 6, 14, 14, 2,
-<a name="l03773"></a>03773 85, 17, 24, 13, 13, 2, 85, 17, -72, -1, -14, 64, 11, 11, 11, 6, 85, 17, 14, 16, 16, 6, 85, 17, -72,
-<a name="l03774"></a>03774 -1, -18, -76, 12, 12, 6, 85, 17, -72, -1, -8, 64, 66, 13, 13, 6, 85, 17, 116, 18, 36, -65, 7, -49, 7,
-<a name="l03775"></a>03775 -33, 7, -1, 7, 4, 31, 7, 63, 7, 79, 7, 3, 7, 30, 11, 11, 2, 85, 7, 24, 12, 12, 2, 85, 7,
-<a name="l03776"></a>03776 30, 13, 13, 2, 85, 7, 12, 11, 11, 6, 85, 7, 12, 13, 13, 6, 85, 7, 26, 12, 12, 6, 85, 7, 25,
-<a name="l03777"></a>03777 30, 52, 80, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 93, 113, 77, -19, -3, 43, 43, 43, 43, 43, 43,
-<a name="l03778"></a>03778 43, 43, 43, 43, 93, 113, 60, 16, -19, 16, -3, 60, -28, 0, 63, -19, 63, 60, 63, -19, 63, 60, 17, 57, 17,
-<a name="l03779"></a>03779 18, 57, 49, 48, 0, 93, 1, 113, 93, 0, 113, 33, 53, 6, 35, 34, 38, 38, 53, 52, 18, 54, 51, 50, 22,
-<a name="l03780"></a>03780 23, 17, 51, 17, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 56, 101, -60, 127, -43, 117, 106, -44,
-<a name="l03781"></a>03781 -125, 96, -106, 47, -77, -3, 32, -84, 117, 118, -91, -88, 123, 120, -95, -122, -98, -116, -5, -93, -97, 1, 3, -118, 81,
-<a name="l03782"></a>03782 65, 2, 14, -6, 70, 2, 18, -52, -54, -63, -58, -38, -52, -60, 0, 0, 2, 0, 75, -1, -24, 4, 30, 4, 62,
-<a name="l03783"></a>03783 0, 21, 0, 29, 1, 83, 64, 23, 31, 0, 28, 21, 2, 85, 3, 93, 5, 93, 9, 85, 11, 101, 3, 107, 5,
-<a name="l03784"></a>03784 111, 9, 101, 11, 8, 21, -72, -1, -28, -76, 13, 13, 6, 85, 17, -72, -1, -28, 64, 82, 13, 13, 6, 85, 29,
-<a name="l03785"></a>03785 28, 13, 13, 6, 85, 39, 18, -39, 5, -6, 20, -10, 26, 4, 49, 18, 58, 25, 49, 28, 65, 18, 77, 26, 65,
-<a name="l03786"></a>03786 28, 81, 18, 92, 25, 82, 28, 97, 18, 109, 26, 97, 28, 120, 6, 120, 21, -10, 2, -10, 24, 16, 0, 22, 1,
-<a name="l03787"></a>03787 15, 13, 23, 23, 80, 22, 96, 22, 112, 22, 3, 22, 28, 15, -112, 16, -96, 16, 2, 16, 16, 4, 27, 28, 10,
-<a name="l03788"></a>03788 7, 0, -70, 2, -86, 0, 1, -1, -64, -76, 16, 16, 2, 85, 1, -72, -1, -64, 64, 16, 16, 16, 6, 85, 16,
-<a name="l03789"></a>03789 1, 1, 1, -107, 19, 28, 4, 11, 23, 64, 13, -72, -1, -36, -76, 13, 13, 2, 85, 13, -72, -1, -18, -76, 13,
-<a name="l03790"></a>03790 13, 6, 85, 13, -72, -1, -22, -76, 12, 12, 6, 85, 13, -72, -1, -64, 64, 9, 39, 42, 52, -80, 13, 1, 13,
-<a name="l03791"></a>03791 26, 31, -72, -1, -64, -77, 37, 38, 52, 31, -72, -1, -64, 64, 65, 30, 35, 52, 48, 31, 1, 31, 22, 51, 16,
-<a name="l03792"></a>03792 36, 7, 64, 36, 42, 52, 31, 7, 63, 7, 79, 7, 3, 7, 32, 11, 11, 2, 85, 7, 24, 12, 12, 2, 85,
-<a name="l03793"></a>03793 7, 28, 13, 13, 2, 85, 7, 14, 11, 11, 6, 85, 7, 28, 12, 12, 6, 85, 7, 22, 13, 13, 6, 85, 7,
-<a name="l03794"></a>03794 25, 30, 52, 55, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 93, 43, 77, -3, -28, 78, 16, 113, 43, 43,
-<a name="l03795"></a>03795 -10, 113, 43, 43, 43, 43, 77, -19, 0, 63, -19, -3, 93, 43, 43, -28, 63, -19, 18, 57, 47, 93, 60, -3, 113,
-<a name="l03796"></a>03796 60, 1, 17, 18, 57, 57, 18, 57, 49, 48, 1, 93, 0, 93, 43, 43, 43, 1, 113, 114, 1, 23, 6, 6, 35,
-<a name="l03797"></a>03797 34, 0, 17, 16, 0, 51, 50, 0, 17, 20, 7, 33, 22, 22, 51, 50, 54, 1, 33, 38, 39, 38, 35, 34, 6,
-<a name="l03798"></a>03798 3, 94, -70, 44, -18, -71, -23, -2, -17, 1, 20, -36, -43, 1, 14, 1, -4, -24, 10, -78, -123, 99, -116, -3, -38,
-<a name="l03799"></a>03799 2, 81, 12, 56, 86, -119, 124, -87, 1, 86, 23, -93, -76, 1, 31, 1, 3, 1, 12, 1, 40, -2, -34, -2, -7,
-<a name="l03800"></a>03800 16, 32, -81, -70, 104, 1, -107, -122, 67, 104, -90, 0, 1, 0, 19, 0, 0, 2, -128, 5, -45, 0, 23, 1, 13,
-<a name="l03801"></a>03801 64, 30, 20, 9, 1, 15, 25, 47, 25, 48, 25, 64, 25, 112, 25, -101, 12, -100, 13, -87, 13, 8, 26, 13, 40,
-<a name="l03802"></a>03802 13, -80, 25, -64, 25, 4, 25, -72, -1, -64, 64, 40, 26, 31, 52, 29, 8, 13, 3, 12, 15, 28, 10, 1, 21,
-<a name="l03803"></a>03803 2, 43, 20, 19, 4, 3, 6, 0, 10, -97, 20, 1, 20, -1, 19, 64, 4, 23, 37, 4, 0, 3, 2, -110, 1,
-<a name="l03804"></a>03804 1, 0, -72, -1, -64, -77, 49, 56, 52, 0, -72, -1, -64, 64, 43, 28, 31, 52, -112, 0, 1, 25, 64, 15, 15,
-<a name="l03805"></a>03805 2, 85, 25, 64, 13, 14, 2, 85, 0, 20, 16, 16, 2, 85, 0, 40, 15, 15, 2, 85, 0, 34, 14, 14, 2,
-<a name="l03806"></a>03806 85, 0, 44, 13, 13, 2, 85, 0, -72, -1, -14, 64, 11, 12, 12, 2, 85, 0, 20, 11, 11, 6, 85, 0, -72,
-<a name="l03807"></a>03807 -1, -22, -76, 16, 16, 6, 85, 0, -72, -1, -26, -76, 15, 15, 6, 85, 0, -72, -1, -6, -73, 12, 12, 6, 85,
-<a name="l03808"></a>03808 0, -93, 24, 25, -68, 1, -70, 0, 33, 0, -10, 1, 10, 0, 24, 43, 43, -10, 43, 43, 43, 43, 43, 43, 43,
-<a name="l03809"></a>03809 43, 43, 43, 43, 93, 43, 43, 60, 16, -12, 60, 16, 60, -19, 16, -19, -19, 93, 0, 63, 63, 60, 60, 60, -3,
-<a name="l03810"></a>03810 60, 63, -19, 57, 17, 57, 49, 48, 67, 121, 64, 20, 16, 17, 6, 9, 7, 6, 8, 6, 2, 6, 16, 9, 18,
-<a name="l03811"></a>03811 27, 0, 17, 6, 15, 27, 1, 43, 1, 43, 42, -127, -127, 1, 43, 113, 93, 0, 114, 51, 17, 35, 53, 51, 53,
-<a name="l03812"></a>03812 52, 55, 54, 54, 51, 50, 23, 7, 38, 35, 34, 6, 21, 21, 51, 21, 35, 17, -78, -97, -97, 19, 26, -125, 118,
-<a name="l03813"></a>03813 76, 92, 27, 56, 50, 82, 68, -49, -49, 3, -102, -116, 113, 107, 52, 70, 87, 18, -99, 10, 70, 96, 98, -116, -4,
-<a name="l03814"></a>03814 102, 0, 2, 0, 66, -2, 81, 3, -22, 4, 62, 0, 30, 0, 42, 1, 111, 64, 96, 11, 11, 5, 20, 44, 11,
-<a name="l03815"></a>03815 37, 20, 76, 11, 69, 20, 6, 9, 29, 25, 29, 44, 11, 38, 20, 44, 35, 57, 11, 54, 20, 74, 11, 70, 20,
-<a name="l03816"></a>03816 86, 7, 88, 11, 104, 11, -6, 10, -11, 21, 14, 46, 35, 44, 39, 62, 35, 62, 39, 76, 39, -112, 44, -96, 44,
-<a name="l03817"></a>03817 7, 54, 33, 54, 41, 63, 44, 70, 11, 70, 33, 69, 41, 84, 33, 84, 41, 105, 7, 99, 33, 99, 41, 96, 44,
-<a name="l03818"></a>03818 -128, 44, -38, 39, -24, 33, -18, 35, -17, 39, 17, 23, 22, 6, 21, -72, 2, -79, -76, 40, 28, 19, 7, 1, -72,
-<a name="l03819"></a>03819 2, -86, 64, 16, 32, 0, 48, 0, 96, 0, 112, 0, -128, 0, -64, 0, -48, 0, 7, 0, -72, 2, 125, 64, 50,
-<a name="l03820"></a>03820 5, 28, 28, 15, 10, 69, 34, 28, 12, 10, 22, 21, 51, 37, 51, 10, 37, 24, 24, -48, 23, 1, 16, 23, 64,
-<a name="l03821"></a>03821 23, 96, 23, -128, 23, 4, 44, 64, 11, 12, 2, 85, 44, 64, 13, 13, 2, 85, 23, 18, 16, 16, 2, 85, 23,
-<a name="l03822"></a>03822 -72, -1, -12, 64, 17, 15, 15, 2, 85, 23, 6, 14, 14, 2, 85, 23, 22, 13, 13, 2, 85, 23, -72, -1, -22,
-<a name="l03823"></a>03823 64, 11, 11, 11, 6, 85, 23, 18, 16, 16, 6, 85, 23, -72, -1, -18, -76, 12, 12, 6, 85, 23, -72, -1, -4,
-<a name="l03824"></a>03824 64, 74, 13, 13, 6, 85, 23, 116, 15, 1, 37, 0, 34, 31, 36, -65, 15, -49, 15, -33, 15, -1, 15, 4, 31,
-<a name="l03825"></a>03825 15, 63, 15, 79, 15, 3, 15, 32, 11, 11, 2, 85, 15, 26, 12, 12, 2, 85, 15, 34, 13, 13, 2, 85, 15,
-<a name="l03826"></a>03826 28, 11, 11, 6, 85, 15, 12, 13, 13, 6, 85, 15, 26, 12, 12, 6, 85, 15, 25, 43, 44, 116, 33, 52, 80,
-<a name="l03827"></a>03827 24, 43, 43, 78, -12, 43, 43, 43, 43, 43, 43, 93, 113, 77, -19, -12, -19, 16, -3, 43, 43, 43, 43, 43, 43,
-<a name="l03828"></a>03828 43, 43, 43, 43, 93, 113, 60, 16, -3, -28, -10, 60, 0, 63, -19, -28, 63, -19, -3, 93, -28, 63, -19, -28, 63,
-<a name="l03829"></a>03829 60, 49, 48, 1, 93, 113, 0, 93, 113, 23, 23, 22, 23, 22, 51, 50, 54, 55, 54, 39, 6, 35, 34, 2, 53,
-<a name="l03830"></a>03830 52, 18, 54, 51, 50, 23, 53, 51, 17, 20, 6, 6, 35, 34, 38, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35,
-<a name="l03831"></a>03831 34, 6, 102, -81, 11, 50, 67, 116, 125, -120, 24, 14, 1, 118, -80, -37, -16, 110, -47, -115, -68, 122, -90, 101, -37,
-<a name="l03832"></a>03832 -96, -66, -22, -103, -90, 125, 124, -88, -83, 122, 120, -88, 88, 26, 81, 37, 50, 100, 90, 55, -80, -117, 1, 60, -35,
-<a name="l03833"></a>03833 -104, 1, 1, -116, -104, -128, -4, 106, -8, -49, 120, -85, 3, 42, -47, -64, -65, -52, -61, -58, -61, 0, 0, 1, 0,
-<a name="l03834"></a>03834 -121, 0, 0, 3, -24, 5, -70, 0, 20, 1, 97, -71, 0, 22, -1, -64, -77, 21, 23, 52, 3, -72, -1, -32, 64,
-<a name="l03835"></a>03835 14, 13, 13, 6, 85, 37, 4, 53, 3, 69, 3, -70, 13, 4, 3, -72, -1, -32, 64, 58, 23, 25, 52, 23, 8,
-<a name="l03836"></a>03836 17, 12, 17, 20, 3, 5, 1, 0, 15, 28, 5, 7, 20, 11, 10, 12, 37, 9, 64, 51, 54, 52, -1, 9, 1,
-<a name="l03837"></a>03837 -64, 9, 1, 22, 64, 11, 11, 2, 85, 22, 64, 16, 16, 2, 85, 9, 40, 16, 16, 2, 85, 9, 20, 14, 14,
-<a name="l03838"></a>03838 2, 85, 9, -72, -1, -20, 64, 17, 13, 13, 2, 85, 9, 4, 12, 12, 2, 85, 9, 26, 11, 11, 2, 85, 9,
-<a name="l03839"></a>03839 -72, -1, -10, 64, 11, 11, 11, 6, 85, 9, 20, 16, 16, 6, 85, 9, -72, -1, -8, 64, 11, 13, 13, 6, 85,
-<a name="l03840"></a>03840 9, 10, 15, 15, 6, 85, 9, -72, -1, -10, -74, 12, 12, 6, 85, 9, 78, 22, -72, -1, -64, 64, 23, 52, 54,
-<a name="l03841"></a>03841 52, -80, 22, -16, 22, 2, 112, 22, -96, 22, -80, 22, -1, 22, 4, 22, 2, 20, 37, 1, 0, -72, -1, -64, 64,
-<a name="l03842"></a>03842 16, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, -72, -1, -6, -76, 16, 16, 2, 85,
-<a name="l03843"></a>03843 0, -72, -1, -6, 64, 23, 14, 14, 2, 85, 0, 4, 12, 12, 2, 85, 0, 8, 11, 11, 2, 85, 0, 4, 11,
-<a name="l03844"></a>03844 11, 6, 85, 0, -72, -1, -6, 64, 22, 15, 15, 6, 85, 0, 2, 12, 12, 6, 85, 0, 2, 13, 13, 6, 85,
-<a name="l03845"></a>03845 0, 78, 21, 71, 80, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 43, 60, -3, 60, 16, 93,
-<a name="l03846"></a>03846 113, 43, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 43, -19, 0, 63, 60, 63, -19, 63,
-<a name="l03847"></a>03847 17, 57, 17, 57, 1, 18, 57, 49, 48, 67, 121, 64, 14, 6, 14, 7, 37, 14, 6, 12, 27, 1, 13, 8, 15,
-<a name="l03848"></a>03848 27, 1, 0, 43, 1, 43, 43, -127, 0, 43, 93, 43, 1, 43, 51, 17, 51, 17, 54, 51, 50, 22, 22, 21, 17,
-<a name="l03849"></a>03849 35, 17, 52, 38, 35, 34, 6, 6, 21, 17, -121, -76, 126, -64, 118, -82, 75, -76, 117, 107, 80, -115, 60, 5, -70,
-<a name="l03850"></a>03850 -3, -14, -110, 93, -92, -100, -3, 95, 2, -95, -121, 123, 83, -114, 125, -3, -69, 0, 2, 0, -120, 0, 0, 1, 60,
-<a name="l03851"></a>03851 5, -70, 0, 3, 0, 7, 0, -51, 64, 94, 9, 54, 11, 11, 2, 85, 79, 9, -112, 9, -96, 9, -80, 9, -64,
-<a name="l03852"></a>03852 9, -33, 9, -16, 9, 7, 0, 9, 31, 9, 112, 9, -128, 9, -97, 9, -80, 9, -64, 9, -33, 9, -32, 9, -1,
-<a name="l03853"></a>03853 9, 10, 31, 9, 1, 0, 1, 7, 4, 2, 3, 9, 6, 3, 126, 1, 0, 6, 5, 6, 4, 10, 6, 7, 37,
-<a name="l03854"></a>03854 5, 0, 4, -97, 4, -96, 4, -80, 4, -64, 4, -32, 4, 6, -64, 4, -16, 4, 2, 0, 4, 32, 4, -48, 4,
-<a name="l03855"></a>03855 -32, 4, 4, 4, -72, -1, -8, -76, 16, 16, 2, 85, 4, -72, -1, -6, 64, 23, 14, 14, 2, 85, 4, 4, 12,
-<a name="l03856"></a>03856 12, 2, 85, 4, 10, 11, 11, 2, 85, 4, 20, 11, 11, 6, 85, 4, -72, -1, -22, -76, 16, 16, 6, 85, 4,
-<a name="l03857"></a>03857 -72, -1, -2, -76, 13, 13, 6, 85, 4, -72, -1, -4, 64, 10, 12, 12, 6, 85, 4, 78, 8, 71, 80, 24, 43,
-<a name="l03858"></a>03858 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 60, -3, 60, 0, 63, 63, 60, 63, -19, 1, 17, 18,
-<a name="l03859"></a>03859 57, 57, 17, 18, 57, 57, 49, 48, 1, 93, 114, 113, 43, 19, 53, 51, 21, 3, 17, 51, 17, -120, -76, -76, -76,
-<a name="l03860"></a>03860 4, -21, -49, -49, -5, 21, 4, 38, -5, -38, 0, 0, 2, -1, -94, -2, 81, 1, 58, 5, -70, 0, 3, 0, 18,
-<a name="l03861"></a>03861 0, -43, 64, 69, 4, 5, 37, 5, 59, 4, 51, 5, -122, 5, 5, 23, 8, 5, 5, 7, 4, 4, 2, 4, 5,
-<a name="l03862"></a>03862 19, 0, 1, 13, 11, 2, 3, 20, 12, 4, 17, 5, 11, 7, 3, 126, 1, 0, 11, 6, 7, 28, 17, 15, -112,
-<a name="l03863"></a>03863 20, 1, 20, 23, 23, 26, 12, 12, 13, 37, 10, 10, -112, 11, 1, 31, 11, 63, 11, 79, 11, 3, 11, -72, -1,
-<a name="l03864"></a>03864 -6, 64, 55, 14, 14, 2, 85, 11, 16, 13, 13, 2, 85, 11, 16, 12, 12, 2, 85, 11, 12, 11, 11, 2, 85,
-<a name="l03865"></a>03865 11, 30, 11, 11, 6, 85, 11, 12, 16, 16, 6, 85, 11, 8, 12, 12, 6, 85, 11, 12, 13, 13, 6, 85, 11,
-<a name="l03866"></a>03866 25, 19, 20, -83, 33, 71, 80, 24, 43, 43, 78, -12, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 60, 77, 16,
-<a name="l03867"></a>03867 -3, 60, 78, 16, 69, 101, 68, -26, 113, 0, 63, 77, -19, 63, 63, -19, 17, 18, 57, 18, 57, 1, 17, 18, 57,
-<a name="l03868"></a>03868 57, 17, 18, 57, 57, 17, 51, 51, -121, 16, 8, 60, 49, 48, 67, 121, 64, 14, 8, 16, 15, 38, 8, 16, 10,
-<a name="l03869"></a>03869 27, 1, 9, 14, 7, 27, 0, 0, 43, 1, 43, 43, -127, 1, 93, 19, 53, 51, 21, 1, 55, 22, 51, 50, 54,
-<a name="l03870"></a>03870 53, 17, 51, 17, 20, 7, 6, 35, 34, -122, -76, -2, 104, 34, 54, 31, 55, 54, -76, 51, 65, -105, 73, 4, -23,
-<a name="l03871"></a>03871 -47, -47, -7, 123, -103, 14, 73, -110, 4, 92, -5, -96, -60, 77, 100, 0, 0, 1, 0, -120, 0, 0, 3, -8, 5,
-<a name="l03872"></a>03872 -70, 0, 11, 2, 97, 64, 27, 6, 12, 13, 13, 6, 85, 7, 6, 86, 6, 90, 9, 3, 15, 13, -13, 5, -10,
-<a name="l03873"></a>03873 6, 3, 9, 12, 16, 16, 2, 85, 6, -72, -1, -12, -76, 12, 12, 2, 85, 10, -72, -1, -12, -76, 12, 12, 2,
-<a name="l03874"></a>03874 85, 9, -72, -1, -12, -76, 12, 12, 2, 85, 3, -72, -1, -24, 64, 16, 13, 13, 6, 85, 85, 3, 119, 10, 2,
-<a name="l03875"></a>03875 18, 6, 32, 19, 33, 52, 8, -72, -1, -16, -77, 18, 39, 52, 9, -72, -1, -16, -76, 18, 39, 52, 18, 5, -72,
-<a name="l03876"></a>03876 -1, -16, -77, 18, 33, 52, 9, -72, -1, -16, 64, -124, 18, 39, 52, 6, 4, 4, 5, 4, 6, 55, 9, 71, 4,
-<a name="l03877"></a>03877 5, 37, 6, 45, 10, 88, 10, 119, 3, 117, 10, -38, 3, -29, 6, 7, -90, 6, 1, 35, 6, 38, 7, 37, 8,
-<a name="l03878"></a>03878 57, 6, 56, 9, 63, 13, 79, 13, 89, 4, 89, 6, 88, 7, 89, 9, 125, 4, 121, 5, -103, 9, -58, 6, -46,
-<a name="l03879"></a>03879 4, -42, 6, -28, 6, -23, 7, -9, 6, -7, 8, 21, 18, 10, 10, 5, 3, 3, 4, 2, 6, 6, 7, 9, 9,
-<a name="l03880"></a>03880 8, 10, 10, 5, 9, 8, 8, 37, 7, 6, 20, 7, 7, 6, 3, 4, 4, 37, 5, 10, 20, 5, 5, 10, 10,
-<a name="l03881"></a>03881 9, 6, 3, 4, 8, 1, 2, 0, 4, 5, 6, 7, 8, 8, 11, 11, 0, 10, 4, -72, 1, 15, 64, 9, 5,
-<a name="l03882"></a>03882 4, 12, 12, 6, 85, 5, 34, 8, -72, 1, 15, 64, 33, 32, 7, 63, 7, 2, 7, 16, 12, 12, 6, 85, 7,
-<a name="l03883"></a>03883 26, -112, 13, 1, 13, 11, 37, 0, 2, 37, 1, 1, -112, 0, 1, 63, 0, 79, 0, 2, 0, -72, -1, -2, 64,
-<a name="l03884"></a>03884 49, 14, 14, 2, 85, 0, 16, 13, 13, 2, 85, 0, 16, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0, 18,
-<a name="l03885"></a>03885 11, 11, 6, 85, 0, 18, 12, 12, 6, 85, 0, 8, 13, 13, 6, 85, 0, 25, 12, 13, -31, 33, 71, 102, 24,
-<a name="l03886"></a>03886 43, 43, 78, -12, 43, 43, 43, 43, 43, 43, 43, 93, 113, 60, 77, 16, -19, 16, -19, 78, 16, 113, -10, 43, 93,
-<a name="l03887"></a>03887 77, -19, -12, 43, -19, 0, 63, 60, 16, 60, 16, 60, 63, 60, 63, 60, 17, 23, 57, -121, 5, 46, 43, 4, 125,
-<a name="l03888"></a>03888 16, -60, -121, 5, 46, 24, 43, 14, 125, 16, -60, 7, 16, 8, 60, 8, 60, 3, 16, 8, 60, 8, 60, -79, 6,
-<a name="l03889"></a>03889 2, 67, 84, 88, 64, 13, 75, 9, 1, 31, 9, -124, 3, 2, 9, 24, 13, 17, 52, 0, 43, 93, 113, 89, 49,
-<a name="l03890"></a>03890 48, 1, 67, 92, 88, 64, 10, 9, 44, 29, 57, 9, 8, 29, 29, 60, 6, -72, -1, -34, -78, 29, 57, 6, -72,
-<a name="l03891"></a>03891 -1, -44, -78, 32, 57, 6, -72, -1, -44, -79, 33, 57, 43, 43, 43, 43, 43, 89, 93, 0, 113, 93, 1, 113, 0,
-<a name="l03892"></a>03892 43, 43, 67, 92, 88, -71, 0, 6, -1, -64, -78, 33, 57, 3, -72, -1, -64, -78, 22, 57, 3, -72, -1, -34, -78,
-<a name="l03893"></a>03893 16, 57, 6, -72, -1, -34, -78, 16, 57, 3, -72, -1, -34, -78, 12, 57, 3, -72, -1, -34, -79, 11, 57, 43, 43,
-<a name="l03894"></a>03894 43, 43, 43, 43, 89, 1, 43, 43, 43, 67, 92, 88, 64, 18, -35, 4, 1, 8, 20, 22, 57, 9, 8, 20, 20,
-<a name="l03895"></a>03895 60, 9, 8, 20, 20, 60, 6, -72, -1, -10, -78, 24, 57, 6, -72, -1, -20, -79, 27, 57, 43, 43, 43, 43, 43,
-<a name="l03896"></a>03896 1, 93, 89, 0, 93, 43, 43, 43, 43, 43, 1, 93, 113, 43, 51, 17, 51, 17, 1, 51, 1, 1, 35, 1, 7,
-<a name="l03897"></a>03897 17, -120, -76, 1, -86, -23, -2, 106, 1, -65, -34, -2, -95, 127, 5, -70, -4, -68, 1, -80, -2, 118, -3, 100, 2,
-<a name="l03898"></a>03898 31, 122, -2, 91, 0, 0, 1, 0, -125, 0, 0, 1, 55, 5, -70, 0, 3, 0, -29, -74, 5, 54, 11, 11, 2,
-<a name="l03899"></a>03899 85, 5, -72, -1, -64, -77, 55, 56, 52, 5, -72, -1, -64, -77, 52, 53, 52, 5, -72, -1, -64, -77, 48, 49, 52,
-<a name="l03900"></a>03900 5, -72, -1, -64, -77, 34, 37, 52, 5, -72, -1, -64, 64, 37, 21, 23, 52, 15, 5, 31, 5, -97, 5, -33, 5,
-<a name="l03901"></a>03901 4, 79, 5, -33, 5, -16, 5, 3, 31, 5, 112, 5, -128, 5, -1, 5, 4, 1, 0, 0, 10, 2, 3, 37, 1,
-<a name="l03902"></a>03902 0, -72, -1, -64, -77, 55, 56, 52, 0, -72, -1, -64, 64, 21, 51, 53, 52, -97, 0, 1, -64, 0, -16, 0, 2,
-<a name="l03903"></a>03903 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, -72, -1, -8, -76, 16, 16, 2, 85, 0, -72, -1, -6, 64, 29, 14,
-<a name="l03904"></a>03904 14, 2, 85, 0, 4, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0, 20, 11, 11, 6, 85, 0, 8, 16, 16,
-<a name="l03905"></a>03905 6, 85, 0, -72, -1, -2, -76, 13, 13, 6, 85, 0, -72, -1, -1, -76, 12, 12, 6, 85, 0, -72, -1, -4, 64,
-<a name="l03906"></a>03906 10, 12, 12, 6, 85, 0, 78, 4, 71, 80, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113,
-<a name="l03907"></a>03907 114, 43, 43, 60, -3, 60, 0, 63, 63, 49, 48, 1, 93, 113, 114, 43, 43, 43, 43, 43, 43, 51, 17, 51, 17,
-<a name="l03908"></a>03908 -125, -76, 5, -70, -6, 70, 0, 0, 1, 0, -121, 0, 0, 6, 38, 4, 62, 0, 35, 1, -57, -71, 0, 13, -1,
-<a name="l03909"></a>03909 -12, -76, 13, 13, 6, 85, 8, -72, -1, -12, -76, 13, 13, 6, 85, 9, -72, -1, -40, 64, 77, 11, 13, 52, 37,
-<a name="l03910"></a>03910 4, -28, 4, -28, 9, -31, 23, -27, 32, 5, -43, 5, -10, 32, 2, 23, 8, 32, 35, 9, 24, 27, 32, 9, 3,
-<a name="l03911"></a>03911 3, 35, 30, 28, 6, 21, 28, 11, 11, 6, 7, 1, 6, 35, 26, 25, 16, 10, -48, 37, 1, -112, 37, -96, 37,
-<a name="l03912"></a>03912 2, 37, 23, 23, 26, 14, 37, -112, 17, 1, 17, 4, 16, 16, 2, 85, 17, 24, 15, 15, 2, 85, 17, -72, -1,
-<a name="l03913"></a>03913 -20, 64, 11, 14, 14, 2, 85, 17, 20, 12, 12, 2, 85, 17, -72, -1, -24, 64, 23, 11, 11, 2, 85, 17, 2,
-<a name="l03914"></a>03914 11, 11, 6, 85, 17, 12, 16, 16, 6, 85, 17, 6, 15, 15, 6, 85, 17, -72, -1, -6, -76, 12, 12, 6, 85,
-<a name="l03915"></a>03915 17, -72, -1, -8, -76, 13, 13, 6, 85, 17, -72, 1, 93, 64, 12, 24, 37, -112, 27, 1, 27, 24, 15, 15, 2,
-<a name="l03916"></a>03916 85, 27, -72, -1, -20, 64, 11, 14, 14, 2, 85, 27, 20, 12, 12, 2, 85, 27, -72, -1, -18, 64, 17, 11, 11,
-<a name="l03917"></a>03917 2, 85, 27, 4, 11, 11, 6, 85, 27, 10, 16, 16, 6, 85, 27, -72, -1, -2, 64, 11, 13, 13, 6, 85, 27,
-<a name="l03918"></a>03918 12, 15, 15, 6, 85, 27, -72, -1, -4, -76, 12, 12, 6, 85, 27, -72, 1, 93, 64, 22, 0, 2, 51, 35, 37,
-<a name="l03919"></a>03919 1, -48, 0, 1, -112, 0, -96, 0, 2, 31, 0, 63, 0, 79, 0, 3, 0, -72, -1, -2, 64, 29, 14, 14, 2,
-<a name="l03920"></a>03920 85, 0, 16, 13, 13, 2, 85, 0, 16, 12, 12, 2, 85, 0, 12, 11, 11, 2, 85, 0, 22, 11, 11, 6, 85,
-<a name="l03921"></a>03921 0, -72, -1, -4, -76, 16, 16, 6, 85, 0, -72, -1, -12, 64, 20, 15, 15, 6, 85, 0, 10, 12, 12, 6, 85,
-<a name="l03922"></a>03922 0, 14, 13, 13, 6, 85, 0, 25, 36, 37, -72, 1, 120, -77, 33, 71, 80, 24, 43, 43, 78, -12, 43, 43, 43,
-<a name="l03923"></a>03923 43, 43, 43, 43, 43, 43, 93, 113, 114, 60, 77, -3, -28, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93,
-<a name="l03924"></a>03924 -19, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, -3, 78, 69, 101, 68, -26, 113, 114, 0, 63, 60, 60,
-<a name="l03925"></a>03925 60, 63, 63, 60, 77, 16, -19, 16, -19, 17, 23, 57, 1, 17, 18, 57, 18, 57, 49, 48, 67, 121, 64, 14, 12,
-<a name="l03926"></a>03926 20, 19, 38, 20, 12, 17, 27, 1, 18, 13, 21, 27, 1, 0, 43, 1, 43, 43, -127, 1, 93, 0, 93, 43, 43,
-<a name="l03927"></a>03927 43, 51, 17, 51, 21, 54, 54, 51, 50, 22, 23, 54, 51, 50, 22, 21, 17, 35, 17, 52, 38, 38, 35, 34, 6,
-<a name="l03928"></a>03928 21, 17, 35, 17, 52, 38, 35, 34, 6, 6, 21, 17, -121, -95, 50, -90, 106, 118, -105, 31, 126, -54, -98, -86, -77,
-<a name="l03929"></a>03929 35, 92, 62, 112, -108, -76, 88, 100, 76, -127, 58, 4, 38, -107, 78, 95, 98, 88, -70, -81, -74, -3, 39, 2, -99,
-<a name="l03930"></a>03930 108, 95, 58, -107, -92, -3, -105, 2, -78, 120, 120, 80, -102, -111, -3, -39, 0, 0, 1, 0, -121, 0, 0, 3, -26,
-<a name="l03931"></a>03931 4, 62, 0, 22, 1, 125, 64, 19, 5, 3, 6, 19, 2, -88, 16, -72, 16, -29, 3, -25, 19, -16, 3, -10, 19,
-<a name="l03932"></a>03932 6, 4, -72, -1, -16, 64, 60, 11, 13, 52, 121, 16, 1, -104, 16, -48, 24, -32, 24, -1, 24, 4, 32, 8, 20,
-<a name="l03933"></a>03933 14, 20, 22, 18, 28, 5, 7, 1, 6, 22, 13, 10, 13, 14, 12, 14, 36, 24, 64, 16, 16, 2, 85, 24, 64,
-<a name="l03934"></a>03934 11, 11, 2, 85, 11, 40, 16, 16, 2, 85, 11, 20, 14, 14, 2, 85, 11, -72, -1, -20, 64, 17, 13, 13, 2,
-<a name="l03935"></a>03935 85, 11, 4, 12, 12, 2, 85, 11, 34, 11, 11, 2, 85, 11, -72, -1, -12, 64, 11, 11, 11, 6, 85, 11, 20,
-<a name="l03936"></a>03936 16, 16, 6, 85, 11, -72, -1, -7, 64, 11, 13, 13, 6, 85, 11, 10, 15, 15, 6, 85, 11, -72, -1, -10, 64,
-<a name="l03937"></a>03937 18, 12, 12, 6, 85, 11, 64, 51, 54, 52, -1, 11, 1, -1, 11, 1, 11, 78, 24, -72, -1, -64, 64, 26, 52,
-<a name="l03938"></a>03938 54, 52, -80, 24, -16, 24, 2, 112, 24, -96, 24, -80, 24, -64, 24, 4, 24, 3, 2, 51, 21, 22, 37, 1, 0,
-<a name="l03939"></a>03939 -72, -1, -10, -76, 17, 17, 2, 85, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0, -72, -1, -6, 64, 23, 14, 14,
-<a name="l03940"></a>03940 2, 85, 0, 4, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0, 4, 11, 11, 6, 85, 0, -72, -1, -6, 64,
-<a name="l03941"></a>03941 17, 15, 15, 6, 85, 0, 2, 12, 12, 6, 85, 0, 4, 13, 13, 6, 85, 0, -72, -1, -64, 64, 18, 51, 54,
-<a name="l03942"></a>03942 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 23, 16, -10, 93, 113, 43, 43, 43, 43, 43,
-<a name="l03943"></a>03943 43, 43, 43, 43, 43, 60, -3, 60, -12, 60, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l03944"></a>03944 43, 43, 43, 43, 43, -19, 60, 16, 60, 0, 63, 60, 63, 63, -19, 17, 57, 1, 18, 57, 49, 48, 67, 121, 64,
-<a name="l03945"></a>03945 22, 6, 17, 9, 10, 8, 10, 7, 10, 3, 6, 16, 38, 17, 6, 14, 27, 1, 15, 10, 18, 27, 1, 0, 43,
-<a name="l03946"></a>03946 1, 43, 43, 42, -127, 1, 93, 113, 0, 43, 93, 113, 51, 17, 51, 21, 54, 51, 50, 22, 22, 23, 22, 21, 17,
-<a name="l03947"></a>03947 35, 17, 52, 38, 38, 35, 34, 6, 21, 17, -121, -94, 117, -35, 96, -95, 80, 16, 10, -76, 42, 107, 72, 115, -89,
-<a name="l03948"></a>03948 4, 38, -105, -81, 69, 112, 77, 50, 125, -3, 115, 2, -122, 110, 109, 65, -110, -52, -3, -68, 0, 0, 2, 0, 68,
-<a name="l03949"></a>03949 -1, -24, 4, 39, 4, 62, 0, 13, 0, 25, 1, 107, -74, 21, 24, 13, 13, 6, 85, 19, -72, -1, -24, -76, 13,
-<a name="l03950"></a>03950 13, 6, 85, 15, -72, -1, -24, 64, 115, 13, 13, 6, 85, 25, 24, 13, 13, 6, 85, 18, 7, 10, 25, 12, 71,
-<a name="l03951"></a>03951 6, 72, 8, 86, 6, 89, 8, 103, 6, 105, 8, 8, 52, 16, 58, 18, 58, 22, 53, 24, 69, 16, 75, 18, 75,
-<a name="l03952"></a>03952 22, 69, 24, 92, 5, 92, 9, 82, 16, 93, 18, 93, 22, 82, 24, 109, 5, 109, 9, 100, 16, 109, 18, 109, 22,
-<a name="l03953"></a>03953 100, 24, 119, 1, 21, 9, 6, 5, 13, 91, 3, 84, 5, 84, 10, 91, 12, 108, 3, 101, 5, 101, 10, 108, 12,
-<a name="l03954"></a>03954 10, 23, 28, 4, 7, 17, 28, 11, 11, 20, 36, 27, 64, 13, 13, 2, 85, 27, 64, 11, 11, 2, 85, 7, -72,
-<a name="l03955"></a>03955 -1, -22, 64, 17, 15, 15, 2, 85, 7, 24, 13, 13, 2, 85, 7, 16, 11, 11, 2, 85, 7, -72, -1, -16, -76,
-<a name="l03956"></a>03956 11, 11, 6, 85, 7, -72, -1, -16, -76, 13, 13, 6, 85, 7, -72, -1, -16, -76, 15, 15, 6, 85, 7, -72, -1,
-<a name="l03957"></a>03957 -16, -76, 12, 12, 6, 85, 7, -72, -1, -64, 64, 19, 36, 37, 52, 48, 7, 1, 0, 7, 16, 7, 32, 7, 3,
-<a name="l03958"></a>03958 7, 49, -33, 27, 1, 27, -72, -1, -64, 64, 73, 30, 35, 52, 48, 27, 1, 27, 14, 36, 0, 12, 14, 15, 2,
-<a name="l03959"></a>03959 85, 0, 18, 13, 13, 2, 85, 0, 12, 12, 12, 2, 85, 0, 28, 11, 11, 2, 85, 0, 14, 11, 11, 6, 85,
-<a name="l03960"></a>03960 0, 14, 13, 13, 6, 85, 0, 12, 16, 16, 6, 85, 0, 22, 12, 12, 6, 85, 0, 64, 36, 37, 52, 31, 0,
-<a name="l03961"></a>03961 63, 0, 2, 0, 49, 26, 52, 55, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, 113,
-<a name="l03962"></a>03962 43, 93, -10, 93, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, -19, 63, -19, 49, 48, 1, 113,
-<a name="l03963"></a>03963 93, 0, 113, 67, 92, 88, 64, 9, 83, 5, 83, 9, 98, 5, 98, 9, 4, 1, 93, 89, 0, 43, 43, 43, 43,
-<a name="l03964"></a>03964 19, 16, 55, 54, 51, 50, 0, 21, 20, 6, 6, 35, 34, 0, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34,
-<a name="l03965"></a>03965 6, 68, -92, -119, -59, -37, 1, 22, 123, -21, -117, -33, -2, -19, -71, -78, -121, -122, -78, -77, -123, -121, -78, 2, 19,
-<a name="l03966"></a>03966 1, 39, -114, 118, -2, -31, -3, -51, -21, -126, 1, 30, 1, 13, -52, -53, -52, -47, -59, -53, -54, 0, 2, 0, -121,
-<a name="l03967"></a>03967 -2, 105, 4, 33, 4, 62, 0, 18, 0, 30, 1, 98, 64, -114, 12, 16, 45, 16, 61, 16, 75, 16, 4, 63, 32,
-<a name="l03968"></a>03968 -80, 32, 2, 31, 32, 41, 12, 35, 29, 50, 21, 50, 29, 66, 29, 112, 32, -112, 32, 8, 58, 23, 58, 27, 74,
-<a name="l03969"></a>03969 23, 74, 27, 89, 8, 91, 12, 92, 23, 92, 27, 106, 8, 107, 12, 105, 16, 109, 23, 107, 27, -64, 32, -45, 20,
-<a name="l03970"></a>03970 -35, 24, -35, 26, -45, 30, -28, 20, -28, 30, -32, 32, -1, 32, 22, 35, 4, 43, 16, 43, 21, 53, 4, 58, 16,
-<a name="l03971"></a>03971 70, 4, 74, 16, 90, 16, -27, 11, -21, 29, -2, 16, 11, 17, 14, 3, 22, 28, 28, 6, 7, 1, 6, 22, 28,
-<a name="l03972"></a>03972 14, 11, 0, 14, 25, 36, -48, 10, 1, 16, 10, 64, 10, 96, 10, -128, 10, 4, 32, 64, 11, 11, 2, 85, 32,
-<a name="l03973"></a>03973 64, 13, 13, 2, 85, 10, -72, -1, -26, 64, 11, 15, 15, 2, 85, 10, 24, 13, 13, 2, 85, 10, -72, -1, -6,
-<a name="l03974"></a>03974 -76, 12, 12, 2, 85, 10, -72, -1, -18, -76, 11, 11, 6, 85, 10, -72, -1, -12, -76, 15, 15, 6, 85, 10, -72,
-<a name="l03975"></a>03975 -1, -24, 64, 35, 12, 12, 6, 85, 10, 116, 1, 19, 51, 2, 51, 18, 37, 0, 0, -64, 1, 1, -112, 1, -96,
-<a name="l03976"></a>03976 1, -80, 1, -16, 1, 4, 31, 1, 63, 1, 79, 1, 3, 1, -72, -1, -4, 64, 29, 14, 14, 2, 85, 1, 16,
-<a name="l03977"></a>03977 13, 13, 2, 85, 1, 16, 12, 12, 2, 85, 1, 16, 11, 11, 2, 85, 1, 12, 11, 11, 6, 85, 1, -72, -1,
-<a name="l03978"></a>03978 -10, -76, 16, 16, 6, 85, 1, -72, -1, -4, 64, 22, 15, 15, 6, 85, 1, 12, 12, 12, 6, 85, 1, 18, 13,
-<a name="l03979"></a>03979 13, 6, 85, 1, 25, 31, 71, 55, 24, 1, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113,
-<a name="l03980"></a>03980 114, 60, 77, 16, -3, -12, -28, 16, -3, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, -19, 0, 63, 63, -19, 63,
-<a name="l03981"></a>03981 63, -19, 17, 57, 18, 57, 49, 48, 0, 93, 1, 93, 113, 114, 0, 113, 19, 17, 51, 21, 54, 54, 51, 50, 22,
-<a name="l03982"></a>03982 22, 21, 20, 2, 6, 35, 34, 38, 39, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, -121, -92, 58,
-<a name="l03983"></a>03983 -110, 104, -120, -48, 106, 117, -33, 123, 90, -113, 46, 17, -90, 118, 120, -85, -89, 116, 115, -79, -2, 105, 5, -67, -118,
-<a name="l03984"></a>03984 81, 81, -116, -1, -104, -93, -2, -5, -117, 76, 58, -3, -5, 3, -92, -51, -60, -53, -43, -53, -54, -41, 0, 0, 2,
-<a name="l03985"></a>03985 0, 72, -2, 105, 3, -32, 4, 62, 0, 16, 0, 28, 1, 54, 64, -114, 11, 2, 43, 2, 42, 24, 59, 2, 75,
-<a name="l03986"></a>03986 2, 121, 12, 6, 63, 21, 63, 25, 75, 25, -112, 30, -96, 30, 5, 52, 19, 52, 27, 63, 30, 68, 19, 68, 27,
-<a name="l03987"></a>03987 83, 19, 83, 27, 99, 19, 99, 27, 96, 30, -128, 30, -44, 6, -43, 18, -26, 6, -23, 12, -22, 24, 16, 41, 2,
-<a name="l03988"></a>03988 34, 12, 43, 21, 57, 2, 53, 12, 73, 2, 70, 12, 90, 2, 105, 2, -39, 12, -37, 24, -29, 22, -23, 25, -26,
-<a name="l03989"></a>03989 27, -4, 2, 15, 1, 4, 13, 20, 26, 28, 11, 7, 14, 6, 20, 28, 4, 11, 0, 14, 23, 14, 51, 0, 37,
-<a name="l03990"></a>03990 16, 16, -48, 15, 1, 16, 15, 64, 15, 96, 15, -128, 15, 4, 30, 64, 11, 12, 2, 85, 30, 64, 13, 13, 2,
-<a name="l03991"></a>03991 85, 15, 18, 16, 16, 2, 85, 15, -72, -1, -12, 64, 17, 15, 15, 2, 85, 15, 6, 14, 14, 2, 85, 15, 22,
-<a name="l03992"></a>03992 13, 13, 2, 85, 15, -72, -1, -2, 64, 11, 12, 12, 2, 85, 15, 22, 16, 16, 6, 85, 15, -72, -1, -24, -76,
-<a name="l03993"></a>03993 12, 12, 6, 85, 15, -72, -1, -12, 64, 63, 13, 13, 6, 85, 15, 116, 17, 36, -65, 7, -49, 7, -33, 7, -1,
-<a name="l03994"></a>03994 7, 4, 31, 7, 63, 7, 79, 7, 3, 7, 36, 11, 11, 2, 85, 7, 26, 12, 12, 2, 85, 7, 34, 13, 13,
-<a name="l03995"></a>03995 2, 85, 7, 22, 12, 12, 6, 85, 7, 26, 13, 13, 6, 85, 7, 25, 29, 30, 116, 33, 52, 80, 24, 43, 43,
-<a name="l03996"></a>03996 78, -12, 43, 43, 43, 43, 43, 93, 113, 77, -19, -3, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 60,
-<a name="l03997"></a>03997 16, -3, -12, 60, 0, 63, 63, -19, 63, 63, -19, 17, 57, 18, 57, 49, 48, 0, 93, 1, 93, 113, 0, 113, 1,
-<a name="l03998"></a>03998 17, 6, 6, 35, 34, 0, 17, 52, 54, 54, 51, 50, 23, 53, 51, 17, 1, 20, 22, 51, 50, 54, 53, 52, 38,
-<a name="l03999"></a>03999 35, 34, 6, 3, 44, 42, -105, 85, -67, -2, -17, 111, -45, 126, -59, 113, -94, -3, 33, -84, 120, 115, -90, -81, 118,
-<a name="l04000"></a>04000 117, -93, -2, 105, 2, 8, 59, 78, 1, 46, 1, 7, -96, -2, -125, -90, -114, -6, 67, 3, -83, -51, -51, -61, -57,
-<a name="l04001"></a>04001 -44, -42, -57, 0, 0, 1, 0, -123, 0, 0, 2, -58, 4, 62, 0, 17, 0, -55, 64, 59, 47, 19, 1, 16, 4,
-<a name="l04002"></a>04002 1, 35, 4, 52, 4, 67, 4, 83, 4, 102, 4, 116, 4, 6, 9, 17, 8, 9, 8, 9, 13, 19, 17, 9, 13,
-<a name="l04003"></a>04003 0, 3, 8, 1, 11, 28, 6, 7, 1, 6, 0, 10, 9, 40, -112, 8, 1, 8, 34, 32, 19, 1, 19, 2, 34,
-<a name="l04004"></a>04004 17, 37, 1, 0, -72, -1, -64, 64, 16, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0,
-<a name="l04005"></a>04005 -72, -1, -8, -76, 16, 16, 2, 85, 0, -72, -1, -8, 64, 17, 14, 14, 2, 85, 0, 4, 12, 12, 2, 85, 0,
-<a name="l04006"></a>04006 6, 11, 11, 2, 85, 0, -72, -1, -4, -76, 16, 16, 6, 85, 0, -72, -1, -12, 64, 22, 15, 15, 6, 85, 0,
-<a name="l04007"></a>04007 6, 12, 12, 6, 85, 0, 8, 13, 13, 6, 85, 0, 78, 18, 71, -60, 24, 43, 16, -10, 43, 43, 43, 43, 43,
-<a name="l04008"></a>04008 43, 43, 43, 93, 113, 43, 60, -3, -28, 16, 93, -12, 114, -28, 0, 63, 63, 63, -19, 17, 57, 57, 17, 57, 57,
-<a name="l04009"></a>04009 1, 17, 18, 57, 57, 0, 16, -55, -121, 14, 125, -60, 49, 48, 0, 93, 114, 1, 93, 51, 17, 51, 21, 54, 54,
-<a name="l04010"></a>04010 51, 50, 23, 7, 38, 35, 34, 6, 7, 6, 21, 17, -123, -94, 62, 105, 63, 91, 94, 62, 66, 66, 59, 94, 20,
-<a name="l04011"></a>04011 30, 4, 38, -95, 113, 72, 58, -89, 39, 71, 63, 96, 114, -3, -44, 0, 0, 1, 0, 63, -1, -24, 3, -79, 4,
-<a name="l04012"></a>04012 62, 0, 48, 3, 23, 64, 123, 4, 34, 20, 34, 58, 9, 74, 9, 68, 36, 86, 34, 101, 34, 124, 9, -114, 9,
-<a name="l04013"></a>04013 -124, 36, -90, 19, -85, 44, -62, 3, 13, 9, 23, 26, 24, 23, 48, 75, 44, -42, 23, 5, 27, 2, 85, 2, 2,
-<a name="l04014"></a>04014 16, 50, 1, 10, 24, 92, 8, 92, 9, 92, 10, 92, 11, 92, 12, 92, 13, 106, 8, 106, 9, 106, 10, 106, 11,
-<a name="l04015"></a>04015 106, 12, 106, 13, -76, 38, -76, 39, 15, 39, 38, 36, 39, 36, 41, 54, 36, 90, 10, 89, 11, 100, 38, 100, 40,
-<a name="l04016"></a>04016 116, 35, 116, 36, -128, 36, -109, 10, -100, 12, -110, 40, -105, 44, -107, 48, -92, 10, -87, 12, -93, 39, -92, 40, -77,
-<a name="l04017"></a>04017 38, -59, 38, 22, 40, -72, -1, -12, -76, 13, 13, 6, 85, 34, -72, -1, -12, -76, 13, 13, 6, 85, 35, -72, -1,
-<a name="l04018"></a>04018 -12, -76, 13, 13, 6, 85, 36, -72, -1, -12, -76, 13, 13, 6, 85, 40, -72, -1, -12, -76, 12, 12, 6, 85, 34,
-<a name="l04019"></a>04019 -72, -1, -12, -76, 12, 12, 6, 85, 35, -72, -1, -12, -76, 12, 12, 6, 85, 36, -72, -1, -12, -76, 12, 12, 6,
-<a name="l04020"></a>04020 85, 29, -72, -1, -34, 64, 18, 30, 57, 90, 8, 39, 37, 12, 10, 4, 26, 32, 38, 21, 4, 11, 46, 29, 26,
-<a name="l04021"></a>04021 -72, 2, -86, 64, 34, 25, 44, 11, 11, 2, 85, 31, 25, 63, 25, 79, 25, 95, 25, -81, 25, -49, 25, 6, 15,
-<a name="l04022"></a>04022 25, 31, 25, 111, 25, -33, 25, 4, 31, 25, -113, 25, 2, 25, -67, 2, 85, 0, 21, 0, 0, 2, -86, 0, 1,
-<a name="l04023"></a>04023 -1, -64, 64, 20, 11, 11, 2, 85, 16, 1, 64, 1, 2, 16, 1, -48, 1, 2, 0, 1, 16, 1, 2, 1, -72,
-<a name="l04024"></a>04024 -1, -64, -77, 20, 22, 52, 1, -72, -1, -64, 64, 16, 14, 17, 52, 1, 1, 46, 92, 29, 108, 29, 2, 29, 28,
-<a name="l04025"></a>04025 21, 7, 4, -72, -1, -12, -76, 11, 11, 2, 85, 4, -72, -1, -26, -76, 16, 16, 6, 85, 4, -72, -1, -26, 64,
-<a name="l04026"></a>04026 19, 15, 15, 6, 85, 4, 28, 46, 11, 31, 26, 1, 26, 36, 25, 64, 19, 24, 52, 50, -72, -1, -64, 64, 47,
-<a name="l04027"></a>04027 15, 15, 2, 85, 25, 24, 15, 15, 2, 85, 25, 24, 13, 13, 2, 85, 25, 22, 12, 12, 2, 85, 25, 32, 16,
-<a name="l04028"></a>04028 16, 6, 85, 25, 32, 15, 15, 6, 85, 25, 16, 12, 12, 6, 85, 25, 22, 13, 13, 6, 85, 25, -72, 2, 91,
-<a name="l04029"></a>04029 -78, 7, 36, 42, -72, -1, -64, -75, 28, 57, -48, 42, 1, 42, -72, -1, -26, -76, 12, 12, 2, 85, 42, -72, -1,
-<a name="l04030"></a>04030 -24, -76, 15, 15, 2, 85, 42, -72, -1, -24, -76, 12, 12, 6, 85, 42, -72, -1, -22, -74, 13, 13, 6, 85, 42,
-<a name="l04031"></a>04031 26, 50, -72, -1, -64, 64, 33, 39, 42, 52, 96, 50, -64, 50, 2, 63, 50, -128, 50, 2, 50, 16, 1, 1, 1,
-<a name="l04032"></a>04032 36, 0, 24, 13, 13, 2, 85, 0, 16, 13, 13, 6, 85, 0, 32, -72, -1, -12, -76, 13, 13, 2, 85, 32, -72,
-<a name="l04033"></a>04033 -1, -12, -76, 16, 16, 6, 85, 32, -72, -1, -12, 64, 25, 15, 15, 6, 85, 32, 36, 15, 16, 11, 11, 2, 85,
-<a name="l04034"></a>04034 15, 22, 12, 12, 2, 85, 15, 32, 13, 13, 2, 85, 15, -72, -1, -6, 64, 32, 15, 15, 2, 85, 15, 14, 12,
-<a name="l04035"></a>04035 12, 6, 85, 15, 12, 13, 13, 6, 85, 15, 34, -33, 0, 1, 63, 0, 79, 0, 2, 0, 25, 49, 52, 55, 24,
-<a name="l04036"></a>04036 43, 78, 16, -12, 93, 113, 77, -12, 43, 43, 43, 43, 43, 43, -19, 43, 43, 43, 16, 43, 43, -19, 114, 78, 16,
-<a name="l04037"></a>04037 93, 113, 43, -10, 43, 43, 43, 43, 113, 43, 77, -19, -12, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 114, 0,
-<a name="l04038"></a>04038 63, -19, 43, 43, 43, 63, -19, 113, 18, 57, 47, 43, 43, 93, 113, 114, 43, -28, 16, -3, 93, 113, 114, 43, -28,
-<a name="l04039"></a>04039 17, 18, 57, 17, 18, 57, 1, 17, 18, 23, 57, 49, 48, 67, 121, 64, 64, 39, 45, 30, 35, 5, 20, 44, 38,
-<a name="l04040"></a>04040 17, 16, 18, 16, 19, 16, 3, 6, 34, 13, 32, 27, 0, 9, 40, 7, 27, 1, 5, 45, 7, 27, 1, 30, 20,
-<a name="l04041"></a>04041 32, 27, 0, 33, 14, 35, 27, 0, 34, 35, 13, 12, 8, 41, 10, 27, 1, 40, 39, 9, 10, 6, 43, 4, 27,
-<a name="l04042"></a>04042 0, 31, 16, 29, 27, 1, 0, 43, 43, 16, 60, 16, 60, 43, 16, 60, 16, 60, 43, 1, 43, 43, 43, 43, 42,
-<a name="l04043"></a>04043 43, -127, -127, -127, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 1, 93, 114, 113, 93, 19, 55, 22, 22,
-<a name="l04044"></a>04044 51, 50, 54, 53, 52, 39, 38, 39, 46, 2, 53, 52, 54, 55, 54, 54, 51, 50, 22, 22, 23, 7, 38, 38, 35,
-<a name="l04045"></a>04045 34, 6, 21, 20, 23, 22, 23, 22, 23, 30, 2, 21, 20, 6, 6, 35, 34, 38, 63, -78, 15, -119, 123, 124, 120,
-<a name="l04046"></a>04046 53, 37, -109, -58, -103, 79, 65, 56, 42, -111, 83, 125, -67, 90, 17, -80, 12, 115, 105, 124, 106, 22, 22, 47, 27,
-<a name="l04047"></a>04047 -124, -65, -105, 86, 105, -58, 125, -49, -39, 1, 61, 28, 107, 114, 101, 68, 61, 35, 24, 37, 50, 73, -127, 78, 71,
-<a name="l04048"></a>04048 121, 40, 31, 43, 72, 123, 103, 24, 82, 92, 82, 55, 35, 28, 29, 19, 10, 36, 51, 65, 124, 92, 90, -97, 87,
-<a name="l04049"></a>04049 -84, 0, 0, 1, 0, 36, -1, -14, 2, 42, 5, -103, 0, 23, 0, -40, -71, 0, 10, -1, -64, -77, 35, 38, 52,
-<a name="l04050"></a>04050 9, -72, -1, -64, 64, 65, 35, 38, 52, -128, 25, 1, 0, 1, 12, 13, 10, 1, 3, 0, 22, 16, 9, 43, 15,
-<a name="l04051"></a>04051 10, 6, 22, 28, 3, 11, 15, 16, 34, 0, 34, 1, 13, 18, 37, 12, 1, -1, 7, 8, 69, 9, 69, 96, 7,
-<a name="l04052"></a>04052 112, 7, -128, 7, -112, 7, 4, 0, 7, 32, 7, -96, 7, -80, 7, -64, 7, -48, 7, 6, 7, -72, -1, -18, -76,
-<a name="l04053"></a>04053 16, 16, 2, 85, 7, -72, -1, -12, -76, 15, 15, 2, 85, 7, -72, -1, -14, -76, 14, 14, 2, 85, 7, -72, -1,
-<a name="l04054"></a>04054 -8, -76, 13, 13, 2, 85, 7, -72, -1, -8, -76, 12, 12, 2, 85, 7, -72, -1, -6, -76, 16, 16, 6, 85, 7,
-<a name="l04055"></a>04055 -72, -1, -16, 64, 11, 15, 15, 6, 85, 7, 6, 12, 12, 6, 85, 7, -72, -1, -24, -76, 13, 13, 6, 85, 7,
-<a name="l04056"></a>04056 -70, 2, 106, 0, 24, 1, 54, -79, 102, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, -12,
-<a name="l04057"></a>04057 -28, 16, -19, 60, -3, 60, 16, -28, -12, 60, 0, 63, -19, 63, 60, -3, 60, 17, 57, 18, 57, 17, 51, 51, 16,
-<a name="l04058"></a>04058 -55, 49, 48, 1, 93, 43, 43, 37, 23, 6, 35, 34, 38, 38, 53, 17, 35, 53, 51, 17, 55, 17, 51, 21, 35,
-<a name="l04059"></a>04059 17, 20, 22, 22, 51, 50, 2, 16, 26, 76, 60, 98, 108, 44, -124, -124, -77, -75, -75, 19, 43, 40, 30, -95, -97,
-<a name="l04060"></a>04060 16, 62, 101, -94, 2, 99, -116, 1, 7, 108, -2, -115, -116, -3, -109, 77, 44, 26, 0, 0, 1, 0, -125, -1, -24,
-<a name="l04061"></a>04061 3, -32, 4, 38, 0, 24, 1, 79, -71, 0, 26, -1, -64, 64, 9, 21, 23, 52, 2, 32, 19, 22, 52, 15, -72,
-<a name="l04062"></a>04062 -1, -16, 64, 51, 18, 20, 52, 43, 19, 1, 36, 8, 19, 22, 12, 1, 19, 22, 11, 6, 0, 10, 17, 28, 3,
-<a name="l04063"></a>04063 11, 0, 51, 22, 37, 24, 23, 64, 51, 54, 52, 26, 64, 16, 16, 2, 85, 23, 40, 16, 16, 2, 85, 23, 18,
-<a name="l04064"></a>04064 14, 14, 2, 85, 23, -72, -1, -20, 64, 11, 13, 13, 2, 85, 23, 4, 12, 12, 2, 85, 23, -72, -1, -12, 64,
-<a name="l04065"></a>04065 11, 11, 11, 6, 85, 23, 20, 16, 16, 6, 85, 23, -72, -1, -8, 64, 11, 13, 13, 6, 85, 23, 12, 15, 15,
-<a name="l04066"></a>04066 6, 85, 23, -72, -1, -10, 64, 13, 12, 12, 6, 85, -1, 23, 1, -64, 23, 1, 23, 78, 26, -72, -1, -64, 64,
-<a name="l04067"></a>04067 21, 52, 54, 52, -80, 26, -16, 26, 2, 112, 26, -96, 26, -80, 26, -1, 26, 4, 26, 12, 37, 9, -72, -1, -64,
-<a name="l04068"></a>04068 64, 16, 51, 54, 52, -16, 9, 1, 0, 9, 32, 9, -48, 9, -32, 9, 4, 9, -72, -1, -8, -76, 16, 16, 2,
-<a name="l04069"></a>04069 85, 9, -72, -1, -8, 64, 17, 14, 14, 2, 85, 9, 4, 12, 12, 2, 85, 9, 10, 11, 11, 6, 85, 9, -72,
-<a name="l04070"></a>04070 -1, -10, 64, 22, 15, 15, 6, 85, 9, 2, 12, 12, 6, 85, 9, 2, 13, 13, 6, 85, 9, 78, 25, 71, 80,
-<a name="l04071"></a>04071 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 93, 113, 43, -19, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43,
-<a name="l04072"></a>04072 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, -28, 0, 63, -19, 63, 63, 60, 57, 57, 1, 17, 18, 57, 49, 48,
-<a name="l04073"></a>04073 67, 121, 64, 26, 4, 16, 14, 13, 15, 13, 2, 6, 7, 8, 6, 8, 5, 8, 3, 6, 16, 4, 12, 27, 0,
-<a name="l04074"></a>04074 13, 8, 17, 27, 0, 0, 43, 1, 43, 42, 42, -127, 0, 93, 1, 43, 43, 43, 33, 53, 6, 35, 34, 38, 38,
-<a name="l04075"></a>04075 39, 38, 53, 17, 51, 17, 20, 23, 22, 22, 51, 50, 54, 54, 53, 17, 51, 17, 3, 63, 124, -43, 94, -93, 79,
-<a name="l04076"></a>04076 16, 11, -76, 11, 17, 110, 81, 81, -114, 59, -76, -100, -76, 72, 109, 79, 53, 115, 2, -110, -3, -77, -115, 49, 71,
-<a name="l04077"></a>04077 81, 83, -113, -120, 2, 57, -5, -38, 0, 1, 0, 26, 0, 0, 3, -24, 4, 38, 0, 10, 1, -22, -79, 2, 2,
-<a name="l04078"></a>04078 67, 84, 88, 64, 23, 5, 8, 0, 10, 8, 6, 1, 6, 10, 0, 5, 9, 8, 5, 1, 2, 5, 36, 15, 15,
-<a name="l04079"></a>04079 2, 85, 5, 47, 43, -35, -51, 16, -35, -51, 17, 51, 51, 0, 63, 63, 63, 18, 57, 49, 48, 27, -73, 53, 5,
-<a name="l04080"></a>04080 1, 0, 34, 17, 57, 10, -72, -1, -34, 64, 13, 17, 57, 9, 22, 18, 28, 52, 8, 22, 18, 28, 52, 2, -72,
-<a name="l04081"></a>04081 -1, -22, -77, 18, 28, 52, 1, -72, -1, -22, -77, 18, 28, 52, 10, -72, -1, -40, 64, 9, 30, 33, 52, 0, 40,
-<a name="l04082"></a>04082 30, 33, 52, 10, -72, -1, -24, 64, 9, 34, 37, 52, 0, 22, 34, 37, 52, 10, -72, -1, -38, 64, 126, 40, 46,
-<a name="l04083"></a>04083 52, 0, 32, 40, 46, 52, 15, 12, 41, 0, 40, 9, 38, 10, 57, 0, 53, 10, 72, 0, 71, 10, 86, 1, 86,
-<a name="l04084"></a>04084 2, 89, 8, 88, 9, 102, 1, 102, 2, 105, 8, 105, 9, 120, 0, 119, 1, 119, 2, 121, 8, 120, 9, 119, 10,
-<a name="l04085"></a>04085 -121, 1, -121, 2, -122, 3, -119, 7, -120, 8, -118, 9, -99, 0, -104, 9, -111, 10, -84, 0, -94, 10, -67, 0, -73,
-<a name="l04086"></a>04086 7, -79, 10, -55, 0, -59, 10, -38, 0, -43, 10, -20, 0, -29, 10, -5, 0, -12, 10, 44, 10, 0, 5, 10, 24,
-<a name="l04087"></a>04087 0, 22, 10, 40, 0, 38, 10, 55, 10, 79, 0, 64, 10, 9, 5, 64, 18, 22, 52, 5, 64, 11, 13, 52, -79,
-<a name="l04088"></a>04088 6, 2, 67, 84, 88, 64, 9, 5, 1, 0, 8, 6, 1, 6, 0, 10, -72, -1, -12, 64, 15, 13, 13, 6, 85,
-<a name="l04089"></a>04089 10, 0, 12, 13, 13, 6, 85, 0, 5, 9, 8, -72, -1, -12, 64, 18, 13, 13, 6, 85, 8, 5, 1, 2, 12,
-<a name="l04090"></a>04090 13, 13, 6, 85, 2, 5, 5, 12, 11, 17, 18, 57, 47, -35, 43, -51, 16, -35, 43, -51, 16, -51, 43, -51, 43,
-<a name="l04091"></a>04091 0, 47, 63, 63, 17, 18, 57, 49, 48, 27, 64, 55, 10, 7, 8, 8, 37, 9, 10, 20, 9, 9, 10, 0, 3,
-<a name="l04092"></a>04092 2, 2, 37, 1, 0, 20, 1, 1, 0, 5, 10, 10, 0, 10, 9, 8, 8, 2, 2, 1, 6, 7, 10, 9, 3,
-<a name="l04093"></a>04093 0, 1, 5, 47, 12, 1, 12, 34, 8, 64, 64, 64, 9, -128, 9, 2, 9, -72, 1, 27, -75, 64, 5, -128, 5,
-<a name="l04094"></a>04094 2, 5, -72, 1, 27, 64, 9, 32, 2, 64, 1, 34, 11, -22, -46, 24, 43, 16, -10, -19, 26, 25, -3, 93, -3,
-<a name="l04095"></a>04095 93, 26, 24, -19, -28, 93, 17, 18, 57, 57, 18, 57, 57, 0, 63, 60, 16, 60, 16, 60, 63, 60, 17, 57, -121,
-<a name="l04096"></a>04096 5, 46, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125, -60, 89, 49, 48, 0, 43, 43, 1, 113, 93, 43, 43, 43,
-<a name="l04097"></a>04097 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 93, 89, 33, 1, 51, 19, 22, 23, 54, 55, 19, 51, 1, 1, -82,
-<a name="l04098"></a>04098 -2, 108, -66, -28, 37, 31, 24, 43, -20, -71, -2, 110, 4, 38, -3, -124, 103, 111, 84, 118, 2, -120, -5, -38, 0,
-<a name="l04099"></a>04099 0, 1, 0, 6, 0, 0, 5, -73, 4, 38, 0, 18, 4, 29, -79, 2, 2, 67, 84, 88, -71, 0, 18, -1, -12,
-<a name="l04100"></a>04100 64, 17, 13, 13, 2, 85, 7, 6, 13, 13, 2, 85, 0, 6, 13, 13, 2, 85, 10, -72, -1, -44, -76, 12, 13,
-<a name="l04101"></a>04101 2, 85, 4, -72, -1, -24, 64, 11, 12, 13, 2, 85, 17, 32, 12, 13, 2, 85, 10, -72, -1, -64, -76, 14, 16,
-<a name="l04102"></a>04102 2, 85, 4, -72, -1, -64, 64, 47, 14, 16, 2, 85, 17, 64, 14, 16, 2, 85, 4, 10, 17, 3, 1, 0, 12,
-<a name="l04103"></a>04103 6, 7, 6, 1, 6, 15, 10, 0, 10, 13, 12, 6, 12, 12, 2, 85, 12, 17, 1, 2, 4, 10, 4, 17, 10,
-<a name="l04104"></a>04104 12, 12, 2, 85, 17, -72, -1, -8, -76, 13, 13, 2, 85, 17, 47, 43, 43, -51, -51, 16, -42, -51, 16, -44, 43,
-<a name="l04105"></a>04105 -51, 0, 63, 63, 63, 63, 63, 17, 18, 23, 57, 49, 48, 0, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 27,
-<a name="l04106"></a>04106 64, 22, 15, 20, 1, 42, 4, 41, 10, 2, 74, 17, 91, 17, -114, 17, 3, 17, 32, 13, 13, 6, 85, 10, -72,
-<a name="l04107"></a>04107 -1, -32, -76, 13, 13, 6, 85, 4, -72, -1, -32, -76, 13, 13, 6, 85, 17, -72, -1, -16, 64, 9, 31, 33, 52,
-<a name="l04108"></a>04108 16, 28, 29, 39, 52, 9, -72, -1, -16, 64, -73, 31, 36, 52, 4, 6, 12, 9, 19, 6, 27, 9, 25, 18, 5,
-<a name="l04109"></a>04109 4, 0, 4, 6, 11, 9, 11, 14, 8, 18, 16, 0, 19, 3, 20, 7, 28, 8, 27, 11, 29, 14, 36, 0, 37,
-<a name="l04110"></a>04110 7, 42, 8, 43, 14, 52, 0, 53, 7, 58, 8, 59, 14, 68, 3, 71, 6, 64, 7, 77, 8, 75, 11, 67, 15,
-<a name="l04111"></a>04111 71, 17, 74, 18, 91, 15, 82, 18, 107, 7, 100, 8, 103, 18, 121, 6, 122, 7, 116, 8, -71, 6, -70, 15, -74,
-<a name="l04112"></a>04112 18, -11, 6, -5, 9, 40, 11, 17, 40, 0, 40, 13, 39, 14, 40, 15, 39, 18, 47, 20, 56, 0, 55, 18, 119,
-<a name="l04113"></a>04113 8, -122, 8, -104, 3, -105, 12, -89, 1, -88, 2, -88, 11, -90, 12, -75, 0, -74, 6, -70, 14, -56, 4, -42, 6,
-<a name="l04114"></a>04114 -39, 9, -24, 4, -24, 15, -25, 18, -12, 6, -6, 9, 28, 11, 6, 13, 13, 6, 85, 12, 6, 13, 13, 6, 85,
-<a name="l04115"></a>04115 16, 6, 13, 13, 6, 85, 14, 6, 13, 13, 6, 85, 15, 6, 13, 13, 6, 85, 18, -79, 6, 2, 67, 84, 88,
-<a name="l04116"></a>04116 64, 27, 10, 14, 15, 4, 18, 0, 17, 8, 7, 8, 37, 7, 15, 37, 14, 18, 37, 0, 0, 14, 7, 3, 13,
-<a name="l04117"></a>04117 1, 12, 37, 13, -72, -1, -42, 64, 55, 11, 11, 6, 85, 13, 2, 37, 1, 42, 11, 11, 6, 85, 1, 13, 1,
-<a name="l04118"></a>04118 20, 19, 6, 10, 11, 17, 38, 10, 43, 17, 84, 4, 82, 10, 92, 17, 108, 17, 124, 17, -118, 17, 10, 17, 10,
-<a name="l04119"></a>04119 4, 3, 0, 1, 15, 10, 0, 10, 12, 6, 7, 6, 1, 6, 0, 63, 63, 63, 63, 63, 17, 18, 23, 57, 93,
-<a name="l04120"></a>04120 1, 17, 18, 57, 57, 47, 43, -12, 47, 43, -12, 17, 18, 23, 57, 16, -28, 16, -28, 16, -28, 17, 18, 57, 17,
-<a name="l04121"></a>04121 18, 57, 17, 18, 57, 27, 64, 20, 3, 5, 5, 2, 6, 7, 7, 5, 9, 10, 10, 8, 11, 12, 12, 10, 16,
-<a name="l04122"></a>04122 17, 17, 15, -72, -1, 75, -77, 5, 0, 18, 32, -72, -1, 73, 64, 102, 10, 15, 14, 32, -61, 17, 7, 8, 32,
-<a name="l04123"></a>04123 7, 17, 18, 18, 43, 5, 7, 20, 5, 5, 7, 14, 10, 12, 12, 37, 13, 14, 20, 13, 13, 14, 8, 17, 15,
-<a name="l04124"></a>04124 15, 43, 10, 8, 20, 10, 10, 8, 0, 5, 2, 2, 37, 1, 0, 20, 1, 1, 0, 0, 2, 1, 7, 18, 4,
-<a name="l04125"></a>04125 8, 15, 17, 12, 14, 13, 10, 17, 10, 4, 3, 18, 13, 12, 12, 8, 8, 7, 7, 2, 2, 1, 6, 18, 15,
-<a name="l04126"></a>04126 15, 14, 14, 0, 10, 20, -10, 16, 13, 1, 96, 13, 112, 13, -128, 13, 3, 13, -72, 1, -89, 64, 10, 32, 79,
-<a name="l04127"></a>04127 10, 1, 111, 10, 127, 10, 2, 10, -72, 2, 85, 64, 9, 79, 17, 1, 111, 17, 127, 17, 2, 17, -72, 2, 85,
-<a name="l04128"></a>04128 64, 11, 16, 5, 1, 96, 5, 112, 5, -128, 5, 3, 5, -72, 1, -89, -75, 1, -10, 19, -10, 102, 24, 43, 78,
-<a name="l04129"></a>04129 16, -12, 25, 77, -12, 93, 93, 24, -3, 93, 113, -3, 93, 113, 26, 25, -3, 93, 93, 24, -26, 0, 63, 60, 16,
-<a name="l04130"></a>04130 60, 16, 60, 63, 60, 16, 60, 16, 60, 16, 60, 16, 60, 18, 23, 57, 1, 17, 18, 57, 57, 18, 57, 57, 17,
-<a name="l04131"></a>04131 57, 57, 18, 57, 57, -121, 77, 46, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125, -60, -121, 46, 24, 43, -121, 125,
-<a name="l04132"></a>04132 -60, -121, 46, 24, 43, -121, 125, -60, 43, 43, 43, -121, 14, 16, -60, 7, 14, 16, 60, 7, 14, 16, 60, -121, 14,
-<a name="l04133"></a>04133 16, -60, -121, 14, 16, -60, 75, -80, 31, 83, 88, -76, 13, 32, 12, 32, 2, -68, -1, -32, 0, 1, -1, -32, 0,
-<a name="l04134"></a>04134 14, -1, -48, -76, 0, 48, 15, 32, 18, -72, -1, -32, 1, 56, 56, 56, 56, 56, 56, 56, 56, 89, 75, -80, 52,
-<a name="l04135"></a>04135 83, 88, -71, 0, 8, -1, -48, -79, 7, 48, 1, 56, 56, 89, 75, -80, 33, 83, 75, -80, 51, 81, 90, 88, -71,
-<a name="l04136"></a>04136 0, 8, -1, -32, -79, 7, 32, 1, 56, 56, 89, 75, -80, 18, 83, 75, -80, 30, 81, 90, 88, -71, 0, 14, -1,
-<a name="l04137"></a>04137 -48, -74, 15, 32, 13, 32, 12, 32, 8, -72, -1, -48, -78, 7, 48, 18, -72, -1, -32, -78, 0, 56, 2, -70, -1,
-<a name="l04138"></a>04138 -32, 0, 1, -1, -32, 1, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 89, 75, -80, 18, 83, 75, -80, 23, 81,
-<a name="l04139"></a>04139 90, 88, -71, 0, 17, -1, -32, -77, 10, 32, 4, 32, 0, 56, 56, 56, 89, 89, 49, 48, 1, 67, 92, 88, -71,
-<a name="l04140"></a>04140 0, 14, -1, -44, -74, 18, 57, 0, 44, 18, 57, 0, -72, -1, -44, -79, 19, 57, 43, 43, 43, 89, 43, 43, 43,
-<a name="l04141"></a>04141 43, 43, 93, 113, 114, 43, 43, 43, 0, 43, 43, 43, 113, 93, 1, 93, 89, 33, 1, 51, 19, 23, 54, 55, 19,
-<a name="l04142"></a>04142 51, 19, 23, 55, 19, 51, 1, 35, 3, 39, 3, 1, 75, -2, -69, -70, -87, 63, 4, 51, -87, -71, -97, 53, 61,
-<a name="l04143"></a>04143 -74, -81, -2, -76, -69, -87, 41, -41, 4, 38, -3, -101, -28, 17, -54, 2, 110, -3, -104, -53, -51, 2, 102, -5, -38,
-<a name="l04144"></a>04144 2, 124, -75, -4, -49, 0, 1, 0, 15, 0, 0, 3, -15, 4, 38, 0, 16, 1, -36, -79, 2, 2, 67, 84, 88,
-<a name="l04145"></a>04145 64, 21, 15, 1, 11, 6, 4, 2, 9, 6, 2, 6, 13, 10, 0, 10, 15, 24, 15, 15, 2, 85, 15, 47, 43,
-<a name="l04146"></a>04146 0, 63, 63, 63, 63, 17, 23, 57, 49, 48, 27, -73, 15, 18, 1, 15, 34, 25, 57, 6, -72, -1, -34, 64, 80,
-<a name="l04147"></a>04147 25, 57, 90, 15, -106, 4, -106, 8, -103, 14, -102, 15, -64, 5, -64, 6, -64, 7, -53, 15, 9, 15, 64, 22, 57,
-<a name="l04148"></a>04148 26, 3, 19, 9, 21, 13, 26, 16, 53, 1, 58, 11, -127, 1, -114, 11, 8, 47, 18, 87, 4, 89, 7, 89, 11,
-<a name="l04149"></a>04149 88, 14, -105, 1, -104, 10, -104, 11, -73, 2, -72, 12, -56, 11, -54, 14, -52, 16, -38, 3, -43, 9, -47, 13, -37,
-<a name="l04150"></a>04150 16, -27, 10, 18, 18, -79, 6, 2, 67, 84, 88, 64, 11, 12, 0, 18, 17, 15, 24, 13, 16, 6, 85, 6, -72,
-<a name="l04151"></a>04151 -1, -24, 64, 14, 13, 16, 6, 85, 15, 6, 0, 2, 13, 0, 10, 10, 2, 6, 0, 63, 60, 63, 60, 17, 18,
-<a name="l04152"></a>04152 57, 57, 43, 43, 1, 17, 18, 57, 57, 27, 64, 102, 6, 6, 3, 7, 8, 9, 9, 1, 6, 6, 9, 5, 4,
-<a name="l04153"></a>04153 3, 3, 11, 15, 15, 16, 14, 13, 13, 1, 15, 15, 13, 16, 11, 1, 0, 9, 2, 13, 11, 3, 12, 16, 10,
-<a name="l04154"></a>04154 6, 15, 2, 15, 10, 16, -58, 0, -58, 9, 2, 16, 37, 0, 9, 20, 0, 0, 9, 3, 2, 13, -58, 13, 1,
-<a name="l04155"></a>04155 13, 37, 12, 3, 20, 12, 12, 3, 10, 9, 9, 3, 3, 2, 6, 16, 13, 13, 12, 12, 0, 10, 79, 18, 1,
-<a name="l04156"></a>04156 18, 73, 13, 126, 12, 34, 10, 15, 97, 6, 9, 126, 64, 10, -72, 1, 27, -73, 64, 6, 80, 6, -128, 6, 3,
-<a name="l04157"></a>04157 6, -72, 2, 67, 64, 14, 32, 3, 126, 2, 34, 79, 0, 1, 0, 73, 17, 124, -60, 24, 43, 16, -10, 93, -12,
-<a name="l04158"></a>04158 -19, 26, 25, -3, 93, -3, 26, 24, -19, 16, -27, 16, -12, -19, -26, 93, 0, 63, 60, 16, 60, 16, 60, 63, 60,
-<a name="l04159"></a>04159 16, 60, 16, 60, -121, 5, 46, 43, 93, -121, 125, -60, -121, 46, 24, 43, 93, 125, 16, -60, 0, 17, 18, 57, 57,
-<a name="l04160"></a>04160 15, 15, -121, 8, -60, -121, 14, 16, -60, 8, -60, -121, 14, 16, -60, -60, 8, -60, 7, 14, 16, 60, 60, 8, 60,
-<a name="l04161"></a>04161 89, 49, 48, 1, 67, 92, 88, -76, 14, 24, 29, 57, 11, -72, -1, -34, 64, 11, 29, 57, 12, 34, 23, 57, 3,
-<a name="l04162"></a>04162 34, 23, 57, 11, -72, -1, -34, -78, 33, 57, 16, -72, -1, -64, 64, 10, 21, 57, 1, 34, 33, 57, 9, 64, 28,
-<a name="l04163"></a>04163 57, 43, 43, 43, 43, 43, 43, 43, 43, 89, 93, 113, 0, 43, 93, 43, 43, 1, 93, 89, 51, 1, 1, 51, 23,
-<a name="l04164"></a>04164 22, 23, 54, 55, 55, 51, 1, 1, 35, 3, 39, 1, 15, 1, -124, -2, -103, -31, -93, 46, 28, 44, 37, -77, -41,
-<a name="l04165"></a>04165 -2, -111, 1, -117, -35, -38, 58, -2, -23, 2, 40, 1, -2, -7, 71, 48, 66, 51, -5, -2, 12, -3, -50, 1, 74,
-<a name="l04166"></a>04166 89, -2, 93, 0, 1, 0, 33, -2, 81, 3, -18, 4, 38, 0, 26, 1, -9, -79, 2, 2, 67, 84, 88, 64, 29,
-<a name="l04167"></a>04167 10, 20, 15, 3, 11, 3, 28, 25, 15, 18, 6, 11, 6, 19, 64, 18, 15, 32, 11, 64, 12, 32, 15, 24, 15,
-<a name="l04168"></a>04168 15, 2, 85, 15, 25, 47, 43, 26, -35, 26, 24, -51, 26, 25, 16, -35, 26, 24, -51, 0, 63, 63, 63, -19, 18,
-<a name="l04169"></a>04169 23, 57, 49, 48, 27, -77, 15, 28, 1, 15, -72, -1, -34, 64, 109, 28, 57, 40, 20, 86, 15, -81, 10, 3, 64,
-<a name="l04170"></a>04170 13, 64, 15, 2, 15, 32, 40, 48, 52, 16, 32, 40, 48, 52, 7, 12, 9, 18, 22, 13, 24, 18, 39, 11, 39,
-<a name="l04171"></a>04171 12, 39, 13, 54, 12, 54, 13, 53, 14, -103, 17, 11, 40, 18, 40, 19, 72, 22, 89, 18, 89, 19, 89, 21, 105,
-<a name="l04172"></a>04172 18, 105, 19, 105, 21, 121, 6, 118, 13, 121, 17, 122, 20, 122, 21, -123, 13, -118, 17, -116, 18, -116, 19, -119, 20,
-<a name="l04173"></a>04173 -104, 10, -88, 11, -68, 16, -69, 17, -70, 20, -22, 10, -25, 20, -11, 13, -3, 16, -7, 20, -1, 28, 30, 18, -79,
-<a name="l04174"></a>04174 6, 2, 67, 84, 88, 64, 22, 19, 11, 28, 27, 4, 15, 68, 15, -124, 15, 3, 15, 25, 11, 3, 28, 25, 15,
-<a name="l04175"></a>04175 18, 6, 11, 6, 0, 63, 63, 63, -19, 17, 18, 57, 93, 1, 17, 18, 57, 57, 27, 64, 55, 15, 15, 12, 16,
-<a name="l04176"></a>04176 17, 18, 18, 10, 0, 3, 25, 20, 19, 19, 37, 18, 10, 20, 18, 18, 10, 15, 12, 15, 17, 12, 37, 11, 10,
-<a name="l04177"></a>04177 20, 11, 11, 10, 19, 18, 18, 12, 12, 11, 6, 3, 28, 25, 15, 0, 28, 16, 28, 2, 47, 28, -65, 28, 2,
-<a name="l04178"></a>04178 28, -72, 2, 63, -75, 15, 19, 64, 18, 64, 20, -72, 2, 84, 64, 11, 63, 18, 64, 18, 2, 95, 18, -65, 18,
-<a name="l04179"></a>04179 2, 18, -72, 1, 66, -74, 15, 1, 34, 0, 69, 27, 10, -72, 2, 84, 64, 18, 15, 32, 11, 64, 64, 32, 12,
-<a name="l04180"></a>04180 48, 12, 79, 12, 3, 80, 12, -1, 12, 2, 12, -72, 1, 66, -77, 47, 15, 1, 15, -72, 2, 63, -76, 27, 32,
-<a name="l04181"></a>04181 124, 102, 24, 43, 26, 25, 16, -3, 113, -12, 93, 113, 26, 24, -19, 26, 25, 16, -19, 24, 16, -12, -28, 25, 16,
-<a name="l04182"></a>04182 -28, 93, 113, -19, 26, 24, 16, -19, 25, 16, -28, 93, 113, 0, 24, 63, -19, 63, 60, 16, 60, 16, 60, -121, 5,
-<a name="l04183"></a>04183 46, 43, 8, 125, 16, -60, -121, 5, 46, 24, 43, 14, 125, 16, -60, 0, 17, 18, 57, -121, 14, 16, 60, 60, 8,
-<a name="l04184"></a>04184 -60, 75, -80, 14, 83, 75, -80, 24, 81, 90, 88, -69, 0, 12, -1, -24, 0, 11, -1, -24, 1, 56, 56, 89, 89,
-<a name="l04185"></a>04185 49, 48, 1, 67, 92, 88, -71, 0, 20, -1, -34, -74, 55, 57, 10, 34, 55, 57, 14, -72, -1, -24, -75, 21, 57,
-<a name="l04186"></a>04186 17, 34, 21, 57, 43, 43, 43, 43, 89, 93, 113, 43, 43, 0, 113, 93, 43, 1, 93, 89, 19, 39, 22, 51, 50,
-<a name="l04187"></a>04187 54, 55, 54, 55, 54, 55, 1, 51, 19, 22, 23, 54, 55, 19, 51, 1, 6, 7, 6, 6, 35, 34, 127, 20, 59,
-<a name="l04188"></a>04188 44, 60, 72, 23, 17, 38, 5, 11, -2, 109, -62, -35, 43, 34, 31, 43, -29, -76, -2, 108, 65, 36, 48, 124, 86,
-<a name="l04189"></a>04189 52, -2, 103, -87, 16, 40, 36, 27, 107, 15, 29, 4, 40, -3, -103, 117, -127, 124, 118, 2, 107, -5, -56, -81, 66,
-<a name="l04190"></a>04190 89, 83, 0, 0, 1, 0, 40, 0, 0, 3, -44, 4, 38, 0, 14, 1, -81, 64, 13, 18, -72, 2, -55, 8, 2,
-<a name="l04191"></a>04191 18, 1, 50, 18, 23, 52, 8, -72, -1, -50, 64, 9, 18, 23, 52, 1, 62, 30, 33, 52, 8, -72, -1, -62, 64,
-<a name="l04192"></a>04192 74, 30, 33, 52, 41, 2, 40, 9, 47, 16, 57, 1, 57, 10, 73, 1, 70, 2, 70, 8, 73, 9, 79, 16, 92,
-<a name="l04193"></a>04193 1, 84, 2, 84, 8, 90, 9, 80, 16, 108, 1, 99, 2, 99, 8, 106, 9, 123, 1, 116, 8, 123, 9, -117, 1,
-<a name="l04194"></a>04194 -123, 8, -119, 9, -7, 1, -12, 2, 27, 25, 8, 38, 1, 41, 8, 43, 9, 57, 8, -91, 8, -41, 1, 7, 16,
-<a name="l04195"></a>04195 -72, -1, -64, -73, 16, 21, 52, 2, 44, 18, 57, 9, -72, -1, -44, 64, 35, 18, 57, 1, 2, 58, 9, 10, 2,
-<a name="l04196"></a>04196 8, 10, 10, 37, 1, 2, 20, 1, 1, 2, 1, 13, 14, 8, 6, 2, 97, 5, 43, 7, 6, 6, 10, 97, 13,
-<a name="l04197"></a>04197 0, 13, -72, -1, -12, 64, 9, 11, 11, 6, 85, 13, 43, 14, 10, 2, -72, 1, 15, -76, 8, 8, 7, 5, 6,
-<a name="l04198"></a>04198 -69, 2, 91, 0, 0, 0, 7, -1, -12, 64, 22, 11, 11, 6, 85, 7, 34, 13, -96, 14, 1, 0, 14, 64, 14,
-<a name="l04199"></a>04199 96, 14, -128, 14, -16, 14, 5, 14, -72, -1, -12, 64, 36, 11, 11, 6, 85, 14, 116, 0, 10, 126, 1, 1, -81,
-<a name="l04200"></a>04200 0, 1, 79, 0, 111, 0, -1, 0, 3, 0, 24, 11, 11, 6, 85, 0, 25, 15, 16, 116, 33, 124, -60, 24, 43,
-<a name="l04201"></a>04201 43, 78, -12, 43, 93, 113, 60, 77, 16, -19, 16, -3, 43, 93, 113, 60, -28, 43, 16, -12, 60, 16, 60, 16, -3,
-<a name="l04202"></a>04202 0, 63, -19, 43, 60, 16, -27, 63, 60, -3, -27, 17, 57, 17, 18, 57, -121, 5, 46, 43, -121, 125, -60, 16, 14,
-<a name="l04203"></a>04203 -60, 43, 49, 48, 1, 43, 43, 43, 113, 93, 0, 43, 43, 43, 43, 67, 92, 88, -75, 41, 1, 38, 8, 2, 1,
-<a name="l04204"></a>04204 -72, -1, -50, 64, 9, 18, 23, 52, 8, 50, 18, 23, 52, 1, -72, -1, -62, -73, 30, 33, 52, 8, 62, 30, 33,
-<a name="l04205"></a>04205 52, 0, 43, 43, 43, 43, 1, 113, 89, 1, 93, 67, 92, 88, -71, 0, 8, -1, -34, -78, 15, 57, 9, -72, -1,
-<a name="l04206"></a>04206 -34, -78, 15, 57, 9, -72, -1, -24, -73, 27, 57, 9, 8, 22, 27, 61, 9, -72, -1, -16, -78, 23, 57, 9, -72,
-<a name="l04207"></a>04207 -1, -8, 64, 10, 22, 57, 2, 20, 22, 57, 2, 26, 22, 57, 43, 43, 43, 43, 43, 43, 43, 43, 89, 51, 53,
-<a name="l04208"></a>04208 1, 6, 35, 33, 53, 33, 21, 1, 7, 54, 51, 33, 21, 40, 2, -92, 115, 88, -2, 79, 3, 100, -3, -63, 111,
-<a name="l04209"></a>04209 121, 106, 1, -21, -110, 3, 8, 6, -110, 119, -3, 94, 123, 9, -101, 0, 0, 1, 0, 57, -2, 81, 2, 124, 5,
-<a name="l04210"></a>04210 -45, 0, 42, 0, 123, 64, 77, 71, 15, 1, 40, 18, 15, 17, 52, 2, 18, 15, 17, 52, 7, 24, 11, 14, 52,
-<a name="l04211"></a>04211 37, 18, 11, 14, 52, 22, 39, 22, 0, 41, 42, 42, 12, 31, 37, 32, 19, 13, 37, 12, 17, 13, 12, 12, 31,
-<a name="l04212"></a>04212 32, -82, 27, 18, 17, 37, 5, 25, 58, 27, 37, 38, 3, 58, 5, -82, 42, 39, 58, 38, -82, 42, 42, 95, 0,
-<a name="l04213"></a>04213 -113, 0, 2, 0, 105, 43, 112, 104, 24, 43, 16, -10, 93, 60, 16, -12, -28, 16, -12, -28, 16, -3, -28, 16, -3,
-<a name="l04214"></a>04214 60, 16, -12, 60, 60, 16, 60, 0, 63, -19, 63, -19, 18, 57, 47, -19, 57, 1, 18, 57, 49, 48, 43, 43, 43,
-<a name="l04215"></a>04215 43, 1, 113, 19, 62, 2, 18, 55, 62, 2, 55, 54, 51, 51, 21, 35, 34, 6, 21, 16, 7, 6, 6, 7, 22,
-<a name="l04216"></a>04216 22, 21, 20, 23, 22, 22, 51, 51, 21, 35, 34, 39, 46, 2, 2, 38, 38, 39, 57, 77, 97, 32, 2, 5, 9,
-<a name="l04217"></a>04217 49, 72, 56, 38, 86, 56, 31, 104, 68, 11, 18, 87, 93, 110, 99, 4, 8, 65, 95, 31, 56, 98, 44, 64, 84,
-<a name="l04218"></a>04218 25, 2, 32, 97, 77, 2, 100, 2, 79, -118, 1, 78, 53, 84, 102, 61, 16, 10, -99, 75, -126, -2, -6, 69, 107,
-<a name="l04219"></a>04219 116, 45, 46, -67, -41, -61, 37, 68, 54, -99, 16, 23, 103, -98, 1, 104, -118, 80, 2, 0, 0, 1, 0, -68, -2,
-<a name="l04220"></a>04220 81, 1, 89, 5, -45, 0, 3, 0, 50, -71, 0, 3, 1, 126, 64, 24, 1, 0, 5, -95, 2, 2, -97, 3, -81,
-<a name="l04221"></a>04221 3, 2, 3, 118, 0, 0, 32, 1, 1, 1, -95, 4, -95, -104, 24, 43, 78, 16, -12, 93, 60, 77, 16, -3, 93,
-<a name="l04222"></a>04222 60, 16, -18, 0, 63, 77, -19, 49, 48, 19, 17, 51, 17, -68, -99, -2, 81, 7, -126, -8, 126, 0, 1, 0, 47,
-<a name="l04223"></a>04223 -2, 81, 2, 114, 5, -45, 0, 42, 0, -127, -71, 0, 3, -1, -18, -77, 15, 17, 52, 41, -72, -1, -18, -77, 15,
-<a name="l04224"></a>04224 17, 52, 38, -72, -1, -24, -77, 11, 14, 52, 8, -72, -1, -18, 64, 57, 11, 14, 52, 23, 40, 23, 0, 41, 1,
-<a name="l04225"></a>04225 1, 13, 32, 37, 33, 17, 14, 37, 13, 19, 33, 32, 32, 14, 13, -82, 18, 26, 58, 28, 37, 39, 20, 58, 18,
-<a name="l04226"></a>04226 37, 6, 39, 58, 40, -82, 1, 4, 58, 6, -82, 0, 80, 1, -128, 1, 2, 1, 105, 44, -101, -115, 24, 43, 16,
-<a name="l04227"></a>04227 -12, 93, 60, -12, -28, 16, -12, -28, 16, -3, -28, 16, -3, -28, 16, -12, 60, 60, 16, 60, 0, 63, -19, 63, -19,
-<a name="l04228"></a>04228 18, 57, 47, -19, 57, 1, 17, 57, 49, 48, 43, 43, 43, 43, 1, 21, 14, 2, 2, 7, 14, 2, 7, 6, 35,
-<a name="l04229"></a>04229 35, 53, 51, 50, 54, 53, 52, 55, 54, 54, 55, 38, 38, 53, 52, 39, 38, 38, 35, 35, 53, 51, 50, 23, 30,
-<a name="l04230"></a>04230 2, 18, 22, 22, 2, 114, 77, 97, 32, 2, 5, 9, 49, 72, 56, 38, 86, 56, 31, 104, 68, 9, 16, 96, 88,
-<a name="l04231"></a>04231 115, 94, 5, 7, 65, 95, 31, 56, 98, 44, 64, 84, 25, 2, 32, 97, 2, 100, -93, 2, 80, -119, -2, -78, 53,
-<a name="l04232"></a>04232 85, 101, 61, 16, 11, -99, 75, -125, -6, 67, 111, -123, 37, 55, -75, -41, -61, 38, 67, 53, -99, 16, 22, 104, -98,
-<a name="l04233"></a>04233 -2, -104, -119, 80, 0, 1, 0, 87, 2, 45, 4, 86, 3, 117, 0, 22, 0, 85, 64, 20, 11, 11, 4, 22, 27,
-<a name="l04234"></a>04234 11, 20, 22, 4, 13, 32, 43, 12, 59, 12, 2, 12, 1, 32, 0, -72, -1, -32, 64, 14, 11, 14, 52, 0, 16,
-<a name="l04235"></a>04235 32, 9, -44, 12, 0, -44, 20, 32, 3, -72, 2, 88, 64, 12, 12, 13, 12, 26, 24, 1, 0, 25, 23, 113, -116,
-<a name="l04236"></a>04236 24, 43, 78, 16, -12, 60, 16, -10, 60, 0, 47, 77, -12, -3, -28, 16, -12, -19, 16, 43, -19, 16, 93, -19, 49,
-<a name="l04237"></a>04237 48, 0, 93, 19, 53, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 21, 6, 6, 35, 34, 38, 38, 35, 34,
-<a name="l04238"></a>04238 6, 87, 106, -84, 60, -124, 122, 69, 69, 35, 65, -117, 54, 64, -125, 82, 60, 109, -19, 79, 64, 113, 2, 45, -51,
-<a name="l04239"></a>04239 120, 35, 52, 29, 18, 78, 59, -44, 60, 54, 28, 106, 55, 0, -1, -1, -1, -3, 0, 0, 5, 89, 6, -31, 2,
-<a name="l04240"></a>04240 38, 0, 36, 0, 0, 1, 7, 0, -114, 1, 62, 1, 30, 0, 50, -75, 3, 2, 2, 3, 2, 22, -70, 2, 33,
-<a name="l04241"></a>04241 0, 41, 1, 100, -123, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 15, 22, 1, 2, 65, 43, 27, 64, 10,
-<a name="l04242"></a>04242 20, 64, 18, 20, 52, 20, 12, 100, 72, 43, 43, 43, 89, 53, 53, -1, -1, -1, -3, 0, 0, 5, 89, 6, -12,
-<a name="l04243"></a>04243 2, 38, 0, 36, 0, 0, 1, 7, 0, -37, 1, 63, 1, 7, 0, 25, 64, 16, 3, 2, -1, 18, 1, 18, 12,
-<a name="l04244"></a>04244 0, 104, 43, 2, 3, 2, 30, 2, 41, 0, 43, 1, 43, 113, 53, 53, 0, -1, -1, 0, 102, -2, 91, 5, 118,
-<a name="l04245"></a>04245 5, -45, 2, 38, 0, 38, 0, 0, 1, 7, 0, -36, 1, -108, 0, 0, 0, 34, 64, 25, 1, 0, 48, 32, 48,
-<a name="l04246"></a>04246 79, 48, 3, 47, 48, 127, 48, -113, 48, 3, 48, 4, 0, 72, 43, 1, 1, 31, 8, 41, 0, 43, 1, 43, 93,
-<a name="l04247"></a>04247 113, 53, -1, -1, 0, -94, 0, 0, 4, -24, 7, 44, 2, 38, 0, 40, 0, 0, 1, 7, 0, -115, 1, 84, 1,
-<a name="l04248"></a>04248 106, 0, 40, 64, 16, 1, 0, 15, 1, -48, 15, -16, 15, 2, 47, 15, -112, 15, 2, 15, 2, -72, -2, 3, -76,
-<a name="l04249"></a>04249 72, 43, 1, 1, 15, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 93, 113, 53, -1, -1, 0, -100, 0, 0, 5,
-<a name="l04250"></a>04250 31, 6, -5, 2, 38, 0, 49, 0, 0, 1, 7, 0, -41, 1, -89, 1, 81, 0, 75, -79, 1, 27, -72, -1, -64,
-<a name="l04251"></a>04251 -76, 15, 15, 6, 85, 27, -72, -1, -64, 64, 29, 12, 12, 6, 85, -32, 27, -1, 27, 2, 111, 27, -81, 27, 2,
-<a name="l04252"></a>04252 79, 27, 1, -32, 27, -1, 27, 2, 95, 27, -112, 27, 2, 27, 4, -72, -2, 122, -76, 72, 43, 1, 1, 25, -70,
-<a name="l04253"></a>04253 2, 33, 0, 41, 1, 100, -123, 0, 43, 1, 43, 93, 93, 113, 113, 113, 43, 43, 53, 0, -1, -1, 0, 99, -1,
-<a name="l04254"></a>04254 -25, 5, -35, 6, -31, 2, 38, 0, 50, 0, 0, 1, 7, 0, -114, 1, -57, 1, 30, 0, 44, -75, 3, 2, 2,
-<a name="l04255"></a>04255 3, 2, 35, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 31, 32, 3, 3, 65, 43,
-<a name="l04256"></a>04256 27, -73, -81, 32, 1, 32, 3, 100, 72, 43, 43, 93, 89, 53, 53, -1, -1, 0, -95, -1, -25, 5, 34, 6, -31,
-<a name="l04257"></a>04257 2, 38, 0, 56, 0, 0, 1, 7, 0, -114, 1, -119, 1, 30, 0, 25, 64, 12, 2, 1, 0, 21, 28, 12, 0,
-<a name="l04258"></a>04258 65, 1, 2, 2, 28, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 53, 0, -1, -1, 0, 74, -1, -24, 4, 28,
-<a name="l04259"></a>04259 5, -62, 2, 38, 0, 68, 0, 0, 1, 7, 0, -115, 0, -15, 0, 0, 0, 27, 64, 14, 2, 47, 59, 63, 59,
-<a name="l04260"></a>04260 2, 59, 28, 0, 72, 43, 2, 1, 59, -71, 2, 34, 0, 41, 0, 43, 1, 43, 113, 53, 0, -1, -1, 0, 74,
-<a name="l04261"></a>04261 -1, -24, 4, 28, 5, -62, 2, 38, 0, 68, 0, 0, 1, 7, 0, 67, 0, -6, 0, 0, 0, 27, 64, 14, 2,
-<a name="l04262"></a>04262 -97, 57, -17, 57, 2, 57, 28, 10, 72, 43, 2, 1, 57, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0,
-<a name="l04263"></a>04263 -1, -1, 0, 74, -1, -24, 4, 28, 5, -62, 2, 38, 0, 68, 0, 0, 1, 7, 0, -42, 0, -34, 0, 0, 0,
-<a name="l04264"></a>04264 54, 64, 38, 2, -97, 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58, -96, 58, -80, 58, -32, 58, -16,
-<a name="l04265"></a>04265 58, 5, 58, 64, 46, 50, 52, 0, 58, 61, 28, 28, 65, 2, 1, 62, -71, 2, 34, 0, 41, 0, 43, 1, 43,
-<a name="l04266"></a>04266 43, 93, 113, 114, 53, -1, -1, 0, 74, -1, -24, 4, 28, 5, -61, 2, 38, 0, 68, 0, 0, 1, 7, 0, -114,
-<a name="l04267"></a>04267 0, -34, 0, 0, 0, 39, 64, 24, 3, 2, 60, 64, 10, 10, 6, 85, 112, 60, -128, 60, -16, 60, 3, 60, 28,
-<a name="l04268"></a>04268 98, 72, 43, 2, 3, 2, 63, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 43, 53, 53, 0, -1, -1, 0, 74,
-<a name="l04269"></a>04269 -1, -24, 4, 28, 5, -86, 2, 38, 0, 68, 0, 0, 1, 7, 0, -41, 0, -34, 0, 0, 0, 56, 64, 30, 2,
-<a name="l04270"></a>04270 73, 64, 13, 13, 6, 85, 73, 64, 10, 10, 6, 85, 73, 64, 25, 26, 52, 73, 64, 11, 13, 52, 127, 73, -113,
-<a name="l04271"></a>04271 73, 2, 73, 28, -72, -1, -48, -76, 72, 43, 2, 1, 71, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 43, 43,
-<a name="l04272"></a>04272 43, 43, 53, -1, -1, 0, 74, -1, -24, 4, 28, 5, -19, 2, 38, 0, 68, 0, 0, 1, 7, 0, -37, 0, -35,
-<a name="l04273"></a>04273 0, 0, 0, 30, 64, 16, 3, 2, 15, 65, 31, 65, 2, 65, 28, 0, 104, 43, 2, 3, 2, 65, -71, 2, 34,
-<a name="l04274"></a>04274 0, 41, 0, 43, 1, 43, 113, 53, 53, -1, -1, 0, 80, -2, 111, 3, -19, 4, 62, 2, 38, 0, 70, 0, 0,
-<a name="l04275"></a>04275 1, 7, 0, -36, 0, -61, 0, 20, 0, 55, -79, 1, 28, -72, -1, -64, 64, 26, 20, 20, 6, 85, 31, 28, 47,
-<a name="l04276"></a>04276 28, 2, 16, 28, 1, -17, 28, -1, 28, 2, 16, 28, 48, 28, 127, 28, 3, 28, 11, -72, -1, -104, -74, 72, 43,
-<a name="l04277"></a>04277 1, 1, 28, 8, 41, 0, 43, 1, 43, 93, 93, 113, 114, 43, 53, 0, -1, -1, 0, 75, -1, -24, 4, 30, 5,
-<a name="l04278"></a>04278 -62, 2, 38, 0, 72, 0, 0, 1, 7, 0, -115, 0, -13, 0, 0, 0, 27, 64, 14, 2, -32, 33, -16, 33, 2,
-<a name="l04279"></a>04279 33, 10, 0, 72, 43, 2, 1, 33, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, 75, -1,
-<a name="l04280"></a>04280 -24, 4, 30, 5, -62, 2, 38, 0, 72, 0, 0, 1, 7, 0, 67, 0, -35, 0, 0, 0, 38, -79, 2, 31, -72,
-<a name="l04281"></a>04281 -1, -64, 64, 17, 11, 13, 52, 15, 31, 1, 112, 31, 1, 31, 10, 0, 72, 43, 2, 1, 31, -71, 2, 34, 0,
-<a name="l04282"></a>04282 41, 0, 43, 1, 43, 93, 113, 43, 53, -1, -1, 0, 75, -1, -24, 4, 30, 5, -62, 2, 38, 0, 72, 0, 0,
-<a name="l04283"></a>04283 1, 7, 0, -42, 0, -33, 0, 0, 0, 39, 64, 24, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97,
-<a name="l04284"></a>04284 32, 2, 0, 32, 35, 10, 10, 65, 2, 1, 36, -71, 2, 34, 0, 41, 0, 43, 1, 43, 114, 43, 43, 53, 0,
-<a name="l04285"></a>04285 -1, -1, 0, 75, -1, -24, 4, 30, 5, -61, 2, 38, 0, 72, 0, 0, 1, 7, 0, -114, 0, -33, 0, 0, 0,
-<a name="l04286"></a>04286 35, 64, 20, 3, 2, 34, 64, 11, 11, 2, 85, -81, 34, 1, 34, 10, 100, 72, 43, 2, 3, 2, 37, -71, 2,
-<a name="l04287"></a>04287 34, 0, 41, 0, 43, 1, 43, 93, 43, 53, 53, 0, -1, -1, 0, -67, 0, 0, 2, 46, 5, -62, 2, 38, 0,
-<a name="l04288"></a>04288 -43, 0, 0, 1, 6, 0, -115, -33, 0, 0, 50, -73, 1, 7, 64, 11, 11, 6, 85, 7, -72, -1, -64, -77, 23,
-<a name="l04289"></a>04289 25, 52, 7, -72, -1, -64, 64, 14, 34, 37, 52, 47, 7, 1, 7, 1, 90, 72, 43, 1, 1, 7, -71, 2, 34,
-<a name="l04290"></a>04290 0, 41, 0, 43, 1, 43, 93, 43, 43, 43, 53, -1, -1, 0, 35, 0, 0, 1, -101, 5, -62, 2, 38, 0, -43,
-<a name="l04291"></a>04291 0, 0, 1, 6, 0, 67, -54, 0, 0, 40, 64, 16, 1, 5, 64, 23, 25, 52, 5, 64, 34, 37, 52, 32, 5,
-<a name="l04292"></a>04292 1, 5, 2, -72, -1, -90, -76, 72, 43, 1, 1, 5, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 43, 43, 53,
-<a name="l04293"></a>04293 -1, -1, -1, -17, 0, 0, 2, 104, 5, -62, 2, 38, 0, -43, 0, 0, 1, 6, 0, -42, -42, 0, 0, 22, 64,
-<a name="l04294"></a>04294 10, 1, 0, 6, 9, 1, 2, 65, 1, 1, 10, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 9,
-<a name="l04295"></a>04295 0, 0, 2, 58, 5, -61, 2, 38, 0, -43, 0, 0, 1, 6, 0, -114, -52, 0, 0, 31, 64, 17, 2, 1, 8,
-<a name="l04296"></a>04296 32, 11, 11, 6, 85, 8, 2, 0, 72, 43, 1, 2, 2, 11, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 53,
-<a name="l04297"></a>04297 53, 0, -1, -1, 0, -121, 0, 0, 3, -26, 5, -86, 2, 38, 0, 81, 0, 0, 1, 7, 0, -41, 0, -1, 0,
-<a name="l04298"></a>04298 0, 0, 53, -77, 1, 1, 1, 38, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 23,
-<a name="l04299"></a>04299 35, 1, 11, 65, 43, 27, -71, 0, 40, -1, -64, -73, 34, 36, 52, 79, 40, 1, 40, 18, -72, -1, -30, -79, 72,
-<a name="l04300"></a>04300 43, 43, 93, 43, 89, 53, 0, -1, -1, 0, 68, -1, -24, 4, 39, 5, -62, 2, 38, 0, 82, 0, 0, 1, 7,
-<a name="l04301"></a>04301 0, -115, 0, -12, 0, 0, 0, 27, 64, 14, 2, -32, 29, -16, 29, 2, 29, 4, 0, 72, 43, 2, 1, 29, -71,
-<a name="l04302"></a>04302 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, 68, -1, -24, 4, 39, 5, -62, 2, 38, 0, 82,
-<a name="l04303"></a>04303 0, 0, 1, 7, 0, 67, 0, -34, 0, 0, 0, 38, -79, 2, 27, -72, -1, -64, 64, 17, 11, 13, 52, 15, 27,
-<a name="l04304"></a>04304 1, 112, 27, 1, 27, 4, 0, 72, 43, 2, 1, 27, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 113, 43, 53,
-<a name="l04305"></a>04305 -1, -1, 0, 68, -1, -24, 4, 39, 5, -62, 2, 38, 0, 82, 0, 0, 1, 7, 0, -42, 0, -32, 0, 0, 0,
-<a name="l04306"></a>04306 32, 64, 18, 2, 28, 64, 46, 50, 52, -97, 28, 1, 0, 28, 31, 0, 7, 65, 2, 1, 32, -71, 2, 34, 0,
-<a name="l04307"></a>04307 41, 0, 43, 1, 43, 114, 43, 53, -1, -1, 0, 68, -1, -24, 4, 39, 5, -61, 2, 38, 0, 82, 0, 0, 1,
-<a name="l04308"></a>04308 7, 0, -114, 0, -32, 0, 0, 0, 42, 64, 9, 3, 2, 30, 64, 22, 22, 6, 85, 30, -72, -1, -64, 64, 13,
-<a name="l04309"></a>04309 10, 11, 6, 85, 30, 4, 110, 72, 43, 2, 3, 2, 33, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 43, 53,
-<a name="l04310"></a>04310 53, -1, -1, 0, 68, -1, -24, 4, 39, 5, -86, 2, 38, 0, 82, 0, 0, 1, 7, 0, -41, 0, -32, 0, 0,
-<a name="l04311"></a>04311 0, 48, 64, 23, 2, 47, 43, 63, 43, 2, 127, 43, -1, 43, 2, 79, 43, -113, 43, 2, 47, 43, 63, 43, 2,
-<a name="l04312"></a>04312 43, 4, -72, -1, -20, -76, 72, 43, 2, 1, 41, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 93, 93, 113, 53,
-<a name="l04313"></a>04313 -1, -1, 0, -125, -1, -24, 3, -32, 5, -62, 2, 38, 0, 88, 0, 0, 1, 7, 0, -115, 0, -25, 0, 0, 0,
-<a name="l04314"></a>04314 33, 64, 19, 1, 28, 64, 14, 16, 52, 31, 28, 79, 28, 2, 28, 17, 60, 72, 43, 1, 1, 28, -71, 2, 34,
-<a name="l04315"></a>04315 0, 41, 0, 43, 1, 43, 113, 43, 53, 0, -1, -1, 0, -125, -1, -24, 3, -32, 5, -62, 2, 38, 0, 88, 0,
-<a name="l04316"></a>04316 0, 1, 7, 0, 67, 1, 7, 0, 0, 0, 21, 64, 10, 1, 1, 26, 17, 0, 72, 39, 1, 1, 26, -71, 2,
-<a name="l04317"></a>04317 34, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0, -125, -1, -24, 3, -32, 5, -62, 2, 38, 0, 88, 0, 0, 1,
-<a name="l04318"></a>04318 7, 0, -42, 0, -36, 0, 0, 0, 41, -77, 1, 1, 1, 31, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2,
-<a name="l04319"></a>04319 67, 84, 88, -75, 0, 27, 30, 11, 22, 65, 43, 27, -73, -113, 25, 1, 25, 17, 35, 72, 43, 43, 93, 89, 53,
-<a name="l04320"></a>04320 0, -1, -1, 0, -125, -1, -24, 3, -32, 5, -61, 2, 38, 0, 88, 0, 0, 1, 7, 0, -114, 0, -36, 0, 0,
-<a name="l04321"></a>04321 0, 29, 64, 15, 2, 1, 112, 25, 1, 0, 25, 31, 17, 17, 65, 1, 2, 2, 32, -71, 2, 34, 0, 41, 0,
-<a name="l04322"></a>04322 43, 1, 43, 93, 53, 53, 0, 0, 1, 0, 73, -2, -90, 4, 30, 5, -104, 0, 11, 0, 94, 64, 51, 2, 1,
-<a name="l04323"></a>04323 9, 10, 10, 1, 32, 4, 11, 0, 3, 4, 8, 7, 7, 4, 110, 6, 5, 0, 8, 9, 6, 7, 7, 10, 10,
-<a name="l04324"></a>04324 9, 110, 11, 32, 0, 5, 4, 4, 1, 1, 0, 110, 3, 64, 2, -112, 2, 2, 2, 62, 12, 112, -116, 24, 43,
-<a name="l04325"></a>04325 16, -12, 93, 60, -12, 60, 16, 60, 16, 60, 16, -3, -28, 60, 16, 60, 16, 60, 16, 60, 0, 63, 60, -12, 60,
-<a name="l04326"></a>04326 16, 60, 16, 60, 47, 60, 16, -3, 60, 16, 60, 16, 60, 49, 48, 1, 17, 33, 53, 33, 17, 51, 17, 33, 21,
-<a name="l04327"></a>04327 33, 17, 1, -40, -2, 113, 1, -113, -76, 1, -110, -2, 110, -2, -90, 4, -68, -96, 1, -106, -2, 106, -96, -5, 68,
-<a name="l04328"></a>04328 0, 0, 2, 0, -128, 3, -88, 2, -85, 5, -45, 0, 11, 0, 23, 0, 59, -71, 0, 15, 2, -115, -75, 0, 9,
-<a name="l04329"></a>04329 1, 9, -125, 21, -72, 2, -115, -78, 3, 1, 18, -72, 2, -115, -75, 15, 6, 1, 6, -125, 12, -72, 2, -115, 64,
-<a name="l04330"></a>04330 9, 32, 0, 1, 0, -84, 24, -99, 121, 24, 43, 16, -10, 93, -19, -3, 93, -19, 0, 63, -19, -3, 93, -19, 49,
-<a name="l04331"></a>04331 48, 19, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6,
-<a name="l04332"></a>04332 -128, -93, 114, 116, -94, -93, 115, 114, -93, 109, 99, 70, 69, 99, 99, 69, 70, 99, 4, -66, 115, -94, -94, 115, 115,
-<a name="l04333"></a>04333 -93, -94, 116, 70, 99, 99, 70, 70, 99, 99, 0, 2, 0, 107, -2, 103, 4, 10, 5, -70, 0, 32, 0, 42, 1,
-<a name="l04334"></a>04334 -127, 64, -106, 21, 27, 20, 28, 2, 54, 1, 93, 4, 88, 16, 104, 15, 104, 24, 104, 33, 120, 15, 115, 28, 117,
-<a name="l04335"></a>04335 29, -119, 41, -87, 33, -26, 1, -24, 15, -24, 27, -8, 32, -7, 33, -8, 35, 17, 72, 25, 74, 29, 73, 32, 104,
-<a name="l04336"></a>04336 25, 104, 29, 104, 42, 6, 74, 9, 75, 32, 105, 15, 107, 32, 121, 15, -90, 0, -91, 17, -87, 41, -87, 42, -26,
-<a name="l04337"></a>04337 14, 10, 69, 30, 102, 5, 101, 30, 3, 29, 8, 31, 20, 16, 16, 2, 85, 15, 15, 16, 24, 33, 42, 42, 41,
-<a name="l04338"></a>04338 25, 25, 14, 0, 0, 32, 1, 1, 3, 12, 12, 10, 27, 27, 28, 26, 26, 13, 42, 33, 31, 27, 24, 15, 12,
-<a name="l04339"></a>04339 1, 0, 9, 39, 30, 7, 6, 15, 12, 1, 42, 7, 3, 31, 30, 0, 3, 33, 6, 27, 24, 35, 25, 26, 13,
-<a name="l04340"></a>04340 25, 26, 13, -72, 2, 94, 64, 23, 14, 25, 20, 14, 14, 25, 13, 14, 14, 18, 13, 25, 39, 26, 7, 6, 14,
-<a name="l04341"></a>04341 10, 13, 26, 25, 22, 7, -72, 2, -86, 64, 56, 6, 6, 12, 24, 25, 0, 33, 51, 35, 28, 22, 7, 24, 7,
-<a name="l04342"></a>04342 12, 11, 3, 28, 10, 11, 14, 14, 6, 36, 7, 26, 44, 39, 36, 18, 6, 13, 13, 2, 85, 18, 10, 12, 12,
-<a name="l04343"></a>04343 2, 85, 18, 20, 11, 11, 2, 85, 31, 18, 63, 18, 2, 18, 25, 43, -26, -70, 1, 48, 0, 24, 1, 28, -123,
-<a name="l04344"></a>04344 43, 78, 16, -12, 93, 43, 43, 43, 77, -19, 78, 16, -10, 77, -19, 0, 63, 63, -19, 63, 63, 63, -3, -28, 63,
-<a name="l04345"></a>04345 17, 18, 57, 47, -28, 17, 18, 57, 17, 18, 57, 1, 17, 18, 57, 18, 57, 57, 17, 57, 8, -121, 46, 43, 8,
-<a name="l04346"></a>04346 -121, 125, -60, 0, 17, 18, 57, 17, 18, 23, 57, 17, 18, 57, 57, 18, 57, 1, 17, 18, 57, 18, 23, 57, -121,
-<a name="l04347"></a>04347 16, 8, 60, 8, -60, 8, 60, 8, 60, -121, 16, 8, 60, 5, 60, 60, 8, 60, 1, 43, 49, 48, 24, 67, 121,
-<a name="l04348"></a>04348 64, 18, 36, 38, 19, 21, 37, 37, 20, 38, 36, 21, 39, 29, 0, 38, 19, 35, 29, 1, 0, 43, 1, 43, 43,
-<a name="l04349"></a>04349 43, -127, -127, 0, 113, 93, 1, 113, 93, 0, 114, 1, 3, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 39, 3,
-<a name="l04350"></a>04350 39, 19, 38, 2, 53, 52, 54, 54, 51, 50, 23, 19, 23, 3, 22, 22, 23, 7, 38, 39, 38, 35, 34, 6, 6,
-<a name="l04351"></a>04351 21, 20, 22, 23, 2, -24, -34, 33, 28, 104, -105, 17, -77, 33, -9, -88, 49, 54, 118, 112, 115, 115, -110, 117, -23,
-<a name="l04352"></a>04352 121, 36, 64, 113, 110, 112, 99, 106, 21, -81, 26, -80, 32, 18, 82, -113, 71, 64, 59, 3, 126, -3, 2, 9, -114,
-<a name="l04353"></a>04353 -128, 20, -71, -44, 14, -2, 117, 32, 1, -114, 55, 1, 1, -63, -78, -1, -128, 8, 1, -125, 32, -2, 125, 43, -111,
-<a name="l04354"></a>04354 109, 27, 112, 105, 3, 91, -65, 126, -124, -74, 44, 0, 1, 0, 27, -1, -28, 4, 58, 5, -45, 0, 57, 0, -18,
-<a name="l04355"></a>04355 64, 74, 109, 55, 118, 43, -122, 43, 3, 22, 33, 1, 20, 7, 58, 24, 73, 24, 3, 41, 40, 39, 36, 4, 34,
-<a name="l04356"></a>04356 42, 57, 0, 3, 3, 5, 56, 2, 3, 3, 36, 36, 37, 30, 38, 1, 0, 0, 39, 39, 38, 38, 30, 46, 50,
-<a name="l04357"></a>04357 39, 95, 49, 111, 49, 2, 49, -2, 64, 53, 1, 53, 41, 46, 1, 10, 64, 29, 34, 52, 10, 64, 18, 20, 52,
-<a name="l04358"></a>04358 10, -72, 1, -107, -77, 47, 27, 1, 27, -72, 2, -72, 64, 10, 20, 16, 30, 17, -85, 14, 30, 20, 11, 31, -72,
-<a name="l04359"></a>04359 2, 90, -74, 30, 11, 50, 94, 49, 56, 16, -72, 1, -113, 64, 44, 32, 17, 48, 17, 2, 17, 26, 59, 1, 2,
-<a name="l04360"></a>04360 -91, 34, 94, 32, 5, 1, 5, 77, 56, 94, -65, 42, -49, 42, -17, 42, 3, 42, 114, 31, 38, 37, 39, 30, 62,
-<a name="l04361"></a>04361 -81, 31, 1, 31, 25, 58, -87, -115, 24, 43, 78, 16, -12, 93, 25, 77, -28, 24, -12, 60, 16, -12, 93, -3, -12,
-<a name="l04362"></a>04362 93, -19, -12, 60, 78, 16, -10, 93, 77, -28, -12, -19, 0, 63, -19, 63, -19, -3, -19, 16, -12, 93, -19, 43, 43,
-<a name="l04363"></a>04363 63, -19, 113, -3, 93, -28, 17, 18, 57, 47, 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, 1, 17, 18,
-<a name="l04364"></a>04364 23, 57, 17, 18, 23, 57, 49, 48, 1, 93, 113, 0, 93, 1, 33, 21, 33, 22, 21, 20, 6, 7, 54, 51, 50,
-<a name="l04365"></a>04365 23, 22, 51, 50, 55, 23, 6, 6, 35, 34, 39, 38, 38, 39, 38, 35, 34, 6, 7, 39, 54, 54, 53, 52, 39,
-<a name="l04366"></a>04366 35, 53, 51, 38, 38, 53, 52, 55, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 1, -116, 1, 59,
-<a name="l04367"></a>04367 -2, -28, 19, 83, 95, 79, 65, 83, 104, -84, 61, 74, 118, 58, 92, 101, 50, 42, 43, 27, -51, 30, 47, 47, 72,
-<a name="l04368"></a>04368 -93, 67, 69, 96, -122, 17, -60, -102, 33, 18, -102, 124, -80, -75, -21, 27, -77, 15, -107, 104, 111, -109, 3, 41, -108,
-<a name="l04369"></a>04369 44, 44, 87, -62, 101, 22, 25, 41, 56, -91, 39, 24, 8, 5, 63, 6, 8, 50, 43, -83, 53, -59, -114, 61, 63,
-<a name="l04370"></a>04370 -108, 112, 103, 49, -48, 117, 93, -57, -76, 27, 120, -118, -113, 101, 111, 0, 2, 0, 81, -2, 81, 4, 21, 5, -45,
-<a name="l04371"></a>04371 0, 56, 0, 74, 0, -44, 64, 106, 4, 48, 20, 48, 36, 57, 102, 47, 101, 58, 117, 6, 116, 17, 122, 29, 121,
-<a name="l04372"></a>04372 45, 121, 62, 123, 63, 123, 64, 123, 65, 115, 73, 115, 74, -124, 6, -124, 17, -117, 29, -119, 45, -117, 62, -117, 63,
-<a name="l04373"></a>04373 -117, 64, -117, 65, -125, 72, -125, 73, -125, 74, -108, 41, 27, 41, 13, 41, 19, 36, 41, 34, 49, 4, 72, 67, 18,
-<a name="l04374"></a>04374 12, 4, 69, 66, 63, 57, 37, 10, 5, 34, 58, 47, 39, 3, 60, 7, 72, 67, 66, 63, 58, 57, 47, 39, 37,
-<a name="l04375"></a>04375 18, 12, 10, 12, 28, 1, 54, 28, 4, -122, 1, 28, 39, 27, -72, 1, 19, 64, 45, 31, 28, 24, 1, 0, 39,
-<a name="l04376"></a>04376 1, 11, 28, 60, 27, 62, 43, 7, 94, 50, 62, 60, 41, 79, 43, 1, 43, 26, 76, 34, 94, 21, 62, 15, 1,
-<a name="l04377"></a>04377 60, 0, 56, 69, 41, 79, 15, 1, 15, 25, 75, 113, -89, 24, 43, 78, 16, -12, 93, 77, -19, -12, -19, 16, -12,
-<a name="l04378"></a>04378 -19, 78, 16, -10, 93, 77, -19, -12, -19, 16, -12, -19, 0, 63, -28, 63, -19, -3, -28, 16, -12, -19, 17, 18, 23,
-<a name="l04379"></a>04379 57, 1, 17, 18, 23, 57, 18, 23, 57, 17, 23, 57, 49, 48, 1, 93, 0, 93, 23, 55, 22, 22, 51, 50, 54,
-<a name="l04380"></a>04380 53, 52, 39, 38, 37, 46, 2, 53, 52, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34,
-<a name="l04381"></a>04381 6, 21, 20, 23, 22, 23, 22, 23, 22, 22, 21, 20, 7, 6, 7, 22, 22, 21, 20, 6, 6, 35, 34, 38, 1,
-<a name="l04382"></a>04382 54, 54, 53, 52, 39, 38, 39, 38, 39, 6, 6, 21, 20, 23, 22, 23, 22, -113, -75, 28, 122, 105, 102, 115, 36,
-<a name="l04383"></a>04383 62, -2, -22, -108, 117, 74, 120, 105, 71, 58, -56, -91, -69, -46, 21, -69, 21, 105, 89, 92, 113, 36, 56, -6, -99,
-<a name="l04384"></a>04384 55, 71, 67, 73, 42, 112, 80, 79, 100, -68, 109, -65, -32, 2, 51, 74, 73, 52, 53, -84, -119, 67, 81, 69, 46,
-<a name="l04385"></a>04385 46, -95, -122, 70, 26, -126, 105, 104, 70, 51, 43, 75, -86, 91, 103, -116, 76, 96, -100, 31, 68, 115, 65, -128, -68,
-<a name="l04386"></a>04386 -78, -87, 19, 122, 96, 99, 60, 52, 44, 68, -104, 96, 45, 60, -128, 75, 113, 80, 46, 47, 61, -116, 80, 88, -99,
-<a name="l04387"></a>04387 83, -65, 1, -28, 38, 101, 48, 57, 63, 63, 106, 84, 54, 46, 92, 56, 63, 57, 57, 95, 79, 0, 0, 1, 0,
-<a name="l04388"></a>04388 109, 1, -48, 2, 104, 3, -53, 0, 11, 0, 31, -71, 0, 3, 1, 83, 64, 14, 9, 6, -52, 32, 0, 48, 0,
-<a name="l04389"></a>04389 2, 0, 117, 12, 87, -89, 24, 43, 16, -10, 93, -19, 0, 47, -19, 49, 48, 19, 52, 54, 51, 50, 22, 21, 20,
-<a name="l04390"></a>04390 6, 35, 34, 38, 109, -107, 104, 105, -107, -107, 105, 104, -107, 2, -50, 105, -108, -108, 105, 105, -107, -107, 0, 0, 1,
-<a name="l04391"></a>04391 0, 1, -2, 105, 4, 83, 5, -70, 0, 15, 0, 90, 64, 13, 79, 10, 79, 11, 79, 14, 79, 15, 4, 11, 12,
-<a name="l04392"></a>04392 1, 15, -70, 1, -22, 0, 1, 1, 105, 64, 33, 7, 9, 14, 35, 8, 7, 0, 13, 12, 35, 10, 11, 114, 17,
-<a name="l04393"></a>04393 1, -7, 0, 15, 16, 15, 2, 15, 15, 16, 8, 26, 17, 4, 25, 16, -77, 122, 24, 43, 78, 16, -28, 16, -26,
-<a name="l04394"></a>04394 18, 57, 47, 93, 77, -19, 16, -12, 60, -3, 60, 0, 63, 60, -3, 60, 16, -19, -19, 17, 57, 57, 49, 48, 1,
-<a name="l04395"></a>04395 113, 0, 1, 17, 38, 38, 53, 52, 54, 51, 33, 21, 35, 17, 35, 17, 35, 17, 1, -107, -69, -39, -15, -24, 2,
-<a name="l04396"></a>04396 121, -112, -86, -33, -2, 105, 4, 21, 10, -33, -83, -63, -27, -83, -7, 92, 6, -92, -7, 92, 0, 0, 1, 0, -103,
-<a name="l04397"></a>04397 -1, -25, 4, -93, 5, -45, 0, 54, 1, -118, 64, -123, 11, 45, 27, 45, 63, 56, 70, 10, 70, 17, 69, 19, 79,
-<a name="l04398"></a>04398 56, 92, 46, 106, 36, 106, 46, 112, 56, 11, 73, 8, 38, 37, 37, 40, 17, 16, 37, 39, 39, 37, 16, 18, 20,
-<a name="l04399"></a>04399 16, 37, 39, 39, 37, 16, 18, 20, 16, 16, 18, 23, 24, 25, 26, 33, 32, 31, 30, 29, 9, 27, 34, 41, 40,
-<a name="l04400"></a>04400 39, 38, 37, 36, 35, 14, 15, 16, 17, 18, 19, 20, 14, 21, 43, 44, 45, 46, 12, 11, 10, 9, 8, 8, 42,
-<a name="l04401"></a>04401 2, 3, 51, 49, 6, 48, 6, 47, 0, 45, 44, 39, 37, 38, 28, 27, 29, 18, 17, 16, 11, 10, 51, 52, 15,
-<a name="l04402"></a>04402 31, 50, 28, 5, 1, 31, 28, 24, 11, 54, 0, 10, 47, 28, 8, -92, 21, 42, 36, 13, -72, 2, 45, 64, 12,
-<a name="l04403"></a>04403 21, 27, -55, -97, 28, 1, 28, 28, 53, 34, 36, 21, -72, -1, -12, -76, 15, 15, 6, 85, 21, -72, -1, -12, 64,
-<a name="l04404"></a>04404 14, 12, 12, 6, 85, 0, 21, 96, 21, 112, 21, -128, 21, 4, 21, -72, 2, 61, -74, 0, 53, 54, 1, 54, 37,
-<a name="l04405"></a>04405 0, -72, -1, -5, -76, 16, 16, 6, 85, 0, -72, -1, -12, -76, 15, 15, 6, 85, 0, -72, -1, -18, -76, 13, 13,
-<a name="l04406"></a>04406 6, 85, 0, -72, -1, -11, 64, 10, 12, 12, 6, 85, 32, 0, 1, 0, -110, 55, -72, 1, 54, -79, 55, 24, 43,
-<a name="l04407"></a>04407 16, -12, 93, 43, 43, 43, 43, -19, 60, 16, 60, 16, -3, 93, 43, 43, -19, 17, 57, 47, 93, -19, 16, -12, -19,
-<a name="l04408"></a>04408 16, -12, -19, 0, 63, 60, 63, -19, 63, -19, 17, 23, 57, 1, 17, 18, 23, 57, 17, 18, 23, 57, 18, 23, 57,
-<a name="l04409"></a>04409 17, 18, 23, 57, -121, 14, 46, 43, 14, 125, 16, -60, 46, 24, 43, 14, 125, 16, -60, 16, 60, -121, 14, 16, -60,
-<a name="l04410"></a>04410 49, 48, 24, 67, 121, 64, 52, 48, 52, 22, 33, 2, 7, 3, 38, 32, 23, 34, 27, 1, 30, 25, 28, 27, 0,
-<a name="l04411"></a>04411 29, 28, 26, 27, 51, 4, 53, 29, 0, 49, 6, 47, 27, 1, 33, 22, 31, 27, 0, 29, 26, 31, 27, 0, 52,
-<a name="l04412"></a>04412 2, 50, 29, 1, 48, 7, 50, 27, 1, 0, 43, 43, 43, 43, 1, 43, 43, 16, 60, 16, 60, 43, 43, 43, -127,
-<a name="l04413"></a>04413 -127, -127, 1, 93, 51, 17, 52, 54, 54, 51, 50, 22, 21, 20, 14, 2, 21, 20, 23, 22, 23, 22, 23, 22, 21,
-<a name="l04414"></a>04414 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 39, 38, 39, 38, 39, 38, 53, 52, 62, 2, 53,
-<a name="l04415"></a>04415 52, 38, 35, 34, 6, 21, 17, -103, 89, -48, -126, -83, -58, 36, 92, 24, 22, 21, 100, -120, 45, 64, -51, -96, 126,
-<a name="l04416"></a>04416 -66, 47, -101, 50, 100, 55, 76, 108, 32, 21, 91, -90, 39, 40, 27, 103, 32, 109, 91, 107, -120, 3, -25, -73, -59,
-<a name="l04417"></a>04417 112, -83, 114, 51, 108, -95, 63, 24, 32, 31, 32, 65, 89, 54, 77, 105, -117, -58, -121, 106, 72, 93, 72, 104, 70,
-<a name="l04418"></a>04418 56, 40, 26, 62, 114, 57, 57, 60, 39, 80, -80, 88, 34, 62, 95, -124, -36, -4, 33, 0, 4, 0, 3, -1, -18,
-<a name="l04419"></a>04419 5, -24, 5, -45, 0, 15, 0, 31, 0, 54, 0, 64, 1, -125, 64, 54, -102, 18, -108, 22, -108, 26, -102, 30, -37,
-<a name="l04420"></a>04420 18, -44, 22, -44, 26, -37, 30, 8, -65, 44, -71, 45, 2, 38, 39, 41, 45, 41, 48, 43, 49, -89, 3, -88, 11,
-<a name="l04421"></a>04421 -87, 13, -74, 43, -58, 43, -42, 43, 10, 101, 8, 48, 49, 47, 100, 47, 116, 47, 2, 47, -72, -1, -48, -77, 38,
-<a name="l04422"></a>04422 45, 52, 47, -72, 2, 98, 64, 31, 46, 44, 20, 46, 46, 44, 45, 44, 43, 42, 41, 5, 46, 48, 49, 50, 3,
-<a name="l04423"></a>04423 54, 48, 49, 40, 51, 45, 44, 43, 42, 8, 47, 41, 41, 53, -72, 2, 98, -75, 55, 55, 32, 33, 64, 63, -72,
-<a name="l04424"></a>04424 2, 98, 64, 28, 33, 0, 34, -113, 34, 2, 34, -108, 0, 46, 47, 47, 54, 79, 32, 1, 15, 32, 111, 32, 127,
-<a name="l04425"></a>04425 32, -17, 32, 4, 32, -108, 24, -72, 2, 98, -78, 8, 11, 16, -72, 2, 98, -78, 0, 3, 59, -72, 2, 98, -78,
-<a name="l04426"></a>04426 38, 84, 47, -70, 2, 98, 0, 46, 1, 22, -74, 4, 64, 55, 53, 54, 33, 54, -67, 2, 98, 0, 32, 1, 74,
-<a name="l04427"></a>04427 0, 12, 0, 28, 2, 98, -77, 4, 26, 66, 20, -72, 2, 98, -75, 12, 25, 65, -77, 122, 24, 43, 78, 16, -12,
-<a name="l04428"></a>04428 77, -19, 78, 16, -10, 77, -19, 16, -12, -19, 60, 16, 60, 60, 60, 16, -12, -19, -12, -19, 0, 63, -19, 63, -19,
-<a name="l04429"></a>04429 -12, 93, 113, 60, 60, 16, 60, 16, -12, 93, 60, -3, 60, 17, 18, 57, 47, -3, 57, 47, 18, 23, 57, 1, 17,
-<a name="l04430"></a>04430 23, 57, 18, 23, 57, -121, 46, 43, 43, 113, 14, 125, 16, -60, 1, 57, 49, 48, 24, 67, 121, 64, 74, 60, 62,
-<a name="l04431"></a>04431 1, 37, 36, 37, 61, 38, 18, 37, 14, 38, 2, 37, 30, 38, 22, 38, 10, 37, 6, 38, 26, 37, 62, 35, 59,
-<a name="l04432"></a>04432 44, 1, 17, 15, 20, 33, 0, 31, 1, 28, 33, 1, 23, 9, 20, 33, 0, 25, 7, 28, 33, 1, 60, 37, 63,
-<a name="l04433"></a>04433 44, 1, 19, 13, 16, 33, 1, 29, 3, 16, 33, 1, 21, 11, 24, 33, 0, 27, 5, 24, 33, 0, 0, 43, 43,
-<a name="l04434"></a>04434 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -127, -127, 1, 93, 113, 0,
-<a name="l04435"></a>04435 93, 1, 50, 4, 18, 21, 20, 2, 4, 35, 34, 36, 2, 53, 52, 18, 36, 23, 34, 4, 2, 21, 20, 18, 4,
-<a name="l04436"></a>04436 51, 50, 36, 18, 53, 52, 2, 36, 1, 17, 33, 50, 22, 22, 21, 20, 6, 7, 22, 23, 22, 23, 23, 35, 39,
-<a name="l04437"></a>04437 38, 39, 38, 35, 35, 17, 17, 51, 50, 54, 53, 52, 38, 38, 35, 35, 2, -10, -66, 1, 106, -54, -57, -2, -103,
-<a name="l04438"></a>04438 -60, -60, -2, -103, -56, -53, 1, 106, -66, -97, -2, -45, -86, -89, 1, 44, -93, -93, 1, 44, -90, -87, -2, -46, -2,
-<a name="l04439"></a>04439 23, 1, 23, -113, -128, 76, 127, 105, 43, 26, 49, 71, 99, -96, 72, 85, 52, 36, 69, 77, -97, 114, 83, 40, 71,
-<a name="l04440"></a>04440 96, -107, 5, -45, -61, -2, -107, -59, -61, -2, -104, -57, -57, 1, 104, -61, -59, 1, 107, -61, 125, -93, -2, -47, -92,
-<a name="l04441"></a>04441 -93, -2, -43, -89, -89, 1, 43, -93, -92, 1, 47, -93, -5, -23, 3, 44, 45, 112, 63, 89, -124, 8, 18, 25, 48,
-<a name="l04442"></a>04442 113, -97, -128, -105, 38, 28, -2, -89, 1, -55, 68, 56, 36, 57, 28, 0, 3, 0, 3, -1, -18, 5, -24, 5, -45,
-<a name="l04443"></a>04443 0, 15, 0, 31, 0, 58, 1, 51, 64, 32, -108, 18, -108, 22, -101, 26, -101, 30, -90, 3, -88, 11, -88, 13, -71,
-<a name="l04444"></a>04444 48, -44, 18, -44, 22, -37, 26, -37, 30, -43, 51, -42, 54, 14, 112, 8, 32, -72, 2, -85, -77, 33, -121, 36, 47,
-<a name="l04445"></a>04445 -72, 2, -85, -77, 48, 46, 1, 46, -69, 2, 96, 0, 43, 0, 56, 2, 98, 64, 16, 79, 36, 1, 15, 36, 111,
-<a name="l04446"></a>04446 36, 127, 36, -17, 36, 4, 36, -108, 8, 50, -72, 2, 98, 64, 11, 0, 43, -113, 43, -1, 43, 3, 43, -108, 0,
-<a name="l04447"></a>04447 24, -72, 2, 98, -78, 8, 11, 16, -72, 2, 98, -78, 0, 3, 47, -72, 2, 98, -78, 46, -45, 32, -72, 2, 98,
-<a name="l04448"></a>04448 -77, 33, -120, 4, 53, -67, 2, 98, 0, 39, 2, 100, 0, 12, 0, 28, 2, 98, -77, 4, 26, 60, 20, -72, 2,
-<a name="l04449"></a>04449 98, -75, 12, 25, 59, -77, 122, 24, 43, 78, 16, -12, 77, -19, 78, 16, -10, 77, -19, 16, -12, -19, 16, -12, -19,
-<a name="l04450"></a>04450 -12, -19, 0, 63, -19, 63, -19, 16, -12, 93, -19, 16, -12, 93, 113, -19, 16, -3, 93, -28, 16, -3, -28, 49, 48,
-<a name="l04451"></a>04451 67, 121, 64, 84, 51, 55, 37, 42, 1, 31, 41, 38, 18, 37, 14, 38, 2, 37, 30, 38, 22, 38, 10, 37, 6,
-<a name="l04452"></a>04452 38, 26, 37, 51, 42, 53, 31, 0, 55, 37, 53, 31, 0, 17, 15, 20, 33, 0, 31, 1, 28, 33, 1, 23, 9,
-<a name="l04453"></a>04453 20, 33, 0, 25, 7, 28, 33, 1, 52, 40, 50, 31, 1, 54, 38, 56, 31, 0, 19, 13, 16, 33, 1, 29, 3,
-<a name="l04454"></a>04454 16, 33, 1, 21, 11, 24, 33, 0, 27, 5, 24, 33, 0, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43,
-<a name="l04455"></a>04455 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -127, -127, -127, 1, 93, 1, 50, 4, 18, 21, 20, 2, 4, 35, 34,
-<a name="l04456"></a>04456 36, 2, 53, 52, 18, 36, 23, 34, 4, 2, 21, 20, 18, 4, 51, 50, 36, 18, 53, 52, 2, 36, 19, 23, 6,
-<a name="l04457"></a>04457 6, 35, 34, 38, 53, 52, 54, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 2,
-<a name="l04458"></a>04458 -10, -66, 1, 106, -54, -57, -2, -103, -60, -60, -2, -103, -56, -53, 1, 106, -66, -97, -2, -45, -86, -89, 1, 44, -93,
-<a name="l04459"></a>04459 -93, 1, 44, -90, -87, -2, -46, 84, 123, 30, -61, -117, -80, -36, 100, -71, 119, -123, -80, 32, 119, 30, 117, 79, 115,
-<a name="l04460"></a>04460 -107, -115, 112, 90, -120, 5, -45, -61, -2, -107, -59, -61, -2, -104, -57, -57, 1, 104, -61, -59, 1, 107, -61, 125, -93,
-<a name="l04461"></a>04461 -2, -47, -92, -93, -2, -43, -89, -89, 1, 43, -93, -92, 1, 47, -93, -3, 16, 36, 125, -107, -28, -54, -124, -61, 99,
-<a name="l04462"></a>04462 127, 109, 29, 74, 79, -92, -103, -103, -99, 104, 0, 0, 2, 0, -31, 2, -117, 6, -9, 5, -70, 0, 7, 0, 20,
-<a name="l04463"></a>04463 0, -100, 64, 31, 93, 11, 1, 57, 17, 53, 18, 74, 17, 70, 18, 4, 11, 17, 18, 15, 14, 7, 0, 4, 18,
-<a name="l04464"></a>04464 17, 16, 11, 4, 20, 19, 4, 2, 20, 8, -72, 1, 105, -78, 9, 2, 5, -72, 2, 98, 64, 10, 13, 12, 10,
-<a name="l04465"></a>04465 9, 4, 0, 13, 14, 16, 14, -70, 2, 98, 0, 15, 1, 59, -78, 17, -84, 18, -70, 1, 59, 0, 20, 2, 98,
-<a name="l04466"></a>04466 -78, 8, 8, 9, -72, 2, 5, -78, 5, -91, 7, -72, 2, 98, 64, 14, 0, -91, 2, 32, 3, 48, 3, 96, 3,
-<a name="l04467"></a>04467 3, 3, 25, 21, -39, -71, 1, 46, 0, 24, 43, 16, -10, 93, 60, -12, -3, -12, -10, 60, 16, -3, -10, -10, -10,
-<a name="l04468"></a>04468 -19, 60, 16, 60, 0, 63, 60, 60, 60, 60, -3, 60, 16, -3, 60, 17, 18, 57, 18, 23, 57, 23, 57, 1, 17,
-<a name="l04469"></a>04469 18, 57, 49, 48, 1, 93, 0, 93, 1, 17, 33, 53, 33, 21, 33, 17, 33, 17, 51, 19, 19, 51, 17, 35, 17,
-<a name="l04470"></a>04470 3, 35, 3, 17, 1, -23, -2, -8, 2, -102, -2, -10, 1, 101, -56, -50, -57, -60, 124, -46, 123, -37, 2, -117, 2,
-<a name="l04471"></a>04471 -74, 121, 121, -3, 74, 3, 47, -3, 117, 2, -117, -4, -47, 2, -84, -3, 84, 2, -74, -3, 74, 0, 0, 1, 0,
-<a name="l04472"></a>04472 -34, 4, -86, 2, 79, 5, -62, 0, 3, 0, 101, -71, 0, 1, -1, -56, -77, 23, 25, 52, 2, -72, -1, -64, -77,
-<a name="l04473"></a>04473 23, 25, 52, 3, -72, -1, -64, 64, 38, 23, 25, 52, 127, 1, -128, 2, -33, 1, 3, 111, 3, 127, 0, 127, 3,
-<a name="l04474"></a>04474 3, 111, 0, 111, 1, 2, 79, 1, 80, 2, 2, 0, 0, 3, 16, 3, 2, 3, -121, 1, 4, 1, -72, 2, 96,
-<a name="l04475"></a>04475 -78, 2, -122, 3, -72, 2, 83, -75, 0, 25, 4, -39, -89, 24, 43, 78, 16, -12, 77, -3, -12, -3, 0, 63, -3,
-<a name="l04476"></a>04476 93, 60, 49, 48, 1, 93, 93, 93, 93, 43, 43, 43, 19, 19, 51, 3, -34, -123, -20, -36, 4, -86, 1, 24, -2,
-<a name="l04477"></a>04477 -24, 0, 0, 2, 0, 61, 4, -10, 2, 110, 5, -61, 0, 3, 0, 7, 0, 72, 64, 35, 0, 3, 2, 7, 60,
-<a name="l04478"></a>04478 5, 5, 2, 0, 6, 7, 5, 4, 2, 3, 1, 0, 7, 60, 4, -97, 3, 60, 95, 0, 111, 0, -113, 0, -112,
-<a name="l04479"></a>04479 0, -96, 0, 5, 0, -72, 2, 36, -77, 8, 112, -115, 24, 43, 78, 16, -12, 93, 77, -3, -10, -3, 16, 60, 16,
-<a name="l04480"></a>04480 60, 16, 60, 16, 60, 0, 63, 60, 16, -19, 17, 57, 57, 49, 48, 19, 53, 51, 21, 51, 53, 51, 21, 61, -68,
-<a name="l04481"></a>04481 -71, -68, 4, -10, -51, -51, -51, -51, 0, 1, 0, 78, -1, -28, 4, 22, 5, -62, 0, 19, 0, -47, 64, -126, -73,
-<a name="l04482"></a>04482 13, -73, 16, 2, 0, 4, 19, 1, 12, 3, 4, 19, 2, 11, 6, 5, 18, 2, 11, 7, 8, 15, 2, 11, 10,
-<a name="l04483"></a>04483 9, 14, 2, 11, 13, 9, 14, 1, 12, 16, 8, 15, 1, 12, 17, 5, 18, 1, 12, 11, 12, 1, 1, 63, 2,
-<a name="l04484"></a>04484 11, 20, 2, 2, 11, 15, 16, 16, 7, 7, 8, 37, 9, 14, 13, 13, 10, 10, 48, 9, 1, -97, 9, -49, 9,
-<a name="l04485"></a>04485 2, 9, -65, 4, 18, 17, 17, 6, 6, 5, 37, 4, 19, 0, 0, 3, 3, 4, 12, 11, 0, 1, 2, 10, 11,
-<a name="l04486"></a>04486 -24, 12, 1, -24, 2, 12, 12, 4, 2, 2, 14, 4, 14, 15, 15, 18, 19, 85, 21, 9, 8, 8, 5, 4, 62,
-<a name="l04487"></a>04487 20, 113, -116, 24, 43, 16, -12, 60, 60, 16, 60, 16, -10, 60, 60, 16, 60, 17, 18, 57, 47, 17, 57, 47, 16,
-<a name="l04488"></a>04488 -19, 16, -19, 0, 63, 60, 63, 60, 47, 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, 16, -3, 93, 113,
-<a name="l04489"></a>04489 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, -121, 5, 46, 43, -121, 125, -60, 15, 15, 15, 15, 15, 15,
-<a name="l04490"></a>04490 15, 15, 49, 48, 1, 93, 1, 3, 35, 19, 33, 53, 33, 19, 33, 53, 33, 19, 51, 3, 33, 21, 33, 3, 33,
-<a name="l04491"></a>04491 21, 1, -17, -62, -120, -61, -2, -26, 1, 100, 122, -2, 34, 2, 39, -60, -122, -61, 1, 26, -2, -100, 121, 1, -35,
-<a name="l04492"></a>04492 1, -95, -2, 67, 1, -67, -88, 1, 21, -88, 1, -68, -2, 68, -88, -2, -21, -88, 0, 0, 2, 0, 1, 0, 0,
-<a name="l04493"></a>04493 7, -112, 5, -70, 0, 15, 0, 19, 1, 16, 64, 15, 1, 24, 13, 17, 6, 85, 14, 16, 19, 15, 14, 16, 12,
-<a name="l04494"></a>04494 0, 19, -72, -1, -15, -76, 13, 17, 2, 85, 19, -72, -1, -10, 64, 30, 11, 11, 2, 85, 19, 15, 15, 32, 0,
-<a name="l04495"></a>04495 1, 20, 0, 0, 1, 19, 15, 1, 3, 12, 0, 13, 14, 30, 16, 16, 17, 17, 0, 1, 16, -72, 2, -89, 64,
-<a name="l04496"></a>04496 40, 8, 6, 5, 30, 7, 127, 8, -113, 8, 2, 8, 8, 0, 3, 19, 30, 2, 1, 2, 10, 9, 30, 12, 11,
-<a name="l04497"></a>04497 15, 12, 0, 8, 4, 9, 32, 12, 12, 18, 12, 16, 16, 2, 85, 18, -72, -1, -10, -76, 15, 15, 2, 85, 18,
-<a name="l04498"></a>04498 -72, -1, -18, 64, 11, 13, 13, 2, 85, 18, 10, 12, 12, 2, 85, 18, -72, -1, -24, -76, 11, 11, 2, 85, 18,
-<a name="l04499"></a>04499 -72, -1, -16, -76, 16, 16, 6, 85, 18, -72, -1, -21, 64, 11, 13, 13, 6, 85, 18, 10, 12, 12, 6, 85, 18,
-<a name="l04500"></a>04500 -72, -1, -27, 64, 21, 11, 11, 6, 85, 18, 18, 20, 21, 7, 84, 3, 74, 10, 26, 21, 0, 25, 20, 96, 91,
-<a name="l04501"></a>04501 24, 43, 25, 78, 16, -28, 24, 16, -10, 77, -12, -28, 17, 18, 57, 47, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l04502"></a>04502 60, 16, -3, 60, 0, 63, 60, 60, 60, 16, -3, 60, 63, 60, -3, 60, 18, 57, 47, 93, 60, -3, 60, 16, -26,
-<a name="l04503"></a>04503 17, 18, 57, 47, 60, 16, -3, 60, 1, 17, 18, 23, 57, -121, 46, 43, 125, 16, -60, 43, 43, 1, 17, 18, 57,
-<a name="l04504"></a>04504 57, 7, 60, 60, 43, 49, 48, 51, 1, 33, 21, 33, 17, 33, 21, 33, 17, 33, 21, 33, 17, 33, 3, 1, 33,
-<a name="l04505"></a>04505 17, 35, 1, 2, -63, 4, -77, -3, 31, 2, -83, -3, 83, 2, -4, -4, 65, -3, -54, -56, 1, 26, 1, -28, -111,
-<a name="l04506"></a>04506 5, -70, -83, -2, 61, -84, -2, 15, -83, 1, -89, -2, 89, 2, 83, 2, -70, 0, 3, 0, 83, -1, -59, 5, -19,
-<a name="l04507"></a>04507 5, -16, 0, 27, 0, 38, 0, 48, 1, -93, 64, -128, 41, 0, 42, 1, 37, 15, 3, 16, 2, 34, 0, 34, 3,
-<a name="l04508"></a>04508 56, 15, 58, 27, 69, 38, 73, 39, 69, 40, 82, 9, 92, 33, 82, 38, 84, 46, 105, 14, -125, 0, -128, 1, -128,
-<a name="l04509"></a>04509 2, -125, 3, -124, 27, -123, 28, -69, 27, -4, 0, -6, 38, 22, 11, 28, 7, 38, 11, 39, 3, 58, 4, 61, 48,
-<a name="l04510"></a>04510 74, 1, 74, 4, 73, 29, 69, 32, 72, 39, 75, 45, 91, 0, 91, 3, 89, 28, 85, 32, 89, 33, 91, 39, 82,
-<a name="l04511"></a>04511 41, 90, 45, 107, 1, 105, 2, 122, 48, -117, 2, -123, 37, -117, 39, -94, 9, -12, 1, 24, 4, 3, 11, 19, 20,
-<a name="l04512"></a>04512 4, 27, 19, 4, 4, 32, 11, 45, 20, 32, 27, 45, 4, 18, 0, -72, -1, -32, 64, 59, 10, 10, 6, 85, 15,
-<a name="l04513"></a>04513 32, 8, 10, 6, 85, 3, 39, 40, 15, 16, 16, 2, 0, 28, 38, 18, 17, 17, 1, 42, 40, 38, 37, 4, 29,
-<a name="l04514"></a>04514 28, 39, 48, 4, 34, 47, 42, 40, 38, 37, 4, 29, 28, 39, 48, 4, 44, 31, 2, 16, 16, 48, 17, 1, 20,
-<a name="l04515"></a>04515 17, 17, 1, 31, -72, 2, -69, -78, 25, 3, 44, -72, 2, -69, -78, 11, 9, 1, -72, 1, 11, -76, 2, 45, 47,
-<a name="l04516"></a>04516 38, 7, -72, -1, -24, -76, 16, 16, 2, 85, 7, -72, -1, -18, -76, 13, 13, 2, 85, 7, -72, -1, -16, -76, 12,
-<a name="l04517"></a>04517 12, 2, 85, 7, -72, -1, -6, -76, 11, 11, 6, 85, 7, -72, -1, -12, -76, 13, 13, 6, 85, 7, -72, -1, -6,
-<a name="l04518"></a>04518 64, 11, 12, 12, 6, 85, 7, 26, 32, 50, 1, 50, 17, -70, 1, 11, 0, 16, 1, 49, 64, 23, 34, 38, 21,
-<a name="l04519"></a>04519 6, 11, 11, 6, 85, 21, 6, 12, 12, 6, 85, 32, 21, 1, 21, 25, 49, 99, 92, 24, 43, 78, 16, -12, 93,
-<a name="l04520"></a>04520 43, 43, 77, -19, -3, -19, 78, 16, 93, -10, 43, 43, 43, 43, 43, 43, 77, -19, -12, -19, 0, 63, -19, 63, -3,
-<a name="l04521"></a>04521 -121, 14, 46, 43, 125, 16, -60, 0, 17, 18, 23, 57, 23, 57, 1, 17, 18, 23, 57, 23, 57, 7, 16, 14, 60,
-<a name="l04522"></a>04522 60, 60, 60, 7, 16, 14, 60, 60, 60, 60, 0, 43, 43, 49, 48, 1, 67, 92, 88, -71, 0, 40, -1, -34, -74,
-<a name="l04523"></a>04523 20, 57, 28, 34, 20, 57, 40, -72, -1, -34, -75, 18, 57, 28, 34, 18, 57, 43, 43, 43, 43, 89, 93, 93, 93,
-<a name="l04524"></a>04524 113, 0, 93, 113, 1, 55, 23, 7, 22, 23, 22, 21, 20, 2, 4, 35, 34, 39, 38, 39, 7, 39, 55, 38, 38,
-<a name="l04525"></a>04525 53, 52, 18, 36, 51, 50, 22, 7, 38, 38, 35, 34, 0, 17, 20, 23, 22, 23, 1, 1, 22, 23, 22, 51, 50,
-<a name="l04526"></a>04526 0, 17, 52, 4, -30, -88, 99, -80, 86, 30, 40, -74, -2, -73, -71, -118, 112, 86, 115, -88, 99, -80, 98, 66, -76,
-<a name="l04527"></a>04527 1, 69, -57, -122, -55, 4, 94, -115, 95, -37, -2, -30, 22, 16, 51, 3, 60, -3, 25, 77, 65, 85, 99, -38, 1,
-<a name="l04528"></a>04528 28, 5, 52, -68, 84, -58, -128, 96, 126, -100, -31, -2, -96, -76, 39, 30, 85, -68, 84, -59, -107, -45, -108, -30, 1,
-<a name="l04529"></a>04529 97, -74, 71, -33, 74, 54, -2, -41, -2, -39, 116, 90, 67, 98, 2, -36, -4, -64, 63, 25, 33, 1, 52, 1, 22,
-<a name="l04530"></a>04530 -48, 0, 3, 0, -102, 1, -124, 5, 30, 4, 20, 0, 24, 0, 38, 0, 49, 0, -50, 64, 66, 36, 25, 37, 26,
-<a name="l04531"></a>04531 37, 38, 59, 40, 59, 49, 76, 40, 76, 49, 99, 26, 99, 38, 117, 26, 117, 38, -124, 26, -124, 38, 13, 68, 8,
-<a name="l04532"></a>04532 25, 7, 45, 39, 32, 20, 15, 11, 35, 0, 29, 4, 39, 25, 15, 0, 4, 32, 45, 39, 25, 15, 0, 4, 48,
-<a name="l04533"></a>04533 42, 42, 23, 56, 4, 48, 42, 17, 56, 29, 42, 11, -72, 1, -68, 64, 17, 35, 42, 4, 6, 32, 42, 7, 26,
-<a name="l04534"></a>04534 51, 45, 42, 20, 25, 50, -98, 121, 24, 43, 78, 16, -12, 77, -19, 78, 16, -10, 77, -19, 0, 63, -19, -3, -19,
-<a name="l04535"></a>04535 -12, -19, 16, -12, -19, 17, 23, 57, 1, 17, 18, 23, 57, 0, 17, 18, 57, 17, 18, 57, 1, 17, 18, 57, 17,
-<a name="l04536"></a>04536 18, 57, 49, 48, 67, 121, 64, 50, 43, 47, 30, 34, 18, 22, 5, 10, 9, 38, 43, 22, 45, 31, 0, 34, 5,
-<a name="l04537"></a>04537 32, 31, 1, 47, 18, 45, 31, 0, 30, 10, 32, 31, 1, 44, 21, 42, 31, 1, 33, 6, 35, 31, 1, 46, 19,
-<a name="l04538"></a>04538 48, 31, 0, 31, 8, 29, 31, 0, 0, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, -127, -127, -127, -127, 1, 93,
-<a name="l04539"></a>04539 1, 54, 55, 54, 51, 50, 22, 21, 20, 6, 6, 35, 34, 39, 38, 39, 6, 35, 34, 38, 53, 52, 54, 51, 50,
-<a name="l04540"></a>04540 19, 22, 23, 22, 51, 50, 54, 53, 52, 38, 35, 34, 7, 6, 7, 38, 38, 35, 34, 6, 21, 20, 22, 51, 50,
-<a name="l04541"></a>04541 2, -79, 105, 59, 80, 89, 105, -73, 68, -112, 76, 89, 80, 59, 105, -120, -103, 101, -111, -111, 101, -103, -51, 87, 72,
-<a name="l04542"></a>04542 46, 57, 76, 103, 105, 78, 49, 43, 58, -10, 80, 96, 44, 58, 77, 80, 57, 101, 3, 44, -124, 42, 58, -104, -87,
-<a name="l04543"></a>04543 118, -121, 82, 57, 43, -124, -85, -103, 114, 113, -102, -2, -10, -121, 50, 33, 112, 102, 106, 112, 28, 39, -108, 100, 57,
-<a name="l04544"></a>04544 82, 72, 71, 85, 0, 0, 2, 0, 78, 0, 0, 4, 22, 4, -51, 0, 11, 0, 15, 0, 78, 64, 46, 9, 2,
-<a name="l04545"></a>04545 8, 3, 0, 110, 2, -7, 3, 110, 15, 5, 1, 5, 15, 14, -7, 12, 13, 5, 13, 10, 12, 8, 110, 6, 10,
-<a name="l04546"></a>04546 -7, 5, 1, 13, 1, 110, 63, 2, -112, 2, -96, 2, 3, 2, 85, 16, 113, -116, 24, 43, 16, -10, 93, -28, 60,
-<a name="l04547"></a>04547 16, 60, -3, 60, -12, 60, 0, 63, 47, 16, 60, -3, 60, 16, 93, -12, -3, -28, 16, 60, 16, 60, 49, 48, 1,
-<a name="l04548"></a>04548 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 1, 33, 53, 33, 1, -35, -2, 113, 1, -113, -86, 1, -113, -2,
-<a name="l04549"></a>04549 113, 1, -113, -4, 56, 3, -56, 1, 4, 1, -109, -89, 1, -113, -2, 113, -89, -2, 109, -2, -4, -88, 0, 2, 0,
-<a name="l04550"></a>04550 77, 0, 106, 4, 24, 5, 60, 0, 6, 0, 10, 0, 118, 64, 22, -114, 3, -128, 5, 2, 10, 9, 8, 7, 4,
-<a name="l04551"></a>04551 0, 6, 5, 3, 3, 12, 2, 8, 7, 37, 9, 10, -67, 2, -84, 0, 5, 2, 90, 0, 6, 0, 3, 2, 90,
-<a name="l04552"></a>04552 -78, 2, 64, 6, -70, 1, 80, 0, 2, 1, 80, 64, 26, 0, -85, 1, -85, 32, 4, 2, 95, 0, 8, 9, 58,
-<a name="l04553"></a>04553 4, 60, 1, 48, 0, -96, 0, 2, 0, 25, 11, 113, -116, 24, 43, 78, 16, -12, 93, 60, 77, -19, -12, 60, 16,
-<a name="l04554"></a>04554 -19, 0, 25, 47, 26, -19, -19, -19, -19, 24, 26, 16, -19, 16, -19, -10, 60, -3, 60, 1, 17, 18, 23, 57, 18,
-<a name="l04555"></a>04555 23, 57, 49, 48, 0, 93, 19, 53, 1, 21, 1, 1, 21, 7, 33, 53, 33, 77, 3, -53, -4, -2, 3, 2, 2,
-<a name="l04556"></a>04556 -4, 56, 3, -56, 2, -6, -88, 1, -102, -76, -2, -59, -2, -63, -77, -15, -89, 0, 2, 0, 77, 0, 106, 4, 24,
-<a name="l04557"></a>04557 5, 60, 0, 6, 0, 10, 0, -118, 64, 24, -128, 2, -113, 4, 2, 10, 9, 8, 7, 4, 0, 4, 2, 1, 3,
-<a name="l04558"></a>04558 11, 5, 10, 9, 7, 8, 37, 64, 9, -72, 2, -84, -73, 1, 0, -85, 6, -85, 3, 32, 2, -69, 2, 90, 0,
-<a name="l04559"></a>04559 64, 0, 1, 1, 80, -78, 3, 32, 4, -69, 2, 90, 0, 64, 0, 5, 1, 80, 64, 9, 32, 3, 7, 10, 58,
-<a name="l04560"></a>04560 3, 60, 6, 5, -72, 1, 34, 64, 11, 31, 0, 48, 0, 2, 0, 26, 12, 113, -116, 24, 43, 78, 16, -10, 93,
-<a name="l04561"></a>04561 77, -19, 60, -19, -12, 60, 0, 25, 47, 26, -3, 24, 26, -19, 25, 26, 16, -3, 24, 26, -19, 25, 26, 16, -19,
-<a name="l04562"></a>04562 -19, 24, 16, -10, 26, -3, 60, 16, 60, 1, 17, 18, 23, 57, 18, 23, 57, 49, 48, 0, 93, 1, 1, 53, 1,
-<a name="l04563"></a>04563 1, 53, 1, 3, 33, 53, 33, 4, 24, -4, 53, 3, 1, -4, -1, 3, -53, 2, -4, 56, 3, -56, 2, -6, -2,
-<a name="l04564"></a>04564 97, -77, 1, 63, 1, 59, -76, -2, 102, -4, -56, -89, 0, 0, 1, -1, -3, 0, 0, 4, 109, 5, -70, 0, 26,
-<a name="l04565"></a>04565 0, -23, 64, 55, 36, 8, 36, 11, 43, 15, 43, 18, 121, 8, 118, 18, -119, 8, -123, 18, 8, 116, 13, -124, 13,
-<a name="l04566"></a>04566 2, 18, 17, 17, 21, 8, 9, 9, 5, 12, 11, 10, 10, 13, 14, 15, 16, 16, 13, 13, 26, 13, 0, 9, 25,
-<a name="l04567"></a>04567 -24, 22, 22, 4, 21, 5, 1, -24, 4, -72, 2, -81, -73, 5, -7, 8, 8, 31, 18, 1, 18, -72, 1, 96, 64,
-<a name="l04568"></a>04568 32, 17, 17, 16, 16, 10, 10, 9, 0, 0, 10, 24, 23, 23, 20, 20, 19, 56, 17, 2, 3, 3, 6, 6, 7,
-<a name="l04569"></a>04569 56, 9, 16, 60, 32, 17, 1, 17, -72, 1, 0, 64, 11, 21, 21, 26, 35, 0, 10, 60, 47, 9, 1, 9, -72,
-<a name="l04570"></a>04570 1, 0, 64, 15, 5, 5, 0, 16, 15, 15, 6, 85, 0, 16, 11, 11, 6, 85, 0, -72, 1, 25, -77, 27, -77,
-<a name="l04571"></a>04571 122, 24, 43, 16, -10, 43, 43, 60, 16, -12, 93, -19, 16, -3, 60, 16, -12, 93, -19, 16, -12, 60, 16, 60, 16,
-<a name="l04572"></a>04572 60, 16, -12, 60, 16, 60, 16, 60, 0, 63, 63, 60, 16, 60, 16, 60, 16, -12, 93, 60, 16, -3, -2, -19, 16,
-<a name="l04573"></a>04573 60, 16, 60, 16, -19, 17, 18, 57, 1, 17, 57, -121, 14, 125, 16, -60, -60, -121, 14, 16, -60, -60, -121, 5, 16,
-<a name="l04574"></a>04574 -60, -121, 16, -60, 49, 48, 0, 93, 1, 93, 33, 17, 33, 53, 33, 53, 33, 53, 33, 1, 51, 1, 22, 23, 54,
-<a name="l04575"></a>04575 55, 1, 51, 1, 33, 21, 33, 21, 33, 21, 33, 17, 1, -35, -2, 97, 1, -97, -2, 97, 1, 85, -2, 106, -56,
-<a name="l04576"></a>04576 1, 34, 49, 27, 23, 59, 1, 18, -42, -2, 107, 1, 85, -2, 100, 1, -100, -2, 100, 1, 69, -117, -113, -108, 2,
-<a name="l04577"></a>04577 -57, -3, -4, 88, 66, 53, 110, 1, -5, -3, 57, -108, -113, -117, -2, -69, 0, 1, 0, -96, -2, 105, 3, -6, 4,
-<a name="l04578"></a>04578 38, 0, 25, 1, 86, 64, 61, 40, 4, 40, 5, 40, 22, 56, 4, 56, 10, 57, 11, 72, 4, 72, 10, 72, 11,
-<a name="l04579"></a>04579 89, 4, 91, 9, 106, 4, 106, 9, 123, 4, 123, 10, -118, 4, -118, 10, 17, 18, 22, 25, 12, 3, 11, 2, 18,
-<a name="l04580"></a>04580 22, 25, 15, 6, 2, 10, 20, 28, 7, 11, 13, 14, 2, 51, 25, 37, 1, 27, -72, -1, -10, -76, 15, 15, 2,
-<a name="l04581"></a>04581 85, 27, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -28, -76, 16, 16, 2, 85, 0, -72, -1, -26, -76, 13,
-<a name="l04582"></a>04582 13, 2, 85, 0, -72, -1, -2, -76, 12, 12, 2, 85, 0, -72, -1, -18, -76, 11, 11, 2, 85, 0, -72, -1, -25,
-<a name="l04583"></a>04583 64, 11, 16, 16, 6, 85, 0, 27, 14, 15, 6, 85, 0, -72, -1, -3, -76, 13, 13, 6, 85, 0, -72, -1, -6,
-<a name="l04584"></a>04584 -76, 12, 12, 6, 85, 0, -72, -1, -21, 64, 28, 11, 11, 6, 85, 0, 26, 96, 27, -128, 27, 2, -80, 27, -64,
-<a name="l04585"></a>04585 27, 2, -48, 27, -32, 27, 2, 27, 15, 12, 37, 13, 13, 14, -72, -1, -12, -76, 16, 16, 2, 85, 14, -72, -1,
-<a name="l04586"></a>04586 -8, -76, 15, 15, 2, 85, 14, -72, -1, -8, -76, 13, 13, 2, 85, 14, -72, -1, -4, -76, 12, 12, 2, 85, 14,
-<a name="l04587"></a>04587 -72, -1, -8, -76, 11, 11, 2, 85, 14, -72, -1, -17, -76, 16, 16, 6, 85, 14, -72, -1, -14, -76, 15, 15, 6,
-<a name="l04588"></a>04588 85, 14, -72, -1, -3, 64, 22, 12, 12, 6, 85, -32, 14, 1, -64, 14, -48, 14, 2, 0, 14, 32, 14, -80, 14,
-<a name="l04589"></a>04589 3, 14, 25, 26, -72, 1, 54, -79, 80, 24, 43, 78, 16, -12, 93, 93, 93, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l04590"></a>04590 60, 77, 16, -3, 60, 78, 16, 93, 93, 93, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, 77, -3,
-<a name="l04591"></a>04591 -28, 0, 63, 63, -19, 63, 63, 60, 57, 57, 17, 57, 57, 1, 17, 18, 57, 57, 49, 48, 0, 93, 1, 17, 35,
-<a name="l04592"></a>04592 53, 6, 7, 6, 35, 34, 39, 38, 39, 17, 35, 17, 51, 17, 20, 22, 22, 51, 50, 54, 54, 53, 17, 3, -6,
-<a name="l04593"></a>04593 -95, 52, 51, 70, 93, 83, 64, 48, 58, -78, -78, 52, 117, 76, 80, 126, 52, 4, 38, -5, -38, 126, 80, 30, 41,
-<a name="l04594"></a>04594 33, 25, 74, -3, -2, 5, -67, -2, 62, -11, -111, 84, 88, -117, -12, 1, -59, 0, 2, 0, 56, -1, -25, 3, -51,
-<a name="l04595"></a>04595 5, -45, 0, 27, 0, 39, 0, 108, 64, 79, 119, 2, 118, 21, 120, 30, -122, 21, 4, 9, 12, 9, 37, 11, 38,
-<a name="l04596"></a>04596 68, 12, 100, 26, 115, 30, 121, 37, 123, 38, -118, 2, -124, 30, -118, 37, -119, 38, 12, 85, 26, 107, 24, 2, 58,
-<a name="l04597"></a>04597 37, 69, 26, 2, 47, 41, 54, 26, 2, 28, 21, 14, 25, -24, 4, 3, 35, -24, 14, 9, 28, -24, 21, -24, 10,
-<a name="l04598"></a>04598 61, 41, 0, -24, 1, -122, 32, 38, 17, 105, 40, -101, 104, 24, 43, 16, -10, -19, -12, -19, 16, -10, -19, -19, 0,
-<a name="l04599"></a>04599 63, -19, 63, -19, 18, 57, 57, 49, 48, 1, 93, 93, 93, 93, 0, 93, 1, 39, 54, 54, 51, 50, 22, 23, 22,
-<a name="l04600"></a>04600 22, 21, 16, 2, 4, 35, 34, 38, 53, 52, 55, 54, 37, 46, 2, 35, 34, 6, 1, 14, 2, 21, 20, 22, 51,
-<a name="l04601"></a>04601 50, 55, 54, 18, 1, -86, -121, 70, -60, 94, 76, 123, 31, 47, 45, -83, -2, -38, -114, -119, -85, -103, -59, 1, -60,
-<a name="l04602"></a>04602 4, 40, 96, 65, 62, 118, 1, 125, -12, -29, -109, 102, 68, 75, 85, 117, -109, 4, 114, 60, -99, -120, 79, 51, 79,
-<a name="l04603"></a>04603 -40, -116, -2, -32, -2, 63, -42, -74, -91, -30, -95, -49, 8, -88, -80, 95, 99, -2, 44, 14, 108, -11, 126, 83, 108,
-<a name="l04604"></a>04604 55, 76, 1, 61, 0, 0, 1, 0, 122, -2, 81, 5, 106, 5, -45, 0, 11, 0, -115, 64, 32, 4, 10, 0, 8,
-<a name="l04605"></a>04605 4, 3, 4, 5, 3, 32, 11, 10, 20, 11, 11, 10, 4, 5, 4, 3, 5, 32, 9, 10, 20, 9, 9, 10, 2,
-<a name="l04606"></a>04606 3, 30, 11, -72, 2, -90, -74, 1, 0, 2, 6, 5, 30, 9, -72, 2, -90, 64, 14, 7, 8, 14, 1, 2, 45,
-<a name="l04607"></a>04607 6, 7, 81, 32, 13, 1, 13, 4, -70, 2, 58, 0, 10, 2, 113, 64, 11, 9, 0, 11, 45, 9, 32, 8, 1,
-<a name="l04608"></a>04608 8, 86, 12, -72, 1, 51, -79, 92, 24, 43, 16, -10, 93, 60, -12, 60, 16, -12, -19, 16, 93, -12, 60, -12, 60,
-<a name="l04609"></a>04609 0, 63, 60, -26, -3, 60, 63, 60, -26, -3, 60, -121, 5, 46, 43, 8, 125, 16, -60, -121, 5, 46, 24, 43, 8,
-<a name="l04610"></a>04610 125, 16, -60, 0, 17, 18, 57, 57, 49, 48, 19, 33, 21, 33, 1, 1, 33, 21, 33, 53, 1, 1, -117, 4, -43,
-<a name="l04611"></a>04611 -4, 36, 2, 95, -3, 119, 4, 16, -5, 16, 2, 108, -3, -91, 5, -45, -92, -4, -7, -4, -54, -95, -69, 3, 20,
-<a name="l04612"></a>04612 3, 4, 0, 0, 1, 0, -95, -2, 81, 5, -13, 5, -45, 0, 7, 0, 62, 64, 34, 2, 3, 3, 6, 7, 14,
-<a name="l04613"></a>04613 4, 5, 1, 5, 35, 0, 2, 4, -70, 1, 1, 3, -70, 2, 108, 9, 5, -70, 0, 0, 6, -70, 7, 118, 8,
-<a name="l04614"></a>04614 -98, 121, 24, 43, 16, -12, -19, 60, 16, -19, 16, -10, -19, 60, 16, -19, 0, 63, -19, 60, 16, 60, 63, 60, 60,
-<a name="l04615"></a>04615 16, 60, 49, 48, 19, 33, 17, 35, 17, 33, 17, 35, -95, 5, 82, -65, -4, 46, -63, 5, -45, -8, 126, 6, -44,
-<a name="l04616"></a>04616 -7, 44, 0, 0, 1, 0, 0, 0, 0, 4, 100, 4, 39, 0, 11, 0, 65, 64, 30, 6, 7, 2, 11, 43, 1,
-<a name="l04617"></a>04617 0, 6, 8, 5, 10, 6, 5, 37, 3, 4, -110, 1, 26, 13, 7, 8, 37, 10, 9, -110, 0, 25, 12, -10, -71,
-<a name="l04618"></a>04618 2, -106, 0, 24, 43, 78, 16, -12, 77, -12, 60, -3, 60, 78, 16, -10, 77, -12, 60, -3, 60, 0, 63, 60, 63,
-<a name="l04619"></a>04619 60, -3, 60, 57, 57, 49, 48, 17, 33, 21, 35, 17, 35, 17, 33, 17, 35, 17, 35, 4, 100, -94, -67, -2, 86,
-<a name="l04620"></a>04620 -68, -97, 4, 39, -98, -4, 119, 3, -119, -4, 119, 3, -119, 0, 1, 0, 0, -1, 36, 2, 48, 7, 71, 0, 44,
-<a name="l04621"></a>04621 0, -91, 64, 20, 51, 8, 36, 37, 0, 34, 13, 15, 9, 23, 44, 42, 22, 20, 4, 12, 36, 16, 41, 6, -70,
-<a name="l04622"></a>04622 1, -104, 0, 12, 1, -23, -78, 29, 41, 38, -72, 2, -94, 64, 32, 36, 36, 35, 10, 46, 23, 23, 26, 9, -82,
-<a name="l04623"></a>04623 23, 39, 25, 39, 19, -85, 41, 39, 1, 39, 0, 118, 34, 25, 32, 45, 46, -52, 33, -101, 122, 24, 43, 43, 47,
-<a name="l04624"></a>04624 78, -12, 77, -12, -12, -12, -3, -12, -12, -12, 78, 69, 101, 68, -26, 0, 63, 60, 77, 16, -12, -3, -12, -3, -19,
-<a name="l04625"></a>04625 17, 18, 23, 57, 1, 17, 18, 57, 57, 17, 18, 57, 57, 49, 48, 67, 121, 64, 36, 39, 40, 26, 28, 17, 18,
-<a name="l04626"></a>04626 2, 5, 27, 38, 3, 2, 4, 2, 2, 6, 39, 28, 41, 50, 1, 17, 5, 19, 50, 0, 40, 26, 38, 50, 0,
-<a name="l04627"></a>04627 18, 2, 16, 50, 1, 0, 43, 43, 1, 43, 43, 42, 43, -127, -127, -127, -127, 19, 19, 54, 55, 54, 54, 51, 50,
-<a name="l04628"></a>04628 22, 21, 20, 6, 35, 34, 39, 38, 35, 34, 6, 21, 20, 23, 18, 21, 20, 3, 2, 7, 6, 35, 34, 38, 53,
-<a name="l04629"></a>04629 52, 54, 51, 50, 22, 51, 50, 54, 53, 52, 39, 2, -55, 17, 9, 41, 27, 95, 45, 50, 75, 53, 39, 35, 41,
-<a name="l04630"></a>04630 23, 17, 17, 23, 9, 37, 16, 8, 82, 54, 80, 52, 66, 51, 39, 40, 58, 20, 17, 22, 9, 37, 3, -76, 2,
-<a name="l04631"></a>04631 19, -103, 101, 65, 65, 67, 40, 47, 57, 36, 20, 29, 35, 42, 103, -2, 102, -1, 67, -3, -9, -2, -39, 104, 67,
-<a name="l04632"></a>04632 68, 53, 45, 54, 64, 28, 33, 42, 78, 1, 59, 0, 2, 0, 47, 2, -22, 2, -50, 5, -45, 0, 35, 0, 49,
-<a name="l04633"></a>04633 0, -117, 64, 14, 0, 30, 11, 38, 36, 42, 11, 38, 18, 45, 33, 33, 2, 45, -70, 2, 124, 0, 2, 1, 31,
-<a name="l04634"></a>04634 -74, 25, 21, 39, 63, 22, 1, 22, -70, 2, -72, 0, 18, 2, 124, 64, 53, 25, 1, 14, 127, 36, 29, 36, -24,
-<a name="l04635"></a>04635 48, -7, 30, 56, 34, -7, 32, 33, 1, 33, 105, -112, 51, 1, -128, 51, -64, 51, 2, 96, 51, 112, 51, 2, 64,
-<a name="l04636"></a>04636 51, 80, 51, 2, 51, 21, -24, 63, 22, 1, 22, 39, 42, 41, 5, 105, 50, -101, -116, 24, 43, 16, -10, -19, -12,
-<a name="l04637"></a>04637 93, -19, 16, 93, 93, 93, 93, -10, 93, -19, -12, -19, -19, 60, 16, -26, 0, 63, -3, -12, 93, -28, 16, -3, -19,
-<a name="l04638"></a>04638 16, 60, 60, 17, 18, 57, 57, 1, 17, 18, 57, 57, 17, 57, 49, 48, 1, 6, 35, 34, 38, 53, 52, 54, 54,
-<a name="l04639"></a>04639 55, 54, 55, 55, 54, 55, 46, 2, 35, 34, 6, 7, 39, 54, 54, 51, 50, 23, 22, 21, 21, 7, 20, 23, 35,
-<a name="l04640"></a>04640 38, 3, 6, 7, 6, 7, 6, 21, 20, 22, 51, 50, 54, 55, 54, 2, 36, 122, -122, 113, -124, 32, 63, 50, 35,
-<a name="l04641"></a>04641 64, -109, 72, 24, 1, 26, 71, 59, 79, 78, 9, -119, 12, -104, -115, -92, 68, 67, 1, 41, -108, 20, 17, 53, -117,
-<a name="l04642"></a>04642 90, 27, 28, 68, 62, 73, 108, 18, 7, 3, 85, 107, 123, 96, 48, 72, 56, 17, 11, 10, 22, 14, 6, 70, 48,
-<a name="l04643"></a>04643 35, 65, 60, 34, 89, 119, 61, 62, 119, -16, 61, -122, 50, 40, 1, 44, 14, 22, 14, 25, 26, 38, 41, 58, 78,
-<a name="l04644"></a>04644 57, 20, 0, 0, 2, 0, 45, 2, -28, 2, -67, 5, -45, 0, 11, 0, 23, 0, 67, -77, 47, 25, 1, 18, -67,
-<a name="l04645"></a>04645 2, 124, 0, 6, 0, 6, 1, 31, 0, 12, 2, 124, 64, 26, 0, 6, 20, 0, 1, 21, 41, 3, 105, -17, 25,
-<a name="l04646"></a>04646 1, 112, 25, -128, 25, 2, 25, 15, 41, 9, 105, 24, -101, 104, 24, 43, 16, -10, -19, 16, 93, 93, -10, -19, 0,
-<a name="l04647"></a>04647 63, 63, 16, -19, -19, 16, -19, 49, 48, 1, 93, 1, 50, 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 23, 34,
-<a name="l04648"></a>04648 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 1, 117, -111, -73, -72, -113, -111, -72, -73, -111, 81, 99, 101, 79, 80,
-<a name="l04649"></a>04649 100, 101, 5, -45, -56, -80, -81, -56, -60, -81, -76, -56, -123, 114, -127, 126, 117, 117, -125, 122, 116, 0, 0, 1, 0,
-<a name="l04650"></a>04650 127, 0, 0, 5, -61, 5, -33, 0, 42, 1, 89, 64, 37, 57, 15, 57, 26, 69, 3, 74, 15, 74, 26, 70, 37,
-<a name="l04651"></a>04651 89, 1, 86, 17, 105, 1, 102, 17, 124, 1, 122, 26, 116, 37, -118, 25, -124, 38, 15, 59, 2, 1, 46, 8, 32,
-<a name="l04652"></a>04652 -72, 2, 72, 64, 41, 9, 3, 43, 22, 59, 22, 2, -7, 22, 1, 22, 58, 19, 58, 18, 43, 39, 59, 39, 2,
-<a name="l04653"></a>04653 -119, 39, -7, 39, 2, 39, 58, 42, 58, 0, 0, 18, 30, 20, 21, 41, 40, 40, 21, 8, 18, -72, 2, 58, -78,
-<a name="l04654"></a>04654 21, 22, 0, -69, 2, 58, 0, 39, 0, 40, -1, -10, 64, 17, 11, 11, 2, 85, 40, 22, 10, 11, 11, 2, 85,
-<a name="l04655"></a>04655 47, 22, 79, 22, 2, 22, -72, 2, 120, 64, 13, 19, 28, 38, 13, 74, 20, 19, 40, 15, 15, 2, 85, 19, -72,
-<a name="l04656"></a>04656 -1, -6, -76, 13, 13, 2, 85, 19, -72, -1, -16, -76, 12, 12, 2, 85, 19, -72, -1, -32, 64, 16, 11, 11, 2,
-<a name="l04657"></a>04657 85, 16, 19, 1, 19, 106, 44, 32, 40, 64, 40, 2, 40, -72, 2, 120, -75, 41, 36, 38, 5, 74, 41, -72, -1,
-<a name="l04658"></a>04658 -32, -76, 16, 16, 2, 85, 41, -72, -1, -22, -76, 15, 15, 2, 85, 41, -72, -1, -18, -76, 13, 13, 2, 85, 41,
-<a name="l04659"></a>04659 -72, -1, -10, 64, 18, 12, 12, 2, 85, 96, 41, 1, 0, 41, 32, 41, 2, 41, -84, 43, -99, -89, 24, 43, 16,
-<a name="l04660"></a>04660 -10, 93, 113, 43, 43, 43, 43, -12, -19, 16, -19, 93, 16, -10, 93, 43, 43, 43, 43, 60, -10, -19, 16, -28, 93,
-<a name="l04661"></a>04661 43, 16, 43, 60, -19, 16, 60, -19, 0, 63, 60, 16, 60, 16, 60, -3, 60, 16, -28, -27, 93, 113, 16, -28, -27,
-<a name="l04662"></a>04662 93, 113, 63, -19, 49, 48, 67, 121, 64, 32, 29, 35, 6, 12, 34, 37, 7, 38, 11, 37, 30, 38, 33, 8, 36,
-<a name="l04663"></a>04663 -106, 0, 31, 10, 28, -106, 1, 35, 6, 32, -106, 1, 29, 12, 32, -106, 1, 43, 43, 1, 43, 43, 43, 43, 43,
-<a name="l04664"></a>04664 43, -127, -127, 1, 113, 93, 37, 38, 39, 38, 2, 53, 52, 18, 36, 51, 32, 23, 22, 17, 20, 2, 7, 6, 7,
-<a name="l04665"></a>04665 37, 21, 33, 53, 54, 55, 62, 2, 53, 52, 2, 38, 35, 34, 7, 6, 17, 20, 18, 23, 21, 33, 53, 1, -16,
-<a name="l04666"></a>04666 108, 57, 87, 94, -97, 1, 47, -60, 1, 80, -76, -125, 108, 87, 53, 96, 1, 108, -3, -63, 80, 44, 72, 100, 51,
-<a name="l04667"></a>04667 99, -55, -113, -65, 105, -110, -74, -96, -3, -65, -96, 67, 63, 96, 1, 3, -99, -60, 1, 73, -80, -2, -70, -2, -6,
-<a name="l04668"></a>04668 -88, -2, -3, 93, 58, 63, 6, -90, -79, 40, 38, 61, -88, -66, 103, -118, 1, 23, -110, 120, -87, -2, -15, -39, -2,
-<a name="l04669"></a>04669 -55, 72, -76, -88, 0, 3, 0, 68, -1, -24, 6, -54, 4, 62, 0, 53, 0, 60, 0, 74, 1, 123, 64, 53, 61,
-<a name="l04670"></a>04670 57, 61, 72, 76, 41, 79, 57, 90, 41, 94, 57, 122, 5, 7, 40, 64, 48, 34, 52, 37, 76, 5, 67, 14, 66,
-<a name="l04671"></a>04671 37, 68, 72, 91, 4, 86, 14, 86, 15, 83, 37, 105, 7, 103, 14, 101, 15, 100, 35, 119, 16, 116, 38, -121, 16,
-<a name="l04672"></a>04672 18, 36, -72, -1, -1, -74, 12, 16, 2, 85, 18, 28, 61, -72, -1, -26, -76, 16, 16, 2, 85, 61, -72, -1, -64,
-<a name="l04673"></a>04673 64, 46, 12, 13, 2, 85, 0, 61, 16, 61, 2, 61, 61, 23, 70, 54, 28, -112, 46, -96, 46, 2, 46, 46, 50,
-<a name="l04674"></a>04674 58, 28, -107, 23, 28, 32, 58, 28, 39, 39, 32, 7, 70, 28, 9, 50, 28, 0, 0, 16, 0, 2, 0, -72, 2,
-<a name="l04675"></a>04675 125, 64, 20, 3, 3, 9, 11, 54, 37, 18, 51, 61, 37, 46, 55, 64, 46, 10, 16, 16, 2, 85, 46, -72, -1,
-<a name="l04676"></a>04676 -10, 64, 27, 13, 13, 2, 85, 46, 21, 12, 12, 6, 85, 46, 16, 11, 11, 6, 85, -33, 46, 1, 31, 46, 63,
-<a name="l04677"></a>04677 46, -113, 46, 3, 46, -72, 1, -60, -75, 43, 53, 36, 0, 51, 43, -72, -1, -30, -76, 16, 16, 2, 85, 43, -72,
-<a name="l04678"></a>04678 -1, -12, -76, 13, 13, 6, 85, 43, -72, -1, -34, -76, 12, 12, 6, 85, 43, -72, -1, -8, 64, 14, 11, 11, 6,
-<a name="l04679"></a>04679 85, 16, 43, 48, 43, 64, 43, -128, 43, 4, 43, -72, 1, -28, 64, 59, 12, 27, 37, 28, 34, 67, 36, 12, 24,
-<a name="l04680"></a>04680 13, 13, 2, 85, 12, 34, 12, 12, 2, 85, 12, 20, 11, 11, 2, 85, 12, 20, 13, 13, 6, 85, 12, 28, 12,
-<a name="l04681"></a>04681 12, 6, 85, 12, 16, 11, 11, 6, 85, -33, 12, 1, 31, 12, 63, 12, 79, 12, 3, 12, 25, 75, 52, 55, 24,
-<a name="l04682"></a>04682 43, 78, 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 77, -19, -12, -19, 16, -3, 93, 43, 43, 43, 43, 77, -12,
-<a name="l04683"></a>04683 -19, 16, -28, 93, 113, 43, 43, 43, 43, -19, 16, -3, -28, -19, 0, 63, 60, 16, -19, 93, -19, 16, -19, 63, 60,
-<a name="l04684"></a>04684 16, -19, 16, -19, -19, 17, 18, 57, 47, 93, -19, 17, 18, 57, 47, 93, 43, 43, -19, 43, 49, 48, 0, 93, 1,
-<a name="l04685"></a>04685 93, 1, 6, 6, 35, 34, 38, 39, 6, 6, 35, 34, 38, 53, 52, 54, 54, 55, 54, 55, 54, 53, 52, 38, 35,
-<a name="l04686"></a>04686 34, 6, 6, 7, 39, 62, 2, 51, 50, 23, 22, 23, 54, 54, 51, 50, 22, 18, 21, 20, 7, 33, 30, 2, 51,
-<a name="l04687"></a>04687 50, 54, 55, 1, 33, 38, 38, 35, 34, 6, 7, 6, 7, 6, 7, 6, 21, 20, 22, 51, 50, 54, 55, 54, 6,
-<a name="l04688"></a>04688 -58, 50, -16, -78, 127, -65, 77, 104, -43, 123, -84, -65, 99, -79, -62, -106, 102, 1, 105, -125, 87, 120, 57, 19, -81,
-<a name="l04689"></a>04689 28, 105, -60, -125, -89, 102, 59, 40, 64, -94, 115, -94, -44, 98, 2, -3, 1, 2, 67, -109, 88, 103, -113, 27, -3,
-<a name="l04690"></a>04690 -65, 2, 72, 14, -104, 122, 126, -95, -71, 79, -13, 109, 44, 59, 106, 101, 115, -85, 26, 15, 1, 69, -89, -74, 96,
-<a name="l04691"></a>04691 102, 102, 96, -79, 127, 86, -105, 78, 25, 20, 29, 25, 16, 126, 101, 42, 77, 85, 21, 117, -119, 78, 50, 29, 64,
-<a name="l04692"></a>04692 70, 73, -99, -2, -2, 125, 19, 42, -112, -126, 87, 118, 107, 1, 28, -98, -110, -96, -12, 34, 39, 17, 34, 47, 76,
-<a name="l04693"></a>04693 71, 97, 114, 85, 52, 0, 0, 3, 0, -127, -1, -79, 4, 100, 4, 103, 0, 25, 0, 33, 0, 43, 2, -62, 64,
-<a name="l04694"></a>04694 -1, 24, 3, 21, 5, 34, 0, 44, 13, 37, 25, 70, 0, 84, 25, 100, 25, 8, 21, 25, 1, 27, 16, 16, 16,
-<a name="l04695"></a>04695 2, 85, 40, 33, 1, 16, 4, 20, 5, 28, 16, 28, 17, 28, 18, 21, 34, 70, 3, 73, 13, 76, 16, 76, 17,
-<a name="l04696"></a>04696 69, 29, 75, 38, 90, 26, 102, 21, 100, 30, 102, 34, -118, 26, -128, 34, -49, 26, 19, 18, 26, 43, 44, 3, 43,
-<a name="l04697"></a>04697 26, 47, 34, 59, 0, 5, 12, 0, 11, 2, 4, 15, 26, 2, 4, -70, 17, -20, 4, -5, 1, -10, 15, 4, 61,
-<a name="l04698"></a>04698 17, 56, 38, 84, 29, -70, 2, 4, -33, 45, -23, 0, -22, 2, -21, 3, 4, 88, 9, 92, 17, 94, 38, -118, 34,
-<a name="l04699"></a>04699 4, -123, 0, -118, 13, -118, 16, -118, 27, 4, -23, 1, -22, 26, -6, 0, -6, 2, 4, -54, 33, -38, 0, -38, 3,
-<a name="l04700"></a>04700 -21, 34, 4, -54, 0, -54, 2, -7, 4, 3, -97, 17, -102, 33, -86, 3, -85, 33, 4, 124, 27, 121, 33, 121, 34,
-<a name="l04701"></a>04701 -85, 35, 4, 106, 33, 105, 35, 122, 13, 122, 16, 4, 108, 17, 102, 26, 109, 38, 117, 0, 4, 23, 0, 59, 34,
-<a name="l04702"></a>04702 69, 2, 74, 15, 4, 38, 25, 45, 26, 44, 34, 57, 26, 4, -91, 0, -60, 26, -39, 2, -26, 15, 4, 77, 12,
-<a name="l04703"></a>04703 67, 25, 73, 30, 70, 39, 4, 122, 34, 118, 35, -108, 16, -107, 34, 4, 100, 9, 109, 21, 109, 30, 104, 34, -117,
-<a name="l04704"></a>04704 34, 5, 18, 3, 34, 35, 64, 55, 13, 14, 14, 2, 0, 26, 33, 16, 15, 1, 1, 15, 15, 125, 14, 2, 20,
-<a name="l04705"></a>04705 14, 14, 2, 33, 35, 26, 34, 4, 40, 31, 2, 45, 3, 1, 0, 3, 40, 7, 15, 44, 16, 13, 14, 3, 31,
-<a name="l04706"></a>04706 20, 0, 28, 23, 13, 37, 11, 15, 14, 20, 2, 7, 1, -72, 2, 91, -76, 28, 28, 23, 7, 14, -72, 2, 91,
-<a name="l04707"></a>04707 -74, 37, 28, 11, 11, 40, 36, 7, -72, -1, -16, -76, 16, 16, 2, 85, 7, -72, -1, -20, -76, 12, 12, 2, 85,
-<a name="l04708"></a>04708 7, -72, -1, -8, -76, 11, 11, 6, 85, 7, -72, -1, -6, -76, 12, 12, 6, 85, 7, -72, -1, -3, -76, 13, 13,
-<a name="l04709"></a>04709 6, 85, 7, -72, -1, -4, 64, 22, 15, 15, 6, 85, 7, 16, 16, 16, 6, 85, -49, 7, -33, 7, -17, 7, -16,
-<a name="l04710"></a>04710 7, 4, 7, 26, 45, -72, -1, -64, -77, 18, 21, 52, 45, -72, -1, -64, 64, 53, 13, 16, 52, -112, 45, -96, 45,
-<a name="l04711"></a>04711 -16, 45, 3, 0, 45, 32, 45, -128, 45, -32, 45, 4, 45, 31, 36, 20, 0, 16, 16, 2, 85, 20, 10, 11, 11,
-<a name="l04712"></a>04712 2, 85, 20, 5, 11, 11, 6, 85, 20, 14, 12, 12, 6, 85, 20, 4, 13, 13, 6, 85, 20, -72, -1, -12, 64,
-<a name="l04713"></a>04713 17, 15, 15, 6, 85, 31, 20, -33, 20, -17, 20, 3, 31, 20, 1, 20, 25, 44, -70, 1, 51, 2, -111, 0, 24,
-<a name="l04714"></a>04714 43, 78, 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 77, -19, 78, 16, 93, 113, 43, 43, -10, 93, 43, 43, 43,
-<a name="l04715"></a>04715 43, 43, 43, 43, 77, -19, 0, 63, -19, -28, 63, -19, -28, 17, 57, 17, 18, 57, 17, 18, 57, 17, 18, 57, 1,
-<a name="l04716"></a>04716 17, 18, 23, 57, 18, 57, 17, 18, 23, 57, 18, 57, 17, 18, 23, 57, -121, 14, 46, 43, 125, 16, -60, 7, 14,
-<a name="l04717"></a>04717 60, 60, 60, 60, 7, 16, 14, 60, 60, 60, 60, 49, 48, 1, 67, 92, 88, -71, 0, 0, -1, -34, -78, 12, 57,
-<a name="l04718"></a>04718 33, -72, -1, -34, -74, 28, 57, 34, 34, 18, 57, 35, -72, -1, -34, 64, 10, 25, 57, 26, 34, 37, 57, 26, 64,
-<a name="l04719"></a>04719 30, 57, 43, 43, 43, 0, 43, 43, 43, 89, 93, 93, 93, 93, 113, 113, 1, 93, 93, 93, 93, 93, 93, 93, 93,
-<a name="l04720"></a>04720 93, 93, 93, 93, 113, 113, 67, 92, 88, 64, 30, 41, 25, 34, 26, 35, 34, 3, -23, 15, 1, 35, 3, 36, 26,
-<a name="l04721"></a>04721 32, 34, 3, -26, 0, -27, 2, -28, 3, -29, 4, -28, 34, -17, 45, 6, 1, 93, 113, 0, 93, 113, 89, 1, 93,
-<a name="l04722"></a>04722 113, 43, 0, 113, 93, 1, 55, 23, 7, 22, 23, 22, 21, 16, 7, 6, 35, 34, 39, 7, 39, 55, 38, 39, 38,
-<a name="l04723"></a>04723 53, 16, 0, 51, 50, 22, 7, 38, 35, 34, 6, 21, 20, 23, 1, 1, 22, 51, 50, 54, 53, 52, 39, 38, 3,
-<a name="l04724"></a>04724 -105, 99, 96, 107, 63, 23, 31, -87, -119, -63, -97, 122, 105, 94, 108, 59, 25, 40, 1, 38, -58, 82, -118, 23, 91,
-<a name="l04725"></a>04725 100, -123, -76, 52, 2, 15, -2, 63, 78, 98, -117, -75, 12, 8, 3, -25, -128, 70, -118, 86, 70, 100, -123, -2, -44,
-<a name="l04726"></a>04726 -115, 113, 80, -121, 71, -115, 68, 68, 109, -118, 1, 45, 1, 13, 42, -79, 70, -52, -54, -106, 101, 1, -22, -3, -71,
-<a name="l04727"></a>04727 63, -52, -52, 76, 57, 42, 0, 2, 0, -98, -2, 83, 4, 79, 4, 38, 0, 3, 0, 34, 0, -120, 64, 55, -116,
-<a name="l04728"></a>04728 31, 1, 124, 31, -116, 30, 2, 107, 31, 124, 30, 2, 96, 16, 107, 30, 2, 93, 30, 93, 31, 2, 75, 30, 82,
-<a name="l04729"></a>04729 16, 2, 76, 18, 75, 29, 2, 58, 18, 68, 16, 2, 31, 29, 11, 12, 4, 4, 20, 39, 21, 21, 4, 17, 41,
-<a name="l04730"></a>04730 24, 15, 34, 4, -72, 2, -81, 64, 33, 2, 2, 1, 60, 3, 6, 20, 94, 21, 108, 32, 36, 1, 36, 0, 60,
-<a name="l04731"></a>04731 2, 34, 4, 94, 34, -120, 14, 94, 32, 27, 1, 27, 118, 35, -98, -104, 24, 43, 16, -12, 93, -19, -12, -19, 16,
-<a name="l04732"></a>04732 60, -19, 16, 93, -10, -19, 0, 63, -3, 60, 16, -10, 60, 63, -19, 18, 57, 47, -28, 17, 23, 57, 49, 48, 1,
-<a name="l04733"></a>04733 93, 93, 93, 93, 93, 93, 93, 93, 1, 21, 35, 53, 19, 22, 21, 20, 7, 6, 7, 14, 2, 21, 20, 22, 51,
-<a name="l04734"></a>04734 50, 54, 55, 23, 6, 6, 35, 34, 38, 53, 52, 54, 55, 62, 2, 55, 2, -35, -51, -63, 1, 30, 22, 49, 36,
-<a name="l04735"></a>04735 -69, 55, -92, 119, 114, -101, 24, -72, 25, -9, -54, -40, -1, 89, -125, 89, 54, 25, 2, 4, 38, -51, -51, -2, -105,
-<a name="l04736"></a>04736 34, 17, 110, 77, 58, 59, 43, -92, 98, 58, 106, -98, -112, -104, 21, -53, -36, -22, -90, 97, -96, 116, 79, 74, 96,
-<a name="l04737"></a>04737 108, 0, 0, 2, 0, -24, -2, 108, 1, -57, 4, 38, 0, 3, 0, 9, 0, 118, -79, 6, 2, 67, 84, 88, -79,
-<a name="l04738"></a>04738 7, 4, -72, 2, -81, 64, 11, 1, 60, 3, 6, 0, 58, 6, 60, 3, 58, 7, 1, 47, -28, -3, -28, 0, 63,
-<a name="l04739"></a>04739 -3, -26, 47, 49, 48, 27, -79, 28, 4, -72, 2, -81, 64, 35, 1, 60, 3, 7, 3, 6, 11, -53, 0, 58, 4,
-<a name="l04740"></a>04740 56, 5, 9, 56, 3, 58, 8, 60, 5, 5, 6, 60, 32, 7, 1, 7, -53, 10, 11, -127, 33, -39, -11, 24, 43,
-<a name="l04741"></a>04741 43, -10, 93, -3, 60, 16, -3, -28, -28, 16, -28, -28, -26, 0, 63, 47, 16, -3, -26, 49, 48, 75, 83, 88, -77,
-<a name="l04742"></a>04742 4, 5, 9, 8, 1, 16, 60, 16, 60, 89, 89, 1, 21, 35, 53, 19, 19, 17, 35, 17, 19, 1, -65, -49, -96,
-<a name="l04743"></a>04743 55, -33, 52, 4, 38, -51, -51, -2, -109, -4, -8, -2, -69, 1, 69, 3, 8, 0, 0, 1, 0, 114, 1, -88, 4,
-<a name="l04744"></a>04744 58, 4, 6, 0, 5, 0, 47, -74, 2, 3, 1, 0, 3, 37, 4, -72, 1, 29, 64, 14, 0, 2, 1, 37, 5,
-<a name="l04745"></a>04745 0, 26, 7, 3, 25, 6, 87, 90, 24, 43, 78, 16, -28, 16, -10, 60, 77, -3, 60, 0, 47, -3, -19, 16, 60,
-<a name="l04746"></a>04746 16, 60, 49, 48, 1, 35, 17, 33, 53, 33, 4, 58, -86, -4, -30, 3, -56, 1, -88, 1, -74, -88, 0, 0, 1,
-<a name="l04747"></a>04747 0, 84, -1, -78, 4, 100, 7, 77, 0, 7, 0, -121, 64, 59, 4, 6, 20, 6, 2, 0, 7, 16, 7, 2, 3,
-<a name="l04748"></a>04748 6, 7, 3, 4, 7, 63, 2, 3, 20, 2, 2, 3, 7, 0, 3, 4, 3, 2, 4, 76, 5, 6, 20, 5, 5,
-<a name="l04749"></a>04749 6, 4, 5, 0, 7, 7, 76, 2, 1, 20, 2, 2, 1, 7, 6, 3, 4, 5, 7, 2, 0, 3, 1, -72, 1,
-<a name="l04750"></a>04750 102, 64, 17, 6, 6, 6, 6, 8, 1, 26, 9, 5, 25, 8, 9, 120, 33, 113, 122, 24, 43, 43, 78, -28, 16,
-<a name="l04751"></a>04751 -26, 18, 57, 47, 24, 0, 63, 77, -28, 1, 23, 57, 18, 57, 57, 8, -121, 46, 43, 5, 125, 16, -60, 8, -121,
-<a name="l04752"></a>04752 46, 24, 43, 8, 125, 16, -60, 8, -121, 46, 24, 43, 8, -121, 125, -60, 49, 48, 0, 93, 1, 93, 1, 51, 1,
-<a name="l04753"></a>04753 1, 7, 39, 37, 1, 4, 26, 74, -2, -56, -2, 16, -58, 34, 1, 45, 1, -107, 7, 77, -8, 101, 3, -3, 91,
-<a name="l04754"></a>04754 64, -105, -4, -55, 0, 0, 1, 0, 46, -2, 81, 4, 61, 5, -44, 0, 33, 0, -76, 64, 94, 103, 6, 1, 1,
-<a name="l04755"></a>04755 9, 9, 0, 7, 10, 11, 11, 6, 25, 28, 29, 24, 0, 1, 34, 28, 27, 25, 10, 9, 7, 6, 8, 18, 19,
-<a name="l04756"></a>04756 35, 26, 0, 32, 1, 8, 3, 19, 9, 18, 16, 21, 24, 29, 29, 37, 6, 11, 20, 6, 6, 11, 29, 24, 11,
-<a name="l04757"></a>04757 6, 4, 26, 6, 29, 8, 3, 11, 24, 9, 21, 28, 16, 1, 27, 28, 7, 8, 43, 26, 25, 10, 9, 6, 3,
-<a name="l04758"></a>04758 28, 32, 15, 32, 26, 1, 26, 26, 35, 32, 8, 1, 8, 25, 34, -72, 1, -97, -79, -46, 24, 43, 78, 16, -28,
-<a name="l04759"></a>04759 93, 16, -26, 93, 0, 63, 77, -19, 63, 60, 60, 60, -3, 60, 60, 60, 63, -19, 17, 57, 57, 17, 18, 57, 57,
-<a name="l04760"></a>04760 1, 17, 23, 57, -121, 14, 46, 43, 125, 16, -60, 0, 17, 18, 57, 18, 57, 17, 18, 57, 18, 57, 1, 17, 18,
-<a name="l04761"></a>04761 57, 57, 18, 23, 57, 17, 57, 57, 7, 60, 60, 7, 16, 14, 60, 60, 7, 16, 14, 60, 49, 48, 1, 93, 19,
-<a name="l04762"></a>04762 55, 22, 51, 50, 54, 55, 19, 35, 55, 51, 55, 54, 55, 54, 54, 51, 50, 23, 7, 38, 35, 34, 6, 7, 7,
-<a name="l04763"></a>04763 51, 7, 35, 3, 6, 6, 35, 34, 46, 35, 101, 51, 54, 58, 16, -79, -55, 24, -55, 24, 22, 23, 31, 115, 93,
-<a name="l04764"></a>04764 80, -121, 35, 103, 51, 56, 56, 19, 19, -52, 25, -52, -65, 26, 122, 112, 94, -2, 107, -101, 22, 56, 96, 4, 18,
-<a name="l04765"></a>04765 -116, -123, 120, 45, 62, 70, 38, -103, 24, 55, 105, 103, -116, -5, -68, -108, 113, 0, 0, 2, 0, 51, 1, 120, 4,
-<a name="l04766"></a>04766 50, 4, 42, 0, 22, 0, 45, 1, 21, 64, 99, 36, 11, 35, 14, 43, 22, 36, 34, 34, 37, 43, 45, 47, 47,
-<a name="l04767"></a>04767 7, 0, 2, 15, 14, 0, 25, 13, 34, 15, 37, 17, 2, 28, 14, 26, 15, 17, 25, 26, 33, 30, 34, 28, 37,
-<a name="l04768"></a>04768 26, 38, 33, 2, 33, 25, 53, 2, 54, 5, 53, 25, 54, 28, 69, 2, 70, 5, 69, 25, 70, 28, 86, 2, 86,
-<a name="l04769"></a>04769 25, 101, 2, 101, 25, 118, 5, 118, 28, -122, 5, -122, 28, 31, 27, 10, 27, 18, 27, 41, 20, 45, 4, 11, 10,
-<a name="l04770"></a>04770 11, 18, 11, 41, 4, 45, 4, 36, 32, 35, -72, 2, -96, -73, 39, 32, 112, 32, -128, 32, 2, 32, -72, 2, -77,
-<a name="l04771"></a>04771 -78, 16, 32, 9, -72, 2, -96, -73, 13, 32, 12, 58, 3, 24, 32, 23, -72, 2, -96, -73, 43, 32, 112, 26, -128,
-<a name="l04772"></a>04772 26, 2, 26, -72, 2, -77, -77, 20, 1, 32, 0, -72, 2, -96, -76, 20, 32, 3, 6, 39, -69, 1, 62, 0, 36,
-<a name="l04773"></a>04773 0, 32, 1, 62, -77, 36, 35, 35, 16, -69, 1, 62, 0, 13, 0, 9, 1, 62, -76, 13, 12, 105, 47, 43, -69,
-<a name="l04774"></a>04774 1, 62, 0, 23, 0, 26, 1, 62, -77, 23, 24, 24, 20, -69, 1, 62, 0, 0, 0, 3, 1, 62, -73, 1, 1,
-<a name="l04775"></a>04775 0, 105, 46, -101, -115, 24, 43, 16, -10, 60, 16, -19, 16, -26, 60, 16, 60, -19, 16, -26, 16, -10, 60, -26, 16,
-<a name="l04776"></a>04776 -19, 60, 16, 60, -26, 16, -19, 0, 63, -3, -12, -19, 16, -10, 93, -3, -12, -19, 16, -12, -19, -12, -3, -10, 93,
-<a name="l04777"></a>04777 -19, -12, -19, 49, 48, 0, 93, 93, 93, 1, 93, 19, 53, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 21,
-<a name="l04778"></a>04778 6, 6, 35, 34, 38, 38, 35, 34, 6, 3, 53, 54, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, 21, 6, 6,
-<a name="l04779"></a>04779 35, 34, 38, 38, 35, 34, 6, 51, 106, -84, 60, -125, 123, 69, 69, 35, 65, -117, 54, 64, -125, 82, 60, 108, -18,
-<a name="l04780"></a>04780 79, 64, 113, 84, 106, -84, 60, -125, 123, 69, 69, 35, 65, -117, 54, 64, -125, 82, 60, 108, -18, 79, 64, 113, 2,
-<a name="l04781"></a>04781 -30, -51, 120, 34, 53, 30, 17, 78, 59, -44, 60, 54, 27, 107, 55, -2, 69, -51, 120, 34, 53, 29, 18, 78, 59,
-<a name="l04782"></a>04782 -44, 60, 54, 28, 106, 55, 0, 0, 2, 0, 26, 0, 0, 4, -54, 5, 107, 0, 2, 0, 5, 0, 114, 64, 65,
-<a name="l04783"></a>04783 2, 1, 2, 0, 1, 76, 5, 4, 20, 5, 5, 4, 2, 0, 2, 1, 0, -70, 3, 4, 20, 3, 3, 4, 5,
-<a name="l04784"></a>04784 1, 2, 3, 0, 4, 6, 3, 5, 76, 1, 1, 0, 10, 4, 4, 5, 3, 11, 0, 1, 0, 26, 7, -22, 1,
-<a name="l04785"></a>04785 -8, 1, 2, 121, 1, 1, 1, 25, 6, 7, -15, 33, -87, 104, 24, 43, 43, 78, -28, 113, 93, 16, -26, 93, 25,
-<a name="l04786"></a>04786 17, 18, 57, 47, 0, 24, 63, 60, 77, 16, -3, 60, 63, 1, 18, 57, 57, 18, 57, -121, 46, 43, 8, 125, 16,
-<a name="l04787"></a>04787 -60, -121, 5, 46, 24, 43, 8, 125, 16, -60, 49, 48, 33, 33, 9, 3, 4, -54, -5, 80, 2, 116, 1, 80, -2,
-<a name="l04788"></a>04788 113, -2, 72, 5, 107, -6, -25, 3, -57, -4, 57, 0, 2, 0, -122, 0, 72, 3, -33, 3, -40, 0, 5, 0, 11,
-<a name="l04789"></a>04789 0, -124, 64, 11, 9, 3, 13, 9, 25, 3, 29, 9, 4, 10, 4, -72, 1, -53, 64, 11, 8, 2, 8, -7, 7,
-<a name="l04790"></a>04790 7, 11, -7, 10, 117, 6, -72, -1, -64, -77, 25, 28, 52, 6, -72, -1, -64, 64, 27, 15, 17, 52, 6, -82, 9,
-<a name="l04791"></a>04791 64, 25, 28, 52, 9, 64, 14, 17, 52, 9, -97, 0, 2, -24, 1, 58, 5, -7, 4, 117, 0, -72, -1, -64, -77,
-<a name="l04792"></a>04792 25, 28, 52, 0, -72, -1, -64, 64, 18, 15, 17, 52, 0, -82, 0, 3, 16, 3, 32, 3, 3, 3, -84, 12, -81,
-<a name="l04793"></a>04793 121, 24, 43, 16, -10, 93, -3, 43, 43, -10, -3, -12, -19, 16, -10, 43, 43, -3, 43, 43, -10, -3, 60, 16, -3,
-<a name="l04794"></a>04794 0, 47, 60, -3, 60, 49, 48, 1, 93, 1, 1, 35, 1, 1, 51, 19, 1, 35, 1, 1, 51, 1, 84, 1, 3,
-<a name="l04795"></a>04795 -110, -2, -63, 1, 63, -108, 126, 1, 8, -104, -2, -57, 1, 57, -104, 2, 16, -2, 56, 1, -56, 1, -56, -2, 56,
-<a name="l04796"></a>04796 -2, 56, 1, -56, 1, -56, 0, 0, 2, 0, -116, 0, 72, 3, -27, 3, -40, 0, 5, 0, 11, 0, -128, 64, 11,
-<a name="l04797"></a>04797 6, 3, 2, 9, 22, 3, 18, 9, 4, 1, 7, -72, 1, -53, 64, 24, 5, 11, 10, 8, -7, 7, 7, 11, -7,
-<a name="l04798"></a>04798 10, 117, 6, 64, 25, 28, 52, 6, 64, 15, 17, 52, 6, -82, 9, -72, -1, -64, -77, 25, 28, 52, 9, -72, -1,
-<a name="l04799"></a>04799 -64, 64, 35, 14, 17, 52, 9, -97, 0, 2, -7, 1, 58, 5, -24, 4, 117, 0, 64, 25, 28, 52, 0, 64, 15,
-<a name="l04800"></a>04800 17, 52, 0, -82, 15, 3, 31, 3, 2, 3, -84, 13, -99, -71, 1, -122, 0, 24, 43, 16, -10, 93, -3, 43, 43,
-<a name="l04801"></a>04801 -10, -3, -12, -19, 16, -10, 43, 43, -3, 43, 43, -10, -3, 60, 16, -19, 16, 0, 47, 60, -10, 60, 49, 48, 1,
-<a name="l04802"></a>04802 93, 1, 1, 51, 1, 1, 35, 3, 1, 51, 1, 1, 35, 3, 23, -2, -5, -108, 1, 63, -2, -63, -109, 127, -2,
-<a name="l04803"></a>04803 -8, -105, 1, 58, -2, -58, -105, 2, 16, 1, -56, -2, 56, -2, 56, 1, -56, 1, -56, -2, 56, -2, 56, 0, 0,
-<a name="l04804"></a>04804 3, 0, -17, 0, 0, 7, 18, 0, -51, 0, 3, 0, 7, 0, 11, 0, 60, 64, 18, 6, 5, 2, 1, 4, 10,
-<a name="l04805"></a>04805 60, 8, 8, 7, 7, 4, 4, 3, 10, 10, 60, 9, -72, 1, 25, -78, 7, 60, 5, -72, 1, 25, -73, 3, 60,
-<a name="l04806"></a>04806 0, -53, 12, -39, -11, 24, 43, 16, -10, -3, -10, -3, -10, -3, 0, 63, 60, 16, 60, 16, 60, 16, -19, 23, 50,
-<a name="l04807"></a>04807 49, 48, 51, 53, 51, 21, 33, 53, 51, 21, 33, 53, 51, 21, -17, -51, 1, -34, -51, 1, -35, -50, -51, -51, -51,
-<a name="l04808"></a>04808 -51, -51, -51, -1, -1, -1, -3, 0, 0, 5, 89, 7, 44, 2, 38, 0, 36, 0, 0, 1, 7, 0, 67, 1, 103,
-<a name="l04809"></a>04809 1, 106, 0, 33, -79, 2, 16, -72, -1, -64, 64, 11, 11, 17, 52, 16, 12, 0, 72, 43, 2, 1, 16, -70, 2,
-<a name="l04810"></a>04810 33, 0, 41, 1, 100, -123, 0, 43, 1, 43, 43, 53, 0, -1, -1, -1, -3, 0, 0, 5, 89, 6, -5, 2, 38,
-<a name="l04811"></a>04811 0, 36, 0, 0, 1, 7, 0, -41, 1, 86, 1, 81, 0, 61, -77, 2, 2, 1, 30, -70, 2, 33, 0, 41, 1,
-<a name="l04812"></a>04812 100, -123, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 15, 27, 0, 3, 65, 43, 27, 64, 21, 15, 32, 1,
-<a name="l04813"></a>04813 -1, 32, 1, 32, 64, 24, 29, 52, 32, 64, 11, 16, 52, 32, 1, 82, 72, 43, 43, 43, 43, 113, 114, 89, 53,
-<a name="l04814"></a>04814 0, -1, -1, 0, 99, -1, -25, 5, -35, 6, -5, 2, 38, 0, 50, 0, 0, 1, 7, 0, -41, 1, -53, 1, 81,
-<a name="l04815"></a>04815 0, 51, -77, 2, 2, 1, 43, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 28, 40,
-<a name="l04816"></a>04816 3, 3, 65, 43, 27, 64, 10, 47, 45, 63, 45, 2, 95, 45, 1, 45, 3, -72, -1, -30, -79, 72, 43, 43, 93,
-<a name="l04817"></a>04817 93, 89, 53, 0, 0, 2, 0, -127, -1, -25, 7, -65, 5, -45, 0, 23, 0, 36, 1, -104, 64, 80, 20, 25, 20,
-<a name="l04818"></a>04818 30, 27, 32, 27, 36, 4, 4, 25, 4, 30, 11, 32, 11, 36, 4, 108, 32, 110, 36, 2, 101, 26, 99, 30, 2,
-<a name="l04819"></a>04819 48, 25, 48, 30, 2, 32, 25, 32, 30, 2, 121, 7, 1, 5, 13, 1, -25, 11, 1, -73, 6, -58, 11, 2, -113,
-<a name="l04820"></a>04820 3, -128, 14, 2, 107, 4, 1, 112, 14, 1, 117, 11, 115, 13, 2, 126, 3, 124, 4, 2, 35, 32, 9, 17, 2,
-<a name="l04821"></a>04821 85, 33, -72, -1, -32, -76, 9, 17, 2, 85, 14, -72, -1, -4, 64, 51, 11, 17, 2, 85, 3, 22, 23, 14, 18,
-<a name="l04822"></a>04822 20, 19, 30, 22, 22, 21, 21, 2, 15, 24, 30, 12, 3, 17, 18, 30, 16, 15, 2, 0, 23, 30, 1, 2, 8,
-<a name="l04823"></a>04823 31, 30, 5, 9, 34, 45, 15, 2, 30, 18, 23, 10, 16, 16, 2, 85, 23, -72, -1, -12, -76, 15, 15, 2, 85,
-<a name="l04824"></a>04824 23, -72, -1, -10, 64, 11, 13, 13, 2, 85, 23, 22, 12, 12, 2, 85, 23, -72, -1, -8, -76, 11, 11, 2, 85,
-<a name="l04825"></a>04825 23, -72, -1, -12, -76, 15, 15, 6, 85, 23, -72, -1, -12, 64, 11, 13, 13, 6, 85, 23, 18, 12, 12, 6, 85,
-<a name="l04826"></a>04826 23, -72, -1, -8, 64, 46, 11, 11, 6, 85, 23, 48, 23, 80, 23, 2, 32, 23, 96, 23, 2, 23, 37, 38, 21,
-<a name="l04827"></a>04827 84, 17, 74, 48, 0, 64, 0, 2, 80, 0, 96, 0, 2, 32, 0, 112, 0, 2, 0, 26, 127, 38, 1, 38, 28,
-<a name="l04828"></a>04828 38, 9, -72, -1, -14, -76, 16, 16, 2, 85, 9, -72, -1, -12, 64, 11, 15, 15, 2, 85, 9, 4, 11, 11, 2,
-<a name="l04829"></a>04829 85, 9, -72, -1, -24, -76, 16, 16, 6, 85, 9, -72, -1, -9, 64, 16, 15, 15, 6, 85, 9, 4, 11, 11, 6,
-<a name="l04830"></a>04830 85, 32, 9, 1, 9, 25, 37, -72, 1, 51, -79, -103, 24, 43, 78, 16, -12, 93, 43, 43, 43, 43, 43, 43, 77,
-<a name="l04831"></a>04831 -19, 78, 16, 93, -10, 93, 93, 93, 77, -12, -28, 17, 18, 57, 93, 93, 47, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l04832"></a>04832 43, 60, -3, 60, -28, 0, 63, -19, 63, 60, -3, 60, 63, 60, -3, 60, 63, -19, 17, 18, 57, 47, 60, 16, -3,
-<a name="l04833"></a>04833 60, 17, 57, 17, 18, 57, 49, 48, 0, 43, 43, 43, 93, 93, 93, 93, 93, 93, 93, 113, 1, 93, 93, 93, 93,
-<a name="l04834"></a>04834 93, 93, 93, 37, 21, 33, 53, 6, 33, 32, 39, 38, 17, 16, 0, 33, 32, 23, 53, 33, 21, 33, 17, 33, 21,
-<a name="l04835"></a>04835 33, 17, 1, 34, 6, 2, 21, 16, 18, 51, 50, 18, 17, 16, 2, 7, -65, -4, -94, -121, -2, -9, -2, -45, -101,
-<a name="l04836"></a>04836 -120, 1, 28, 1, 52, 1, 8, -120, 3, 63, -3, 118, 2, 87, -3, -87, -3, -70, 101, -64, 98, -25, -96, -95, -27,
-<a name="l04837"></a>04837 -25, -83, -83, -44, -19, -24, -51, 1, 67, 1, 66, 1, -78, -33, -58, -83, -2, 64, -84, -2, 12, 4, -119, -126, -2,
-<a name="l04838"></a>04838 -9, -37, -2, -47, -2, -30, 1, 29, 1, 73, 1, 50, 1, 27, 0, 0, 3, 0, 82, -1, -24, 7, 67, 4, 62,
-<a name="l04839"></a>04839 0, 32, 0, 46, 0, 53, 1, -100, 64, 109, 38, 21, 87, 11, 2, 68, 22, 68, 35, 75, 38, 75, 42, 68, 45,
-<a name="l04840"></a>04840 75, 50, 68, 52, 87, 5, 87, 8, 83, 35, 95, 38, 95, 42, 83, 45, 103, 8, 104, 14, 96, 36, 108, 38, 108,
-<a name="l04841"></a>04841 42, 99, 45, 19, 92, 50, 84, 52, 2, 82, 22, 91, 25, 2, 50, 22, 51, 35, 59, 38, 58, 42, 51, 45, 62,
-<a name="l04842"></a>04842 50, 50, 52, 7, 0, 13, 40, 0, 21, 20, 37, 13, 53, 51, 47, 28, -112, 20, -96, 20, 2, 20, 20, 3, 43,
-<a name="l04843"></a>04843 28, 10, 51, 28, 16, 16, 10, 7, 37, 28, 3, 23, 28, 0, 27, 16, 27, 2, 27, -72, 2, 125, 64, 38, 30,
-<a name="l04844"></a>04844 30, 3, 11, 47, 64, 40, 64, 20, 26, 64, 27, 51, 20, 10, 15, 15, 2, 85, 20, 10, 11, 12, 2, 85, 20,
-<a name="l04845"></a>04845 12, 12, 12, 6, 85, -33, 20, 1, 63, 20, 1, 20, -72, 1, -60, -78, 48, 64, 19, -72, -1, -20, -76, 16, 16,
-<a name="l04846"></a>04846 2, 85, 19, -72, -1, -10, -76, 15, 15, 2, 85, 19, -72, -1, -42, -76, 13, 13, 2, 85, 19, -72, -1, -48, -76,
-<a name="l04847"></a>04847 12, 12, 2, 85, 19, -72, -1, -42, -76, 11, 11, 2, 85, 19, -72, -1, -16, -76, 16, 16, 6, 85, 19, -72, -1,
-<a name="l04848"></a>04848 -13, -76, 15, 15, 6, 85, 19, -72, -1, -20, -76, 13, 13, 6, 85, 19, -72, -1, -53, -76, 12, 12, 6, 85, 19,
-<a name="l04849"></a>04849 -72, -1, -15, -73, 11, 11, 6, 85, -48, 19, 1, 19, -72, -1, -64, -77, 11, 17, 52, 19, -72, 2, 127, 64, 64,
-<a name="l04850"></a>04850 33, 36, 6, 6, 14, 15, 2, 85, 6, 28, 13, 13, 2, 85, 6, 24, 12, 12, 2, 85, 6, 32, 11, 11, 2,
-<a name="l04851"></a>04851 85, 6, 10, 16, 16, 6, 85, 6, 25, 13, 13, 6, 85, 6, 40, 12, 12, 6, 85, 6, 22, 11, 11, 6, 85,
-<a name="l04852"></a>04852 -33, 6, 1, 63, 6, 79, 6, 2, 6, 25, 54, 52, 55, 24, 43, 78, 16, -12, 93, 113, 43, 43, 43, 43, 43,
-<a name="l04853"></a>04853 43, 43, 43, 77, -19, -3, 43, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, -28, 93, 113, 43, 43, 43,
-<a name="l04854"></a>04854 -12, -19, 16, -3, -3, 0, 63, 60, 16, -19, 93, -19, 16, -19, 63, 60, 16, -19, 16, -19, 18, 57, 47, 93, -19,
-<a name="l04855"></a>04855 17, 57, 57, 17, 18, 57, 57, 1, 17, 57, 57, 49, 48, 1, 93, 93, 93, 93, 0, 93, 37, 6, 6, 35, 34,
-<a name="l04856"></a>04856 0, 17, 52, 18, 54, 51, 50, 22, 23, 54, 54, 51, 50, 0, 3, 33, 22, 22, 51, 50, 54, 55, 23, 6, 6,
-<a name="l04857"></a>04857 35, 34, 38, 1, 20, 23, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 6, 5, 33, 38, 38, 35, 34, 6, 3,
-<a name="l04858"></a>04858 -46, 76, -58, 122, -31, -2, -19, 117, -17, -110, -118, -51, 51, 64, -55, 124, -36, 1, 16, 2, -4, -16, 3, -77, -122,
-<a name="l04859"></a>04859 99, -113, 32, -76, 43, -21, -77, -122, -44, -4, -5, 71, 92, -109, -127, -72, -75, -124, 87, -110, 77, 3, 45, 2, 75,
-<a name="l04860"></a>04860 12, -97, 118, 120, -89, -81, 99, 100, 1, 30, 1, 0, -87, 1, 11, -124, 115, 88, 93, 110, -2, -46, -2, -45, -90,
-<a name="l04861"></a>04861 -63, 111, 111, 26, -91, -77, 105, 1, -60, -70, 97, 126, -44, -57, -58, -51, 98, -64, 17, -105, -100, -92, 0, 1, -1,
-<a name="l04862"></a>04862 -4, 1, -54, 4, 111, 2, 91, 0, 3, 0, 30, 64, 15, 1, 53, 0, 2, 26, 5, 32, 0, 1, 0, 25, 4,
-<a name="l04863"></a>04863 -77, 122, 24, 43, 78, 16, -28, 93, 16, -26, 0, 47, 77, -19, 49, 48, 3, 53, 33, 21, 4, 4, 115, 1, -54,
-<a name="l04864"></a>04864 -111, -111, 0, 0, 1, 0, 0, 1, -54, 8, 0, 2, 91, 0, 3, 0, 26, 64, 13, 1, 53, 0, 2, 5, 32,
-<a name="l04865"></a>04865 0, 1, 0, 4, -77, 122, 24, 43, 16, 60, 93, 16, 60, 0, 47, -19, 49, 48, 17, 53, 33, 21, 8, 0, 1,
-<a name="l04866"></a>04866 -54, -111, -111, 0, 2, 0, 83, 3, -13, 2, 90, 5, -45, 0, 11, 0, 23, 0, -40, 64, 92, -97, 25, -81, 25,
-<a name="l04867"></a>04867 2, -17, 7, -17, 19, 2, -33, 7, -33, 19, 2, -49, 7, -49, 19, 2, -65, 7, -65, 19, 2, -81, 7, -81, 19,
-<a name="l04868"></a>04868 2, -97, 7, -97, 19, 2, -113, 7, -113, 19, 2, 126, 7, 126, 19, 2, -5, 8, -5, 20, 2, 108, 8, 108, 20,
-<a name="l04869"></a>04869 2, 90, 8, 90, 20, 2, 12, 8, 12, 20, 2, 20, 19, 8, 7, 23, 12, 15, 11, 0, 3, 15, -7, 14, 3,
-<a name="l04870"></a>04870 -7, 2, 14, 13, 2, 1, 12, 60, 13, 0, 60, 13, 1, -72, 1, 80, 64, 47, 19, 111, 7, 127, 7, -113, 7,
-<a name="l04871"></a>04871 3, 7, 1, 19, 56, 20, 60, 14, 13, 12, 60, 15, 15, 14, 64, 23, 26, 52, 14, 117, 1, 7, 56, 8, 60,
-<a name="l04872"></a>04872 2, 1, 0, 60, 3, 3, -113, 2, 1, 2, 25, 24, 113, -89, 24, 43, 78, 16, -12, 93, 60, 77, 16, -3, 60,
-<a name="l04873"></a>04873 16, -3, -28, 16, -10, 43, 60, 16, -3, 60, 16, -3, -28, 0, 63, 93, 60, -3, 60, -19, 16, -19, 16, 60, 16,
-<a name="l04874"></a>04874 60, 16, -19, 16, -19, 1, 17, 18, 57, 17, 18, 57, 0, 16, -55, 16, -55, 49, 48, 0, 114, 113, 113, 113, 1,
-<a name="l04875"></a>04875 113, 113, 113, 113, 113, 113, 113, 113, 1, 93, 1, 21, 35, 53, 52, 55, 54, 55, 23, 6, 6, 7, 33, 21, 35,
-<a name="l04876"></a>04876 53, 52, 55, 54, 55, 23, 6, 6, 7, 1, 20, -63, 32, 42, 91, 44, 55, 52, 3, 1, -108, -63, 32, 42, 91,
-<a name="l04877"></a>04877 44, 55, 52, 3, 4, -60, -47, -91, -122, 60, 80, 41, 70, 23, 91, 87, -47, -91, -122, 60, 80, 41, 70, 23, 91,
-<a name="l04878"></a>04878 87, 0, 2, 0, 71, 3, -23, 2, 78, 5, -55, 0, 11, 0, 23, 0, -37, 64, 78, -97, 25, -81, 25, 2, -16,
-<a name="l04879"></a>04879 8, -16, 20, 2, 1, 8, 1, 20, 2, -32, 7, -32, 19, 2, -48, 7, -48, 19, 2, -64, 7, -64, 19, 2, -80,
-<a name="l04880"></a>04880 7, -80, 19, 2, -94, 7, -94, 19, 2, -110, 7, -110, 19, 2, -126, 7, -126, 19, 2, 112, 7, 112, 19, 2, 101,
-<a name="l04881"></a>04881 8, 101, 20, 2, 83, 8, 83, 20, 2, 20, 19, 8, 7, 23, 15, 12, 11, 3, 0, 20, -85, 19, -72, 1, 80,
-<a name="l04882"></a>04882 64, 12, 13, 15, -7, 14, 14, 12, 60, 13, 1, 8, -85, 7, -72, 1, 80, 64, 48, 1, 3, -7, 2, 2, 0,
-<a name="l04883"></a>04883 60, 1, 1, 14, 15, 60, 12, 19, 56, 20, 39, 13, 23, 62, 12, 12, 13, 64, 23, 26, 52, 13, 117, 2, 2,
-<a name="l04884"></a>04884 3, 60, 0, 7, 56, 8, 39, 0, 32, 1, 1, 1, 106, 24, 113, -89, 24, 43, 16, -10, 93, 60, -12, -28, 16,
-<a name="l04885"></a>04885 -3, 60, 16, -10, 43, 60, 16, -28, 16, -12, -28, 16, -3, 60, 0, 63, -19, 60, 16, -19, 16, -3, -19, 63, -19,
-<a name="l04886"></a>04886 60, 16, -19, 16, -3, -19, 1, 17, 18, 57, 17, 18, 57, 0, 16, -55, 16, -55, 49, 48, 1, 113, 113, 113, 113,
-<a name="l04887"></a>04887 113, 113, 113, 113, 113, 113, 0, 114, 113, 1, 93, 19, 53, 51, 21, 20, 7, 6, 7, 39, 54, 54, 55, 51, 53,
-<a name="l04888"></a>04888 51, 21, 20, 7, 6, 7, 39, 54, 54, 55, 87, -63, 31, 43, 91, 44, 54, 53, 3, -40, -63, 31, 43, 91, 44,
-<a name="l04889"></a>04889 54, 53, 3, 4, -8, -47, -91, -122, 59, 81, 41, 71, 22, 95, 83, -47, -91, -122, 59, 81, 41, 71, 22, 95, 83,
-<a name="l04890"></a>04890 0, 0, 1, 0, -128, 3, -13, 1, 81, 5, -45, 0, 11, 0, 126, 64, 54, 123, 8, -116, 8, 2, 13, 8, 1,
-<a name="l04891"></a>04891 -3, 7, 1, -34, 7, -17, 7, 2, -67, 7, -49, 7, 2, -101, 7, -82, 7, 2, 90, 7, 108, 7, 2, 8, 7,
-<a name="l04892"></a>04892 11, 0, 3, -7, 2, 2, 1, 11, 0, 60, 1, 8, 56, 111, 1, 127, 1, -113, 1, 3, 1, -72, 1, 80, 64,
-<a name="l04893"></a>04893 21, 7, 0, 1, 0, 7, 56, 8, 39, 0, 60, 3, 3, 32, 2, 1, 2, 25, 12, -99, 121, 24, 43, 78, 16,
-<a name="l04894"></a>04894 -12, 93, 60, 77, 16, -3, -12, -28, 16, 60, 0, 63, -19, 93, 1, -28, 0, 16, -3, 60, 16, 60, 16, -19, 1,
-<a name="l04895"></a>04895 17, 57, 0, 16, -55, 49, 48, 1, 113, 113, 113, 113, 113, 0, 114, 113, 1, 21, 35, 53, 52, 55, 54, 55, 23,
-<a name="l04896"></a>04896 6, 6, 7, 1, 65, -63, 32, 42, 91, 44, 55, 52, 3, 4, -60, -47, -91, -122, 60, 80, 41, 70, 23, 91, 87,
-<a name="l04897"></a>04897 0, 1, 0, 108, 3, -23, 1, 61, 5, -55, 0, 11, 0, 116, 64, 38, -45, 7, -29, 7, 2, -79, 7, -61, 7,
-<a name="l04898"></a>04898 2, -14, 8, 1, -109, 8, -95, 8, 2, 115, 8, -126, 8, 2, 85, 8, 101, 8, 2, 2, 8, 1, 8, 11, 3,
-<a name="l04899"></a>04899 0, 8, -85, 7, -72, 1, 80, 64, 30, 1, 3, -7, 2, 2, 1, 11, 0, 60, 1, 0, 2, 3, 60, 0, 7,
-<a name="l04900"></a>04900 56, 8, 39, 0, 0, 32, 1, 1, 1, 25, 12, -99, 121, 24, 43, 78, 16, -12, 93, 60, 77, 16, -12, -28, 16,
-<a name="l04901"></a>04901 -3, 60, 0, 63, -3, 60, 16, 60, 16, -19, 16, -3, -19, 1, 17, 18, 57, 0, -55, 49, 48, 0, 114, 113, 113,
-<a name="l04902"></a>04902 113, 113, 1, 113, 113, 19, 53, 51, 21, 20, 7, 6, 7, 39, 54, 54, 55, 124, -63, 31, 43, 91, 44, 54, 53,
-<a name="l04903"></a>04903 3, 4, -8, -47, -91, -122, 59, 81, 41, 71, 22, 95, 83, 0, 0, 3, 0, 78, 1, 63, 4, 22, 4, 103, 0,
-<a name="l04904"></a>04904 3, 0, 7, 0, 11, 0, 108, -75, 8, 60, 0, 9, 1, 9, -72, 2, -87, 64, 9, 64, 5, 1, 5, -7, 0,
-<a name="l04905"></a>04905 6, 1, 6, -72, 2, -87, 64, 51, 0, 60, -80, 1, 1, 48, 1, -112, 1, 2, -64, 1, -32, 1, 2, 80, 1,
-<a name="l04906"></a>04906 112, 1, 2, 1, 7, 110, 2, 60, 0, 110, 6, 4, 110, 11, 60, 9, 6, 9, 110, 64, 5, 80, 5, -112, 5,
-<a name="l04907"></a>04907 -96, 5, 4, 5, 113, 12, 113, -116, 24, 43, 78, 16, -12, 93, 77, -28, 60, 16, -3, -28, 16, -12, -3, -28, 0,
-<a name="l04908"></a>04908 47, 93, 93, 113, 113, -3, -10, 113, -3, 113, -10, 113, -19, 49, 48, 1, 53, 51, 21, 1, 33, 53, 33, 1, 53,
-<a name="l04909"></a>04909 51, 21, 1, -53, -51, 1, 126, -4, 56, 3, -56, -3, -75, -51, 3, -102, -51, -51, -2, -27, -88, -2, 24, -51, -51,
-<a name="l04910"></a>04910 0, 0, 2, 0, 47, 0, 0, 3, -57, 5, -114, 0, 5, 0, 9, 0, -105, 64, 93, 9, 6, 9, 8, 6, -123,
-<a name="l04911"></a>04911 0, 1, 20, 0, 6, 7, 0, 1, 6, 7, 6, 9, 7, -123, 4, 5, 20, 4, 7, 8, 4, 5, 9, 8, 9,
-<a name="l04912"></a>04912 6, 8, -123, 2, 1, 20, 2, 8, 7, 2, 1, 8, 7, 8, 9, 7, -123, 4, 3, 20, 4, 7, 6, 4, 3,
-<a name="l04913"></a>04913 5, 0, 3, 2, 7, 9, 6, 8, 8, 1, 4, 8, 6, 4, 7, 9, 1, 6, 3, 0, 5, 0, 2, 3, 8,
-<a name="l04914"></a>04914 15, 1, 1, 1, 105, 11, 4, 105, 10, -98, 121, 24, 43, 16, -26, 16, -26, 93, 0, 63, 60, 63, 60, 18, 23,
-<a name="l04915"></a>04915 57, 1, 17, 18, 23, 57, -121, 8, 46, 43, 8, 125, 16, -60, -121, 8, 46, 24, 43, 8, 125, 16, -60, -121, 8,
-<a name="l04916"></a>04916 46, 24, 43, 8, 125, 16, -60, -121, 8, 46, 24, 43, 8, 125, 16, -60, 49, 48, 9, 2, 35, 1, 1, 23, 9,
-<a name="l04917"></a>04917 2, 2, 37, 1, -94, -2, 94, 111, -2, 121, 1, -121, 57, -2, -84, 1, 84, 1, 103, 5, -114, -3, 55, -3, 59,
-<a name="l04918"></a>04918 2, -59, 2, -55, 97, -3, -104, -3, -103, 2, 103, -1, -1, 0, 33, -2, 81, 3, -18, 5, -61, 2, 38, 0, 92,
-<a name="l04919"></a>04919 0, 0, 1, 7, 0, -114, 0, -74, 0, 0, 0, 58, -75, 2, 1, 1, 2, 2, 34, -71, 2, 34, 0, 41, 0,
-<a name="l04920"></a>04920 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 27, 34, 11, 19, 65, 43, 27, -71, 0, 31, -1, -64, 64, 15, 43,
-<a name="l04921"></a>04921 48, 52, 15, 31, 31, 31, -16, 31, 3, 31, 15, 98, 72, 43, 43, 113, 43, 89, 53, 53, -1, -1, 0, 6, 0,
-<a name="l04922"></a>04922 0, 5, 70, 6, -31, 2, 38, 0, 60, 0, 0, 1, 7, 0, -114, 1, 80, 1, 30, 0, 27, 64, 11, 2, 1,
-<a name="l04923"></a>04923 17, 11, 0, 72, 43, 1, 2, 2, 20, -70, 2, 33, 0, 41, 1, 100, -123, 0, 43, 1, 43, 53, 53, 0, 0,
-<a name="l04924"></a>04924 1, -2, 57, -1, -57, 3, 35, 5, -45, 0, 3, 0, 57, 64, 12, 1, 0, 0, 63, 3, 2, 20, 3, 3, 2,
-<a name="l04925"></a>04925 0, 3, -72, 1, 125, 64, 10, 2, 1, 0, 2, 26, 5, 1, 25, 4, -50, -71, 1, -84, 0, 24, 43, 25, 78,
-<a name="l04926"></a>04926 16, -28, 16, -26, 0, 24, 63, 60, 77, -19, 57, -121, 5, 46, 43, 125, 16, -60, 49, 48, 5, 1, 51, 1, -2,
-<a name="l04927"></a>04927 57, 4, 77, -99, -5, -77, 57, 6, 12, -7, -12, 0, 0, 1, -1, -28, -1, -25, 4, 83, 5, -45, 0, 47, 0,
-<a name="l04928"></a>04928 -66, -77, 102, 2, 1, 18, -72, -1, -32, -77, 13, 17, 52, 4, -72, -1, -32, -77, 9, 17, 52, 17, -72, -1, -32,
-<a name="l04929"></a>04929 -77, 9, 17, 52, 45, -72, -1, -52, 64, 22, 14, 28, 52, 45, 43, 46, 46, 0, 38, 23, 32, 14, 28, 52, 23,
-<a name="l04930"></a>04930 25, 22, 22, 30, 20, 7, 38, -72, 2, 83, -76, 8, -113, 37, 1, 37, -72, 2, 83, -78, 31, 15, 30, -72, 2,
-<a name="l04931"></a>04931 83, 64, 46, 14, 31, 31, 20, 0, 30, 43, 3, 20, 30, 25, 9, 13, 16, 9, 6, 4, 14, 29, 32, 36, 39,
-<a name="l04932"></a>04932 4, 11, 38, 31, 34, 30, 15, 14, 14, 11, 8, 7, 7, 11, 45, 46, 46, 23, 49, 37, 30, 11, 38, 34, 47,
-<a name="l04933"></a>04933 -19, -44, 60, 16, -42, 60, 17, 51, 17, 57, 47, 51, 18, 57, 47, 51, 17, 18, 57, 57, 17, 23, 57, 18, 23,
-<a name="l04934"></a>04934 57, 0, 63, -19, 63, -19, 17, 57, 47, 60, -3, 60, 16, -10, 93, 60, -3, 60, 17, 18, 57, 47, 18, 57, 43,
-<a name="l04935"></a>04935 0, 17, 18, 57, 24, 47, 18, 57, 43, 49, 48, 1, 43, 43, 43, 93, 1, 34, 7, 6, 7, 6, 7, 33, 7,
-<a name="l04936"></a>04936 33, 6, 21, 20, 23, 33, 7, 33, 22, 23, 22, 51, 50, 55, 21, 6, 35, 32, 3, 38, 39, 35, 55, 51, 38,
-<a name="l04937"></a>04937 53, 52, 55, 35, 55, 51, 18, 37, 54, 51, 50, 23, 7, 38, 3, 22, -88, 114, 68, 55, 56, 10, 2, -86, 27,
-<a name="l04938"></a>04938 -3, 97, 1, 1, 2, -124, 28, -3, -83, 42, -96, 115, -122, -69, 105, 125, -105, -2, 60, -97, 32, 23, -103, 28, 105,
-<a name="l04939"></a>04939 3, 1, -125, 28, 116, 62, 1, 5, -95, -62, -70, 127, 40, 122, 5, 45, 81, 48, 88, 91, 82, -122, 21, 19, 77,
-<a name="l04940"></a>04940 15, -122, -27, 96, 69, 98, -50, 58, 1, 120, 76, 108, -122, 42, 49, 20, 21, -122, 1, 70, -114, 88, 81, -70, 101,
-<a name="l04941"></a>04941 0, 1, 0, 92, 0, 72, 2, 44, 3, -40, 0, 5, 0, 76, -71, 0, 0, -1, -18, -78, 22, 57, 0, -72, -1,
-<a name="l04942"></a>04942 -18, 64, 10, 23, 57, 7, 0, 23, 0, -89, 0, 3, 4, -72, 1, -53, 64, 22, 2, 1, -7, 2, 117, 0, 5,
-<a name="l04943"></a>04943 -43, 4, 117, 0, 60, 32, 3, 48, 3, -112, 3, 3, 3, 106, 6, -72, 1, 75, -79, 90, 24, 43, 16, -10, 93,
-<a name="l04944"></a>04944 -3, -10, -19, 16, -10, -19, 0, 47, -19, 49, 48, 1, 93, 43, 43, 1, 1, 35, 1, 1, 51, 1, 35, 1, 9,
-<a name="l04945"></a>04945 -107, -2, -59, 1, 59, -107, 2, 15, -2, 57, 1, -57, 1, -55, 0, 1, 0, 92, 0, 72, 2, 33, 3, -40, 0,
-<a name="l04946"></a>04946 5, 0, 52, -75, 7, 3, 23, 3, 2, 2, -72, 1, -53, 64, 23, 4, 5, -7, 4, 1, -7, 2, 117, 4, 117,
-<a name="l04947"></a>04947 0, 60, 63, 3, -97, 3, 2, 3, 106, 7, 113, -78, 24, 43, 16, -10, 93, -3, -26, -10, -19, 16, -19, 0, 47,
-<a name="l04948"></a>04948 -19, 49, 48, 1, 93, 1, 1, 51, 1, 1, 35, 1, 101, -2, -9, -107, 1, 48, -2, -48, -107, 2, 18, 1, -58,
-<a name="l04949"></a>04949 -2, 64, -2, 48, 0, 3, 0, 23, 0, 0, 3, 117, 5, -45, 0, 21, 0, 25, 0, 29, 1, 28, 64, 45, 22,
-<a name="l04950"></a>04950 8, 11, 13, 25, 10, 8, 25, 126, 24, 0, 13, 28, 8, 1, 19, 2, 43, 3, 28, 18, 18, 17, 17, 4, 4,
-<a name="l04951"></a>04951 3, 6, 26, 21, 10, 23, 22, 22, 27, 27, 26, 64, 29, 24, 25, 25, 28, 28, 29, -72, -1, -16, 64, 11, 15,
-<a name="l04952"></a>04952 16, 2, 85, 29, 16, 13, 13, 2, 85, 29, -72, -1, -24, 64, 11, 12, 12, 2, 85, 29, 12, 16, 16, 6, 85,
-<a name="l04953"></a>04953 29, -72, -1, -22, 64, 41, 11, 12, 6, 85, -97, 29, -65, 29, -1, 29, 3, 29, 26, 31, -112, 10, -80, 10, 2,
-<a name="l04954"></a>04954 10, 40, 18, 18, 19, -69, 17, 20, 20, 21, 64, 0, 5, 4, 4, 1, 1, 0, -110, 2, 2, 3, -72, -1, -28,
-<a name="l04955"></a>04955 -76, 14, 16, 2, 85, 3, -72, -1, -20, -76, 13, 13, 2, 85, 3, -72, -1, -14, -76, 12, 12, 2, 85, 3, -72,
-<a name="l04956"></a>04956 -1, -6, -76, 11, 11, 2, 85, 3, -72, -1, -20, -76, 13, 13, 6, 85, 3, -72, -1, -14, 64, 10, 11, 12, 6,
-<a name="l04957"></a>04957 85, 3, 25, 30, 124, 80, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 60, 77, 16, -12, 60, 16, 60, 16,
-<a name="l04958"></a>04958 60, 16, -3, 60, 16, 60, -12, 60, 16, -28, 93, 78, 16, -10, 113, 43, 43, 43, 43, 43, 60, 16, 60, 16, 60,
-<a name="l04959"></a>04959 77, 16, -3, 60, 16, 60, 16, 60, 0, 63, 60, 63, 60, 16, 60, 16, 60, 16, 60, 16, -3, 60, 63, -19, 63,
-<a name="l04960"></a>04960 -19, 18, 57, 17, 18, 57, 49, 48, 67, 121, 64, 14, 14, 15, 6, 7, 14, 7, 16, 27, 0, 15, 6, 13, 27,
-<a name="l04961"></a>04961 1, 43, 1, 43, -127, -127, 51, 17, 35, 53, 51, 53, 52, 54, 51, 50, 23, 7, 38, 35, 34, 6, 21, 21, 51,
-<a name="l04962"></a>04962 21, 35, 17, 1, 53, 51, 21, 3, 17, 51, 17, -73, -96, -96, -120, -109, 99, 84, 28, 53, 44, 93, 68, -50, -50,
-<a name="l04963"></a>04963 1, 86, -76, -76, -76, 3, -101, -117, 103, -98, -88, 23, -104, 9, 74, 120, 69, -117, -4, 101, 4, -21, -49, -49, -5,
-<a name="l04964"></a>04964 21, 4, 38, -5, -38, 0, 2, 0, 23, 0, 0, 3, 115, 5, -45, 0, 21, 0, 25, 1, 29, 64, 42, 22, 8,
-<a name="l04965"></a>04965 11, 13, 3, 10, 8, 24, 24, 23, 0, 19, 20, 20, 1, 1, 2, 43, 3, 18, 17, 17, 4, 4, 3, 6, 13,
-<a name="l04966"></a>04966 28, 8, 1, 25, 22, 22, 0, 21, 10, 23, 22, 64, 25, 25, 24, -72, -1, -12, 64, 11, 15, 16, 2, 85, 24,
-<a name="l04967"></a>04967 14, 13, 13, 2, 85, 24, -72, -1, -24, 64, 11, 12, 12, 2, 85, 24, 12, 16, 16, 6, 85, 24, -72, -1, -22,
-<a name="l04968"></a>04968 64, 44, 11, 12, 6, 85, -97, 24, -65, 24, -1, 24, 3, 24, 26, 27, -112, 10, -80, 10, 2, 10, 40, 18, 18,
-<a name="l04969"></a>04969 19, -69, 20, 16, 17, 17, 20, 20, 21, 64, 0, 5, 4, 4, 1, 1, 0, -110, 2, 2, 3, -72, -1, -28, -76,
-<a name="l04970"></a>04970 14, 16, 2, 85, 3, -72, -1, -20, -76, 13, 13, 2, 85, 3, -72, -1, -14, -76, 12, 12, 2, 85, 3, -72, -1,
-<a name="l04971"></a>04971 -6, -76, 11, 11, 2, 85, 3, -72, -1, -20, -76, 13, 13, 6, 85, 3, -72, -1, -14, 64, 10, 11, 12, 6, 85,
-<a name="l04972"></a>04972 3, 25, 26, 124, 80, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 60, 77, 16, -12, 60, 16, 60, 16, 60,
-<a name="l04973"></a>04973 16, -3, 60, 16, 60, 16, 60, 16, -12, 60, 16, -28, 93, 78, 16, -10, 113, 43, 43, 43, 43, 43, 60, 77, 16,
-<a name="l04974"></a>04974 -3, 60, 0, 63, 60, 60, 16, 60, 63, -19, 63, 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, 63, 60,
-<a name="l04975"></a>04975 17, 18, 57, 17, 18, 57, 49, 48, 67, 121, 64, 14, 14, 15, 6, 7, 14, 7, 16, 27, 0, 15, 6, 13, 27,
-<a name="l04976"></a>04976 1, 43, 1, 43, -127, -127, 51, 17, 35, 53, 51, 53, 52, 54, 51, 50, 23, 7, 38, 35, 34, 6, 21, 21, 51,
-<a name="l04977"></a>04977 21, 35, 17, 33, 17, 51, 17, -73, -96, -96, -120, -109, 99, 84, 28, 53, 44, 93, 68, -50, -50, 1, 84, -76, 3,
-<a name="l04978"></a>04978 -101, -117, 103, -98, -88, 23, -104, 9, 74, 120, 69, -117, -4, 101, 5, -70, -6, 70, 0, 0, 1, 0, 73, -2, -90,
-<a name="l04979"></a>04979 4, 34, 5, -90, 0, 19, 0, -104, 64, 81, 13, 14, 14, 5, 5, 6, 32, 7, 7, 12, 11, 11, 8, -120, 10,
-<a name="l04980"></a>04980 9, 0, 16, 15, 15, 4, 4, 3, 32, 1, 2, 2, 17, 18, 18, 1, -120, 19, 0, 12, 13, 13, 16, 17, 110,
-<a name="l04981"></a>04981 19, 10, 11, 11, 14, 14, 15, 15, 18, 18, 19, 32, 0, 9, 8, 8, 5, 5, 4, 4, 1, 1, 0, 110, 2,
-<a name="l04982"></a>04982 7, 6, 6, 2, 2, 64, 3, -112, 3, 2, 3, 62, 20, 112, -116, 24, 43, 16, -12, 93, 60, 16, 60, 16, 60,
-<a name="l04983"></a>04983 16, -12, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, 16, 60, 16, 60, 16, -12, 60,
-<a name="l04984"></a>04984 60, 16, 60, 0, 47, 60, -12, 60, 16, 60, 60, 16, 60, -3, 60, 16, 60, 16, 60, 63, 60, -12, 60, 16, 60,
-<a name="l04985"></a>04985 60, 16, -3, 60, 16, 60, 16, 60, 49, 48, 1, 17, 33, 53, 33, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33,
-<a name="l04986"></a>04986 17, 33, 21, 33, 17, 1, -37, -2, 110, 1, -110, -2, 110, 1, -110, -76, 1, -109, -2, 109, 1, -109, -2, 109, -2,
-<a name="l04987"></a>04987 -90, 1, 114, -95, 2, -43, -95, 1, 119, -2, -119, -95, -3, 43, -95, -2, -114, 0, 0, 1, 0, -71, 2, 107, 1,
-<a name="l04988"></a>04988 -122, 3, 56, 0, 3, 0, 26, 64, 14, 1, 60, 0, 2, 60, 32, 0, 1, 0, -96, 4, -95, -104, 24, 43, 16,
-<a name="l04989"></a>04989 -12, 93, -3, 0, 47, -19, 49, 48, 19, 53, 51, 21, -71, -51, 2, 107, -51, -51, 0, 1, 0, 108, -2, -15, 1,
-<a name="l04990"></a>04990 61, 0, -47, 0, 11, 0, 110, 64, 40, -13, 8, 1, -111, 8, -96, 8, 2, 114, 8, -124, 8, 2, 3, 8, 1,
-<a name="l04991"></a>04991 -46, 7, 1, -76, 7, -61, 7, 2, 84, 7, 100, 7, 2, 8, 11, 3, 0, 8, -85, 7, 3, -7, 2, 7, -72,
-<a name="l04992"></a>04992 1, 80, 64, 24, 2, 1, 11, 1, 60, 0, 8, 3, -127, 0, 7, 56, 8, 39, 1, 32, 0, 1, 0, 25, 12,
-<a name="l04993"></a>04993 -99, 121, 24, 43, 78, 16, -12, 93, 60, 77, -12, -28, 16, -19, 0, 63, -19, 60, 16, 60, -19, 16, -19, 16, -19,
-<a name="l04994"></a>04994 1, 17, 18, 57, 0, -55, 49, 48, 1, 113, 113, 113, 0, 114, 113, 113, 113, 51, 53, 51, 21, 20, 7, 6, 7,
-<a name="l04995"></a>04995 39, 54, 54, 55, 124, -63, 31, 43, 91, 44, 54, 53, 3, -47, -91, -122, 59, 81, 41, 71, 22, 95, 83, 0, 0,
-<a name="l04996"></a>04996 2, 0, 71, -2, -15, 2, 78, 0, -47, 0, 11, 0, 23, 0, -42, 64, 78, -97, 25, -81, 25, 2, 0, 8, 0,
-<a name="l04997"></a>04997 20, 2, -30, 7, -30, 19, 2, -48, 7, -48, 19, 2, -64, 7, -64, 19, 2, -80, 7, -80, 19, 2, -96, 7, -96,
-<a name="l04998"></a>04998 19, 2, -111, 7, -111, 19, 2, -126, 7, -126, 19, 2, 115, 7, 115, 19, 2, -16, 8, -16, 20, 2, 100, 8, 100,
-<a name="l04999"></a>04999 20, 2, 84, 8, 84, 20, 2, 20, 19, 8, 7, 23, 15, 12, 11, 3, 0, 20, -85, 19, -72, 1, 80, 64, 11,
-<a name="l05000"></a>05000 13, 15, -7, 14, 14, 13, 60, 12, 8, 7, 7, -72, 1, 80, 64, 44, 1, 3, -7, 2, 2, 1, 60, 0, 8,
-<a name="l05001"></a>05001 14, 15, 60, 12, 19, 56, 20, 39, 13, 12, 64, 23, 26, 52, 12, 117, 2, 2, 3, 60, 0, 7, 56, 8, 39,
-<a name="l05002"></a>05002 1, -113, 0, 1, 0, 25, 24, 113, -89, 24, 43, 78, 16, -12, 93, 60, 77, -12, -28, 16, -3, 60, 16, -10, 43,
-<a name="l05003"></a>05003 60, -12, -28, 16, -3, 60, 0, 63, -3, 60, 16, -19, 16, -3, 60, 63, -3, 60, 16, -19, 16, -3, -19, 1, 17,
-<a name="l05004"></a>05004 18, 57, 17, 18, 57, 0, 16, -55, 16, -55, 49, 48, 0, 113, 113, 113, 1, 113, 113, 113, 113, 113, 113, 113, 113,
-<a name="l05005"></a>05005 0, 114, 1, 93, 51, 53, 51, 21, 20, 7, 6, 7, 39, 54, 54, 55, 51, 53, 51, 21, 20, 7, 6, 7, 39,
-<a name="l05006"></a>05006 54, 54, 55, 87, -63, 31, 43, 91, 44, 54, 53, 3, -40, -63, 31, 43, 91, 44, 54, 53, 3, -47, -91, -122, 59,
-<a name="l05007"></a>05007 81, 41, 71, 22, 95, 83, -47, -91, -122, 59, 81, 41, 71, 22, 95, 83, 0, 7, 0, 37, -1, -54, 7, -37, 5,
-<a name="l05008"></a>05008 -45, 0, 3, 0, 15, 0, 30, 0, 42, 0, 57, 0, 69, 0, 84, 1, 126, 64, 11, -104, 1, -105, 3, 2, -77,
-<a name="l05009"></a>05009 8, 1, 2, 3, 3, -72, 2, -102, 64, 15, 0, 1, 20, 0, 0, 1, 2, 1, 50, 43, 3, 0, 23, 16, 19,
-<a name="l05010"></a>05010 -68, 2, -97, 0, 13, 1, 31, 0, 27, 2, -97, 64, 11, 7, 2, 1, 58, 7, 1, 3, 0, 0, 40, 81, -72,
-<a name="l05011"></a>05011 2, -97, -78, 61, 61, 54, -67, 2, -97, 0, 34, 1, 31, 0, 40, 0, 73, 2, -97, -78, 67, 67, 46, -72, 2,
-<a name="l05012"></a>05012 -97, -76, 40, 11, 86, 105, 77, -68, 2, -102, 0, 64, 1, -74, 0, 70, 2, -102, -78, 58, 106, 50, -68, 2, -102,
-<a name="l05013"></a>05013 0, 37, 1, -74, 0, 43, 2, -102, -78, 31, 108, 23, -68, 2, -102, 0, 10, 1, -74, 0, 16, 2, -102, -77, 4,
-<a name="l05014"></a>05014 105, 85, 86, -72, 1, -19, -77, 33, -101, 104, 24, 43, 43, -10, -19, -3, -19, -10, -19, -3, -19, -10, -19, -3, -19,
-<a name="l05015"></a>05015 -26, 0, 63, -19, 60, 16, -19, 16, -3, -19, 60, 16, -19, 16, 60, 16, 60, 63, -12, 60, 16, -19, -3, -19, 1,
-<a name="l05016"></a>05016 17, 18, 57, 57, 17, 18, 57, 57, -121, 46, 43, -121, 125, -60, 49, 48, 24, 67, 121, 64, -116, 5, 84, 83, 37,
-<a name="l05017"></a>05017 79, 38, 75, 37, 56, 37, 52, 38, 48, 37, 29, 37, 25, 38, 21, 37, 82, 60, 70, 31, 0, 80, 62, 77, 31,
-<a name="l05018"></a>05018 1, 72, 68, 70, 31, 0, 74, 66, 77, 31, 1, 55, 33, 43, 31, 0, 53, 35, 50, 31, 1, 45, 41, 43, 31,
-<a name="l05019"></a>05019 0, 47, 39, 50, 31, 1, 28, 6, 16, 31, 0, 26, 8, 23, 31, 1, 18, 14, 16, 31, 0, 20, 12, 23, 31,
-<a name="l05020"></a>05020 1, 84, 59, 81, 31, 1, 78, 63, 81, 31, 1, 71, 69, 73, 31, 0, 76, 65, 73, 31, 0, 57, 32, 54, 31,
-<a name="l05021"></a>05021 1, 51, 36, 54, 31, 1, 44, 42, 46, 31, 0, 49, 38, 46, 31, 0, 30, 5, 27, 31, 1, 24, 9, 27, 31,
-<a name="l05022"></a>05022 1, 17, 15, 19, 31, 0, 22, 11, 19, 31, 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1,
-<a name="l05023"></a>05023 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -127, 1, 93, 5,
-<a name="l05024"></a>05024 1, 51, 1, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 55, 54, 53, 52, 39,
-<a name="l05025"></a>05025 38, 35, 34, 7, 6, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 55, 54, 53,
-<a name="l05026"></a>05026 52, 39, 38, 35, 34, 7, 6, 5, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 55,
-<a name="l05027"></a>05027 54, 53, 52, 39, 38, 35, 34, 7, 6, 1, 64, 2, 89, -125, -3, -88, -2, 97, -99, -127, -128, -96, -116, -110, -128,
-<a name="l05028"></a>05028 -96, -108, 79, 65, 59, 32, 43, 44, 34, 60, 62, 33, 45, 2, 66, -99, -128, -128, -95, -116, -110, -128, -96, -108, 79,
-<a name="l05029"></a>05029 65, 59, 32, 43, 45, 34, 59, 62, 33, 45, 2, 14, -99, -127, -128, -96, -117, -109, -128, -96, -108, 79, 65, 59, 32,
-<a name="l05030"></a>05030 43, 44, 34, 60, 62, 33, 45, 54, 6, 9, -7, -9, 4, -127, -57, -75, -74, -62, -60, -57, -70, -59, -104, 106, 45,
-<a name="l05031"></a>05031 60, -101, -104, 63, 47, 46, 63, -4, 114, -57, -75, -74, -62, -60, -58, -71, -59, -105, 107, 45, 61, -102, -103, 62, 47,
-<a name="l05032"></a>05032 46, 62, -108, -57, -75, -74, -62, -60, -58, -71, -59, -105, 107, 45, 61, -102, -103, 62, 47, 46, 62, -1, -1, -1, -3,
-<a name="l05033"></a>05033 0, 0, 5, 89, 7, 44, 2, 38, 0, 36, 0, 0, 1, 7, 0, -42, 1, 64, 1, 106, 0, 31, 64, 15, 2,
-<a name="l05034"></a>05034 111, 17, -97, 17, 2, 0, 17, 20, 1, 2, 65, 2, 1, 21, -70, 2, 33, 0, 41, 1, 100, -123, 0, 43, 1,
-<a name="l05035"></a>05035 43, 114, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7, 44, 2, 38, 0, 40, 0, 0, 1, 7, 0, -42, 1,
-<a name="l05036"></a>05036 107, 1, 106, 0, 42, 64, 18, 1, 12, 64, 30, 32, 52, 0, 12, -81, 12, 2, 47, 12, 95, 12, 2, 12, 2,
-<a name="l05037"></a>05037 -72, -3, -1, -76, 72, 43, 1, 1, 18, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 43, 53, -1, -1, -1,
-<a name="l05038"></a>05038 -3, 0, 0, 5, 89, 7, 44, 2, 38, 0, 36, 0, 0, 1, 7, 0, -115, 1, 63, 1, 106, 0, 33, -79, 2,
-<a name="l05039"></a>05039 18, -72, -1, -64, 64, 11, 18, 25, 52, 18, 12, 0, 72, 43, 2, 1, 15, -70, 2, 33, 0, 41, 1, 100, -123,
-<a name="l05040"></a>05040 0, 43, 1, 43, 43, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 6, -31, 2, 38, 0, 40, 0, 0, 1, 7,
-<a name="l05041"></a>05041 0, -114, 1, 108, 1, 30, 0, 71, -78, 2, 1, 14, -72, -1, -64, 64, 10, 11, 12, 6, 85, 14, 64, 24, 28,
-<a name="l05042"></a>05042 52, 14, -72, -1, -64, 64, 20, 29, 32, 52, 14, 64, 15, 17, 52, -96, 14, -17, 14, 2, -96, 14, -80, 14, 2,
-<a name="l05043"></a>05043 14, 4, -72, 1, 14, -75, 72, 43, 1, 2, 2, 19, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 43, 43,
-<a name="l05044"></a>05044 43, 43, 53, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7, 44, 2, 38, 0, 40, 0, 0, 1, 7, 0, 67,
-<a name="l05045"></a>05045 1, -127, 1, 106, 0, 40, 64, 16, 1, -97, 13, -81, 13, 2, 111, 13, 127, 13, 2, 64, 13, 1, 13, 2, -72,
-<a name="l05046"></a>05046 -3, -5, -76, 72, 43, 1, 1, 13, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 113, 53, -1, -1, 0, -115,
-<a name="l05047"></a>05047 0, 0, 1, -2, 7, 44, 2, 38, 0, 44, 0, 0, 1, 7, 0, -115, -1, -81, 1, 106, 0, 43, -79, 1, 7,
-<a name="l05048"></a>05048 -72, -1, -64, -77, 23, 25, 52, 7, -72, -1, -64, 64, 14, 34, 37, 52, 47, 7, 1, 7, 1, 90, 72, 43, 1,
-<a name="l05049"></a>05049 1, 7, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 43, 43, 53, 0, -1, -1, -1, -32, 0, 0, 2, 89, 7,
-<a name="l05050"></a>05050 44, 2, 38, 0, 44, 0, 0, 1, 7, 0, -42, -1, -57, 1, 106, 0, 50, -77, 1, 1, 1, 10, -71, 2, 33,
-<a name="l05051"></a>05051 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 6, 9, 1, 2, 65, 43, 27, 64, 15, 4, 64, 51,
-<a name="l05052"></a>05052 52, 52, 4, 64, 29, 31, 52, 4, 1, 97, 72, 43, 43, 43, 43, 89, 53, -1, -1, 0, 4, 0, 0, 2, 53,
-<a name="l05053"></a>05053 6, -31, 2, 38, 0, 44, 0, 0, 1, 7, 0, -114, -1, -57, 1, 30, 0, 24, 64, 11, 2, 1, 8, 2, 0,
-<a name="l05054"></a>05054 72, 43, 1, 2, 2, 11, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 53, -1, -1, 0, 54, 0, 0, 1, -82,
-<a name="l05055"></a>05055 7, 44, 2, 38, 0, 44, 0, 0, 1, 7, 0, 67, -1, -35, 1, 106, 0, 57, -77, 1, 1, 1, 5, -71, 2,
-<a name="l05056"></a>05056 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 45, 4, 4, 2, 2, 65, 43, 27, 64, 15, 5, 64,
-<a name="l05057"></a>05057 23, 25, 52, 5, 64, 34, 37, 52, 32, 5, 1, 5, 2, -72, -1, -90, -79, 72, 43, 43, 93, 43, 43, 89, 53,
-<a name="l05058"></a>05058 0, -1, -1, 0, 99, -1, -25, 5, -35, 7, 44, 2, 38, 0, 50, 0, 0, 1, 7, 0, -115, 1, -57, 1, 106,
-<a name="l05059"></a>05059 0, 36, -79, 2, 31, -72, -1, -64, 64, 16, 22, 25, 52, 112, 31, -33, 31, 2, 31, 3, 0, 72, 43, 2, 1,
-<a name="l05060"></a>05060 31, -71, 2, 33, 0, 41, 0, 43, 1, 43, 113, 43, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 44, 2, 38,
-<a name="l05061"></a>05061 0, 50, 0, 0, 1, 7, 0, -42, 1, -58, 1, 106, 0, 22, 64, 10, 2, 0, 30, 33, 3, 3, 65, 2, 1,
-<a name="l05062"></a>05062 34, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 44, 2, 38, 0, 50,
-<a name="l05063"></a>05063 0, 0, 1, 7, 0, 67, 1, -61, 1, 106, 0, 36, -79, 2, 29, -72, -1, -64, 64, 16, 11, 12, 52, 80, 29,
-<a name="l05064"></a>05064 -17, 29, 2, 29, 3, 0, 72, 43, 2, 1, 29, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 43, 53, -1, -1,
-<a name="l05065"></a>05065 0, -95, -1, -25, 5, 34, 7, 44, 2, 38, 0, 56, 0, 0, 1, 7, 0, -115, 1, -120, 1, 106, 0, 43, 64,
-<a name="l05066"></a>05066 27, 1, 24, 64, 12, 14, 52, 79, 24, 1, 31, 24, 47, 24, 2, 127, 24, -113, 24, 2, 24, 17, 0, 72, 43,
-<a name="l05067"></a>05067 1, 1, 24, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 113, 43, 53, 0, -1, -1, 0, -95, -1, -25, 5,
-<a name="l05068"></a>05068 34, 7, 44, 2, 38, 0, 56, 0, 0, 1, 7, 0, -42, 1, -120, 1, 106, 0, 39, -78, 1, 1, 27, -71, 2,
-<a name="l05069"></a>05069 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -74, 1, 0, 23, 26, 11, 1, 65, 43, 53, 27, -74, 1,
-<a name="l05070"></a>05070 1, 21, 17, 20, 72, 39, 43, 89, 0, -1, -1, 0, -95, -1, -25, 5, 34, 7, 44, 2, 38, 0, 56, 0, 0,
-<a name="l05071"></a>05071 1, 7, 0, 67, 1, -123, 1, 106, 0, 35, 64, 20, 1, 22, 64, 23, 25, 52, 127, 22, 1, -97, 22, 1, 22,
-<a name="l05072"></a>05072 17, 0, 72, 43, 1, 1, 22, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 43, 53, 0, 0, 1, 0, -58,
-<a name="l05073"></a>05073 0, 0, 1, 122, 4, 38, 0, 3, 0, 106, -75, 2, 1, 6, 0, 10, 5, -72, -1, -28, 64, 16, 15, 15, 2,
-<a name="l05074"></a>05074 85, 5, -93, 2, 3, 37, 1, 0, 0, 32, 0, 2, 0, -72, -1, -28, -76, 16, 16, 2, 85, 0, -72, -1, -20,
-<a name="l05075"></a>05075 -76, 13, 15, 2, 85, 0, -72, -1, -16, -76, 12, 12, 2, 85, 0, -72, -1, -6, -76, 11, 11, 2, 85, 0, -72,
-<a name="l05076"></a>05076 -1, -4, 64, 16, 12, 12, 6, 85, 0, 29, 11, 11, 6, 85, 0, -93, 4, -22, -46, 24, 43, 16, -10, 43, 43,
-<a name="l05077"></a>05077 43, 43, 43, 43, 93, 60, -3, 60, -26, 43, 0, 63, 63, 60, 49, 48, 51, 17, 51, 17, -58, -76, 4, 38, -5,
-<a name="l05078"></a>05078 -38, 0, 1, 0, 25, 4, -86, 2, -110, 5, -62, 0, 6, 0, 73, 64, 20, 5, 6, 1, 0, 2, 16, 2, 2,
-<a name="l05079"></a>05079 2, -121, 0, 100, 4, 3, 0, 5, 60, 6, 61, 4, -72, -1, -64, 64, 17, 9, 12, 52, 4, 100, 0, 100, 3,
-<a name="l05080"></a>05080 127, 1, 60, 2, 25, 7, -87, 104, 24, 43, 25, 78, 16, -12, 24, 77, -3, 25, -10, 24, -3, -3, 43, 25, -10,
-<a name="l05081"></a>05081 24, -19, 0, 63, 60, -19, -3, 93, 60, 60, 60, 49, 48, 1, 7, 35, 19, 51, 19, 35, 1, 88, 113, -50, -40,
-<a name="l05082"></a>05082 -64, -31, -52, 5, 84, -86, 1, 24, -2, -24, 0, 0, 1, 0, 6, 4, -61, 2, -92, 5, -86, 0, 23, 0, -105,
-<a name="l05083"></a>05083 64, 17, -121, 14, 1, 64, 8, 18, 16, 7, 5, 4, 11, 23, 0, 58, 15, 63, 8, -72, 2, -72, -78, 19, 63,
-<a name="l05084"></a>05084 4, -72, 2, -76, 64, 25, 12, 0, 25, 23, 23, 26, 12, 118, 11, -127, 16, 77, 17, -99, 23, 118, 0, 127, 24,
-<a name="l05085"></a>05085 25, -32, 33, -77, 122, 24, 43, 43, -10, -3, -10, -28, -12, -3, 78, 69, 101, 68, -26, 0, 63, 77, -26, -20, -4,
-<a name="l05086"></a>05086 -3, -28, 1, 17, 18, 23, 57, 49, 48, 67, 121, 64, 44, 20, 22, 9, 14, 1, 3, 21, 37, 2, 38, 20, 3,
-<a name="l05087"></a>05087 22, 50, 0, 21, 22, 2, 1, 20, 3, 23, 50, 0, 9, 14, 11, 50, 1, 21, 2, 19, 50, 1, 22, 1, 19,
-<a name="l05088"></a>05088 50, 1, 10, 13, 8, 50, 0, 0, 43, 43, 43, 1, 43, 43, 16, 60, 16, 60, 43, 43, 43, -127, -127, -127, 1,
-<a name="l05089"></a>05089 93, 19, 38, 55, 54, 51, 50, 23, 22, 51, 50, 54, 55, 51, 6, 6, 35, 34, 39, 38, 35, 34, 7, 6, 23,
-<a name="l05090"></a>05090 7, 1, 58, 57, 89, 62, 107, 59, 35, 32, 34, 7, -126, 3, 109, 84, 63, 103, 67, 31, 34, 21, 22, 1, 4,
-<a name="l05091"></a>05091 -61, 104, 62, 62, 54, 30, 35, 52, 114, 114, 56, 36, 24, 24, 47, 0, 0, 1, 0, 29, 4, -53, 2, -115, 5,
-<a name="l05092"></a>05092 95, 0, 3, 0, 35, -71, 0, 1, -1, -64, 64, 15, 18, 20, 52, 1, 53, 0, 2, 26, 5, 0, 25, 4, -87,
-<a name="l05093"></a>05093 104, 24, 43, 78, 16, -28, 16, -26, 0, 47, 77, -19, 43, 49, 48, 19, 53, 33, 21, 29, 2, 112, 4, -53, -108,
-<a name="l05094"></a>05094 -108, 0, 1, 0, 46, 4, -75, 2, 125, 5, -72, 0, 13, 0, 75, -77, 85, 2, 1, 11, -72, 2, -97, 64, 12,
-<a name="l05095"></a>05095 16, 4, 127, 4, 2, 4, 7, 8, 8, 0, 0, 8, -69, 2, -97, 0, 7, 0, 0, 2, -97, 64, 15, 64, 1,
-<a name="l05096"></a>05096 -67, 4, -20, 32, 7, 25, 14, 16, 4, 1, -101, 65, 24, 43, 93, 78, 16, -12, 26, 25, 77, -3, -3, 26, 24,
-<a name="l05097"></a>05097 -19, 16, -19, 0, 63, 60, 16, 60, 47, 93, -19, 49, 48, 1, 93, 1, 51, 6, 6, 35, 34, 38, 39, 51, 22,
-<a name="l05098"></a>05098 22, 51, 50, 54, 2, 2, 123, 15, -103, 127, -128, -103, 15, 123, 14, 83, 70, 81, 83, 5, -72, 125, -122, -123, 126,
-<a name="l05099"></a>05099 68, 67, 65, 0, 0, 1, 0, -27, 4, -86, 1, -60, 5, -118, 0, 3, 0, 28, 64, 14, 2, 1, 3, 0, 60,
-<a name="l05100"></a>05100 1, 3, 60, 0, -53, 4, -39, -11, 24, 43, 16, -10, -19, 0, 47, -3, 60, 16, 60, 49, 48, 19, 53, 51, 21,
-<a name="l05101"></a>05101 -27, -33, 4, -86, -32, -32, 0, 2, 0, -94, 4, 127, 2, 10, 5, -19, 0, 11, 0, 23, 0, 86, 64, 14, 6,
-<a name="l05102"></a>05102 -124, 18, 77, 3, 77, 12, -124, 0, 108, 24, -98, 121, 24, 43, 16, -10, -3, 25, -12, -12, 24, -19, 0, -79, 6,
-<a name="l05103"></a>05103 2, 67, 84, 88, -78, 15, -124, 9, -72, -1, -64, 64, 9, 11, 14, 52, 9, 9, 21, -124, 3, 1, 63, -19, 51,
-<a name="l05104"></a>05104 47, 43, -3, 27, -76, 9, -124, 15, 77, 6, -72, 2, -76, -75, 0, 77, 21, -124, 3, 1, 63, -3, 25, -12, 24,
-<a name="l05105"></a>05105 -10, 25, -12, 24, -19, 89, 49, 48, 19, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50,
-<a name="l05106"></a>05106 54, 53, 52, 38, 35, 34, 6, -94, 107, 73, 74, 106, 106, 73, 75, 106, 76, 63, 43, 43, 63, 62, 44, 43, 63,
-<a name="l05107"></a>05107 5, 58, 73, 106, 107, 76, 77, 106, 107, 79, 47, 64, 64, 45, 45, 64, 63, 0, 0, 1, 0, 107, -2, 91, 2,
-<a name="l05108"></a>05108 28, 0, 23, 0, 21, 0, 65, -76, 11, 9, 12, 58, 9, -72, 2, -75, -75, 14, -100, 79, 0, 1, 0, -72, 2,
-<a name="l05109"></a>05109 90, 64, 15, 2, 1, 10, 12, 58, 11, -91, 6, 118, 18, 77, 1, 2, -100, 1, -72, 1, 62, -77, 22, 87, 121,
-<a name="l05110"></a>05110 24, 43, 16, -10, -3, 16, -12, -19, -12, -28, 0, 63, 60, -3, 113, -10, -19, -12, 16, 60, 49, 48, 23, 55, 51,
-<a name="l05111"></a>05111 7, 22, 22, 21, 20, 6, 35, 34, 39, 55, 22, 51, 50, 55, 54, 53, 52, 38, 38, -40, 52, -122, 33, 85, 86,
-<a name="l05112"></a>05112 -112, -111, 82, 62, 11, 64, 30, 94, 38, 29, 23, 62, -102, -79, 107, 10, 85, 52, 75, 115, 12, 117, 4, 26, 20,
-<a name="l05113"></a>05113 29, 18, 28, 20, 0, 2, 0, 58, 4, -86, 2, -5, 5, -62, 0, 3, 0, 7, 0, 65, 64, 33, 7, 4, 0,
-<a name="l05114"></a>05114 0, 3, 16, 3, 2, 3, -121, 6, 1, 5, 2, 0, 6, 60, 5, 114, 15, 4, 1, 4, -36, 0, 2, 60, 1,
-<a name="l05115"></a>05115 114, 0, 25, 8, 112, -71, 1, -112, 0, 24, 43, 78, 16, -12, 77, -12, -19, 16, -12, 93, -12, -3, 0, 63, 60,
-<a name="l05116"></a>05116 60, 60, 77, -3, 93, 60, 60, 60, 49, 48, 19, 19, 51, 3, 51, 19, 51, 3, 58, 121, -22, -45, -53, 127, -25,
-<a name="l05117"></a>05117 -49, 4, -86, 1, 24, -2, -24, 1, 24, -2, -24, 0, 0, 1, 0, -73, -2, 86, 2, 109, 0, 24, 0, 16, 0,
-<a name="l05118"></a>05118 85, 64, 9, -39, 2, 1, 14, 32, 13, 19, 52, 6, -72, -1, -64, -77, 25, 28, 52, 6, -72, 2, -97, 64, 14,
-<a name="l05119"></a>05119 12, 15, 0, 10, 8, 32, 9, 48, 9, 2, 9, 85, 18, 3, -72, -1, -64, 64, 14, 25, 28, 52, 3, -84, 15,
-<a name="l05120"></a>05120 1, -84, 0, 56, 15, -97, 17, -95, -71, 1, -122, 0, 24, 43, 16, -10, -12, -19, 16, -19, 43, 16, -10, 93, 60,
-<a name="l05121"></a>05121 0, 63, 63, -19, 43, 49, 48, 0, 43, 1, 93, 55, 51, 6, 21, 20, 22, 51, 50, 55, 21, 6, 6, 35, 34,
-<a name="l05122"></a>05122 38, 53, 52, -32, 124, 39, 82, 62, 77, 91, 52, 122, 45, 99, 120, 24, 89, 75, 68, 84, 46, 119, 27, 34, 120,
-<a name="l05123"></a>05123 101, 86, 0, 1, 0, 40, 4, -86, 2, -95, 5, -62, 0, 6, 0, 72, 64, 19, 5, 6, 1, 15, 2, 31, 2,
-<a name="l05124"></a>05124 2, 2, -121, 0, 100, 4, 3, 2, 60, 1, 61, 3, -72, -1, -64, 64, 17, 9, 12, 52, 3, 100, 0, 100, 4,
-<a name="l05125"></a>05125 127, 6, 60, 5, 25, 7, -101, 122, 24, 43, 25, 78, 16, -12, 24, 77, -3, 25, -10, 24, -3, -3, 43, 25, -10,
-<a name="l05126"></a>05126 24, -19, 0, 47, 60, -19, -3, 93, 60, 60, 60, 49, 48, 1, 55, 51, 3, 35, 3, 51, 1, 103, 110, -52, -31,
-<a name="l05127"></a>05127 -64, -40, -50, 5, 24, -86, -2, -24, 1, 24, 0, 1, 0, 0, 0, 0, 4, 43, 5, -70, 0, 13, 0, -77, 64,
-<a name="l05128"></a>05128 21, 0, 1, 8, 4, 13, 3, 4, 13, 2, 7, 6, 2, 7, 5, 10, 9, 1, 8, 5, 10, 7, -69, 1, 14,
-<a name="l05129"></a>05129 0, 8, 0, 2, 1, 14, -78, 1, 11, 10, -72, 1, 14, 64, 36, 12, 13, 8, 1, 1, 4, 8, 8, 10, 4,
-<a name="l05130"></a>05130 2, 32, 11, 1, 11, 84, 15, 7, 8, -35, 5, 10, 2, 1, 10, 101, 4, 1, 93, 13, 28, 16, 16, 2, 85,
-<a name="l05131"></a>05131 13, -72, -1, -14, -76, 15, 15, 2, 85, 13, -72, -1, -14, -76, 13, 13, 2, 85, 13, -72, -1, -6, -76, 10, 12,
-<a name="l05132"></a>05132 2, 85, 13, -72, -1, -10, -76, 12, 12, 6, 85, 13, -72, -1, -12, -73, 13, 13, 6, 85, 32, 13, 1, 13, -72,
-<a name="l05133"></a>05133 2, -78, -77, 14, 59, 92, 24, 43, 16, -3, 93, 43, 43, 43, 43, 43, 43, -26, 60, -19, 16, 60, 16, 60, -12,
-<a name="l05134"></a>05134 60, 16, -28, 93, 0, 63, 25, 18, 57, 47, 17, 57, 47, 24, 63, 60, -3, 60, 16, -19, 16, -19, 15, 15, 15,
-<a name="l05135"></a>05135 15, 49, 48, 19, 7, 53, 55, 17, 51, 17, 1, 21, 1, 17, 33, 21, 33, -111, -111, -111, -62, 1, 76, -2, -76,
-<a name="l05136"></a>05136 2, -40, -4, 102, 2, 53, 123, -89, 124, 2, -35, -3, -56, 1, 25, -89, -2, -25, -3, -46, -83, 0, 1, 0, 3,
-<a name="l05137"></a>05137 0, 0, 1, -65, 5, -70, 0, 11, 0, -61, 64, 72, 31, 13, 112, 13, -128, 13, -64, 13, -48, 13, -1, 13, 6,
-<a name="l05138"></a>05138 0, 1, 8, 4, 11, 3, 4, 11, 2, 7, 6, 2, 7, 5, 10, 9, 1, 8, 5, 10, 7, -55, 8, 2, -55,
-<a name="l05139"></a>05139 1, 10, 11, 10, 1, 1, 4, 8, 8, 10, 4, 0, 7, 8, 69, 5, 10, 2, 1, 10, 64, 4, -33, 1, 1,
-<a name="l05140"></a>05140 1, 78, 13, 54, 11, 11, 2, 85, 11, -72, -1, -8, -76, 16, 16, 2, 85, 11, -72, -1, -6, 64, 29, 14, 14,
-<a name="l05141"></a>05141 2, 85, 11, 4, 12, 12, 2, 85, 11, 10, 11, 11, 2, 85, 11, 20, 11, 11, 6, 85, 11, 8, 16, 16, 6,
-<a name="l05142"></a>05142 85, 11, -72, -1, -2, -76, 13, 13, 6, 85, 11, -72, -1, -5, 64, 17, 12, 12, 6, 85, 0, 11, 32, 11, -48,
-<a name="l05143"></a>05143 11, 3, 11, 78, 12, 71, 80, 24, 43, 16, -3, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -26, 93, 60, -19,
-<a name="l05144"></a>05144 16, 60, 16, 60, -12, 60, 0, 63, 25, 18, 57, 47, 17, 57, 47, 24, 63, 60, 16, -19, 16, -19, 15, 15, 15,
-<a name="l05145"></a>05145 15, 49, 48, 1, 93, 19, 7, 53, 55, 17, 51, 17, 55, 21, 7, 17, 35, -123, -126, -126, -77, -121, -121, -77, 2,
-<a name="l05146"></a>05146 62, 110, -98, 110, 2, -34, -3, -70, 115, -99, 115, -3, 41, -1, -1, 0, 92, -1, -25, 4, -21, 7, 38, 2, 38,
-<a name="l05147"></a>05147 0, 54, 0, 0, 1, 7, 0, -33, 1, 40, 1, 100, 0, 25, 64, 12, 1, -16, 49, 1, 49, 22, 18, 72, 43,
-<a name="l05148"></a>05148 1, 1, 52, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, 63, -1, -24, 3, -79, 5, -62,
-<a name="l05149"></a>05149 2, 38, 0, 86, 0, 0, 1, 7, 0, -33, 0, -108, 0, 0, 0, 25, 64, 12, 1, 112, 49, 1, 49, 21, 18,
-<a name="l05150"></a>05150 72, 43, 1, 1, 53, -71, 2, 34, 0, 41, 0, 43, 1, 43, 113, 53, 0, -1, -1, 0, 41, 0, 0, 4, -80,
-<a name="l05151"></a>05151 7, 38, 2, 38, 0, 61, 0, 0, 1, 7, 0, -33, 1, 20, 1, 100, 0, 22, 64, 10, 1, 0, 18, 15, 6,
-<a name="l05152"></a>05152 7, 65, 1, 1, 16, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 40, 0, 0, 3, -44, 5, -62,
-<a name="l05153"></a>05153 2, 38, 0, 93, 0, 0, 1, 7, 0, -33, 0, -72, 0, 0, 0, 41, -77, 1, 1, 1, 19, -70, 2, 34, 0,
-<a name="l05154"></a>05154 41, 1, 100, -123, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 20, 17, 6, 7, 65, 43, 27, -75, 0, 20,
-<a name="l05155"></a>05155 17, 6, 14, 65, 43, 89, 53, 0, 0, 2, 0, -68, -2, 81, 1, 89, 5, -45, 0, 3, 0, 7, 0, 79, -67,
-<a name="l05156"></a>05156 0, 2, 2, -82, 0, 7, 1, 101, 0, 6, 1, 126, 64, 35, 3, 0, 9, -95, 0, 3, 2, 0, 1, 1, 5,
-<a name="l05157"></a>05157 5, -97, 4, -81, 4, 2, 4, 118, 6, 7, 7, 32, 2, 1, 2, -95, 8, 8, 9, -43, 33, -95, -104, 24, 43,
-<a name="l05158"></a>05158 43, 78, 16, -12, 93, 60, 16, 60, 77, -3, 93, 60, 16, 60, 16, 60, 16, 60, 16, -18, 0, 63, 77, -3, -3,
-<a name="l05159"></a>05159 -26, 49, 48, 1, 17, 35, 17, 19, 17, 35, 17, 1, 89, -99, -99, -99, 5, -45, -4, -22, 3, 22, -5, -107, -4,
-<a name="l05160"></a>05160 -23, 3, 23, 0, 2, -1, -3, 0, 0, 5, 90, 5, -70, 0, 19, 0, 37, 1, 3, 64, 46, 67, 8, 35, 3,
-<a name="l05161"></a>05161 48, 36, 2, 2, 0, 32, 33, 30, 6, 5, 2, 21, 20, 30, 19, 0, 8, 36, 36, 38, 39, 27, 38, 13, 40,
-<a name="l05162"></a>05162 16, 16, 2, 85, 13, 14, 15, 15, 2, 85, 13, 20, 13, 13, 2, 85, 13, -72, -1, -8, -76, 12, 12, 2, 85,
-<a name="l05163"></a>05163 13, -72, -1, -8, -76, 11, 11, 2, 85, 13, -72, -1, -21, 64, 23, 12, 12, 6, 85, 0, 13, 1, 13, 26, 39,
-<a name="l05164"></a>05164 33, 20, 32, 5, 2, 57, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10,
-<a name="l05165"></a>05165 -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72,
-<a name="l05166"></a>05166 -1, -8, 64, 10, 13, 13, 6, 85, 0, 93, 38, 96, 91, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, -28, 60,
-<a name="l05167"></a>05167 -3, 60, 78, 16, -10, 93, 43, 43, 43, 43, 43, 43, 77, -19, 17, 18, 57, 47, 0, 63, 60, -3, 60, 63, 60,
-<a name="l05168"></a>05168 -3, 60, 18, 57, 47, 60, -3, 60, 49, 48, 67, 121, 64, 54, 7, 31, 11, 12, 10, 12, 9, 12, 8, 12, 4,
-<a name="l05169"></a>05169 6, 29, 28, 30, 28, 2, 6, 15, 14, 16, 14, 17, 14, 3, 6, 25, 26, 24, 26, 23, 26, 3, 6, 31, 7,
-<a name="l05170"></a>05170 27, 33, 1, 22, 18, 27, 33, 1, 28, 12, 32, 33, 1, 26, 14, 21, 33, 0, 43, 43, 1, 43, 43, 42, 42,
-<a name="l05171"></a>05171 42, 42, -127, 51, 17, 35, 53, 51, 17, 33, 50, 23, 22, 23, 22, 18, 21, 20, 2, 6, 7, 6, 35, 37, 33,
-<a name="l05172"></a>05172 50, 54, 55, 54, 54, 53, 52, 46, 2, 35, 33, 17, 33, 21, 33, -98, -95, -95, 1, -6, -86, 90, 126, 89, 116,
-<a name="l05173"></a>05173 115, -114, -58, -127, 71, -113, -2, -79, 1, 57, -110, -92, 48, 69, 78, 77, 124, -104, -99, -2, -52, 1, -108, -2, 108,
-<a name="l05174"></a>05174 2, -101, -124, 2, -101, 21, 29, 76, 98, -2, -49, -60, -32, -2, -67, -110, 31, 17, -83, 54, 48, 69, -24, -89, -84,
-<a name="l05175"></a>05175 -50, 124, 48, -2, 18, -124, 0, 2, 0, 73, -1, -25, 4, 33, 5, -70, 0, 28, 0, 40, 1, -110, 64, 109, 15,
-<a name="l05176"></a>05176 25, 31, 25, 55, 3, 58, 30, 86, 3, 93, 28, 6, 4, 0, 20, 0, 42, 5, 36, 24, 93, 0, 5, 50, 8,
-<a name="l05177"></a>05177 2, 3, 3, 1, 24, 24, 22, 6, 6, 7, 25, 25, 5, 27, 27, 0, 26, 3, 3, 3, 1, 27, 27, 0, 26,
-<a name="l05178"></a>05178 26, 4, 28, 27, 27, 0, 24, 23, 21, 6, 2, 5, 29, 35, 21, 18, 32, 24, 23, 6, 2, 4, 0, 25, 27,
-<a name="l05179"></a>05179 26, 25, 4, 3, 1, 0, 7, 35, 5, 8, 29, 27, 26, 5, 3, 4, 0, 25, 32, 28, 32, 18, 48, 18, 2,
-<a name="l05180"></a>05180 18, -113, 25, 4, 1, 0, 0, 25, -72, -1, -64, 64, 13, 14, 14, 2, 85, 25, 7, 38, 28, 11, 11, 29, 36,
-<a name="l05181"></a>05181 8, -72, -1, -20, -76, 15, 15, 2, 85, 8, -72, -1, -10, -76, 13, 13, 2, 85, 8, -72, -1, -30, -76, 11, 11,
-<a name="l05182"></a>05182 2, 85, 8, -72, -1, -16, -76, 11, 11, 6, 85, 8, -72, -1, -23, -76, 13, 13, 6, 85, 8, -72, -1, -16, -76,
-<a name="l05183"></a>05183 15, 15, 6, 85, 8, -72, -1, -26, 64, 54, 12, 12, 6, 85, 8, 26, 42, 35, 36, 15, 10, 15, 15, 2, 85,
-<a name="l05184"></a>05184 15, 30, 12, 12, 2, 85, 15, 20, 11, 11, 6, 85, 15, 27, 13, 13, 6, 85, 15, 8, 16, 16, 6, 85, 15,
-<a name="l05185"></a>05185 32, 12, 12, 6, 85, 31, 15, 1, 15, 25, 41, 52, 55, 24, 43, 78, 16, -12, 93, 43, 43, 43, 43, 43, 43,
-<a name="l05186"></a>05186 77, -19, 78, 16, -10, 43, 43, 43, 43, 43, 43, 43, 77, -19, 0, 63, -19, 63, 43, 63, 60, 60, 16, -10, 93,
-<a name="l05187"></a>05187 -19, 17, 18, 23, 57, 1, 17, 18, 57, 18, 23, 57, 0, 17, 18, 23, 57, 17, 18, 57, 1, 17, 18, 23, 57,
-<a name="l05188"></a>05188 7, 16, 14, 60, 7, 16, 8, 60, 8, 60, -121, 8, 60, -121, 16, 8, 125, -60, 8, 60, 7, 16, 14, 60, -79,
-<a name="l05189"></a>05189 6, 2, 67, 84, 88, -74, 9, 24, 26, 24, 89, 24, 3, 0, 93, 89, 49, 48, 24, 67, 121, 64, 36, 33, 40,
-<a name="l05190"></a>05190 9, 17, 13, 37, 33, 17, 35, 29, 0, 37, 12, 35, 29, 0, 39, 10, 29, 29, 1, 34, 16, 32, 29, 1, 36,
-<a name="l05191"></a>05191 14, 38, 29, 0, 40, 9, 38, 29, 0, 0, 43, 43, 43, 1, 43, 43, 43, 43, -127, -127, 1, 93, 0, 93, 1,
-<a name="l05192"></a>05192 51, 22, 23, 55, 23, 7, 0, 17, 20, 0, 35, 34, 39, 38, 53, 16, 0, 51, 50, 22, 23, 38, 38, 39, 5,
-<a name="l05193"></a>05193 39, 55, 38, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 52, -39, 72, 53, -42, 45, -84, 1, 64,
-<a name="l05194"></a>05194 -2, -22, -41, -1, -113, 93, 1, 2, -62, 58, 88, 66, 36, 54, 52, -2, -19, 44, -17, 97, 1, -60, -75, -124, -126,
-<a name="l05195"></a>05195 -86, -81, -125, -128, -77, 5, -70, 54, 48, 102, 102, 83, -2, -112, -2, 120, -3, -2, -37, -62, 127, -35, 1, 5, 1,
-<a name="l05196"></a>05196 28, 24, 35, 73, 81, 59, 127, 103, 109, 90, -4, -94, -64, -53, -53, -47, -62, -60, -49, -1, -1, 0, 6, 0, 0,
-<a name="l05197"></a>05197 5, 70, 7, 44, 2, 38, 0, 60, 0, 0, 1, 7, 0, -115, 1, 77, 1, 106, 0, 24, 64, 10, 1, 1, 16,
-<a name="l05198"></a>05198 6, 26, 72, 39, 1, 1, 16, -70, 2, 33, 0, 41, 1, 100, -123, 0, 43, 1, 43, -1, -1, 0, 33, -2, 81,
-<a name="l05199"></a>05199 3, -18, 5, -62, 2, 38, 0, 92, 0, 0, 1, 7, 0, -115, 0, -58, 0, 0, 0, 31, 64, 17, 1, 0, 30,
-<a name="l05200"></a>05200 1, -112, 30, -32, 30, 2, 30, 15, 34, 72, 43, 1, 1, 30, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 113,
-<a name="l05201"></a>05201 53, 0, 0, 2, 0, -98, 0, 0, 4, -3, 5, -70, 0, 15, 0, 26, 0, -95, 64, 22, 16, 26, 20, 15, 16,
-<a name="l05202"></a>05202 30, 14, -38, 0, 25, 26, 30, 4, 3, -38, 1, 2, 0, 8, 20, 38, 10, -72, -1, -16, -76, 13, 13, 6, 85,
-<a name="l05203"></a>05203 10, -72, -1, -16, -76, 12, 12, 6, 85, 10, -72, -1, -22, 64, 23, 11, 11, 6, 85, 16, 10, 32, 10, 2, 10,
-<a name="l05204"></a>05204 46, 28, 2, 15, 32, 1, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10,
-<a name="l05205"></a>05205 -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -16, -76, 13, 13, 6, 85, 0, -72,
-<a name="l05206"></a>05206 -1, -6, 64, 13, 12, 12, 6, 85, 32, 0, 1, 0, 93, 27, 59, 92, 24, 43, 16, -10, 93, 43, 43, 43, 43,
-<a name="l05207"></a>05207 43, 43, 60, -3, 60, 16, -10, 93, 43, 43, 43, -19, 0, 63, 63, -12, 60, -3, 60, 16, -12, -19, 1, 17, 18,
-<a name="l05208"></a>05208 57, 57, 49, 48, 51, 17, 51, 17, 33, 50, 23, 30, 2, 21, 20, 2, 33, 33, 17, 17, 33, 50, 54, 53, 52,
-<a name="l05209"></a>05209 38, 39, 38, 35, 33, -98, -62, 1, 103, -110, 78, 108, -110, 88, -18, -2, -55, -2, -120, 1, 123, -68, -98, 92, 76,
-<a name="l05210"></a>05210 49, -123, -2, -119, 5, -70, -2, -42, 14, 19, 101, -74, 109, -70, -2, -3, -2, -42, 1, -41, -116, 126, 91, -124, 21,
-<a name="l05211"></a>05211 14, 0, 0, 2, 0, -121, -2, 105, 4, 33, 5, -70, 0, 20, 0, 32, 1, 37, 64, 41, 72, 32, 87, 4, 88,
-<a name="l05212"></a>05212 18, 102, 4, 104, 18, -21, 32, 6, 55, 31, 1, 41, 8, 21, 20, 0, 19, 24, 15, 3, 7, 1, 0, 30, 28,
-<a name="l05213"></a>05213 7, 7, 24, 28, 15, 11, 0, 14, 27, 36, 11, -72, -1, -14, 64, 11, 15, 15, 2, 85, 11, 18, 13, 13, 2,
-<a name="l05214"></a>05214 85, 11, -72, -1, -6, 64, 11, 12, 12, 2, 85, 11, 6, 11, 11, 2, 85, 11, -72, -1, -14, -76, 11, 11, 6,
-<a name="l05215"></a>05215 85, 11, -72, -1, -28, -76, 12, 12, 6, 85, 11, -72, -1, -6, -76, 13, 13, 6, 85, 11, -72, -1, -5, 64, 14,
-<a name="l05216"></a>05216 16, 16, 6, 85, 11, 26, 34, 2, 3, 19, 20, 37, 1, 0, -72, -1, -4, 64, 23, 14, 14, 2, 85, 0, 16,
-<a name="l05217"></a>05217 13, 13, 2, 85, 0, 16, 12, 12, 2, 85, 0, 16, 11, 11, 2, 85, 0, -72, -1, -10, -76, 16, 16, 6, 85,
-<a name="l05218"></a>05218 0, -72, -1, -4, 64, 35, 15, 15, 6, 85, 0, 18, 13, 13, 6, 85, 0, 12, 12, 12, 6, 85, 0, 12, 11,
-<a name="l05219"></a>05219 11, 6, 85, 31, 0, 63, 0, 79, 0, 3, 0, 25, 33, 71, 55, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43,
-<a name="l05220"></a>05220 43, 43, 43, 43, 60, -3, 60, 60, 60, 78, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 77, -19, 0, 63, 63,
-<a name="l05221"></a>05221 -19, 63, -19, 63, 17, 57, 17, 18, 57, 1, 17, 18, 57, 49, 48, 67, 121, 64, 28, 25, 29, 8, 14, 9, 37,
-<a name="l05222"></a>05222 13, 38, 29, 8, 27, 29, 1, 25, 14, 27, 29, 1, 28, 10, 30, 29, 1, 26, 12, 24, 29, 0, 0, 43, 43,
-<a name="l05223"></a>05223 1, 43, 43, 43, 43, -127, -127, 1, 93, 0, 93, 19, 17, 51, 17, 54, 55, 54, 51, 50, 22, 22, 21, 20, 2,
-<a name="l05224"></a>05224 6, 35, 34, 39, 38, 39, 17, 3, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, -121, -76, 73, 55, 72, 92,
-<a name="l05225"></a>05225 -120, -48, 106, 117, -33, 122, 83, 71, 54, 72, 17, -90, 118, 120, -85, -89, 116, 115, -79, -2, 105, 7, 81, -3, -4,
-<a name="l05226"></a>05226 77, 25, 34, -116, -1, -104, -92, -2, -4, -117, 33, 26, 75, -3, -5, 3, -92, -51, -60, -53, -43, -53, -54, -41, 0,
-<a name="l05227"></a>05227 0, 1, 0, 114, 2, 127, 4, 58, 3, 39, 0, 3, 0, 26, 64, 12, 2, 37, 0, 0, 26, 5, 1, 25, 4,
-<a name="l05228"></a>05228 87, 90, 24, 43, 78, 16, -28, 16, -10, 0, 47, 77, -19, 49, 48, 1, 33, 53, 33, 4, 58, -4, 56, 3, -56,
-<a name="l05229"></a>05229 2, 127, -88, 0, 0, 1, 0, -95, 1, 32, 4, 9, 4, -120, 0, 11, 1, 32, -75, 39, 4, 1, 36, 4, 1,
-<a name="l05230"></a>05230 -79, 6, 2, 67, 84, 88, 64, 17, 11, 10, 3, 17, 3, 35, 3, 73, 3, 85, 3, 102, 3, -123, 3, 7, 3,
-<a name="l05231"></a>05231 0, 47, 93, 51, 48, 27, -80, 124, 75, 83, 88, 64, 23, 30, 17, 10, 6, 11, 2, 9, 7, 6, 11, 3, 8,
-<a name="l05232"></a>05232 4, 3, 8, 0, 5, 1, 0, 5, 2, 9, 5, -69, 2, 119, 0, 6, 0, 3, 2, 119, -77, 2, 7, 1, 9,
-<a name="l05233"></a>05233 -69, 2, 119, 0, 8, 0, 11, 2, 119, 64, 24, 0, 6, 2, -108, 42, 1, 1, 1, -108, 8, 48, 0, -112, 0,
-<a name="l05234"></a>05234 2, 63, 0, 80, 0, 2, 0, 10, 4, 8, 65, 10, 2, -110, 0, 9, 0, 6, 2, -110, 0, 5, 0, 2, 2,
-<a name="l05235"></a>05235 -110, 0, 3, 0, 0, 2, -110, 64, 22, 11, 9, 5, -108, 4, -108, 3, -80, 11, -64, 11, 2, -97, 11, 1, 32,
-<a name="l05236"></a>05236 11, 1, 11, -4, 12, -98, -71, 1, -127, 0, 24, 43, 16, -10, 93, 93, 93, 60, 25, -4, -4, 60, 24, 16, -20,
-<a name="l05237"></a>05237 16, -20, 16, -20, 16, -20, 16, 60, 0, 47, 93, 113, 60, 25, -4, 93, -4, 60, 24, 16, -20, 16, -20, 16, 60,
-<a name="l05238"></a>05238 16, -20, 16, -20, 15, 15, 15, 15, 75, 83, 88, -78, 6, 42, 8, -66, -1, -42, 0, 7, -1, -32, 0, 3, -1,
-<a name="l05239"></a>05239 -32, 0, 11, -1, -32, 64, 13, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 1, 23, 56, 56, 56,
-<a name="l05240"></a>05240 56, 0, 56, 56, 89, 75, 81, 88, 64, 9, 2, 1, 10, 9, 0, 4, 5, 4, 7, 1, 23, 56, 89, 89, 89,
-<a name="l05241"></a>05241 49, 48, 0, 93, 1, 93, 19, 1, 1, 55, 1, 1, 23, 1, 1, 7, 1, 1, -95, 1, 59, -2, -58, 122, 1,
-<a name="l05242"></a>05242 58, 1, 57, 120, -2, -56, 1, 58, 122, -2, -58, -2, -59, 1, -103, 1, 59, 1, 58, 122, -2, -58, 1, 57, 121,
-<a name="l05243"></a>05243 -2, -57, -2, -58, 122, 1, 58, -2, -59, 0, 0, 1, 0, 107, 2, -35, 1, -36, 5, -52, 0, 9, 0, 80, 64,
-<a name="l05244"></a>05244 16, 1, 34, 18, 57, 3, 34, 18, 57, 7, 8, 0, 1, 4, 3, 9, 0, -72, 1, 31, -77, 8, 3, -24, 4,
-<a name="l05245"></a>05245 -72, 2, -93, 64, 15, 7, 7, 8, 1, 8, 9, 53, 1, 0, -53, 4, 3, 117, 10, 87, -71, 1, 47, 0, 24,
-<a name="l05246"></a>05246 43, 16, -10, 60, -10, 60, -3, 60, 0, 63, 60, 16, -12, -19, 16, -3, 60, 17, 18, 57, 1, 17, 18, 57, 49,
-<a name="l05247"></a>05247 48, 0, 43, 43, 1, 17, 6, 7, 53, 54, 54, 55, 51, 17, 1, 75, 102, 122, 62, -104, 47, 108, 2, -35, 2,
-<a name="l05248"></a>05248 42, 81, 32, 123, 20, 106, 61, -3, 17, 0, 1, 0, 25, 2, -35, 2, -120, 5, -52, 0, 28, 0, -126, 64, 27,
-<a name="l05249"></a>05249 3, 4, 12, 24, 2, 117, 24, -27, 23, -27, 24, -4, 3, 4, 10, 5, 1, 26, 25, 24, 3, 7, 13, 24, 25,
-<a name="l05250"></a>05250 18, 26, -70, 2, 97, 0, 28, 1, 31, -74, 17, 13, 39, 63, 14, 1, 14, -70, 2, -72, 0, 10, 2, 97, 64,
-<a name="l05251"></a>05251 20, 17, 1, 27, 28, 58, 7, 41, 20, -65, 0, 13, 41, 14, 39, 0, 25, 29, -87, 104, 24, 43, 78, 16, -12,
-<a name="l05252"></a>05252 77, -12, -19, 16, -3, -19, -12, 60, 0, 63, -3, -12, 93, -28, 16, -3, -3, 17, 57, 57, 1, 17, 18, 23, 57,
-<a name="l05253"></a>05253 -79, 6, 2, 67, 84, 88, -75, 24, 17, 28, 3, 17, 26, 0, 17, 18, 57, 17, 18, 57, 89, 49, 48, 1, 113,
-<a name="l05254"></a>05254 93, 0, 113, 19, 54, 55, 54, 36, 55, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20,
-<a name="l05255"></a>05255 7, 6, 7, 6, 7, 33, 21, 25, 6, 41, 63, 1, 32, 27, 37, 70, 68, 66, 65, 21, -105, 29, -113, -122, -105,
-<a name="l05256"></a>05256 -115, 59, 45, -96, 83, 35, 1, -126, 2, -35, 57, 57, 86, -47, 30, 41, 43, 48, 62, 47, 67, 16, 111, 105, 118,
-<a name="l05257"></a>05257 85, 84, 75, 56, 115, 61, 36, 121, 0, 1, 0, 33, 2, -53, 2, -122, 5, -52, 0, 43, 0, 118, 64, 17, 35,
-<a name="l05258"></a>05258 8, 16, 19, 35, 16, 77, 15, 15, 22, 5, 1, 39, 48, 0, 1, 0, -68, 2, -72, 0, 5, 2, 97, 0, 41,
-<a name="l05259"></a>05259 1, 31, 64, 12, 29, 25, 39, 95, 26, 111, 26, 2, 63, 26, 1, 26, -70, 2, -72, 0, 22, 2, 97, 64, 25,
-<a name="l05260"></a>05260 29, 1, 15, -96, 19, 41, 32, 39, 8, 41, 38, -33, 0, 25, 41, 26, 39, 1, 41, 0, 25, 44, -87, 104, 24,
-<a name="l05261"></a>05261 43, 78, 16, -12, 77, -19, -12, -19, 16, -3, -19, -12, -3, -12, 0, 63, -3, -12, 93, 114, -28, 16, -3, -3, -12,
-<a name="l05262"></a>05262 93, -28, 17, 18, 57, 47, -4, 57, 1, 18, 57, 17, 57, 49, 48, 19, 55, 22, 23, 22, 51, 50, 54, 53, 52,
-<a name="l05263"></a>05263 38, 35, 34, 7, 6, 35, 55, 22, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 6,
-<a name="l05264"></a>05264 7, 22, 22, 21, 20, 6, 35, 34, 38, 33, -110, 20, 32, 43, 59, 71, 86, 72, 87, 12, 21, 14, 8, 22, 81,
-<a name="l05265"></a>05265 75, 60, 59, 56, 63, 23, -113, 41, 125, 120, -112, -125, 71, 67, 89, 84, -98, -110, -116, -108, 3, -95, 15, 60, 22,
-<a name="l05266"></a>05266 30, 78, 55, 50, 60, 2, 1, 110, 1, 60, 43, 37, 52, 44, 58, 23, 106, 84, 107, 80, 55, 86, 19, 22, 101,
-<a name="l05267"></a>05267 68, 93, -118, 111, 0, 3, 0, 107, -1, -57, 6, -120, 5, -45, 0, 3, 0, 13, 0, 42, 1, 0, 64, 26, 6,
-<a name="l05268"></a>05268 17, 1, -10, 17, 1, 47, 44, 51, 33, 63, 38, 68, 33, 84, 33, -84, 40, -68, 40, -20, 40, 8, 2, 3, 3,
-<a name="l05269"></a>05269 -72, 2, -102, 64, 33, 0, 1, 20, 0, 0, 1, 40, 41, 15, 16, 17, 3, 27, 14, 0, 3, 1, 2, 4, 44,
-<a name="l05270"></a>05270 43, 11, 12, 4, 5, 8, 7, 28, 24, 27, 7, -24, 8, -72, 2, -93, -78, 11, 4, 13, -72, 1, 31, 64, 16,
-<a name="l05271"></a>05271 11, 12, 58, 2, 1, 1, 31, 27, 47, 27, 63, 27, 3, 27, 77, 24, -65, 2, 97, 0, 31, 1, 31, 0, 40,
-<a name="l05272"></a>05272 2, 97, 0, 14, 0, 41, 2, 97, 64, 11, 42, 42, 14, 39, 0, 0, 3, 9, 14, 39, 27, -70, 2, 99, 0,
-<a name="l05273"></a>05273 28, 1, 29, 64, 19, 21, 41, 34, 58, 42, 42, 41, 105, 44, 5, 4, 12, 13, 41, 4, 8, 7, -53, 4, -72,
-<a name="l05274"></a>05274 1, 68, -77, 43, 87, 104, 24, 43, 16, -10, -10, 60, 16, -3, 60, 16, 60, 16, -10, 60, 16, -12, -19, -3, -19,
-<a name="l05275"></a>05275 -28, 0, 63, 60, 16, -12, 60, 16, -19, 16, -19, -3, -3, -12, 93, 63, 60, -12, 60, -3, 60, 16, -12, -3, 17,
-<a name="l05276"></a>05276 18, 57, 17, 18, 57, 1, 17, 18, 57, 17, 18, 23, 57, 17, 18, 23, 57, 17, 57, -121, 46, 43, 125, 16, -60,
-<a name="l05277"></a>05277 -79, 6, 2, 67, 84, 88, -75, 38, 31, 42, 17, 31, 41, 0, 17, 18, 57, 17, 18, 57, 89, 49, 48, 1, 93,
-<a name="l05278"></a>05278 0, 93, 113, 23, 1, 51, 1, 3, 17, 6, 7, 53, 54, 54, 55, 51, 17, 1, 54, 55, 54, 36, 55, 54, 53,
-<a name="l05279"></a>05279 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 7, 6, 7, 6, 7, 33, 21, -28, 4, 77, -99,
-<a name="l05280"></a>05280 -5, -77, 54, 102, 122, 62, -104, 47, 108, 2, 61, 6, 42, 62, 1, 32, 27, 37, 69, 69, 66, 65, 21, -105, 29,
-<a name="l05281"></a>05281 -112, -123, -105, -115, 59, 45, -97, 84, 35, 1, -126, 57, 6, 12, -7, -12, 3, 22, 2, 42, 81, 32, 123, 20, 106,
-<a name="l05282"></a>05282 61, -3, 17, -3, 4, 56, 57, 87, -48, 31, 41, 43, 48, 61, 47, 66, 15, 112, 105, 118, 85, 84, 75, 56, 116,
-<a name="l05283"></a>05283 61, 35, 121, 0, 0, 4, 0, 107, -1, -57, 6, -114, 5, -45, 0, 3, 0, 13, 0, 24, 0, 27, 1, 1, 64,
-<a name="l05284"></a>05284 32, 22, 17, 1, 32, 1, 32, 2, 41, 17, 43, 27, 58, 17, 58, 27, 86, 0, 102, 0, -122, 27, 9, 27, 27,
-<a name="l05285"></a>05285 102, 27, 118, 27, 3, 1, 0, 0, -72, 2, -102, 64, 29, 3, 2, 20, 3, 3, 2, 11, 12, 4, 0, 3, 1,
-<a name="l05286"></a>05286 2, 4, 29, 28, 27, 17, 18, 24, 14, 26, 17, 18, 27, 5, 7, -24, 8, -72, 2, -93, -78, 11, 4, 13, -72,
-<a name="l05287"></a>05287 1, 31, 64, 21, 12, 12, 11, 2, 11, 58, 1, 1, 22, 23, 23, 16, 15, 27, 25, 21, 20, 20, 25, 100, 15,
-<a name="l05288"></a>05288 -72, 2, -80, -78, 14, 19, 18, -72, 1, 31, 64, 45, 24, 24, 14, 0, 3, 39, 14, 11, 26, 53, 19, 27, -7,
-<a name="l05289"></a>05289 17, 17, 95, 16, 1, 16, -18, 14, 53, 19, 22, 77, 32, 24, 1, 24, -84, 29, 12, 13, 53, 5, 4, 8, 7,
-<a name="l05290"></a>05290 -53, 32, 4, 1, 4, 25, 28, -69, 1, -95, 0, 104, 0, 24, 1, 14, -123, 43, 78, 16, -12, 93, 77, -10, 60,
-<a name="l05291"></a>05291 16, 60, -3, 60, 16, -10, 93, -28, 60, -19, -3, 93, 60, 16, -19, 16, -19, 0, 63, -12, 60, 16, 60, 16, -3,
-<a name="l05292"></a>05292 60, 16, -12, -3, 60, 16, 60, 16, 60, 16, 60, 60, 16, 60, 63, -28, 60, 16, 60, 16, -3, 60, 16, -12, -3,
-<a name="l05293"></a>05293 57, 17, 18, 57, 57, 1, 17, 18, 57, 18, 57, 17, 18, 23, 57, 17, 18, 57, -121, 46, 43, 125, 16, -60, 49,
-<a name="l05294"></a>05294 48, 1, 93, 93, 0, 93, 23, 1, 51, 1, 3, 17, 6, 7, 53, 54, 54, 55, 51, 17, 1, 53, 33, 53, 1,
-<a name="l05295"></a>05295 51, 17, 51, 21, 35, 21, 3, 17, 3, -4, 4, 78, -100, -5, -77, 78, 102, 122, 62, -104, 47, 108, 3, -70, -2,
-<a name="l05296"></a>05296 -127, 1, -107, 122, 104, 104, -112, -26, 57, 6, 12, -7, -12, 3, 22, 2, 42, 81, 32, 123, 20, 106, 61, -3, 17,
-<a name="l05297"></a>05297 -3, 4, -102, 123, 1, -38, -2, 23, 108, -102, 1, 6, 1, 7, -2, -7, 0, 4, 0, 33, -1, -57, 6, -114, 5,
-<a name="l05298"></a>05298 -45, 0, 3, 0, 45, 0, 56, 0, 59, 1, 51, -75, 47, 61, 1, 2, 3, 3, -72, 2, -102, 64, 39, 0, 1,
-<a name="l05299"></a>05299 20, 0, 0, 1, 18, 21, 17, 0, 3, 1, 2, 4, 61, 60, 37, 12, 21, 50, 51, 58, 37, 17, 18, 5, 4,
-<a name="l05300"></a>05300 9, 49, 58, 50, 48, 18, 77, 17, 17, 24, 9, 5, -72, 2, -86, 64, 11, 16, 4, 32, 4, 48, 4, 3, 4,
-<a name="l05301"></a>05301 -111, 9, 27, -72, 2, -86, 64, 23, 31, 28, 47, 28, 63, 28, 3, 127, 28, 1, 95, 28, 111, 28, 2, 95, 28,
-<a name="l05302"></a>05302 111, 28, 2, 28, -111, 24, -67, 2, 97, 0, 31, 0, 9, 2, 97, 0, 43, 1, 31, 64, 18, 31, 51, 2, 1,
-<a name="l05303"></a>05303 1, 53, 52, 52, 57, 54, 55, 55, 47, 59, 57, 100, 48, 47, -72, 2, -79, -78, 46, 51, 50, -72, 1, 31, 64,
-<a name="l05304"></a>05304 9, 56, 56, 46, 3, 0, -113, 46, 11, 17, -72, 2, 48, 64, 29, 21, 59, -7, 49, 49, 48, -18, 56, 58, 53,
-<a name="l05305"></a>05305 51, 54, -111, 51, 46, 41, 56, 78, 61, 21, 41, 34, 34, 12, 41, 48, 40, 1, 40, -72, 2, 40, 64, 13, 4,
-<a name="l05306"></a>05306 27, 41, 28, 34, 5, 41, 4, 25, 60, 124, 102, 24, 43, 78, 16, -12, 77, -19, -12, -19, 16, -3, 93, -19, -12,
-<a name="l05307"></a>05307 -19, 16, -10, -19, 60, -28, 16, -19, 16, -3, 60, 16, -19, 16, -12, 0, 63, -10, 60, 16, 60, 16, -3, 60, 16,
-<a name="l05308"></a>05308 -12, 60, -3, 60, 16, 60, 16, 60, 16, 60, 16, 60, 63, 60, -12, -3, -19, 16, -3, -12, 114, 113, 113, 93, -28,
-<a name="l05309"></a>05309 16, -12, 93, -28, 17, 18, 57, 47, -4, 17, 18, 57, 57, 17, 18, 57, 17, 18, 57, 1, 17, 18, 57, 17, 18,
-<a name="l05310"></a>05310 57, 17, 18, 23, 57, 17, 18, 57, -121, 46, 43, 125, 16, -60, 49, 48, 1, 93, 23, 1, 51, 1, 1, 55, 22,
-<a name="l05311"></a>05311 23, 22, 51, 50, 54, 53, 52, 38, 35, 6, 35, 55, 22, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51,
-<a name="l05312"></a>05312 50, 22, 21, 20, 6, 7, 22, 22, 21, 20, 6, 35, 34, 38, 1, 53, 33, 53, 1, 51, 17, 51, 21, 35, 21,
-<a name="l05313"></a>05313 3, 17, 3, -4, 4, 77, -99, -5, -77, -2, -120, -110, 20, 32, 43, 59, 71, 86, 72, 84, 50, 8, 22, 81, 75,
-<a name="l05314"></a>05314 60, 59, 56, 63, 23, -113, 41, 125, 120, -112, -125, 71, 67, 89, 84, -98, -110, -116, -108, 5, 95, -2, -126, 1, -108,
-<a name="l05315"></a>05315 123, 104, 104, -111, -27, 57, 6, 12, -7, -12, 3, -38, 15, 60, 22, 30, 78, 55, 50, 60, 3, 110, 1, 60, 43,
-<a name="l05316"></a>05316 37, 52, 44, 58, 23, 106, 84, 107, 80, 55, 86, 19, 22, 101, 68, 93, -118, 111, -4, -89, -102, 123, 1, -38, -2,
-<a name="l05317"></a>05317 23, 108, -102, 1, 6, 1, 7, -2, -7, 0, 0, 1, 0, 0, 0, 0, 4, 13, 5, -70, 0, 17, 0, -65, 64,
-<a name="l05318"></a>05318 20, 7, 30, 5, 5, 4, 9, 30, 11, 64, 11, 11, 2, 85, 11, 64, 17, 17, 2, 85, 11, -72, 2, 49, 64,
-<a name="l05319"></a>05319 53, 14, 30, 12, 30, 2, 30, 0, 64, 13, 13, 2, 85, 0, -122, 16, 17, 4, 2, 17, 0, 14, 13, -91, 10,
-<a name="l05320"></a>05320 10, 9, 77, 6, 6, 5, 106, 19, 7, 8, 11, 12, 15, 16, 32, 4, 3, 0, 17, 2, 1, 118, 17, 28, 16,
-<a name="l05321"></a>05321 16, 2, 85, 17, -72, -1, -18, -76, 15, 15, 2, 85, 17, -72, -1, -14, -76, 13, 13, 2, 85, 17, -72, -1, -10,
-<a name="l05322"></a>05322 -76, 12, 12, 2, 85, 17, -72, -1, -4, -76, 11, 11, 2, 85, 17, -72, -1, -14, -76, 12, 12, 6, 85, 17, -72,
-<a name="l05323"></a>05323 -1, -16, 64, 10, 13, 13, 6, 85, 17, -97, 18, -95, -89, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, -12,
-<a name="l05324"></a>05324 60, 16, 60, 60, 60, -3, 60, 60, 60, 60, 60, 16, -10, 60, 16, -12, 60, 16, -12, 60, 0, 63, 63, 16, 60,
-<a name="l05325"></a>05325 -12, 43, -19, -3, -19, -2, 43, 43, -19, 16, 60, 16, -19, 49, 48, 55, 35, 53, 51, 17, 33, 21, 33, 17, 33,
-<a name="l05326"></a>05326 21, 33, 17, 33, 21, 33, 21, 35, -88, -88, -88, 3, 101, -3, 93, 2, 56, -3, -56, 1, 59, -2, -59, -62, -10,
-<a name="l05327"></a>05327 -107, 4, 47, -83, -2, 58, -83, -2, -15, -107, -10, 0, -1, -1, 0, 109, -1, -25, 5, -71, 7, 23, 2, 38, 0,
-<a name="l05328"></a>05328 42, 0, 0, 1, 7, 0, -39, 2, 14, 1, 95, 0, 44, -77, 1, 1, 1, 42, -71, 2, 33, 0, 41, 0, 43,
-<a name="l05329"></a>05329 1, -79, 6, 2, 67, 84, 88, -75, 0, 45, 39, 14, 14, 65, 43, 27, 64, 10, 112, 42, -96, 42, 2, 42, 14,
-<a name="l05330"></a>05330 0, 104, 43, 43, 93, 89, 53, -1, -1, 0, 66, -2, 81, 3, -22, 5, -72, 2, 38, 0, 74, 0, 0, 1, 7,
-<a name="l05331"></a>05331 0, -39, 0, -28, 0, 0, 0, 25, 64, 12, 2, -64, 47, 1, 47, 19, 44, 104, 43, 2, 1, 47, -71, 2, 34,
-<a name="l05332"></a>05332 0, 41, 0, 43, 1, 43, 113, 53, 0, -1, -1, 0, -79, 0, 0, 1, -112, 6, -12, 2, 38, 0, 44, 0, 0,
-<a name="l05333"></a>05333 1, 7, 0, -38, -1, -52, 1, 106, 0, 39, -78, 1, 1, 7, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2,
-<a name="l05334"></a>05334 67, 84, 88, -74, 1, 0, 5, 6, 1, 2, 65, 43, 53, 27, -74, 1, 1, 7, 2, 9, 72, 39, 43, 89, 0,
-<a name="l05335"></a>05335 -1, -1, 0, 92, -2, 101, 4, -21, 5, -45, 2, 38, 0, 54, 0, 0, 1, 7, 0, -36, 1, 83, 0, 10, 0,
-<a name="l05336"></a>05336 32, 64, 22, 1, 31, 51, 1, -64, 51, -16, 51, 2, -112, 51, 1, 51, 45, 25, 72, 43, 1, 1, 50, 8, 41,
-<a name="l05337"></a>05337 0, 43, 1, 43, 93, 93, 113, 53, -1, -1, 0, 63, -2, 111, 3, -79, 4, 62, 2, 38, 0, 86, 0, 0, 1,
-<a name="l05338"></a>05338 7, 0, -36, 0, -97, 0, 20, 0, 58, -75, 1, 1, 1, 50, 10, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88,
-<a name="l05339"></a>05339 -75, 0, 50, 51, 46, 46, 65, 43, 27, 64, 12, 16, 51, 1, -32, 51, -16, 51, 2, -80, 51, 1, 51, -72, -1,
-<a name="l05340"></a>05340 -64, -73, 15, 17, 52, 51, 46, 60, 72, 43, 43, 43, 93, 93, 114, 89, 53, -1, -1, 0, 102, -1, -25, 5, 118,
-<a name="l05341"></a>05341 7, 44, 2, 38, 0, 38, 0, 0, 1, 7, 0, -115, 1, -71, 1, 106, 0, 46, -74, 1, 33, 64, 16, 17, 52,
-<a name="l05342"></a>05342 33, -72, -1, -64, 64, 19, 19, 25, 52, 112, 33, -33, 33, 2, 47, 33, 1, 33, 12, 0, 72, 43, 1, 1, 33,
-<a name="l05343"></a>05343 -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 43, 43, 53, -1, -1, 0, 80, -1, -24, 3, -19, 5, -62, 2,
-<a name="l05344"></a>05344 38, 0, 70, 0, 0, 1, 7, 0, -115, 0, -54, 0, 0, 0, 48, -77, 1, 1, 1, 30, -71, 2, 34, 0, 41,
-<a name="l05345"></a>05345 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 30, 30, 11, 11, 65, 43, 27, 64, 13, 0, 30, -96, 30, 2,
-<a name="l05346"></a>05346 127, 30, 1, 30, 11, 0, 72, 43, 43, 93, 113, 89, 53, -1, -1, 0, 102, -1, -25, 5, 118, 7, 38, 2, 38,
-<a name="l05347"></a>05347 0, 38, 0, 0, 1, 7, 0, -33, 1, -80, 1, 100, 0, 22, 64, 10, 1, 0, 35, 32, 8, 15, 65, 1, 1,
-<a name="l05348"></a>05348 34, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 80, -1, -24, 3, -19, 5, -62, 2, 38, 0, 70,
-<a name="l05349"></a>05349 0, 0, 1, 7, 0, -33, 0, -54, 0, 0, 0, 22, 64, 10, 1, 0, 32, 29, 7, 14, 65, 1, 1, 31, -71,
-<a name="l05350"></a>05350 2, 34, 0, 41, 0, 43, 1, 43, 53, 0, 2, 0, 70, -1, -24, 4, 112, 5, -70, 0, 25, 0, 37, 1, 118,
-<a name="l05351"></a>05351 64, 118, 83, 28, 80, 36, -113, 39, 3, 63, 39, 1, 41, 13, 38, 24, 42, 30, 57, 13, 54, 24, 54, 28, 58,
-<a name="l05352"></a>05352 37, 74, 13, 69, 23, 70, 27, 73, 37, 90, 13, 90, 20, 87, 21, 86, 24, 15, 12, 29, 25, 22, 35, 1, 0,
-<a name="l05353"></a>05353 64, 30, 43, 52, 0, -44, 3, 8, 9, 64, 30, 43, 52, 9, -44, 7, 95, 6, 111, 6, 2, 31, 6, 47, 6,
-<a name="l05354"></a>05354 63, 6, 95, 6, -97, 6, 5, 6, -111, 5, 2, 95, 3, 111, 3, 2, 31, 3, 47, 3, 63, 3, 95, 3, -97,
-<a name="l05355"></a>05355 3, 5, 3, -111, 5, 4, 0, 10, 11, 10, 29, 28, 14, 11, 35, 28, 22, 7, 2, 1, -72, 2, 107, 64, 49,
-<a name="l05356"></a>05356 8, 3, 4, 37, 5, 32, 51, 0, 25, 12, 11, 37, 10, 7, 96, 8, 1, -96, 8, 1, -80, 8, -48, 8, 2,
-<a name="l05357"></a>05357 8, -110, 5, 6, 9, 39, 64, 11, 11, 2, 85, 39, 64, 13, 13, 2, 85, 10, 18, 16, 16, 2, 85, 10, -72,
-<a name="l05358"></a>05358 -1, -12, 64, 17, 15, 15, 2, 85, 10, 6, 14, 14, 2, 85, 10, 24, 13, 13, 2, 85, 10, -72, -1, -14, 64,
-<a name="l05359"></a>05359 11, 11, 11, 6, 85, 10, 14, 16, 16, 6, 85, 10, -72, -1, -18, -76, 12, 12, 6, 85, 10, -72, -1, -8, 64,
-<a name="l05360"></a>05360 66, 13, 13, 6, 85, 16, 10, 64, 10, -128, 10, 3, 10, 116, 26, 36, 18, 30, 11, 11, 2, 85, 18, 24, 12,
-<a name="l05361"></a>05361 12, 2, 85, 18, 30, 13, 13, 2, 85, 18, 12, 11, 11, 6, 85, 18, 12, 13, 13, 6, 85, 18, 26, 12, 12,
-<a name="l05362"></a>05362 6, 85, 31, 18, 63, 18, 79, 18, 96, 18, 4, 18, 25, 38, 52, 80, 24, 43, 78, 16, -12, 93, 43, 43, 43,
-<a name="l05363"></a>05363 43, 43, 43, 77, -19, -3, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, 60, 60, -12, 93, 113, 114, 60,
-<a name="l05364"></a>05364 16, -3, 60, 60, 60, -28, 16, -3, 60, 16, -3, 60, 0, 63, -19, 63, -19, 63, 60, 63, 60, -12, 93, 113, 60,
-<a name="l05365"></a>05365 16, -12, 93, 113, 60, -3, 43, 60, 16, -3, 43, 60, 17, 18, 57, 18, 57, 49, 48, 0, 93, 1, 114, 93, 1,
-<a name="l05366"></a>05366 33, 53, 33, 53, 51, 21, 51, 21, 35, 17, 35, 53, 6, 35, 34, 38, 38, 53, 52, 18, 54, 51, 50, 22, 23,
-<a name="l05367"></a>05367 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 44, -2, -90, 1, 90, -77, -111, -111, -89, 101, -60, 127,
-<a name="l05368"></a>05368 -43, 117, 106, -44, -125, 96, -106, 47, -3, -45, -84, 117, 118, -91, -88, 123, 120, -95, 4, -61, -124, 115, 115, -124, -5,
-<a name="l05369"></a>05369 61, -122, -98, -116, -5, -93, -97, 1, 3, -118, 81, 65, -2, 102, -52, -54, -63, -58, -38, -52, -60, 0, 0, 1, -1,
-<a name="l05370"></a>05370 -31, 6, 30, 4, -118, 6, -97, 0, 3, 0, 37, 64, 13, 2, 48, 3, 3, 1, 48, 0, 3, 26, 5, 0, 25,
-<a name="l05371"></a>05371 4, -70, 1, -119, 1, -114, 0, 24, 43, 78, 16, -28, 16, -26, 0, 47, 77, -19, 60, 16, -19, 49, 48, 3, 53,
-<a name="l05372"></a>05372 33, 21, 31, 4, -87, 6, 30, -127, -127, 0, 1, 1, -15, 2, 125, 2, -66, 3, 74, 0, 3, 0, 33, 64, 11,
-<a name="l05373"></a>05373 2, 1, 3, 0, 60, 1, 3, 60, 0, 25, 4, -72, 1, 79, -79, 65, 24, 43, 78, 16, -12, 77, -3, 0, 47,
-<a name="l05374"></a>05374 -3, 60, 16, 60, 49, 48, 1, 53, 51, 21, 1, -15, -51, 2, 125, -51, -51, -1, -1, -1, -3, 0, 0, 5, 89,
-<a name="l05375"></a>05375 7, 23, 2, 38, 0, 36, 0, 0, 1, 7, 0, -39, 1, 82, 1, 95, 0, 21, 64, 10, 2, 1, 19, 12, 9,
-<a name="l05376"></a>05376 104, 39, 2, 1, 19, -71, 2, 33, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0, 74, -1, -24, 4, 28, 5, -72,
-<a name="l05377"></a>05377 2, 38, 0, 68, 0, 0, 1, 7, 0, -39, 0, -11, 0, 0, 0, 25, 64, 12, 2, -49, 60, 1, 60, 28, 3,
-<a name="l05378"></a>05378 104, 43, 2, 1, 60, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, -1, -3, -2, 96, 6, 12,
-<a name="l05379"></a>05379 5, -70, 2, 38, 0, 36, 0, 0, 1, 7, 0, -34, 3, -97, 0, 10, 0, 22, 64, 12, 2, 1, 15, 4, 0,
-<a name="l05380"></a>05380 72, 39, 2, 1, 15, 8, 41, -72, 1, 100, -123, 0, 43, 1, 43, -1, -1, 0, 74, -2, 111, 4, -12, 4, 62,
-<a name="l05381"></a>05381 2, 38, 0, 68, 0, 0, 1, 7, 0, -34, 2, -121, 0, 25, 0, 18, 64, 12, 2, 1, 56, 39, 0, 72, 39,
-<a name="l05382"></a>05382 2, 1, 56, 10, 41, 0, 43, 1, 43, -1, -1, 0, -98, 0, 0, 5, 90, 7, 38, 2, 38, 0, 39, 0, 0,
-<a name="l05383"></a>05383 1, 7, 0, -33, 0, -15, 1, 100, 0, 45, 64, 21, 2, 30, 64, 19, 19, 6, 85, 30, 64, 15, 15, 6, 85,
-<a name="l05384"></a>05384 30, 64, 12, 12, 6, 85, 30, 2, -72, -1, -10, -76, 72, 43, 2, 1, 33, -71, 2, 33, 0, 41, 0, 43, 1,
-<a name="l05385"></a>05385 43, 43, 43, 43, 53, 0, 0, 3, 0, 71, -1, -24, 4, -18, 5, -70, 0, 10, 0, 28, 0, 40, 1, 52, 64,
-<a name="l05386"></a>05386 48, 54, 39, 83, 31, 83, 39, 98, 31, 98, 39, 5, 53, 24, 54, 31, 2, 45, 33, 58, 13, 73, 13, 67, 23,
-<a name="l05387"></a>05387 69, 30, 73, 40, 90, 13, 106, 13, 8, 45, 13, 35, 24, 2, 6, 10, 0, 12, 38, 32, 25, 28, 22, 6, -72,
-<a name="l05388"></a>05388 2, 67, 64, 52, 0, 64, 1, 3, 64, 2, 2, 1, 0, 27, 26, 0, 38, 72, 22, 7, 28, 11, 10, 32, 72,
-<a name="l05389"></a>05389 14, 11, 10, -111, 0, 0, 1, 3, 2, 64, 1, 49, 27, 27, 28, 35, 51, 11, 25, 26, 12, 26, 11, 37, 28,
-<a name="l05390"></a>05390 18, 16, 16, 2, 85, 28, -72, -1, -12, 64, 23, 15, 15, 2, 85, 28, 6, 14, 14, 2, 85, 28, 24, 13, 13,
-<a name="l05391"></a>05391 2, 85, 28, 11, 16, 16, 6, 85, 28, -72, -1, -8, -76, 15, 15, 6, 85, 28, -72, -1, -18, 64, 11, 13, 13,
-<a name="l05392"></a>05392 6, 85, 28, 9, 12, 12, 6, 85, 28, -72, -1, -25, 64, 62, 11, 11, 6, 85, 16, 28, 64, 28, 96, 28, -128,
-<a name="l05393"></a>05393 28, 4, 28, 116, 29, 36, 18, 30, 11, 11, 2, 85, 18, 24, 12, 12, 2, 85, 18, 30, 13, 13, 2, 85, 18,
-<a name="l05394"></a>05394 10, 13, 13, 6, 85, 18, 34, 12, 12, 6, 85, 18, 7, 11, 11, 6, 85, 63, 18, 79, 18, 2, 18, 25, 41,
-<a name="l05395"></a>05395 52, -71, 2, -106, 0, 24, 43, 78, 16, -12, 93, 43, 43, 43, 43, 43, 43, 77, -19, -3, 93, 43, 43, 43, 43,
-<a name="l05396"></a>05396 43, 43, 43, 43, 43, -3, 60, 60, 16, 60, 16, -28, 16, 60, 16, -2, -3, 60, 16, 60, 77, 16, -28, 0, 63,
-<a name="l05397"></a>05397 -19, 63, 60, 63, -19, 63, 60, 63, 60, 16, -19, 16, -19, -19, 17, 18, 57, 17, 18, 57, 1, 17, 18, 57, 49,
-<a name="l05398"></a>05398 48, 0, 93, 93, 1, 93, 93, 1, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, 1, 53, 6, 35, 34, 38, 38,
-<a name="l05399"></a>05399 53, 52, 18, 54, 51, 50, 22, 23, 17, 51, 17, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 4, 54,
-<a name="l05400"></a>05400 -72, 72, 78, 45, 51, 49, 2, -2, -88, 101, -60, 127, -43, 117, 106, -44, -125, 96, -106, 47, -77, -3, 32, -84, 117,
-<a name="l05401"></a>05401 118, -91, -88, 123, 120, -95, 5, 1, -71, -71, 101, 125, 34, 68, 23, 87, 82, -6, -1, -122, -98, -116, -5, -93, -97,
-<a name="l05402"></a>05402 1, 3, -118, 81, 65, 2, 14, -6, 70, 2, 18, -52, -54, -63, -58, -38, -52, -60, 0, 0, 2, -1, -3, 0, 0,
-<a name="l05403"></a>05403 5, 90, 5, -70, 0, 19, 0, 37, 1, 3, 64, 46, 67, 8, 35, 3, 48, 36, 2, 2, 0, 32, 33, 30, 6,
-<a name="l05404"></a>05404 5, 2, 21, 20, 30, 19, 0, 8, 36, 36, 38, 39, 27, 38, 13, 40, 16, 16, 2, 85, 13, 14, 15, 15, 2,
-<a name="l05405"></a>05405 85, 13, 20, 13, 13, 2, 85, 13, -72, -1, -8, -76, 12, 12, 2, 85, 13, -72, -1, -8, -76, 11, 11, 2, 85,
-<a name="l05406"></a>05406 13, -72, -1, -21, 64, 23, 12, 12, 6, 85, 0, 13, 1, 13, 26, 39, 33, 20, 32, 5, 2, 57, 0, 32, 16,
-<a name="l05407"></a>05407 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6,
-<a name="l05408"></a>05408 -76, 12, 12, 2, 85, 0, -72, -1, -9, -76, 12, 12, 6, 85, 0, -72, -1, -8, 64, 10, 13, 13, 6, 85, 0,
-<a name="l05409"></a>05409 93, 38, 96, 91, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, -28, 60, -3, 60, 78, 16, -10, 93, 43, 43, 43,
-<a name="l05410"></a>05410 43, 43, 43, 77, -19, 17, 18, 57, 47, 0, 63, 60, -3, 60, 63, 60, -3, 60, 18, 57, 47, 60, -3, 60, 49,
-<a name="l05411"></a>05411 48, 67, 121, 64, 54, 7, 31, 11, 12, 10, 12, 9, 12, 8, 12, 4, 6, 29, 28, 30, 28, 2, 6, 15, 14,
-<a name="l05412"></a>05412 16, 14, 17, 14, 3, 6, 25, 26, 24, 26, 23, 26, 3, 6, 31, 7, 27, 33, 1, 22, 18, 27, 33, 1, 28,
-<a name="l05413"></a>05413 12, 32, 33, 1, 26, 14, 21, 33, 0, 43, 43, 1, 43, 43, 42, 42, 42, 42, -127, 51, 17, 35, 53, 51, 17,
-<a name="l05414"></a>05414 33, 50, 23, 22, 23, 22, 18, 21, 20, 2, 6, 7, 6, 35, 37, 33, 50, 54, 55, 54, 54, 53, 52, 46, 2,
-<a name="l05415"></a>05415 35, 33, 17, 33, 21, 33, -98, -95, -95, 1, -6, -86, 90, 126, 89, 116, 115, -114, -58, -127, 71, -113, -2, -79, 1,
-<a name="l05416"></a>05416 57, -110, -92, 48, 69, 78, 77, 124, -104, -99, -2, -52, 1, -108, -2, 108, 2, -101, -124, 2, -101, 21, 29, 76, 98,
-<a name="l05417"></a>05417 -2, -49, -60, -32, -2, -67, -110, 31, 17, -83, 54, 48, 69, -24, -89, -84, -50, 124, 48, -2, 18, -124, -1, -1, 0,
-<a name="l05418"></a>05418 -94, -2, 86, 4, -24, 5, -70, 2, 38, 0, 40, 0, 0, 1, 7, 0, -34, 2, 120, 0, 0, 0, 18, 64, 12,
-<a name="l05419"></a>05419 1, 1, 20, 11, 0, 72, 39, 1, 1, 12, 8, 41, 0, 43, 1, 43, -1, -1, 0, 75, -2, 86, 4, 30, 4,
-<a name="l05420"></a>05420 62, 2, 38, 0, 72, 0, 0, 1, 7, 0, -34, 1, 61, 0, 0, 0, 39, 64, 18, 2, -112, 30, -49, 30, -33,
-<a name="l05421"></a>05421 30, 3, 96, 30, -128, 30, 2, 80, 30, 1, 30, 19, -72, -1, -70, -74, 72, 43, 2, 1, 30, 10, 41, 0, 43,
-<a name="l05422"></a>05422 1, 43, 93, 93, 93, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7, 38, 2, 38, 0, 40, 0, 0, 1, 7,
-<a name="l05423"></a>05423 0, -33, 1, 51, 1, 100, 0, 42, 64, 18, 1, 12, 64, 30, 32, 52, 0, 12, -81, 12, 2, 47, 12, 95, 12,
-<a name="l05424"></a>05424 2, 12, 2, -72, -3, -1, -76, 72, 43, 1, 1, 16, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 43, 53,
-<a name="l05425"></a>05425 -1, -1, 0, 75, -1, -24, 4, 30, 5, -62, 2, 38, 0, 72, 0, 0, 1, 7, 0, -33, 0, -32, 0, 0, 0,
-<a name="l05426"></a>05426 21, 64, 10, 2, 1, 30, 10, 0, 72, 39, 2, 1, 33, -71, 2, 34, 0, 41, 0, 43, 1, 43, 0, -1, -1,
-<a name="l05427"></a>05427 0, -106, 0, 0, 4, 42, 7, 44, 2, 38, 0, 47, 0, 0, 1, 7, 0, -115, 0, 82, 1, 106, 0, 21, 64,
-<a name="l05428"></a>05428 10, 1, 1, 9, 2, 112, 72, 39, 1, 1, 9, -71, 2, 33, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0, 66,
-<a name="l05429"></a>05429 0, 0, 1, -77, 7, 29, 2, 38, 0, 79, 0, 0, 1, 7, 0, -115, -1, 100, 1, 91, 0, 60, -77, 1, 1,
-<a name="l05430"></a>05430 1, 7, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 7, 7, 1, 2, 65, 43, 27,
-<a name="l05431"></a>05431 -71, 0, 7, -1, -64, -77, 23, 25, 52, 7, -72, -1, -64, 64, 11, 34, 37, 52, 47, 7, 1, 7, 1, 90, 72,
-<a name="l05432"></a>05432 43, 43, 93, 43, 43, 89, 53, 0, 2, 0, -106, 0, 0, 4, 42, 5, -70, 0, 10, 0, 16, 0, -99, -77, 6,
-<a name="l05433"></a>05433 10, 0, 6, -72, 1, 81, 64, 51, 1, 3, 101, 2, 0, 101, 2, 1, 1, 13, 10, 81, 0, 0, 1, 3, 2,
-<a name="l05434"></a>05434 10, 11, 16, 2, 85, 2, 101, 1, 1, 18, 13, 13, 12, 2, 15, 14, 30, 16, 11, 8, 15, 26, 18, 13, 14,
-<a name="l05435"></a>05435 32, 12, 11, 36, 16, 16, 2, 85, 11, -72, -1, -14, -76, 15, 15, 2, 85, 11, -72, -1, -2, 64, 11, 13, 13,
-<a name="l05436"></a>05436 2, 85, 11, 4, 16, 16, 6, 85, 11, -72, -1, -2, 64, 13, 12, 12, 6, 85, 32, 11, 1, 11, 25, 17, 59,
-<a name="l05437"></a>05437 92, 24, 43, 78, 16, -12, 93, 43, 43, 43, 43, 43, 60, 77, -3, 60, 78, 16, -26, 0, 63, 60, 77, -3, 60,
-<a name="l05438"></a>05438 63, 60, 1, 17, 18, 57, 47, -3, 43, 60, 16, 60, 16, -28, 0, 16, 60, 16, 60, -19, 16, -19, 16, -19, 1,
-<a name="l05439"></a>05439 17, 18, 57, 49, 48, 1, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, 1, 17, 51, 17, 33, 21, 2, -56, -51,
-<a name="l05440"></a>05440 80, 87, 50, 57, 55, 2, -3, 104, -62, 2, -46, 4, -19, -51, -51, 113, -117, 38, 77, 25, 97, 91, -5, 19, 5,
-<a name="l05441"></a>05441 -70, -6, -13, -83, 0, 2, 0, -120, 0, 0, 2, 84, 5, -70, 0, 10, 0, 14, 0, -43, 64, 9, 47, 16, 1,
-<a name="l05442"></a>05442 10, 3, 0, 7, -73, 6, -72, 2, 67, 64, 14, 1, 3, 64, 2, 0, 64, 2, 1, 0, 2, 3, 1, 0, 6,
-<a name="l05443"></a>05443 -72, 2, 91, 64, 40, 7, 51, 0, 64, 3, 20, 11, 16, 2, 85, 31, 3, 1, 3, 73, 112, 16, -128, 16, 2,
-<a name="l05444"></a>05444 -97, 16, -33, 16, 2, 79, 16, 1, 16, 13, 12, 0, 14, 11, 10, 13, 14, 37, 12, 11, -72, -1, -8, -76, 16,
-<a name="l05445"></a>05445 16, 2, 85, 11, -72, -1, -6, 64, 17, 14, 14, 2, 85, 11, 4, 12, 12, 2, 85, 11, 10, 11, 11, 2, 85,
-<a name="l05446"></a>05446 11, -72, -1, -14, -76, 11, 11, 6, 85, 11, -72, -1, -2, 64, 11, 15, 15, 6, 85, 11, 8, 16, 16, 6, 85,
-<a name="l05447"></a>05447 11, -72, -1, -4, -76, 13, 13, 6, 85, 11, -72, -1, -7, 64, 15, 12, 12, 6, 85, 0, 11, 32, 11, 2, 11,
-<a name="l05448"></a>05448 78, 15, 71, 102, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, 0, 63, 60, 63,
-<a name="l05449"></a>05449 60, 1, 16, 113, 93, 93, -10, 93, 43, -3, -12, -28, 16, 60, 16, 60, 0, 63, 60, -19, 16, -19, 16, -3, -19,
-<a name="l05450"></a>05450 1, 17, 18, 57, 49, 48, 1, 93, 1, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, 1, 17, 51, 17, 1, -100,
-<a name="l05451"></a>05451 -72, 72, 78, 45, 51, 49, 2, -2, -111, -76, 5, 1, -71, -71, 101, 125, 34, 68, 23, 87, 82, -6, -1, 5, -70,
-<a name="l05452"></a>05452 -6, 70, 0, -1, -1, 0, -106, 0, 0, 4, 42, 5, -70, 2, 38, 0, 47, 0, 0, 1, 7, 1, 1, 0, -28,
-<a name="l05453"></a>05453 0, 0, 0, 41, -79, 1, 6, -72, -1, -64, -76, 12, 14, 52, 6, 4, -72, -2, -89, 64, 10, 72, 43, 1, 6,
-<a name="l05454"></a>05454 64, 13, 17, 52, 6, 4, -72, 1, -48, -79, 72, 43, 0, 43, 43, 53, 1, 43, 43, 53, 0, -1, -1, 0, -125,
-<a name="l05455"></a>05455 0, 0, 2, -92, 5, -70, 0, 38, 0, 79, 0, 0, 1, 6, 1, 1, -26, 0, 0, 29, 64, 14, 1, -113, 4,
-<a name="l05456"></a>05456 -65, 4, 2, 4, 3, -107, 72, 43, 1, 4, 3, -72, 2, 125, -79, 72, 43, 0, 43, 53, 1, 43, 93, 53, 0,
-<a name="l05457"></a>05457 -1, -1, 0, -100, 0, 0, 5, 31, 7, 44, 2, 38, 0, 49, 0, 0, 1, 7, 0, -115, 1, 92, 1, 106, 0,
-<a name="l05458"></a>05458 64, -77, 1, 1, 1, 13, -70, 2, 33, 0, 41, 1, 100, -123, 0, 43, 1, -79, 6, 2, 67, 84, 88, -72, -1,
-<a name="l05459"></a>05459 -20, -76, 13, 13, 2, 4, 65, 43, 27, 64, 17, 111, 13, 127, 13, 2, 0, 13, 1, -65, 13, -32, 13, -16, 13,
-<a name="l05460"></a>05460 3, 13, 4, -72, -2, -107, -79, 72, 43, 43, 93, 113, 113, 89, 53, -1, -1, 0, -121, 0, 0, 3, -26, 5, -62,
-<a name="l05461"></a>05461 2, 38, 0, 81, 0, 0, 1, 7, 0, -115, 0, -30, 0, 0, 0, 36, -76, 1, 63, 26, 1, 26, -72, -1, -64,
-<a name="l05462"></a>05462 -76, 18, 20, 52, 26, 5, -72, -1, -38, -76, 72, 43, 1, 1, 26, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43,
-<a name="l05463"></a>05463 113, 53, -1, -1, 0, -100, 0, 0, 5, 31, 7, 44, 2, 38, 0, 49, 0, 0, 1, 7, 0, -33, 1, 119, 1,
-<a name="l05464"></a>05464 106, 0, 25, 64, 10, 1, 0, 15, 12, 1, 5, 65, 1, 1, 13, -70, 2, 33, 0, 41, 1, 100, -123, 0, 43,
-<a name="l05465"></a>05465 1, 43, 53, 0, -1, -1, 0, -121, 0, 0, 3, -26, 5, -62, 2, 38, 0, 81, 0, 0, 1, 7, 0, -33, 0,
-<a name="l05466"></a>05466 -30, 0, 0, 0, 22, 64, 10, 1, 0, 28, 25, 1, 11, 65, 1, 1, 26, -71, 2, 34, 0, 41, 0, 43, 1,
-<a name="l05467"></a>05467 43, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 44, 2, 38, 0, 50, 0, 0, 1, 7, 0, -35, 1, -97, 1,
-<a name="l05468"></a>05468 106, 0, 34, 64, 19, 3, 2, 0, 32, 32, 32, 2, -16, 32, 1, 32, 3, 86, 72, 43, 2, 3, 2, 35, -71,
-<a name="l05469"></a>05469 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 53, 53, -1, -1, 0, 68, -1, -24, 4, 39, 5, -62, 2, 38, 0,
-<a name="l05470"></a>05470 82, 0, 0, 1, 7, 0, -35, 0, -31, 0, 0, 0, 38, -78, 3, 2, 30, -72, -1, -64, 64, 16, 15, 15, 6,
-<a name="l05471"></a>05471 85, -113, 30, 1, 30, 4, 43, 72, 43, 2, 3, 2, 33, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 43, 53,
-<a name="l05472"></a>05472 53, -1, -1, 0, -95, 0, 0, 5, -83, 7, 44, 2, 38, 0, 53, 0, 0, 1, 7, 0, -115, 1, 25, 1, 106,
-<a name="l05473"></a>05473 0, 36, 64, 13, 2, 38, 64, 12, 17, 52, 38, 64, 19, 20, 52, 38, 2, -72, -1, 120, -76, 72, 43, 2, 1,
-<a name="l05474"></a>05474 38, -71, 2, 33, 0, 41, 0, 43, 1, 43, 43, 43, 53, -1, -1, 0, -123, 0, 0, 2, -58, 5, -62, 2, 38,
-<a name="l05475"></a>05475 0, 85, 0, 0, 1, 6, 0, -115, 20, 0, 0, 36, 64, 13, 1, -81, 21, -33, 21, 2, 21, 64, 11, 13, 52,
-<a name="l05476"></a>05476 21, 6, -72, -1, 123, -76, 72, 43, 1, 1, 21, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 93, 53, -1, -1,
-<a name="l05477"></a>05477 0, -95, 0, 0, 5, -83, 7, 38, 2, 38, 0, 53, 0, 0, 1, 7, 0, -33, 1, 34, 1, 100, 0, 40, 64,
-<a name="l05478"></a>05478 16, 2, 63, 35, 1, -17, 35, -1, 35, 2, 95, 35, -113, 35, 2, 35, 2, -72, -1, 107, -76, 72, 43, 2, 1,
-<a name="l05479"></a>05479 38, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 93, 113, 53, -1, -1, 0, 60, 0, 0, 2, -58, 5, -62, 2,
-<a name="l05480"></a>05480 38, 0, 85, 0, 0, 1, 6, 0, -33, 20, 0, 0, 29, -73, 1, 63, 18, 79, 18, 2, 18, 6, -72, -1, -106,
-<a name="l05481"></a>05481 -76, 72, 43, 1, 1, 21, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, 92, -1, -25, 4,
-<a name="l05482"></a>05482 -21, 7, 44, 2, 38, 0, 54, 0, 0, 1, 7, 0, -115, 1, 14, 1, 106, 0, 33, 64, 19, 1, 127, 52, -113,
-<a name="l05483"></a>05483 52, 2, 79, 52, 95, 52, 2, 52, 22, 0, 72, 43, 1, 1, 52, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93,
-<a name="l05484"></a>05484 93, 53, 0, -1, -1, 0, 63, -1, -24, 3, -79, 5, -62, 2, 38, 0, 86, 0, 0, 1, 7, 0, -115, 0, -84,
-<a name="l05485"></a>05485 0, 0, 0, 37, 64, 22, 1, -49, 52, -33, 52, 2, 47, 52, 95, 52, 2, 79, 52, 1, 52, 21, 0, 72, 43,
-<a name="l05486"></a>05486 1, 1, 52, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 93, 93, 53, 0, 0, 2, 0, 48, -3, -67, 4, -70,
-<a name="l05487"></a>05487 5, -70, 0, 7, 0, 18, 0, -54, -77, 13, 18, 8, 14, -70, 1, 49, 0, 13, 1, 73, 64, 13, 9, 11, 101,
-<a name="l05488"></a>05488 10, 18, 8, 101, 9, 9, 0, 10, 1, 10, -72, 2, -71, 64, 20, 7, 18, 81, 8, 8, 9, 101, 10, 45, 7,
-<a name="l05489"></a>05489 5, 2, 30, 4, 3, 2, 7, 0, 8, 20, -72, 2, 115, -75, 6, 5, 32, 4, 1, 4, -72, 1, 1, -73, 6,
-<a name="l05490"></a>05490 32, 1, 2, 47, 3, 1, 3, -72, 1, 1, -76, 1, 7, 32, 1, 0, -72, -1, -24, 64, 11, 16, 16, 2, 85,
-<a name="l05491"></a>05491 0, 8, 15, 15, 2, 85, 0, -72, -1, -14, -76, 12, 12, 2, 85, 0, -72, -1, -30, -76, 13, 13, 2, 85, 0,
-<a name="l05492"></a>05492 -72, -1, -4, -76, 12, 12, 6, 85, 0, -72, -1, -2, -73, 13, 13, 6, 85, 32, 0, 1, 0, -72, 2, 115, -77,
-<a name="l05493"></a>05493 19, -74, -103, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, 43, 60, -19, 16, -12, 93, 60, 16, -3, -12, 93, 60,
-<a name="l05494"></a>05494 16, -26, 0, 63, 60, 63, 60, -3, 60, 1, 16, -12, -3, 60, 16, -28, 0, 16, -10, 93, 60, 16, -3, 60, 16,
-<a name="l05495"></a>05495 -19, 16, -3, -19, 1, 17, 18, 57, 49, 48, 33, 17, 33, 53, 33, 21, 33, 17, 3, 53, 51, 21, 20, 7, 39,
-<a name="l05496"></a>05496 54, 55, 54, 55, 2, 19, -2, 29, 4, -118, -2, 27, -54, -51, -89, 50, 60, 30, 20, 4, 5, 13, -83, -83, -6,
-<a name="l05497"></a>05497 -13, -2, -70, -51, -51, -76, 73, 76, 27, 51, 33, 66, 0, 2, 0, 36, -3, -20, 2, 42, 5, -103, 0, 23, 0,
-<a name="l05498"></a>05498 33, 1, 4, 64, 21, 33, 33, 47, 35, 49, 33, 3, 0, 1, 13, 12, 10, 30, 33, 24, 1, 3, 0, 9, 22,
-<a name="l05499"></a>05499 30, -72, 1, 73, 64, 12, 25, 27, 64, 26, 24, 64, 25, 25, 0, 26, 1, 26, -72, 2, -74, 64, 47, 3, 33,
-<a name="l05500"></a>05500 -111, 24, 27, 26, 24, 25, 64, 26, 26, 1, 7, 16, 9, 43, 15, 10, 6, 22, 28, 3, 11, 15, 16, 35, 73,
-<a name="l05501"></a>05501 16, 34, 0, 34, -97, 1, 1, 1, 13, 18, 37, 12, 1, -1, 7, 8, 69, 9, 69, 7, -72, -1, -22, -76, 16,
-<a name="l05502"></a>05502 16, 2, 85, 7, -72, -1, -16, -76, 15, 15, 2, 85, 7, -72, -1, -22, -76, 14, 14, 2, 85, 7, -72, -1, -12,
-<a name="l05503"></a>05503 -76, 12, 13, 2, 85, 7, -72, -1, -4, -76, 11, 11, 2, 85, 7, -72, -1, -8, -76, 16, 16, 6, 85, 7, -72,
-<a name="l05504"></a>05504 -1, -20, 64, 24, 15, 15, 6, 85, 7, 2, 12, 12, 6, 85, 7, 13, 13, 13, 6, 85, 0, 7, 32, 7, -112,
-<a name="l05505"></a>05505 7, 3, 7, -70, 2, 48, 0, 34, 1, 54, -79, -60, 24, 43, 16, -12, 93, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l05506"></a>05506 43, -12, -28, 16, -19, 60, -3, 60, 16, 93, -28, -28, -26, 16, 60, 0, 63, -19, 63, 60, -3, 60, 1, 17, 18,
-<a name="l05507"></a>05507 57, 47, -3, 60, 16, 60, 16, -28, 0, 16, -10, 93, 60, 16, -19, 16, -19, 16, -19, 17, 18, 57, 18, 57, 1,
-<a name="l05508"></a>05508 17, 18, 57, 0, 17, 51, 51, 16, -55, 49, 48, 1, 93, 37, 23, 6, 35, 34, 38, 38, 53, 17, 35, 53, 51,
-<a name="l05509"></a>05509 17, 55, 17, 51, 21, 35, 17, 20, 22, 22, 51, 50, 3, 53, 51, 21, 20, 6, 7, 39, 54, 55, 2, 16, 26,
-<a name="l05510"></a>05510 76, 60, 98, 108, 44, -124, -124, -77, -75, -75, 19, 43, 40, 30, -52, -71, 73, 78, 44, 95, 7, -95, -97, 16, 62,
-<a name="l05511"></a>05511 101, -94, 2, 99, -116, 1, 7, 108, -2, -115, -116, -3, -109, 77, 44, 26, -2, 53, -72, -72, 70, 123, 34, 69, 42,
-<a name="l05512"></a>05512 116, -1, -1, 0, 48, 0, 0, 4, -70, 7, 38, 2, 38, 0, 55, 0, 0, 1, 7, 0, -33, 1, 15, 1, 100,
-<a name="l05513"></a>05513 0, 53, -77, 1, 1, 1, 11, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 12, 11,
-<a name="l05514"></a>05514 1, 6, 65, 43, 27, 64, 12, 8, 64, 37, 39, 52, 8, 64, 13, 17, 52, 8, 6, -72, -1, -83, -79, 72, 43,
-<a name="l05515"></a>05515 43, 43, 43, 89, 53, 0, 0, 2, 0, 35, -1, -14, 2, -3, 5, -70, 0, 10, 0, 34, 0, -16, 64, 42, 111,
-<a name="l05516"></a>05516 5, 108, 7, 127, 7, -114, 7, 4, 96, 1, 96, 6, 96, 7, 112, 1, 112, 4, 114, 7, -128, 1, -128, 4, 8,
-<a name="l05517"></a>05517 0, 23, 24, 21, 6, 10, 0, 11, 13, 27, 12, 14, 11, 20, 33, 7, -72, 2, 45, 64, 36, 1, 7, -73, 6,
-<a name="l05518"></a>05518 0, 64, 2, 2, 1, 0, 7, 51, 1, 10, -111, 0, 64, 1, 64, 2, 26, 36, 27, 20, 43, 26, 21, 6, 33,
-<a name="l05519"></a>05519 28, 14, 11, 26, 12, 34, 27, -72, 2, 48, -74, 24, 29, 37, 23, 20, 69, 18, -72, -1, -14, -76, 16, 16, 2,
-<a name="l05520"></a>05520 85, 18, -72, -1, -10, -76, 14, 15, 2, 85, 18, -72, -1, -4, -76, 12, 12, 2, 85, 18, -72, -1, -20, -76, 16,
-<a name="l05521"></a>05521 16, 6, 85, 18, -72, -1, -24, -76, 15, 15, 6, 85, 18, -72, -1, -10, -76, 13, 13, 6, 85, 18, -72, -1, -12,
-<a name="l05522"></a>05522 64, 10, 12, 12, 6, 85, 0, 18, 1, 18, 25, 35, -72, 1, 54, -79, 102, 24, 43, 78, 16, -12, 93, 43, 43,
-<a name="l05523"></a>05523 43, 43, 43, 43, 43, 77, -28, 60, -3, 60, -12, -28, 60, 0, 63, -19, 63, 60, -3, 60, 1, 78, 16, -10, 77,
-<a name="l05524"></a>05524 -19, -3, -28, 16, -28, 0, 63, 60, 16, -19, 16, -19, 16, -28, 17, 18, 57, 18, 57, 1, 17, 18, 57, 17, 18,
-<a name="l05525"></a>05525 57, 0, 17, 51, 51, -55, 49, 48, 1, 93, 0, 93, 1, 53, 51, 21, 20, 6, 7, 39, 54, 54, 55, 3, 23,
-<a name="l05526"></a>05526 6, 35, 34, 38, 38, 53, 17, 35, 53, 51, 17, 55, 17, 51, 21, 35, 17, 20, 22, 22, 51, 50, 2, 69, -72,
-<a name="l05527"></a>05527 72, 78, 45, 51, 49, 2, -111, 26, 76, 60, 98, 108, 44, -124, -124, -77, -75, -75, 19, 43, 40, 30, 5, 1, -71,
-<a name="l05528"></a>05528 -71, 101, 125, 34, 68, 23, 87, 82, -5, -96, -97, 16, 62, 101, -94, 2, 99, -116, 1, 7, 108, -2, -115, -116, -3,
-<a name="l05529"></a>05529 -109, 77, 44, 26, -1, -1, 0, -95, -1, -25, 5, 34, 7, 43, 2, 38, 0, 56, 0, 0, 1, 7, 0, -37, 1,
-<a name="l05530"></a>05530 -118, 1, 62, 0, 59, 64, 15, 2, 1, 24, -128, 58, 60, 52, -81, 24, -65, 24, -1, 24, 3, 24, -72, 3, 23,
-<a name="l05531"></a>05531 0, 125, 63, 114, 43, 24, 53, 53, 1, -79, 6, 2, 67, 84, 88, -73, 2, 1, 0, 21, 27, 12, 0, 65, 43,
-<a name="l05532"></a>05532 53, 53, 27, -73, 1, 2, 2, 30, 6, 0, 104, 39, 43, 89, 0, -1, -1, 0, -125, -1, -24, 3, -32, 5, -19,
-<a name="l05533"></a>05533 2, 38, 0, 88, 0, 0, 1, 7, 0, -37, 0, -36, 0, 0, 0, 25, 64, 12, 2, 1, 0, 25, 31, 17, 17,
-<a name="l05534"></a>05534 65, 1, 2, 2, 34, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 53, 0, -1, -1, 0, -95, -1, -25, 5, 34,
-<a name="l05535"></a>05535 7, 44, 2, 38, 0, 56, 0, 0, 1, 7, 0, -35, 1, -105, 1, 106, 0, 51, -75, 2, 1, 1, 2, 2, 28,
-<a name="l05536"></a>05536 -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -72, -1, -23, -76, 21, 28, 12, 0, 65, 43, 27,
-<a name="l05537"></a>05537 64, 11, -64, 25, 1, 96, 25, 1, 25, 17, 85, 72, 43, 43, 93, 93, 89, 53, 53, 0, -1, -1, 0, -125, -1,
-<a name="l05538"></a>05538 -24, 3, -32, 5, -62, 2, 38, 0, 88, 0, 0, 1, 7, 0, -35, 0, -76, 0, 0, 0, 49, -75, 2, 1, 1,
-<a name="l05539"></a>05539 2, 2, 32, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 28, 32, 11, 22, 65, 43,
-<a name="l05540"></a>05540 27, -71, 0, 29, -1, -64, -73, 18, 20, 52, 29, 17, 100, 72, 43, 43, 43, 89, 53, 52, 0, -1, -1, 0, 41,
-<a name="l05541"></a>05541 0, 0, 4, -80, 7, 44, 2, 38, 0, 61, 0, 0, 1, 7, 0, -115, 0, -5, 1, 106, 0, 40, 64, 16, 1,
-<a name="l05542"></a>05542 -49, 16, -33, 16, 2, -81, 16, 1, 16, 64, 11, 15, 52, 16, 2, -72, -1, 89, -76, 72, 43, 1, 1, 16, -71,
-<a name="l05543"></a>05543 2, 33, 0, 41, 0, 43, 1, 43, 43, 93, 93, 53, -1, -1, 0, 40, 0, 0, 3, -44, 5, -62, 2, 38, 0,
-<a name="l05544"></a>05544 93, 0, 0, 1, 7, 0, -115, 0, -87, 0, 0, 0, 30, -75, 1, 79, 18, 1, 18, 7, -72, -2, 105, -76, 72,
-<a name="l05545"></a>05545 43, 1, 1, 18, -70, 2, 34, 0, 41, 1, 100, -123, 0, 43, 1, 43, 93, 53, -1, -1, 0, 41, 0, 0, 4,
-<a name="l05546"></a>05546 -80, 6, -12, 2, 38, 0, 61, 0, 0, 1, 7, 0, -38, 1, 48, 1, 106, 0, 27, -75, 1, -49, 13, 1, 13,
-<a name="l05547"></a>05547 2, -72, -1, 17, -76, 72, 43, 1, 1, 13, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0,
-<a name="l05548"></a>05548 40, 0, 0, 3, -44, 5, -118, 2, 38, 0, 93, 0, 0, 1, 7, 0, -38, 0, -87, 0, 0, 0, 46, 64, 19,
-<a name="l05549"></a>05549 1, 15, 64, 11, 11, 6, 85, 31, 15, 47, 15, 2, -17, 15, -1, 15, 2, 15, 4, -72, -1, -95, -76, 72, 43,
-<a name="l05550"></a>05550 1, 1, 15, -70, 2, 34, 0, 41, 1, 100, -123, 0, 43, 1, 43, 93, 113, 43, 53, 0, 1, 0, -92, 0, 0,
-<a name="l05551"></a>05551 4, 56, 5, -70, 0, 5, 0, -125, 64, 28, 2, 3, 30, 1, 0, 2, 5, 8, 16, 1, 32, 1, 2, 1, 26,
-<a name="l05552"></a>05552 7, 3, 4, 32, 5, 5, 0, 36, 16, 16, 2, 85, 0, -72, -1, -14, -76, 15, 15, 2, 85, 0, -72, -1, -22,
-<a name="l05553"></a>05553 -76, 13, 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -3, -76, 16, 16, 6, 85, 0, -72,
-<a name="l05554"></a>05554 -1, -13, -76, 15, 15, 6, 85, 0, -72, -1, -22, -76, 13, 13, 6, 85, 0, -72, -1, -12, -73, 12, 12, 6, 85,
-<a name="l05555"></a>05555 0, 25, 6, 59, -71, 1, -114, 0, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 60, 77, 16, -3,
-<a name="l05556"></a>05556 60, 78, 16, -26, 93, 0, 63, 63, 60, 77, -3, 60, 49, 48, 19, 33, 21, 33, 17, 35, -92, 3, -108, -3, 46,
-<a name="l05557"></a>05557 -62, 5, -70, -83, -6, -13, 0, 3, 0, 96, -1, -25, 5, -38, 5, -44, 0, 12, 0, 24, 0, 28, 1, 40, 64,
-<a name="l05558"></a>05558 105, 108, 8, 109, 10, 108, 15, 106, 17, 99, 21, 99, 23, 6, 16, 14, 16, 18, 31, 20, 31, 24, 99, 2, 99,
-<a name="l05559"></a>05559 4, 6, 106, 14, 99, 18, 100, 20, 107, 24, -104, 2, -106, 4, 6, 31, 21, 16, 23, 109, 1, 98, 5, 99, 7,
-<a name="l05560"></a>05560 106, 11, 111, 12, 7, 16, 2, 31, 4, 31, 8, 18, 10, 16, 15, 31, 17, 32, 30, 7, 58, 8, 27, 30, 79,
-<a name="l05561"></a>05561 25, 95, 25, 127, 25, -113, 25, 4, -17, 25, 1, 25, 25, 9, 22, 30, 3, 3, 16, 30, 9, 9, 28, 101, 19,
-<a name="l05562"></a>05562 25, 101, 13, 19, 38, 6, -72, -1, -24, -76, 16, 16, 2, 85, 6, -72, -1, -18, -76, 13, 13, 2, 85, 6, -72,
-<a name="l05563"></a>05563 -1, -16, -76, 12, 12, 2, 85, 6, -72, -1, -7, -76, 11, 11, 6, 85, 6, -72, -1, -12, -76, 13, 13, 6, 85,
-<a name="l05564"></a>05564 6, -72, -1, -6, 64, 38, 12, 12, 6, 85, 32, 6, -128, 6, 2, -128, 30, 1, 6, 26, 30, 13, 38, 0, 6,
-<a name="l05565"></a>05565 11, 11, 6, 85, 0, 6, 12, 12, 6, 85, 32, 0, 1, 0, 25, 29, 99, 92, 24, 43, 16, -10, 93, 43, 43,
-<a name="l05566"></a>05566 -19, 16, -10, 93, 93, 43, 43, 43, 43, 43, 43, -19, 16, -26, 16, -26, 0, 63, -19, 63, -19, 18, 57, 47, 113,
-<a name="l05567"></a>05567 93, -19, 49, 48, 67, 121, 64, 44, 1, 24, 11, 37, 17, 8, 19, 33, 1, 15, 10, 13, 33, 0, 21, 4, 19,
-<a name="l05568"></a>05568 33, 1, 23, 2, 13, 33, 0, 18, 7, 16, 33, 0, 14, 12, 16, 33, 0, 20, 5, 22, 33, 1, 24, 1, 22,
-<a name="l05569"></a>05569 33, 1, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, -127, 1, 93, 93, 93, 0, 93, 93, 19, 16, 0, 33, 32,
-<a name="l05570"></a>05570 0, 17, 16, 0, 33, 34, 36, 2, 55, 20, 0, 51, 50, 0, 17, 16, 0, 35, 34, 0, 19, 53, 33, 21, 96,
-<a name="l05571"></a>05571 1, -118, 1, 52, 1, 53, 1, -121, -2, 118, -2, -51, -35, -2, -77, -109, -56, 1, 16, -28, -32, 1, 22, -2, -24,
-<a name="l05572"></a>05572 -37, -41, -2, -32, -45, 2, 68, 2, -54, 1, 110, 1, -100, -2, 93, -2, -86, -2, -84, -2, 96, -35, 1, 91, -88,
-<a name="l05573"></a>05573 -5, -2, -63, 1, 59, 1, 20, 1, 24, 1, 57, -2, -38, -2, -128, -84, -84, 0, 0, 3, 0, 85, -1, -53, 6,
-<a name="l05574"></a>05574 13, 5, -26, 0, 18, 0, 25, 0, 32, 1, 84, 64, 96, 32, 34, 58, 3, 58, 7, 53, 12, 53, 16, 53, 20,
-<a name="l05575"></a>05575 52, 24, 60, 27, 58, 31, 68, 3, 68, 7, 73, 17, 96, 34, 112, 34, -124, 21, -118, 30, -97, 34, -96, 34, -65,
-<a name="l05576"></a>05576 34, -16, 34, 20, 0, 34, 56, 3, 2, 41, 21, 38, 23, 38, 28, 40, 30, 56, 6, 104, 4, 105, 21, 101, 23,
-<a name="l05577"></a>05577 101, 28, 105, 30, 118, 4, 121, 6, 121, 13, 118, 16, -120, 4, -120, 20, -123, 23, -123, 28, -120, 30, 19, 57, 3,
-<a name="l05578"></a>05578 1, 32, 19, 8, 11, 26, 25, 30, 11, -72, 1, 58, 64, 38, 10, 19, 30, 18, 112, 2, -128, 2, 2, 2, -94,
-<a name="l05579"></a>05579 0, 3, 10, 9, 26, 9, 19, 10, 1, -112, 9, 1, 64, 9, 80, 9, 96, 9, 112, 9, -128, 9, 5, 9, 32,
-<a name="l05580"></a>05580 0, 10, -72, -1, -4, 64, 13, 12, 12, 6, 85, 127, 10, 1, 10, 10, 14, 29, 38, 5, -72, -1, -12, 64, 58,
-<a name="l05581"></a>05581 15, 16, 6, 85, 5, 42, 13, 13, 6, 85, 5, 26, 11, 12, 6, 85, 0, 5, 96, 5, 2, 32, 5, 96, 5,
-<a name="l05582"></a>05582 112, 5, -97, 5, -96, 5, -65, 5, -16, 5, 7, 5, 26, 34, 0, 34, 16, 34, 64, 34, 3, 16, 34, 48, 34,
-<a name="l05583"></a>05583 64, 34, -80, 34, -64, 34, 5, 34, -72, -1, -64, 64, 12, 16, 18, 52, 22, 38, 14, 18, 16, 16, 2, 85, 14,
-<a name="l05584"></a>05584 -72, -1, -22, 64, 11, 13, 13, 2, 85, 14, 8, 15, 16, 6, 85, 14, -72, -1, -42, -76, 13, 13, 6, 85, 14,
-<a name="l05585"></a>05585 -72, -1, -24, 64, 13, 11, 12, 6, 85, 32, 14, 1, 14, 25, 33, 99, 92, 24, 43, 16, -10, 93, 43, 43, 43,
-<a name="l05586"></a>05586 43, 43, -19, 43, 93, 113, 16, -10, 93, 113, 43, 43, 43, -19, 18, 57, 47, 113, 43, 60, -3, 113, 114, 60, 16,
-<a name="l05587"></a>05587 60, 16, 60, 0, 63, 63, -12, 93, 60, -19, 16, -12, -3, 60, 16, 60, 16, 60, 49, 48, 0, 113, 93, 1, 113,
-<a name="l05588"></a>05588 93, 1, 51, 21, 4, 0, 21, 16, 0, 5, 21, 35, 53, 36, 0, 53, 52, 18, 36, 55, 21, 6, 6, 21, 20,
-<a name="l05589"></a>05589 22, 23, 51, 54, 54, 53, 52, 38, 35, 2, -48, -62, 1, 52, 1, 71, -2, -98, -2, -25, -62, -2, -33, -2, -90,
-<a name="l05590"></a>05590 -106, 1, 18, -45, -50, -29, -8, -71, -62, -51, -24, -34, -41, 5, -26, -75, 19, -2, -66, -17, -2, -12, -2, -54, 10,
-<a name="l05591"></a>05591 -42, -42, 11, 1, 63, -7, -93, 1, 8, -104, 10, -88, 6, -42, -56, -54, -46, 3, 6, -38, -62, -72, -23, 0, 0,
-<a name="l05592"></a>05592 2, 0, 72, -1, -24, 4, 83, 4, 62, 0, 20, 0, 32, 1, 20, 64, 80, 6, 9, 6, 18, 16, 34, 55, 2,
-<a name="l05593"></a>05593 71, 2, 86, 2, 86, 4, 118, 9, 117, 18, -122, 9, 10, 8, 7, 1, 73, 23, 70, 25, 70, 29, 73, 31, 91,
-<a name="l05594"></a>05594 23, 84, 25, 84, 29, 91, 31, 104, 9, 104, 11, 103, 15, 121, 9, -9, 28, 13, 24, 19, 1, 37, 29, 42, 31,
-<a name="l05595"></a>05595 53, 29, 58, 31, 4, 111, 8, 96, 19, 2, 19, 8, 3, 30, 4, 16, 6, 0, 6, 6, 10, 27, -72, 2, -102,
-<a name="l05596"></a>05596 -78, 10, 11, 21, -72, 2, -102, -75, 16, 7, 8, 19, 0, 3, -72, -1, -10, -76, 16, 17, 2, 85, 3, -72, -1,
-<a name="l05597"></a>05597 -16, -76, 16, 17, 6, 85, 3, -72, -1, -16, -73, 13, 13, 6, 85, 3, 107, 64, 30, -72, -1, -24, -76, 13, 17,
-<a name="l05598"></a>05598 2, 85, 30, -72, -1, -20, -76, 11, 11, 2, 85, 30, -72, -1, -18, 64, 71, 13, 13, 6, 85, -112, 30, 1, 31,
-<a name="l05599"></a>05599 30, -16, 30, 2, 30, 66, 5, -128, 0, -83, 1, 1, 6, -83, 5, 55, 34, 24, 64, 13, 8, 14, 15, 2, 85,
-<a name="l05600"></a>05600 13, 28, 12, 13, 2, 85, 13, 12, 16, 16, 6, 85, 13, 18, 13, 13, 6, 85, 13, 37, 12, 12, 6, 85, 13,
-<a name="l05601"></a>05601 23, 11, 11, 6, 85, 63, 13, 79, 13, 2, 13, 52, 33, 16, -10, 93, 43, 43, 43, 43, 43, 43, -19, 16, -10,
-<a name="l05602"></a>05602 -19, 60, 16, -19, 26, 16, -3, 113, 93, 43, 43, 43, 26, -19, 43, 43, 43, 17, 51, 51, 0, 63, -19, 63, -19,
-<a name="l05603"></a>05603 63, 63, 17, 18, 23, 57, 93, 49, 48, 0, 113, 114, 93, 1, 113, 93, 1, 51, 6, 3, 18, 23, 35, 38, 39,
-<a name="l05604"></a>05604 6, 33, 34, 2, 17, 16, 18, 51, 50, 22, 23, 54, 37, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 3,
-<a name="l05605"></a>05605 -101, -72, 70, 59, 70, 59, -77, 43, 22, 83, -2, -8, -56, -12, -11, -54, 125, -98, 68, 7, -2, -72, -127, -106, -114,
-<a name="l05606"></a>05606 127, 124, -90, -101, 4, 38, -36, -2, -55, -2, 126, -111, 100, 94, -38, 1, 44, 1, 1, 1, 8, 1, 33, 101, 103,
-<a name="l05607"></a>05607 35, 20, -48, -60, -65, -38, -41, -54, -60, -56, 0, 2, 0, 72, -1, -24, 4, 44, 5, -70, 0, 19, 0, 31, 1,
-<a name="l05608"></a>05608 -122, 64, -127, 59, 18, 1, 88, 10, 90, 12, 85, 15, 104, 10, 104, 12, 120, 31, 6, 69, 25, 74, 27, 74, 31,
-<a name="l05609"></a>05609 85, 6, 90, 9, 5, 39, 21, 40, 31, 55, 21, 56, 31, 69, 21, 5, -58, 3, 1, 51, 22, 57, 24, 57, 28,
-<a name="l05610"></a>05610 51, 30, 91, 28, -114, 19, -121, 31, -103, 3, -88, 18, -72, 18, -42, 21, -38, 25, -36, 28, -42, 31, -25, 12, -25,
-<a name="l05611"></a>05611 22, -9, 12, -9, 22, 18, 107, 6, 111, 10, 99, 12, 96, 16, 99, 22, 111, 24, 111, 28, 96, 30, 126, 19, 9,
-<a name="l05612"></a>05612 95, 6, 95, 10, 80, 12, 80, 16, 80, 22, 95, 24, 90, 28, 80, 30, 8, 6, 3, 21, 3, 43, 17, 107, 12,
-<a name="l05613"></a>05613 106, 16, 5, 19, 2, 0, 29, -72, 2, -102, -75, 5, 17, 7, 17, 2, 23, -72, 2, -102, -78, 11, 11, 2, -72,
-<a name="l05614"></a>05614 2, -102, 64, 51, 0, 0, 123, 3, -117, 3, 2, 3, 1, 0, 48, 17, 64, 17, 2, 91, 17, 107, 17, 127, 17,
-<a name="l05615"></a>05615 -113, 17, 4, 5, 17, 8, 14, 64, 0, 1, 0, 0, 14, 1, 1, 26, 64, 33, 64, 13, 13, 2, 85, 33, 64,
-<a name="l05616"></a>05616 11, 11, 2, 85, 8, -72, -1, -22, 64, 17, 15, 15, 2, 85, 8, 24, 13, 13, 2, 85, 8, 16, 11, 11, 2,
-<a name="l05617"></a>05617 85, 8, -72, -1, -16, -76, 15, 15, 6, 85, 8, -72, -1, -15, -76, 11, 13, 6, 85, 8, -72, -1, -64, 64, 74,
-<a name="l05618"></a>05618 36, 37, 52, 48, 8, 1, 0, 8, 16, 8, 32, 8, 3, 8, 49, 33, 20, 64, 14, 12, 14, 15, 2, 85, 14,
-<a name="l05619"></a>05619 18, 13, 13, 2, 85, 14, 12, 12, 12, 2, 85, 14, 28, 11, 11, 2, 85, 14, 12, 16, 16, 6, 85, 14, 13,
-<a name="l05620"></a>05620 13, 13, 6, 85, 14, 22, 12, 12, 6, 85, 14, 13, 11, 11, 6, 85, 31, 14, 63, 14, 2, 14, 49, 32, 16,
-<a name="l05621"></a>05621 -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, -10, 93, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 51,
-<a name="l05622"></a>05622 47, 17, 51, 47, 93, 17, 18, 57, 57, 93, 114, 17, 18, 57, 93, 0, 63, -19, 63, -19, 17, 51, 63, 51, -19,
-<a name="l05623"></a>05623 17, 18, 57, 49, 48, 1, 113, 93, 93, 93, 114, 0, 93, 93, 93, 113, 19, 33, 21, 33, 22, 23, 22, 22, 21,
-<a name="l05624"></a>05624 16, 0, 35, 34, 2, 53, 16, 0, 55, 38, 39, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, -82, 3,
-<a name="l05625"></a>05625 33, -3, -48, 100, -43, -66, -106, -2, -23, -32, -11, -8, 1, 6, -74, 93, -7, 82, -77, -117, 122, -69, -78, -121, -107,
-<a name="l05626"></a>05626 -91, 5, -70, -110, 102, -109, -124, -30, -63, -2, -3, -2, -29, 1, 64, -36, 1, 0, 1, 13, 7, 65, -33, -4, -54,
-<a name="l05627"></a>05627 -86, -36, -68, -53, -68, -50, -24, 0, 0, 1, 0, 98, -1, -24, 3, 99, 4, 62, 0, 36, 0, -24, 64, 55, 31,
-<a name="l05628"></a>05628 38, 95, 38, 125, 2, 125, 21, -119, 1, -117, 2, -125, 8, -124, 15, -117, 21, -119, 22, -78, 4, -78, 15, -61, 4,
-<a name="l05629"></a>05629 -62, 15, 14, -128, 38, 1, 38, 33, 57, 26, 54, 34, 117, 7, 121, 16, -76, 5, -74, 33, -60, 5, -58, 33, 9,
-<a name="l05630"></a>05630 30, 12, 23, 22, -72, -1, -64, 64, 14, 9, 12, 52, 22, 22, 20, 0, 63, 1, 1, 1, 1, 3, 11, -72, 2,
-<a name="l05631"></a>05631 -102, 64, 9, 112, 12, -65, 12, 2, 12, 12, 25, 3, -72, 2, -102, -78, 35, 7, 20, -72, 2, -102, 64, 43, 25,
-<a name="l05632"></a>05632 11, 30, 6, 28, 12, 12, 23, 28, 1, 0, 22, 23, 6, 64, 32, 64, 26, 34, 52, 32, 32, 28, 16, 0, 1,
-<a name="l05633"></a>05633 0, 0, 0, 23, 32, 23, 96, 23, -128, 23, 4, 23, -86, 38, 17, 64, 28, -72, -1, -8, 64, 24, 15, 15, 6,
-<a name="l05634"></a>05634 85, 28, 16, 12, 12, 6, 85, 28, 22, 11, 11, 6, 85, 31, 28, 79, 28, 2, 28, 52, 37, 16, -10, 93, 43,
-<a name="l05635"></a>05635 43, 43, -19, 16, -10, 93, 50, 47, 113, 17, 51, 47, 43, -19, 17, 51, 17, 51, 17, 18, 57, 47, 17, 18, 57,
-<a name="l05636"></a>05636 0, 63, -19, 63, -19, 18, 57, 47, 113, -19, 17, 51, 47, 93, 51, 17, 51, 47, 43, 51, 17, 57, 49, 48, 0,
-<a name="l05637"></a>05637 93, 1, 113, 93, 1, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 55, 21, 38, 35, 34, 6, 21, 20, 22, 51,
-<a name="l05638"></a>05638 50, 55, 23, 6, 35, 34, 38, 53, 52, 55, 38, 53, 52, 54, 51, 50, 3, 61, -127, 123, 107, 88, 81, 120, 116,
-<a name="l05639"></a>05639 15, 35, 32, 16, -113, 111, 112, 77, -115, 123, -127, -96, -18, -69, -72, -80, -109, -82, -76, -50, 3, -82, 104, 93, 94,
-<a name="l05640"></a>05640 54, 70, 93, 1, -105, 1, 110, 69, 71, 97, -125, 109, -86, -66, 126, -75, 76, 83, -110, 119, -67, 0, 2, 0, 68,
-<a name="l05641"></a>05641 -1, -24, 4, -61, 4, 62, 0, 15, 0, 27, 1, 36, 64, 61, 54, 17, 54, 21, 57, 23, 57, 27, 69, 17, 69,
-<a name="l05642"></a>05642 21, 73, 23, 73, 27, 83, 2, 88, 5, 84, 8, 82, 17, 84, 21, 94, 23, 101, 2, 106, 5, 100, 8, 100, 17,
-<a name="l05643"></a>05643 100, 21, 109, 23, 20, 15, 2, 2, 10, 4, 22, 28, 7, 11, 1, 28, 15, 6, 16, 28, 13, 7, 25, 36, 4,
-<a name="l05644"></a>05644 -72, -1, -22, -76, 14, 14, 2, 85, 4, -72, -1, -22, -76, 10, 12, 2, 85, 4, -72, -1, -17, -76, 16, 16, 6,
-<a name="l05645"></a>05645 85, 4, -72, -1, -32, -76, 15, 15, 6, 85, 4, -72, -1, -43, -76, 13, 13, 6, 85, 4, -72, -1, -15, -76, 12,
-<a name="l05646"></a>05646 12, 6, 85, 4, -72, -1, -28, 64, 33, 11, 11, 6, 85, 80, 4, 96, 4, 112, 4, -128, 4, 4, 16, 4, 48,
-<a name="l05647"></a>05647 4, 64, 4, 80, 4, 96, 4, 112, 4, -128, 4, -112, 4, -80, 4, 9, 4, -72, 1, -49, 64, 50, 10, 63, 0,
-<a name="l05648"></a>05648 1, 15, 0, -113, 0, 2, 0, -86, 29, 19, 36, 10, 64, 36, 37, 52, 10, 12, 14, 15, 2, 85, 10, 18, 13,
-<a name="l05649"></a>05649 13, 2, 85, 10, 12, 12, 12, 2, 85, 10, 28, 11, 11, 2, 85, 10, 12, 16, 16, 6, 85, 10, -72, -1, -1,
-<a name="l05650"></a>05650 64, 30, 15, 15, 6, 85, 10, 12, 13, 13, 6, 85, 10, 30, 12, 12, 6, 85, 10, 10, 11, 11, 6, 85, 31,
-<a name="l05651"></a>05651 10, 63, 10, 2, 10, 49, 28, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, -26, 113, 93,
-<a name="l05652"></a>05652 16, -3, 93, 113, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, -19, 63, -19, 63, -19, 1, 17, 18, 57, 17, 51,
-<a name="l05653"></a>05653 49, 48, 1, 93, 1, 21, 33, 22, 17, 16, 0, 35, 34, 0, 17, 16, 0, 51, 50, 23, 7, 34, 6, 21, 20,
-<a name="l05654"></a>05654 22, 51, 50, 54, 53, 52, 38, 4, -61, -2, -33, -123, -2, -35, -48, -40, -2, -24, 1, 35, -51, 75, 95, -83, -125,
-<a name="l05655"></a>05655 -79, -83, -118, -111, -85, -99, 4, 38, -110, 124, -2, -6, -2, -29, -2, -13, 1, 24, 1, 19, 1, 27, 1, 16, 24,
-<a name="l05656"></a>05656 125, -52, -53, -54, -52, -43, -62, -79, -27, 0, 1, 0, 46, 0, 0, 2, -6, 4, 38, 0, 7, 0, -67, 64, 29,
-<a name="l05657"></a>05657 16, 9, 80, 9, 96, 9, 112, 9, -128, 9, -97, 9, -48, 9, 7, 79, 9, 1, 2, 10, 7, 4, 28, 5, 6,
-<a name="l05658"></a>05658 127, 7, 1, 7, -72, 1, 15, -76, 1, 112, 4, 1, 4, -72, 1, 15, -78, 1, 37, 2, -72, -1, -32, -76, 16,
-<a name="l05659"></a>05659 16, 2, 85, 2, -72, -1, -12, -76, 13, 13, 2, 85, 2, -72, -1, -2, -76, 12, 12, 2, 85, 2, -72, -1, -28,
-<a name="l05660"></a>05660 -76, 11, 11, 2, 85, 2, -72, -1, -20, 64, 11, 10, 10, 2, 85, 2, 8, 16, 16, 6, 85, 2, -72, -1, -8,
-<a name="l05661"></a>05661 -76, 13, 13, 6, 85, 2, -72, -1, -10, 64, 45, 12, 12, 6, 85, 16, 2, 32, 2, 112, 2, -128, 2, -48, 2,
-<a name="l05662"></a>05662 -32, 2, -16, 2, 7, 64, 2, -96, 2, -80, 2, 3, 0, 2, 112, 2, -128, 2, -48, 2, -32, 2, -16, 2, 6,
-<a name="l05663"></a>05663 9, 0, 2, 1, 74, 2, 47, 94, 93, 94, 114, 113, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, -28, 93, 16,
-<a name="l05664"></a>05664 -28, 93, 0, 63, -3, 60, 63, 49, 48, 1, 113, 93, 1, 17, 35, 17, 33, 53, 33, 21, 1, -6, -76, -2, -24,
-<a name="l05665"></a>05665 2, -52, 3, -108, -4, 108, 3, -108, -110, -110, 0, 2, 0, 72, -2, 105, 4, -23, 4, 63, 0, 27, 0, 37, 1,
-<a name="l05666"></a>05666 30, 64, 68, 64, 39, 1, 35, 5, 35, 23, 40, 24, 56, 29, 72, 29, 115, 12, 122, 23, -118, 9, -116, 23, -76,
-<a name="l05667"></a>05667 5, -9, 2, 11, 82, 13, 102, 4, 103, 5, 98, 13, 103, 27, -104, 23, -88, 23, -57, 13, -54, 18, -54, 23, -54,
-<a name="l05668"></a>05668 24, 11, 28, 51, 6, 28, 19, 22, 11, 21, 1, 28, 0, 34, 28, 11, 7, 0, 7, 1, 0, -72, -1, -64, 64,
-<a name="l05669"></a>05669 21, 9, 14, 52, 0, 0, 25, 28, 20, 6, 79, 21, 1, 21, 37, 20, 6, 16, 16, 2, 85, 20, -72, -1, -12,
-<a name="l05670"></a>05670 -76, 15, 15, 2, 85, 20, -72, -1, -4, 64, 24, 15, 15, 6, 85, 20, 6, 12, 12, 6, 85, 20, 64, 11, 13,
-<a name="l05671"></a>05671 52, -65, 20, 1, 20, 20, 25, 31, 36, 15, -72, -1, -10, -76, 15, 15, 6, 85, 15, -72, -1, -15, -76, 13, 13,
-<a name="l05672"></a>05672 6, 85, 15, -72, -1, -18, -76, 12, 12, 6, 85, 15, -72, -1, -14, 64, 28, 11, 11, 6, 85, 64, 15, 1, 0,
-<a name="l05673"></a>05673 15, 16, 15, 32, 15, 48, 15, 4, 15, 49, 39, 3, 36, 25, 16, 16, 16, 6, 85, 25, -72, -1, -4, 64, 31,
-<a name="l05674"></a>05674 15, 15, 6, 85, 25, 18, 13, 13, 6, 85, 25, 23, 12, 12, 6, 85, 25, 14, 11, 11, 6, 85, 63, 25, 1,
-<a name="l05675"></a>05675 25, 49, 38, 52, 55, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, -19, 16, -10, 93, 113, 43, 43, 43, 43, -19,
-<a name="l05676"></a>05676 18, 57, 47, 93, 43, 43, 43, 43, 43, -3, 113, 60, 16, 60, 17, 57, 47, 43, 51, 0, 63, 63, -19, 16, -19,
-<a name="l05677"></a>05677 47, 63, 60, -3, -28, 49, 48, 0, 93, 1, 93, 113, 1, 7, 6, 17, 20, 22, 23, 17, 52, 54, 54, 51, 50,
-<a name="l05678"></a>05678 22, 22, 21, 20, 6, 6, 7, 17, 35, 17, 34, 0, 17, 52, 0, 1, 54, 54, 53, 52, 38, 35, 34, 6, 21,
-<a name="l05679"></a>05679 1, -13, 35, -49, -93, -94, 30, 107, 92, -113, -77, 124, 98, -36, -77, -78, -70, -2, -68, 1, 3, 1, -83, 127, -75,
-<a name="l05680"></a>05680 -124, 74, 53, 49, 4, 59, -100, 69, -2, -37, -101, -13, 35, 2, -108, 106, 115, 73, 116, -6, -112, 120, -15, -54, 38,
-<a name="l05681"></a>05681 -2, -126, 1, 126, 1, 70, 1, 0, -19, 1, 37, -4, 77, 23, -18, -63, -77, -92, 73, 124, 0, 2, -1, -31, -3,
-<a name="l05682"></a>05682 103, 4, -118, -2, -21, 0, 3, 0, 7, 0, 67, -74, 2, 1, 63, 3, 0, 6, 0, -72, 2, -97, 64, 24, 5,
-<a name="l05683"></a>05683 7, 5, 63, 4, 7, 6, 6, 3, 3, 2, 26, 9, 4, 5, 5, 0, 0, 1, -59, 8, 67, 65, 24, 43, 16,
-<a name="l05684"></a>05684 -11, 60, 16, 60, 16, 60, 78, 16, -10, 60, 16, 60, 16, 60, 0, 47, 77, -19, 60, 16, -26, 60, 16, 60, -3,
-<a name="l05685"></a>05685 60, 49, 48, 3, 53, 33, 21, 1, 53, 33, 21, 31, 4, -87, -5, 87, 4, -87, -2, 105, -126, -126, -2, -2, -127,
-<a name="l05686"></a>05686 -127, -1, -1, 0, -80, 0, 0, 3, 79, 5, -70, 0, 38, 0, 4, 0, 0, 1, 7, 0, 4, 1, -64, 0, 0,
-<a name="l05687"></a>05687 0, 13, -77, 2, 1, 14, 4, -72, 1, -64, -79, 72, 39, 1, 43, 0, 0, 1, 0, 82, 2, 7, 2, -101, 4,
-<a name="l05688"></a>05688 -82, 0, 20, 0, 90, 64, 26, 53, 4, 68, 4, 101, 4, 98, 17, 119, 4, 112, 17, 6, 18, 13, 20, 3, 3,
-<a name="l05689"></a>05689 16, 20, 1, 2, 39, 6, 12, 20, -72, 1, 89, 64, 24, 6, 28, 16, 7, 13, 37, 10, -126, 20, 2, 63, 1,
-<a name="l05690"></a>05690 20, 37, 1, 48, 0, 1, 0, 25, 21, 113, -116, 24, 43, 78, 16, -12, 93, 60, 77, -19, 16, -19, 16, -12, -19,
-<a name="l05691"></a>05691 0, 63, -19, -12, 60, 16, -12, 60, 17, 18, 57, 47, 1, 17, 18, 57, 49, 48, 0, 93, 19, 17, 51, 21, 54,
-<a name="l05692"></a>05692 54, 51, 50, 22, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 82, -126, 41, 103, 64, 83, 114, 50, -115,
-<a name="l05693"></a>05693 65, 68, 81, 89, 2, 7, 2, -103, 69, 41, 42, 63, 101, 109, -2, 106, 1, -111, 88, 69, 92, 104, -2, -106, 0,
-<a name="l05694"></a>05694 3, 0, 51, -1, -26, 8, -109, 5, -70, 0, 54, 0, 65, 0, 95, 1, 106, 64, 107, 83, 4, 82, 28, 102, 27,
-<a name="l05695"></a>05695 101, 28, -123, 14, -118, 87, -119, 89, -120, 91, -102, 90, -100, 91, 10, 6, 28, 10, 35, 5, 47, 22, 28, 25, 35,
-<a name="l05696"></a>05696 21, 47, 35, 27, 44, 35, 52, 26, 69, 25, 66, 26, 74, 59, 74, 63, 81, 3, 85, 4, 100, 3, 108, 19, 100,
-<a name="l05697"></a>05697 47, 101, 48, 98, 80, 118, 4, 123, 19, 121, 83, 123, 87, 122, 91, -123, 4, -113, 14, -113, 19, -115, 22, -123, 31,
-<a name="l05698"></a>05698 -119, 59, -128, 80, -116, 94, -115, 95, -87, 13, -72, 13, -60, 13, -54, 35, -60, 37, 39, 26, 12, 81, 88, 33, 20,
-<a name="l05699"></a>05699 36, -72, 2, -73, -75, 71, 28, 40, 78, 58, 77, -72, 1, 19, 64, 19, 40, 20, 28, 12, 8, 58, 7, 56, 30,
-<a name="l05700"></a>05700 52, 52, 53, 55, 30, 0, 0, 17, 58, 16, -72, 1, 19, -78, 12, 7, 95, -72, 2, -76, 64, 57, 46, 43, 10,
-<a name="l05701"></a>05701 5, 6, 53, 10, 71, 28, 40, 11, 81, 28, 33, 11, 61, 60, 5, 46, 106, 5, 106, 7, 37, -27, 93, 78, 39,
-<a name="l05702"></a>05702 23, 94, 93, 61, 77, 36, -59, 74, 56, 77, 106, 68, 58, 8, 37, 44, 7, 32, 16, 16, 2, 85, 7, 8, 13,
-<a name="l05703"></a>05703 13, 2, 85, 7, -72, -1, -8, 64, 51, 12, 12, 2, 85, 7, 7, 96, 97, 16, 56, 30, 17, 56, 85, 94, 30,
-<a name="l05704"></a>05704 26, 97, 55, 53, -70, 54, 54, 0, 28, 16, 16, 2, 85, 0, 42, 15, 15, 2, 85, 0, 38, 13, 13, 2, 85,
-<a name="l05705"></a>05705 0, 42, 11, 12, 2, 85, 0, 25, 96, 97, -72, 1, -17, -77, 33, -101, 104, 24, 43, 43, 78, -12, 43, 43, 43,
-<a name="l05706"></a>05706 43, 60, 77, 16, -3, 60, 78, 16, -10, 77, -3, -28, 16, -28, 17, 18, 57, 47, 43, 43, 43, 60, -3, -28, -10,
-<a name="l05707"></a>05707 -12, -27, 16, -10, -3, -28, 16, -27, 16, -26, -26, 16, -19, 0, 63, -19, 63, -19, 63, 63, 60, -3, -26, 63, -3,
-<a name="l05708"></a>05708 -28, 63, -19, 17, 57, 47, -19, 47, -28, 16, -19, 16, -3, -28, 16, -3, -27, 17, 18, 57, 17, 18, 57, 49, 48,
-<a name="l05709"></a>05709 1, 93, 0, 93, 19, 33, 50, 23, 22, 23, 51, 17, 23, 17, 33, 54, 51, 50, 23, 22, 23, 39, 38, 38, 35,
-<a name="l05710"></a>05710 34, 6, 21, 20, 23, 22, 4, 22, 22, 21, 20, 6, 35, 34, 38, 39, 7, 6, 6, 35, 34, 39, 38, 53, 17,
-<a name="l05711"></a>05711 35, 6, 6, 7, 6, 35, 35, 17, 35, 19, 17, 51, 50, 54, 54, 53, 52, 38, 38, 35, 1, 17, 7, 20, 22,
-<a name="l05712"></a>05712 51, 50, 54, 55, 38, 38, 39, 23, 22, 22, 51, 50, 55, 54, 53, 52, 39, 38, 36, 39, 38, 38, 53, 52, 55,
-<a name="l05713"></a>05713 51, 1, -50, -22, 123, 94, 13, 92, -74, 1, 64, 85, 92, -67, 118, 95, 4, -69, 6, 104, 102, 102, 101, 57, 56,
-<a name="l05714"></a>05714 1, 61, -117, 74, -21, -60, 125, -98, 69, 1, 28, 47, 18, -109, 65, 37, 102, 31, -112, 114, 79, -61, -97, -62, -62,
-<a name="l05715"></a>05715 -124, -96, -102, 88, 72, 125, -124, 3, 33, 1, 46, 44, 12, 26, 14, 23, 18, 1, -74, 8, -127, 108, 105, 76, 57,
-<a name="l05716"></a>05716 35, 46, -2, -81, 56, 86, 81, 32, 5, -70, -127, 99, -82, 1, 54, 1, -2, -53, 28, 102, 82, -111, 1, 83, 87,
-<a name="l05717"></a>05717 80, 46, 55, 36, 36, 76, 81, -120, 75, -123, -50, 74, 83, -125, 8, 8, 78, 44, 102, 2, -57, 116, -106, 33, 22,
-<a name="l05718"></a>05718 -3, -86, 5, 15, -3, -16, 50, 122, 92, 83, 121, 60, -2, -120, -3, 113, 31, 38, 44, 5, 5, 47, 76, 54, 1,
-<a name="l05719"></a>05719 99, 111, 61, 46, 60, 46, 32, 42, 91, 29, 46, 120, 78, 77, 63, 0, 0, 1, 0, 79, 0, -99, 7, -80, 3,
-<a name="l05720"></a>05720 108, 0, 16, 0, 0, 1, 51, 6, 6, 7, 33, 21, 33, 22, 23, 35, 38, 38, 39, 53, 54, 54, 1, -20, 76,
-<a name="l05721"></a>05721 59, 59, 77, 6, 59, -7, -59, 104, 94, 78, -127, -70, 99, 87, -62, 3, 108, 118, 95, 96, 101, 108, -55, -112, -107,
-<a name="l05722"></a>05722 48, 45, 37, -104, 0, 0, 1, 0, -103, -2, 83, 3, 104, 5, 59, 0, 16, 0, 0, 19, 54, 54, 55, 51, 22,
-<a name="l05723"></a>05723 22, 23, 21, 38, 39, 17, 35, 17, 6, 6, 7, -103, -111, -105, 37, 46, 47, -107, -112, -55, 108, 101, 96, 95, 118,
-<a name="l05724"></a>05724 3, -98, -123, -62, 86, 99, -70, -127, 77, 94, 103, -6, 62, 5, -62, 76, 60, 59, 0, 0, 1, 0, 79, 0, -99,
-<a name="l05725"></a>05725 7, -80, 3, 108, 0, 16, 0, 0, 1, 22, 22, 23, 21, 6, 6, 7, 35, 54, 55, 33, 53, 33, 38, 38, 39,
-<a name="l05726"></a>05726 6, 19, -123, -62, 86, 99, -70, -127, 77, 94, 103, -7, -59, 6, 59, 76, 60, 59, 3, 108, -111, -105, 37, 45, 48,
-<a name="l05727"></a>05727 -107, -112, -55, 108, 101, 97, 94, 118, 0, 1, 0, -103, -2, 83, 3, 104, 5, 59, 0, 16, 0, 0, 23, 53, 22,
-<a name="l05728"></a>05728 22, 23, 17, 51, 17, 54, 55, 21, 6, 6, 7, 35, 38, 38, -103, 119, 94, 96, 101, 108, -55, -112, -107, 47, 46,
-<a name="l05729"></a>05729 37, -105, 16, 76, 59, 60, 76, 5, -62, -6, 62, 103, 94, 77, -127, -70, 99, 86, -62, 0, 0, 1, 0, 79, 0,
-<a name="l05730"></a>05730 -98, 7, -80, 3, 110, 0, 27, 0, 0, 1, 21, 6, 6, 7, 35, 54, 55, 33, 22, 23, 35, 38, 38, 39, 53,
-<a name="l05731"></a>05731 54, 54, 55, 51, 6, 7, 33, 38, 39, 51, 22, 22, 7, -80, 94, -74, -126, 80, 69, 125, -6, -25, 125, 69, 80,
-<a name="l05732"></a>05732 -126, -74, 94, 94, -74, -126, 80, 69, 125, 5, 25, 125, 69, 80, -126, -74, 2, 28, 45, 43, -110, -108, -84, -117, -117,
-<a name="l05733"></a>05733 -84, -108, -110, 43, 45, 44, -111, -107, -84, -117, -117, -84, -107, -111, 0, 1, 0, -104, -2, 85, 3, 103, 5, -73, 0,
-<a name="l05734"></a>05734 27, 0, 0, 1, 51, 22, 22, 23, 21, 38, 39, 17, 54, 55, 21, 6, 6, 7, 35, 38, 38, 39, 53, 22, 23,
-<a name="l05735"></a>05735 17, 6, 7, 53, 54, 54, 1, -23, 45, 44, -111, -108, -85, -116, -116, -85, -108, -111, 44, 45, 43, -110, -108, -85, -116,
-<a name="l05736"></a>05736 -116, -85, -108, -110, 5, -73, 94, -73, -126, 80, 69, 126, -6, -26, 126, 68, 79, -126, -73, 94, 94, -73, -126, 79, 68,
-<a name="l05737"></a>05737 126, 5, 26, 126, 69, 80, -126, -73, 0, 2, 0, -104, -3, -108, 3, 103, 5, -73, 0, 27, 0, 31, 0, 0, 1,
-<a name="l05738"></a>05738 51, 22, 22, 23, 21, 38, 39, 17, 54, 55, 21, 6, 6, 7, 35, 38, 38, 39, 53, 22, 23, 17, 6, 7, 53,
-<a name="l05739"></a>05739 54, 54, 1, 33, 21, 33, 1, -23, 45, 44, -111, -108, -85, -116, -116, -85, -108, -111, 44, 45, 43, -110, -108, -85, -116,
-<a name="l05740"></a>05740 -116, -85, -108, -110, -2, -36, 2, -51, -3, 51, 5, -73, 94, -73, -126, 80, 69, 126, -6, -26, 126, 68, 79, -126, -73,
-<a name="l05741"></a>05741 94, 94, -73, -126, 79, 68, 126, 5, 26, 126, 69, 80, -126, -73, -8, -99, 98, 0, 0, 1, 1, 106, 0, 0, 6,
-<a name="l05742"></a>05742 107, 4, -1, 0, 5, 0, 0, 1, 51, 17, 33, 21, 33, 1, 106, 100, 4, -99, -6, -1, 4, -1, -5, 101, 100,
-<a name="l05743"></a>05743 0, 1, 0, -98, 0, 0, 5, 35, 5, -44, 0, 33, 0, -124, -78, 70, 8, 26, -72, 2, -69, 64, 26, 9, 3,
-<a name="l05744"></a>05744 17, 18, 1, 0, 8, 19, 18, 32, 17, 17, 16, 26, 35, 0, 33, 1, 33, 32, 2, 25, 34, -98, 121, 24, 43,
-<a name="l05745"></a>05745 78, 16, -12, 77, -19, 60, 16, 60, 78, 16, -10, 60, 77, 16, -3, 60, 0, 63, 60, 60, 60, 63, -19, 49, 48,
-<a name="l05746"></a>05746 67, 121, 64, 56, 22, 30, 3, 15, 29, 30, 28, 30, 2, 6, 4, 3, 5, 3, 6, 3, 7, 3, 4, 6, 14,
-<a name="l05747"></a>05747 15, 13, 15, 12, 15, 11, 15, 4, 6, 23, 22, 24, 22, 2, 6, 27, 8, 31, 88, 0, 25, 10, 21, 88, 1,
-<a name="l05748"></a>05748 30, 3, 26, 88, 1, 22, 15, 26, 88, 1, 43, 43, 1, 43, 43, 42, 42, 42, 42, -127, -127, 33, 35, 17, 16,
-<a name="l05749"></a>05749 55, 62, 3, 51, 50, 30, 2, 23, 22, 21, 17, 35, 17, 52, 39, 46, 3, 35, 34, 14, 2, 7, 6, 21, 1,
-<a name="l05750"></a>05750 37, -121, 7, 12, 68, -107, -37, 124, 119, -41, -96, 69, 11, 4, -122, 6, 10, 53, 111, -83, 92, 92, -76, 115, 46,
-<a name="l05751"></a>05751 7, 3, 2, 109, 1, 5, 69, 125, -94, -100, 98, 93, -96, -76, -121, 52, -5, -3, -109, 2, 116, -29, 63, 114, -121,
-<a name="l05752"></a>05752 118, 76, 80, -125, -100, 104, 54, -48, 0, 0, 3, 0, 114, 0, -62, 4, 58, 4, -28, 0, 3, 0, 7, 0, 11,
-<a name="l05753"></a>05753 0, 106, 64, 60, 11, 10, 37, 8, 63, 9, 1, -112, 9, -64, 9, 2, 9, -65, 6, 3, 2, 0, 1, 37, 48,
-<a name="l05754"></a>05754 2, 1, -97, 2, -49, 2, 2, 2, -65, 5, 7, 6, 37, 4, 5, 8, 11, 11, 4, 7, 7, 3, 0, 26, 13,
-<a name="l05755"></a>05755 9, 10, 10, 5, 5, 6, 6, 2, 1, 25, 12, 87, 90, 24, 43, 78, 16, -12, 60, 60, 16, 60, 16, 60, 16,
-<a name="l05756"></a>05756 60, 16, -10, 60, 60, 16, 60, 60, 16, 60, 0, 47, 60, 77, -3, 60, 16, -3, 93, 113, -3, 60, 16, 60, 16,
-<a name="l05757"></a>05757 -3, 93, 113, 60, -3, 60, 49, 48, 1, 33, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 4, 58, -4, 56, 3,
-<a name="l05758"></a>05758 -56, -4, 56, 3, -56, -4, 56, 3, -56, 4, 61, -89, -3, -101, -88, -3, -101, -88, 0, 0, 2, 0, -99, 0, 0,
-<a name="l05759"></a>05759 4, 56, 4, -127, 0, 4, 0, 9, 0, 0, 51, 17, 1, 1, 17, 37, 33, 17, 1, 1, -99, 1, -51, 1, -50,
-<a name="l05760"></a>05760 -4, -74, 2, -7, -2, -125, -2, -124, 2, 122, 2, 7, -3, -7, -3, -122, 81, 2, 7, 1, -85, -2, 85, 0, 1,
-<a name="l05761"></a>05761 0, 113, 1, -88, 4, 57, 4, 6, 0, 5, 0, 45, -76, 3, 37, 2, 2, 1, -72, 1, -71, 64, 14, 0, 2,
-<a name="l05762"></a>05762 26, 7, 4, 5, 37, 1, 0, 25, 6, 87, 90, 24, 43, 78, 16, -12, 60, 77, -3, 60, 78, 16, -26, 0, 47,
-<a name="l05763"></a>05763 77, -2, 60, 16, -19, 49, 48, 19, 17, 33, 21, 33, 17, 113, 3, -56, -4, -30, 1, -88, 2, 94, -88, -2, 74,
-<a name="l05764"></a>05764 0, 0, 1, 2, 34, -3, -3, 3, -48, 6, -55, 0, 22, 0, 0, 1, 35, 17, 52, 54, 51, 50, 22, 21, 20,
-<a name="l05765"></a>05765 6, 35, 34, 39, 38, 38, 35, 34, 7, 6, 7, 6, 21, 2, -77, -111, -77, 113, 67, 71, 51, 37, 30, 27, 18,
-<a name="l05766"></a>05766 47, 23, 17, 14, 10, 4, 7, -3, -3, 7, 19, -37, -34, 65, 44, 40, 52, 15, 10, 73, 12, 8, 19, 33, 106,
-<a name="l05767"></a>05767 0, 1, 1, 5, -3, -3, 2, -77, 6, -55, 0, 22, 0, 0, 1, 51, 17, 20, 6, 35, 34, 38, 53, 52, 54,
-<a name="l05768"></a>05768 51, 50, 23, 22, 22, 51, 50, 55, 54, 55, 54, 53, 2, 34, -111, -77, 113, 67, 71, 51, 36, 31, 28, 18, 46,
-<a name="l05769"></a>05769 23, 17, 14, 10, 4, 7, 6, -55, -8, -19, -37, -34, 65, 44, 40, 52, 16, 10, 72, 12, 7, 21, 32, 106, 0,
-<a name="l05770"></a>05770 1, -1, -23, 2, 22, 5, -63, 2, -59, 0, 3, 0, 0, 1, 33, 53, 33, 5, -63, -6, 40, 5, -40, 2, 22,
-<a name="l05771"></a>05771 -81, 0, 0, 1, 1, -55, -3, -109, 2, 120, 7, 72, 0, 3, 0, 0, 1, 17, 51, 17, 1, -55, -81, -3, -109,
-<a name="l05772"></a>05772 9, -75, -10, 75, 0, 0, 1, 2, 126, -3, -109, 5, -62, 2, -59, 0, 5, 0, 0, 1, 21, 33, 17, 35, 17,
-<a name="l05773"></a>05773 5, -62, -3, 107, -81, 2, -59, -81, -5, 125, 5, 50, 0, 1, -1, -23, -3, -109, 3, 44, 2, -59, 0, 5, 0,
-<a name="l05774"></a>05774 0, 1, 33, 53, 33, 17, 35, 2, 125, -3, 108, 3, 67, -81, 2, 22, -81, -6, -50, 0, 1, 2, 126, 2, 22,
-<a name="l05775"></a>05775 5, -62, 7, 72, 0, 5, 0, 0, 1, 17, 51, 17, 33, 21, 2, 126, -81, 2, -107, 2, 22, 5, 50, -5, 125,
-<a name="l05776"></a>05776 -81, 0, 1, -1, -23, 2, 22, 3, 44, 7, 72, 0, 5, 0, 0, 1, 33, 53, 33, 17, 51, 3, 44, -4, -67,
-<a name="l05777"></a>05777 2, -108, -81, 2, 22, -81, 4, -125, 0, 1, 2, 126, -3, -109, 5, -62, 7, 72, 0, 7, 0, 0, 1, 17, 51,
-<a name="l05778"></a>05778 17, 33, 21, 33, 17, 2, 126, -81, 2, -107, -3, 107, -3, -109, 9, -75, -5, 125, -81, -5, 125, 0, 1, -1, -23,
-<a name="l05779"></a>05779 -3, -109, 3, 44, 7, 72, 0, 7, 0, 0, 1, 17, 33, 53, 33, 17, 51, 17, 2, 125, -3, 108, 2, -108, -81,
-<a name="l05780"></a>05780 -3, -109, 4, -125, -81, 4, -125, -10, 75, 0, 1, -1, -23, -3, -109, 5, -63, 2, -59, 0, 7, 0, 0, 1, 33,
-<a name="l05781"></a>05781 53, 33, 21, 33, 17, 35, 2, 125, -3, 108, 5, -40, -3, 107, -81, 2, 22, -81, -81, -5, 125, 0, 0, 1, -1,
-<a name="l05782"></a>05782 -23, 2, 22, 5, -63, 7, 72, 0, 7, 0, 0, 1, 33, 53, 33, 17, 51, 17, 33, 5, -63, -6, 40, 2, -108,
-<a name="l05783"></a>05783 -81, 2, -107, 2, 22, -81, 4, -125, -5, 125, 0, 1, -1, -23, -3, -109, 5, -63, 7, 72, 0, 11, 0, 0, 1,
-<a name="l05784"></a>05784 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 35, 2, 125, -3, 108, 2, -108, -81, 2, -107, -3, 107, -81, 2, 22,
-<a name="l05785"></a>05785 -81, 4, -125, -5, 125, -81, -5, 125, 0, 2, -1, -23, 1, 88, 5, -63, 3, -125, 0, 3, 0, 7, 0, 0, 1,
-<a name="l05786"></a>05786 33, 53, 33, 17, 33, 53, 33, 5, -63, -6, 40, 5, -40, -6, 40, 5, -40, 2, -44, -81, -3, -43, -81, 0, 2,
-<a name="l05787"></a>05787 1, -64, -3, -109, 3, -21, 7, 72, 0, 3, 0, 7, 0, 0, 1, 17, 51, 17, 33, 17, 51, 17, 3, 60, -81,
-<a name="l05788"></a>05788 -3, -43, -81, -3, -109, 9, -75, -10, 75, 9, -75, -10, 75, 0, 1, 2, 126, -3, -109, 5, -62, 3, -125, 0, 9,
-<a name="l05789"></a>05789 0, 0, 1, 17, 33, 21, 33, 21, 33, 21, 33, 17, 2, 126, 3, 68, -3, 107, 2, -107, -3, 107, -3, -109, 5,
-<a name="l05790"></a>05790 -16, -81, -51, -81, -4, 59, 0, 0, 1, 1, -64, -3, -109, 5, -62, 2, -59, 0, 9, 0, 0, 1, 17, 33, 21,
-<a name="l05791"></a>05791 33, 17, 35, 17, 35, 17, 1, -64, 4, 2, -2, 41, -81, -51, -3, -109, 5, 50, -81, -5, 125, 4, 116, -5, -116,
-<a name="l05792"></a>05792 0, 0, 2, 1, -64, -3, -109, 5, -63, 3, -125, 0, 5, 0, 11, 0, 0, 1, 35, 17, 33, 21, 33, 1, 17,
-<a name="l05793"></a>05793 35, 17, 33, 21, 2, 111, -81, 4, 1, -4, -82, 1, 124, -81, 2, -123, -3, -109, 5, -16, -81, -2, -124, -4, 59,
-<a name="l05794"></a>05794 4, 116, -81, 0, 1, -1, -23, -3, -109, 3, 44, 3, -125, 0, 9, 0, 0, 1, 33, 53, 33, 53, 33, 53, 33,
-<a name="l05795"></a>05795 17, 35, 2, 125, -3, 108, 2, -108, -3, 108, 3, 67, -81, 1, 88, -81, -51, -81, -6, 16, 0, 1, -1, -23, -3,
-<a name="l05796"></a>05796 -109, 3, -22, 2, -59, 0, 9, 0, 0, 1, 19, 33, 53, 33, 17, 35, 17, 35, 17, 1, -65, 1, -2, 41, 4,
-<a name="l05797"></a>05797 1, -81, -51, -3, -109, 4, -125, -81, -6, -50, 4, -125, -5, 125, 0, 2, -1, -23, -3, -109, 3, -22, 3, -125, 0,
-<a name="l05798"></a>05798 5, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17, 1, 33, 53, 33, 17, 35, 3, 59, -4, -82, 4, 1, -3, -43,
-<a name="l05799"></a>05799 -2, 42, 2, -123, -81, -3, -109, 5, 65, -81, -6, 16, 3, -59, -81, -5, -116, 0, 0, 1, 2, 126, 1, 88, 5,
-<a name="l05800"></a>05800 -62, 7, 72, 0, 9, 0, 0, 1, 17, 51, 17, 33, 21, 33, 21, 33, 21, 2, 126, -81, 2, -107, -3, 107, 2,
-<a name="l05801"></a>05801 -107, 1, 88, 5, -16, -4, 59, -81, -51, -81, 0, 1, 1, -64, 2, 22, 5, -62, 7, 72, 0, 9, 0, 0, 1,
-<a name="l05802"></a>05802 33, 17, 51, 17, 51, 17, 51, 17, 33, 5, -62, -5, -2, -81, -51, -81, 1, -41, 2, 22, 5, 50, -5, 125, 4,
-<a name="l05803"></a>05803 -125, -5, 125, 0, 0, 2, 1, -64, 1, 88, 5, -63, 7, 72, 0, 5, 0, 11, 0, 0, 1, 17, 33, 21, 33,
-<a name="l05804"></a>05804 17, 1, 33, 21, 33, 17, 51, 2, 111, 3, 82, -5, -1, 2, 43, 1, -42, -3, 123, -81, 7, 72, -6, -65, -81,
-<a name="l05805"></a>05805 5, -16, -4, 59, -81, 4, 116, 0, 0, 1, -1, -23, 1, 88, 3, 44, 7, 72, 0, 9, 0, 0, 1, 33, 53,
-<a name="l05806"></a>05806 33, 53, 33, 53, 33, 17, 51, 3, 44, -4, -67, 2, -108, -3, 108, 2, -108, -81, 1, 88, -81, -51, -81, 3, -59,
-<a name="l05807"></a>05807 0, 1, -1, -23, 2, 22, 3, -22, 7, 72, 0, 9, 0, 0, 1, 33, 53, 33, 17, 51, 17, 51, 17, 51, 3,
-<a name="l05808"></a>05808 -22, -5, -1, 1, -42, -81, -51, -81, 2, 22, -81, 4, -125, -5, 125, 4, -125, 0, 2, -1, -23, 1, 88, 3, -22,
-<a name="l05809"></a>05809 7, 72, 0, 5, 0, 11, 0, 0, 1, 51, 17, 33, 53, 33, 1, 17, 51, 17, 33, 53, 3, 59, -81, -5, -1,
-<a name="l05810"></a>05810 3, 82, -2, -124, -81, -3, 123, 7, 72, -6, 16, -81, 1, 124, 3, -59, -5, -116, -81, 0, 1, 2, 126, -3, -109,
-<a name="l05811"></a>05811 5, -62, 7, 72, 0, 11, 0, 0, 1, 17, 51, 17, 33, 21, 33, 21, 33, 21, 33, 17, 2, 126, -81, 2, -107,
-<a name="l05812"></a>05812 -3, 107, 2, -107, -3, 107, -3, -109, 9, -75, -4, 59, -81, -51, -81, -4, 59, 0, 2, 1, -64, -3, -109, 5, -62,
-<a name="l05813"></a>05813 7, 72, 0, 7, 0, 11, 0, 0, 1, 17, 51, 17, 33, 21, 33, 17, 33, 17, 51, 17, 3, 60, -81, 1, -41,
-<a name="l05814"></a>05814 -2, 41, -3, -43, -81, -3, -109, 9, -75, -5, 125, -81, -5, 125, 9, -75, -10, 75, 0, 0, 3, 1, -64, -3, -109,
-<a name="l05815"></a>05815 5, -62, 7, 72, 0, 3, 0, 9, 0, 15, 0, 0, 1, 17, 51, 17, 19, 17, 51, 17, 33, 21, 1, 17, 33,
-<a name="l05816"></a>05816 21, 33, 17, 1, -64, -81, -51, -81, 1, -41, -3, 122, 2, -122, -2, 41, -3, -109, 9, -75, -10, 75, 5, 65, 4,
-<a name="l05817"></a>05817 116, -4, 59, -81, -6, -65, 4, 116, -81, -4, 59, 0, 0, 1, -1, -23, -3, -109, 3, 44, 7, 72, 0, 11, 0,
-<a name="l05818"></a>05818 0, 1, 33, 53, 33, 39, 33, 53, 33, 17, 51, 17, 35, 2, 125, -3, 108, 2, -107, 1, -3, 108, 2, -108, -81,
-<a name="l05819"></a>05819 -81, 1, 88, -81, -51, -81, 3, -59, -10, 75, 0, 2, -1, -23, -3, -109, 3, -22, 7, 72, 0, 7, 0, 11, 0,
-<a name="l05820"></a>05820 0, 1, 19, 33, 53, 33, 17, 51, 17, 51, 17, 51, 17, 1, -65, 1, -2, 41, 1, -42, -81, -51, -81, -3, -109,
-<a name="l05821"></a>05821 4, -125, -81, 4, -125, -10, 75, 9, -75, -10, 75, 0, 0, 3, -1, -23, -3, -109, 3, -22, 7, 72, 0, 3, 0,
-<a name="l05822"></a>05822 9, 0, 15, 0, 0, 1, 17, 51, 17, 1, 17, 33, 53, 33, 17, 17, 33, 53, 33, 17, 35, 3, 59, -81, -2,
-<a name="l05823"></a>05823 -124, -3, 123, 1, -42, -2, 42, 2, -123, -81, -3, -109, 9, -75, -10, 75, 9, -75, -5, -116, -81, 3, -59, -6, 16,
-<a name="l05824"></a>05824 -81, -5, -116, 0, 2, -1, -23, -3, -109, 5, -63, 3, -125, 0, 3, 0, 11, 0, 0, 1, 33, 53, 33, 1, 33,
-<a name="l05825"></a>05825 53, 33, 21, 33, 17, 35, 5, -63, -6, 40, 5, -40, -4, -68, -3, 108, 5, -40, -3, 107, -81, 2, -44, -81, -3,
-<a name="l05826"></a>05826 -43, -81, -81, -4, 59, 0, 1, -1, -23, -3, -109, 5, -63, 2, -59, 0, 11, 0, 0, 1, 19, 33, 53, 33, 21,
-<a name="l05827"></a>05827 33, 17, 35, 17, 35, 17, 1, -65, 1, -2, 41, 5, -40, -2, 41, -81, -51, -3, -109, 4, -125, -81, -81, -5, 125,
-<a name="l05828"></a>05828 4, 116, -5, -116, 0, 0, 3, -1, -23, -3, -109, 5, -63, 3, -125, 0, 3, 0, 9, 0, 15, 0, 0, 1, 33,
-<a name="l05829"></a>05829 53, 33, 1, 33, 53, 33, 17, 35, 33, 17, 33, 21, 33, 17, 5, -63, -6, 40, 5, -40, -5, -2, -2, 42, 2,
-<a name="l05830"></a>05830 -123, -81, 1, 124, 2, -122, -2, 41, 2, -44, -81, -3, -43, -81, -5, -116, 4, 116, -81, -4, 59, 0, 2, -1, -23,
-<a name="l05831"></a>05831 1, 88, 5, -63, 7, 72, 0, 7, 0, 11, 0, 0, 1, 33, 53, 33, 17, 51, 17, 33, 17, 33, 53, 33, 5,
-<a name="l05832"></a>05832 -63, -6, 40, 2, -108, -81, 2, -107, -6, 40, 5, -40, 2, -44, -81, 3, -59, -4, 59, -3, -43, -81, 0, 0, 1,
-<a name="l05833"></a>05833 -1, -23, 2, 22, 5, -63, 7, 72, 0, 11, 0, 0, 1, 33, 53, 33, 17, 51, 17, 51, 17, 51, 17, 33, 5,
-<a name="l05834"></a>05834 -63, -6, 40, 1, -42, -81, -51, -81, 1, -41, 2, 22, -81, 4, -125, -5, 125, 4, -125, -5, 125, 0, 3, -1, -23,
-<a name="l05835"></a>05835 1, 88, 5, -63, 7, 72, 0, 5, 0, 11, 0, 15, 0, 0, 1, 33, 53, 33, 17, 51, 1, 33, 17, 51, 17,
-<a name="l05836"></a>05836 33, 17, 33, 53, 33, 2, 110, -3, 123, 1, -42, -81, 3, 83, -3, 122, -81, 1, -41, -6, 40, 5, -40, 2, -44,
-<a name="l05837"></a>05837 -81, 3, -59, -5, -116, 4, 116, -4, 59, -3, -43, -81, 0, 1, -1, -23, -3, -109, 5, -63, 7, 72, 0, 19, 0,
-<a name="l05838"></a>05838 0, 1, 33, 53, 33, 53, 33, 53, 33, 17, 51, 17, 33, 21, 33, 21, 33, 21, 33, 17, 35, 2, 125, -3, 108,
-<a name="l05839"></a>05839 2, -108, -3, 108, 2, -108, -81, 2, -107, -3, 107, 2, -107, -3, 107, -81, 1, 88, -81, -51, -81, 3, -59, -4, 59,
-<a name="l05840"></a>05840 -81, -51, -81, -4, 59, 0, 1, -1, -23, -3, -109, 5, -63, 7, 72, 0, 19, 0, 0, 1, 19, 33, 53, 33, 17,
-<a name="l05841"></a>05841 51, 17, 51, 17, 51, 17, 33, 21, 33, 17, 35, 17, 35, 17, 1, -65, 1, -2, 41, 1, -42, -81, -51, -81, 1,
-<a name="l05842"></a>05842 -41, -2, 41, -81, -51, -3, -109, 4, -125, -81, 4, -125, -5, 125, 4, -125, -5, 125, -81, -5, 125, 4, -125, -5, 125,
-<a name="l05843"></a>05843 0, 4, -1, -23, -3, -109, 5, -63, 7, 72, 0, 5, 0, 11, 0, 17, 0, 23, 0, 0, 1, 33, 21, 33, 17,
-<a name="l05844"></a>05844 51, 1, 17, 51, 17, 33, 53, 1, 33, 53, 33, 17, 35, 1, 17, 35, 17, 33, 21, 3, -21, 1, -42, -3, 123,
-<a name="l05845"></a>05845 -81, -3, -44, -81, -3, 123, 1, -42, -2, 42, 2, -123, -81, 2, 44, -81, 2, -123, 3, -125, -81, 4, 116, -4, 59,
-<a name="l05846"></a>05846 3, -59, -5, -116, -81, -3, -43, -81, -5, -116, 3, -59, -4, 59, 4, 116, -81, 0, 1, -1, -23, 2, 109, 5, -63,
-<a name="l05847"></a>05847 7, 72, 0, 3, 0, 0, 1, 33, 17, 33, 5, -63, -6, 40, 5, -40, 2, 109, 4, -37, 0, 1, -1, -23, -3,
-<a name="l05848"></a>05848 -109, 5, -63, 2, 109, 0, 3, 0, 0, 1, 33, 17, 33, 5, -63, -6, 40, 5, -40, -3, -109, 4, -38, 0, 1,
-<a name="l05849"></a>05849 -1, -23, -3, -109, 5, -63, 7, 72, 0, 3, 0, 0, 3, 17, 33, 17, 23, 5, -40, -3, -109, 9, -75, -10, 75,
-<a name="l05850"></a>05850 0, 0, 1, -1, -23, -3, -109, 2, -43, 7, 72, 0, 3, 0, 0, 3, 17, 33, 17, 23, 2, -20, -3, -109, 9,
-<a name="l05851"></a>05851 -75, -10, 75, 0, 0, 1, 2, -42, -3, -109, 5, -62, 7, 72, 0, 3, 0, 0, 1, 17, 33, 17, 2, -42, 2,
-<a name="l05852"></a>05852 -20, -3, -109, 9, -75, -10, 75, 0, 30, 0, 102, -2, 8, 5, -63, 7, 72, 0, 3, 0, 7, 0, 11, 0, 15,
-<a name="l05853"></a>05853 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43, 0, 47, 0, 51, 0, 55, 0, 59, 0, 63, 0,
-<a name="l05854"></a>05854 67, 0, 71, 0, 75, 0, 79, 0, 83, 0, 87, 0, 91, 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115,
-<a name="l05855"></a>05855 0, 119, 0, 0, 19, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 5, 51, 21, 35, 37, 51, 21, 35, 37,
-<a name="l05856"></a>05856 51, 21, 35, 7, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 5, 51, 21, 35, 37, 51, 21, 35, 37, 51,
-<a name="l05857"></a>05857 21, 35, 7, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 23, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21,
-<a name="l05858"></a>05858 35, 7, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 5, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35,
-<a name="l05859"></a>05859 7, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 23, 51, 21, 35, 37, 51, 21, 35, 37, 51, 21, 35, 102,
-<a name="l05860"></a>05860 125, 125, 1, -14, 125, 125, 1, -13, 125, 125, -3, 20, 125, 125, 1, -13, 124, 124, 1, -14, 125, 125, -7, 125, 125,
-<a name="l05861"></a>05861 -2, 13, 125, 125, -2, 14, 125, 125, 4, -34, 125, 125, -2, 14, 124, 124, -2, 13, 125, 125, -7, 125, 125, 1, -14,
-<a name="l05862"></a>05862 125, 125, 1, -13, 125, 125, -7, 125, 125, -2, 14, 124, 124, -2, 13, 125, 125, -7, 125, 125, 1, -14, 125, 125, 1,
-<a name="l05863"></a>05863 -13, 125, 125, -3, 20, 125, 125, 1, -13, 124, 124, 1, -14, 125, 125, -7, 125, 125, -2, 13, 125, 125, -2, 14, 125,
-<a name="l05864"></a>05864 125, -7, 125, 125, 1, -13, 124, 124, 1, -14, 125, 125, 7, 72, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125,
-<a name="l05865"></a>05865 124, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 124,
-<a name="l05866"></a>05866 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 0, 63,
-<a name="l05867"></a>05867 -1, -22, -2, 8, 5, -63, 7, 72, 0, 3, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0,
-<a name="l05868"></a>05868 35, 0, 39, 0, 43, 0, 47, 0, 51, 0, 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83,
-<a name="l05869"></a>05869 0, 87, 0, 91, 0, 95, 0, 99, 0, 107, 0, 111, 0, 115, 0, 119, 0, 123, 0, 127, 0, -125, 0, -121, 0,
-<a name="l05870"></a>05870 -117, 0, -113, 0, -109, 0, -105, 0, -101, 0, -97, 0, -93, 0, -89, 0, -85, 0, -81, 0, -77, 0, -73, 0, -69,
-<a name="l05871"></a>05871 0, -65, 0, -61, 0, -57, 0, -53, 0, -49, 0, -45, 0, -41, 0, -37, 0, -33, 0, -29, 0, -25, 0, -21, 0,
-<a name="l05872"></a>05872 -17, 0, -13, 0, -9, 0, -5, 0, -1, 0, 0, 19, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51,
-<a name="l05873"></a>05873 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21,
-<a name="l05874"></a>05874 35, 55, 51, 21, 35, 55, 51, 21, 35, 53, 51, 21, 35, 53, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35,
-<a name="l05875"></a>05875 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55,
-<a name="l05876"></a>05876 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 53, 51, 21, 35, 53, 51, 21, 35, 5, 51,
-<a name="l05877"></a>05877 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21,
-<a name="l05878"></a>05878 35, 37, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 37, 51, 21, 35, 5, 51, 21, 35,
-<a name="l05879"></a>05879 39, 51, 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 7, 51, 21, 35, 55,
-<a name="l05880"></a>05880 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 23, 51, 21, 35, 39, 51,
-<a name="l05881"></a>05881 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 39, 51, 21, 35, 7, 51, 21, 35, 55, 51, 21,
-<a name="l05882"></a>05882 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 103, 124, 124, -7, 124, 124, -7, 125,
-<a name="l05883"></a>05883 125, -7, 125, 125, -6, 124, 124, -7, 124, 124, -6, -91, 125, 125, -7, 125, 125, -7, 125, 125, -6, 124, 124, -7, 125,
-<a name="l05884"></a>05884 125, -7, 125, 125, 125, 125, 125, 125, -5, -97, 124, 124, -7, 124, 124, -7, 125, 125, -7, 125, 125, -6, 124, 124, -7,
-<a name="l05885"></a>05885 124, 124, -6, -91, 125, 125, -7, 125, 125, -7, 125, 125, -6, 124, 124, -7, 125, 125, -7, 125, 125, 125, 125, 125, 125,
-<a name="l05886"></a>05886 -5, -97, 124, 124, -7, 124, 124, -7, 125, 125, -7, 125, 125, -6, 124, 124, -7, 124, 124, -6, -91, 125, 125, 1, -14,
-<a name="l05887"></a>05887 125, 125, -6, 124, 124, -7, 125, 125, -7, 125, 125, -4, 27, 125, 125, 4, 98, 124, 124, -7, 124, 124, -6, 125, 125,
-<a name="l05888"></a>05888 -7, 125, 125, -7, 124, 124, -7, 124, 124, 125, 125, 125, -7, 125, 125, -7, 125, 125, -6, 124, 124, -7, 125, 125, -7,
-<a name="l05889"></a>05889 125, 125, 125, 124, 124, -7, 124, 124, -6, 125, 125, -7, 125, 125, -7, 124, 124, -7, 124, 124, 125, 125, 125, -7, 125,
-<a name="l05890"></a>05890 125, -7, 125, 125, -6, 124, 124, -7, 125, 125, -7, 125, 125, 7, 72, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-<a name="l05891"></a>05891 125, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 125, 125,
-<a name="l05892"></a>05892 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125,
-<a name="l05893"></a>05893 125, 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125,
-<a name="l05894"></a>05894 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125,
-<a name="l05895"></a>05895 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 0, 0, 46, -1, -1, -3, -116, 5,
-<a name="l05896"></a>05896 -42, 7, 72, 0, 61, 0, 65, 0, 69, 0, 73, 0, 77, 0, 81, 0, 85, 0, 89, 0, 93, 0, 97, 0, 101,
-<a name="l05897"></a>05897 0, 105, 0, 109, 0, 113, 0, 117, 0, 121, 0, 125, 0, -127, 0, -123, 0, -119, 0, -115, 0, -111, 0, -107, 0,
-<a name="l05898"></a>05898 -103, 0, -99, 0, -95, 0, -91, 0, -87, 0, -83, 0, -79, 0, -75, 0, -71, 0, -67, 0, -63, 0, -59, 0, -55,
-<a name="l05899"></a>05899 0, -51, 0, -47, 0, -43, 0, -39, 0, -35, 0, -31, 0, -27, 0, -23, 0, -19, 0, -15, 0, 0, 1, 17, 35,
-<a name="l05900"></a>05900 21, 51, 17, 35, 21, 51, 17, 35, 21, 51, 17, 35, 21, 51, 21, 33, 17, 51, 53, 35, 17, 51, 53, 35, 17,
-<a name="l05901"></a>05901 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51,
-<a name="l05902"></a>05902 53, 51, 21, 51, 53, 51, 21, 35, 21, 37, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53,
-<a name="l05903"></a>05903 51, 21, 51, 53, 23, 35, 21, 51, 39, 35, 21, 51, 39, 35, 21, 51, 39, 35, 21, 51, 39, 35, 21, 51, 7,
-<a name="l05904"></a>05904 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 5, 35, 21, 51, 55, 21,
-<a name="l05905"></a>05905 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 5, 21, 51, 53, 33, 21, 51, 53, 7, 53, 35,
-<a name="l05906"></a>05906 21, 37, 21, 51, 53, 51, 21, 51, 53, 19, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21,
-<a name="l05907"></a>05907 35, 53, 35, 21, 7, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 19,
-<a name="l05908"></a>05908 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 7, 21, 51, 53, 51, 21,
-<a name="l05909"></a>05909 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21, 51, 53, 5, -42, 124, 124, 124, 124, 124, 124, 124, 124, -6,
-<a name="l05910"></a>05910 41, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 125, 124, 125, 125, 124, 125, 125, 124, 125, 124, 124, -5, 34, 124,
-<a name="l05911"></a>05911 125, 124, 125, 125, 124, 125, 125, 124, 125, 125, 125, -7, 125, 125, -6, 124, 124, -7, 125, 125, -7, 125, 125, -7, 124,
-<a name="l05912"></a>05912 125, 124, 125, 125, 124, 125, 125, 124, -4, -104, 125, 125, 124, 125, 125, 124, 125, 125, 124, 125, -5, 34, 124, 1, 118,
-<a name="l05913"></a>05913 125, -6, 124, 1, -14, 125, 125, 124, 125, 125, 124, 125, 125, 124, 125, 125, 124, 125, 124, 124, 125, 124, 125, 125, 124,
-<a name="l05914"></a>05914 125, 125, 124, 125, 125, 124, 125, 125, 124, 125, 125, 124, 125, 124, 124, 125, 124, 125, 125, 124, 125, 125, 124, 5, -46,
-<a name="l05915"></a>05915 -2, -118, 124, -2, -118, 125, -2, -118, 124, -2, -118, 125, 124, 1, 117, 125, 1, 118, 125, 1, 117, 125, 1, 118, 125,
-<a name="l05916"></a>05916 1, 117, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, -7, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-<a name="l05917"></a>05917 125, -7, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, -7, 125, 125,
-<a name="l05918"></a>05918 125, 125, 125, 125, 125, 125, 125, 125, -7, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, -2, -118, 125, 125,
-<a name="l05919"></a>05919 125, 125, 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, -2, -118, 125, 125, 125, 125,
-<a name="l05920"></a>05920 125, 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 0, 1, 0, -110, 0, 0, 4, 66,
-<a name="l05921"></a>05921 3, -80, 0, 3, 0, 0, 19, 33, 17, 33, -110, 3, -80, -4, 80, 3, -80, -4, 80, 0, 0, 1, 0, 0, 1,
-<a name="l05922"></a>05922 61, 7, -1, 2, -65, 0, 3, 0, 0, 17, 33, 17, 33, 7, -1, -8, 1, 2, -65, -2, 126, 0, 1, 1, 48,
-<a name="l05923"></a>05923 0, 0, 6, -68, 5, -117, 0, 2, 0, 0, 33, 1, 1, 1, 48, 2, -58, 2, -58, 5, -117, -6, 117, 0, 0,
-<a name="l05924"></a>05924 1, 1, 32, -1, -31, 6, -53, 5, -119, 0, 2, 0, 0, 9, 2, 1, 32, 5, -85, -6, 85, 5, -119, -3, 44,
-<a name="l05925"></a>05925 -3, 44, 0, 1, 1, 48, -1, -31, 6, -68, 5, 108, 0, 2, 0, 0, 9, 2, 6, -68, -3, 58, -3, 58, 5,
-<a name="l05926"></a>05926 108, -6, 117, 5, -117, 0, 1, 1, 32, -1, -31, 6, -53, 5, -119, 0, 2, 0, 0, 1, 17, 1, 6, -53, -6,
-<a name="l05927"></a>05927 85, 5, -119, -6, 88, 2, -44, 0, 0, 2, 0, -78, 0, -119, 4, 35, 3, -6, 0, 13, 0, 27, 0, 0, 1,
-<a name="l05928"></a>05928 50, 22, 22, 21, 20, 0, 35, 34, 0, 53, 52, 54, 54, 23, 34, 6, 6, 21, 20, 22, 51, 50, 54, 53, 52,
-<a name="l05929"></a>05929 38, 38, 2, 106, 111, -44, 118, -2, -2, -74, -73, -2, -2, 118, -44, 111, 93, -82, 98, -42, -105, -105, -43, 98, -82,
-<a name="l05930"></a>05930 3, -6, 114, -44, 114, -73, -2, -2, 1, 2, -73, 115, -45, 114, 76, 94, -80, 94, -105, -42, -42, -105, 94, -80, 94,
-<a name="l05931"></a>05931 0, 2, 0, -128, 0, 0, 4, 84, 3, -44, 0, 3, 0, 15, 0, 0, 51, 17, 33, 17, 1, 34, 6, 21, 20,
-<a name="l05932"></a>05932 22, 51, 50, 54, 53, 52, 38, -128, 3, -44, -2, 22, 84, 118, 119, 83, 84, 118, 118, 3, -44, -4, 44, 2, -76,
-<a name="l05933"></a>05933 118, 84, 83, 119, 119, 83, 84, 118, 0, 3, 0, 42, 0, 0, 4, -83, 4, -125, 0, 3, 0, 17, 0, 31, 0,
-<a name="l05934"></a>05934 0, 51, 17, 33, 17, 1, 34, 6, 6, 21, 20, 0, 51, 50, 0, 53, 52, 38, 38, 7, 50, 22, 22, 21, 20,
-<a name="l05935"></a>05935 6, 35, 34, 38, 53, 52, 54, 54, 42, 4, -125, -3, -65, 112, -45, 118, 1, 2, -73, -74, 1, 2, 118, -45, 111,
-<a name="l05936"></a>05936 91, -81, 98, -43, -105, -104, -43, 98, -81, 4, -125, -5, 125, 3, -6, 114, -44, 115, -74, -2, -2, 1, 2, -74, 115,
-<a name="l05937"></a>05937 -44, 114, 76, 94, -81, 96, -105, -43, -43, -105, 96, -81, 94, 0, 0, 5, 1, -104, -1, -119, 6, -109, 4, -124, 0,
-<a name="l05938"></a>05938 11, 0, 23, 0, 35, 0, 47, 0, 59, 0, 0, 1, 16, 0, 33, 32, 0, 17, 16, 0, 33, 32, 0, 3, 52,
-<a name="l05939"></a>05939 0, 35, 34, 0, 21, 20, 0, 51, 50, 0, 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 5, 20, 6,
-<a name="l05940"></a>05940 35, 34, 38, 53, 52, 54, 51, 50, 22, 1, 55, 22, 51, 50, 55, 23, 6, 6, 35, 34, 38, 6, -109, -2, -117,
-<a name="l05941"></a>05941 -2, -8, -2, -8, -2, -118, 1, 118, 1, 8, 1, 8, 1, 117, 92, -2, -63, -30, -30, -2, -63, 1, 63, -30, -30,
-<a name="l05942"></a>05942 1, 63, -3, 59, 47, 34, 33, 48, 48, 33, 34, 47, 1, -23, 47, 34, 33, 48, 48, 33, 34, 47, -3, -107, 62,
-<a name="l05943"></a>05943 79, -103, -103, 78, 63, 50, -109, 97, 98, -110, 2, 6, -2, -8, -2, -117, 1, 117, 1, 8, 1, 9, 1, 117, -2,
-<a name="l05944"></a>05944 -117, -2, -9, -30, 1, 63, -2, -63, -30, -31, -2, -63, 1, 63, 1, 101, 33, 48, 48, 33, 34, 47, 47, 34, 33,
-<a name="l05945"></a>05945 48, 48, 33, 34, 47, 47, -2, -115, 36, -112, -112, 36, 95, 100, 100, 0, 0, 4, 1, -72, -1, -119, 6, -77, 4,
-<a name="l05946"></a>05946 -124, 0, 11, 0, 23, 0, 35, 0, 47, 0, 0, 1, 16, 0, 33, 32, 0, 17, 16, 0, 33, 32, 0, 5, 52,
-<a name="l05947"></a>05947 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 37, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 22, 22,
-<a name="l05948"></a>05948 51, 50, 54, 55, 39, 6, 35, 34, 39, 6, -77, -2, -117, -2, -8, -2, -8, -2, -118, 1, 118, 1, 8, 1, 8,
-<a name="l05949"></a>05949 1, 117, -4, -33, 47, 34, 33, 48, 48, 33, 34, 47, 1, -23, 47, 34, 33, 48, 48, 33, 34, 47, -3, -107, 50,
-<a name="l05950"></a>05950 -110, 98, 97, -109, 50, 63, 78, -103, -103, 79, 2, 6, -2, -8, -2, -117, 1, 117, 1, 8, 1, 9, 1, 117, -2,
-<a name="l05951"></a>05951 -117, -123, 34, 47, 47, 34, 33, 48, 48, 33, 34, 47, 47, 34, 33, 48, 48, -2, -48, 95, 100, 100, 95, 36, -112,
-<a name="l05952"></a>05952 -112, 0, 2, 0, 16, -1, 33, 7, 70, 6, 85, 0, 47, 0, 59, 0, 0, 1, 51, 17, 22, 22, 23, 1, 23,
-<a name="l05953"></a>05953 1, 22, 23, 22, 23, 33, 21, 33, 6, 7, 1, 7, 1, 6, 6, 7, 17, 35, 17, 38, 38, 39, 1, 39, 1,
-<a name="l05954"></a>05954 38, 38, 39, 33, 53, 33, 54, 54, 55, 1, 55, 1, 54, 54, 55, 1, 52, 0, 35, 34, 0, 21, 20, 0, 51,
-<a name="l05955"></a>05955 50, 0, 3, -122, 76, 102, -97, 88, 1, 34, 52, -2, -30, 73, 30, 38, 2, 1, 80, -2, -79, 19, 124, 1, 29,
-<a name="l05956"></a>05956 57, -2, -27, 98, -110, 107, 76, 112, -103, 80, -2, -38, 51, 1, 29, 66, 68, 11, -2, -80, 1, 80, 9, 66, 69,
-<a name="l05957"></a>05957 -2, -28, 48, 1, 36, 101, -99, 92, 2, 36, -2, -45, -44, -44, -2, -44, 1, 44, -44, -44, 1, 45, 6, 85, -2,
-<a name="l05958"></a>05958 -81, 7, 63, 71, 1, 28, 53, -2, -30, 95, 74, 96, 93, 69, -67, -98, -2, -35, 50, 1, 26, 72, 57, 12, -2,
-<a name="l05959"></a>05959 -81, 1, 81, 15, 62, 61, -2, -22, 51, 1, 30, 84, -92, 106, 69, 106, -97, 84, 1, 31, 57, -2, -26, 70, 61,
-<a name="l05960"></a>05960 8, -3, -73, -44, 1, 44, -2, -44, -44, -44, -2, -45, 1, 45, 0, 0, 2, 0, -12, -2, 73, 5, 11, 5, -29,
-<a name="l05961"></a>05961 0, 25, 0, 39, 0, 0, 1, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 34, 38, 38, 53, 52, 54, 54,
-<a name="l05962"></a>05962 51, 50, 22, 22, 21, 20, 0, 3, 34, 6, 6, 21, 20, 0, 51, 50, 0, 53, 52, 38, 38, 3, 28, 1, -53,
-<a name="l05963"></a>05963 -2, 53, 59, -2, 52, 1, -52, 103, -11, -111, -117, -8, -119, -120, -7, -118, -2, -31, -19, 118, -31, 126, 1, 19, -62,
-<a name="l05964"></a>05964 -61, 1, 19, 126, -31, 1, -51, -2, 110, 59, -2, 73, 1, -73, 59, 1, -110, -125, -5, -116, -120, -6, -118, -117, -7,
-<a name="l05965"></a>05965 -120, -47, -2, -47, 3, -44, 121, -30, 122, -61, -2, -19, 1, 19, -61, 122, -30, 121, 0, 2, 0, 111, -2, -6, 5,
-<a name="l05966"></a>05966 -121, 6, 84, 0, 24, 0, 38, 0, 0, 1, 23, 19, 7, 3, 1, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38,
-<a name="l05967"></a>05967 53, 52, 0, 51, 50, 23, 1, 1, 39, 19, 34, 6, 6, 21, 20, 0, 51, 50, 0, 53, 52, 38, 38, 4, -64,
-<a name="l05968"></a>05968 36, -93, 57, -114, -2, -102, -108, -104, -118, -7, -119, -120, -7, -118, 1, 51, -37, 78, 88, 1, 104, -3, -25, 24, 32,
-<a name="l05969"></a>05969 118, -31, 126, 1, 19, -62, -61, 1, 19, 126, -31, 6, 84, 16, -3, 102, 15, 2, 69, -3, 0, 75, -2, -111, -120,
-<a name="l05970"></a>05970 -7, -117, -117, -7, -120, -39, 1, 50, 27, 3, 3, -2, -9, 53, -3, -74, 121, -30, 122, -61, -2, -19, 1, 19, -61,
-<a name="l05971"></a>05971 122, -30, 121, 0, 0, 1, 0, 58, 0, 0, 4, 6, 4, -49, 0, 34, 0, 0, 1, 22, 22, 4, 22, 21, 20,
-<a name="l05972"></a>05972 6, 35, 34, 38, 39, 30, 2, 23, 23, 33, 55, 50, 54, 39, 6, 6, 35, 34, 38, 53, 52, 55, 54, 54, 55,
-<a name="l05973"></a>05973 54, 54, 2, 33, 26, 108, 1, 21, 74, -128, 92, 78, 127, 49, 1, 75, -91, -119, 7, -4, -25, 8, -72, -53, 4,
-<a name="l05974"></a>05974 45, -123, 84, 90, -127, 33, 45, -54, 48, 73, 67, 4, -49, 108, -86, -5, -122, 69, 96, -128, 97, 93, -109, -83, 99,
-<a name="l05975"></a>05975 9, 37, 37, -41, -43, 95, 95, -126, 91, 73, 59, 82, -90, 54, 83, -126, 0, 1, 0, 55, 0, 0, 5, 8, 4,
-<a name="l05976"></a>05976 -49, 0, 51, 0, 0, 33, 33, 55, 54, 55, 54, 54, 53, 52, 39, 6, 6, 35, 34, 38, 53, 52, 54, 51, 50,
-<a name="l05977"></a>05977 23, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 7, 54, 55, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 39,
-<a name="l05978"></a>05978 38, 39, 22, 22, 23, 22, 23, 4, 74, -4, -80, 8, -91, 54, 81, 103, 1, 61, -81, 91, 116, -94, -108, 94, 60,
-<a name="l05979"></a>05979 103, 42, 25, -98, 118, 118, -95, 69, 84, 17, 27, 34, 100, -109, -95, 113, 63, -123, 49, 35, 52, 4, 89, 92, 62,
-<a name="l05980"></a>05980 -95, 34, 35, 34, 51, -56, 111, 16, 30, 124, 114, -94, 118, 116, -97, 51, 70, 71, 41, 114, -98, -98, 109, 89, 98,
-<a name="l05981"></a>05981 40, 5, 8, -99, 116, 120, -93, 61, 51, 37, 88, -97, -71, 61, 41, 31, 0, 1, 0, 63, -1, -24, 4, -127, 4,
-<a name="l05982"></a>05982 -49, 0, 28, 0, 0, 5, 38, 38, 39, 38, 39, 38, 38, 53, 52, 54, 51, 50, 23, 22, 23, 54, 55, 54, 51,
-<a name="l05983"></a>05983 50, 22, 21, 20, 6, 7, 6, 7, 6, 2, 98, 31, 115, -91, 121, 28, 46, 41, -108, 109, 110, 81, 61, 38, 33,
-<a name="l05984"></a>05984 60, 83, 109, 108, -106, 88, 126, -92, 75, 59, 24, 118, -49, -38, -96, 43, 70, 117, 60, 111, -106, 78, 58, 115, 113,
-<a name="l05985"></a>05985 59, 80, -107, 103, 90, -61, -98, -49, -123, 105, 0, 1, 0, 64, -1, -24, 3, -42, 4, -49, 0, 17, 0, 0, 1,
-<a name="l05986"></a>05986 22, 23, 22, 23, 6, 7, 6, 7, 38, 39, 38, 39, 38, 39, 54, 55, 54, 2, 9, 89, -126, -106, 92, 74, -88,
-<a name="l05987"></a>05987 -120, 82, 27, 47, 81, 120, 26, -99, 101, -97, 118, 4, -49, -105, -83, -56, 103, 78, -32, -74, -112, 52, 69, 120, -97,
-<a name="l05988"></a>05988 35, -63, 115, -43, -98, 0, 1, 0, 37, -1, -37, 3, -37, 5, 83, 0, 30, 0, 0, 1, 51, 50, 23, 22, 23,
-<a name="l05989"></a>05989 22, 22, 21, 21, 35, 53, 52, 38, 39, 38, 35, 35, 17, 20, 6, 6, 35, 34, 38, 53, 52, 54, 51, 50, 23,
-<a name="l05990"></a>05990 1, -26, 38, -84, 55, 79, 60, 45, 52, 99, 57, 56, 73, 89, 28, 64, -100, 92, 109, 127, -104, 123, 78, 96, 5,
-<a name="l05991"></a>05991 83, 14, 20, 57, 42, -103, 102, 103, 43, 68, 95, 25, 32, -4, -67, 121, -121, 81, 123, 100, 105, -113, 46, 0, 0,
-<a name="l05992"></a>05992 1, 0, 85, -1, -128, 5, 50, 5, -17, 0, 30, 0, 0, 1, 37, 17, 20, 6, 6, 35, 34, 38, 53, 52, 54,
-<a name="l05993"></a>05993 51, 50, 22, 23, 17, 5, 17, 20, 6, 6, 35, 34, 38, 53, 52, 54, 51, 50, 23, 2, 22, 3, 28, 63, -105,
-<a name="l05994"></a>05994 95, 109, -126, -102, 122, 40, 61, 69, -3, -83, 64, -100, 92, 109, 127, -104, 123, 78, 96, 4, -9, -8, -5, -84, 124,
-<a name="l05995"></a>05995 126, 82, 125, 99, 100, -111, 14, 29, 2, -44, -71, -4, -68, 121, -121, 80, 123, 99, 105, -113, 46, 0, -1, -1, 0,
-<a name="l05996"></a>05996 -65, -1, -25, 5, 120, 5, -70, 0, 38, 0, 44, 0, 0, 1, 7, 0, 45, 2, 23, 0, 0, 0, -98, 64, 14,
-<a name="l05997"></a>05997 1, 4, 30, 15, 16, 2, 85, 4, 28, 13, 13, 2, 85, 4, -72, -1, -16, -76, 11, 11, 2, 85, 4, -72, -1,
-<a name="l05998"></a>05998 -32, -76, 9, 10, 6, 85, 4, -72, -1, -4, 64, 17, 12, 12, 6, 85, 4, 18, 13, 13, 6, 85, 4, 9, 15,
-<a name="l05999"></a>05999 15, 6, 85, 4, -72, -1, -38, 64, 22, 16, 16, 6, 85, 79, 4, 95, 4, -97, 4, -65, 4, -64, 4, 5, 4,
-<a name="l06000"></a>06000 3, -106, 72, 43, 0, 0, -72, -1, -10, -76, 16, 16, 2, 85, 0, -72, -1, -6, -76, 12, 13, 2, 85, 0, -72,
-<a name="l06001"></a>06001 -1, -17, -76, 16, 16, 6, 85, 0, -72, -1, -13, -76, 15, 15, 6, 85, 0, -72, -1, -7, 64, 14, 11, 13, 6,
-<a name="l06002"></a>06002 85, 111, 0, -112, 0, 2, 0, 22, -65, 72, 43, 1, 43, 93, 43, 43, 43, 43, 43, 53, 43, 93, 43, 43, 43,
-<a name="l06003"></a>06003 43, 43, 43, 43, 43, 52, -1, -1, 0, -120, -2, 81, 3, 24, 5, -70, 0, 38, 0, 76, 0, 0, 1, 7, 0,
-<a name="l06004"></a>06004 77, 1, -34, 0, 0, 0, -92, 64, 15, 3, 2, 28, 64, 12, 12, 2, 85, 28, 64, 9, 10, 2, 85, 19, -72,
-<a name="l06005"></a>06005 -1, -8, -76, 12, 13, 2, 85, 19, -72, -1, -64, -76, 11, 11, 2, 85, 19, -72, -1, -4, -76, 16, 16, 6, 85,
-<a name="l06006"></a>06006 19, -72, -1, -6, -76, 13, 13, 6, 85, 19, -72, -1, -50, 64, 24, 11, 12, 6, 85, 96, 19, 112, 19, 2, 31,
-<a name="l06007"></a>06007 19, 48, 19, 111, 19, -112, 19, -96, 19, -32, 19, 6, 19, 7, -72, 1, 44, -76, 72, 43, 1, 0, 4, -72, -1,
-<a name="l06008"></a>06008 -8, -76, 12, 13, 2, 85, 4, -72, -1, -4, -76, 16, 16, 6, 85, 4, -72, -1, -8, -76, 15, 15, 6, 85, 4,
-<a name="l06009"></a>06009 -72, -1, -6, 64, 20, 11, 13, 6, 85, 0, 4, 16, 4, 32, 4, 127, 4, -113, 4, 5, 4, 27, -120, 72, 43,
-<a name="l06010"></a>06010 1, 43, 93, 43, 43, 43, 43, 53, 53, 43, 93, 113, 43, 43, 43, 43, 43, 43, 43, 53, 53, -1, -1, 0, 108,
-<a name="l06011"></a>06011 0, 0, 4, -42, 5, -55, 0, 39, 0, 81, 0, -16, 0, 0, 1, 6, 0, -74, 0, 0, 0, 18, 64, 14, 0,
-<a name="l06012"></a>06012 1, 0, 35, -16, 72, 39, 1, 1, 24, 35, 0, 72, 39, 43, 43, 0, 1, 0, -128, 3, -77, 1, -114, 5, -70,
-<a name="l06013"></a>06013 0, 5, 0, 58, 64, 35, 3, 34, 26, 33, 52, 2, 34, 26, 33, 52, 2, 3, 0, 5, 4, 4, 1, 5, -18,
-<a name="l06014"></a>06014 3, 2, 0, 2, -7, 4, -127, 47, 1, 1, 1, 25, 6, -99, 104, 24, 43, 78, 16, -12, 93, 77, -3, -19, 0,
-<a name="l06015"></a>06015 63, 60, -19, 1, 17, 18, 23, 57, 49, 48, 43, 43, 19, 19, 55, 51, 7, 3, -128, 12, 52, -50, 53, 105, 3,
-<a name="l06016"></a>06016 -77, 1, 18, -11, -11, -2, -18, -1, -1, 0, -128, 3, -77, 2, -87, 5, -70, 0, 38, 1, -115, 0, 0, 1, 7,
-<a name="l06017"></a>06017 1, -115, 1, 27, 0, 0, 0, 42, 1, -79, 6, 2, 67, 84, 88, 27, -75, 1, 79, 7, 1, 7, 12, -72, 1,
-<a name="l06018"></a>06018 127, 64, 15, 72, 43, 0, 79, 1, 95, 1, -112, 1, 3, 1, 12, 70, 72, 43, 43, 93, 53, 43, 93, 52, 89,
-<a name="l06019"></a>06019 0, 4, 0, 97, -1, -54, 6, -75, 5, -45, 0, 25, 0, 29, 0, 41, 0, 53, 0, -57, 64, 41, 33, 0, 32,
-<a name="l06020"></a>06020 1, 47, 13, -128, 0, 4, 32, 1, 32, 2, -122, 19, -122, 22, -126, 44, -114, 47, -114, 50, -126, 53, 8, 28, 29,
-<a name="l06021"></a>06021 29, 63, 26, 27, 20, 26, 26, 27, 29, 26, 56, 39, 51, -68, 2, -66, 0, 33, 1, 101, 0, 45, 2, -66, 64,
-<a name="l06022"></a>06022 22, 39, 9, 28, 27, 27, 10, 15, 14, 31, 14, 2, 14, 118, 17, 0, 0, 16, 0, 2, 0, -96, 23, -68, 2,
-<a name="l06023"></a>06023 -66, 0, 4, 1, 101, 0, 17, 2, -66, 64, 10, 10, 3, 28, -24, 27, -96, 30, 48, 42, 36, -72, 2, -67, 64,
-<a name="l06024"></a>06024 17, 42, 42, 30, 110, 0, 29, -7, 26, -82, 0, 14, 42, 13, 58, 0, 42, 1, -72, 1, 84, 64, 11, 20, 42,
-<a name="l06025"></a>06025 63, 7, 1, 7, 25, 54, 113, -89, 24, 43, 78, 16, -12, 93, 77, -3, -12, -19, -12, -19, 25, 16, -12, 24, -19,
-<a name="l06026"></a>06026 16, -12, -19, -3, -19, 25, 16, -12, 24, -19, 0, 63, -19, -3, -3, -28, 93, 16, -28, 93, 16, 60, 16, 60, 63,
-<a name="l06027"></a>06027 -19, -3, -19, 16, -12, 60, -121, 5, 46, 43, 125, 16, -60, 49, 48, 1, 93, 0, 93, 1, 23, 6, 6, 35, 34,
-<a name="l06028"></a>06028 38, 53, 52, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3, 1, 51, 1, 1,
-<a name="l06029"></a>06029 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, 108,
-<a name="l06030"></a>06030 123, 20, -89, 122, -104, -71, -70, -104, 122, -103, 21, 122, 17, 89, 63, 95, 119, 115, 92, 74, 99, -58, 3, 34, -110,
-<a name="l06031"></a>06031 -4, -31, 1, -48, -64, -100, -102, -62, -65, -99, -101, -63, -127, 125, 94, 94, 125, 125, 94, 94, 125, 3, -20, 16, -128,
-<a name="l06032"></a>06032 -112, -57, -70, -64, -58, 122, 112, 20, 75, 76, -120, -108, -107, -120, 90, -4, 61, 6, 9, -7, -9, 1, -87, -69, -55,
-<a name="l06033"></a>06033 -55, -80, -58, -55, -56, -68, -114, -114, -114, -110, -118, -114, -114, 0, 0, 2, 0, 15, -1, -24, 2, -122, 5, -45, 0,
-<a name="l06034"></a>06034 26, 0, 38, 0, 125, 64, 31, 79, 40, 1, 25, 26, 26, 11, 11, 12, 11, 10, 25, 24, 27, 11, 26, 0, 25,
-<a name="l06035"></a>06035 1, 4, 12, 24, 1, 60, 25, 25, 21, 5, 19, -7, 18, -72, 2, 122, 64, 40, 15, 41, 21, 13, 34, 42, 5,
-<a name="l06036"></a>06036 5, 19, 18, 39, 8, 41, 30, 108, 38, 38, 12, 2, 12, 41, 0, 24, 32, 24, -112, 24, -96, 24, -80, 24, -64,
-<a name="l06037"></a>06037 24, 6, 24, -97, 39, -87, 122, 24, 43, 16, -10, 93, -19, 60, 16, 60, 16, -10, -3, -12, 60, 0, 63, -19, 63,
-<a name="l06038"></a>06038 -19, -3, -19, 17, 18, 57, 47, -19, 1, 17, 18, 23, 57, 57, 57, 14, 16, 60, 8, 16, 60, -121, 4, 125, 16,
-<a name="l06039"></a>06039 -60, 49, 48, 1, 93, 19, 55, 17, 52, 54, 51, 50, 22, 21, 20, 2, 7, 17, 20, 22, 51, 50, 54, 55, 21,
-<a name="l06040"></a>06040 6, 35, 34, 38, 53, 53, 7, 19, 54, 54, 53, 52, 39, 38, 35, 34, 7, 6, 21, 15, -79, 123, 111, 96, 124,
-<a name="l06041"></a>06041 120, -91, 29, 27, 26, 68, 105, 111, 114, 92, 107, 79, -8, 98, 47, 26, 20, 30, 31, 15, 23, 1, -90, -21, 1,
-<a name="l06042"></a>06042 -57, -30, -103, -126, 109, 92, -2, -9, -26, -2, 97, 89, 43, 33, 74, -94, 87, 114, 127, -31, 98, 2, 43, -87, -128,
-<a name="l06043"></a>06043 55, 61, 34, 25, 26, 42, -79, 0, 0, 2, 0, -110, 0, 0, 4, 66, 3, -80, 0, 3, 0, 7, 0, 0, 19,
-<a name="l06044"></a>06044 33, 17, 33, 19, 17, 33, 17, -110, 3, -80, -4, 80, 76, 3, 24, 3, -80, -4, 80, 3, 100, -4, -24, 3, 24,
-<a name="l06045"></a>06045 0, 1, 0, -125, 1, -67, 2, 82, 3, -116, 0, 3, 0, 0, 1, 17, 33, 17, 2, 82, -2, 49, 3, -116, -2,
-<a name="l06046"></a>06046 49, 1, -49, 0, 2, 0, -125, 1, -67, 2, 82, 3, -116, 0, 3, 0, 7, 0, 0, 1, 17, 33, 17, 5, 33,
-<a name="l06047"></a>06047 17, 33, 2, 82, -2, 49, 1, -125, -2, -55, 1, 55, 3, -116, -2, 49, 1, -49, 76, -2, -55, 0, 0, 1, 0,
-<a name="l06048"></a>06048 -78, 0, -119, 4, 35, 3, -6, 0, 13, 0, 0, 1, 50, 22, 22, 21, 20, 0, 35, 34, 0, 53, 52, 54, 54,
-<a name="l06049"></a>06049 2, 107, 110, -44, 118, -2, -2, -74, -73, -2, -2, 118, -44, 3, -6, 114, -44, 114, -73, -2, -2, 1, 2, -73, 115,
-<a name="l06050"></a>06050 -45, 114, 0, 0, 2, 0, 112, 1, -86, 2, 102, 3, -96, 0, 11, 0, 23, 0, 0, 1, 50, 22, 21, 20, 6,
-<a name="l06051"></a>06051 35, 34, 38, 53, 52, 54, 23, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 1, 107, 104, -109, -109, 104, 104,
-<a name="l06052"></a>06052 -109, -110, 105, 73, 102, 103, 72, 72, 103, 102, 3, -96, -109, 104, 104, -109, -109, 104, 104, -109, 76, 103, 72, 73, 102,
-<a name="l06053"></a>06053 102, 73, 72, 103, -1, -1, -1, -3, 0, 0, 5, 89, 6, -66, 2, 38, 0, 36, 0, 0, 1, 7, 0, -40, 1,
-<a name="l06054"></a>06054 74, 1, 95, 0, 38, 64, 23, 2, 0, 15, 1, 16, 15, -48, 15, 2, 32, 15, 48, 15, 2, 0, 15, 18, 12,
-<a name="l06055"></a>06055 12, 65, 2, 1, 15, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 114, 53, -1, -1, 0, 74, -1, -24, 4,
-<a name="l06056"></a>06056 28, 5, 95, 2, 38, 0, 68, 0, 0, 1, 7, 0, -40, 0, -11, 0, 0, 0, 26, 64, 13, 2, 112, 56, 1,
-<a name="l06057"></a>06057 0, 56, 59, 2, 2, 65, 2, 1, 56, -71, 2, -61, 0, 41, 0, 43, 1, 43, 93, 53, -1, -1, 0, 102, -1,
-<a name="l06058"></a>06058 -25, 5, 118, 7, 38, 2, 38, 0, 38, 0, 0, 1, 7, 0, -42, 1, -80, 1, 100, 0, 22, 64, 10, 1, 0,
-<a name="l06059"></a>06059 32, 35, 8, 15, 65, 1, 1, 32, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 80, -1, -24, 3,
-<a name="l06060"></a>06060 -19, 5, -62, 2, 38, 0, 70, 0, 0, 1, 7, 0, -42, 0, -6, 0, 0, 0, 22, 64, 10, 1, 0, 29, 32,
-<a name="l06061"></a>06061 7, 14, 65, 1, 1, 29, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 102, -1, -25, 5, 118, 7,
-<a name="l06062"></a>06062 26, 2, 38, 0, 38, 0, 0, 1, 7, 0, -38, 1, -80, 1, -112, 0, 21, 64, 9, 1, 30, 11, 100, 72, 43,
-<a name="l06063"></a>06063 1, 1, 30, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 0, -1, -1, 0, 80, -1, -24, 3, -19, 5, -118, 2,
-<a name="l06064"></a>06064 38, 0, 70, 0, 0, 1, 7, 0, -38, 0, -16, 0, 0, 0, 41, -77, 1, 1, 1, 27, -71, 2, 34, 0, 41,
-<a name="l06065"></a>06065 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 27, 30, 11, 11, 65, 43, 27, -73, 111, 27, 1, 27, 19, 40,
-<a name="l06066"></a>06066 72, 43, 43, 93, 89, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 6, -55, 2, 38, 0, 40, 0, 0, 1, 7,
-<a name="l06067"></a>06067 0, -40, 1, -127, 1, 106, 0, 22, 64, 10, 1, 0, 12, 15, 1, 2, 65, 1, 1, 12, -71, 2, 33, 0, 41,
-<a name="l06068"></a>06068 0, 43, 1, 43, 53, -1, -1, 0, 75, -1, -24, 4, 30, 5, 95, 2, 38, 0, 72, 0, 0, 1, 7, 0, -40,
-<a name="l06069"></a>06069 0, -32, 0, 0, 0, 22, 64, 10, 2, 0, 30, 33, 7, 15, 65, 2, 1, 30, -71, 2, -61, 0, 41, 0, 43,
-<a name="l06070"></a>06070 1, 43, 53, -1, -1, 0, -94, 0, 0, 4, -24, 7, 34, 2, 38, 0, 40, 0, 0, 1, 7, 0, -39, 1, 107,
-<a name="l06071"></a>06071 1, 106, 0, 37, -77, 1, 1, 1, 16, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0,
-<a name="l06072"></a>06072 19, 13, 1, 2, 65, 43, 27, -76, 19, 5, 70, 72, 43, 43, 89, 53, 0, -1, -1, 0, 75, -1, -24, 4, 30,
-<a name="l06073"></a>06073 5, -72, 2, 38, 0, 72, 0, 0, 1, 7, 0, -39, 0, -12, 0, 0, 0, 21, 64, 10, 2, 1, 37, 22, 0,
-<a name="l06074"></a>06074 72, 39, 2, 1, 34, -71, 2, 34, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0, -94, 0, 0, 4, -24, 6, -12,
-<a name="l06075"></a>06075 2, 38, 0, 40, 0, 0, 1, 7, 0, -38, 1, -127, 1, 106, 0, 22, 64, 10, 1, 0, 12, 15, 1, 2, 65,
-<a name="l06076"></a>06076 1, 1, 12, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 75, -1, -24, 4, 30, 5, -118, 2, 38,
-<a name="l06077"></a>06077 0, 72, 0, 0, 1, 7, 0, -38, 0, -6, 0, 0, 0, 22, 64, 10, 2, 0, 30, 33, 7, 15, 65, 2, 1,
-<a name="l06078"></a>06078 30, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 109, -1, -25, 5, -71, 7, 33, 2, 38, 0, 42,
-<a name="l06079"></a>06079 0, 0, 1, 7, 0, -42, 2, 14, 1, 95, 0, 37, -77, 1, 1, 1, 40, -71, 2, 33, 0, 41, 0, 43, 1,
-<a name="l06080"></a>06080 -79, 6, 2, 67, 84, 88, -75, 0, 40, 43, 14, 14, 65, 43, 27, -76, 38, 14, 0, 72, 43, 43, 89, 53, 0,
-<a name="l06081"></a>06081 -1, -1, 0, 66, -2, 81, 3, -22, 5, -62, 2, 38, 0, 74, 0, 0, 1, 7, 0, -42, 0, -56, 0, 0, 0,
-<a name="l06082"></a>06082 22, 64, 10, 2, 0, 45, 48, 15, 23, 65, 2, 1, 45, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1,
-<a name="l06083"></a>06083 0, 109, -1, -25, 5, -71, 6, -23, 2, 38, 0, 42, 0, 0, 1, 7, 0, -38, 2, 14, 1, 95, 0, 22, 64,
-<a name="l06084"></a>06084 10, 1, 0, 38, 41, 10, 2, 65, 1, 1, 38, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 66,
-<a name="l06085"></a>06085 -2, 81, 3, -22, 5, -118, 2, 38, 0, 74, 0, 0, 1, 7, 0, -38, 0, -28, 0, 0, 0, 21, 64, 9, 2,
-<a name="l06086"></a>06086 43, 41, 44, 72, 43, 2, 1, 43, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 0, -1, -1, 0, 109, -2, 91,
-<a name="l06087"></a>06087 5, -71, 5, -45, 2, 38, 0, 42, 0, 0, 1, 7, 0, -36, 2, 20, 0, 0, 0, 19, 64, 12, 1, 0, 49,
-<a name="l06088"></a>06088 44, 10, 2, 65, 1, 1, 39, 8, 41, 0, 43, 1, 43, 53, 0, 0, 3, 0, 66, -2, 81, 3, -22, 6, 40,
-<a name="l06089"></a>06089 0, 9, 0, 36, 0, 48, 1, 112, 64, 48, 42, 18, 38, 26, 41, 41, 38, 45, 59, 18, 52, 26, 75, 18, 68,
-<a name="l06090"></a>06090 26, 86, 15, 91, 18, 101, 15, 106, 18, 12, 53, 39, 53, 47, 68, 39, 68, 47, 83, 39, 83, 47, 97, 39, 98,
-<a name="l06091"></a>06091 47, 8, 6, 49, 7, -110, 9, 0, -72, 2, 48, -78, 1, 1, 2, -72, 2, 84, -76, 25, 29, 28, 6, 27, -72,
-<a name="l06092"></a>06092 2, 127, -76, 46, 28, 25, 7, 11, -72, 2, -86, 64, 16, 32, 10, 48, 10, 96, 10, 112, 10, -128, 10, -64, 10,
-<a name="l06093"></a>06093 -48, 10, 7, 10, -72, 2, 125, 64, 11, 13, 28, 34, 15, 17, 69, 40, 28, 19, 10, 6, -70, 2, 91, 0, 7,
-<a name="l06094"></a>06094 1, 12, 64, 36, 9, 9, 1, 126, 2, 2, 29, 22, 28, 27, 51, 43, 51, 17, 37, 30, 30, 50, 64, 11, 11,
-<a name="l06095"></a>06095 2, 85, 50, 64, 13, 13, 2, 85, 29, 18, 16, 16, 2, 85, 29, -72, -1, -12, 64, 17, 15, 15, 2, 85, 29,
-<a name="l06096"></a>06096 6, 14, 14, 2, 85, 29, 22, 13, 13, 2, 85, 29, -72, -1, -22, 64, 11, 11, 11, 6, 85, 29, 18, 16, 16,
-<a name="l06097"></a>06097 6, 85, 29, -72, -1, -18, -76, 12, 12, 6, 85, 29, -72, -1, -4, 64, 81, 13, 13, 6, 85, -48, 29, 1, 16,
-<a name="l06098"></a>06098 29, 64, 29, 96, 29, -128, 29, 4, 29, 116, 22, 11, 37, 10, 34, 37, 36, 22, 32, 11, 11, 2, 85, 22, 26,
-<a name="l06099"></a>06099 12, 12, 2, 85, 22, 34, 13, 13, 2, 85, 22, 28, 11, 11, 6, 85, 22, 12, 13, 13, 6, 85, 22, 26, 12,
-<a name="l06100"></a>06100 12, 6, 85, -65, 22, -49, 22, -33, 22, -1, 22, 4, 31, 22, 63, 22, 79, 22, 3, 22, 25, 49, 52, -71, 1,
-<a name="l06101"></a>06101 10, 0, 24, 43, 78, 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 77, -19, -12, -19, 16, -3, 93, 113, 43, 43,
-<a name="l06102"></a>06102 43, 43, 43, 43, 43, 43, 43, 43, 60, 16, -3, -12, -11, 60, 17, 18, 57, 47, -19, 57, 47, -12, -28, 0, 63,
-<a name="l06103"></a>06103 -19, -28, 63, -19, -3, 93, -28, 63, -19, -28, 63, 60, 16, -2, 60, 16, -3, 60, -10, -19, 49, 48, 1, 93, 0,
-<a name="l06104"></a>06104 93, 1, 21, 35, 53, 52, 54, 55, 23, 6, 7, 1, 23, 22, 51, 50, 54, 54, 53, 6, 35, 34, 2, 53, 52,
-<a name="l06105"></a>06105 18, 51, 50, 23, 53, 51, 17, 20, 6, 6, 35, 34, 38, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6,
-<a name="l06106"></a>06106 2, 120, -47, 74, 94, 54, 93, 16, -2, 78, -81, 17, -29, 121, -117, 38, 117, -82, -36, -14, -14, -36, -70, 122, -90,
-<a name="l06107"></a>06107 92, -27, -101, -42, -42, -103, -86, 121, -127, -93, -101, -116, -126, -98, 5, 65, -81, 117, 112, -116, 37, 83, 39, 109, -6,
-<a name="l06108"></a>06108 103, 26, -88, 96, -112, -75, -117, 1, 59, -36, -15, 1, 54, -104, -128, -4, 106, -25, -38, 126, -69, 3, 26, -43, -68,
-<a name="l06109"></a>06109 -59, -54, -86, -37, -49, 0, -1, -1, 0, -92, 0, 0, 5, 34, 7, 44, 2, 38, 0, 43, 0, 0, 1, 7, 0,
-<a name="l06110"></a>06110 -42, 1, -82, 1, 106, 0, 22, 64, 10, 1, 0, 14, 17, 1, 6, 65, 1, 1, 14, -71, 2, 33, 0, 41, 0,
-<a name="l06111"></a>06111 43, 1, 43, 53, -1, -1, 0, -121, 0, 0, 3, -24, 7, 44, 2, 38, 0, 75, 0, 0, 1, 7, 0, -42, 1,
-<a name="l06112"></a>06112 44, 1, 106, 0, 21, 64, 9, 1, 21, 5, 0, 72, 43, 1, 1, 23, -71, 2, 33, 0, 41, 0, 43, 1, 43,
-<a name="l06113"></a>06113 53, 0, 0, 2, 0, 31, 0, 0, 5, -89, 5, -70, 0, 19, 0, 23, 1, 6, -71, 0, 25, -1, -64, 64, 44,
-<a name="l06114"></a>06114 19, 21, 52, 47, 25, 1, 17, 21, 20, 6, 4, 18, 0, 3, 4, 3, 19, 23, 8, 6, 2, 20, 1, 11, 2,
-<a name="l06115"></a>06115 30, 12, 1, 1, 4, 22, 21, 30, 16, 17, 17, 19, 8, 4, 2, 15, 19, 8, 12, -72, 2, 93, 64, 9, 15,
-<a name="l06116"></a>06116 32, 14, 14, 9, 15, 8, 32, 9, -72, -1, -18, -76, 15, 15, 2, 85, 9, -72, -1, -14, 64, 11, 13, 13, 2,
-<a name="l06117"></a>06117 85, 9, 16, 12, 12, 2, 85, 9, -72, -1, -64, 64, 19, 11, 11, 6, 85, 9, 1, 12, 12, 6, 85, 9, 93,
-<a name="l06118"></a>06118 47, 25, -128, 25, 2, 25, 1, -72, 2, 93, 64, 11, 19, 5, 18, 32, 19, 32, 16, 16, 2, 85, 19, -72, -1,
-<a name="l06119"></a>06119 -10, -76, 15, 15, 2, 85, 19, -72, -1, -10, -76, 13, 13, 2, 85, 19, -72, -1, -6, 64, 11, 12, 12, 2, 85,
-<a name="l06120"></a>06120 19, 48, 11, 11, 6, 85, 19, -72, -1, -9, -76, 12, 12, 6, 85, 19, -72, -1, -8, 64, 19, 13, 13, 6, 85,
-<a name="l06121"></a>06121 19, 93, 24, 32, 25, 1, 32, 25, 80, 25, 96, 25, 112, 25, 4, 93, 113, 16, -10, 43, 43, 43, 43, 43, 43,
-<a name="l06122"></a>06122 43, -3, 60, 16, -28, 16, 93, -10, 43, 43, 43, 43, 43, -3, 60, 16, 60, 16, -19, -28, 0, 63, 60, 63, 60,
-<a name="l06123"></a>06123 18, 57, 47, 60, -3, 60, 17, 57, 47, 60, -3, 60, 17, 51, 17, 51, 1, 17, 51, 17, 23, 51, 17, 23, 51,
-<a name="l06124"></a>06124 49, 48, 1, 93, 43, 19, 35, 53, 51, 53, 51, 21, 33, 53, 51, 21, 51, 21, 35, 17, 35, 17, 33, 17, 35,
-<a name="l06125"></a>06125 19, 21, 33, 53, -92, -123, -123, -62, 2, -6, -62, -123, -123, -62, -3, 6, -62, -62, 2, -6, 4, 75, -108, -37, -37,
-<a name="l06126"></a>06126 -37, -37, -108, -5, -75, 2, -77, -3, 77, 4, 75, -21, -21, 0, 1, 0, 6, 0, 0, 3, -24, 5, -70, 0, 25,
-<a name="l06127"></a>06127 1, 102, -75, 19, 34, 16, 23, 52, 27, -72, -1, -64, -77, 21, 23, 52, 14, -72, -1, -64, -77, 9, 10, 52, 21,
-<a name="l06128"></a>06128 -72, -1, -34, 64, 11, 23, 25, 52, 37, 11, 53, 10, 69, 10, 3, 10, -72, -1, -32, -74, 23, 25, 52, 10, 24,
-<a name="l06129"></a>06129 7, 2, -72, -1, -64, 64, 50, 30, 43, 52, 2, -44, 8, 1, 1, 12, 4, 0, 20, 28, 12, 7, 17, 25, 10,
-<a name="l06130"></a>06130 7, 32, 1, 1, 1, 18, 37, 27, 64, 11, 11, 2, 85, 27, 64, 16, 16, 2, 85, 15, 40, 16, 16, 2, 85,
-<a name="l06131"></a>06131 15, 20, 14, 14, 2, 85, 15, -72, -1, -20, 64, 17, 13, 13, 2, 85, 15, 4, 12, 12, 2, 85, 15, 26, 11,
-<a name="l06132"></a>06132 11, 2, 85, 15, -72, -1, -10, 64, 11, 11, 11, 6, 85, 15, 20, 16, 16, 6, 85, 15, -72, -1, -8, 64, 11,
-<a name="l06133"></a>06133 13, 13, 6, 85, 15, 10, 15, 15, 6, 85, 15, -72, -1, -10, 64, 18, 12, 12, 6, 85, 15, 64, 51, 54, 52,
-<a name="l06134"></a>06134 -1, 15, 1, -64, 15, 1, 15, 78, 27, -72, -1, -64, 64, 23, 52, 54, 52, -80, 27, -16, 27, 2, 112, 27, -96,
-<a name="l06135"></a>06135 27, -80, 27, -1, 27, 4, 27, 5, 24, 37, 4, 25, -72, -1, -6, -76, 16, 16, 2, 85, 25, -72, -1, -6, 64,
-<a name="l06136"></a>06136 23, 14, 14, 2, 85, 25, 4, 12, 12, 2, 85, 25, 8, 11, 11, 2, 85, 25, 4, 11, 11, 6, 85, 25, -72,
-<a name="l06137"></a>06137 -1, -6, 64, 17, 15, 15, 6, 85, 25, 2, 12, 12, 6, 85, 25, 2, 13, 13, 6, 85, 25, -72, -1, -64, 64,
-<a name="l06138"></a>06138 18, 51, 54, 52, -16, 25, 1, 0, 25, 32, 25, -48, 25, -32, 25, 4, 25, 78, 26, 16, -10, 93, 113, 43, 43,
-<a name="l06139"></a>06139 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l06140"></a>06140 43, 43, 43, 43, 43, -19, 47, 93, 47, 0, 63, 60, 63, -19, 63, 18, 57, 47, 60, -3, 43, 60, 1, 17, 51,
-<a name="l06141"></a>06141 49, 48, 0, 43, 93, 43, 43, 1, 43, 43, 19, 35, 53, 51, 53, 51, 21, 33, 21, 33, 17, 54, 51, 50, 22,
-<a name="l06142"></a>06142 17, 17, 35, 17, 16, 35, 34, 6, 21, 17, 35, -121, -127, -127, -76, 1, 111, -2, -111, 122, -58, -119, -28, -76, -31,
-<a name="l06143"></a>06143 123, -99, -76, 4, -81, -122, -123, -123, -122, -2, -3, -110, -104, -2, -5, -3, 95, 2, -95, 1, 2, -95, -67, -3, -69,
-<a name="l06144"></a>06144 0, -1, -1, -1, -64, 0, 0, 2, 94, 7, 20, 2, 38, 0, 44, 0, 0, 1, 7, 0, -41, -1, -70, 1, 106,
-<a name="l06145"></a>06145 0, 22, 64, 10, 1, 0, 4, 16, 1, 2, 65, 1, 1, 19, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1,
-<a name="l06146"></a>06146 -1, -1, -46, 0, 0, 2, 112, 5, -86, 2, 38, 0, -43, 0, 0, 1, 6, 0, -41, -52, 0, 0, 22, 64, 10,
-<a name="l06147"></a>06147 1, 0, 4, 16, 1, 2, 65, 1, 1, 19, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, -1, -28, 0,
-<a name="l06148"></a>06148 0, 2, 84, 6, -81, 2, 38, 0, 44, 0, 0, 1, 7, 0, -40, -1, -57, 1, 80, 0, 22, 64, 10, 1, 0,
-<a name="l06149"></a>06149 4, 7, 1, 2, 65, 1, 1, 7, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, -1, -23, 0, 0, 2,
-<a name="l06150"></a>06150 89, 5, 95, 2, 38, 0, -43, 0, 0, 1, 6, 0, -40, -52, 0, 0, 22, 64, 10, 1, 0, 4, 7, 1, 2,
-<a name="l06151"></a>06151 65, 1, 1, 7, -71, 2, -61, 0, 41, 0, 43, 1, 43, 53, -1, -1, -1, -1, 0, 0, 2, 78, 7, 8, 2,
-<a name="l06152"></a>06152 38, 0, 44, 0, 0, 1, 7, 0, -39, -1, -47, 1, 80, 0, 22, 64, 10, 1, 0, 11, 5, 1, 2, 65, 1,
-<a name="l06153"></a>06153 1, 8, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, -1, -6, 0, 0, 2, 73, 5, -72, 2, 38, 0,
-<a name="l06154"></a>06154 -43, 0, 0, 1, 6, 0, -39, -52, 0, 0, 22, 64, 10, 1, 0, 11, 5, 1, 2, 65, 1, 1, 8, -71, 2,
-<a name="l06155"></a>06155 34, 0, 41, 0, 43, 1, 43, 53, 0, 1, 0, -93, -2, 86, 2, 89, 5, -70, 0, 18, 0, -16, -71, 0, 5,
-<a name="l06156"></a>06156 2, 93, 64, 13, 10, 15, 18, 8, 16, 2, 7, 8, 0, 0, 18, 15, 2, -72, -1, -64, -77, 24, 26, 52, 2,
-<a name="l06157"></a>06157 -72, 2, 93, -75, 32, 13, 1, 13, 17, 20, -72, -1, -64, -76, 13, 13, 2, 85, 20, -72, -1, -64, -77, 56, 61,
-<a name="l06158"></a>06158 52, 20, -72, -1, -64, -77, 51, 52, 52, 20, -72, -1, -64, -77, 45, 48, 52, 20, -72, -1, -64, -77, 40, 41, 52,
-<a name="l06159"></a>06159 20, -72, -1, -64, -77, 35, 37, 52, 20, -72, -1, -64, -77, 29, 30, 52, 20, -72, -1, -64, -77, 24, 26, 52, 20,
-<a name="l06160"></a>06160 -72, -1, -64, 64, 40, 13, 16, 52, 32, 20, -112, 20, -81, 20, 3, 18, 32, 0, 15, -113, 15, -96, 15, -80, 15,
-<a name="l06161"></a>06161 4, 47, 15, 64, 15, 80, 15, -33, 15, -16, 15, 5, 18, 15, 24, 16, 16, 2, 85, 15, -72, -1, -20, -76, 15,
-<a name="l06162"></a>06162 15, 2, 85, 15, -72, -1, -18, -76, 13, 13, 2, 85, 15, -72, -1, -10, 64, 20, 12, 12, 2, 85, 15, 32, 11,
-<a name="l06163"></a>06163 11, 6, 85, 32, 15, -113, 15, -112, 15, 3, 15, -94, 19, 16, -10, 93, 43, 43, 43, 43, 43, 67, 92, 88, -78,
-<a name="l06164"></a>06164 -128, 15, 1, 1, 93, 89, 113, 114, -3, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, 47, 93, -19, 43, 17,
-<a name="l06165"></a>06165 18, 57, 47, 47, 60, 0, 63, 63, 63, -19, 49, 48, 33, 6, 21, 20, 22, 51, 50, 55, 21, 6, 35, 34, 38,
-<a name="l06166"></a>06166 53, 52, 55, 17, 51, 17, 1, 62, 29, 82, 62, 77, 91, 119, 104, 91, 124, 35, -62, 78, 62, 67, 85, 46, 119,
-<a name="l06167"></a>06167 61, 118, 103, 80, 126, 5, -71, -6, 70, 0, 0, 2, 0, 102, -2, 87, 2, 28, 5, -70, 0, 3, 0, 22, 0,
-<a name="l06168"></a>06168 -29, 64, 85, 24, 54, 11, 11, 2, 85, 79, 24, -112, 24, -96, 24, -80, 24, -64, 24, -33, 24, -16, 24, 7, 0,
-<a name="l06169"></a>06169 24, 31, 24, 112, 24, -128, 24, -97, 24, -80, 24, -64, 24, -33, 24, -21, 4, -32, 24, -1, 24, 11, 31, 24, 1,
-<a name="l06170"></a>06170 0, 126, 1, 0, 20, 6, 22, 19, 10, 9, 69, 14, 15, 12, 32, 11, 1, 11, 4, 4, 22, 19, 6, 69, 32,
-<a name="l06171"></a>06171 17, 1, 17, 2, 3, 3, 22, 1, 0, 0, 22, 37, 19, -72, -1, -8, -76, 16, 16, 2, 85, 19, -72, -1, -6,
-<a name="l06172"></a>06172 64, 23, 14, 14, 2, 85, 19, 4, 12, 12, 2, 85, 19, 10, 11, 11, 2, 85, 19, 20, 11, 11, 6, 85, 19,
-<a name="l06173"></a>06173 -72, -1, -22, -76, 16, 16, 6, 85, 19, -72, -1, -2, -76, 13, 13, 6, 85, 19, -72, -1, -4, 64, 34, 12, 12,
-<a name="l06174"></a>06174 6, 85, 0, 19, -97, 19, -96, 19, -80, 19, -64, 19, -32, 19, 6, -64, 19, -16, 19, 2, 0, 19, 32, 19, -48,
-<a name="l06175"></a>06175 19, -32, 19, 4, 19, 78, 23, 16, -10, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43, 43, -19, 60, 16, 60, 16,
-<a name="l06176"></a>06176 60, 16, 60, 47, 93, -19, 17, 18, 57, 47, 47, 93, 60, 0, 63, -19, 63, 60, 63, 63, -3, 49, 48, 1, 93,
-<a name="l06177"></a>06177 114, 113, 43, 19, 53, 51, 21, 3, 6, 21, 20, 22, 51, 50, 55, 21, 6, 35, 34, 38, 53, 52, 55, 17, 51,
-<a name="l06178"></a>06178 17, -120, -76, 59, 29, 82, 62, 77, 91, 117, 104, 101, 116, 34, -76, 4, -21, -49, -49, -5, 21, 78, 62, 67, 85,
-<a name="l06179"></a>06179 46, 119, 60, 122, 98, 65, -116, 4, 38, -5, -38, 0, -1, -1, 0, 55, -1, -25, 4, 84, 7, 44, 2, 38, 0,
-<a name="l06180"></a>06180 45, 0, 0, 1, 7, 0, -42, 1, -62, 1, 106, 0, 22, 64, 10, 1, 0, 20, 23, 8, 11, 65, 1, 1, 20,
-<a name="l06181"></a>06181 -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 0, 2, -1, -94, -2, 81, 2, 32, 5, -62, 0, 6, 0, 20, 1,
-<a name="l06182"></a>06182 37, 64, 43, 4, 8, 3, 18, 32, 8, 32, 17, 32, 18, 59, 7, 51, 8, 50, 17, 72, 11, -122, 8, 10, 7,
-<a name="l06183"></a>06183 19, 8, 14, 10, 0, 100, 4, 4, 15, 3, 31, 3, 2, 3, -121, 2, 5, 6, 6, 1, 2, -72, 2, 34, 64,
-<a name="l06184"></a>06184 11, 14, 6, 10, 28, 19, 15, 5, 60, 6, 61, 4, -72, -1, -64, 64, 33, 9, 12, 52, 4, 100, 0, 100, 3,
-<a name="l06185"></a>06185 127, 1, 60, 2, 32, 16, 16, 6, 85, 2, 32, 11, 11, 6, 85, 15, 2, 31, 2, 47, 2, 63, 2, 4, 2,
-<a name="l06186"></a>06186 -72, -1, -64, 64, 25, 11, 23, 52, 0, 2, 63, 2, 127, 2, -1, 2, 4, 2, -112, 22, 1, 22, 23, 23, 26,
-<a name="l06187"></a>06187 16, 15, 37, 13, 14, -72, -1, -6, 64, 67, 14, 14, 2, 85, 14, 16, 13, 13, 2, 85, 14, 16, 12, 12, 2,
-<a name="l06188"></a>06188 85, 14, 12, 11, 11, 2, 85, 14, 30, 11, 11, 6, 85, 14, 12, 16, 16, 6, 85, 14, 8, 12, 12, 6, 85,
-<a name="l06189"></a>06189 14, 12, 13, 13, 6, 85, -112, 14, 1, 31, 14, 63, 14, 79, 14, 3, 14, 25, 21, 8, 7, 21, 20, 8, 71,
-<a name="l06190"></a>06190 80, 24, 43, 67, 121, 64, 12, 11, 18, 11, 18, 13, 27, 1, 12, 17, 10, 27, 0, 0, 43, 1, 43, -127, 17,
-<a name="l06191"></a>06191 51, 51, 78, 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 60, 77, -3, 60, 78, 69, 101, 68, -26, 113,
-<a name="l06192"></a>06192 25, 47, 93, 43, 113, 43, 43, 24, 77, -3, 25, -10, 24, -3, -3, 43, 25, -10, 24, -19, 0, 63, -19, 63, 63,
-<a name="l06193"></a>06193 60, 60, 16, 60, 16, -3, 93, 60, 16, -19, 17, 18, 57, 18, 57, 49, 48, 1, 93, 19, 7, 35, 19, 51, 19,
-<a name="l06194"></a>06194 35, 1, 55, 22, 51, 50, 54, 53, 17, 51, 17, 20, 6, 35, 34, -26, 113, -51, -40, -64, -32, -53, -2, 77, 34,
-<a name="l06195"></a>06195 52, 33, 63, 46, -76, 117, -106, 73, 5, 84, -86, 1, 24, -2, -24, -7, -70, -103, 14, 83, -120, 4, 92, -5, -96,
-<a name="l06196"></a>06196 -59, -80, 0, -1, -1, 0, -106, -2, 91, 5, 82, 5, -70, 2, 38, 0, 46, 0, 0, 1, 7, 1, -18, 1, -52,
-<a name="l06197"></a>06197 0, 0, 0, 29, -79, 1, 22, -72, -1, -64, 64, 14, 9, 100, 6, 85, 32, 22, 1, 0, 22, 17, 0, 5, 65,
-<a name="l06198"></a>06198 14, 0, 47, 1, 43, 93, 43, 53, 0, -1, -1, 0, -120, -2, 91, 3, -8, 5, -70, 2, 38, 0, 78, 0, 0,
-<a name="l06199"></a>06199 1, 7, 1, -18, 1, 33, 0, 0, 0, 21, 64, 13, 1, 32, 22, -112, 22, 2, 0, 22, 17, 0, 5, 65, 14,
-<a name="l06200"></a>06200 0, 47, 1, 43, 93, 53, 0, 0, 1, 0, -122, 0, 0, 3, -10, 4, 38, 0, 11, 1, 91, -71, 0, 6, -1,
-<a name="l06201"></a>06201 -24, -76, 12, 12, 2, 85, 10, -72, -1, -24, -76, 12, 12, 2, 85, 9, -72, -1, -24, 64, 76, 12, 12, 2, 85,
-<a name="l06202"></a>06202 23, 3, 1, 68, 3, 1, 6, 6, 4, 9, 2, 7, 6, 37, 6, 47, 7, 47, 8, -128, 13, -73, 5, -58, 5,
-<a name="l06203"></a>06203 -64, 13, -27, 6, -27, 9, -32, 13, -6, 4, -11, 6, 13, 63, 13, 90, 4, 89, 5, 105, 4, 105, 5, -104, 6,
-<a name="l06204"></a>06204 -88, 6, 7, 5, 6, 27, 4, 24, 9, 40, 9, 56, 9, 88, 4, 89, 5, 7, 74, 6, 1, 3, -72, -1, -12,
-<a name="l06205"></a>06205 64, 16, 10, 9, 16, 2, 6, 6, 7, 9, 10, 9, 8, 10, 5, 9, 8, 8, -72, -1, -8, 64, 64, 11, 12,
-<a name="l06206"></a>06206 6, 85, 8, 37, 7, 6, 20, 7, 7, 6, 3, 4, 4, 37, 5, 10, 20, 5, 5, 10, 101, 10, 1, 10, 9,
-<a name="l06207"></a>06207 6, 3, 4, 4, 1, 6, 5, 4, 6, 11, 8, 8, 7, 10, -85, 6, 1, 10, 9, 8, 6, 5, 4, 3, 7,
-<a name="l06208"></a>06208 32, 7, -128, 7, -65, 7, 3, 7, 2, 11, 37, 0, -72, -1, -8, -76, 16, 16, 2, 85, 0, -72, -1, -6, 64,
-<a name="l06209"></a>06209 17, 14, 14, 2, 85, 0, 6, 12, 12, 2, 85, 0, 6, 11, 11, 2, 85, 0, -72, -1, -8, -76, 16, 16, 6,
-<a name="l06210"></a>06210 85, 0, -72, -1, -18, -76, 15, 15, 6, 85, 0, -72, -1, -8, -76, 12, 13, 6, 85, 0, -72, -1, -64, 64, 18,
-<a name="l06211"></a>06211 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 12, 16, -10, 93, 113, 43, 43, 43,
-<a name="l06212"></a>06212 43, 43, 43, 43, 43, -3, 60, 25, 47, 93, 23, 57, 113, 0, 24, 63, 60, 16, 60, 63, 60, 63, 17, 23, 57,
-<a name="l06213"></a>06213 114, -121, 5, 46, 43, 4, 125, 16, -60, -121, 5, 46, 24, 43, 43, 14, 125, 16, -60, 7, 8, 16, 60, 8, 60,
-<a name="l06214"></a>06214 0, 23, 56, 49, 48, 56, 1, 114, 113, 93, 93, 0, 93, 114, 113, 43, 43, 43, 51, 17, 51, 17, 1, 51, 1,
-<a name="l06215"></a>06215 1, 35, 1, 7, 17, -122, -76, 1, -86, -23, -2, 106, 1, -65, -34, -2, -95, 127, 4, 38, -2, 80, 1, -80, -2,
-<a name="l06216"></a>06216 118, -3, 100, 2, 31, 122, -2, 91, 0, -1, -1, 0, -106, -2, 91, 4, 42, 5, -70, 2, 38, 0, 47, 0, 0,
-<a name="l06217"></a>06217 1, 7, 1, -18, 1, 84, 0, 0, 0, 19, 64, 11, 1, 32, 22, 1, 0, 16, 11, 0, 5, 65, 8, 0, 47,
-<a name="l06218"></a>06218 1, 43, 93, 53, 0, -1, -1, -1, -3, -2, 91, 1, -82, 5, -70, 2, 38, 0, 79, 0, 0, 1, 6, 1, -18,
-<a name="l06219"></a>06219 -110, 0, 0, 22, -74, 1, 79, 4, 1, 31, 4, 1, -72, -1, -28, -76, 4, 4, 0, 0, 65, 1, 43, 93, 113,
-<a name="l06220"></a>06220 53, -1, -1, 0, -100, -2, 91, 5, 31, 5, -70, 2, 38, 0, 49, 0, 0, 1, 7, 1, -18, 1, -26, 0, 0,
-<a name="l06221"></a>06221 0, 19, 64, 11, 1, 32, 20, 1, 0, 20, 15, 0, 5, 65, 12, 0, 47, 1, 43, 93, 53, 0, -1, -1, 0,
-<a name="l06222"></a>06222 -121, -2, 91, 3, -26, 4, 62, 2, 38, 0, 81, 0, 0, 1, 7, 1, -18, 0, -6, 0, 0, 0, 14, -73, 1,
-<a name="l06223"></a>06223 0, 33, 28, 1, 12, 65, 25, 0, 47, 1, 43, 53, 0, 1, 0, -91, -1, -25, 5, 93, 5, -45, 0, 29, 0,
-<a name="l06224"></a>06224 -4, 64, 94, 59, 7, 52, 11, 63, 22, 65, 11, 105, 19, 108, 22, 123, 3, 117, 6, 114, 7, 117, 22, -117, 3,
-<a name="l06225"></a>06225 -101, 3, 12, 5, 3, 5, 25, 20, 3, 20, 25, 36, 3, 36, 19, 47, 22, 113, 2, -126, 2, -107, 2, -92, 2,
-<a name="l06226"></a>06226 -92, 3, -77, 2, -74, 3, -64, 2, -48, 2, 16, 15, 14, 14, 12, 15, 14, 23, 30, 5, 3, 1, 0, 2, 15,
-<a name="l06227"></a>06227 14, 17, 30, 12, 9, 28, 29, 8, 15, 47, 14, 1, 14, 21, 38, 9, 36, 16, 16, 2, 85, 9, -72, -1, -44,
-<a name="l06228"></a>06228 -76, 13, 13, 2, 85, 9, -72, -1, -16, -76, 11, 11, 2, 85, 9, -72, -1, -20, -76, 13, 13, 6, 85, 9, -72,
-<a name="l06229"></a>06229 -1, -12, 64, 20, 11, 12, 6, 85, 0, 9, 1, 9, 86, 31, 1, 28, 32, 29, 32, 16, 16, 2, 85, 29, -72,
-<a name="l06230"></a>06230 -1, -10, -76, 15, 15, 2, 85, 29, -72, -1, -10, -76, 13, 13, 2, 85, 29, -72, -1, -6, -76, 12, 12, 2, 85,
-<a name="l06231"></a>06231 29, -72, -1, -12, -76, 15, 15, 6, 85, 29, -72, -1, -8, -76, 13, 13, 6, 85, 29, -72, -1, -10, -74, 12, 12,
-<a name="l06232"></a>06232 6, 85, 29, 93, 30, 16, -3, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, -10, 93, 43, 43, 43, 43, 43, -19,
-<a name="l06233"></a>06233 47, 93, 47, 0, 63, 60, 63, -19, 47, 47, 63, 60, 63, -19, 1, 17, 51, 0, 17, 51, 17, 51, 49, 48, 0,
-<a name="l06234"></a>06234 93, 1, 93, 19, 51, 21, 54, 54, 51, 50, 22, 18, 17, 16, 0, 35, 34, 39, 55, 22, 51, 50, 54, 18, 53,
-<a name="l06235"></a>06235 16, 33, 34, 6, 6, 21, 17, 35, -91, -60, 115, -30, 125, -75, -27, -120, -2, -4, -36, 127, 121, 87, 96, 65, 77,
-<a name="l06236"></a>06236 -126, 76, -2, 107, -123, -55, 76, -60, 5, -70, -74, -124, 75, -94, -2, -49, -2, -14, -2, 118, -2, 127, 72, -103, 52,
-<a name="l06237"></a>06237 -127, 1, 7, -47, 2, 67, 125, -63, -47, -4, -33, 0, 0, 1, 0, -117, -2, 81, 3, -22, 4, 62, 0, 29, 1,
-<a name="l06238"></a>06238 60, 64, 74, 36, 24, 52, 25, 68, 25, -32, 24, -27, 25, 5, 21, 28, -44, 17, -46, 18, -30, 18, 4, -123, 18,
-<a name="l06239"></a>06239 -99, 15, -84, 15, -86, 18, -68, 15, 5, 6, 18, 5, 28, 114, 18, -119, 15, -128, 17, 5, 7, 7, 6, 6, 9,
-<a name="l06240"></a>06240 28, 4, 15, 21, 10, 16, 28, 26, 7, 23, 22, 6, 18, 16, 20, 12, 13, 1, 13, 37, 0, 18, 16, 16, 2,
-<a name="l06241"></a>06241 85, 0, -72, -1, -22, 64, 11, 13, 13, 2, 85, 0, 6, 12, 12, 2, 85, 0, -72, -1, -10, -76, 11, 11, 2,
-<a name="l06242"></a>06242 85, 0, -72, -1, -12, 64, 11, 11, 11, 6, 85, 0, 26, 16, 16, 6, 85, 0, -72, -1, -7, -76, 13, 13, 6,
-<a name="l06243"></a>06243 85, 0, -72, -1, -10, 64, 11, 12, 12, 6, 85, -1, 0, 1, -1, 0, 1, 0, -72, -1, -64, 64, 28, 51, 54,
-<a name="l06244"></a>06244 52, -80, 0, -16, 0, 2, 112, 0, -96, 0, -80, 0, -64, 0, 4, 0, 69, 31, 24, 23, -102, 19, 20, 37, 22,
-<a name="l06245"></a>06245 21, -72, -1, -8, 64, 17, 16, 16, 2, 85, 21, 6, 12, 12, 2, 85, 21, 4, 11, 11, 6, 85, 21, -72, -1,
-<a name="l06246"></a>06246 -6, -76, 16, 16, 6, 85, 21, -72, -1, -6, 64, 17, 15, 15, 6, 85, 21, 2, 12, 12, 6, 85, 21, 4, 13,
-<a name="l06247"></a>06247 13, 6, 85, 21, -72, -1, -64, 64, 21, 51, 54, 52, -16, 21, 1, 0, 21, 32, 21, -48, 21, -32, 21, 4, 21,
-<a name="l06248"></a>06248 78, 30, 18, 13, 20, 17, 18, 57, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, -12, 60,
-<a name="l06249"></a>06249 16, -10, 93, 113, 43, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -19, 60, 16, 60, 0, 17, 18, 57, 63, 60,
-<a name="l06250"></a>06250 63, -19, 63, 63, -19, 51, 47, 51, 47, 49, 48, 1, 93, 93, 93, 0, 93, 1, 17, 20, 6, 35, 34, 39, 55,
-<a name="l06251"></a>06251 22, 51, 50, 54, 53, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 54, 51, 50, 22, 22, 3, -22, 117,
-<a name="l06252"></a>06252 -106, 73, 68, 34, 53, 32, 65, 44, 104, 119, 117, -93, -76, -94, 117, -35, -126, -80, 57, 2, -115, -3, 57, -59, -80,
-<a name="l06253"></a>06253 19, -103, 14, 88, -125, 2, -68, -108, -120, -106, -56, -3, -68, 4, 38, -105, -81, 112, -91, 0, -1, -1, 0, 99, -1,
-<a name="l06254"></a>06254 -25, 5, -35, 6, -45, 2, 38, 0, 50, 0, 0, 1, 7, 0, -40, 1, -37, 1, 116, 0, 30, -75, 2, 32, 28,
-<a name="l06255"></a>06255 112, 28, 2, -72, -1, -20, -73, 28, 31, 0, 7, 65, 2, 1, 28, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93,
-<a name="l06256"></a>06256 53, -1, -1, 0, 68, -1, -24, 4, 39, 5, 95, 2, 38, 0, 82, 0, 0, 1, 7, 0, -40, 0, -21, 0, 0,
-<a name="l06257"></a>06257 0, 37, -77, 2, 2, 1, 26, -71, 2, -61, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 27, 28,
-<a name="l06258"></a>06258 0, 7, 65, 43, 27, -76, 26, 2, 10, 72, 43, 43, 89, 53, 0, -1, -1, 0, 99, -1, -25, 5, -35, 7, 34,
-<a name="l06259"></a>06259 2, 38, 0, 50, 0, 0, 1, 7, 0, -39, 1, -37, 1, 106, 0, 33, 64, 20, 2, 80, 35, 96, 35, 112, 35,
-<a name="l06260"></a>06260 -128, 35, -112, 35, 5, 35, 2, 0, 72, 43, 2, 1, 32, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 53, 0,
-<a name="l06261"></a>06261 -1, -1, 0, 68, -1, -24, 4, 39, 5, -72, 2, 38, 0, 82, 0, 0, 1, 7, 0, -39, 0, -21, 0, 0, 0,
-<a name="l06262"></a>06262 22, 64, 10, 2, 0, 33, 27, 0, 7, 65, 2, 1, 30, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1,
-<a name="l06263"></a>06263 0, -95, -2, 91, 5, -83, 5, -70, 2, 38, 0, 53, 0, 0, 1, 7, 1, -18, 1, -26, 0, 0, 0, 19, 64,
-<a name="l06264"></a>06264 11, 2, 32, 46, 1, 0, 46, 40, 1, 6, 65, 37, 0, 47, 1, 43, 93, 53, 0, -1, -1, 0, -123, -2, 91,
-<a name="l06265"></a>06265 2, -58, 4, 62, 2, 38, 0, 85, 0, 0, 1, 6, 1, -18, 37, 0, 0, 4, -80, 20, 0, 47, -1, -1, 0,
-<a name="l06266"></a>06266 92, -1, -25, 4, -21, 7, 38, 2, 38, 0, 54, 0, 0, 1, 7, 0, -42, 1, 76, 1, 100, 0, 22, 64, 10,
-<a name="l06267"></a>06267 1, 0, 51, 54, 22, 22, 65, 1, 1, 50, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 63, -1,
-<a name="l06268"></a>06268 -24, 3, -79, 5, -62, 2, 38, 0, 86, 0, 0, 1, 7, 0, -42, 0, -66, 0, 0, 0, 22, 64, 10, 1, 0,
-<a name="l06269"></a>06269 51, 54, 21, 21, 65, 1, 1, 50, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 0, 1, 0, 48, 0, 0, 4,
-<a name="l06270"></a>06270 -70, 5, -70, 0, 15, 0, -76, 64, 38, 0, 17, 16, 17, 32, 17, 3, 12, 1, 48, 11, 2, 2, 15, 6, 8,
-<a name="l06271"></a>06271 5, 30, 7, 6, 2, 15, 8, 11, 12, 57, 7, 1, 2, 57, 6, 14, 9, 8, 32, 7, 1, 7, -72, 1, 1,
-<a name="l06272"></a>06272 -73, 9, 32, 4, 5, 47, 6, 1, 6, -72, 1, 1, -78, 4, 4, 15, -72, -1, -24, 64, 11, 16, 16, 2, 85,
-<a name="l06273"></a>06273 15, 8, 15, 15, 2, 85, 15, -72, -1, -14, -76, 12, 12, 2, 85, 15, -72, -1, -30, -76, 13, 13, 2, 85, 15,
-<a name="l06274"></a>06274 -72, -1, -4, -76, 12, 12, 6, 85, 15, -72, -1, -24, -76, 13, 13, 6, 85, 15, -72, -1, -32, 64, 10, 16, 16,
-<a name="l06275"></a>06275 6, 85, 16, 15, 32, 15, 2, 15, -72, 2, 115, -77, 16, -74, -103, 24, 43, 16, -3, 93, 43, 43, 43, 43, 43,
-<a name="l06276"></a>06276 43, 43, 60, 16, -12, 93, 60, 16, -3, -12, 93, 60, 16, 60, 16, -12, 60, 16, -12, 60, 0, 63, 63, 60, -3,
-<a name="l06277"></a>06277 60, 17, 18, 57, 47, 60, -3, 60, 49, 48, 1, 93, 1, 33, 53, 33, 17, 33, 53, 33, 21, 33, 17, 33, 21,
-<a name="l06278"></a>06278 33, 17, 35, 2, 19, -2, -74, 1, 74, -2, 29, 4, -118, -2, 27, 1, 72, -2, -72, -62, 2, 117, -124, 2, 20,
-<a name="l06279"></a>06279 -83, -83, -3, -20, -124, -3, -117, 0, 0, 1, 0, 12, -1, -14, 2, 19, 5, -103, 0, 30, 1, 14, -71, 0, 5,
-<a name="l06280"></a>06280 -1, -64, -77, 35, 38, 52, 6, -72, -1, -64, 64, 91, 35, 38, 52, 47, 32, -128, 32, 2, 16, 1, 43, 15, 2,
-<a name="l06281"></a>06281 2, 26, 12, 5, 43, 11, 6, 6, 22, -55, 26, 3, 24, 26, 23, 5, 21, 8, 52, 11, 12, 6, 85, 9, 52,
-<a name="l06282"></a>06282 11, 12, 6, 85, 8, 9, 6, 17, 14, 13, 10, 4, 9, 18, 0, 3, 4, 7, 4, 8, 30, 15, 51, 11, -96,
-<a name="l06283"></a>06283 2, -80, 2, -64, 2, -48, 2, 4, 2, 2, 6, 11, 12, 34, 23, 34, 24, 9, 18, 37, 8, 24, -1, 30, 6,
-<a name="l06284"></a>06284 5, 69, 30, -72, -1, -6, -76, 16, 16, 2, 85, 30, -72, -1, -6, 64, 23, 14, 14, 2, 85, 30, 4, 12, 13,
-<a name="l06285"></a>06285 2, 85, 30, 8, 11, 11, 2, 85, 30, 6, 16, 16, 6, 85, 30, -72, -1, -6, -76, 15, 15, 6, 85, 30, -72,
-<a name="l06286"></a>06286 -1, -4, 64, 11, 11, 11, 6, 85, 30, 18, 12, 12, 6, 85, 30, -72, -1, -12, 64, 20, 13, 13, 6, 85, -81,
-<a name="l06287"></a>06287 30, -65, 30, 2, 0, 30, -48, 30, 2, 30, 78, 31, 23, 24, 71, -71, 1, 10, 0, 24, 43, 0, 16, -55, 1,
-<a name="l06288"></a>06288 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, -12, 60, 16, -19, 60, -3, 60, 16, -28, -12, 60, 17,
-<a name="l06289"></a>06289 51, 47, 113, 16, -28, 17, 18, 23, 51, 17, 18, 23, 51, 0, 17, 51, 51, 43, 43, 17, 18, 57, 18, 57, 63,
-<a name="l06290"></a>06290 -19, 63, 60, -3, 60, 18, 57, 47, 60, -3, 60, 49, 48, 1, 93, 43, 43, 19, 35, 53, 51, 17, 35, 53, 51,
-<a name="l06291"></a>06291 17, 55, 17, 51, 21, 35, 17, 51, 21, 35, 21, 20, 22, 51, 50, 55, 23, 6, 35, 34, 38, 38, 53, -111, -123,
-<a name="l06292"></a>06292 -123, -124, -124, -76, -76, -76, -84, -84, 37, 64, 32, 47, 26, 73, 61, 106, 115, 31, 2, 2, -124, 1, 20, -116, 1,
-<a name="l06293"></a>06293 7, 108, -2, -115, -116, -2, -20, -124, -43, 85, 62, 7, -97, 16, 72, 117, -120, 0, -1, -1, 0, -95, -1, -25, 5,
-<a name="l06294"></a>06294 34, 7, 14, 2, 38, 0, 56, 0, 0, 1, 7, 0, -41, 1, -92, 1, 100, 0, 22, 64, 10, 1, 0, 21, 33,
-<a name="l06295"></a>06295 17, 17, 65, 1, 1, 21, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, -125, -1, -24, 3, -32, 5,
-<a name="l06296"></a>06296 -86, 2, 38, 0, 88, 0, 0, 1, 7, 0, -41, 0, -20, 0, 0, 0, 32, 64, 18, 1, -17, 25, 1, 25, 64,
-<a name="l06297"></a>06297 83, 84, 52, 0, 25, 37, 17, 17, 65, 1, 1, 25, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 113, 53, -1,
-<a name="l06298"></a>06298 -1, 0, -95, -1, -25, 5, 34, 6, -61, 2, 38, 0, 56, 0, 0, 1, 7, 0, -40, 1, -92, 1, 100, 0, 37,
-<a name="l06299"></a>06299 -77, 1, 1, 1, 21, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 21, 23, 11, 1,
-<a name="l06300"></a>06300 65, 43, 27, -76, 21, 15, 0, 72, 43, 43, 89, 53, 0, -1, -1, 0, -125, -1, -24, 3, -32, 5, 95, 2, 38,
-<a name="l06301"></a>06301 0, 88, 0, 0, 1, 7, 0, -40, 0, -20, 0, 0, 0, 22, 64, 10, 1, 0, 25, 28, 10, 23, 65, 1, 1,
-<a name="l06302"></a>06302 25, -71, 2, -61, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, -95, -1, -25, 5, 34, 7, 28, 2, 38, 0, 56,
-<a name="l06303"></a>06303 0, 0, 1, 7, 0, -39, 1, -112, 1, 100, 0, 22, 64, 10, 1, 0, 28, 22, 11, 1, 65, 1, 1, 25, -71,
-<a name="l06304"></a>06304 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, -125, -1, -24, 3, -32, 5, -72, 2, 38, 0, 88, 0, 0,
-<a name="l06305"></a>06305 1, 7, 0, -39, 0, -20, 0, 0, 0, 40, -77, 1, 1, 1, 29, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6,
-<a name="l06306"></a>06306 2, 67, 84, 88, -75, 0, 32, 26, 10, 23, 65, 43, 27, -79, 32, 11, -72, -1, -40, -79, 72, 43, 43, 89, 53,
-<a name="l06307"></a>06307 0, 1, 0, -95, -2, 86, 5, 34, 5, -70, 0, 34, 1, 51, -73, 88, 16, 88, 34, -55, 16, 3, 36, -72, -1,
-<a name="l06308"></a>06308 -64, 64, 42, 19, 21, 52, 58, 16, 59, 17, 52, 33, 54, 34, 74, 16, 74, 17, 70, 33, 70, 34, 88, 17, 86,
-<a name="l06309"></a>06309 33, 102, 34, 118, 23, -86, 34, -24, 23, 14, 12, 34, 13, 21, 52, 7, -100, 8, 8, 5, -72, 2, 93, -75, 10,
-<a name="l06310"></a>06310 15, 15, 9, 15, 25, -72, 2, -69, 64, 10, 0, 9, 29, 19, 2, 32, 8, 1, 8, 2, -72, 2, 93, 64, 16,
-<a name="l06311"></a>06311 13, 13, 15, 0, 1, -1, 0, 1, 0, -100, 15, 15, 18, 28, 38, 31, -72, -1, -20, -76, 15, 15, 2, 85, 31,
-<a name="l06312"></a>06312 -72, -1, -14, 64, 17, 13, 13, 2, 85, 31, 16, 12, 12, 2, 85, 31, 12, 15, 15, 6, 85, 31, -72, -1, -16,
-<a name="l06313"></a>06313 64, 31, 11, 11, 6, 85, 32, 31, 1, 32, 31, 80, 31, 2, 96, 31, 112, 31, -128, 31, 3, 31, 93, 36, 21,
-<a name="l06314"></a>06314 38, 18, 32, 16, 16, 2, 85, 18, -72, -1, -10, -76, 15, 15, 2, 85, 18, -72, -1, -10, -76, 13, 13, 2, 85,
-<a name="l06315"></a>06315 18, -72, -1, -6, -76, 12, 12, 2, 85, 18, -72, -1, -4, -76, 11, 11, 6, 85, 18, -72, -1, -9, -76, 12, 12,
-<a name="l06316"></a>06316 6, 85, 18, -72, -1, -8, -76, 13, 13, 6, 85, 18, -72, -1, -10, -73, 15, 15, 6, 85, 32, 10, 1, 18, -72,
-<a name="l06317"></a>06317 -1, -64, -74, 19, 21, 52, 18, 93, 35, 59, -71, 1, -114, 0, 24, 43, 16, -12, 43, 93, 43, 43, 43, 43, 43,
-<a name="l06318"></a>06318 43, 43, 43, -19, 16, -10, 93, 93, 113, 43, 43, 43, 43, 43, -19, 18, 57, 47, -19, 93, 113, 51, 47, -19, 47,
-<a name="l06319"></a>06319 93, 0, 63, 60, 63, -19, 51, 63, 63, -19, 51, 47, -19, 49, 48, 1, 43, 93, 43, 0, 93, 5, 6, 21, 20,
-<a name="l06320"></a>06320 22, 51, 50, 55, 21, 6, 35, 34, 38, 53, 52, 55, 36, 2, 17, 17, 51, 17, 20, 22, 22, 51, 50, 54, 17,
-<a name="l06321"></a>06321 17, 51, 17, 20, 2, 6, 3, 18, 20, 82, 62, 77, 91, 118, 101, 98, 121, 28, -2, -13, -18, -62, 73, -79, 116,
-<a name="l06322"></a>06322 -37, -76, -62, 78, -16, 24, 71, 42, 71, 84, 46, 119, 61, 120, 101, 70, 113, 23, 1, 26, 1, 80, 3, 79, -4,
-<a name="l06323"></a>06323 -78, -65, -71, 94, -60, 1, 18, 3, 78, -4, -79, -63, -2, -2, -76, 0, 0, 1, 0, -125, -2, 87, 4, -45, 4,
-<a name="l06324"></a>06324 38, 0, 37, 1, 114, -75, 12, 34, 15, 17, 52, 39, -72, -1, -64, 64, 9, 21, 23, 52, 18, 32, 19, 22, 52,
-<a name="l06325"></a>06325 28, -72, -1, -16, 64, 64, 18, 20, 52, 10, 21, 25, 21, 38, 18, 53, 18, 68, 18, 119, 28, -124, 28, 7, 42,
-<a name="l06326"></a>06326 18, 43, 32, 2, 7, 7, 8, 8, 5, 69, 10, 15, 35, 24, 6, 37, 16, 11, 30, 28, 19, 11, 7, 32, 8,
-<a name="l06327"></a>06327 64, 8, 112, 8, 3, 8, 2, 69, 13, 13, 0, 0, 37, 34, 33, 17, 3, 16, -102, 35, -72, 2, 48, 64, 25,
-<a name="l06328"></a>06328 37, 36, 64, 51, 54, 52, 39, 64, 16, 16, 2, 85, 36, 40, 16, 16, 2, 85, 36, 18, 14, 14, 2, 85, 36,
-<a name="l06329"></a>06329 -72, -1, -22, 64, 11, 13, 13, 2, 85, 36, 4, 12, 12, 2, 85, 36, -72, -1, -4, -76, 11, 11, 2, 85, 36,
-<a name="l06330"></a>06330 -72, -1, -12, 64, 11, 11, 11, 6, 85, 36, 20, 16, 16, 6, 85, 36, -72, -1, -10, 64, 11, 13, 13, 6, 85,
-<a name="l06331"></a>06331 36, 12, 15, 15, 6, 85, 36, -72, -1, -10, 64, 13, 12, 12, 6, 85, -1, 36, 1, -64, 36, 1, 36, 78, 39,
-<a name="l06332"></a>06332 -72, -1, -64, 64, 21, 52, 54, 52, -80, 39, -16, 39, 2, 112, 39, -96, 39, -80, 39, -1, 39, 4, 39, 26, 37,
-<a name="l06333"></a>06333 23, -72, -1, -8, -76, 16, 16, 2, 85, 23, -72, -1, -8, 64, 17, 14, 14, 2, 85, 23, 4, 12, 12, 2, 85,
-<a name="l06334"></a>06334 23, 10, 11, 11, 6, 85, 23, -72, -1, -10, 64, 17, 15, 15, 6, 85, 23, 2, 12, 12, 6, 85, 23, 2, 13,
-<a name="l06335"></a>06335 13, 6, 85, 23, -72, -1, -64, 64, 21, 51, 54, 52, -16, 23, 1, 0, 23, 32, 23, -48, 23, -32, 23, 4, 23,
-<a name="l06336"></a>06336 78, 38, 71, 80, 24, 43, 16, -12, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, 93, 113, 43, -10, 93,
-<a name="l06337"></a>06337 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, -28, 23, 57, 17, 57, 47, 50, 47, -19, 47,
-<a name="l06338"></a>06338 93, 60, 0, 63, -19, 63, 60, 63, 60, 63, -19, 51, 47, 51, 47, 49, 48, 0, 93, 1, 93, 43, 43, 43, 43,
-<a name="l06339"></a>06339 33, 6, 21, 20, 22, 51, 50, 55, 21, 6, 35, 34, 38, 53, 52, 55, 55, 53, 6, 35, 34, 38, 38, 53, 17,
-<a name="l06340"></a>06340 51, 17, 20, 22, 22, 51, 50, 54, 54, 53, 17, 51, 17, 3, -72, 29, 82, 62, 76, 92, 117, 104, 98, 119, 26,
-<a name="l06341"></a>06341 8, 124, -42, 126, -79, 59, -76, 26, 110, 83, 91, -113, 48, -76, 78, 62, 67, 85, 46, 119, 60, 120, 100, 67, 105,
-<a name="l06342"></a>06342 33, -100, -76, 112, -89, -107, 2, -110, -3, -77, -117, 119, 84, 96, -112, 122, 2, 57, -5, -38, 0, -1, -1, 0, 25,
-<a name="l06343"></a>06343 0, 0, 7, 118, 7, 44, 2, 38, 0, 58, 0, 0, 1, 7, 0, -42, 2, 108, 1, 106, 0, 37, -77, 1, 1,
-<a name="l06344"></a>06344 1, 27, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 27, 30, 8, 9, 65, 43, 27,
-<a name="l06345"></a>06345 -76, 25, 21, 0, 72, 43, 43, 89, 53, 0, -1, -1, 0, 6, 0, 0, 5, -73, 5, -62, 2, 38, 0, 90, 0,
-<a name="l06346"></a>06346 0, 1, 7, 0, -42, 1, -102, 0, 0, 0, 37, -77, 1, 1, 1, 21, -71, 2, 34, 0, 41, 0, 43, 1, -79,
-<a name="l06347"></a>06347 6, 2, 67, 84, 88, -75, 0, 21, 24, 7, 8, 65, 43, 27, -76, 19, 17, 0, 72, 43, 43, 89, 53, 0, -1,
-<a name="l06348"></a>06348 -1, 0, 6, 0, 0, 5, 70, 7, 44, 2, 38, 0, 60, 0, 0, 1, 7, 0, -42, 1, 109, 1, 106, 0, 22,
-<a name="l06349"></a>06349 64, 10, 1, 0, 15, 18, 2, 10, 65, 1, 1, 15, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0,
-<a name="l06350"></a>06350 33, -2, 81, 3, -18, 5, -62, 2, 38, 0, 92, 0, 0, 1, 7, 0, -42, 0, -41, 0, 0, 0, 37, -77, 1,
-<a name="l06351"></a>06351 1, 1, 29, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 29, 32, 12, 18, 65, 43,
-<a name="l06352"></a>06352 27, -76, 27, 15, 0, 72, 43, 43, 89, 53, 0, 0, 1, 0, -119, 0, 0, 2, 86, 5, -45, 0, 14, 0, -75,
-<a name="l06353"></a>06353 64, 77, 79, 16, -112, 16, -96, 16, -80, 16, -64, 16, -33, 16, -16, 16, 7, -80, 16, -64, 16, -33, 16, -32, 16,
-<a name="l06354"></a>06354 -1, 16, 5, 0, 16, 31, 16, 112, 16, -128, 16, -97, 16, 5, 31, 16, 75, 3, 89, 3, 104, 3, 112, 16, 5,
-<a name="l06355"></a>06355 10, 28, 5, 0, 0, 10, 7, 7, 0, 8, 32, 8, 112, 8, -128, 8, 4, 8, 13, 14, 37, 1, 16, 64, 11,
-<a name="l06356"></a>06356 11, 2, 85, 0, -72, -1, -10, 64, 23, 16, 16, 2, 85, 0, 6, 12, 12, 2, 85, 0, 16, 11, 11, 2, 85,
-<a name="l06357"></a>06357 0, 8, 16, 16, 6, 85, 0, -72, -1, -4, 64, 38, 12, 13, 6, 85, -97, 0, -64, 0, -32, 0, 3, 0, 0,
-<a name="l06358"></a>06358 -96, 0, -80, 0, 3, -64, 0, -16, 0, 2, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 15, 71, 80, 24,
-<a name="l06359"></a>06359 43, 16, -12, 93, 113, 114, 114, 43, 43, 43, 43, 43, 43, 60, -3, 60, 47, 93, 51, 47, 0, 63, 63, -19, 49,
-<a name="l06360"></a>06360 48, 1, 93, 114, 114, 113, 51, 17, 52, 54, 54, 51, 50, 23, 7, 38, 35, 34, 6, 21, 17, -119, 54, -122, 106,
-<a name="l06361"></a>06361 79, 88, 26, 54, 52, 90, 59, 4, -105, 115, 127, 74, 18, -99, 10, 79, 87, -5, 120, 0, -1, -1, -1, -3, 0,
-<a name="l06362"></a>06362 0, 5, 89, 8, 12, 2, 54, 0, 99, 0, 0, 1, 23, 0, -115, 1, 83, 2, 74, 0, 101, -73, 4, 39, 17,
-<a name="l06363"></a>06363 0, 72, 43, 4, 39, -72, -1, -64, -77, 51, 54, 52, 39, -72, -1, -64, -77, 34, 36, 52, 39, -72, -1, -64, -77,
-<a name="l06364"></a>06364 30, 32, 52, 39, -72, -1, -64, -74, 16, 18, 52, -81, 39, 1, 39, 0, 47, 93, 43, 43, 43, 43, -79, 6, 2,
-<a name="l06365"></a>06365 67, 84, 88, 64, 9, 0, 39, 16, 39, 2, -96, 39, 1, 39, -72, -1, -64, -77, 69, 69, 52, 39, -72, -1, -64,
-<a name="l06366"></a>06366 -77, 44, 47, 52, 39, -72, -1, -64, -78, 23, 25, 52, 43, 43, 43, 93, 114, 89, 53, 1, 43, 53, 0, -1, -1,
-<a name="l06367"></a>06367 0, 74, -1, -24, 4, 28, 7, -124, 2, 38, 0, 110, 0, 0, 1, 7, 0, -115, 1, 15, 1, -62, 0, -54, -79,
-<a name="l06368"></a>06368 6, 2, 67, 84, 88, 64, 42, 4, 0, 80, 83, 59, 59, 65, 3, 2, 0, 56, 62, 28, 28, 65, 4, 0, 83,
-<a name="l06369"></a>06369 80, 83, -16, 83, 3, 47, 83, 112, 83, -128, 83, 3, 83, 3, 2, 32, 65, -128, 65, 2, -128, 65, 1, 65, 0,
-<a name="l06370"></a>06370 47, 113, 114, 53, 53, 47, 93, 113, 53, 1, 43, 53, 53, 43, 53, 27, 64, 44, 4, 80, 68, 0, 72, 43, 81,
-<a name="l06371"></a>06371 82, 80, 83, -128, 75, 79, 52, 83, 64, 96, 96, 52, 83, 64, 56, 56, 52, 0, 83, 96, 83, -113, 83, -48, 83,
-<a name="l06372"></a>06372 4, -113, 83, -16, 83, 2, 83, -128, 56, 63, 52, 83, -72, -1, -64, 64, 9, 44, 46, 52, 83, -128, 41, 47, 52,
-<a name="l06373"></a>06373 83, -72, -1, -64, -77, 39, 40, 52, 83, -72, -1, -128, -77, 35, 36, 52, 83, -72, -1, -64, -77, 31, 34, 52, 83,
-<a name="l06374"></a>06374 -72, -1, -128, 64, 15, 30, 30, 52, 83, 64, 21, 24, 52, 83, -128, 19, 20, 52, 83, 28, -72, 1, 64, 0, 26,
-<a name="l06375"></a>06375 24, 16, -36, 43, 43, 43, 43, 43, 43, 43, 43, 43, 113, 114, 43, 43, 43, -60, -44, -60, 49, 48, 1, 43, 53,
-<a name="l06376"></a>06376 89, -1, -1, 0, 1, 0, 0, 7, -112, 7, 44, 2, 38, 0, -112, 0, 0, 1, 7, 0, -115, 2, -109, 1, 106,
-<a name="l06377"></a>06377 0, 22, 64, 10, 2, 0, 20, 22, 1, 4, 65, 2, 1, 23, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1,
-<a name="l06378"></a>06378 -1, 0, 68, -1, -24, 6, -54, 5, -62, 2, 38, 0, -96, 0, 0, 1, 7, 0, -115, 2, 88, 0, 0, 0, 21,
-<a name="l06379"></a>06379 64, 10, 3, 1, 78, 37, 0, 72, 39, 3, 1, 78, -71, 2, 34, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0,
-<a name="l06380"></a>06380 83, -1, -59, 5, -19, 7, 44, 2, 38, 0, -111, 0, 0, 1, 7, 0, -115, 1, -53, 1, 106, 0, 21, 64, 9,
-<a name="l06381"></a>06381 3, 52, 25, 50, 72, 43, 3, 1, 52, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 0, -1, -1, 0, -127, -1,
-<a name="l06382"></a>06382 -79, 4, 100, 5, -62, 2, 38, 0, -95, 0, 0, 1, 7, 0, -115, 1, 54, 0, 0, 0, 21, 64, 10, 3, 1,
-<a name="l06383"></a>06383 44, 29, 30, 72, 39, 3, 1, 47, -71, 2, 34, 0, 41, 0, 43, 1, 43, 0, 0, 1, 0, -71, 3, 89, 1,
-<a name="l06384"></a>06384 -122, 4, 38, 0, 3, 0, 36, 64, 14, 2, 1, 3, 0, 60, 1, 5, -97, 3, 60, 0, 25, 4, -95, -71, 1,
-<a name="l06385"></a>06385 -112, 0, 24, 43, 78, 16, -12, 77, -3, -26, 0, 47, -3, 60, 16, 60, 49, 48, 19, 53, 51, 21, -71, -51, 3,
-<a name="l06386"></a>06386 89, -51, -51, -1, -1, 0, 25, 0, 0, 7, 118, 7, 44, 2, 38, 0, 58, 0, 0, 1, 7, 0, 67, 2, -118,
-<a name="l06387"></a>06387 1, 106, 0, 24, -71, 0, 1, -1, -90, -73, 27, 25, 8, 9, 65, 1, 1, 26, -71, 2, 33, 0, 41, 0, 43,
-<a name="l06388"></a>06388 1, 43, 53, -1, -1, 0, 6, 0, 0, 5, -73, 5, -62, 2, 38, 0, 90, 0, 0, 1, 7, 0, 67, 1, 104,
-<a name="l06389"></a>06389 0, 0, 0, 24, -71, 0, 1, -1, -90, -73, 21, 19, 7, 8, 65, 1, 1, 20, -71, 2, 34, 0, 41, 0, 43,
-<a name="l06390"></a>06390 1, 43, 53, -1, -1, 0, 25, 0, 0, 7, 118, 7, 44, 2, 38, 0, 58, 0, 0, 1, 7, 0, -115, 2, -118,
-<a name="l06391"></a>06391 1, 106, 0, 21, 64, 9, 1, 25, 8, 0, 72, 43, 1, 1, 25, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53,
-<a name="l06392"></a>06392 0, -1, -1, 0, 6, 0, 0, 5, -73, 5, -62, 2, 38, 0, 90, 0, 0, 1, 7, 0, -115, 1, 104, 0, 0,
-<a name="l06393"></a>06393 0, 21, 64, 9, 1, 19, 7, 0, 72, 43, 1, 1, 19, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 0, -1,
-<a name="l06394"></a>06394 -1, 0, 25, 0, 0, 7, 118, 6, -31, 2, 38, 0, 58, 0, 0, 1, 7, 0, -114, 2, 108, 1, 30, 0, 43,
-<a name="l06395"></a>06395 -75, 2, 1, 1, 2, 2, 25, -71, 2, 33, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 28, 29,
-<a name="l06396"></a>06396 8, 9, 65, 43, 27, -79, 28, 23, -72, -1, -30, -79, 72, 43, 43, 89, 53, 53, 0, -1, -1, 0, 6, 0, 0,
-<a name="l06397"></a>06397 5, -73, 5, -61, 2, 38, 0, 90, 0, 0, 1, 7, 0, -114, 1, -102, 0, 0, 0, 24, 64, 11, 2, 1, 22,
-<a name="l06398"></a>06398 7, 0, 72, 43, 1, 2, 2, 22, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 53, -1, -1, 0, 6, 0, 0,
-<a name="l06399"></a>06399 5, 70, 7, 44, 2, 38, 0, 60, 0, 0, 1, 7, 0, 67, 1, 77, 1, 106, 0, 21, 64, 10, 1, 1, 14,
-<a name="l06400"></a>06400 6, 26, 72, 39, 1, 1, 14, -71, 2, 33, 0, 41, 0, 43, 1, 43, 0, -1, -1, 0, 33, -2, 81, 3, -18,
-<a name="l06401"></a>06401 5, -62, 2, 38, 0, 92, 0, 0, 1, 7, 0, 67, 0, -73, 0, 0, 0, 28, 64, 15, 1, 28, 32, 13, 14,
-<a name="l06402"></a>06402 6, 85, 28, 15, 26, 72, 43, 1, 1, 28, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 53, 0, 1, 0, -118,
-<a name="l06403"></a>06403 3, -23, 1, 91, 5, -55, 0, 9, 0, 71, -74, 3, 1, 8, 0, 3, -85, 4, -72, 1, 80, 64, 24, 9, 1,
-<a name="l06404"></a>06404 0, 60, 9, 9, 8, 0, 4, 105, 3, -59, 0, 0, 9, -127, 7, 63, 8, 1, 8, 25, 10, -99, -71, 1, -112,
-<a name="l06405"></a>06405 0, 24, 43, 78, 16, -12, 93, 60, 77, -3, 60, 16, -12, -28, 0, 63, 60, 16, -3, 60, 16, -3, -19, 1, 17,
-<a name="l06406"></a>06406 18, 57, 0, -55, 49, 48, 1, 35, 22, 23, 7, 38, 38, 53, 53, 51, 1, 75, 94, 2, 108, 44, 93, 72, -63,
-<a name="l06407"></a>06407 4, -8, -100, 44, 71, 42, -114, -125, -91, 0, 0, 1, -1, -31, 4, -53, 2, -54, 5, 95, 0, 3, 0, 26, 64,
-<a name="l06408"></a>06408 12, 1, 53, 0, 2, 26, 5, 0, 25, 4, 67, 104, 24, 43, 78, 16, -28, 16, -26, 0, 47, 77, -19, 49, 48,
-<a name="l06409"></a>06409 3, 53, 33, 21, 31, 2, -23, 4, -53, -108, -108, 0, 0, 1, 0, 27, -1, -28, 4, 58, 5, -45, 0, 54, 1,
-<a name="l06410"></a>06410 47, 64, -59, 11, 36, 19, 4, 41, 24, 58, 18, 83, 46, 109, 44, 98, 46, -122, 40, 8, -37, 30, -33, 33, -38,
-<a name="l06411"></a>06411 50, -23, 33, -6, 33, 5, 25, 33, 1, 117, 9, -122, 9, 2, 52, 53, 53, 30, 30, 31, 43, 32, 51, 50, 50,
-<a name="l06412"></a>06412 33, 33, 95, 32, -33, 32, 2, -113, 32, 1, 15, 32, 31, 32, 47, 32, -97, 32, -81, 32, 5, 32, 32, 38, 2,
-<a name="l06413"></a>06413 3, 3, 25, 25, 26, 43, 27, 1, 0, 0, 28, 28, 0, 27, 1, 47, 27, 1, 27, 27, 22, 38, 42, 39, 95,
-<a name="l06414"></a>06414 41, 111, 41, 2, 41, -120, 64, 45, 1, 45, 41, 38, 1, 7, 30, 20, 106, 16, 13, 30, 14, -85, 11, 30, 16,
-<a name="l06415"></a>06415 11, 23, -97, 22, 11, 33, 30, 28, 3, 25, 35, 50, 53, 0, 3, 3, 48, 42, 94, 41, 105, 13, -27, 32, 14,
-<a name="l06416"></a>06416 48, 14, 2, 14, 26, 56, 51, 52, 52, 1, 1, 2, -121, 25, 94, 32, 3, 1, 3, 77, 48, 94, -65, 35, -49,
-<a name="l06417"></a>06417 35, -17, 35, 3, 35, 114, 23, 32, 31, 31, 27, 27, 26, -59, 22, -85, -81, 31, 1, 23, 25, 55, -87, -115, 24,
-<a name="l06418"></a>06418 43, 78, 16, -12, 93, 25, 77, -28, 24, -12, 60, 16, 60, 16, 60, 16, -12, 93, -3, -12, 93, -19, -12, 60, 16,
-<a name="l06419"></a>06419 60, 16, 60, 78, 16, -10, 93, 77, -28, -12, -19, 17, 18, 23, 57, 17, 18, 23, 57, 0, 63, -19, 63, -19, -3,
-<a name="l06420"></a>06420 -19, 16, -12, -19, 63, -19, 113, -3, 93, -28, 17, 18, 57, 47, 93, 113, 60, 16, 60, 16, 60, 16, -3, 60, 16,
-<a name="l06421"></a>06421 60, 16, 60, 17, 57, 47, 93, 113, 114, 60, 16, 60, 16, 60, 16, -3, 60, 16, 60, 16, 60, 49, 48, 0, 93,
-<a name="l06422"></a>06422 1, 114, 113, 93, 1, 33, 21, 33, 6, 7, 54, 51, 50, 23, 22, 51, 50, 55, 23, 6, 35, 34, 39, 38, 35,
-<a name="l06423"></a>06423 34, 7, 39, 54, 55, 35, 53, 51, 38, 39, 35, 53, 51, 38, 53, 52, 36, 51, 50, 22, 23, 7, 38, 38, 35,
-<a name="l06424"></a>06424 34, 6, 21, 20, 23, 33, 21, 33, 22, 1, -79, 1, 22, -2, -26, 33, -128, 77, 64, 87, 103, -86, 68, 69, 118,
-<a name="l06425"></a>06425 58, -110, 92, 74, -112, -105, 70, -91, -112, 69, -62, 32, -47, -47, 4, 37, -88, 126, 23, 1, 9, -63, -90, -9, 26,
-<a name="l06426"></a>06426 -77, 13, -108, 107, 117, -115, 28, 1, 88, -2, -54, 26, 2, 102, -108, -112, -125, 22, 25, 41, 56, -91, 63, 44, 46,
-<a name="l06427"></a>06427 93, -83, 112, -47, -108, 31, 117, -108, 90, 77, -62, -36, -65, -68, 27, 113, -111, -106, 92, 58, -123, -108, 105, 0, 0,
-<a name="l06428"></a>06428 2, 0, 90, -1, -34, 4, 124, 4, 72, 0, 18, 0, 25, 0, -92, 64, 80, -74, 4, 1, 69, 23, 90, 4, 82,
-<a name="l06429"></a>06429 14, 91, 16, 90, 21, 82, 23, 107, 4, 104, 7, 8, 32, 27, 58, 4, 75, 4, 73, 17, 74, 21, 5, 18, 0,
-<a name="l06430"></a>06430 76, 19, 47, 25, -49, 25, 2, 25, 25, 9, 15, 6, 105, 5, 1, -84, 3, -85, 9, 11, 20, 58, 24, -84, 22,
-<a name="l06431"></a>06431 -85, 15, 7, 5, -85, -113, 6, -97, 6, -81, 6, -65, 6, -49, 6, -33, 6, 6, 6, 6, 20, 19, -72, 2, -63,
-<a name="l06432"></a>06432 64, 21, 0, 18, 32, 18, 2, 16, 18, 32, 18, 48, 18, 3, 18, 49, 27, 1, 0, 24, 25, 25, 0, -72, 2,
-<a name="l06433"></a>06433 -63, -73, 31, 12, 63, 12, 2, 12, 49, 26, 16, -10, 93, -3, 60, 16, 60, 16, 60, 16, -10, 93, 93, -3, 60,
-<a name="l06434"></a>06434 57, 47, 93, -19, 0, 63, -3, -12, -28, 63, -3, -28, 47, -28, 17, 18, 57, 47, 93, 60, -3, 60, 49, 48, 1,
-<a name="l06435"></a>06435 93, 93, 0, 93, 1, 17, 22, 51, 50, 55, 23, 6, 6, 35, 34, 0, 53, 52, 0, 51, 50, 0, 19, 39, 17,
-<a name="l06436"></a>06436 38, 35, 34, 7, 17, 1, 65, 120, -78, -2, -115, 72, 120, -32, 123, -19, -2, -36, 1, 38, -21, -42, 1, 48, 11,
-<a name="l06437"></a>06437 -25, -128, -84, -81, 121, 2, 19, -2, -115, 121, -10, 43, -83, 103, 1, 64, -11, -9, 1, 62, -2, -28, -2, -25, 74,
-<a name="l06438"></a>06438 1, 41, 121, 122, -2, -40, 0, 0, 5, 0, 107, -1, -57, 6, -128, 5, -45, 0, 3, 0, 13, 0, 33, 0, 45,
-<a name="l06439"></a>06439 0, 56, 0, -28, 64, 14, 47, 58, 123, 17, 119, 21, -118, 17, -122, 21, 5, 2, 3, 3, -72, -1, -64, -77, 66,
-<a name="l06440"></a>06440 92, 52, 3, -72, -1, -64, 64, 17, 39, 59, 52, 3, 63, 0, 1, 20, 0, 0, 1, 24, 24, 37, 14, 14, 54,
-<a name="l06441"></a>06441 -72, 2, 97, 64, 11, 31, 37, 47, 37, 63, 37, 3, 37, 37, 29, 43, -70, 2, 97, 0, 19, 1, -64, 64, 9,
-<a name="l06442"></a>06442 29, 5, 7, -84, 8, -96, 11, 4, 13, -72, 1, 31, -76, 11, 12, -30, 2, 1, -69, 1, 125, 0, 3, 0, 48,
-<a name="l06443"></a>06443 2, 97, 64, 13, 29, -30, 0, 0, 3, 9, 34, 41, 16, 39, 46, 41, 32, -72, 1, 29, 64, 29, 26, 40, 41,
-<a name="l06444"></a>06444 22, 39, 51, 41, 26, 26, 58, 0, 3, 1, 2, 4, 58, 57, 11, 12, 5, 4, 12, 13, 41, 4, 8, 7, -53,
-<a name="l06445"></a>06445 4, -72, 1, 70, -77, 57, 87, 104, 24, 43, 16, -10, -10, 60, 16, -3, 60, 16, 60, 18, 57, 17, 18, 23, 57,
-<a name="l06446"></a>06446 78, 16, -10, 77, -19, -12, -19, 16, -3, -19, -12, -19, 0, 63, 60, 16, -10, -19, 16, -3, 60, -12, 60, -3, 60,
-<a name="l06447"></a>06447 16, -12, -3, 57, 16, -3, -19, 18, 57, 47, 93, -19, 25, 57, 47, 17, 57, 47, -121, 5, 46, 24, 43, 43, 43,
-<a name="l06448"></a>06448 125, 16, -60, 49, 48, 1, 93, 23, 1, 51, 1, 3, 17, 6, 7, 53, 54, 54, 55, 51, 17, 1, 38, 53, 52,
-<a name="l06449"></a>06449 54, 51, 50, 22, 21, 20, 7, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 20, 22, 51, 50, 54, 53, 52, 38,
-<a name="l06450"></a>06450 35, 34, 6, 3, 20, 51, 50, 54, 53, 52, 38, 35, 34, 6, -28, 4, 77, -99, -5, -77, 54, 102, 122, 55, -96,
-<a name="l06451"></a>06451 46, 108, 2, -19, -126, 125, -117, -117, -117, -116, -89, -88, -126, -118, -95, -79, 70, 51, 51, 73, 72, 54, 55, 64, 28,
-<a name="l06452"></a>06452 -107, 71, 80, 86, 68, 70, 76, 57, 6, 12, -7, -12, 3, 22, 2, 42, 81, 32, 123, 17, 109, 61, -3, 17, -2,
-<a name="l06453"></a>06453 -110, 47, 115, 80, 111, 107, 86, 115, 45, 41, -113, 106, 126, 127, 100, -108, -63, 50, 52, 52, 45, 46, 55, 58, -2,
-<a name="l06454"></a>06454 -111, 127, 69, 53, 58, 68, 69, 0, 5, 0, 34, -1, -57, 6, -127, 5, -45, 0, 3, 0, 34, 0, 54, 0, 66,
-<a name="l06455"></a>06455 0, 77, 1, 81, 64, 23, 31, 20, -33, 20, 2, 47, 79, 105, 38, 102, 42, 123, 38, 119, 42, -118, 38, -123, 42,
-<a name="l06456"></a>06456 7, 2, 3, 3, -72, -1, -64, -77, 66, 92, 52, 3, -72, -1, -64, 64, 21, 39, 59, 52, 3, 63, 0, 1, 20,
-<a name="l06457"></a>06457 0, 0, 1, 28, 28, 33, 24, 45, 45, 58, 35, 35, 75, -72, 2, 97, 64, 11, 31, 58, 47, 58, 63, 58, 3,
-<a name="l06458"></a>06458 58, 58, 50, 64, -67, 2, 97, 0, 40, 1, -64, 0, 50, 0, 14, 2, 97, 64, 14, 13, 13, 33, 24, 5, -59,
-<a name="l06459"></a>06459 32, 4, 48, 4, 2, 4, 100, 7, -67, 2, 97, 0, 33, 1, 31, 0, 24, 0, 20, 2, -86, 64, 23, 31, 21,
-<a name="l06460"></a>06460 47, 21, 63, 21, 3, 127, 21, 1, 95, 21, 111, 21, 2, 95, 21, 111, 21, 2, 21, -111, 18, -72, 2, 97, -77,
-<a name="l06461"></a>06461 24, -30, 2, 1, -69, 1, 125, 0, 3, 0, 69, 2, 97, 64, 17, 50, -30, 0, 0, 3, 9, 14, 13, -97, 16,
-<a name="l06462"></a>06462 55, 41, 37, 39, 67, 41, 53, -72, 1, 29, 64, 27, 47, 61, 41, 43, 39, 72, 41, 47, 26, 79, 0, 3, 1,
-<a name="l06463"></a>06463 2, 4, 79, 78, 16, 41, 26, 34, 10, 41, 48, 30, 1, 30, -72, 2, 40, 64, 23, 4, 14, 39, 13, 100, 5,
-<a name="l06464"></a>06464 20, 41, 16, 21, -48, 21, 2, 21, 34, 5, 41, 4, 25, 78, 124, 104, 24, 43, 78, 16, -12, 77, -19, -12, 114,
-<a name="l06465"></a>06465 -19, 16, -10, -28, 16, -3, 93, -19, -12, -19, 17, 18, 23, 57, 78, 16, -10, 77, -19, -12, -19, 16, -3, -19, -12,
-<a name="l06466"></a>06466 -19, 16, -28, 57, 0, 63, 60, 16, -10, -19, 16, -3, 60, -12, -3, -12, 114, 113, 113, 93, -28, 16, -3, -3, -12,
-<a name="l06467"></a>06467 93, -28, 17, 18, 57, 47, -19, 16, -3, -19, 18, 57, 47, 93, -19, 25, 57, 47, 17, 57, 47, 17, 18, 57, 47,
-<a name="l06468"></a>06468 -121, 5, 46, 24, 43, 43, 43, 125, 16, -60, 49, 48, 1, 93, 0, 114, 23, 1, 51, 1, 1, 55, 22, 51, 50,
-<a name="l06469"></a>06469 54, 53, 52, 35, 7, 55, 50, 53, 52, 35, 34, 7, 39, 54, 54, 51, 32, 21, 20, 7, 22, 21, 20, 6, 35,
-<a name="l06470"></a>06470 32, 1, 38, 53, 52, 54, 51, 50, 22, 21, 20, 7, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 20, 22, 51,
-<a name="l06471"></a>06471 50, 54, 53, 52, 38, 35, 34, 6, 3, 20, 51, 50, 54, 53, 52, 38, 35, 34, 6, -27, 4, 77, -100, -5, -76,
-<a name="l06472"></a>06472 -2, -96, -110, 31, 123, 67, 90, -100, 58, 22, -100, 121, 104, 36, -113, 41, -122, 100, 1, 30, -118, -83, -91, -118, -2,
-<a name="l06473"></a>06473 -11, 4, 125, -126, -119, 126, -116, -117, -115, -88, -86, -128, -121, -92, -79, 70, 51, 49, 74, 72, 54, 54, 64, 28, -107,
-<a name="l06474"></a>06474 72, 78, 85, 68, 70, 76, 57, 6, 12, -7, -12, 3, -38, 15, 112, 75, 57, 111, 3, 110, 102, 89, 102, 23, 111,
-<a name="l06475"></a>06475 79, -68, 120, 39, 43, -110, 101, -124, -2, -92, 47, 115, 90, 101, 107, 86, 112, 48, 41, -113, 109, 123, 123, 104, -108,
-<a name="l06476"></a>06476 -63, 50, 52, 51, 46, 46, 55, 58, -2, -111, 127, 70, 52, 58, 68, 69, 0, 0, 5, 0, 34, -1, -57, 6, -127,
-<a name="l06477"></a>06477 5, -45, 0, 3, 0, 31, 0, 51, 0, 63, 0, 74, 1, 119, 64, 44, 123, 35, 119, 39, -118, 35, -122, 39, -63,
-<a name="l06478"></a>06478 27, -41, 27, -27, 27, -11, 21, 8, 18, 25, 32, 25, 47, 76, 49, 25, 4, 5, 21, 5, 27, 2, 20, 21, 21,
-<a name="l06479"></a>06479 108, 16, 17, 20, 16, 16, 17, 2, 3, 3, -72, -1, -64, -77, 66, 92, 52, 3, -72, -1, -64, 64, 17, 39, 59,
-<a name="l06480"></a>06480 52, 3, 63, 0, 1, 20, 0, 0, 1, 42, 42, 55, 32, 32, 72, -72, 2, 97, 64, 11, 31, 55, 47, 55, 63,
-<a name="l06481"></a>06481 55, 3, 55, 55, 47, 61, -70, 2, 97, 0, 37, 1, -64, 64, 19, 47, 21, 21, 13, 17, 16, 39, 95, 15, 111,
-<a name="l06482"></a>06482 15, 127, 15, -113, 15, 4, 15, -85, 13, -72, 2, 97, 64, 28, 15, 23, 64, 23, 80, 23, 3, 23, 23, 29, 17,
-<a name="l06483"></a>06483 5, -59, -128, 4, 1, 32, 4, 48, 4, 64, 4, 80, 4, 4, 4, 100, 7, -70, 2, 97, 0, 29, 1, 31, -76,
-<a name="l06484"></a>06484 17, 19, 20, 18, 20, -72, 2, 97, -77, 17, 39, 2, 1, -69, 1, 125, 0, 3, 0, 66, 2, 97, 64, 13, 47,
-<a name="l06485"></a>06485 -30, 0, 0, 3, 9, 52, 41, 34, 39, 64, 41, 50, -72, 1, 29, 64, 34, 44, 58, 41, 40, 39, 69, 41, 44,
-<a name="l06486"></a>06486 26, 76, 0, 3, 1, 2, 4, 76, 75, 21, 15, 16, 19, 15, 18, 1, 18, 34, 10, 41, 0, 26, 48, 26, 2,
-<a name="l06487"></a>06487 26, -72, 2, 40, 64, 20, 4, 20, 20, 17, 17, 15, 15, 15, 16, 1, 16, 39, 5, 41, 4, 25, 75, 87, 104,
-<a name="l06488"></a>06488 24, 43, 78, 16, -12, 77, -19, -12, 93, 50, 47, 50, 47, 51, 47, 16, -3, 93, -19, -12, 93, 60, 17, 18, 57,
-<a name="l06489"></a>06489 17, 18, 23, 57, 78, 16, -10, 77, -19, -12, -19, 16, -3, -19, -12, -19, 0, 63, 60, 16, -10, -19, 16, -3, 60,
-<a name="l06490"></a>06490 -12, -19, 60, 16, 60, 16, -3, -3, -12, 93, 113, -28, 17, 18, 57, 47, 93, -3, -12, 93, -28, 17, 18, 57, 47,
-<a name="l06491"></a>06491 16, -3, -19, 18, 57, 47, 93, -19, 25, 57, 47, 17, 57, 47, -121, 5, 46, 24, 43, 43, 43, 125, 16, -60, -121,
-<a name="l06492"></a>06492 14, 46, 24, 43, 5, 125, 16, -60, 49, 48, 1, 113, 93, 93, 23, 1, 51, 1, 1, 55, 22, 51, 50, 54, 53,
-<a name="l06493"></a>06493 52, 38, 35, 34, 7, 39, 19, 33, 21, 33, 7, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 38, 53, 52,
-<a name="l06494"></a>06494 54, 51, 50, 22, 21, 20, 7, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 20, 22, 51, 50, 54, 53, 52, 38,
-<a name="l06495"></a>06495 35, 34, 6, 3, 20, 51, 50, 54, 53, 52, 38, 35, 34, 6, -27, 4, 77, -100, -5, -76, -2, -96, -112, 26, 121,
-<a name="l06496"></a>06496 76, 92, 83, 66, 70, 70, -115, 79, 1, -42, -2, -118, 34, 79, 89, 113, -98, -71, -126, 118, -101, 4, -109, -126, -119,
-<a name="l06497"></a>06497 126, -116, -117, -115, -88, -86, -128, -121, -92, -79, 70, 51, 49, 74, 72, 54, 54, 64, 28, -107, 72, 78, 85, 68, 70,
-<a name="l06498"></a>06498 76, 57, 6, 12, -7, -12, 3, -41, 18, 105, 83, 63, 58, 85, 64, 25, 1, 121, 121, -98, 53, -109, 108, 120, -106,
-<a name="l06499"></a>06499 113, -2, 51, 47, 115, 90, 101, 107, 86, 112, 48, 41, -113, 109, 123, 123, 104, -108, -63, 50, 52, 51, 46, 46, 55,
-<a name="l06500"></a>06500 58, -2, -111, 127, 70, 52, 58, 68, 69, 0, 5, 0, 74, -1, -57, 6, -128, 5, -45, 0, 3, 0, 12, 0, 32,
-<a name="l06501"></a>06501 0, 44, 0, 55, 0, -28, 64, 14, 47, 57, 125, 16, 119, 20, -117, 16, -122, 20, 5, 2, 3, 3, -72, -1, -64,
-<a name="l06502"></a>06502 -77, 66, 92, 52, 3, -72, -1, -64, 64, 17, 39, 59, 52, 3, 63, 0, 1, 20, 0, 0, 1, 23, 23, 36, 13,
-<a name="l06503"></a>06503 13, 53, -72, 2, 97, 64, 11, 31, 36, 47, 36, 63, 36, 3, 36, 36, 28, 42, -70, 2, 97, 0, 18, 1, -64,
-<a name="l06504"></a>06504 -78, 28, 12, 4, -72, 1, -71, -73, 6, 7, -84, 9, 8, 39, 2, 1, -69, 1, 125, 0, 3, 0, 47, 2, 97,
-<a name="l06505"></a>06505 64, 13, 28, -30, 0, 0, 3, 9, 33, 41, 15, 39, 45, 41, 31, -72, 1, 29, 64, 41, 25, 39, 41, 21, 39,
-<a name="l06506"></a>06506 50, 41, 25, 26, 57, 0, 3, 1, 2, 4, 57, 56, 6, 9, 4, 9, 32, 10, 1, 10, -121, 12, 41, 4, 8,
-<a name="l06507"></a>06507 7, -84, 47, 4, 1, 4, 60, 56, 124, 104, 24, 43, 16, -10, 93, -12, 60, 16, -3, -12, 93, 60, 17, 18, 57,
-<a name="l06508"></a>06508 17, 18, 23, 57, 78, 16, -10, 77, -19, -12, -19, 16, -3, -19, -12, -19, 0, 63, 60, 16, -10, -19, 16, -3, 60,
-<a name="l06509"></a>06509 -12, 60, -3, 60, -10, 60, 16, -3, -19, 18, 57, 47, 93, -19, 25, 57, 47, 17, 57, 47, -121, 5, 46, 24, 43,
-<a name="l06510"></a>06510 43, 43, 125, 16, -60, 49, 48, 1, 93, 23, 1, 51, 1, 3, 18, 19, 33, 53, 33, 21, 2, 3, 1, 38, 53,
-<a name="l06511"></a>06511 52, 54, 51, 50, 22, 21, 20, 7, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 20, 22, 51, 50, 54, 53, 52,
-<a name="l06512"></a>06512 38, 35, 34, 6, 3, 20, 51, 50, 54, 53, 52, 38, 35, 34, 6, -52, 4, 77, -99, -5, -77, -92, 24, -19, -2,
-<a name="l06513"></a>06513 -128, 2, 37, -12, 34, 3, 112, -126, 125, -117, -117, -117, -116, -89, -87, -127, -122, -91, -79, 70, 51, 49, 75, 72, 54,
-<a name="l06514"></a>06514 55, 64, 28, -107, 71, 80, 86, 68, 70, 76, 57, 6, 12, -7, -12, 3, 22, 1, 65, 1, 35, 121, 80, -2, -28,
-<a name="l06515"></a>06515 -2, -113, -2, -110, 47, 115, 80, 111, 107, 86, 115, 45, 41, -113, 109, 123, 123, 104, -108, -63, 49, 53, 51, 46, 46,
-<a name="l06516"></a>06516 55, 58, -2, -111, 127, 69, 53, 58, 68, 69, 0, 0, 1, 0, -30, -3, -39, 1, -64, -1, 111, 0, 9, 0, 58,
-<a name="l06517"></a>06517 64, 21, 6, 62, 7, 108, 9, 9, 0, -97, 2, 1, 3, 2, -127, 1, 1, 0, 6, -27, 7, -30, 0, -72, 2,
-<a name="l06518"></a>06518 96, -77, 10, 9, 3, -39, -71, 1, -112, 0, 24, 43, 17, 57, 16, -12, -12, -28, 16, 60, 16, -3, 60, 0, 47,
-<a name="l06519"></a>06519 60, -3, 60, 16, -10, -19, 49, 48, 19, 53, 51, 21, 20, 6, 7, 39, 54, 55, -17, -47, 74, 94, 54, 93, 16,
-<a name="l06520"></a>06520 -2, -64, -81, 117, 110, -115, 38, 84, 40, 107, 0, 0, 1, 0, 107, -2, 91, 2, 28, -1, -46, 0, 19, 0, 75,
-<a name="l06521"></a>06521 64, 10, 8, 77, 0, 13, 16, 13, 32, 13, 3, 13, -72, 2, 49, 64, 30, 2, 17, 58, 19, 77, 0, 127, 15,
-<a name="l06522"></a>06522 2, 31, 2, 47, 2, 3, 2, 56, 20, 5, 41, 15, -7, 19, 0, 106, 10, -30, 11, 25, 20, 87, -71, 1, -112,
-<a name="l06523"></a>06523 0, 24, 43, 78, 16, -12, 77, -28, -10, 60, -12, -19, 0, 16, -2, 93, -12, -3, -28, 16, -12, 93, -19, 49, 48,
-<a name="l06524"></a>06524 23, 54, 51, 50, 22, 21, 20, 6, 35, 34, 39, 55, 22, 51, 50, 53, 52, 35, 34, 7, -43, 35, 31, -119, 124,
-<a name="l06525"></a>06525 -115, -104, 63, 77, 11, 44, 43, -89, 127, 14, 18, 50, 4, 110, 72, 77, 116, 12, 117, 4, 76, 67, 2, 0, -1,
-<a name="l06526"></a>06526 -1, 0, -34, 4, -86, 2, 79, 5, -62, 2, 22, 0, -115, 0, 0, 0, 3, -1, -22, 4, -50, 2, -63, 5, -29,
-<a name="l06527"></a>06527 0, 3, 0, 7, 0, 11, 0, 90, 64, 56, 4, -96, 6, 9, -96, 11, 64, 6, 11, 0, 3, 1, -112, 3, 1,
-<a name="l06528"></a>06528 3, -121, -128, 0, 3, 5, -97, 7, 7, 0, 8, -97, 80, 10, 96, 10, 2, 10, 10, 0, 3, 117, -16, 2, 1,
-<a name="l06529"></a>06529 2, 64, 44, 47, 52, 2, -59, 1, -96, 95, 0, 1, 80, 0, 1, 0, 47, 114, 93, -19, -10, 43, 113, -19, 17,
-<a name="l06530"></a>06530 51, 47, 93, -19, 17, 51, 47, -19, 0, 63, 26, -3, 93, 113, 60, 60, 26, 16, -19, 16, -19, 49, 48, 1, 51,
-<a name="l06531"></a>06531 3, 35, 37, 51, 21, 35, 37, 51, 21, 35, 1, 91, -70, -56, 117, 1, 60, -83, -83, -3, -42, -83, -83, 5, -29,
-<a name="l06532"></a>06532 -2, -21, -64, -64, -64, -64, 0, 0, 3, -1, -1, 0, 0, 5, 91, 5, -70, 0, 7, 0, 14, 0, 18, 1, -85,
-<a name="l06533"></a>06533 -74, 1, 14, 15, 16, 2, 85, 2, -72, -1, -14, -76, 15, 16, 2, 85, 2, -72, -1, -4, -76, 16, 16, 6, 85,
-<a name="l06534"></a>06534 2, -72, -1, -10, -76, 13, 13, 6, 85, 2, -72, -1, -8, 64, 101, 12, 12, 6, 85, 9, 12, 12, 12, 6, 85,
-<a name="l06535"></a>06535 5, 12, 12, 12, 6, 85, 47, 20, 48, 20, 103, 8, 104, 9, 96, 20, -120, 3, -97, 15, -112, 20, -55, 5, -58,
-<a name="l06536"></a>06536 6, -64, 20, -16, 20, 12, 8, 5, 89, 1, 86, 2, 80, 20, 104, 11, -80, 20, -13, 12, -13, 13, -13, 14, 9,
-<a name="l06537"></a>06537 4, 12, 4, 13, 4, 14, 3, 15, 0, 18, 16, 18, 2, 18, -38, 16, 2, 11, 10, 9, 5, 4, 4, 12, 13,
-<a name="l06538"></a>06538 14, 8, 6, 7, 7, 12, 9, 5, 4, 8, 6, 12, 7, 2, 3, 3, -72, -1, -8, 64, 15, 12, 12, 2, 85,
-<a name="l06539"></a>06539 3, 32, 4, 12, 20, 4, 4, 12, 1, 0, 0, -72, -1, -8, 64, 21, 12, 12, 2, 85, 0, 32, 7, 12, 20,
-<a name="l06540"></a>06540 7, 7, 12, 9, 30, 5, 5, 8, 30, 6, 3, 6, -72, 2, 112, 64, 14, 0, 12, -23, 2, 1, 2, 16, 82,
-<a name="l06541"></a>06541 17, 82, 18, -23, 64, 15, -72, -1, -64, -77, 18, 21, 52, 15, -72, -1, -64, 64, 10, 11, 12, 52, -33, 15, 1,
-<a name="l06542"></a>06542 15, 84, 0, 2, -70, 1, 11, 0, 1, 1, 11, 64, 18, 12, 32, 0, 101, 7, 3, 82, 80, 4, -49, 4, -33,
-<a name="l06543"></a>06543 4, 3, -112, 4, 1, 4, -72, 1, 1, 64, 11, 80, 12, -64, 7, -33, 12, 3, -112, 12, 1, 12, -72, 1, 1,
-<a name="l06544"></a>06544 64, 13, 15, 7, -49, 7, 2, 127, 7, -128, 7, 2, 7, -109, 19, -70, 1, -101, 1, -114, 0, 24, 43, 16, -12,
-<a name="l06545"></a>06545 93, 113, 25, -12, 93, 113, -12, 93, 113, 24, -19, 16, -19, 26, 25, 16, -19, -19, 24, 16, -12, 114, 43, 43, 26,
-<a name="l06546"></a>06546 -3, -12, -19, 0, 63, 60, -19, 47, -28, 60, 16, -19, 60, 16, -19, -121, 5, 46, 43, 43, 125, 16, -60, -121, 46,
-<a name="l06547"></a>06547 24, 43, 43, 125, 16, -60, 1, 17, 18, 57, 57, 17, 57, 57, -121, 16, -60, -60, 14, -60, -60, -121, 5, 16, -60,
-<a name="l06548"></a>06548 -60, 14, -60, -60, 0, 24, 63, -3, 93, 60, 49, 48, 1, 75, -80, 11, 83, 75, -80, 30, 81, 90, 88, -76, 4,
-<a name="l06549"></a>06549 15, 3, 8, 7, -70, -1, -16, 0, 0, -1, -8, 56, 56, 56, 56, 89, 1, 114, 113, 93, 43, 43, 43, 43, 43,
-<a name="l06550"></a>06550 43, 43, 35, 1, 51, 1, 35, 3, 33, 3, 19, 33, 3, 38, 39, 6, 7, 37, 19, 51, 3, 1, 2, 51, -47,
-<a name="l06551"></a>06551 2, 88, -35, -85, -3, -101, -95, -39, 1, -15, -103, 73, 31, 28, 51, -3, -17, -123, -20, -36, 5, -70, -6, 70, 1,
-<a name="l06552"></a>06552 -68, -2, 68, 2, 90, 1, -106, -62, 110, -115, -117, -102, 1, 24, -2, -24, 0, 0, 2, -1, -89, 0, 0, 5, -41,
-<a name="l06553"></a>06553 5, -70, 0, 11, 0, 15, 0, -21, 64, 56, 12, 0, 15, 16, 15, 2, 15, -38, 13, 2, 6, 5, 30, 8, 8,
-<a name="l06554"></a>06554 7, 7, 0, 3, 4, 30, 2, 1, 2, 10, 9, 30, 11, 0, 8, 13, 82, 14, 82, -112, 15, 1, 15, -23, 15,
-<a name="l06555"></a>06555 12, 31, 12, 79, 12, -49, 12, -33, 12, 5, 12, 64, 14, 17, 52, 12, -72, -1, -64, 64, 13, 9, 11, 52, -97,
-<a name="l06556"></a>06556 12, 1, 12, 64, 46, 100, 52, 12, 7, -72, -1, -64, 64, 44, 16, 18, 52, 7, 84, 3, 74, 32, 10, 32, 13,
-<a name="l06557"></a>06557 2, 10, 26, 17, 4, 9, 32, 1, 0, 50, 16, 16, 2, 85, 0, 10, 15, 15, 2, 85, 0, 26, 13, 13, 2,
-<a name="l06558"></a>06558 85, 0, 38, 12, 12, 2, 85, 0, -72, -1, -15, 64, 23, 11, 11, 2, 85, 0, 8, 16, 16, 6, 85, 0, 15,
-<a name="l06559"></a>06559 15, 15, 6, 85, 0, 28, 13, 13, 6, 85, 0, -72, -1, -20, 64, 11, 12, 12, 6, 85, 0, 32, 11, 11, 6,
-<a name="l06560"></a>06560 85, 0, -70, 1, 22, 0, 16, 1, -119, -79, 91, 24, 43, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l06561"></a>06561 60, -3, 60, 78, 16, -10, 93, 77, -12, -28, 43, 47, 43, 114, 43, 43, 113, -3, 93, -12, -19, 0, 63, 60, -3,
-<a name="l06562"></a>06562 60, 63, 60, -3, 60, 18, 57, 47, 60, 16, -3, 60, 63, -3, 93, 60, 49, 48, 33, 17, 33, 21, 33, 17, 33,
-<a name="l06563"></a>06563 21, 33, 17, 33, 21, 1, 19, 51, 3, 1, -111, 4, 36, -4, -98, 3, 43, -4, -43, 3, -124, -7, -48, -123, -20,
-<a name="l06564"></a>06564 -36, 5, -70, -83, -2, 63, -84, -2, 13, -83, 4, -94, 1, 24, -2, -24, 0, 0, 2, -1, -88, 0, 0, 5, -26,
-<a name="l06565"></a>06565 5, -70, 0, 11, 0, 15, 1, 44, -71, 0, 17, -1, -64, 64, 46, 19, 21, 52, 12, 0, 15, 16, 15, 2, 15,
-<a name="l06566"></a>06566 -38, 13, 2, 4, 3, 30, 9, -96, 10, -48, 10, 2, 10, 10, 8, 5, 2, 2, 11, 8, 8, 13, 82, 14, 82,
-<a name="l06567"></a>06567 -112, 15, 1, 15, -23, 12, 64, 15, 17, 52, 12, -72, -1, -64, 64, 29, 9, 11, 52, 12, 32, 11, 11, 6, 85,
-<a name="l06568"></a>06568 79, 12, 95, 12, -96, 12, 3, 80, 12, 1, 16, 12, 1, 12, 5, 8, 32, 7, 7, 6, -72, -1, -35, 64, 29,
-<a name="l06569"></a>06569 16, 16, 2, 85, 6, 12, 15, 15, 2, 85, 6, 30, 13, 13, 2, 85, 6, 10, 12, 12, 2, 85, 6, 18, 16,
-<a name="l06570"></a>06570 16, 6, 85, 6, -72, -1, -2, 64, 52, 15, 15, 6, 85, 6, 17, 13, 13, 6, 85, 6, 10, 12, 12, 6, 85,
-<a name="l06571"></a>06571 96, 6, -113, 6, 2, 6, 26, 80, 17, -128, 17, 2, 17, 2, 11, 32, 1, 0, 8, 16, 16, 2, 85, 0, 28,
-<a name="l06572"></a>06572 15, 15, 2, 85, 0, 46, 13, 13, 2, 85, 0, -72, -1, -6, 64, 23, 12, 12, 2, 85, 0, 48, 16, 16, 6,
-<a name="l06573"></a>06573 85, 0, 25, 15, 15, 6, 85, 0, 38, 13, 13, 6, 85, 0, -72, -1, -6, 64, 20, 12, 12, 6, 85, 0, 64,
-<a name="l06574"></a>06574 11, 11, 6, 85, 79, 0, 95, 0, -65, 0, 3, 0, -35, 16, -72, 1, -119, -79, 89, 24, 43, 16, -10, 93, 43,
-<a name="l06575"></a>06575 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, 16, 93, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 60, 16,
-<a name="l06576"></a>06576 -3, 60, 47, 114, 113, 93, 43, 43, 43, -3, 93, -12, -19, 0, 63, 60, 63, 60, 18, 57, 47, 93, 60, -3, 60,
-<a name="l06577"></a>06577 63, -3, 93, 60, 49, 48, 1, 43, 33, 17, 51, 17, 33, 17, 51, 17, 35, 17, 33, 17, 1, 19, 51, 3, 1,
-<a name="l06578"></a>06578 104, -62, 2, -6, -62, -62, -3, 6, -3, 126, -123, -20, -36, 5, -70, -3, -90, 2, 90, -6, 70, 2, -77, -3, 77,
-<a name="l06579"></a>06579 4, -94, 1, 24, -2, -24, 0, 2, -1, -88, 0, 0, 2, 42, 5, -70, 0, 3, 0, 7, 0, -58, 64, 50, 15,
-<a name="l06580"></a>06580 9, 47, 9, 48, 9, -128, 9, 4, 0, 7, 16, 7, 2, 7, -38, 6, 5, 2, 1, 2, 0, 8, 5, 82, 6,
-<a name="l06581"></a>06581 82, -112, 7, 1, 7, -23, 4, 22, 12, 13, 2, 85, 4, 24, 11, 11, 6, 85, 4, 64, 15, 17, 52, 4, -72,
-<a name="l06582"></a>06582 -1, -64, 64, 95, 9, 11, 52, 79, 4, 95, 4, -96, 4, -80, 4, 4, 16, 4, 1, 4, 2, 3, 32, 1, 0,
-<a name="l06583"></a>06583 10, 16, 16, 2, 85, 0, 28, 15, 15, 2, 85, 0, 46, 13, 13, 2, 85, 0, 56, 12, 12, 2, 85, 0, 10,
-<a name="l06584"></a>06584 11, 11, 2, 85, 0, 4, 16, 16, 6, 85, 0, 12, 15, 15, 6, 85, 0, 42, 13, 13, 6, 85, 0, 18, 12,
-<a name="l06585"></a>06585 12, 6, 85, 0, 24, 11, 11, 6, 85, 95, 0, 111, 0, 127, 0, 3, 79, 0, 95, 0, 2, 0, -35, 8, -72,
-<a name="l06586"></a>06586 1, -119, -79, 89, 24, 43, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, 47, 114,
-<a name="l06587"></a>06587 93, 43, 43, 43, 43, -3, 93, -12, -19, 0, 63, 63, 63, 60, -19, 93, 49, 48, 1, 93, 33, 17, 51, 17, 1,
-<a name="l06588"></a>06588 19, 51, 3, 1, 104, -62, -3, 126, -123, -20, -36, 5, -70, -6, 70, 4, -94, 1, 24, -2, -24, 0, 3, -1, -89,
-<a name="l06589"></a>06589 -1, -25, 5, -46, 5, -44, 0, 12, 0, 24, 0, 28, 1, 14, 64, 86, 5, 15, 10, 17, 10, 21, 5, 23, 19,
-<a name="l06590"></a>06590 15, 29, 17, 29, 21, 19, 23, 71, 14, 73, 18, 73, 20, 71, 24, 88, 5, 88, 7, 86, 11, 84, 15, 90, 17,
-<a name="l06591"></a>06591 91, 18, 93, 21, 83, 23, -119, 18, -102, 2, -107, 4, 23, 0, 28, 16, 28, 2, 28, -38, 27, 26, 2, 22, 30,
-<a name="l06592"></a>06592 3, 3, 16, 30, 9, 9, 26, 82, 27, 82, -112, 28, 1, 28, -23, 25, 32, 11, 11, 6, 85, 25, 64, 15, 17,
-<a name="l06593"></a>06593 52, 25, -72, -1, -64, 64, 15, 9, 11, 52, -96, 25, -80, 25, 2, -128, 25, 1, 25, 19, 38, 6, -72, -1, -22,
-<a name="l06594"></a>06594 64, 11, 16, 16, 2, 85, 6, 8, 15, 15, 2, 85, 6, -72, -1, -18, -76, 13, 13, 2, 85, 6, -72, -1, -16,
-<a name="l06595"></a>06595 64, 11, 12, 12, 2, 85, 6, 16, 11, 11, 2, 85, 6, -72, -1, -11, -76, 13, 13, 6, 85, 6, -72, -1, -8,
-<a name="l06596"></a>06596 64, 55, 12, 12, 6, 85, 6, 26, 30, 13, 38, 0, 10, 15, 16, 2, 85, 0, 16, 11, 14, 2, 85, 0, 10,
-<a name="l06597"></a>06597 9, 10, 2, 85, 0, 11, 13, 13, 6, 85, 0, 18, 12, 12, 6, 85, 0, 73, 11, 11, 6, 85, 15, 0, 31,
-<a name="l06598"></a>06598 0, 47, 0, 3, 0, 46, 29, -72, 1, -119, -79, 92, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, 43, -19, 78,
-<a name="l06599"></a>06599 16, -10, 43, 43, 43, 43, 43, 43, 43, 77, -19, 47, 113, 93, 43, 43, 43, -3, 93, -12, -19, 0, 63, -19, 63,
-<a name="l06600"></a>06600 -19, 63, 60, -19, 93, 49, 48, 1, 93, 19, 16, 0, 33, 32, 0, 17, 16, 0, 33, 34, 36, 2, 55, 20, 0,
-<a name="l06601"></a>06601 51, 50, 0, 17, 16, 0, 35, 34, 0, 37, 19, 51, 3, 88, 1, -118, 1, 52, 1, 53, 1, -121, -2, 118, -2,
-<a name="l06602"></a>06602 -51, -35, -2, -77, -109, -56, 1, 16, -28, -32, 1, 22, -2, -24, -37, -41, -2, -32, -2, -121, -123, -20, -36, 2, -54,
-<a name="l06603"></a>06603 1, 110, 1, -100, -2, 93, -2, -86, -2, -84, -2, 96, -35, 1, 91, -88, -5, -2, -63, 1, 59, 1, 20, 1, 24,
-<a name="l06604"></a>06604 1, 57, -2, -38, -101, 1, 24, -2, -24, 0, 2, -1, -89, 0, 0, 6, -68, 5, -70, 0, 12, 0, 16, 1, -51,
-<a name="l06605"></a>06605 -74, 8, 9, 58, 3, 4, 59, 9, -72, -1, -25, -77, 18, 23, 52, 8, -72, -1, -25, 64, 14, 18, 23, 52, 4,
-<a name="l06606"></a>06606 25, 18, 23, 52, 3, 25, 18, 23, 52, 9, -72, -1, -40, -77, 24, 33, 52, 8, -72, -1, -40, 64, 42, 24, 33,
-<a name="l06607"></a>06607 52, 4, 40, 24, 33, 52, 18, 38, 4, 41, 8, 42, 10, 47, 18, 4, 104, 1, 104, 6, 104, 11, -34, 6, 4,
-<a name="l06608"></a>06608 5, 4, 3, 3, 6, 8, 7, 9, 9, 6, 6, 3, 6, 9, 3, -72, -1, -10, 64, 42, 12, 16, 2, 85, 3,
-<a name="l06609"></a>06609 32, 2, 1, 20, 2, 2, 1, 6, 9, 6, 3, 9, 10, 12, 16, 2, 85, 9, 32, 10, 11, 20, 10, 10, 11,
-<a name="l06610"></a>06610 0, 16, 16, 16, 2, 16, -38, 15, 14, 2, 1, 11, -72, -1, -32, 64, 11, 13, 13, 6, 85, 11, 32, 11, 11,
-<a name="l06611"></a>06611 6, 85, 11, -72, 2, 25, 64, 42, 10, 10, 9, 9, 3, 3, 2, 2, 0, 8, 11, 6, 1, 3, 2, 0, 14,
-<a name="l06612"></a>06612 82, 15, 82, -112, 16, 1, 16, -23, 13, 25, 12, 12, 2, 85, 96, 13, 112, 13, 2, 13, 64, 15, 17, 52, 13,
-<a name="l06613"></a>06613 -72, -1, -64, 64, 14, 9, 11, 52, 79, 13, 95, 13, -80, 13, -64, 13, 4, 13, 18, -72, 2, 24, 64, 9, 12,
-<a name="l06614"></a>06614 9, 82, 64, 10, -128, 10, 2, 10, -72, 1, -75, 64, 13, 11, 11, 12, 32, 0, 3, 82, 79, 2, -113, 2, 2,
-<a name="l06615"></a>06615 2, -72, 1, -75, 64, 39, 1, 1, 0, 36, 16, 16, 2, 85, 0, 12, 15, 15, 2, 85, 0, 28, 12, 12, 2,
-<a name="l06616"></a>06616 85, 0, 34, 16, 16, 6, 85, 0, 32, 15, 15, 6, 85, 0, 12, 12, 12, 6, 85, 0, -72, 2, 71, -78, 17,
-<a name="l06617"></a>06617 6, 12, -72, 1, -119, -79, -88, 24, 43, 17, 57, 16, -10, 43, 43, 43, 43, 43, 43, 60, 16, -12, 93, -19, 16,
-<a name="l06618"></a>06618 -3, 60, 16, -12, 93, -19, 16, -26, 47, 93, 43, 43, 113, 43, -3, 93, -12, -19, 0, 17, 18, 23, 57, 63, 63,
-<a name="l06619"></a>06619 60, 16, 60, 16, 60, 16, -12, 43, 43, 60, 63, 60, -19, 93, -121, 5, 46, 43, 43, 8, 125, 16, -60, -121, 5,
-<a name="l06620"></a>06620 46, 24, 43, 43, 8, 125, 16, -60, -121, 14, 16, -60, -60, -121, 14, 16, -60, -60, 75, -80, 23, 83, 75, -80, 28,
-<a name="l06621"></a>06621 81, 90, 88, -76, 8, 12, 9, 12, 4, -70, -1, -12, 0, 3, -1, -12, 1, 56, 56, 56, 56, 89, 49, 48, 0,
-<a name="l06622"></a>06622 93, 1, 93, 67, 92, 88, 64, 9, 9, 34, 25, 57, 8, 34, 25, 57, 4, -72, -1, -34, -79, 25, 57, 43, 43,
-<a name="l06623"></a>06623 43, 89, 43, 43, 43, 43, 43, 43, 43, 43, 43, 33, 17, 1, 51, 1, 22, 23, 54, 55, 1, 51, 1, 17, 1,
-<a name="l06624"></a>06624 19, 51, 3, 3, -79, -3, -53, -20, 1, 33, 85, 64, 66, 94, 1, 28, -30, -3, -73, -5, 52, -123, -20, -36, 2,
-<a name="l06625"></a>06625 109, 3, 77, -2, 70, -125, 117, 115, -112, 1, -81, -4, -77, -3, -109, 4, -94, 1, 24, -2, -24, 0, 0, 2, -1,
-<a name="l06626"></a>06626 -89, 0, 0, 5, -91, 5, -45, 0, 29, 0, 33, 1, -76, 64, 69, -97, 17, -97, 27, 2, 88, 1, 87, 13, 122,
-<a name="l06627"></a>06627 18, 117, 26, -122, 24, -81, 35, 6, 92, 5, 80, 9, 111, 5, 100, 9, 118, 9, 5, 37, 9, 75, 18, 75, 20,
-<a name="l06628"></a>06628 70, 24, 69, 26, 5, 11, 5, 4, 9, 29, 5, 20, 9, 42, 5, 5, 12, 21, 2, 23, 59, 26, 3, 0, 33,
-<a name="l06629"></a>06629 16, 33, 2, 33, -38, 32, 31, 2, 22, -72, 2, 72, 64, 35, 7, 3, 14, 13, 0, 1, 45, 27, 27, 17, 45,
-<a name="l06630"></a>06630 13, 30, 15, 16, 29, 28, 28, 16, 8, 31, 82, 32, 82, -112, 33, 1, 33, -23, 30, 64, 15, 17, 52, 30, -72,
-<a name="l06631"></a>06631 -1, -64, 64, 16, 9, 11, 52, 79, 30, 95, 30, -96, 30, -80, 30, -64, 30, 5, 30, 13, -72, 2, 58, -77, 16,
-<a name="l06632"></a>06632 16, 17, 1, -69, 2, 58, 0, 27, 0, 28, -1, -10, 64, 17, 11, 11, 2, 85, 28, 17, 10, 11, 11, 2, 85,
-<a name="l06633"></a>06633 47, 17, 79, 17, 2, 17, -72, 2, 120, 64, 13, 14, 19, 38, 11, 74, 15, 14, 12, 16, 16, 2, 85, 14, -72,
-<a name="l06634"></a>06634 -1, -10, 64, 11, 15, 15, 2, 85, 14, 6, 13, 13, 2, 85, 14, -72, -1, -4, -76, 12, 12, 2, 85, 14, -72,
-<a name="l06635"></a>06635 -1, -24, 64, 11, 11, 11, 2, 85, 14, 16, 16, 16, 6, 85, 14, -72, -1, -6, -76, 12, 13, 6, 85, 14, -72,
-<a name="l06636"></a>06636 -1, -9, 64, 18, 11, 11, 6, 85, 16, 19, -81, 14, 2, 14, 106, 35, 32, 28, 64, 28, 2, 28, -72, 2, 120,
-<a name="l06637"></a>06637 -75, 29, 25, 38, 3, 74, 29, -72, -1, -32, -76, 16, 16, 2, 85, 29, -72, -1, -22, -76, 15, 15, 2, 85, 29,
-<a name="l06638"></a>06638 -72, -1, -18, -76, 13, 13, 2, 85, 29, -72, -1, -10, -76, 12, 12, 2, 85, 29, -72, -1, -32, -76, 16, 16, 6,
-<a name="l06639"></a>06639 85, 29, -72, -1, -20, -76, 15, 15, 6, 85, 29, -72, -1, -14, -76, 13, 13, 6, 85, 29, -72, -1, -8, 64, 10,
-<a name="l06640"></a>06640 12, 12, 6, 85, 32, 29, 1, 29, -84, 34, -70, 1, -119, 1, -114, 0, 24, 43, 16, -10, 93, 43, 43, 43, 43,
-<a name="l06641"></a>06641 43, 43, 43, 43, -12, -19, 16, -19, 93, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 60, -12, -19, 16, -19,
-<a name="l06642"></a>06642 93, 43, 16, 43, 60, -19, 16, 60, 16, -19, 47, 93, 43, 43, -3, 93, -12, -19, 0, 63, 60, 16, 60, 16, 60,
-<a name="l06643"></a>06643 -3, -12, 60, 16, -12, 60, 16, 60, 63, -19, 63, 60, -19, 93, 49, 48, 1, 113, 93, 93, 93, 93, 0, 93, 55,
-<a name="l06644"></a>06644 33, 36, 17, 52, 18, 36, 51, 50, 4, 18, 21, 16, 5, 33, 21, 33, 53, 36, 17, 52, 2, 35, 34, 2, 21,
-<a name="l06645"></a>06645 16, 5, 21, 33, 3, 19, 51, 3, 107, 1, 64, -2, -48, -96, 1, 36, -51, -53, 1, 15, -81, -2, -48, 1, 64,
-<a name="l06646"></a>06646 -3, -58, 1, 100, -5, -55, -49, -8, 1, 98, -3, -59, -60, -123, -20, -36, -83, -2, 1, 110, -57, 1, 60, -73, -88,
-<a name="l06647"></a>06647 -2, -58, -40, -2, -110, -2, -83, -94, -90, 1, -77, -11, 1, 61, -2, -63, -23, -2, 71, -86, -94, 4, -94, 1, 24,
-<a name="l06648"></a>06648 -2, -24, 0, 0, 4, -1, 120, 0, 0, 2, 79, 5, -29, 0, 3, 0, 7, 0, 11, 0, 15, 0, -77, 64, 26,
-<a name="l06649"></a>06649 9, -93, 10, 13, -93, 15, 64, 10, 15, 15, 4, 1, -97, 4, 1, 4, 66, -128, 7, -55, 2, 1, 6, 0, 10,
-<a name="l06650"></a>06650 9, -72, 2, 48, -77, 11, 11, 4, 12, -72, 2, 48, 64, 12, 80, 14, 96, 14, 2, 14, 14, 4, 31, 7, 1,
-<a name="l06651"></a>06651 7, -72, 1, 12, 64, 20, -16, 6, 1, 6, 64, 44, 47, 52, 6, 73, 5, 64, 4, 17, 78, 2, 3, 37, 1,
-<a name="l06652"></a>06652 0, -72, -1, -4, 64, 17, 14, 14, 2, 85, 0, 4, 11, 12, 2, 85, 0, 12, 16, 16, 6, 85, 0, -72, -1,
-<a name="l06653"></a>06653 -2, -76, 13, 13, 6, 85, 0, -72, -1, -4, 64, 13, 12, 12, 6, 85, 16, 0, 32, 0, 2, 0, 69, 16, 71,
-<a name="l06654"></a>06654 -71, 1, 10, 0, 24, 43, 16, -10, 93, 43, 43, 43, 43, 43, 60, -3, 60, -28, 47, -19, -10, 43, 113, -19, 113,
-<a name="l06655"></a>06655 17, 51, 47, 93, -19, 17, 51, 47, -19, 0, 63, 63, 60, -2, 26, -19, 93, 113, 60, 60, 26, 16, -19, 16, -19,
-<a name="l06656"></a>06656 49, 48, 51, 17, 51, 17, 3, 51, 3, 35, 37, 51, 21, 35, 37, 51, 21, 35, -119, -76, 84, -70, -56, 117, 1,
-<a name="l06657"></a>06657 60, -83, -83, -3, -42, -83, -83, 4, 38, -5, -38, 5, -29, -2, -21, -64, -64, -64, -64, 0, -1, -1, -1, -3, 0,
-<a name="l06658"></a>06658 0, 5, 89, 5, -70, 2, 6, 0, 36, 0, 0, -1, -1, 0, -106, 0, 0, 4, -23, 5, -70, 2, 6, 0, 37,
-<a name="l06659"></a>06659 0, 0, 0, 2, -1, -2, 0, 0, 5, 90, 5, -70, 0, 3, 0, 10, 0, -31, 64, 60, -124, 8, 1, -97, 8,
-<a name="l06660"></a>06660 1, 7, 2, 23, 2, 47, 12, 48, 12, 120, 6, -119, 1, -122, 2, -105, 4, -104, 5, -73, 4, -72, 5, -57, 4,
-<a name="l06661"></a>06661 -56, 5, -25, 3, -9, 3, 15, 6, 4, 8, 5, 39, 4, 40, 5, 55, 4, 56, 5, 6, -108, 8, 1, 1, 14,
-<a name="l06662"></a>06662 15, 16, 2, 85, 2, -72, -1, -14, -76, 15, 16, 2, 85, 2, -72, -1, -10, 64, 60, 12, 12, 2, 85, 6, 8,
-<a name="l06663"></a>06663 8, 5, 10, 4, 4, 8, 2, 3, 1, 0, 8, 5, 8, 4, 5, 32, 3, 2, 20, 3, 3, 2, 8, 4, 8,
-<a name="l06664"></a>06664 5, 4, 32, 0, 1, 20, 0, 0, 1, 5, 4, 30, 0, 8, 1, 2, 2, 1, 2, 3, 8, 0, 8, 4, 1,
-<a name="l06665"></a>06665 0, 5, 2, 3, -70, 2, 20, 0, 0, 2, 20, 64, 13, 8, 6, 12, 12, 6, 85, -49, 8, 1, 8, 8, 12,
-<a name="l06666"></a>06666 11, 25, 17, 18, 57, 47, 93, 43, 24, -19, -19, 57, 57, 18, 57, 57, 0, 63, 63, 63, 63, 17, 57, 16, -3,
-<a name="l06667"></a>06667 60, -121, 5, 46, 43, 8, 125, 16, -60, -121, 5, 46, 24, 43, 8, 125, 16, -60, 1, 17, 57, 17, 57, -121, 14,
-<a name="l06668"></a>06668 16, -60, -121, 14, 16, -60, 49, 48, 1, 43, 43, 43, 114, 113, 93, 0, 114, 93, 35, 1, 51, 1, 37, 33, 1,
-<a name="l06669"></a>06669 38, 39, 6, 7, 2, 2, 51, -47, 2, 88, -5, -79, 3, 47, -2, -61, 71, 33, 27, 52, 5, -70, -6, 70, -83,
-<a name="l06670"></a>06670 3, 67, -68, 116, -120, -112, 0, -1, -1, 0, -94, 0, 0, 4, -24, 5, -70, 2, 6, 0, 40, 0, 0, -1, -1,
-<a name="l06671"></a>06671 0, 41, 0, 0, 4, -80, 5, -70, 2, 6, 0, 61, 0, 0, -1, -1, 0, -92, 0, 0, 5, 34, 5, -70, 2,
-<a name="l06672"></a>06672 6, 0, 43, 0, 0, -1, -1, 0, -65, 0, 0, 1, -127, 5, -70, 2, 6, 0, 44, 0, 0, -1, -1, 0, -106,
-<a name="l06673"></a>06673 0, 0, 5, 82, 5, -70, 2, 6, 0, 46, 0, 0, 0, 1, 0, 11, 0, 0, 5, 72, 5, -70, 0, 10, 0,
-<a name="l06674"></a>06674 -25, 64, 26, 95, 5, 1, 0, 12, 47, 12, 48, 12, 111, 12, 4, 87, 3, 92, 4, 86, 5, 3, 10, 8, 15,
-<a name="l06675"></a>06675 16, 2, 85, 0, -72, -1, -8, 64, 17, 15, 16, 2, 85, 3, 5, 5, 2, 7, 8, 8, 5, 0, 1, 10, 9,
-<a name="l06676"></a>06676 5, -72, -1, -18, 64, 9, 12, 12, 2, 85, 5, 2, 5, 8, 2, -72, -1, -20, 64, 13, 12, 12, 6, 85, 2,
-<a name="l06677"></a>06677 32, 1, 0, 20, 1, 1, 0, 5, -72, -1, -18, 64, 40, 12, 12, 2, 85, 5, 8, 5, 2, 8, 12, 12, 13,
-<a name="l06678"></a>06678 6, 85, 8, 32, 9, 10, 20, 9, 9, 10, 5, 0, 1, 9, 8, 8, 2, 1, 8, 10, 0, 2, 8, 10, 9,
-<a name="l06679"></a>06679 0, 2, 1, -70, 1, 95, 0, 9, -1, -8, -76, 13, 13, 2, 85, 9, -70, 1, 95, 0, 5, -1, -12, 64, 13,
-<a name="l06680"></a>06680 11, 11, 6, 85, 0, 5, 48, 5, 2, 5, 5, 12, 11, 25, 17, 18, 57, 47, 93, 43, 24, -19, 43, -19, 57,
-<a name="l06681"></a>06681 57, 18, 57, 57, 0, 63, 60, 63, 60, 63, 60, 17, 18, 57, -121, 5, 46, 43, 43, 8, 125, 16, -60, 43, -121,
-<a name="l06682"></a>06682 5, 46, 24, 43, 43, 8, 125, 16, -60, 43, 1, 17, 57, 17, 57, -121, 14, 16, -60, -121, 14, 16, -60, 49, 48,
-<a name="l06683"></a>06683 1, 43, 43, 114, 93, 0, 114, 1, 1, 35, 1, 38, 39, 6, 7, 1, 35, 1, 3, 16, 2, 56, -45, -2, -125,
-<a name="l06684"></a>06684 50, 27, 33, 45, -2, 116, -58, 2, 61, 5, -70, -6, 70, 4, 40, -116, 101, 121, 120, -5, -40, 5, -70, -1, -1,
-<a name="l06685"></a>06685 0, -104, 0, 0, 6, 15, 5, -70, 2, 6, 0, 48, 0, 0, -1, -1, 0, -100, 0, 0, 5, 31, 5, -70, 2,
-<a name="l06686"></a>06686 6, 0, 49, 0, 0, 0, 3, 0, 109, 0, 0, 4, -58, 5, -70, 0, 3, 0, 7, 0, 11, 0, 62, 64, 39,
-<a name="l06687"></a>06687 5, 30, 31, 7, 1, 79, 7, 95, 7, 127, 7, -113, 7, 4, 7, 7, 0, 9, 30, 11, 8, 2, 30, 0, 2,
-<a name="l06688"></a>06688 6, -100, 1, 98, 10, 86, 13, 7, -100, 0, 98, 11, 86, 12, 16, -10, -28, -28, 16, -10, -28, -28, 0, 63, -19,
-<a name="l06689"></a>06689 63, -19, 18, 57, 47, 93, 113, -19, 49, 48, 19, 33, 21, 33, 19, 33, 21, 33, 3, 33, 21, 33, -120, 4, 35,
-<a name="l06690"></a>06690 -5, -35, 94, 3, 103, -4, -103, 121, 4, 89, -5, -89, 5, -70, -83, -2, 38, -84, -2, 38, -83, -1, -1, 0, 99,
-<a name="l06691"></a>06691 -1, -25, 5, -35, 5, -44, 2, 6, 0, 50, 0, 0, 0, 1, 0, -92, 0, 0, 5, 34, 5, -70, 0, 7, 0,
-<a name="l06692"></a>06692 -84, -71, 0, 9, -1, -64, 64, 14, 19, 21, 52, 3, 8, 0, 8, 5, 30, 1, 2, 5, 32, 3, -72, -1, -18,
-<a name="l06693"></a>06693 -76, 15, 15, 2, 85, 3, -72, -1, -14, 64, 25, 13, 13, 2, 85, 3, 16, 12, 12, 2, 85, 3, 93, -128, 9,
-<a name="l06694"></a>06694 1, 9, 6, 32, 0, 32, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13,
-<a name="l06695"></a>06695 13, 2, 85, 0, -72, -1, -6, -76, 12, 12, 2, 85, 0, -72, -1, -11, 64, 14, 12, 13, 6, 85, 0, 8, 11,
-<a name="l06696"></a>06696 11, 6, 85, 32, 0, 1, 0, -72, -1, -64, -74, 19, 21, 52, 0, 93, 8, 9, -72, -1, -32, 64, 19, 11, 11,
-<a name="l06697"></a>06697 6, 85, 32, 9, 1, 32, 9, 80, 9, 96, 9, 112, 9, 4, 59, 89, 24, 43, 93, 113, 43, 16, -10, 43, 93,
-<a name="l06698"></a>06698 43, 43, 43, 43, 43, 43, -19, 16, 93, -10, 43, 43, 43, -19, 0, 63, -19, 63, 63, 49, 48, 1, 43, 51, 17,
-<a name="l06699"></a>06699 33, 17, 35, 17, 33, 17, -92, 4, 126, -62, -3, 6, 5, -70, -6, 70, 5, 13, -6, -13, -1, -1, 0, -98, 0,
-<a name="l06700"></a>06700 0, 4, -3, 5, -70, 2, 6, 0, 51, 0, 0, 0, 1, 0, -108, 0, 0, 4, -94, 5, -70, 0, 11, 0, -39,
-<a name="l06701"></a>06701 64, 60, -11, 9, 1, 54, 3, 54, 9, 2, 21, 4, -107, 4, -91, 4, -42, 2, 4, 7, 2, 11, 9, 22, 2,
-<a name="l06702"></a>06702 26, 9, 38, 2, 45, 9, 55, 2, 58, 3, 63, 9, 73, 3, 10, 105, 3, 106, 9, 120, 3, 120, 9, -72, 3,
-<a name="l06703"></a>06703 -71, 9, -10, 2, -7, 9, 8, 3, 4, 3, 2, 4, -72, -1, -16, -76, 15, 16, 2, 85, 4, -72, -1, -16, 64,
-<a name="l06704"></a>06704 17, 12, 12, 2, 85, 4, 30, 8, 9, 20, 8, 8, 9, 3, 2, 3, 4, 2, -72, -1, -10, 64, 54, 15, 16,
-<a name="l06705"></a>06705 2, 85, 2, 18, 12, 12, 6, 85, 2, 30, 10, 9, 20, 10, 10, 9, 10, 8, 9, 3, 4, 4, 2, 4, 5,
-<a name="l06706"></a>06706 2, 1, 30, 11, 2, 5, 30, 7, 8, 4, 2, 9, 3, 4, 8, 8, 7, 10, 11, 11, 7, 0, -29, 32, 6,
-<a name="l06707"></a>06707 1, 6, -72, 1, 49, -77, 13, 7, -23, 12, 16, -26, 16, -10, 93, -28, 16, 60, 16, 60, 16, 60, 18, 23, 57,
-<a name="l06708"></a>06708 0, 63, -19, 63, -3, 60, 16, 60, 17, 18, 23, 57, -121, 5, 46, 43, 43, 43, 8, 125, 16, -60, -121, 5, 46,
-<a name="l06709"></a>06709 24, 43, 43, 43, 8, 125, 16, -60, 49, 48, 1, 93, 113, 114, 0, 113, 93, 1, 21, 33, 1, 1, 33, 21, 33,
-<a name="l06710"></a>06710 53, 1, 1, 53, 4, 121, -4, -19, 1, -12, -2, 12, 3, 60, -5, -14, 1, -33, -2, 33, 5, -70, -83, -3, -20,
-<a name="l06711"></a>06711 -3, -76, -83, -54, 2, 47, 1, -2, -61, 0, -1, -1, 0, 48, 0, 0, 4, -70, 5, -70, 2, 6, 0, 55, 0,
-<a name="l06712"></a>06712 0, -1, -1, 0, 6, 0, 0, 5, 70, 5, -70, 2, 6, 0, 60, 0, 0, -1, -1, 0, 9, 0, 0, 5, 73,
-<a name="l06713"></a>06713 5, -70, 2, 6, 0, 59, 0, 0, 0, 1, 0, 127, 0, 0, 6, 48, 5, -70, 0, 22, 1, 10, 64, 74, 64,
-<a name="l06714"></a>06714 4, 79, 9, 73, 15, 64, 20, 64, 24, 96, 24, 112, 24, -112, 24, -96, 24, 9, 0, 24, 32, 24, 48, 24, 64,
-<a name="l06715"></a>06715 24, 4, 21, 32, 15, 17, 52, 15, 32, 15, 17, 52, 35, 3, 35, 10, 52, 3, 52, 10, -94, 10, -28, 10, -10,
-<a name="l06716"></a>06716 10, 7, 8, 5, 93, 16, 19, 19, 0, 18, 12, 2, 6, 2, 0, 2, 18, 8, 7, 17, 32, 6, 18, -72, -1,
-<a name="l06717"></a>06717 -5, 64, 14, 12, 13, 6, 85, 18, 18, 22, 11, 32, 13, 1, 32, 22, 13, -72, -1, -16, -76, 15, 15, 2, 85,
-<a name="l06718"></a>06718 13, -72, -1, -22, -76, 12, 12, 2, 85, 13, -72, -1, -32, 64, 27, 12, 13, 6, 85, 0, 13, 32, 13, 48, 13,
-<a name="l06719"></a>06719 64, 13, 4, 64, 13, 96, 13, 112, 13, -112, 13, -96, 13, -1, 13, 6, 13, -72, 2, 93, 64, 16, 24, -128, 24,
-<a name="l06720"></a>06720 -64, 24, -48, 24, 3, -96, 24, -32, 24, -16, 24, 3, 24, -72, -1, -64, -77, 9, 17, 52, 22, -72, -1, -12, 64,
-<a name="l06721"></a>06721 32, 16, 16, 2, 85, 22, 8, 12, 12, 2, 85, 22, 16, 15, 15, 6, 85, 22, 16, 13, 13, 6, 85, 22, 20,
-<a name="l06722"></a>06722 12, 12, 6, 85, 32, 22, 1, 22, -71, 2, 93, 0, 23, 16, -28, 93, 43, 43, 43, 43, 43, 43, 93, 113, 16,
-<a name="l06723"></a>06723 -26, 93, 113, 43, 43, 43, 16, -19, 16, -19, 18, 57, 47, 43, 60, -3, 60, 0, 63, 63, 63, 63, 17, 18, 57,
-<a name="l06724"></a>06724 47, 60, -3, 60, 49, 48, 0, 93, 43, 43, 1, 113, 93, 19, 51, 17, 20, 22, 23, 17, 51, 17, 54, 54, 17,
-<a name="l06725"></a>06725 17, 51, 17, 16, 5, 17, 35, 17, 36, 0, 17, 127, -62, -42, -33, -62, -46, -29, -61, -3, -120, -62, -2, -74, -2,
-<a name="l06726"></a>06726 -45, 5, -70, -2, 117, -15, -63, 18, 3, 79, -4, -79, 13, -50, 1, 1, 1, 115, -2, 98, -3, -77, 10, -2, 59,
-<a name="l06727"></a>06727 1, -59, 6, 1, 53, 1, 11, 0, 0, 1, 0, 97, 0, 0, 5, -101, 5, -45, 0, 29, 1, 119, 64, 91, -97,
-<a name="l06728"></a>06728 17, -97, 27, 2, 88, 1, 89, 4, 88, 5, 87, 13, 91, 20, 84, 21, 88, 23, 88, 24, 122, 18, 117, 26, -122,
-<a name="l06729"></a>06729 24, 11, 92, 5, 80, 9, 111, 5, 100, 9, 118, 9, 5, 37, 9, 75, 18, 75, 20, 70, 24, 69, 26, 5, 11,
-<a name="l06730"></a>06730 5, 4, 9, 29, 5, 20, 9, 42, 5, 5, 12, 21, 2, 23, 59, 26, 3, 22, 30, 7, 3, 14, 13, 0, 1,
-<a name="l06731"></a>06731 45, 27, 27, 17, 45, 13, 30, 15, 16, 29, 28, 28, 16, 8, 13, -72, 2, 58, -77, 16, 16, 17, 1, -69, 2,
-<a name="l06732"></a>06732 58, 0, 27, 0, 28, -1, -10, 64, 17, 11, 11, 2, 85, 28, 17, 10, 11, 11, 2, 85, 47, 17, 79, 17, 2,
-<a name="l06733"></a>06733 17, -72, 2, 120, 64, 13, 14, 19, 38, 11, 74, 15, 14, 16, 16, 16, 2, 85, 14, -72, -1, -10, 64, 11, 15,
-<a name="l06734"></a>06734 15, 2, 85, 14, 10, 13, 13, 2, 85, 14, -72, -1, -20, 64, 11, 11, 11, 2, 85, 14, 16, 16, 16, 6, 85,
-<a name="l06735"></a>06735 14, -72, -1, -6, -76, 12, 13, 6, 85, 14, -72, -1, -9, 64, 19, 11, 11, 6, 85, 16, 19, 1, 14, 106, 95,
-<a name="l06736"></a>06736 31, 1, 31, 32, 28, 64, 28, 2, 28, -72, 2, 120, -75, 29, 25, 38, 3, 74, 29, -72, -1, -32, -76, 16, 16,
-<a name="l06737"></a>06737 2, 85, 29, -72, -1, -22, -76, 15, 15, 2, 85, 29, -72, -1, -18, -76, 13, 13, 2, 85, 29, -72, -1, -10, -76,
-<a name="l06738"></a>06738 12, 12, 2, 85, 29, -72, -1, -32, -76, 16, 16, 6, 85, 29, -72, -1, -20, -76, 15, 15, 6, 85, 29, -72, -1,
-<a name="l06739"></a>06739 -14, -76, 13, 13, 6, 85, 29, -72, -1, -8, 64, 15, 12, 12, 6, 85, 96, 29, 1, 0, 29, 32, 29, 2, 29,
-<a name="l06740"></a>06740 -84, 30, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -12, -19, 16, -19, 93, 16, 93, -10, 93, 43, 43,
-<a name="l06741"></a>06741 43, 43, 43, 43, 43, 60, -12, -19, 16, -19, 93, 43, 16, 43, 60, -19, 16, 60, 16, -19, 0, 63, 60, 16, 60,
-<a name="l06742"></a>06742 16, 60, -3, -12, 60, 16, -12, 60, 16, 60, 63, -19, 49, 48, 1, 113, 93, 93, 93, 93, 0, 93, 55, 33, 36,
-<a name="l06743"></a>06743 17, 52, 18, 36, 51, 50, 4, 18, 21, 16, 5, 33, 21, 33, 53, 36, 17, 52, 2, 35, 34, 2, 21, 16, 5,
-<a name="l06744"></a>06744 21, 33, 97, 1, 64, -2, -48, -96, 1, 36, -51, -53, 1, 15, -81, -2, -48, 1, 64, -3, -58, 1, 100, -5, -55,
-<a name="l06745"></a>06745 -49, -8, 1, 98, -3, -59, -83, -2, 1, 110, -57, 1, 60, -73, -88, -2, -58, -40, -2, -110, -2, -83, -94, -90, 1,
-<a name="l06746"></a>06746 -77, -11, 1, 61, -2, -63, -23, -2, 71, -86, -94, -1, -1, 0, 4, 0, 0, 2, 53, 6, -31, 2, 38, 0, 44,
-<a name="l06747"></a>06747 0, 0, 1, 7, 0, -114, -1, -57, 1, 30, 0, 40, -75, 2, 1, 1, 2, 2, 11, -71, 2, 33, 0, 41, 0,
-<a name="l06748"></a>06748 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 5, 10, 1, 2, 65, 43, 27, -76, 8, 2, 0, 72, 43, 43, 89,
-<a name="l06749"></a>06749 53, 53, -1, -1, 0, 6, 0, 0, 5, 70, 6, -31, 2, 38, 0, 60, 0, 0, 1, 7, 0, -114, 1, 80, 1,
-<a name="l06750"></a>06750 30, 0, 27, 64, 11, 2, 1, 17, 11, 0, 72, 43, 1, 2, 2, 20, -70, 2, 33, 0, 41, 1, 100, -123, 0,
-<a name="l06751"></a>06751 43, 1, 43, 53, 53, 0, -1, -1, 0, 72, -1, -24, 4, 83, 5, -62, 2, 38, 1, 46, 0, 0, 1, 7, 0,
-<a name="l06752"></a>06752 -115, 0, -12, 0, 0, 0, 27, 64, 14, 2, -32, 33, -16, 33, 2, 33, 21, 0, 72, 43, 2, 1, 33, -71, 2,
-<a name="l06753"></a>06753 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, 98, -1, -24, 3, 99, 5, -62, 2, 38, 1, 48, 0,
-<a name="l06754"></a>06754 0, 1, 7, 0, -115, 0, -112, 0, 0, 0, 22, 64, 10, 1, 0, 37, 39, 28, 0, 65, 1, 1, 37, -71, 2,
-<a name="l06755"></a>06755 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, -117, -2, 105, 3, -22, 5, -62, 2, 38, 2, 24, 0, 0, 1,
-<a name="l06756"></a>06756 7, 0, -115, 0, -12, 0, 0, 0, 21, 64, 9, 1, 20, 16, 0, 72, 43, 1, 1, 20, -71, 2, 34, 0, 41,
-<a name="l06757"></a>06757 0, 43, 1, 43, 53, 0, -1, -1, 0, 99, 0, 0, 1, -44, 5, -62, 2, 38, 2, 26, 0, 0, 1, 6, 0,
-<a name="l06758"></a>06758 -115, -123, 0, 0, 60, -77, 1, 1, 1, 7, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75,
-<a name="l06759"></a>06759 21, 7, 7, 1, 2, 65, 43, 27, -71, 0, 7, -1, -64, -77, 23, 25, 52, 7, -72, -1, -64, 64, 11, 34, 37,
-<a name="l06760"></a>06760 52, 47, 7, 1, 7, 1, 90, 72, 43, 43, 93, 43, 43, 89, 53, -1, -1, 0, -120, -1, -24, 3, -38, 5, -29,
-<a name="l06761"></a>06761 2, 38, 2, 35, 0, 0, 1, 7, 1, -16, 0, -36, 0, 0, 0, 13, -76, 1, 2, 3, 3, 23, -71, 2, 34,
-<a name="l06762"></a>06762 0, 41, 0, 43, 0, 0, 2, 0, -116, -2, 105, 4, 61, 5, -45, 0, 20, 0, 44, 1, 6, 64, 89, 56, 20,
-<a name="l06763"></a>06763 72, 20, 87, 15, 103, 15, 106, 25, 106, 29, 101, 38, 121, 11, 122, 25, 122, 29, -119, 11, -117, 25, -105, 13, 13,
-<a name="l06764"></a>06764 40, 12, 1, 72, 41, 89, 37, -87, 8, -84, 13, 4, 13, 16, 10, 14, 52, -69, 13, -53, 13, 2, 0, 7, 36,
-<a name="l06765"></a>06765 104, 13, 1, 13, 13, 21, 28, 16, 44, -64, 44, 2, 44, 27, 28, 7, 36, 28, 19, 7, 1, 19, 11, 2, 14,
-<a name="l06766"></a>06766 13, 21, 21, 1, 24, 36, 63, 10, 79, 10, 2, 10, -72, 2, 84, 64, 9, 39, 36, 46, 20, 11, 11, 2, 85,
-<a name="l06767"></a>06767 16, -72, -1, -16, -76, 11, 13, 6, 85, 16, -72, -1, -64, 64, 20, 36, 37, 52, 48, 16, 1, 0, 16, 16, 16,
-<a name="l06768"></a>06768 32, 16, 3, 16, 49, 46, 31, 1, 37, 2, -72, -1, -10, 64, 17, 16, 16, 2, 85, 2, 6, 12, 12, 2, 85,
-<a name="l06769"></a>06769 2, 6, 11, 11, 2, 85, 2, -72, -1, -14, 64, 17, 15, 15, 6, 85, 2, 4, 12, 12, 6, 85, 2, 6, 11,
-<a name="l06770"></a>06770 11, 6, 85, 2, -72, -1, -64, 64, 18, 51, 54, 52, -16, 2, 1, 0, 2, 32, 2, -48, 2, -32, 2, 4, 2,
-<a name="l06771"></a>06771 78, 45, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, -10, 93, 93, 43, 43, 43, -19, -12, 93,
-<a name="l06772"></a>06772 -19, 17, 57, 47, 57, 0, 63, 63, 63, 16, -19, 16, -19, 47, 93, -19, 25, 57, 47, 93, 17, 18, 57, 1, 93,
-<a name="l06773"></a>06773 43, 49, 48, 1, 93, 0, 113, 93, 37, 17, 35, 17, 52, 54, 54, 51, 50, 22, 21, 20, 6, 7, 22, 22, 21,
-<a name="l06774"></a>06774 20, 2, 35, 34, 19, 50, 54, 53, 52, 38, 35, 34, 6, 6, 21, 17, 20, 22, 22, 51, 50, 54, 53, 52, 38,
-<a name="l06775"></a>06775 38, 35, 35, 1, 63, -77, 91, -34, -120, -55, -49, -89, 108, -82, -67, -33, -45, -40, 43, -72, -88, -113, 107, 93, -119,
-<a name="l06776"></a>06776 31, 48, -98, 103, 125, -111, 107, -99, -126, 26, -121, -3, -30, 5, -123, -87, -65, 125, -25, -119, -122, -92, 19, 17, -40,
-<a name="l06777"></a>06777 -98, -86, -2, -13, 3, 120, -128, 121, 98, -124, 98, 120, -106, -2, 109, -84, -94, -126, -85, 126, 104, -91, 59, 0, 0,
-<a name="l06778"></a>06778 1, 0, 25, -2, 105, 3, -25, 4, 38, 0, 8, 1, 26, -77, -113, 10, 1, 2, -72, -1, -18, 64, 11, 15, 17,
-<a name="l06779"></a>06779 2, 85, 2, 10, 13, 13, 2, 85, 2, -72, -1, -20, 64, 15, 9, 11, 2, 85, -16, 2, 1, 0, 2, 1, 2,
-<a name="l06780"></a>06780 1, 2, 3, 1, -72, -1, -4, 64, 68, 14, 17, 6, 85, 1, 37, 0, 8, 20, 0, 0, 8, 2, 3, 2, 1,
-<a name="l06781"></a>06781 3, 4, 15, 17, 6, 85, 3, 37, 4, 5, 20, 4, 4, 5, 2, 1, 5, 7, 14, 4, 3, 3, 1, 1, 0,
-<a name="l06782"></a>06782 6, 5, 8, 10, 3, 4, 6, 1, 0, 7, 4, -1, 6, 0, -1, 7, 5, 6, 37, 8, 7, 18, 17, 17, 2,
-<a name="l06783"></a>06783 85, 7, -72, -1, -16, 64, 17, 16, 16, 2, 85, 7, 10, 13, 13, 2, 85, 7, 10, 9, 9, 2, 85, 7, -72,
-<a name="l06784"></a>06784 -1, -2, -76, 16, 16, 6, 85, 7, -72, -1, -8, 64, 38, 12, 12, 6, 85, 0, 7, -113, 7, -32, 7, -16, 7,
-<a name="l06785"></a>06785 4, 64, 7, 1, -80, 7, 1, 7, 7, 10, 9, 0, 10, 48, 10, 96, 10, -128, 10, -112, 10, 5, 64, 10, 1,
-<a name="l06786"></a>06786 10, -72, -1, -64, -78, 21, 26, 52, 43, 113, 93, 17, 18, 57, 47, 114, 113, 93, 43, 43, 43, 43, 43, 43, 60,
-<a name="l06787"></a>06787 -3, 60, 25, 16, -28, 16, -28, 17, 18, 57, 17, 18, 57, -79, 6, 2, 67, 84, 88, -78, 2, 6, 7, 17, 18,
-<a name="l06788"></a>06788 57, 89, 0, 24, 63, 60, 63, 60, 16, 60, 16, 60, 63, 17, 18, 57, -121, 5, 46, 43, 43, 8, 125, 16, -60,
-<a name="l06789"></a>06789 -121, 5, 46, 24, 43, 43, 8, 125, 16, -60, 49, 48, 0, 114, 113, 43, 43, 43, 1, 93, 19, 51, 1, 1, 51,
-<a name="l06790"></a>06790 1, 17, 35, 17, 25, -67, 1, 41, 1, 48, -72, -2, 115, -73, 4, 38, -4, -69, 3, 69, -5, -38, -2, 105, 1,
-<a name="l06791"></a>06791 -105, 0, 0, 1, 0, 72, -2, 81, 3, 118, 5, -70, 0, 31, 0, -20, 64, 32, 8, 25, 24, 25, 108, 4, 119,
-<a name="l06792"></a>06792 6, -122, 6, -90, 4, -87, 24, 7, 26, 3, 67, 3, 84, 3, 3, 55, 3, 122, 29, -117, 29, 3, 2, 30, 17,
-<a name="l06793"></a>06793 -72, 2, 106, 64, 19, 16, 15, 8, 28, 23, 10, 30, 72, 0, 0, 30, 1, 16, 16, 12, -96, 0, 1, 0, -72,
-<a name="l06794"></a>06794 -1, -64, -74, 9, 10, 52, 0, 0, 27, 19, -72, 2, 48, 64, 19, 12, 24, 16, 16, 2, 85, 12, 24, 13, 14,
-<a name="l06795"></a>06795 2, 85, 12, 25, 16, 16, 6, 85, 12, -72, -1, -12, -76, 15, 15, 6, 85, 12, -72, -1, -22, 64, 18, 13, 13,
-<a name="l06796"></a>06796 6, 85, 12, 10, 12, 12, 6, 85, 12, 12, 31, 1, 111, 1, 2, 1, -72, -1, -64, 64, 58, 9, 11, 52, 1,
-<a name="l06797"></a>06797 5, 36, 27, 18, 11, 17, 2, 85, 27, 18, 16, 16, 6, 85, 27, 2, 15, 15, 6, 85, 27, 12, 13, 13, 6,
-<a name="l06798"></a>06798 85, 27, 32, 12, 12, 6, 85, 27, 12, 11, 11, 6, 85, 31, 27, 63, 27, 79, 27, 95, 27, 127, 27, -113, 27,
-<a name="l06799"></a>06799 6, 27, 40, 32, 16, -10, 93, 43, 43, 43, 43, 43, 43, -19, 47, 43, 93, 51, 47, 43, 43, 43, 43, 43, 43,
-<a name="l06800"></a>06800 -19, 17, 51, 47, 43, 93, 17, 51, 47, 17, 51, 0, 63, -19, 63, -19, 63, -19, 17, 51, 49, 48, 1, 93, 0,
-<a name="l06801"></a>06801 113, 93, 19, 33, 21, 4, 0, 21, 20, 22, 23, 30, 2, 21, 20, 6, 6, 35, 55, 54, 53, 52, 38, 38, 39,
-<a name="l06802"></a>06802 46, 2, 53, 52, 0, 55, 33, -22, 2, -116, -2, -13, -2, -109, 108, 121, -100, -125, 98, 120, -99, 113, 49, -88, 54,
-<a name="l06803"></a>06803 78, 109, -105, -103, 76, 1, 86, -20, -2, 96, 5, -70, 122, -90, -3, -25, -28, 120, 116, 10, 14, 41, 127, 89, 97,
-<a name="l06804"></a>06804 -92, 66, -90, 19, 122, 41, 62, 18, 4, 4, 113, -70, 117, -19, 1, -9, -97, 0, 1, 0, -117, -2, 105, 3, -22,
-<a name="l06805"></a>06805 4, 62, 0, 19, 1, 41, 64, 87, 114, 17, 112, 21, -117, 14, -126, 16, -126, 17, -101, 14, -84, 14, -87, 17, -96,
-<a name="l06806"></a>06806 21, -69, 14, -80, 21, -64, 21, -44, 17, -48, 21, -32, 21, -1, 21, 16, -16, 21, 1, 6, 7, 9, 17, 22, 7,
-<a name="l06807"></a>06807 37, 4, 53, 4, 70, 4, -39, 16, -32, 3, -17, 17, 9, 11, 15, 0, 10, 15, 28, 5, 7, 2, 1, 6, 17,
-<a name="l06808"></a>06808 15, 19, 11, 12, 10, 12, 37, 21, 64, 11, 11, 2, 85, 9, 24, 16, 16, 2, 85, 9, -72, -1, -22, 64, 17,
-<a name="l06809"></a>06809 13, 13, 2, 85, 9, 6, 12, 12, 2, 85, 9, 28, 11, 11, 2, 85, 9, -72, -1, -12, 64, 11, 11, 11, 6,
-<a name="l06810"></a>06810 85, 9, 20, 16, 16, 6, 85, 9, -72, -1, -7, 64, 11, 13, 13, 6, 85, 9, 10, 15, 15, 6, 85, 9, -72,
-<a name="l06811"></a>06811 -1, -10, 64, 26, 12, 12, 6, 85, 112, 9, -96, 9, -80, 9, -64, 9, -1, 9, 5, 9, 78, 21, 3, 2, -102,
-<a name="l06812"></a>06812 18, 19, 37, 1, 0, -72, -1, -8, 64, 17, 16, 16, 2, 85, 0, 6, 11, 12, 2, 85, 0, 4, 11, 11, 6,
-<a name="l06813"></a>06813 85, 0, -72, -1, -6, 64, 17, 15, 15, 6, 85, 0, 2, 12, 12, 6, 85, 0, 4, 13, 13, 6, 85, 0, -72,
-<a name="l06814"></a>06814 -1, -64, 64, 21, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 20, 17, 12, 19,
-<a name="l06815"></a>06815 17, 18, 57, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, -12, 60, 16, -10, 93, 43, 43, 43,
-<a name="l06816"></a>06816 43, 43, 43, 43, 43, 43, 43, -19, 60, 16, 60, 0, 17, 18, 57, 63, 60, 63, -19, 63, 63, 49, 48, 0, 93,
-<a name="l06817"></a>06817 1, 113, 93, 51, 17, 51, 21, 54, 51, 50, 22, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, -117, -94,
-<a name="l06818"></a>06818 117, -35, -126, -80, 57, -76, 104, 119, 117, -93, 4, 38, -105, -81, 112, -91, -100, -5, -36, 4, 29, -108, -120, -106, -56,
-<a name="l06819"></a>06819 -3, -68, 0, 3, 0, 92, -1, -24, 4, 24, 5, -45, 0, 7, 0, 13, 0, 18, 1, 52, 64, 97, 87, 1, 87,
-<a name="l06820"></a>06820 3, 88, 5, 88, 7, 103, 1, 103, 3, 6, 36, 16, 41, 18, 58, 11, 53, 13, 53, 16, 58, 18, 70, 1, 73,
-<a name="l06821"></a>06821 3, 73, 5, 70, 7, 73, 11, 70, 13, 67, 16, 74, 18, 102, 5, 105, 7, 118, 16, 121, 18, -122, 16, -119, 18,
-<a name="l06822"></a>06822 -75, 16, -70, 18, 22, 9, 28, 127, 15, -113, 15, 2, 15, 15, 2, 17, 28, 6, 11, 12, 28, 2, 3, 9, 14,
-<a name="l06823"></a>06823 36, 4, 8, 15, 36, 0, 20, 64, 13, 13, 2, 85, 20, 64, 11, 11, 2, 85, 4, -72, -1, -22, 64, 17, 15,
-<a name="l06824"></a>06824 15, 2, 85, 4, 24, 13, 13, 2, 85, 4, 16, 11, 11, 2, 85, 4, -72, -1, -16, -76, 11, 11, 6, 85, 4,
-<a name="l06825"></a>06825 -72, -1, -16, -76, 13, 13, 6, 85, 4, -72, -1, -16, -76, 15, 15, 6, 85, 4, -72, -1, -16, -76, 12, 12, 6,
-<a name="l06826"></a>06826 85, 4, -72, -1, -64, 64, 21, 36, 37, 52, 48, 4, 1, 0, 4, 16, 4, 32, 4, 3, 4, 49, 4, 49, -33,
-<a name="l06827"></a>06827 20, 1, 20, -72, -1, -64, 64, 68, 30, 35, 52, 48, 20, 1, 20, 0, 12, 14, 15, 2, 85, 0, 18, 13, 13,
-<a name="l06828"></a>06828 2, 85, 0, 12, 12, 12, 2, 85, 0, 28, 11, 11, 2, 85, 0, 14, 11, 11, 6, 85, 0, 14, 13, 13, 6,
-<a name="l06829"></a>06829 85, 0, 12, 16, 16, 6, 85, 0, 22, 12, 12, 6, 85, 0, 64, 36, 37, 52, 31, 0, 63, 0, 2, 0, 49,
-<a name="l06830"></a>06830 19, 16, -28, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 16, 113, 43, 93, -26, -10, 93, 93, 43, 43, 43, 43,
-<a name="l06831"></a>06831 43, 43, 43, 43, 43, 43, 16, -3, 60, 16, -3, 60, 0, 63, -19, 63, -19, 18, 57, 47, 93, -19, 49, 48, 1,
-<a name="l06832"></a>06832 93, 0, 93, 19, 16, 33, 32, 17, 16, 33, 32, 19, 33, 2, 38, 35, 32, 1, 33, 18, 33, 32, 92, 1, -34,
-<a name="l06833"></a>06833 1, -34, -2, 34, -2, 34, -70, 2, 72, 10, -96, 124, -2, -23, 2, 61, -3, -72, 11, 1, 25, 1, 26, 2, -35,
-<a name="l06834"></a>06834 2, -10, -3, 10, -3, 11, 3, 62, 1, 57, -32, -3, 86, -3, -25, 0, 1, 0, -119, 0, 0, 1, 61, 4, 38,
-<a name="l06835"></a>06835 0, 3, 0, 76, 64, 18, 2, 1, 6, 0, 10, 5, 78, 2, 3, 37, 1, 0, 6, 11, 12, 2, 85, 0, -72,
-<a name="l06836"></a>06836 -1, -4, -76, 12, 12, 6, 85, 0, -72, -1, -2, 64, 19, 13, 13, 6, 85, 0, 12, 16, 16, 6, 85, 0, 0,
-<a name="l06837"></a>06837 32, 0, 2, 0, 69, 4, 71, -71, 1, 10, 0, 24, 43, 16, -10, 93, 43, 43, 43, 43, 60, -3, 60, -26, 0,
-<a name="l06838"></a>06838 63, 63, 60, 49, 48, 51, 17, 51, 17, -119, -76, 4, 38, -5, -38, 0, 1, 0, -122, 0, 0, 3, -1, 4, 38,
-<a name="l06839"></a>06839 0, 11, 1, 90, -71, 0, 5, -1, -24, -76, 12, 12, 2, 85, 8, -72, -1, -24, -76, 12, 12, 2, 85, 9, -72,
-<a name="l06840"></a>06840 -1, -24, 64, 62, 12, 12, 2, 85, 23, 2, 1, 68, 2, 1, 63, 13, 90, 3, 89, 4, 105, 3, 105, 4, -128,
-<a name="l06841"></a>06841 13, -104, 5, -88, 5, -73, 4, -58, 4, -64, 13, -27, 5, -27, 8, -32, 13, -6, 3, -11, 5, 16, 5, 5, 27,
-<a name="l06842"></a>06842 3, 24, 8, 40, 8, 56, 8, 88, 3, 89, 4, 7, 74, 5, 1, 2, -72, -1, -12, 64, 12, 9, 8, 16, 2,
-<a name="l06843"></a>06843 5, 8, 9, 9, 4, 8, 7, 7, -72, -1, -7, 64, 82, 11, 11, 6, 85, 7, 37, 6, 5, 20, 6, 6, 5,
-<a name="l06844"></a>06844 2, 3, 3, 16, 16, 16, 6, 85, 3, 7, 12, 13, 6, 85, 3, 37, 4, 9, 20, 4, 4, 9, 101, 9, 1,
-<a name="l06845"></a>06845 9, 8, 5, 2, 4, 3, 0, 6, 4, 3, 6, 10, 7, 7, 6, 10, -85, 5, 1, 9, 8, 7, 5, 4, 3,
-<a name="l06846"></a>06846 2, 7, 16, 6, 80, 6, 112, 6, -128, 6, -97, 6, -65, 6, 6, 6, 1, 10, 37, 11, -72, -1, -8, -76, 16,
-<a name="l06847"></a>06847 16, 2, 85, 11, -72, -1, -6, 64, 17, 14, 14, 2, 85, 11, 6, 12, 12, 2, 85, 11, 6, 11, 11, 2, 85,
-<a name="l06848"></a>06848 11, -72, -1, -4, -76, 16, 16, 6, 85, 11, -72, -1, -16, -76, 15, 15, 6, 85, 11, -72, -1, -7, -76, 12, 13,
-<a name="l06849"></a>06849 6, 85, 11, -72, -1, -64, 64, 18, 51, 54, 52, -16, 11, 1, 0, 11, 32, 11, -48, 11, -32, 11, 4, 11, 78,
-<a name="l06850"></a>06850 12, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 25, 47, 93, 23, 57, 113, 0, 24, 63, 60,
-<a name="l06851"></a>06851 16, 60, 63, 60, 63, 17, 23, 57, 114, -121, 5, 46, 43, 43, 43, 4, 125, 16, -60, -121, 5, 46, 24, 43, 43,
-<a name="l06852"></a>06852 14, 125, 16, -60, 7, 14, 16, 60, 60, 0, 23, 56, 49, 48, 56, 1, 114, 113, 93, 0, 114, 113, 43, 43, 43,
-<a name="l06853"></a>06853 19, 51, 17, 1, 51, 1, 1, 35, 1, 7, 17, 35, -122, -77, 1, -81, -18, -2, 37, 2, 4, -26, -2, 98, 66,
-<a name="l06854"></a>06854 -77, 4, 38, -2, 95, 1, -95, -2, 71, -3, -109, 1, -12, 61, -2, 73, 0, 0, 1, 0, 24, 0, 0, 3, -26,
-<a name="l06855"></a>06855 5, -70, 0, 7, 0, -17, -71, 0, 3, -1, -20, 64, 64, 9, 9, 2, 85, 0, 24, 14, 17, 2, 85, 3, 0,
-<a name="l06856"></a>06856 19, 0, 121, 0, -119, 0, 4, 3, 16, 20, 25, 52, 55, 6, 70, 5, 86, 5, 104, 3, -89, 4, -89, 5, 6,
-<a name="l06857"></a>06857 8, 3, 0, 9, 24, 3, 48, 9, 96, 9, -104, 0, -96, 9, -80, 9, 8, 0, 12, 11, 15, 6, 85, 5, 4,
-<a name="l06858"></a>06858 7, 7, -72, -1, -6, 64, 22, 11, 13, 6, 85, 7, 12, 16, 17, 6, 85, 7, 37, 6, 5, 20, 6, 6, 5,
-<a name="l06859"></a>06859 1, 2, 3, 3, -72, -1, -12, 64, 56, 12, 13, 6, 85, 3, 12, 16, 17, 6, 85, 3, 37, 0, 1, 20, 0,
-<a name="l06860"></a>06860 3, 4, 0, 1, 0, 3, 1, 5, 4, 0, 6, 7, 7, 2, 1, 10, 4, 4, 20, 4, -106, 0, -106, 4, 4,
-<a name="l06861"></a>06861 3, 5, 4, 1, 4, 2, 7, 6, 2, 24, 17, 17, 2, 85, 2, -70, 1, 27, 0, 6, 1, 27, 64, 13, 0,
-<a name="l06862"></a>06862 0, 32, 0, 48, 0, 96, 0, 4, 0, 0, 9, 8, 25, 17, 18, 57, 47, 93, 24, -19, -19, 43, 18, 57, 18,
-<a name="l06863"></a>06863 23, 57, 93, 0, 63, 60, 60, 16, 60, 63, 60, 18, 57, 57, -121, 8, 46, 43, 43, 43, -121, 5, 125, -60, -121,
-<a name="l06864"></a>06864 46, 24, 43, 43, 43, -121, 125, -60, 0, 43, 49, 48, 1, 93, 93, 43, 0, 93, 43, 43, 1, 1, 35, 1, 3,
-<a name="l06865"></a>06865 51, 1, 35, 1, -1, -2, -41, -66, 1, -118, -98, -66, 2, 36, -66, 3, 26, -4, -26, 4, 18, 1, -88, -6, 70,
-<a name="l06866"></a>06866 0, -1, -1, 0, -96, -2, 105, 3, -6, 4, 38, 2, 6, 0, -105, 0, 0, -1, -1, 0, 26, 0, 0, 3, -24,
-<a name="l06867"></a>06867 4, 38, 2, 6, 0, 89, 0, 0, 0, 1, 0, 92, -2, 81, 3, 112, 5, -45, 0, 40, 1, 12, 64, 49, 9,
-<a name="l06868"></a>06868 33, 9, 38, 70, 15, 86, 15, -125, 15, 5, 5, 10, 54, 11, -26, 11, 3, -119, 4, -121, 6, -118, 11, -117, 12,
-<a name="l06869"></a>06869 -121, 35, -101, 38, -58, 11, -42, 12, 8, 105, 4, 103, 6, 107, 11, 106, 30, 121, 12, 121, 30, 6, 33, -72, -1,
-<a name="l06870"></a>06870 -24, -77, 9, 11, 52, 12, -72, -1, -48, 64, 33, 29, 32, 52, 34, 8, 28, -96, 9, 1, 9, 9, 29, 40, 24,
-<a name="l06871"></a>06871 28, 23, 15, 16, 28, 29, 10, 2, 28, 40, 1, 24, 23, 23, 20, 31, 5, 36, 37, -72, -1, -19, -76, 15, 16,
-<a name="l06872"></a>06872 6, 85, 37, -72, -1, -8, -76, 13, 13, 6, 85, 37, -72, -1, -12, 64, 27, 12, 12, 6, 85, 111, 37, 127, 37,
-<a name="l06873"></a>06873 2, 37, 37, 31, 27, 28, 20, 10, 16, 16, 2, 85, 20, 20, 13, 13, 2, 85, 20, -72, -1, -27, -76, 15, 16,
-<a name="l06874"></a>06874 6, 85, 20, -72, -1, -27, -73, 13, 13, 6, 85, 31, 20, 1, 20, -72, -1, -64, 64, 33, 9, 11, 52, 20, 20,
-<a name="l06875"></a>06875 -128, 8, 1, 8, 8, 0, 78, 42, 13, 36, 31, 32, 12, 12, 6, 85, 31, 8, 11, 11, 6, 85, 31, 31, -113,
-<a name="l06876"></a>06876 31, 2, 31, -71, 2, 84, 0, 41, 16, -10, 93, 43, 43, -19, 16, -10, 50, 47, 93, 51, 47, 43, 93, 43, 43,
-<a name="l06877"></a>06877 43, 43, -19, 17, 51, 47, 93, 43, 43, 43, -19, 17, 18, 57, 47, 51, 0, 63, -19, 63, -19, 63, -19, 17, 18,
-<a name="l06878"></a>06878 57, 47, 93, -3, 57, 49, 48, 0, 43, 43, 93, 93, 113, 1, 93, 1, 21, 35, 34, 6, 21, 20, 33, 51, 21,
-<a name="l06879"></a>06879 34, 6, 6, 21, 20, 22, 23, 30, 2, 21, 20, 6, 7, 55, 54, 54, 53, 52, 39, 36, 17, 52, 54, 55, 38,
-<a name="l06880"></a>06880 38, 53, 52, 54, 51, 3, 4, -109, -92, -109, 1, 43, -109, -124, -60, -99, 113, -70, 120, 112, 74, -38, -71, 46, 99,
-<a name="l06881"></a>06881 83, -85, -2, 70, -73, -114, -114, -127, -27, -37, 5, -45, -107, 97, 90, -84, -107, 78, -54, -128, 96, -106, 21, 14, 61,
-<a name="l06882"></a>06882 124, 72, -124, -71, 2, -89, 7, 88, 46, 102, 19, 48, 1, 118, -103, -12, 61, 18, -77, 93, -126, -63, 0, -1, -1,
-<a name="l06883"></a>06883 0, 68, -1, -24, 4, 39, 4, 62, 2, 6, 0, 82, 0, 0, 0, 2, 0, -125, -2, 105, 4, 69, 4, 62, 0,
-<a name="l06884"></a>06884 13, 0, 25, 1, 12, 64, 100, 7, 2, 1, 107, 11, -54, 3, -39, 3, -9, 2, -8, 8, 5, 106, 24, 106, 25,
-<a name="l06885"></a>06885 96, 27, -128, 27, -88, 6, -71, 5, 6, 95, 25, 98, 3, 106, 6, 108, 9, 98, 15, 108, 21, 6, 80, 3, 95,
-<a name="l06886"></a>06886 5, 95, 9, 80, 15, 95, 21, 5, 57, 16, 53, 18, 55, 22, 57, 24, 73, 16, 70, 18, 70, 22, 73, 24, 86,
-<a name="l06887"></a>06887 3, 87, 5, 88, 9, 89, 12, 104, 12, 120, 12, -118, 12, 15, 12, 10, 0, 14, 20, 28, 10, 11, 14, 28, 4,
-<a name="l06888"></a>06888 7, 17, 17, 13, 23, 36, 7, -72, -1, -64, 64, 10, 36, 37, 52, 7, 14, 15, 15, 2, 85, 7, -72, -1, -18,
-<a name="l06889"></a>06889 -76, 15, 15, 6, 85, 7, -72, -1, -18, 64, 24, 11, 13, 6, 85, 48, 7, 96, 7, -128, 7, 3, 0, 7, 16,
-<a name="l06890"></a>06890 7, 32, 7, 3, 7, 49, -33, 27, 1, 27, -72, -1, -64, 64, 10, 30, 35, 52, 48, 27, 1, 27, 13, 37, 0,
-<a name="l06891"></a>06891 -72, -1, -4, 64, 11, 14, 16, 2, 85, 0, 4, 11, 12, 2, 85, 0, -72, -1, -4, 64, 11, 15, 16, 6, 85,
-<a name="l06892"></a>06892 0, 4, 11, 11, 6, 85, 0, -72, -1, -64, 64, 18, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32,
-<a name="l06893"></a>06893 0, 4, 0, 78, 26, 16, -10, 93, 113, 43, 43, 43, 43, 43, -19, 16, 113, 43, 93, -10, 93, 93, 43, 43, 43,
-<a name="l06894"></a>06894 43, -19, 17, 51, 47, 0, 63, -19, 63, -19, 63, 17, 57, 49, 48, 0, 93, 1, 93, 93, 93, 93, 113, 19, 17,
-<a name="l06895"></a>06895 16, 18, 51, 50, 0, 21, 20, 0, 35, 34, 39, 17, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, -125,
-<a name="l06896"></a>06896 -18, -29, -30, 1, 15, -2, -3, -45, -59, 115, 1, 35, -125, -98, -100, -122, -121, -86, -74, -2, 105, 3, -123, 1, 46,
-<a name="l06897"></a>06897 1, 34, -2, -52, -10, -9, -2, -53, 125, -2, 4, 5, 64, -55, -37, -59, -60, -53, -61, -34, -63, 0, 0, 1, 0,
-<a name="l06898"></a>06898 86, -2, 81, 3, -58, 4, 62, 0, 34, 0, -18, 64, 75, 39, 8, 41, 31, 54, 8, 57, 32, 70, 8, 74, 32,
-<a name="l06899"></a>06899 6, -122, 32, -104, 31, -88, 5, -88, 31, -73, 32, -57, 32, -40, 4, -39, 31, 8, 38, 32, 55, 32, 71, 32, 118,
-<a name="l06900"></a>06900 32, -122, 4, 5, 9, 28, 27, 21, 28, 16, 15, 3, 28, 33, 7, 19, 18, 18, 13, 30, 1, 0, 0, 24, 36,
-<a name="l06901"></a>06901 13, 8, 16, 16, 2, 85, 13, 4, 16, 16, 6, 85, 13, -72, -1, -4, -76, 15, 15, 6, 85, 13, -72, -1, -8,
-<a name="l06902"></a>06902 -76, 13, 13, 6, 85, 13, -72, -1, -16, -76, 12, 12, 6, 85, 13, -72, -1, -64, 64, 19, 36, 37, 52, 48, 13,
-<a name="l06903"></a>06903 1, 0, 13, 16, 13, 32, 13, 3, 13, 49, -33, 36, 1, 36, -72, -1, -64, 64, 58, 30, 35, 52, 48, 36, 1,
-<a name="l06904"></a>06904 36, 6, 36, 30, 8, 14, 14, 2, 85, 30, 12, 13, 13, 2, 85, 30, 12, 12, 12, 2, 85, 30, 16, 11, 11,
-<a name="l06905"></a>06905 2, 85, 30, 4, 15, 16, 6, 85, 30, 19, 11, 13, 6, 85, 30, 64, 36, 37, 52, 31, 30, 63, 30, 2, 30,
-<a name="l06906"></a>06906 49, 35, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, -19, 16, 113, 43, 93, -10, 93, 93, 43, 43, 43, 43, 43,
-<a name="l06907"></a>06907 43, -19, 51, 47, 51, 17, 18, 57, 47, 51, 0, 63, -19, 63, -19, 47, -19, 49, 48, 0, 93, 93, 1, 93, 1,
-<a name="l06908"></a>06908 7, 38, 35, 34, 6, 21, 20, 22, 23, 30, 2, 21, 20, 6, 35, 34, 39, 55, 22, 51, 50, 54, 53, 52, 38,
-<a name="l06909"></a>06909 39, 38, 38, 53, 52, 0, 33, 50, 3, -58, 42, 112, 112, -55, -18, -125, -62, -117, 124, 70, -34, -90, 67, 85, 44,
-<a name="l06910"></a>06910 58, 43, 96, 110, 79, 126, -34, -39, 1, 89, 1, 36, 123, 4, 28, -106, 35, -7, -88, 116, -77, 51, 37, 65, 115,
-<a name="l06911"></a>06911 75, -119, -80, 14, -91, 12, 83, 59, 54, 57, 27, 47, -4, -82, -15, 1, 100, 0, 0, 1, 0, -120, -1, -24, 3,
-<a name="l06912"></a>06912 -38, 4, 38, 0, 19, 0, -14, 64, 57, 68, 3, 68, 7, 84, 3, 83, 7, -102, 17, -106, 18, 6, 31, 21, 80,
-<a name="l06913"></a>06913 4, 91, 7, 99, 4, 106, 7, 115, 4, 123, 7, -64, 21, -48, 21, -32, 21, -1, 21, 11, 112, 21, -80, 21, 2,
-<a name="l06914"></a>06914 -16, 21, 1, 5, 28, 15, 11, 10, 0, 6, 9, 10, 12, 10, 37, 11, -72, -1, -12, 64, 17, 16, 16, 2, 85,
-<a name="l06915"></a>06915 11, 10, 15, 15, 2, 85, 11, 26, 14, 14, 2, 85, 11, -72, -1, -12, 64, 23, 13, 13, 2, 85, 11, 12, 12,
-<a name="l06916"></a>06916 12, 2, 85, 11, 24, 16, 16, 6, 85, 11, 8, 15, 15, 6, 85, 11, -72, -1, -8, 64, 23, 12, 13, 6, 85,
-<a name="l06917"></a>06917 31, 11, 112, 11, -80, 11, -64, 11, -1, 11, 5, 11, 78, 21, 1, 2, 37, 0, 19, -72, -1, -8, -76, 16, 16,
-<a name="l06918"></a>06918 2, 85, 19, -72, -1, -8, 64, 11, 14, 14, 2, 85, 19, 4, 12, 12, 2, 85, 19, -72, -1, -8, 64, 11, 15,
-<a name="l06919"></a>06919 15, 6, 85, 19, 4, 11, 11, 6, 85, 19, -72, -1, -64, 64, 18, 51, 54, 52, -16, 19, 1, 0, 19, 32, 19,
-<a name="l06920"></a>06920 -48, 19, -32, 19, 4, 19, 78, 20, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 60, -3, 60, 16, -12, 93, 43,
-<a name="l06921"></a>06921 43, 43, 43, 43, 43, 43, 43, -19, 60, 16, 60, 0, 63, 60, 63, -19, 49, 48, 1, 113, 93, 93, 0, 113, 19,
-<a name="l06922"></a>06922 51, 17, 20, 22, 51, 50, 54, 54, 53, 17, 51, 17, 20, 6, 35, 34, 38, 38, 53, -120, -76, -110, 98, 81, 120,
-<a name="l06923"></a>06923 46, -77, -20, -63, -107, -61, 77, 4, 38, -3, -117, -93, -110, 92, 120, 111, 2, 103, -3, -110, -19, -29, -123, -82, -106,
-<a name="l06924"></a>06924 0, 0, 1, 0, 17, -2, 105, 4, 32, 4, 38, 0, 11, 1, 33, 64, 117, 53, 2, 1, -95, 2, -51, 8, -16,
-<a name="l06925"></a>06925 2, -1, 8, 4, 48, 2, 63, 8, 2, 5, 5, 10, 11, 21, 5, 26, 11, 56, 11, 119, 8, 6, -88, 3, -90,
-<a name="l06926"></a>06926 8, -74, 5, -71, 11, -55, 2, -57, 5, -57, 8, -56, 11, -41, 8, -8, 3, -9, 9, 11, 7, 11, 15, 13, 23,
-<a name="l06927"></a>06927 11, 32, 13, 57, 5, 55, 11, 6, 5, 1, 6, 4, 9, 8, 9, 4, 0, 7, 11, 0, 7, 10, 3, 2, 1,
-<a name="l06928"></a>06928 6, 10, 3, 2, 8, 0, 9, 1, 0, 7, 7, 8, 9, 17, 2, 85, 7, 11, 13, 17, 6, 85, 7, 37, 6,
-<a name="l06929"></a>06929 1, 20, 6, 6, 1, 3, 4, 9, 9, -72, -1, -8, -76, 9, 17, 2, 85, 9, -72, -1, -11, 64, 40, 13, 17,
-<a name="l06930"></a>06930 6, 85, 9, 37, 10, 3, 20, 10, 10, 3, 4, 3, 3, 1, 1, 0, 6, 9, 7, 7, 6, 6, 10, 14, 7,
-<a name="l06931"></a>06931 9, 6, 10, 3, 1, 0, 4, -102, 6, 0, -113, 10, 6, -72, -1, -11, -76, 16, 16, 2, 85, 6, -72, -1, -11,
-<a name="l06932"></a>06932 64, 30, 10, 10, 2, 85, 15, 6, 31, 6, 32, 6, 3, 6, -102, 13, 10, 11, 17, 17, 2, 85, 0, 10, 16,
-<a name="l06933"></a>06933 10, 32, 10, 3, 10, 73, 12, 25, 16, -26, 93, 43, 16, -26, 93, 43, 43, 24, 16, -28, 16, -28, 17, 57, 57,
-<a name="l06934"></a>06934 17, 18, 57, 57, 0, 63, 60, 16, 60, 16, 60, 63, 60, 16, 60, 16, 60, -121, 5, 46, 43, 43, 43, -121, 125,
-<a name="l06935"></a>06935 -60, -121, 46, 24, 43, 43, 43, -121, 125, -60, 0, 17, 18, 57, 57, 15, 15, 15, 15, 49, 48, 1, 93, 113, 114,
-<a name="l06936"></a>06936 0, 93, 113, 114, 19, 51, 1, 1, 51, 1, 1, 35, 1, 1, 35, 1, 48, -60, 1, 36, 1, 46, -58, -2, 122,
-<a name="l06937"></a>06937 1, -102, -51, -2, -59, -2, -62, -55, 1, -103, 4, 38, -3, -76, 2, 76, -3, 44, -3, 23, 2, 101, -3, -101, 2,
-<a name="l06938"></a>06938 -29, 0, 1, 0, 122, -2, 105, 5, 57, 4, 38, 0, 28, 1, 18, -73, -76, 19, -32, 30, -1, 30, 3, 11, -72,
-<a name="l06939"></a>06939 -1, -32, -77, 11, 14, 52, 4, -72, -1, -32, 64, 35, 11, 14, 52, 18, 32, 36, 38, 52, -68, 26, -54, 26, 2,
-<a name="l06940"></a>06940 121, 18, 121, 25, 2, 9, 6, 20, 6, -110, 23, 11, 22, 14, 14, 6, 7, 6, 0, 6, 8, 21, -69, 2, 48,
-<a name="l06941"></a>06941 0, 7, 0, 22, -1, -2, -73, 13, 13, 2, 85, 22, 22, 28, 14, -72, 2, 48, -74, 15, 40, 15, 15, 2, 85,
-<a name="l06942"></a>06942 15, -72, -1, -22, 64, 11, 13, 13, 2, 85, 15, 12, 12, 12, 2, 85, 15, -72, -1, -10, 64, 33, 12, 13, 6,
-<a name="l06943"></a>06943 85, 15, 20, 15, 15, 6, 85, 15, 31, 16, 16, 6, 85, 15, 64, 50, 54, 52, -1, 15, 1, -33, 15, -1, 15,
-<a name="l06944"></a>06944 2, 15, 78, 30, 2, -70, 2, 48, 0, 28, -1, -6, 64, 11, 16, 16, 2, 85, 28, 4, 11, 12, 2, 85, 28,
-<a name="l06945"></a>06945 -72, -1, -3, -76, 11, 11, 6, 85, 28, -72, -1, -13, -76, 15, 15, 6, 85, 28, -72, -1, -64, 64, 40, 51, 54,
-<a name="l06946"></a>06946 52, -16, 28, 1, 0, 28, 32, 28, -48, 28, -32, 28, 4, 28, 78, 29, 32, 30, 111, 30, -128, 30, -80, 30, -32,
-<a name="l06947"></a>06947 30, 5, 80, 30, -128, 30, -112, 30, -64, 30, -17, 30, 5, 93, 113, 16, -12, 93, 113, 43, 43, 43, 43, 43, -19,
-<a name="l06948"></a>06948 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, -19, 18, 57, 47, 43, 60, -3, 60, 0, 63, 63, 63, 63, 63,
-<a name="l06949"></a>06949 -19, 60, 16, 60, 49, 48, 0, 93, 113, 43, 43, 43, 1, 93, 19, 51, 17, 20, 22, 22, 23, 17, 51, 17, 62,
-<a name="l06950"></a>06950 2, 53, 17, 51, 17, 20, 6, 6, 7, 17, 35, 17, 46, 3, 53, 122, -77, 48, -101, -120, -76, -125, -102, 53, -77,
-<a name="l06951"></a>06951 77, -22, -50, -76, -123, -56, -117, 46, 4, 38, -3, -12, -109, -102, 103, 7, 3, -89, -4, 89, 7, 98, -103, -103, 2,
-<a name="l06952"></a>06952 12, -3, -6, -48, -54, -105, 7, -2, -127, 1, 127, 4, 68, -107, -92, -73, 0, 0, 1, 0, 87, -1, -24, 5, -24,
-<a name="l06953"></a>06953 4, 38, 0, 36, 1, 85, 64, 73, 0, 38, 40, 30, 32, 38, 57, 30, 72, 30, 64, 38, 83, 5, 92, 18, 93,
-<a name="l06954"></a>06954 29, 83, 31, 100, 5, 107, 18, 110, 29, 97, 31, 118, 24, 122, 29, 117, 31, 122, 36, -123, 24, -119, 36, -81, 38,
-<a name="l06955"></a>06955 -16, 38, 22, 0, 38, 1, 30, 11, 6, 17, 72, 28, 6, 72, 32, 0, 11, 1, 11, 11, 32, 0, 22, 6, 0,
-<a name="l06956"></a>06956 6, 28, 11, 32, 11, 22, -69, 2, 48, 0, 23, 0, 1, 2, 48, 64, 19, 0, 23, 23, 25, 20, 0, 0, 3,
-<a name="l06957"></a>06957 35, 30, 0, 13, 16, 13, 2, 80, 13, 1, 13, -72, 2, 48, 64, 18, 10, 8, 15, 15, 6, 85, 10, 10, 35,
-<a name="l06958"></a>06958 20, 64, 25, 10, 16, 16, 2, 85, 25, -72, -1, -10, 64, 11, 12, 12, 2, 85, 25, 10, 11, 11, 2, 85, 25,
-<a name="l06959"></a>06959 -72, -1, -13, -76, 15, 15, 6, 85, 25, -72, -1, -23, -76, 12, 13, 6, 85, 25, -72, -1, -64, 64, 41, 36, 37,
-<a name="l06960"></a>06960 52, 32, 25, 48, 25, 2, 0, 25, 1, 0, 25, 16, 25, 32, 25, 48, 25, -81, 25, -16, 25, 6, 0, 25, 16,
-<a name="l06961"></a>06961 25, 32, 25, 64, 25, 96, 25, 5, 25, 49, -33, 38, 1, 38, -72, -1, -64, 64, 10, 30, 35, 52, 48, 38, 1,
-<a name="l06962"></a>06962 38, 3, 64, 35, -72, -1, -10, 64, 11, 11, 11, 2, 85, 35, 5, 16, 16, 6, 85, 35, -72, -1, -5, 64, 29,
-<a name="l06963"></a>06963 15, 15, 6, 85, 35, 24, 13, 13, 6, 85, 35, 27, 12, 12, 6, 85, 35, 64, 36, 37, 52, 31, 35, 63, 35,
-<a name="l06964"></a>06964 2, 35, 49, 37, 16, -10, 93, 43, 43, 43, 43, 43, 43, -19, 16, 113, 43, 93, -10, 93, 93, 114, 113, 43, 43,
-<a name="l06965"></a>06965 43, 43, 43, 43, -19, 18, 57, 47, 43, -19, 113, 114, 57, 17, 18, 57, 47, 17, 18, 57, 47, 16, -19, 16, -19,
-<a name="l06966"></a>06966 0, 63, 63, 63, 63, 17, 18, 57, 47, 93, 16, -19, 16, -19, 17, 18, 57, 49, 48, 1, 114, 93, 19, 51, 2,
-<a name="l06967"></a>06967 21, 20, 22, 51, 50, 54, 54, 53, 17, 51, 17, 20, 22, 22, 51, 50, 54, 53, 52, 3, 51, 18, 17, 16, 2,
-<a name="l06968"></a>06968 35, 34, 39, 6, 35, 34, 2, 53, 16, -11, -82, -107, -128, 99, 64, 112, 37, -77, 37, 113, 64, 98, -128, -108, -83,
-<a name="l06969"></a>06969 -98, -37, -86, -30, 97, 98, -30, -77, -46, 4, 38, -2, -73, -29, -81, -42, 100, -116, 126, 1, 55, -2, -55, 123, -112,
-<a name="l06970"></a>06970 99, -43, -80, -29, 1, 73, -2, -25, -2, -8, -2, -9, -2, -20, -17, -17, 1, 34, -5, 1, 8, -1, -1, -1, -47,
-<a name="l06971"></a>06971 0, 0, 2, 2, 5, -61, 2, 38, 2, 26, 0, 0, 1, 6, 0, -114, -108, 0, 0, 40, -75, 2, 1, 1, 2,
-<a name="l06972"></a>06972 2, 11, -71, 2, 34, 0, 41, 0, 43, 1, -79, 6, 2, 67, 84, 88, -75, 0, 5, 10, 1, 2, 65, 43, 27,
-<a name="l06973"></a>06973 -76, 8, 2, 0, 72, 43, 43, 89, 53, 53, -1, -1, 0, -120, -1, -24, 3, -38, 5, -61, 2, 38, 2, 35, 0,
-<a name="l06974"></a>06974 0, 1, 7, 0, -114, 0, -16, 0, 0, 0, 29, 64, 15, 2, 1, 112, 20, 1, 0, 20, 27, 0, 11, 65, 1,
-<a name="l06975"></a>06975 2, 2, 20, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 52, 0, -1, -1, 0, 68, -1, -24, 4, 39, 5,
-<a name="l06976"></a>06976 -62, 2, 38, 0, 82, 0, 0, 1, 7, 0, -115, 0, -12, 0, 0, 0, 27, 64, 14, 2, -32, 29, -16, 29, 2,
-<a name="l06977"></a>06977 29, 4, 0, 72, 43, 2, 1, 29, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 0, -1, -1, 0, -120, -1,
-<a name="l06978"></a>06978 -24, 3, -38, 5, -62, 2, 38, 2, 35, 0, 0, 1, 7, 0, -115, 0, -36, 0, 0, 0, 11, -78, 1, 1, 20,
-<a name="l06979"></a>06979 -71, 2, 34, 0, 41, 0, 43, 0, -1, -1, 0, 87, -1, -24, 5, -24, 5, -62, 2, 38, 2, 38, 0, 0, 1,
-<a name="l06980"></a>06980 7, 0, -115, 1, -32, 0, 0, 0, 22, 64, 10, 1, 0, 37, 39, 11, 12, 65, 1, 1, 37, -71, 2, 34, 0,
-<a name="l06981"></a>06981 41, 0, 43, 1, 43, 53, -1, -1, 0, -94, 0, 0, 4, -24, 6, -31, 2, 38, 0, 40, 0, 0, 1, 7, 0,
-<a name="l06982"></a>06982 -114, 1, 94, 1, 30, 0, 12, -77, 1, 2, 2, 12, -71, 2, 33, 0, 41, 0, 43, 0, 1, 0, 50, -1, -25,
-<a name="l06983"></a>06983 6, -103, 5, -70, 0, 29, 1, 24, 64, 42, 102, 4, 118, 4, -121, 4, 3, 34, 8, 25, 12, 4, 6, 23, 15,
-<a name="l06984"></a>06984 93, 14, 74, 12, 6, 30, 23, 23, 27, 2, 29, 30, 0, 2, 27, 8, 17, 30, 12, 9, 15, 74, 14, 14, 20,
-<a name="l06985"></a>06985 3, 2, -72, 2, -120, -77, 27, 20, 38, 9, -72, -1, -48, -76, 13, 13, 2, 85, 9, -72, -1, -14, -76, 11, 11,
-<a name="l06986"></a>06986 2, 85, 9, -72, -1, -10, -76, 11, 11, 6, 85, 9, -72, -1, -30, -76, 12, 12, 6, 85, 9, -72, -1, -20, 64,
-<a name="l06987"></a>06987 12, 13, 13, 6, 85, 9, 55, 31, 27, 32, 26, 26, 3, -70, 2, -120, 0, 0, -1, -32, -76, 16, 16, 2, 85,
-<a name="l06988"></a>06988 0, -72, -1, -12, -76, 15, 15, 2, 85, 0, -72, -1, -42, -76, 13, 13, 2, 85, 0, -72, -1, -22, -76, 12, 12,
-<a name="l06989"></a>06989 2, 85, 0, -72, -1, -6, -76, 11, 11, 2, 85, 0, -72, -1, -22, -76, 11, 11, 6, 85, 0, -72, -1, -10, -76,
-<a name="l06990"></a>06990 12, 12, 6, 85, 0, -72, -1, -42, -76, 13, 13, 6, 85, 0, -72, -1, -15, -74, 15, 16, 6, 85, 0, 84, 30,
-<a name="l06991"></a>06991 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, -19, 16, -10, 43, 43, 43, 43, 43, -19, 16, -19,
-<a name="l06992"></a>06992 17, 18, 57, 47, -28, 0, 63, -19, 63, 63, -3, 60, 18, 57, 47, -19, 16, -3, -19, 17, 18, 57, 18, 57, 49,
-<a name="l06993"></a>06993 48, 67, 121, 64, 24, 18, 22, 7, 11, 18, 11, 20, 54, 1, 22, 7, 20, 54, 1, 19, 10, 17, 54, 0, 21,
-<a name="l06994"></a>06994 8, 23, 54, 1, 43, 43, 1, 43, 43, -127, -127, 0, 93, 19, 33, 21, 33, 17, 54, 51, 50, 0, 21, 20, 2,
-<a name="l06995"></a>06995 35, 34, 39, 55, 22, 51, 50, 54, 53, 52, 38, 35, 34, 7, 17, 35, 17, 33, 50, 4, -110, -2, 24, -3, -69,
-<a name="l06996"></a>06996 -23, 1, 28, -23, -31, 104, -125, 31, 76, 82, -105, -101, -77, -68, -94, -26, -62, -2, 24, 5, -70, -83, -2, 56, 99,
-<a name="l06997"></a>06997 -2, -26, -53, -78, -2, -42, 33, -92, 37, -80, -122, -114, -69, 94, -3, 88, 5, 13, -1, -1, 0, -95, 0, 0, 4,
-<a name="l06998"></a>06998 85, 7, 44, 2, 38, 2, 61, 0, 0, 1, 7, 0, -115, 0, -5, 1, 106, 0, 21, 64, 9, 1, 6, 3, -89,
-<a name="l06999"></a>06999 72, 43, 1, 1, 6, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, 0, 0, 1, 0, 100, -1, -25, 5, 118, 5,
-<a name="l07000"></a>07000 -45, 0, 26, 0, -49, 64, -123, -87, 22, -76, 6, -71, 22, 3, 27, 6, 43, 6, 59, 6, 93, 25, 111, 25, 127,
-<a name="l07001"></a>07001 25, -79, 9, 7, 41, 3, 41, 9, 41, 11, 53, 3, 59, 6, 53, 9, 59, 22, 71, 3, 75, 6, 69, 9, 75,
-<a name="l07002"></a>07002 22, 86, 3, 84, 9, 86, 11, 84, 19, 106, 11, 119, 3, 121, 6, 120, 11, -121, 3, -119, 12, -88, 22, -75, 6,
-<a name="l07003"></a>07003 -56, 8, 24, 7, -29, 32, 8, 96, 8, 112, 8, -128, 8, 4, 8, 8, 10, 17, 21, 84, 20, 20, 10, 17, 26,
-<a name="l07004"></a>07004 30, 2, 2, 10, 23, 30, 17, 3, 5, 30, 10, 9, 1, 1, 8, 2, 21, 38, 20, 7, 38, 20, 98, 47, 8,
-<a name="l07005"></a>07005 1, -97, 8, 1, 8, 26, 32, 28, 1, 28, 26, 45, 2, 38, 13, -72, -1, -7, 64, 19, 16, 16, 6, 85, 13,
-<a name="l07006"></a>07006 10, 11, 11, 6, 85, 32, 13, 1, 13, 25, 27, 99, 92, 24, 43, 16, -10, 93, 43, 43, -3, -28, 16, 93, -12,
-<a name="l07007"></a>07007 93, 113, -28, -19, 16, -19, 17, 18, 57, 47, 0, 63, -19, 63, -19, 18, 57, 47, -19, 17, 18, 57, 47, -28, 17,
-<a name="l07008"></a>07008 18, 57, 47, 93, -28, 49, 48, 1, 93, 113, 0, 93, 1, 21, 33, 22, 18, 51, 32, 19, 23, 2, 33, 32, 0,
-<a name="l07009"></a>07009 19, 52, 18, 36, 51, 50, 4, 23, 7, 2, 33, 34, 2, 7, 3, 89, -3, -33, 11, -4, -59, 1, 94, 89, -69,
-<a name="l07010"></a>07010 127, -2, 27, -2, -91, -2, -83, 11, -105, 1, 56, -40, -28, 1, 51, 54, -66, 83, -2, -61, -42, -13, 12, 3, 75,
-<a name="l07011"></a>07011 -83, -9, -2, -29, 1, 116, 49, -2, 26, 1, -65, 1, 71, -56, 1, 74, -44, -30, -55, 50, 1, 51, -2, -2, -36,
-<a name="l07012"></a>07012 0, -1, -1, 0, 92, -1, -25, 4, -21, 5, -45, 2, 6, 0, 54, 0, 0, -1, -1, 0, -65, 0, 0, 1, -127,
-<a name="l07013"></a>07013 5, -70, 2, 6, 0, 44, 0, 0, -1, -1, 0, 4, 0, 0, 2, 53, 6, -31, 2, 38, 0, 44, 0, 0, 1,
-<a name="l07014"></a>07014 7, 0, -114, -1, -57, 1, 30, 0, 40, -75, 2, 1, 1, 2, 2, 11, -71, 2, 33, 0, 41, 0, 43, 1, -79,
-<a name="l07015"></a>07015 6, 2, 67, 84, 88, -75, 0, 5, 10, 1, 2, 65, 43, 27, -76, 8, 2, 0, 72, 43, 43, 89, 53, 53, -1,
-<a name="l07016"></a>07016 -1, 0, 55, -1, -25, 3, 97, 5, -70, 2, 6, 0, 45, 0, 0, 0, 2, 0, 13, -1, -25, 8, 41, 5, -70,
-<a name="l07017"></a>07017 0, 27, 0, 38, 1, 24, -78, 61, 8, 21, -72, 1, 14, 64, 17, 20, 98, 18, 1, 30, 38, 38, 11, 13, 30,
-<a name="l07018"></a>07018 27, 2, 28, 30, 11, 8, 23, -72, 2, 72, 64, 30, 18, 9, 11, 32, 0, 28, 10, 16, 16, 2, 85, 28, 36,
-<a name="l07019"></a>07019 15, 15, 2, 85, 28, 30, 13, 13, 2, 85, 28, 10, 11, 11, 6, 85, 28, -72, -1, -10, 64, 11, 12, 12, 6,
-<a name="l07020"></a>07020 85, 28, 32, 13, 13, 6, 85, 28, -72, -1, -24, 64, 19, 14, 15, 6, 85, 28, 25, 16, 16, 6, 85, -128, 28,
-<a name="l07021"></a>07021 1, 28, 28, 26, 33, 38, 6, -72, -1, -11, -76, 12, 13, 6, 85, 6, -72, -1, -64, 64, 19, 36, 37, 52, 48,
-<a name="l07022"></a>07022 6, 1, 0, 6, 16, 6, 32, 6, 3, 6, 49, 40, 14, 32, 26, -72, -1, -16, 64, 11, 16, 16, 2, 85, 26,
-<a name="l07023"></a>07023 10, 13, 13, 2, 85, 26, -72, 2, 58, 64, 17, 21, 74, 20, 12, 11, 12, 6, 85, 20, 2, 16, 16, 6, 85,
-<a name="l07024"></a>07024 20, 45, 39, 16, -10, 43, 43, -28, -12, 43, 43, -19, 16, -10, 93, 93, 43, 43, -19, 18, 57, 47, 93, 43, 43,
-<a name="l07025"></a>07025 43, 43, 43, 43, 43, 43, 60, -19, 0, 63, -19, 63, -19, 63, -19, 18, 57, 47, -19, 16, -3, -19, 49, 48, 67,
-<a name="l07026"></a>07026 121, 64, 44, 24, 36, 3, 17, 16, 38, 8, 38, 31, 37, 4, 37, 35, 38, 24, 17, 26, 44, 1, 30, 9, 33,
-<a name="l07027"></a>07027 54, 1, 36, 3, 33, 54, 1, 25, 15, 23, 44, 0, 32, 7, 29, 54, 0, 34, 5, 37, 54, 1, 43, 43, 43,
-<a name="l07028"></a>07028 1, 43, 43, 43, 43, 43, 43, 43, 43, -127, -127, 1, 17, 33, 50, 22, 22, 21, 20, 6, 6, 35, 33, 17, 33,
-<a name="l07029"></a>07029 17, 20, 6, 6, 35, 34, 39, 55, 22, 51, 50, 54, 53, 17, 1, 33, 50, 54, 54, 53, 52, 38, 38, 35, 33,
-<a name="l07030"></a>07030 4, -102, 1, 94, -13, -36, 98, -115, -55, -66, -3, -61, -3, -18, 43, -118, 106, 64, 90, 33, 48, 34, 66, 66, 3,
-<a name="l07031"></a>07031 -106, 1, -124, 106, 122, 87, 93, -99, -63, -2, -4, 5, -70, -3, -114, 111, -58, 104, -119, -43, 77, 5, 13, -3, 13,
-<a name="l07032"></a>07032 -26, -42, 119, 24, -84, 20, 99, -72, 4, 8, -6, -21, 41, 119, 96, 91, 123, 38, 0, 0, 2, 0, -92, 0, 0,
-<a name="l07033"></a>07033 7, -55, 5, -70, 0, 20, 0, 31, 1, 68, 64, 47, 43, 8, 12, 31, 19, 1, 30, 31, 31, 11, 20, 17, 2,
-<a name="l07034"></a>07034 21, 30, 14, 11, 8, 20, 11, 32, 0, 21, 32, 15, 16, 2, 85, 21, 6, 13, 13, 2, 85, 21, 32, 12, 12,
-<a name="l07035"></a>07035 2, 85, 21, 12, 11, 11, 6, 85, 21, -72, -1, -12, 64, 11, 12, 12, 6, 85, 21, 24, 13, 13, 6, 85, 21,
-<a name="l07036"></a>07036 -72, -1, -30, 64, 34, 15, 15, 6, 85, 21, 16, 16, 16, 6, 85, 21, 21, 15, 26, 38, 6, 30, 13, 13, 2,
-<a name="l07037"></a>07037 85, 6, 22, 12, 12, 2, 85, 6, 12, 11, 11, 2, 85, 6, -72, -1, -11, -76, 11, 11, 6, 85, 6, -72, -1,
-<a name="l07038"></a>07038 -14, -76, 12, 12, 6, 85, 6, -72, -1, -12, -76, 13, 13, 6, 85, 6, -72, -1, -64, 64, 26, 36, 37, 52, 48,
-<a name="l07039"></a>07039 6, 1, 0, 6, 16, 6, 32, 6, 3, 6, 49, 33, 17, 14, 32, 15, 32, 16, 16, 2, 85, 15, -72, -1, -10,
-<a name="l07040"></a>07040 -76, 15, 15, 2, 85, 15, -72, -1, -10, -76, 13, 13, 2, 85, 15, -72, -1, -6, -76, 12, 12, 2, 85, 15, -72,
-<a name="l07041"></a>07041 -1, -6, -76, 12, 12, 6, 85, 15, -72, -1, -12, -76, 13, 13, 6, 85, 15, -72, -1, -8, -76, 15, 15, 6, 85,
-<a name="l07042"></a>07042 15, -72, -1, -4, -74, 16, 16, 6, 85, 15, 93, 32, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16,
-<a name="l07043"></a>07043 -12, 93, 93, 43, 43, 43, 43, 43, 43, 43, -19, 18, 57, 47, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60,
-<a name="l07044"></a>07044 0, 63, 60, -19, 63, 60, 18, 57, 47, -3, 60, 16, 60, 49, 48, 67, 121, 64, 30, 3, 29, 8, 38, 24, 37,
-<a name="l07045"></a>07045 4, 37, 28, 38, 23, 9, 26, 54, 1, 29, 3, 26, 54, 1, 25, 7, 22, 54, 0, 27, 5, 30, 54, 1, 43,
-<a name="l07046"></a>07046 43, 1, 43, 43, 43, 43, 43, 43, -127, 1, 17, 33, 50, 22, 22, 21, 20, 6, 6, 35, 33, 17, 33, 17, 35,
-<a name="l07047"></a>07047 17, 51, 17, 33, 17, 19, 33, 50, 54, 54, 53, 52, 38, 38, 35, 35, 4, 58, 1, 70, -47, -23, -113, -105, -55,
-<a name="l07048"></a>07048 -64, -3, -49, -3, -18, -62, -62, 2, 18, -62, 1, 107, 124, 123, 93, 82, -89, -38, -20, 5, -70, -3, -114, 70, -50,
-<a name="l07049"></a>07049 -119, -113, -40, 68, 2, -95, -3, 95, 5, -70, -3, -114, 2, 114, -6, -21, 36, 121, 99, 85, 122, 45, 0, 1, 0,
-<a name="l07050"></a>07050 49, 0, 0, 6, 120, 5, -70, 0, 23, 1, 57, 64, 13, 102, 4, 119, 4, -121, 4, 3, 25, 8, 19, 12, 4,
-<a name="l07051"></a>07051 6, -72, 2, 72, 64, 12, 17, 17, 12, 2, 23, 30, 0, 2, 20, 12, 8, 2, -72, 2, -120, -77, 21, 12, 32,
-<a name="l07052"></a>07052 10, -72, -1, -44, 64, 17, 16, 16, 2, 85, 10, 10, 15, 15, 2, 85, 10, 20, 13, 13, 2, 85, 10, -72, -1,
-<a name="l07053"></a>07053 -46, 64, 11, 12, 13, 2, 85, 10, 19, 16, 16, 6, 85, 10, -72, -1, -21, -76, 13, 13, 6, 85, 10, -72, -1,
-<a name="l07054"></a>07054 -32, -76, 12, 12, 6, 85, 10, -72, -1, -42, 64, 18, 11, 11, 6, 85, 10, 64, 51, 54, 52, -1, 10, 1, -64,
-<a name="l07055"></a>07055 10, 1, 10, 78, 25, -72, -1, -64, 64, 25, 52, 54, 52, -80, 25, -16, 25, 2, 16, 25, 112, 25, -96, 25, -80,
-<a name="l07056"></a>07056 25, -1, 25, 5, 25, 21, 32, 20, 20, 3, -70, 2, -120, 0, 0, -1, -32, -76, 16, 16, 2, 85, 0, -72, -1,
-<a name="l07057"></a>07057 -38, -76, 13, 13, 2, 85, 0, -72, -1, -18, -76, 12, 12, 2, 85, 0, -72, -1, -2, 64, 11, 11, 11, 2, 85,
-<a name="l07058"></a>07058 0, 9, 16, 16, 6, 85, 0, -72, -1, -9, -76, 15, 15, 6, 85, 0, -72, -1, -39, -76, 13, 13, 6, 85, 0,
-<a name="l07059"></a>07059 -72, -1, -12, 64, 16, 12, 12, 6, 85, 0, 4, 11, 11, 6, 85, 0, 0, 1, 0, -29, 24, 16, -10, 113, 43,
-<a name="l07060"></a>07060 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, -19, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43,
-<a name="l07061"></a>07061 43, 43, 43, -19, 16, -19, 0, 63, 60, 63, -3, 60, 18, 57, 47, -19, 57, 18, 57, 49, 48, 67, 121, 64, 16,
-<a name="l07062"></a>07062 7, 16, 8, 37, 15, 38, 16, 7, 13, 54, 1, 14, 9, 17, 54, 1, 43, 1, 43, 43, 43, -127, 0, 93, 19,
-<a name="l07063"></a>07063 33, 21, 33, 17, 36, 51, 50, 22, 22, 21, 17, 35, 17, 52, 38, 38, 35, 34, 5, 17, 35, 17, 33, 49, 4,
-<a name="l07064"></a>07064 -107, -2, 23, 1, 17, -92, -97, -20, 91, -62, 54, -113, 106, -95, -2, -9, -62, -2, 22, 5, -70, -83, -2, 61, 94,
-<a name="l07065"></a>07065 -127, -32, -59, -2, 126, 1, 123, -112, -97, 90, 92, -3, 88, 5, 13, 0, -1, -1, 0, -95, 0, 0, 4, -94, 7,
-<a name="l07066"></a>07066 44, 2, 38, 2, 68, 0, 0, 1, 7, 0, -115, 1, 47, 1, 106, 0, 14, -78, 1, 1, 34, -70, 2, 33, 0,
-<a name="l07067"></a>07067 41, 1, 100, -123, 0, 43, -1, -1, 0, 10, -1, -20, 5, 15, 7, 23, 2, 38, 2, 77, 0, 0, 1, 7, 0,
-<a name="l07068"></a>07068 -39, 1, 100, 1, 95, 0, 22, 64, 10, 1, 0, 24, 18, 0, 4, 65, 1, 1, 21, -71, 2, 33, 0, 41, 0,
-<a name="l07069"></a>07069 43, 1, 43, 53, 0, 1, 0, -96, -2, 105, 5, 33, 5, -70, 0, 11, 1, 45, 64, 25, 16, 13, 1, 15, 13,
-<a name="l07070"></a>07070 32, 13, -128, 13, -32, 13, 4, 9, 6, 2, 2, 7, 30, 4, 4, 11, 8, 8, 32, 11, -72, -1, -28, 64, 11,
-<a name="l07071"></a>07071 15, 15, 2, 85, 11, 16, 12, 12, 2, 85, 11, -72, -1, -19, 64, 50, 11, 11, 6, 85, 11, 2, 12, 12, 6,
-<a name="l07072"></a>07072 85, 11, 10, 13, 13, 6, 85, 11, 25, 15, 15, 6, 85, 64, 11, 96, 11, 2, 32, 11, 79, 11, 96, 11, -112,
-<a name="l07073"></a>07073 11, -96, 11, -64, 11, 6, 32, 11, 96, 11, -64, 11, -16, 11, 4, 11, -72, 2, 20, 64, 10, 2, 7, 32, 4,
-<a name="l07074"></a>07074 36, 16, 16, 2, 85, 4, -72, -1, -25, -76, 15, 15, 2, 85, 4, -72, -1, -2, -76, 13, 13, 2, 85, 4, -72,
-<a name="l07075"></a>07075 -1, -4, 64, 25, 12, 12, 2, 85, 4, 16, 11, 11, 2, 85, 4, 14, 11, 11, 6, 85, 64, 4, -113, 4, 2,
-<a name="l07076"></a>07076 95, 4, 1, 4, -72, 2, 20, 64, 15, 1, 6, 13, 13, 2, 85, 1, 30, 2, 12, 15, 15, 2, 85, 2, -72,
-<a name="l07077"></a>07077 -1, -14, -76, 13, 13, 2, 85, 2, -72, -1, -16, -76, 11, 11, 2, 85, 2, -72, -1, -10, -76, 11, 11, 6, 85,
-<a name="l07078"></a>07078 2, -72, -1, -6, -76, 12, 12, 6, 85, 2, -72, -1, -8, -76, 13, 13, 6, 85, 2, -72, -1, -10, 64, 22, 15,
-<a name="l07079"></a>07079 15, 6, 85, 0, 2, 80, 2, -96, 2, -80, 2, -16, 2, 5, 80, 2, 1, -112, 2, 1, 2, 47, 93, 113, 114,
-<a name="l07080"></a>07080 43, 43, 43, 43, 43, 43, 43, -3, 43, -3, 93, 113, 43, 43, 43, 43, 43, 43, -19, 16, -3, 93, 113, 114, 43,
-<a name="l07081"></a>07081 43, 43, 43, 43, 43, -19, 0, 63, 60, 16, -19, 47, 63, 60, 49, 48, 1, 93, 113, 33, 17, 35, 17, 33, 17,
-<a name="l07082"></a>07082 51, 17, 33, 17, 51, 17, 3, 55, -83, -2, 22, -62, 2, -4, -61, -2, 105, 1, -105, 5, -70, -6, -13, 5, 13,
-<a name="l07083"></a>07083 -6, 70, -1, -1, -1, -3, 0, 0, 5, 89, 5, -70, 2, 6, 0, 36, 0, 0, 0, 2, 0, -89, 0, 0, 4,
-<a name="l07084"></a>07084 -8, 5, -70, 0, 14, 0, 24, 0, -28, 64, 21, 40, 8, 4, 30, 24, 24, 14, 3, 30, 0, 2, 15, 30, 14,
-<a name="l07085"></a>07085 8, 2, 2, 0, 19, 38, 9, -72, -1, -15, -76, 11, 12, 6, 85, 9, -72, -1, -8, 64, 11, 13, 13, 6, 85,
-<a name="l07086"></a>07086 9, 4, 16, 16, 6, 85, 9, -72, -1, -64, 64, 19, 36, 37, 52, 48, 9, 1, 0, 9, 16, 9, 32, 9, 3,
-<a name="l07087"></a>07087 9, 49, -33, 26, 1, 26, -72, -1, -64, 64, 17, 30, 35, 52, 48, 26, 1, 26, 3, 15, 32, 0, 32, 16, 16,
-<a name="l07088"></a>07088 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1, -10, -76, 13, 13, 2, 85, 0, -72, -1, -6, -76,
-<a name="l07089"></a>07089 12, 12, 2, 85, 0, -72, -1, -10, -76, 12, 12, 6, 85, 0, -72, -1, -18, -76, 13, 13, 6, 85, 0, -72, -1,
-<a name="l07090"></a>07090 -10, -74, 15, 16, 6, 85, 0, 93, 25, 16, -10, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, 113, 43, 93, -10,
-<a name="l07091"></a>07091 93, 93, 43, 43, 43, 43, -19, 18, 57, 47, 0, 63, -19, 63, -19, 18, 57, 47, -3, 49, 48, 67, 121, 64, 28,
-<a name="l07092"></a>07092 6, 22, 11, 38, 7, 37, 21, 38, 17, 12, 19, 54, 1, 22, 6, 19, 54, 1, 18, 10, 16, 54, 0, 20, 8,
-<a name="l07093"></a>07093 23, 54, 1, 43, 43, 1, 43, 43, 43, 43, 43, -127, 19, 33, 21, 33, 17, 33, 50, 22, 22, 21, 20, 6, 6,
-<a name="l07094"></a>07094 35, 33, 55, 33, 50, 54, 53, 52, 38, 38, 35, 33, -89, 3, -73, -3, 11, 1, 94, -62, -27, -118, 99, -60, -20,
-<a name="l07095"></a>07095 -3, -62, -62, 1, -124, -99, -99, 90, -96, -63, -2, -3, 5, -70, -83, -2, 60, 74, -51, -120, 111, -63, 122, -91, -128,
-<a name="l07096"></a>07096 -128, 91, 122, 40, 0, -1, -1, 0, -106, 0, 0, 4, -23, 5, -70, 2, 6, 0, 37, 0, 0, 0, 1, 0, -95,
-<a name="l07097"></a>07097 0, 0, 4, 85, 5, -70, 0, 5, 0, 123, 64, 23, 2, 3, 30, 1, 0, 2, 5, 8, 1, 26, 7, 3, 4,
-<a name="l07098"></a>07098 32, 5, 5, 0, 36, 16, 16, 2, 85, 0, -72, -1, -14, -76, 15, 15, 2, 85, 0, -72, -1, -22, -76, 13, 13,
-<a name="l07099"></a>07099 2, 85, 0, -72, -1, -2, -76, 12, 12, 2, 85, 0, -72, -1, -10, -76, 16, 16, 6, 85, 0, -72, -1, -12, -76,
-<a name="l07100"></a>07100 15, 15, 6, 85, 0, -72, -1, -23, -76, 13, 13, 6, 85, 0, -72, -1, -10, 64, 10, 12, 12, 6, 85, 0, 25,
-<a name="l07101"></a>07101 6, 59, -114, 24, 43, 78, 16, -12, 43, 43, 43, 43, 43, 43, 43, 43, 60, 77, 16, -3, 60, 78, 16, -26, 0,
-<a name="l07102"></a>07102 63, 63, 60, 77, -3, 60, 49, 48, 19, 33, 21, 33, 17, 35, -95, 3, -76, -3, 14, -62, 5, -70, -83, -6, -13,
-<a name="l07103"></a>07103 0, 2, 0, 0, -2, -86, 5, 35, 5, -70, 0, 13, 0, 20, 1, 18, 64, 21, 15, 22, 47, 22, 2, 15, 30,
-<a name="l07104"></a>07104 0, 2, 5, 9, 2, 19, 3, 10, 30, 7, 8, 13, 30, 16, -72, -1, -32, -76, 16, 16, 2, 85, 16, -72, -1,
-<a name="l07105"></a>07105 -14, -76, 13, 13, 2, 85, 16, -72, -1, -24, 64, 11, 11, 11, 2, 85, 16, 10, 13, 13, 6, 85, 16, -72, -1,
-<a name="l07106"></a>07106 -8, -76, 15, 15, 6, 85, 16, -72, -1, -14, 64, 11, 16, 16, 6, 85, 16, 16, 3, 9, 20, 32, 2, -72, -1,
-<a name="l07107"></a>07107 -2, -76, 12, 12, 2, 85, 2, -72, -1, -24, -76, 11, 11, 2, 85, 2, -72, -1, -10, -76, 11, 12, 6, 85, 2,
-<a name="l07108"></a>07108 -72, 2, 93, -78, 5, 30, 3, -72, -1, -32, 64, 17, 15, 15, 2, 85, 3, 34, 13, 13, 2, 85, 3, 10, 11,
-<a name="l07109"></a>07109 12, 6, 85, 3, -72, -1, -40, -76, 13, 13, 6, 85, 3, -72, -1, -16, 64, 46, 15, 15, 6, 85, 3, 10, 16,
-<a name="l07110"></a>07110 16, 6, 85, 9, 15, 3, 1, 58, 31, 3, -33, 3, 2, 15, 3, -113, 3, 2, 15, 3, -97, 3, -81, 3, -65,
-<a name="l07111"></a>07111 3, -1, 3, 5, 3, 75, 22, 19, 101, 11, 11, 8, 30, 9, -72, -1, -10, 64, 16, 11, 13, 6, 85, 9, 10,
-<a name="l07112"></a>07112 16, 16, 6, 85, 9, 31, 9, 1, 9, 21, 16, 60, 114, 16, 43, 43, -19, 57, 47, -19, 16, -10, 93, 113, 114,
-<a name="l07113"></a>07113 94, 93, 94, 43, 43, 43, 43, 43, 43, -19, -12, 43, 43, 43, -19, 17, 18, 57, 47, 43, 43, 43, 43, 43, 43,
-<a name="l07114"></a>07114 -19, 0, 63, -3, 60, 60, 60, 47, 60, 63, -19, 49, 48, 1, 93, 1, 33, 17, 51, 17, 35, 17, 33, 17, 35,
-<a name="l07115"></a>07115 17, 51, 18, 17, 37, 33, 21, 20, 2, 7, 33, 1, 35, 3, 124, -124, -83, -4, 55, -83, 114, -79, 2, -70, -2,
-<a name="l07116"></a>07116 1, 67, 98, 2, -92, 5, -70, -6, -13, -3, -3, 1, 86, -2, -86, 2, 3, 1, 11, 3, 44, 41, 75, -69, -3,
-<a name="l07117"></a>07117 119, -47, -1, -1, 0, -94, 0, 0, 4, -24, 5, -70, 2, 6, 0, 40, 0, 0, 0, 1, 0, 7, 0, 0, 7,
-<a name="l07118"></a>07118 91, 5, -69, 0, 61, 1, -90, 64, -91, -115, 24, -124, 26, -117, 38, -126, 40, 4, 47, 63, 1, 15, 63, 47, 63,
-<a name="l07119"></a>07119 64, 63, 119, 20, 112, 63, -121, 20, -128, 63, -106, 20, -106, 23, -103, 41, -103, 44, -32, 63, 12, 40, 28, 40, 35,
-<a name="l07120"></a>07120 57, 18, 56, 28, 56, 35, 56, 46, 73, 46, 104, 27, 104, 36, -120, 44, 10, 73, 18, 73, 28, 73, 35, 118, 23,
-<a name="l07121"></a>07121 118, 41, 120, 44, 6, 39, 25, 56, 58, 58, 32, 44, 46, 20, 44, 44, 46, 37, 38, 38, 32, 39, 40, 20, 39,
-<a name="l07122"></a>07122 39, 40, 5, 3, 3, 32, 20, 18, 20, 20, 20, 18, 27, 26, 26, 32, 25, 24, 20, 25, 25, 24, 58, 56, 3,
-<a name="l07123"></a>07123 5, 4, 8, 60, 44, 46, 20, 18, 4, 49, 42, 22, 42, 60, 37, 40, 27, 24, 4, 33, 37, 40, 32, 39, 27,
-<a name="l07124"></a>07124 26, 24, 3, 25, 3, 5, 18, 20, 22, 3, 31, 11, 46, 44, 42, 3, 58, 56, 32, 50, 1, 60, 30, 60, -72,
-<a name="l07125"></a>07125 2, 93, -73, 33, 33, 61, 38, 26, 32, 8, 49, -69, 2, 72, 0, 53, 0, 11, 1, 14, 64, 22, 53, 8, 123,
-<a name="l07126"></a>07126 61, 2, -97, 50, 1, 50, 45, 39, 26, 11, 11, 6, 85, 79, 39, -113, 39, 2, 39, -72, 1, 114, -74, 31, -112,
-<a name="l07127"></a>07127 11, 1, 11, 45, 25, -72, -1, -16, 64, 10, 11, 11, 6, 85, 64, 25, -128, 25, 2, 25, -72, 1, 114, 64, 12,
-<a name="l07128"></a>07128 32, 0, 31, 101, 61, 32, 12, 16, 16, 2, 85, 32, -72, -1, -8, -76, 15, 15, 2, 85, 32, -72, -1, -2, -76,
-<a name="l07129"></a>07129 12, 12, 2, 85, 32, -72, -1, -6, -76, 11, 11, 6, 85, 32, -72, -1, -2, 64, 13, 15, 15, 6, 85, -16, 32,
-<a name="l07130"></a>07130 1, 112, 32, -32, 32, 2, 32, 47, 93, 113, 43, 43, 43, 43, 43, 60, -3, 60, 16, -3, 93, 43, -28, 113, 16,
-<a name="l07131"></a>07131 -3, 93, 43, -28, 113, 0, 63, -12, 60, -19, 16, -19, 63, 60, 60, 18, 57, 47, -19, 60, 16, 60, 1, 17, 18,
-<a name="l07132"></a>07132 57, 57, 23, 57, 17, 18, 23, 57, 57, 57, 17, 23, 57, 17, 18, 57, 57, 0, 17, 23, 57, 18, 57, 57, 17,
-<a name="l07133"></a>07133 18, 23, 57, 17, 18, 23, 57, -121, 5, 46, 43, 14, 125, 16, -60, -121, 14, 46, 24, 43, 14, 125, 16, -60, -121,
-<a name="l07134"></a>07134 5, 46, 24, 43, 14, 125, 16, -60, -121, 14, 46, 24, 43, 14, 125, 16, -60, 0, 46, 46, 49, 48, 0, 93, 93,
-<a name="l07135"></a>07135 1, 93, 93, 113, 1, 17, 50, 54, 55, 62, 2, 51, 50, 23, 21, 34, 39, 38, 35, 34, 7, 6, 7, 6, 6,
-<a name="l07136"></a>07136 7, 22, 23, 1, 35, 3, 38, 38, 35, 17, 35, 17, 34, 6, 7, 7, 3, 35, 1, 54, 55, 38, 38, 39, 38,
-<a name="l07137"></a>07137 39, 38, 35, 7, 53, 54, 51, 50, 22, 22, 23, 22, 22, 23, 17, 4, 21, -113, 107, 83, 61, 79, -110, 87, 95,
-<a name="l07138"></a>07138 23, 9, 29, 32, 7, 93, 45, 46, 59, 64, 94, 89, -112, -121, 1, 46, -16, -11, 98, -122, 121, -57, 96, -109, 98,
-<a name="l07139"></a>07139 12, -11, -15, 1, 46, -118, -114, 79, 100, 69, 63, 45, 45, 89, 78, 11, 101, 96, -115, 80, 63, 84, 105, -112, 5,
-<a name="l07140"></a>07140 -70, -3, 126, 105, -62, -112, 119, 81, 2, -88, 1, 1, 45, 45, -109, -97, 115, 38, 40, -34, -2, 24, 1, -114, -98,
-<a name="l07141"></a>07141 -126, -3, 82, 2, -82, 101, -89, 20, -2, 114, 1, -24, -33, 39, 32, 107, -83, -99, 40, 40, 2, -88, 2, 79, 119,
-<a name="l07142"></a>07142 -110, -59, 100, 2, 2, -126, 0, 0, 1, 0, 78, -1, -25, 4, -126, 5, -45, 0, 38, 1, 22, 64, 83, 78, 25,
-<a name="l07143"></a>07143 -60, 3, 2, 6, 31, 57, 14, 70, 30, 101, 33, 117, 30, -91, 31, 6, 7, 25, 75, 30, 90, 30, 116, 3, 4,
-<a name="l07144"></a>07144 -64, 1, -63, 22, -53, 23, -56, 24, 4, 40, 8, 31, 11, 64, 31, 80, 31, 96, 31, 112, 31, -128, 31, 5, 31,
-<a name="l07145"></a>07145 29, 12, 23, -29, 63, 24, 79, 24, 95, 24, 127, 24, 4, 24, 24, 37, 26, 1, -29, 48, 0, 64, 0, 80, 0,
-<a name="l07146"></a>07146 3, 0, 0, 26, 37, 12, -72, 2, 72, -77, 10, 10, 37, 19, -72, 2, 72, -78, 26, 3, 4, -72, 2, 72, 64,
-<a name="l07147"></a>07147 20, 37, 9, 11, 11, 23, 16, 38, 29, 16, 11, 11, 6, 85, 29, 16, 13, 13, 6, 85, 29, -72, -1, -25, 64,
-<a name="l07148"></a>07148 14, 15, 16, 6, 85, -97, 29, -81, 29, 2, 29, 75, 7, 38, 34, -72, -1, -18, -76, 12, 12, 2, 85, 34, -72,
-<a name="l07149"></a>07149 -1, -19, 64, 17, 11, 12, 6, 85, 32, 34, 1, 34, 92, 40, 23, 38, 24, 98, 1, 38, 0, -71, 1, 49, 0,
-<a name="l07150"></a>07150 39, 16, -12, -19, -12, -19, 16, -10, 93, 43, 43, -19, -12, 93, 43, 43, 43, -19, 17, 57, 47, 0, 63, -19, 63,
-<a name="l07151"></a>07151 -19, 18, 57, 47, -19, 17, 18, 57, 47, 93, -28, 17, 18, 57, 47, 93, -28, 1, 17, 18, 57, 93, 0, 18, 57,
-<a name="l07152"></a>07152 49, 48, 67, 121, 64, 28, 35, 36, 27, 28, 17, 18, 5, 6, 18, 27, 16, 54, 1, 5, 36, 7, 54, 1, 17,
-<a name="l07153"></a>07153 28, 19, 54, 1, 6, 35, 4, 54, 0, 43, 43, 1, 43, 43, -127, -127, -127, -127, 0, 113, 93, 1, 93, 113, 19,
-<a name="l07154"></a>07154 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 35, 53, 50, 54, 54, 53, 52, 38, 35, 34, 6, 6, 21, 39, 18,
-<a name="l07155"></a>07155 33, 50, 22, 21, 20, 7, 22, 22, 21, 20, 4, 35, 32, 78, -71, 21, -73, -105, -102, -78, -68, -94, 93, -122, -114,
-<a name="l07156"></a>07156 109, -107, 127, 111, -99, 60, -70, 69, 1, -65, -41, -4, -62, 112, -105, -2, -37, -14, -2, 96, 1, -98, 48, 107, -42,
-<a name="l07157"></a>07157 -98, 112, 121, -113, -87, 31, 127, 81, 96, -114, 111, -73, 45, 42, 1, -45, -17, -96, -51, 113, 31, -65, -123, -67, -1,
-<a name="l07158"></a>07158 0, 0, 1, 0, -95, 0, 0, 5, 32, 5, -70, 0, 9, 1, 58, 64, 10, 47, 11, 1, 7, 24, 12, 28, 2,
-<a name="l07159"></a>07159 85, 2, -72, -1, -24, 64, 20, 12, 28, 2, 85, 55, 2, 56, 7, 86, 2, 89, 7, 105, 7, 118, 2, 121, 7,
-<a name="l07160"></a>07160 7, 2, -72, -1, -12, 64, 34, 16, 16, 6, 85, 7, 76, 15, 16, 6, 85, 7, 60, 12, 12, 6, 85, 7, 78,
-<a name="l07161"></a>07161 11, 11, 6, 85, 3, 7, 8, 8, 32, 2, 3, 20, 2, 2, 3, 2, -72, -1, -32, -76, 11, 11, 6, 85, 7,
-<a name="l07162"></a>07162 -72, -1, -52, 64, 20, 11, 11, 6, 85, 2, 7, 8, 3, 1, 2, 8, 6, 8, 3, 8, 6, 2, 7, 32, 4,
-<a name="l07163"></a>07163 -72, -1, -20, -76, 15, 15, 2, 85, 4, -72, -1, -18, 64, 11, 13, 13, 2, 85, 4, 18, 12, 12, 2, 85, 4,
-<a name="l07164"></a>07164 -72, -1, -4, -76, 11, 11, 6, 85, 4, -72, -1, -2, 64, 25, 12, 13, 6, 85, 4, 8, 15, 15, 6, 85, 4,
-<a name="l07165"></a>07165 57, 15, 11, 1, 11, 2, 32, 0, 36, 16, 16, 2, 85, 0, -72, -1, -10, -76, 15, 15, 2, 85, 0, -72, -1,
-<a name="l07166"></a>07166 -6, -76, 13, 13, 2, 85, 0, -72, -1, -4, -76, 12, 12, 2, 85, 0, -72, -1, -10, -76, 11, 11, 6, 85, 0,
-<a name="l07167"></a>07167 -72, -1, -6, -76, 12, 13, 6, 85, 0, -72, -1, -9, -74, 15, 15, 6, 85, 0, 57, 10, 16, -10, 43, 43, 43,
-<a name="l07168"></a>07168 43, 43, 43, 43, -19, 16, 93, -10, 43, 43, 43, 43, 43, 43, -19, 17, 18, 57, 57, 0, 63, 60, 63, 60, 18,
-<a name="l07169"></a>07169 57, 57, 43, 43, -121, 5, 46, 43, -121, 125, -60, -79, 6, 2, 67, 84, 88, 64, 12, 6, 2, 15, 7, 21, 2,
-<a name="l07170"></a>07170 91, 7, -118, 7, 5, 2, -72, -1, -32, -78, 12, 17, 52, 0, 43, 93, 89, 43, 43, 43, 43, 49, 48, 0, 93,
-<a name="l07171"></a>07171 43, 43, 1, 93, 19, 51, 17, 1, 51, 17, 35, 17, 1, 35, -95, -80, 3, 12, -61, -80, -4, -13, -62, 5, -70,
-<a name="l07172"></a>07172 -5, 119, 4, -119, -6, 70, 4, -122, -5, 122, 0, -1, -1, 0, -95, 0, 0, 5, 32, 7, 23, 2, 38, 2, 66,
-<a name="l07173"></a>07173 0, 0, 1, 7, 0, -39, 1, 120, 1, 95, 0, 22, 64, 10, 1, 0, 17, 11, 0, 4, 65, 1, 1, 14, -71,
-<a name="l07174"></a>07174 2, 33, 0, 41, 0, 43, 1, 43, 53, 0, 1, 0, -95, 0, 0, 4, -94, 5, -69, 0, 33, 1, 9, 64, 67,
-<a name="l07175"></a>07175 -117, 25, -124, 27, 2, 10, 7, 29, 7, 44, 7, 47, 35, 118, 24, -119, 7, -115, 30, 7, 58, 19, 58, 21, 56,
-<a name="l07176"></a>07176 29, 3, 6, 4, 4, 37, 21, 19, 20, 21, 21, 19, 28, 27, 27, 8, 11, 16, 6, 85, 27, 32, 26, 25, 20,
-<a name="l07177"></a>07177 26, 26, 25, 25, 28, 31, 27, 6, 4, 9, 2, 19, 21, 16, 23, 23, 2, -72, 2, 93, -77, 31, 31, 33, 16,
-<a name="l07178"></a>07178 -72, 2, 72, 64, 33, 9, 123, 0, 2, 26, 27, 27, 33, 8, 27, 28, 25, 3, 26, 6, 4, 23, 21, 19, 3,
-<a name="l07179"></a>07179 32, -112, 11, 1, 11, 45, 26, 45, 35, 1, 32, 32, 33, -72, -1, -22, -76, 16, 16, 2, 85, 33, -72, -1, -10,
-<a name="l07180"></a>07180 -76, 15, 15, 2, 85, 33, -72, -1, -6, -76, 13, 13, 2, 85, 33, -72, -1, -2, -76, 12, 12, 2, 85, 33, -72,
-<a name="l07181"></a>07181 -1, -8, -76, 11, 11, 6, 85, 33, -72, -1, -4, -76, 12, 12, 6, 85, 33, -72, -1, -12, -76, 13, 13, 6, 85,
-<a name="l07182"></a>07182 33, -72, -1, -12, -74, 15, 15, 6, 85, 33, 57, 34, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16,
-<a name="l07183"></a>07183 -10, -28, 113, 17, 23, 57, 57, 57, 18, 23, 57, 0, 63, 60, 16, 60, 63, -12, -19, 18, 57, 47, -19, 25, 57,
-<a name="l07184"></a>07184 47, 18, 57, 57, 17, 18, 57, 57, 17, 18, 57, 57, -121, 5, 46, 24, 43, 43, 14, 125, 16, -60, -121, 14, 46,
-<a name="l07185"></a>07185 24, 43, 14, 125, 16, -60, 49, 48, 0, 93, 1, 93, 113, 19, 51, 17, 50, 54, 55, 62, 2, 51, 50, 23, 21,
-<a name="l07186"></a>07186 34, 39, 38, 35, 34, 7, 6, 7, 6, 6, 7, 22, 23, 1, 35, 3, 38, 38, 35, 17, 35, -95, -62, -123, 108,
-<a name="l07187"></a>07187 84, 61, 79, -110, 88, 112, 6, 10, 29, 32, 7, 93, 45, 46, 59, 74, 102, 71, -114, -118, 1, 46, -15, -11, 101,
-<a name="l07188"></a>07188 -120, 108, -62, 5, -70, -3, 126, 103, -60, -112, 119, 81, 2, -88, 1, 1, 45, 45, -109, -70, 97, 29, 39, -33, -2,
-<a name="l07189"></a>07189 24, 1, -114, -91, 123, -3, 82, 0, 0, 1, 0, 18, -1, -25, 4, -97, 5, -70, 0, 18, 0, -17, -78, 25, 8,
-<a name="l07190"></a>07190 13, -72, 1, 14, -73, 12, 98, 10, 5, 30, 0, 2, 15, -72, 2, 72, 64, 13, 10, 9, 3, 8, 3, 32, 2,
-<a name="l07191"></a>07191 6, 16, 16, 2, 85, 2, -72, -1, -20, 64, 17, 15, 15, 2, 85, 2, 38, 13, 13, 2, 85, 2, 6, 12, 12,
-<a name="l07192"></a>07192 2, 85, 2, -72, -1, -24, -76, 11, 11, 2, 85, 2, -72, -1, -22, 64, 25, 11, 11, 6, 85, 2, 8, 13, 13,
-<a name="l07193"></a>07193 6, 85, 2, 8, 15, 15, 6, 85, 2, 93, -128, 20, 1, 20, 6, 32, 18, -72, -1, -28, -76, 16, 16, 2, 85,
-<a name="l07194"></a>07194 18, -72, -1, -8, 64, 17, 15, 15, 2, 85, 18, 2, 13, 13, 2, 85, 18, 8, 12, 12, 2, 85, 18, -72, -1,
-<a name="l07195"></a>07195 -28, 64, 11, 11, 11, 2, 85, 18, 26, 11, 11, 6, 85, 18, -72, 2, 58, 64, 9, 13, 74, 12, 6, 12, 12,
-<a name="l07196"></a>07196 6, 85, 12, -72, -1, -8, -76, 13, 13, 6, 85, 12, -72, -1, -8, -74, 15, 15, 6, 85, 12, 98, 19, 16, -10,
-<a name="l07197"></a>07197 43, 43, 43, -28, -12, 43, 43, 43, 43, 43, 43, -19, 16, 93, -10, 43, 43, 43, 43, 43, 43, 43, 43, -3, 0,
-<a name="l07198"></a>07198 63, 63, -19, 63, -19, 16, -3, -19, 49, 48, 67, 121, 64, 16, 16, 17, 7, 9, 8, 38, 16, 9, 18, 44, 1,
-<a name="l07199"></a>07199 17, 7, 15, 44, 0, 43, 1, 43, 43, -127, -127, 1, 33, 17, 35, 17, 33, 17, 20, 6, 6, 35, 34, 39, 55,
-<a name="l07200"></a>07200 22, 51, 50, 54, 53, 1, 9, 3, -106, -62, -3, -18, 43, -118, 106, 64, 90, 33, 48, 34, 66, 66, 5, -70, -6,
-<a name="l07201"></a>07201 70, 5, 13, -3, 13, -26, -42, 119, 24, -84, 20, 99, -72, 0, -1, -1, 0, -104, 0, 0, 6, 15, 5, -70, 2,
-<a name="l07202"></a>07202 6, 0, 48, 0, 0, -1, -1, 0, -92, 0, 0, 5, 34, 5, -70, 2, 6, 0, 43, 0, 0, -1, -1, 0, 99,
-<a name="l07203"></a>07203 -1, -25, 5, -35, 5, -44, 2, 6, 0, 50, 0, 0, 0, 1, 0, -96, 0, 0, 5, 33, 5, -70, 0, 7, 0,
-<a name="l07204"></a>07204 -76, -71, 0, 9, -1, -64, 64, 13, 19, 21, 52, 3, 7, 8, 5, 30, 0, 2, 3, 32, 2, -72, -1, -18, -76,
-<a name="l07205"></a>07205 15, 15, 2, 85, 2, -72, -1, -18, 64, 11, 13, 13, 2, 85, 2, 16, 12, 12, 2, 85, 2, -72, -1, -32, -76,
-<a name="l07206"></a>07206 11, 11, 6, 85, 2, -72, -1, -2, 64, 21, 12, 13, 6, 85, 2, 57, 15, 9, -128, 9, 2, 9, 6, 32, 7,
-<a name="l07207"></a>07207 32, 16, 16, 2, 85, 7, -72, -1, -10, -76, 15, 15, 2, 85, 7, -72, -1, -10, -76, 13, 13, 2, 85, 7, -72,
-<a name="l07208"></a>07208 -1, -6, 64, 11, 12, 12, 2, 85, 7, 10, 11, 11, 6, 85, 7, -72, -1, -10, -73, 12, 13, 6, 85, 32, 7,
-<a name="l07209"></a>07209 1, 7, -72, -1, -64, 64, 18, 19, 21, 52, 7, 93, 8, 32, 9, 1, 32, 9, 80, 9, 96, 9, 112, 9, 4,
-<a name="l07210"></a>07210 93, 113, 16, -10, 43, 93, 43, 43, 43, 43, 43, 43, -19, 16, 93, -10, 43, 43, 43, 43, 43, -19, 0, 63, -19,
-<a name="l07211"></a>07211 63, 60, 49, 48, 1, 43, 19, 33, 17, 35, 17, 33, 17, 35, -96, 4, -127, -61, -3, 4, -62, 5, -70, -6, 70,
-<a name="l07212"></a>07212 5, 13, -6, -13, 0, -1, -1, 0, -98, 0, 0, 4, -3, 5, -70, 2, 6, 0, 51, 0, 0, -1, -1, 0, 102,
-<a name="l07213"></a>07213 -1, -25, 5, 118, 5, -45, 2, 6, 0, 38, 0, 0, -1, -1, 0, 48, 0, 0, 4, -70, 5, -70, 2, 6, 0,
-<a name="l07214"></a>07214 55, 0, 0, 0, 1, 0, 10, -1, -20, 5, 15, 5, -70, 0, 16, 0, -73, 64, 23, 102, 2, 1, -101, 2, 1,
-<a name="l07215"></a>07215 104, 2, 1, -100, 1, -109, 3, 2, 2, 16, 2, 1, 16, 3, 1, 2, 2, -72, -1, -12, 64, 17, 13, 13, 6,
-<a name="l07216"></a>07216 85, 2, 30, 16, 0, 20, 16, 2, 3, 16, 0, 3, 2, 2, -72, -1, -12, 64, 32, 13, 13, 6, 85, 2, 30,
-<a name="l07217"></a>07217 5, 4, 20, 5, 2, 1, 5, 4, 2, 16, 5, 3, 8, 0, 11, 93, 10, 74, 8, 4, 3, 3, 1, 0, 2,
-<a name="l07218"></a>07218 13, -72, 2, 72, 64, 16, 8, 9, 16, 1, 0, 5, 3, 4, 2, 32, 10, 1, 10, -109, 0, 4, -70, 1, 92,
-<a name="l07219"></a>07219 0, 0, 1, 92, -77, 2, 2, 18, 17, 25, 17, 18, 57, 47, 24, -19, -19, 25, 16, -28, 93, 17, 18, 57, 57,
-<a name="l07220"></a>07220 18, 57, 57, 0, 24, 63, -19, 63, 60, 60, 16, 60, 16, -12, -19, 17, 18, 23, 57, -121, 8, 46, 43, 43, 5,
-<a name="l07221"></a>07221 125, 16, -60, -121, 8, 46, 24, 43, 43, 5, 125, 16, -60, -121, 8, 16, -60, 49, 48, 1, 114, 93, 0, 114, 93,
-<a name="l07222"></a>07222 19, 51, 1, 1, 51, 1, 6, 6, 35, 34, 39, 53, 22, 51, 50, 54, 55, 10, -60, 1, -34, 1, -94, -63, -3,
-<a name="l07223"></a>07223 -38, 103, -124, 123, 75, 109, 78, 87, 71, 103, 62, 5, -70, -4, 126, 3, -126, -5, -116, -42, -124, 35, -90, 45, 91,
-<a name="l07224"></a>07224 -94, 0, 3, 0, 82, 0, 0, 5, -62, 5, -58, 0, 17, 0, 24, 0, 31, 1, 7, 64, 73, 32, 33, 1, 16,
-<a name="l07225"></a>07225 33, 79, 33, 112, 33, -48, 33, -32, 33, 5, 37, 21, 43, 23, 43, 27, 37, 29, 4, 18, 123, 25, 9, 12, 19,
-<a name="l07226"></a>07226 123, 31, 30, 48, 12, 1, 111, 12, 127, 12, 2, 12, -109, 11, 25, 30, 0, 63, 3, 1, 112, 3, 1, 3, -109,
-<a name="l07227"></a>07227 1, 2, 11, 8, 28, 38, 15, 18, 15, 15, 6, 85, 15, 20, 13, 13, 6, 85, 15, -72, -1, -10, 64, 21, 11,
-<a name="l07228"></a>07228 12, 6, 85, 15, 15, 63, 15, 2, 31, 15, 111, 15, 127, 15, -113, 15, -17, 15, 5, 15, -72, 1, -61, -77, 10,
-<a name="l07229"></a>07229 22, 38, 6, -72, -1, -12, -76, 15, 15, 6, 85, 6, -72, -1, -10, 64, 27, 13, 13, 6, 85, 6, 10, 11, 12,
-<a name="l07230"></a>07230 6, 85, 0, 6, 48, 6, 2, 16, 6, 96, 6, 112, 6, -128, 6, -32, 6, 5, 6, -72, 1, -61, 64, 13, 11,
-<a name="l07231"></a>07231 19, 10, 25, 11, 2, 64, 10, 1, 10, 30, 1, 11, -72, -1, -4, 64, 11, 15, 15, 2, 85, 11, 10, 15, 15,
-<a name="l07232"></a>07232 6, 85, 11, -72, -1, -6, 64, 19, 13, 13, 6, 85, 0, 11, -112, 11, -64, 11, 3, 32, 11, 79, 11, -80, 11,
-<a name="l07233"></a>07233 3, 11, 47, 93, 114, 43, 43, 43, 60, -3, 113, 60, 16, 60, 16, 60, 16, -3, 93, 113, 43, 43, 43, -19, 16,
-<a name="l07234"></a>07234 -3, 93, 113, 43, 43, 43, -19, 0, 63, 63, -12, 93, 113, 60, -19, 16, -12, 93, 113, -3, -28, 16, 60, 16, -28,
-<a name="l07235"></a>07235 49, 48, 0, 93, 1, 93, 113, 1, 53, 51, 21, 4, 0, 21, 20, 0, 5, 21, 35, 53, 36, 0, 53, 52, 0,
-<a name="l07236"></a>07236 5, 17, 54, 54, 53, 52, 38, 37, 6, 6, 21, 20, 22, 23, 2, -80, -74, 1, 24, 1, 68, -2, -58, -2, -34,
-<a name="l07237"></a>07237 -74, -2, -4, -2, -90, 1, 89, 1, -69, -68, -40, -44, -2, -118, -75, -32, -35, -72, 5, 10, -68, -68, 15, -2, -51,
-<a name="l07238"></a>07238 -28, -33, -2, -56, 16, -67, -67, 10, 1, 41, -12, -11, 1, 38, -101, -3, 0, 9, -56, -81, -84, -55, 10, 8, -58,
-<a name="l07239"></a>07239 -79, -81, -56, 8, -1, -1, 0, 9, 0, 0, 5, 73, 5, -70, 2, 6, 0, 59, 0, 0, 0, 1, 0, -97, -2,
-<a name="l07240"></a>07240 105, 5, -90, 5, -70, 0, 11, 0, -7, 64, 23, 32, 13, -32, 13, 2, 4, 1, 2, 9, 7, 2, 30, 11, 8,
-<a name="l07241"></a>07241 3, 32, 6, 0, 15, 15, 2, 85, 6, -72, -1, -14, -76, 13, 13, 2, 85, 6, -72, -1, -10, -76, 12, 12, 2,
-<a name="l07242"></a>07242 85, 6, -72, -1, -44, -76, 16, 16, 6, 85, 6, -72, -1, -10, 64, 14, 11, 11, 6, 85, 96, 6, -128, 6, 2,
-<a name="l07243"></a>07243 6, 6, 9, 30, 7, -72, -1, -22, 64, 11, 15, 15, 2, 85, 7, 24, 12, 12, 2, 85, 7, -72, -1, -35, -76,
-<a name="l07244"></a>07244 15, 15, 6, 85, 7, -72, -1, -35, 64, 31, 13, 13, 6, 85, 7, 6, 12, 12, 6, 85, 32, 7, -97, 7, -81,
-<a name="l07245"></a>07245 7, -65, 7, 4, 7, 75, 13, 2, 32, 11, 36, 16, 16, 2, 85, 11, -72, -1, -10, -76, 15, 15, 2, 85, 11,
-<a name="l07246"></a>07246 -72, -1, -6, -76, 13, 13, 2, 85, 11, -72, -1, -2, -76, 12, 12, 2, 85, 11, -72, -1, -2, -76, 16, 16, 6,
-<a name="l07247"></a>07247 85, 11, -72, -1, -12, -76, 15, 15, 6, 85, 11, -72, -1, -12, -76, 13, 13, 6, 85, 11, -72, -1, -6, 64, 16,
-<a name="l07248"></a>07248 12, 12, 6, 85, 11, 6, 11, 11, 6, 85, 32, 11, 1, 11, 57, 12, 16, -10, 93, 43, 43, 43, 43, 43, 43,
-<a name="l07249"></a>07249 43, 43, 43, -19, 16, -10, 93, 43, 43, 43, 43, 43, -3, 57, 47, 93, 43, 43, 43, 43, 43, -19, 0, 63, -3,
-<a name="l07250"></a>07250 60, 47, 63, 60, 49, 48, 1, 93, 19, 51, 17, 33, 17, 51, 17, 51, 17, 35, 17, 33, -97, -62, 2, -4, -61,
-<a name="l07251"></a>07251 -122, -84, -5, -91, 5, -70, -6, -13, 5, 13, -6, -13, -3, -68, 1, -105, 0, 1, 0, 87, 0, 0, 4, -76, 5,
-<a name="l07252"></a>07252 -70, 0, 18, 0, -12, 64, 11, 105, 2, 121, 2, -119, 2, 3, 22, 8, 2, 4, -72, 2, 72, 64, 11, 14, 14,
-<a name="l07253"></a>07253 17, 10, 2, 1, 8, 17, 1, 32, 0, -72, -1, -8, -76, 16, 16, 2, 85, 0, -72, -1, -28, 64, 11, 15, 15,
-<a name="l07254"></a>07254 2, 85, 0, 30, 13, 13, 2, 85, 0, -72, -1, -2, -76, 12, 12, 2, 85, 0, -72, -1, -24, 64, 11, 11, 11,
-<a name="l07255"></a>07255 2, 85, 0, 6, 13, 13, 6, 85, 0, -72, -1, -4, 64, 43, 12, 12, 6, 85, 0, 93, -128, 20, 1, 20, 11,
-<a name="l07256"></a>07256 32, 8, 10, 16, 16, 2, 85, 8, 20, 15, 15, 2, 85, 8, 22, 13, 13, 2, 85, 8, 26, 12, 12, 2, 85,
-<a name="l07257"></a>07257 8, 18, 11, 11, 2, 85, 8, -72, -1, -14, 64, 26, 16, 16, 6, 85, 8, 14, 15, 15, 6, 85, 8, 12, 13,
-<a name="l07258"></a>07258 13, 6, 85, 8, 24, 12, 12, 6, 85, 32, 8, 1, 8, -72, -1, -64, 64, 18, 19, 21, 52, 8, 93, 19, 32,
-<a name="l07259"></a>07259 20, 1, 32, 20, 80, 20, 96, 20, 112, 20, 4, 93, 113, 16, -10, 43, 93, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07260"></a>07260 43, -19, 16, 93, -10, 43, 43, 43, 43, 43, 43, 43, -3, 60, 0, 63, 63, 60, 57, 47, -19, 57, 49, 48, 67,
-<a name="l07261"></a>07261 121, 64, 14, 5, 13, 6, 37, 13, 5, 11, 54, 0, 12, 7, 14, 54, 0, 43, 1, 43, 43, -127, 0, 93, 33,
-<a name="l07262"></a>07262 35, 17, 4, 35, 34, 38, 38, 53, 17, 51, 17, 20, 22, 51, 50, 55, 17, 51, 4, -76, -62, -2, -5, -60, -103,
-<a name="l07263"></a>07263 -22, 79, -62, -81, 123, -51, -30, -62, 2, 79, 97, -113, -36, -78, 1, -81, -2, 99, -16, -105, 91, 2, -55, 0, 0,
-<a name="l07264"></a>07264 1, 0, -95, 0, 0, 6, -75, 5, -70, 0, 11, 1, 34, 64, 79, 15, 13, 64, 13, 112, 13, -128, 13, -65, 13,
-<a name="l07265"></a>07265 -64, 13, -17, 13, 7, 7, 2, 30, 11, 8, 4, 4, 1, 16, 2, 32, 11, 42, 16, 16, 2, 85, 11, 14, 15,
-<a name="l07266"></a>07266 15, 2, 85, 11, 6, 13, 13, 2, 85, 11, 16, 12, 12, 2, 85, 11, 10, 11, 11, 2, 85, 11, 26, 15, 15,
-<a name="l07267"></a>07267 6, 85, 11, 15, 12, 13, 6, 85, 15, 11, 1, 79, 11, 127, 11, -113, 11, 3, 11, -72, 1, 109, -77, 6, 7,
-<a name="l07268"></a>07268 32, 10, -72, -1, -40, -76, 16, 16, 2, 85, 10, -72, -1, -18, -76, 15, 15, 2, 85, 10, -72, -1, -2, -76, 13,
-<a name="l07269"></a>07269 13, 2, 85, 10, -72, -1, -16, -76, 12, 12, 2, 85, 10, -72, -1, -32, -76, 11, 11, 2, 85, 10, -72, -1, -26,
-<a name="l07270"></a>07270 -76, 15, 15, 6, 85, 10, -72, -1, -18, 64, 18, 12, 13, 6, 85, 80, 10, 1, 0, 10, 1, 64, 10, 112, 10,
-<a name="l07271"></a>07271 -128, 10, 3, 10, -72, 1, 109, 64, 9, 6, 32, 3, 16, 16, 16, 2, 85, 3, -72, -1, -10, -76, 15, 15, 2,
-<a name="l07272"></a>07272 85, 3, -72, -1, -2, 64, 11, 12, 12, 2, 85, 3, 7, 16, 16, 6, 85, 3, -72, -1, -4, -76, 15, 15, 6,
-<a name="l07273"></a>07273 85, 3, -72, -1, -2, 64, 24, 11, 13, 6, 85, 64, 3, -112, 3, 2, 32, 3, 112, 3, -96, 3, -64, 3, -17,
-<a name="l07274"></a>07274 3, 5, 3, 112, 13, 1, 93, 47, 93, 114, 43, 43, 43, 43, 43, 43, -19, -3, 93, 113, 114, 43, 43, 43, 43,
-<a name="l07275"></a>07275 43, 43, 43, -19, 16, -3, 93, 113, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, 60, 16, 60, 47, -3, 60, 49,
-<a name="l07276"></a>07276 48, 1, 93, 19, 51, 17, 33, 17, 51, 17, 33, 17, 51, 17, 33, -95, -62, 1, -25, -62, 1, -25, -62, -7, -20,
-<a name="l07277"></a>07277 5, -70, -6, -13, 5, 13, -6, -13, 5, 13, -6, 70, 0, 1, 0, -95, -2, 105, 7, 58, 5, -70, 0, 15, 1,
-<a name="l07278"></a>07278 89, 64, 37, 64, 17, 111, 17, 112, 17, -128, 17, -96, 17, 5, 8, 4, 4, 1, 2, 13, 6, 11, 2, 30, 15,
-<a name="l07279"></a>07279 8, 12, 30, -112, 14, -96, 14, -80, 14, 3, 14, 14, 7, 32, 10, -72, -1, -40, -76, 16, 16, 2, 85, 10, -72,
-<a name="l07280"></a>07280 -1, -18, -76, 15, 15, 2, 85, 10, -72, -1, -2, -76, 13, 13, 2, 85, 10, -72, -1, -16, -76, 12, 12, 2, 85,
-<a name="l07281"></a>07281 10, -72, -1, -32, -76, 11, 11, 2, 85, 10, -72, -1, -18, -76, 16, 16, 6, 85, 10, -72, -1, -45, -76, 15, 15,
-<a name="l07282"></a>07282 6, 85, 10, -72, -1, -10, 64, 28, 12, 13, 6, 85, 10, 10, 11, 11, 6, 85, 0, 10, 80, 10, 2, 0, 10,
-<a name="l07283"></a>07283 16, 10, 2, 64, 10, 112, 10, -128, 10, 3, 10, -72, 1, 109, 64, 52, 3, 2, 32, 15, 42, 16, 16, 2, 85,
-<a name="l07284"></a>07284 15, 14, 15, 15, 2, 85, 15, 6, 13, 13, 2, 85, 15, 16, 12, 12, 2, 85, 15, 10, 11, 11, 2, 85, 15,
-<a name="l07285"></a>07285 14, 16, 16, 6, 85, 15, 40, 15, 15, 6, 85, 15, 10, 12, 12, 6, 85, 15, -72, -1, -10, 64, 15, 11, 11,
-<a name="l07286"></a>07286 6, 85, 15, 15, 1, 79, 15, 127, 15, -113, 15, 3, 15, -72, 1, 109, 64, 9, 6, 32, 3, 16, 16, 16, 2,
-<a name="l07287"></a>07287 85, 3, -72, -1, -10, -76, 15, 15, 2, 85, 3, -72, -1, -2, -76, 12, 12, 2, 85, 3, -72, -1, -14, -76, 16,
-<a name="l07288"></a>07288 16, 6, 85, 3, -72, -1, -24, 64, 30, 15, 15, 6, 85, 3, 6, 11, 13, 6, 85, 64, 3, 1, -17, 3, 1,
-<a name="l07289"></a>07289 0, 3, 32, 3, 111, 3, 112, 3, -96, 3, -17, 3, 6, 3, 47, 93, 113, 114, 43, 43, 43, 43, 43, 43, -3,
-<a name="l07290"></a>07290 -3, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, -3, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07291"></a>07291 43, 43, -3, 57, 47, 93, -19, 0, 63, -3, 60, 60, 47, 63, 60, 16, 60, 49, 48, 1, 93, 19, 51, 17, 33,
-<a name="l07292"></a>07292 17, 51, 17, 33, 17, 51, 17, 51, 17, 35, 17, 33, -95, -62, 1, -25, -62, 1, -25, -62, -123, -83, -6, 20, 5,
-<a name="l07293"></a>07293 -70, -6, -13, 5, 13, -6, -13, 5, 13, -6, -13, -3, -68, 1, -105, 0, 0, 2, 0, 0, 0, 0, 6, 15, 5,
-<a name="l07294"></a>07294 -70, 0, 12, 0, 22, 0, -53, 64, 30, 34, 8, 2, 30, 22, 22, 10, 12, 30, 0, 2, 13, 30, 10, 8, 17,
-<a name="l07295"></a>07295 38, 6, 20, 16, 16, 2, 85, 6, 12, 13, 13, 2, 85, 6, -72, -1, -10, -76, 11, 13, 6, 85, 6, -72, -1,
-<a name="l07296"></a>07296 -64, 64, 29, 36, 37, 52, 48, 6, 1, 0, 6, 16, 6, 32, 6, 3, 6, 49, 32, 24, 1, 24, 1, 13, 32,
-<a name="l07297"></a>07297 10, 24, 16, 16, 2, 85, 10, -72, -1, -10, 64, 23, 15, 15, 2, 85, 10, 6, 13, 13, 2, 85, 10, 20, 12,
-<a name="l07298"></a>07298 12, 2, 85, 10, 26, 11, 11, 2, 85, 10, -72, -1, -18, 64, 11, 11, 11, 6, 85, 10, 10, 12, 13, 6, 85,
-<a name="l07299"></a>07299 10, -72, -1, -18, 64, 9, 15, 16, 6, 85, 10, -19, 0, 0, 23, 16, 60, 16, -12, 43, 43, 43, 43, 43, 43,
-<a name="l07300"></a>07300 43, 43, -3, 60, 16, 93, -10, 93, 93, 43, 43, 43, 43, -19, 0, 63, -19, 63, -19, 18, 57, 47, -3, 49, 48,
-<a name="l07301"></a>07301 67, 121, 64, 24, 4, 20, 19, 38, 15, 8, 17, 54, 1, 20, 4, 17, 54, 1, 16, 7, 14, 54, 0, 18, 5,
-<a name="l07302"></a>07302 21, 54, 1, 43, 43, 1, 43, 43, 43, -127, 17, 33, 17, 33, 32, 18, 21, 20, 6, 33, 33, 17, 33, 1, 33,
-<a name="l07303"></a>07303 50, 54, 53, 52, 38, 38, 35, 33, 2, -128, 1, 95, 1, 89, -41, -7, -2, -43, -3, -45, -2, 66, 2, -128, 1,
-<a name="l07304"></a>07304 99, -73, -92, 97, -96, -70, -2, -3, 5, -70, -3, -114, -1, 0, -96, -72, -16, 5, 13, -5, -104, 123, -122, 91, 125,
-<a name="l07305"></a>07305 35, 0, 0, 3, 0, -88, 0, 0, 6, 107, 5, -70, 0, 10, 0, 20, 0, 24, 1, 52, 64, 18, 34, 8, 2,
-<a name="l07306"></a>07306 30, 20, 20, 10, 21, 1, 2, 11, 30, 24, 10, 8, 15, 38, 6, -72, -1, -22, -76, 15, 15, 2, 85, 6, -72,
-<a name="l07307"></a>07307 -1, -36, -76, 13, 13, 2, 85, 6, -72, -1, -50, -76, 12, 12, 2, 85, 6, -72, -1, -30, 64, 39, 13, 13, 6,
-<a name="l07308"></a>07308 85, 6, 3, 15, 15, 6, 85, 80, 6, 1, 16, 6, 32, 6, -64, 6, -48, 6, -32, 6, 5, 64, 6, 96, 6,
-<a name="l07309"></a>07309 -128, 6, -81, 6, 4, 6, 6, 10, 24, 32, 22, -72, -1, -36, -76, 16, 16, 2, 85, 22, -72, -1, -52, 64, 17,
-<a name="l07310"></a>07310 15, 15, 2, 85, 22, 46, 13, 13, 2, 85, 22, 22, 12, 12, 2, 85, 22, -72, -1, -23, -76, 11, 11, 6, 85,
-<a name="l07311"></a>07311 22, -72, -1, -8, 64, 17, 12, 12, 6, 85, 22, 8, 13, 13, 6, 85, 22, 10, 15, 15, 6, 85, 22, -72, 1,
-<a name="l07312"></a>07312 14, 64, 22, 32, 26, 48, 26, 64, 26, 80, 26, -128, 26, 5, 26, 1, 11, 32, 10, 32, 16, 16, 2, 85, 10,
-<a name="l07313"></a>07313 -72, -1, -10, -76, 15, 15, 2, 85, 10, -72, -1, -10, -76, 13, 13, 2, 85, 10, -72, -1, -6, -76, 12, 12, 2,
-<a name="l07314"></a>07314 85, 10, -72, -1, -8, -76, 13, 13, 6, 85, 10, -72, -1, -8, -74, 15, 16, 6, 85, 10, 93, 25, 16, -10, 43,
-<a name="l07315"></a>07315 43, 43, 43, 43, 43, -3, 60, 16, 93, -10, 43, 43, 43, 43, 43, 43, 43, 43, -3, 17, 57, 47, 93, 113, 114,
-<a name="l07316"></a>07316 43, 43, 43, 43, 43, -19, 0, 63, 60, -19, 63, 60, 18, 57, 47, -19, 49, 48, 67, 121, 64, 24, 4, 18, 17,
-<a name="l07317"></a>07317 38, 13, 8, 15, 54, 1, 18, 4, 15, 54, 1, 14, 7, 12, 54, 0, 16, 5, 19, 54, 1, 43, 43, 1, 43,
-<a name="l07318"></a>07318 43, 43, -127, 19, 51, 17, 33, 32, 22, 21, 20, 6, 33, 33, 55, 33, 50, 54, 53, 52, 38, 38, 35, 33, 1,
-<a name="l07319"></a>07319 51, 17, 35, -88, -62, 1, 94, 1, 88, -39, -24, -2, -59, -3, -46, -62, 1, 99, -73, -91, 100, -98, -71, -2, -4,
-<a name="l07320"></a>07320 4, 63, -62, -62, 5, -70, -3, -114, -2, -95, -86, -1, -91, 123, -121, 92, 124, 34, 3, 25, -6, 70, 0, 0, 2,
-<a name="l07321"></a>07321 0, -91, 0, 0, 4, -10, 5, -70, 0, 11, 0, 21, 0, -59, 64, 22, 37, 8, 2, 30, 21, 21, 11, 0, 2,
-<a name="l07322"></a>07322 12, 30, 11, 8, 16, 38, 7, 22, 16, 16, 2, 85, 7, -72, -1, -16, -76, 12, 12, 2, 85, 7, -72, -1, -13,
-<a name="l07323"></a>07323 -76, 11, 13, 6, 85, 7, -72, -1, -64, 64, 35, 36, 37, 52, 48, 7, 1, 0, 7, 16, 7, 32, 7, 3, 7,
-<a name="l07324"></a>07324 49, 64, 23, -128, 23, -112, 23, -81, 23, 4, 23, 1, 12, 32, 11, 32, 16, 16, 2, 85, 11, -72, -1, -10, -76,
-<a name="l07325"></a>07325 15, 15, 2, 85, 11, -72, -1, -10, -76, 13, 13, 2, 85, 11, -72, -1, -6, -76, 12, 12, 2, 85, 11, -72, -1,
-<a name="l07326"></a>07326 -10, -76, 12, 13, 6, 85, 11, -72, -1, -14, -74, 15, 16, 6, 85, 11, 93, 22, 16, -10, 43, 43, 43, 43, 43,
-<a name="l07327"></a>07327 43, -3, 60, 16, 93, -10, 93, 93, 43, 43, 43, 43, -19, 0, 63, -19, 63, 18, 57, 47, -3, 49, 48, 67, 121,
-<a name="l07328"></a>07328 64, 26, 4, 19, 5, 37, 18, 38, 14, 9, 16, 54, 1, 19, 4, 16, 54, 1, 15, 8, 13, 54, 0, 17, 6,
-<a name="l07329"></a>07329 20, 54, 1, 43, 43, 1, 43, 43, 43, 43, -127, 19, 51, 17, 33, 50, 22, 22, 21, 20, 2, 33, 33, 55, 33,
-<a name="l07330"></a>07330 50, 54, 53, 52, 38, 38, 35, 33, -91, -62, 1, 94, -11, -36, 96, -24, -2, -60, -3, -45, -62, 1, 99, -40, -125,
-<a name="l07331"></a>07331 95, -98, -67, -2, -4, 5, -70, -3, -114, 114, -60, 104, -86, -1, 0, -91, -103, 108, 88, 123, 36, 0, -1, -1, 0,
-<a name="l07332"></a>07332 74, -1, -25, 5, 92, 5, -45, 1, 83, 2, 47, 5, -64, 0, 0, -64, 0, 64, 0, 0, 29, 64, 9, 0, 13,
-<a name="l07333"></a>07333 13, 39, 16, 16, 2, 85, 13, -72, -1, -35, -74, 13, 13, 2, 85, 13, 92, 28, 78, 16, -10, 43, 43, 17, 53,
-<a name="l07334"></a>07334 0, 0, 2, 0, -92, -1, -25, 7, -83, 5, -45, 0, 18, 0, 30, 1, -68, 64, 54, 6, 21, 9, 23, 9, 27,
-<a name="l07335"></a>07335 6, 29, 21, 21, 27, 23, 27, 27, 21, 29, 37, 7, 38, 11, 43, 13, 38, 21, 42, 23, 42, 27, 37, 29, 70,
-<a name="l07336"></a>07336 20, 72, 24, 73, 26, 71, 30, 80, 21, 91, 23, 92, 27, 83, 29, 123, 14, -117, 14, -100, 4, 26, 14, -72, -1,
-<a name="l07337"></a>07337 -24, -76, 16, 17, 2, 85, 14, -72, -1, -24, -76, 13, 14, 2, 85, 14, -72, -1, -24, -76, 11, 11, 2, 85, 4,
-<a name="l07338"></a>07338 -72, -1, -24, -76, 16, 17, 2, 85, 4, -72, -1, -24, -76, 13, 14, 2, 85, 4, -72, -1, -24, 64, 49, 11, 11,
-<a name="l07339"></a>07339 2, 85, 2, 30, 16, 64, 16, 17, 2, 85, 16, 64, 13, 14, 2, 85, 16, 64, 11, 11, 2, 85, 16, 64, 11,
-<a name="l07340"></a>07340 11, 6, 85, 16, 16, 18, 0, 28, 30, 6, 3, 0, 2, 18, 8, 22, 30, 12, 9, 25, 38, 9, -72, -1, -10,
-<a name="l07341"></a>07341 -76, 16, 16, 2, 85, 9, -72, -1, -14, -76, 15, 15, 2, 85, 9, -72, -1, -18, -76, 13, 13, 2, 85, 9, -72,
-<a name="l07342"></a>07342 -1, -16, -76, 12, 12, 2, 85, 9, -72, -1, -18, -76, 11, 11, 2, 85, 9, -72, -1, -2, -76, 11, 11, 6, 85,
-<a name="l07343"></a>07343 9, -72, -1, -10, -76, 13, 13, 6, 85, 9, -72, -1, -8, 64, 15, 15, 15, 6, 85, 9, 92, -128, 32, 1, 32,
-<a name="l07344"></a>07344 19, 38, 15, 123, 3, -72, -1, -42, 64, 11, 16, 16, 2, 85, 3, 20, 15, 15, 2, 85, 3, -72, -1, -4, 64,
-<a name="l07345"></a>07345 11, 13, 13, 2, 85, 3, 4, 12, 12, 2, 85, 3, -72, -1, -24, 64, 17, 11, 11, 2, 85, 3, 26, 11, 11,
-<a name="l07346"></a>07346 6, 85, 3, 10, 12, 12, 6, 85, 3, -72, -1, -8, 64, 29, 13, 13, 6, 85, 3, 26, 15, 15, 6, 85, 32,
-<a name="l07347"></a>07347 3, 127, 3, -113, 3, 3, 3, -38, 1, 17, 32, 18, 32, 16, 16, 2, 85, 18, -72, -1, -10, -76, 15, 15, 2,
-<a name="l07348"></a>07348 85, 18, -72, -1, -10, -76, 13, 13, 2, 85, 18, -72, -1, -6, -76, 12, 12, 2, 85, 18, -72, -1, -8, -76, 15,
-<a name="l07349"></a>07349 16, 6, 85, 18, -72, -1, -10, -76, 13, 13, 6, 85, 18, -72, -1, -6, -74, 12, 12, 6, 85, 18, 93, 31, 16,
-<a name="l07350"></a>07350 -10, 43, 43, 43, 43, 43, 43, 43, -3, 60, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -12, -19, 16, 93,
-<a name="l07351"></a>07351 -12, 43, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, -19, 63, 63, 63, -19, 17, 18, 57, 47, 43, 43, 43, 43,
-<a name="l07352"></a>07352 -19, 49, 48, 43, 43, 43, 43, 43, 43, 1, 93, 19, 51, 17, 33, 18, 0, 33, 32, 0, 17, 16, 0, 33, 32,
-<a name="l07353"></a>07353 0, 3, 33, 17, 35, 1, 16, 0, 51, 50, 18, 17, 16, 2, 35, 34, 2, -92, -62, 1, 26, 21, 1, 112, 1,
-<a name="l07354"></a>07354 16, 1, 31, 1, 121, -2, -120, -2, -37, -2, -10, -2, -99, 31, -2, -30, -62, 2, -97, 1, 0, -48, -43, -2, -6,
-<a name="l07355"></a>07355 -43, -39, -5, 5, -70, -3, 110, 1, 56, 1, 115, -2, 108, -2, -90, -2, -104, -2, 106, 1, 95, 1, 54, -3, -124,
-<a name="l07356"></a>07356 2, -42, -2, -22, -2, -51, 1, 52, 1, 33, 1, 18, 1, 59, -2, -63, 0, -1, -1, 0, 26, 0, 0, 5, 38,
-<a name="l07357"></a>07357 5, -70, 1, 83, 0, 53, 5, -57, 0, 0, -64, 0, 64, 0, 0, -120, -71, 0, 15, -1, -12, -76, 11, 16, 6,
-<a name="l07358"></a>07358 85, 16, -72, -1, -12, 64, 14, 11, 16, 6, 85, 1, 0, 0, 0, 34, 16, 16, 2, 85, 0, -72, -1, -18, -76,
-<a name="l07359"></a>07359 15, 15, 2, 85, 0, -72, -1, -14, 64, 11, 13, 13, 2, 85, 0, 16, 12, 12, 2, 85, 0, -72, -1, -10, -76,
-<a name="l07360"></a>07360 11, 11, 2, 85, 0, -72, -1, -4, -76, 16, 16, 6, 85, 0, -72, -1, -16, 64, 11, 15, 15, 6, 85, 0, 2,
-<a name="l07361"></a>07361 13, 13, 6, 85, 0, -72, -1, -4, -76, 12, 12, 6, 85, 0, -72, -1, -14, 64, 13, 11, 11, 6, 85, 32, 0,
-<a name="l07362"></a>07362 1, 32, 0, 1, 0, 93, 36, 1, 16, -10, 93, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 17, 53, 53,
-<a name="l07363"></a>07363 43, 43, -1, -1, 0, 74, -1, -24, 4, 28, 4, 62, 2, 6, 0, 68, 0, 0, 0, 2, 0, 91, -1, -24, 4,
-<a name="l07364"></a>07364 68, 5, -35, 0, 28, 0, 40, 1, 19, 64, 69, 57, 10, 53, 37, 57, 39, 73, 10, 70, 37, 72, 39, 89, 14,
-<a name="l07365"></a>07365 89, 17, 85, 21, 91, 31, 81, 37, 92, 39, 12, 61, 24, 1, 9, 32, 38, 9, 35, 23, 0, 51, 1, -113, 5,
-<a name="l07366"></a>07366 28, 26, 0, 32, 28, 12, 7, 38, 28, 19, 11, 0, -110, 1, -102, 29, 36, 42, 64, 13, 13, 2, 85, 42, 64,
-<a name="l07367"></a>07367 11, 11, 2, 85, 15, -72, -1, -16, 64, 17, 16, 16, 2, 85, 15, 10, 15, 15, 2, 85, 15, 10, 13, 13, 2,
-<a name="l07368"></a>07368 85, 15, -72, -1, -10, 64, 11, 12, 12, 2, 85, 15, 4, 11, 11, 2, 85, 15, -72, -1, -16, -76, 11, 13, 6,
-<a name="l07369"></a>07369 85, 15, -72, -1, -8, -76, 15, 15, 6, 85, 15, -72, -1, -64, 64, 16, 36, 37, 52, 48, 15, 1, 0, 15, 16,
-<a name="l07370"></a>07370 15, 32, 15, 3, 15, 49, 42, -72, -1, -64, 64, 67, 30, 35, 52, 48, 42, 1, 42, -128, 42, 1, 35, 36, 23,
-<a name="l07371"></a>07371 12, 14, 15, 2, 85, 23, 18, 13, 13, 2, 85, 23, 12, 12, 12, 2, 85, 23, 28, 11, 11, 2, 85, 23, 18,
-<a name="l07372"></a>07372 11, 11, 6, 85, 23, 22, 12, 13, 6, 85, 23, 14, 16, 16, 6, 85, 23, 64, 36, 37, 52, 31, 23, 63, 23,
-<a name="l07373"></a>07373 2, 23, 49, 41, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 93, 16, 113, 43, -10, 93, 93, 43, 43,
-<a name="l07374"></a>07374 43, 43, 43, 43, 43, 43, 43, 43, -19, -12, -19, 0, 63, -19, 63, -19, 63, -19, -12, -28, 1, 17, 18, 57, 0,
-<a name="l07375"></a>07375 17, 18, 57, 49, 48, 0, 113, 1, 93, 1, 23, 14, 2, 35, 34, 6, 6, 7, 54, 54, 51, 50, 0, 21, 20,
-<a name="l07376"></a>07376 6, 6, 35, 34, 38, 2, 17, 16, 0, 33, 50, 54, 3, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3,
-<a name="l07377"></a>07377 -111, -97, 11, 73, 115, -88, -33, -94, 71, 4, 68, -74, 114, -47, 1, 18, -118, -67, -93, -67, -46, 112, 1, 29, 1,
-<a name="l07378"></a>07378 40, -72, 50, 2, -99, -113, -107, -94, -77, -125, -122, -89, 5, -35, 2, 107, 84, 24, 86, -67, -107, 101, 101, -2, -31,
-<a name="l07379"></a>07379 -11, -70, -18, -126, -83, 1, 14, 1, 79, 1, -91, 1, 36, 12, -4, 80, -90, -44, -32, -69, -71, -60, -29, 0, 0,
-<a name="l07380"></a>07380 3, 0, -120, 0, 0, 3, -16, 4, 38, 0, 15, 0, 25, 0, 35, 1, 50, 64, 54, 15, 37, 47, 37, 2, 70,
-<a name="l07381"></a>07381 8, 8, 16, 35, 8, 5, 30, 16, 43, 35, 35, 15, 25, 43, 0, 6, 26, 43, 15, 10, 21, 36, 5, 12, 12,
-<a name="l07382"></a>07382 13, 6, 85, 5, 8, 15, 15, 6, 85, 5, 22, 16, 16, 6, 85, -48, 5, 1, 5, -86, 30, 36, 11, -72, -1,
-<a name="l07383"></a>07383 -4, -76, 13, 13, 2, 85, 11, -72, -1, -18, -76, 12, 12, 6, 85, 11, -72, -1, -8, -76, 13, 13, 6, 85, 11,
-<a name="l07384"></a>07384 -72, -1, -12, 64, 11, 15, 15, 6, 85, 11, 6, 16, 16, 6, 85, 11, -72, -1, -64, 64, 19, 36, 37, 52, 48,
-<a name="l07385"></a>07385 11, 1, 0, 11, 16, 11, 32, 11, 3, 11, 49, -33, 37, 1, 37, -72, -1, -64, 64, 29, 30, 35, 52, 48, 37,
-<a name="l07386"></a>07386 1, 37, 25, 26, 37, 15, 4, 12, 12, 2, 85, 15, 10, 11, 11, 2, 85, 15, 4, 9, 9, 2, 85, 15, -72,
-<a name="l07387"></a>07387 -1, -10, 64, 11, 11, 11, 6, 85, 15, 10, 12, 12, 6, 85, 15, -72, -1, -14, -74, 15, 16, 6, 85, 15, 69,
-<a name="l07388"></a>07388 36, 16, -10, 43, 43, 43, 43, 43, 43, -3, 60, 16, 113, 43, 93, -10, 93, 93, 43, 43, 43, 43, 43, 43, -19,
-<a name="l07389"></a>07389 -12, 93, 43, 43, 43, -19, 0, 63, -19, 63, -19, 18, 57, 47, -3, 1, 17, 18, 57, 0, 17, 18, 57, 49, 48,
-<a name="l07390"></a>07390 67, 121, 64, 51, 2, 33, 19, 37, 3, 37, 32, 38, 18, 7, 21, 27, 1, 23, 2, 21, 27, 1, 28, 13, 30,
-<a name="l07391"></a>07391 27, 1, 33, 9, 30, 27, 1, 20, 6, 17, 27, 0, 7, 22, 4, 24, 27, 1, 29, 12, 27, 27, 0, 31, 10,
-<a name="l07392"></a>07392 34, 27, 1, 9, 8, 16, 60, 43, 43, 43, 60, 43, 1, 43, 43, 43, 43, 43, 43, 43, -127, 1, 93, 19, 33,
-<a name="l07393"></a>07393 50, 22, 22, 21, 20, 6, 7, 22, 22, 21, 6, 6, 35, 33, 19, 51, 50, 54, 54, 53, 52, 38, 35, 35, 17,
-<a name="l07394"></a>07394 51, 50, 54, 55, 52, 38, 38, 35, 35, -120, 1, -97, -103, -107, 107, 63, 63, 75, 99, 10, -60, -69, -2, 33, -76,
-<a name="l07395"></a>07395 -64, 115, 86, 68, 119, -112, -58, -19, -103, 114, 3, 66, 106, 117, -38, 4, 38, 51, -120, 95, 76, 113, 38, 25, -119,
-<a name="l07396"></a>07396 94, -105, -110, 2, 103, 24, 73, 51, 84, 66, -3, 3, 71, 87, 51, 87, 23, 0, 1, 0, -120, 0, 0, 2, -21,
-<a name="l07397"></a>07397 4, 38, 0, 5, 0, 100, 64, 11, 3, 43, 0, 6, 5, 10, 1, 7, 4, 37, 0, -72, -1, -10, -76, 17, 17,
-<a name="l07398"></a>07398 2, 85, 0, -72, -1, -6, 64, 17, 14, 14, 2, 85, 0, 4, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0,
-<a name="l07399"></a>07399 -72, -1, -12, -76, 16, 16, 6, 85, 0, -72, -1, -4, 64, 22, 13, 13, 6, 85, 0, 12, 12, 12, 6, 85, 0,
-<a name="l07400"></a>07400 4, 11, 11, 6, 85, 0, 0, 1, 0, 69, 6, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, 60,
-<a name="l07401"></a>07401 0, 63, 63, -19, 49, 48, 19, 33, 21, 33, 17, 35, -120, 2, 99, -2, 81, -76, 4, 38, -107, -4, 111, 0, 0,
-<a name="l07402"></a>07402 2, 0, 0, -2, -45, 4, 108, 4, 38, 0, 12, 0, 17, 1, 59, 64, 15, 13, 43, 0, 6, 5, 9, 15, 3,
-<a name="l07403"></a>07403 10, 43, 7, 10, 13, -110, 0, -72, -1, -18, 64, 11, 16, 16, 2, 85, 0, 22, 12, 12, 2, 85, 0, -72, -1,
-<a name="l07404"></a>07404 -14, -76, 11, 11, 2, 85, 0, -72, -1, -8, -76, 11, 11, 6, 85, 0, -72, -1, -22, 64, 25, 12, 12, 6, 85,
-<a name="l07405"></a>07405 -113, 0, 1, 0, 64, 15, -55, 0, 11, 16, 11, 32, 11, 3, 11, 11, 8, 9, 16, 37, 2, -72, -1, -12, 64,
-<a name="l07406"></a>07406 23, 12, 12, 6, 85, 2, 2, 16, 16, 6, 85, 15, 2, 1, 15, 2, -49, 2, 2, 2, 2, 5, 43, 3, -72,
-<a name="l07407"></a>07407 -1, -30, 64, 17, 16, 16, 2, 85, 3, 0, 15, 15, 2, 85, 3, 14, 14, 14, 2, 85, 3, -72, -1, -10, 64,
-<a name="l07408"></a>07408 11, 13, 13, 2, 85, 3, 6, 12, 12, 2, 85, 3, -72, -1, -10, 64, 17, 11, 11, 2, 85, 3, 8, 11, 11,
-<a name="l07409"></a>07409 6, 85, 3, 18, 12, 12, 6, 85, 3, -72, -1, -38, -76, 13, 13, 6, 85, 3, -72, -1, -26, -76, 15, 15, 6,
-<a name="l07410"></a>07410 85, 3, -72, -1, -11, 64, 36, 16, 16, 6, 85, 31, 3, 63, 3, -97, 3, -81, 3, -65, 3, -33, 3, -17, 3,
-<a name="l07411"></a>07411 -1, 3, 8, 79, 3, -113, 3, 2, -33, 3, 1, 3, 78, 19, 8, 43, 9, 9, -72, -1, -8, -76, 12, 13, 6,
-<a name="l07412"></a>07412 85, 9, -72, -1, -12, 64, 15, 15, 15, 6, 85, -33, 9, 1, 15, 9, 1, 31, 9, 1, 9, 18, 16, 60, 93,
-<a name="l07413"></a>07413 113, 114, 43, 43, 16, -19, 16, -10, 114, 113, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, 57, 47,
-<a name="l07414"></a>07414 93, 113, 43, 43, -19, 17, 18, 57, 47, 93, -19, -12, 93, 43, 43, 43, 43, 43, -19, 0, 63, -3, 60, 60, 47,
-<a name="l07415"></a>07415 60, 63, -19, 49, 48, 1, 33, 17, 51, 17, 35, 17, 33, 17, 35, 17, 51, 18, 19, 2, 7, 33, 17, 1, 21,
-<a name="l07416"></a>07416 2, -28, 115, -108, -4, -68, -108, 95, -66, -114, 20, -116, 2, 59, 4, 38, -4, 110, -2, 63, 1, 45, -2, -45, 1,
-<a name="l07417"></a>07417 -63, 1, 2, 1, -5, -3, -5, -8, 2, -3, -1, -1, 0, 75, -1, -24, 4, 30, 4, 62, 2, 6, 0, 72, 0,
-<a name="l07418"></a>07418 0, 0, 1, -1, -5, 0, 0, 5, 96, 4, 38, 0, 56, 1, -72, 64, 57, 39, 5, 1, 3, 18, 12, 37, 19,
-<a name="l07419"></a>07419 18, 28, 37, 16, 58, 47, 58, 63, 58, 96, 58, 112, 58, -81, 58, 10, 0, 58, 31, 58, 48, 58, 79, 58, 127,
-<a name="l07420"></a>07420 58, -128, 58, -33, 58, -17, 58, 8, 52, 22, 59, 33, -124, 22, -117, 33, -108, 22, -101, 33, 6, 53, 51, 51, -72,
-<a name="l07421"></a>07421 -1, -8, -76, 16, 16, 2, 85, 51, -72, -1, -14, 64, 74, 15, 17, 6, 85, 51, 43, 41, 39, 20, 41, 41, 39,
-<a name="l07422"></a>07422 3, 5, 5, 14, 15, 17, 6, 85, 5, 43, 14, 16, 20, 14, 14, 16, 23, 22, 22, 37, 21, 20, 20, 21, 21,
-<a name="l07423"></a>07423 20, 32, 33, 33, 37, 34, 35, 20, 34, 34, 35, 3, 5, 53, 51, 4, 8, 1, 16, 14, 39, 41, 4, 11, 18,
-<a name="l07424"></a>07424 37, 18, 1, 35, 32, 23, 20, 4, 29, 34, 55, 1, -72, 1, 12, 64, 63, 29, 26, 26, 0, 27, 46, 51, 11,
-<a name="l07425"></a>07425 48, 11, 72, 8, 8, 0, 6, 34, 33, 33, 27, 27, 22, 22, 21, 10, 37, 39, 53, 41, 51, 5, 47, 35, 33,
-<a name="l07426"></a>07426 32, 3, 28, 34, 18, 16, 14, 3, 5, 5, 10, 23, 22, 20, 3, 27, 64, 10, 1, 10, -86, -128, 21, 1, 0,
-<a name="l07427"></a>07427 21, 16, 21, 2, 21, -72, 2, 40, 64, 11, 0, 27, 37, 56, 28, 10, 15, 16, 2, 85, 28, -72, -1, -14, -76,
-<a name="l07428"></a>07428 14, 14, 2, 85, 28, -72, -1, -4, -76, 12, 12, 2, 85, 28, -72, -1, -10, -76, 11, 11, 2, 85, 28, -72, -1,
-<a name="l07429"></a>07429 -9, -76, 11, 13, 6, 85, 28, -72, -1, -8, 64, 13, 16, 16, 6, 85, -128, 28, 1, 0, 28, 16, 28, 2, 28,
-<a name="l07430"></a>07430 -72, 2, 40, 64, 29, 79, 47, 1, 47, -86, 0, 34, -112, 34, -48, 34, 3, 80, 34, -80, 34, -16, 34, 3, 112,
-<a name="l07431"></a>07431 34, -32, 34, -16, 34, 3, 34, 51, 57, 16, -11, 93, 113, 114, -28, 113, -12, 93, 113, 43, 43, 43, 43, 43, 43,
-<a name="l07432"></a>07432 60, -3, 60, -12, 93, 113, -28, 113, 18, 23, 57, 17, 23, 57, 17, 18, 23, 57, 17, 23, 57, 0, 63, 60, 16,
-<a name="l07433"></a>07433 60, 16, 60, 16, 60, 63, 60, 16, -19, 60, 16, -28, 17, 18, 57, 47, 60, -3, 60, 17, 18, 23, 57, 17, 57,
-<a name="l07434"></a>07434 57, 17, 18, 23, 57, 17, 18, 23, 57, -121, 5, 46, 43, 14, 125, 16, -60, -121, 5, 46, 24, 43, 14, 125, 16,
-<a name="l07435"></a>07435 -60, -121, 14, 46, 24, 43, 43, 14, 125, 16, -60, -121, 14, 46, 24, 43, 43, 43, 14, 125, 16, -60, 49, 48, 1,
-<a name="l07436"></a>07436 113, 113, 93, 0, 93, 1, 17, 50, 54, 55, 54, 55, 54, 51, 51, 21, 39, 34, 7, 6, 7, 6, 6, 7, 22,
-<a name="l07437"></a>07437 23, 19, 35, 3, 38, 38, 35, 17, 35, 17, 34, 6, 7, 3, 35, 19, 54, 55, 38, 38, 39, 38, 39, 38, 35,
-<a name="l07438"></a>07438 34, 7, 53, 51, 50, 22, 22, 23, 22, 22, 51, 17, 3, 9, 86, 70, 67, 63, 50, 49, 107, 66, 49, 72, 20,
-<a name="l07439"></a>07439 21, 43, 40, 68, 72, 117, 111, -58, -58, -63, 59, 88, 61, -72, 60, 88, 59, -63, -58, -59, 112, 117, 80, 64, 64,
-<a name="l07440"></a>07440 22, 25, 26, 51, 13, 40, 25, 104, 85, 67, 54, 66, 69, 87, 4, 38, -2, 53, 66, -97, -105, 42, 41, -107, 1,
-<a name="l07441"></a>07441 21, 22, 109, 104, 80, 33, 31, -71, -2, -73, 1, 73, 100, 62, -2, 21, 1, -21, 61, 101, -2, -73, 1, 73, -71,
-<a name="l07442"></a>07442 31, 37, 87, -92, 55, 13, 13, 1, -107, 25, 81, -128, -99, 68, 1, -53, 0, 0, 1, 0, 50, -1, -24, 3, 98,
-<a name="l07443"></a>07443 4, 62, 0, 38, 1, 10, 64, 93, -44, 9, 1, 16, 40, 85, 29, -128, 9, -124, 12, -126, 29, 5, 8, 25, 1,
-<a name="l07444"></a>07444 59, 8, 18, 0, 1, 26, -113, 0, 27, 80, 27, 96, 27, 112, 27, -80, 27, 5, -48, 27, 1, 27, 27, 30, 0,
-<a name="l07445"></a>07445 11, -113, 15, 10, 127, 10, 2, 10, 10, 8, 64, 1, 1, 1, 72, -112, 0, -96, 0, 2, 0, 0, 24, 8, 72,
-<a name="l07446"></a>07446 13, 7, 30, 72, 24, 11, 18, 16, 33, 1, 1, 5, 10, -55, 11, -113, 27, -55, 26, 5, 36, 16, -113, 33, 36,
-<a name="l07447"></a>07447 21, -72, -1, -16, -76, 16, 16, 2, 85, 21, -72, -1, -64, 64, 17, 36, 37, 52, 48, 21, 1, 0, 21, 16, 21,
-<a name="l07448"></a>07448 32, 21, 3, 21, 49, 40, 26, -72, -1, -16, 64, 13, 16, 16, 2, 85, 64, 26, 1, -113, 26, -80, 26, 2, 26,
-<a name="l07449"></a>07449 -71, 2, 91, 0, 39, 16, -26, 93, 113, 43, 16, -10, 93, 93, 43, 43, -19, -12, -19, 16, -19, -12, -3, 17, 57,
-<a name="l07450"></a>07450 47, 17, 18, 57, 0, 63, -19, 63, -19, 18, 57, 47, 93, -19, 113, 17, 57, 47, 93, -28, 17, 18, 57, 47, 113,
-<a name="l07451"></a>07451 93, -28, 17, 18, 57, 49, 48, 67, 121, 64, 42, 31, 36, 19, 23, 14, 15, 6, 7, 35, 38, 7, 14, 5, 27,
-<a name="l07452"></a>07452 1, 31, 23, 33, 27, 1, 36, 19, 33, 27, 3, 6, 15, 8, 27, 1, 32, 22, 30, 27, 0, 34, 20, 37, 27,
-<a name="l07453"></a>07453 1, 19, 18, 16, 60, 43, 43, 43, 1, 43, 43, 43, 43, -127, -127, -127, -127, 0, 93, 1, 93, 113, 1, 53, 62,
-<a name="l07454"></a>07454 2, 53, 52, 38, 35, 34, 7, 39, 18, 33, 50, 22, 21, 20, 7, 22, 22, 21, 20, 6, 35, 32, 3, 55, 22,
-<a name="l07455"></a>07455 22, 51, 50, 54, 53, 52, 38, 38, 35, 34, 1, 114, 114, 83, 74, 97, 77, -104, 61, -85, 80, 1, 50, -86, -63,
-<a name="l07456"></a>07456 126, 80, 80, -48, -69, -2, -107, 58, -87, 23, -115, 91, 91, 121, 76, 86, 113, 9, 1, -32, -115, 1, 16, 80, 60,
-<a name="l07457"></a>07457 73, 87, -77, 28, 1, 43, -70, -127, -126, 77, 43, -123, 91, -113, -78, 1, 67, 36, 102, 112, 103, 80, 62, 92, 23,
-<a name="l07458"></a>07458 0, 0, 1, 0, -121, 0, 0, 3, -16, 4, 38, 0, 9, 1, 82, 64, 17, 25, 3, 20, 8, 2, 86, 2, 103,
-<a name="l07459"></a>07459 2, 123, 7, -124, 2, -115, 7, 5, 2, -72, -1, -22, 64, 11, 9, 17, 2, 85, 7, 22, 9, 17, 2, 85, 2,
-<a name="l07460"></a>07460 -72, -1, -22, 64, 57, 9, 17, 6, 85, 7, 22, 9, 17, 6, 85, 3, 7, 8, 8, 43, 2, 3, 20, 2, 2,
-<a name="l07461"></a>07461 3, 2, 7, 8, 3, 1, 6, 8, 6, 10, 7, 37, 11, 64, 16, 16, 2, 85, 11, 64, 11, 11, 2, 85, 4,
-<a name="l07462"></a>07462 36, 16, 17, 2, 85, 4, 18, 14, 14, 2, 85, 4, -72, -1, -19, 64, 29, 13, 13, 2, 85, 4, 6, 12, 12,
-<a name="l07463"></a>07463 2, 85, 4, 26, 11, 11, 2, 85, 4, 22, 16, 16, 6, 85, 4, 6, 15, 15, 6, 85, 4, -72, -1, -12, -76,
-<a name="l07464"></a>07464 12, 13, 6, 85, 4, -72, -1, -4, 64, 18, 11, 11, 6, 85, 4, 64, 51, 54, 52, -1, 4, 1, -1, 4, 1,
-<a name="l07465"></a>07465 4, 78, 11, -72, -1, -64, 64, 23, 52, 54, 52, -80, 11, -16, 11, 2, 112, 11, -128, 11, -96, 11, -80, 11, -64,
-<a name="l07466"></a>07466 11, 5, 11, 2, 37, 9, -72, -1, -6, -76, 16, 16, 2, 85, 9, -72, -1, -6, 64, 11, 14, 14, 2, 85, 9,
-<a name="l07467"></a>07467 6, 11, 12, 2, 85, 9, -72, -1, -6, 64, 11, 15, 15, 6, 85, 9, 4, 11, 11, 6, 85, 9, -72, -1, -64,
-<a name="l07468"></a>07468 64, 18, 51, 54, 52, -16, 9, 1, 0, 9, 32, 9, -48, 9, -32, 9, 4, 9, 78, 10, 16, -10, 93, 113, 43,
-<a name="l07469"></a>07469 43, 43, 43, 43, 43, -19, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07470"></a>07470 -19, -79, 6, 2, 67, 84, 88, -77, 3, 8, 7, 2, 17, 18, 57, 57, 27, -77, 3, 8, 6, 2, 17, 18, 57,
-<a name="l07471"></a>07471 57, 89, 0, 63, 60, 63, 60, 18, 57, 57, -121, 5, 46, 43, -121, 125, -60, 0, 43, 43, 43, 43, 49, 48, 0,
-<a name="l07472"></a>07472 93, 1, 93, 19, 51, 17, 1, 51, 17, 35, 17, 1, 35, -121, -76, 1, -13, -62, -76, -2, 13, -62, 4, 38, -4,
-<a name="l07473"></a>07473 -42, 3, 42, -5, -38, 3, 37, -4, -37, 0, -1, -1, 0, -121, 0, 0, 3, -16, 5, -72, 2, 38, 2, 98, 0,
-<a name="l07474"></a>07474 0, 1, 7, 0, -39, 0, -10, 0, 0, 0, 22, 64, 10, 1, 0, 17, 11, 0, 4, 65, 1, 1, 14, -71, 2,
-<a name="l07475"></a>07475 34, 0, 41, 0, 43, 1, 43, 53, 0, 1, 0, -122, 0, 0, 3, -112, 4, 38, 0, 29, 1, 62, 64, 75, 62,
-<a name="l07476"></a>07476 5, 63, 6, 63, 7, 68, 5, 68, 23, -108, 23, 6, 13, 6, 47, 4, 44, 5, 47, 6, 47, 31, 76, 6, 94,
-<a name="l07477"></a>07477 6, 122, 7, -117, 7, -106, 6, 10, 75, 4, 75, 6, -101, 4, -101, 6, -85, 4, -85, 6, -69, 4, -69, 6, -53,
-<a name="l07478"></a>07478 4, -53, 6, 10, 31, 31, 63, 31, 123, 4, 123, 6, -113, 4, -113, 6, 6, 4, 17, 6, 15, 24, 23, 23, -72,
-<a name="l07479"></a>07479 -1, -16, 64, 27, 12, 13, 6, 85, 23, 37, 22, 21, 20, 22, 22, 21, 6, 4, 9, 2, 17, 15, 4, 6, 4,
-<a name="l07480"></a>07480 12, 21, 24, 28, 19, 2, -72, 1, 12, 64, 42, 27, 27, 22, 1, 12, 72, 9, 9, 1, 6, 28, 23, 23, 22,
-<a name="l07481"></a>07481 10, 4, 6, 19, 17, 15, 5, 11, 24, 21, 23, 3, 28, 11, -86, 0, 22, 1, 22, 73, 32, 31, 1, 31, 1,
-<a name="l07482"></a>07482 28, 37, 0, -72, -1, -8, -76, 16, 16, 2, 85, 0, -72, -1, -6, 64, 17, 14, 14, 2, 85, 0, 6, 12, 12,
-<a name="l07483"></a>07483 2, 85, 0, 6, 11, 11, 2, 85, 0, -72, -1, -6, -76, 12, 12, 6, 85, 0, -72, -1, -4, -76, 13, 13, 6,
-<a name="l07484"></a>07484 85, 0, -72, -1, -16, -76, 15, 15, 6, 85, 0, -72, -1, -10, -76, 16, 16, 6, 85, 0, -72, -1, -64, 64, 18,
-<a name="l07485"></a>07485 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 30, 16, -12, 93, 113, 43, 43, 43,
-<a name="l07486"></a>07486 43, 43, 43, 43, 43, 43, -3, 60, 16, 93, -11, 93, -28, 18, 23, 57, 17, 23, 57, 0, 63, 60, 16, 60, 63,
-<a name="l07487"></a>07487 60, 16, -19, 17, 18, 57, 47, -19, 57, 18, 57, 57, 18, 23, 57, 17, 18, 57, 57, -121, 5, 46, 43, 43, 14,
-<a name="l07488"></a>07488 125, 16, -60, 1, 17, 51, 17, 51, 93, 113, 49, 48, 1, 93, 113, 19, 51, 17, 50, 54, 55, 62, 2, 51, 51,
-<a name="l07489"></a>07489 21, 39, 34, 7, 6, 7, 6, 6, 7, 22, 23, 19, 35, 3, 38, 38, 35, 17, 35, -122, -76, 86, 69, 67, 53,
-<a name="l07490"></a>07490 66, 86, 95, 36, 50, 71, 20, 21, 43, 41, 68, 71, 116, 112, -59, -58, -64, 59, 88, 61, -76, 4, 38, -2, 53,
-<a name="l07491"></a>07491 66, -97, 126, 80, 28, -107, 1, 21, 22, 109, 104, 80, 33, 31, -71, -2, -73, 1, 73, 99, 63, -2, 21, 0, 0,
-<a name="l07492"></a>07492 1, 0, 24, -1, -7, 4, 35, 4, 38, 0, 18, 1, 70, 64, 22, 28, 8, 5, 43, 0, 6, 3, 51, 12, 14,
-<a name="l07493"></a>07493 28, 10, 10, 3, 37, 20, 64, 11, 11, 2, 85, 2, -72, -1, -52, 64, 11, 16, 16, 2, 85, 2, 40, 15, 15,
-<a name="l07494"></a>07494 2, 85, 2, -72, -1, -6, 64, 11, 14, 14, 2, 85, 2, 20, 13, 13, 2, 85, 2, -72, -1, -14, 64, 11, 12,
-<a name="l07495"></a>07495 12, 2, 85, 2, 10, 11, 11, 2, 85, 2, -72, -1, -20, -76, 9, 9, 2, 85, 2, -72, -1, -15, -76, 11, 12,
-<a name="l07496"></a>07496 6, 85, 2, -72, -1, -10, 64, 27, 13, 13, 6, 85, 2, 4, 15, 15, 6, 85, 2, 16, 16, 16, 6, 85, 2,
-<a name="l07497"></a>07497 64, 51, 54, 52, -1, 2, 1, 2, 78, 20, -72, -1, -64, 64, 25, 52, 54, 52, -80, 20, -16, 20, 2, 64, 20,
-<a name="l07498"></a>07498 96, 20, 112, 20, -96, 20, -80, 20, -64, 20, 6, 20, 5, 37, 18, -72, -1, -10, -76, 17, 17, 2, 85, 18, -72,
-<a name="l07499"></a>07499 -1, -48, 64, 17, 16, 16, 2, 85, 18, 22, 15, 15, 2, 85, 18, 22, 13, 13, 2, 85, 18, -72, -1, -26, -76,
-<a name="l07500"></a>07500 12, 12, 2, 85, 18, -72, -1, -20, -76, 11, 11, 2, 85, 18, -72, -1, -18, -76, 12, 12, 6, 85, 18, -72, -1,
-<a name="l07501"></a>07501 -14, -76, 13, 13, 6, 85, 18, -72, -1, -32, 64, 22, 15, 16, 6, 85, 79, 18, 95, 18, 111, 18, 112, 18, -33,
-<a name="l07502"></a>07502 18, 5, 18, -69, 12, 12, 20, 19, 124, -71, 1, 10, 0, 24, 43, 17, 18, 57, 47, -12, 93, 43, 43, 43, 43,
-<a name="l07503"></a>07503 43, 43, 43, 43, 43, -19, 16, 93, 113, 43, -10, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07504"></a>07504 -19, 0, 63, -19, 16, -28, 63, -19, 49, 48, 67, 121, 64, 18, 15, 17, 7, 9, 8, 38, 16, 37, 15, 9, 18,
-<a name="l07505"></a>07505 27, 1, 17, 7, 14, 27, 0, 43, 1, 43, 43, 43, -127, -127, 19, 33, 17, 35, 17, 33, 17, 20, 6, 6, 35,
-<a name="l07506"></a>07506 34, 39, 53, 51, 50, 54, 54, 53, -33, 3, 68, -77, -2, 35, 24, 108, 102, 63, 82, 79, 56, 48, 16, 4, 38,
-<a name="l07507"></a>07507 -5, -38, 3, -111, -3, -17, -71, 118, 88, 8, -106, 23, 50, -118, 0, 1, 0, -116, 0, 0, 4, -12, 4, 38, 0,
-<a name="l07508"></a>07508 12, 1, -120, -74, 7, 28, 10, 13, 2, 85, 2, -72, -1, -28, 64, 118, 10, 12, 2, 85, 14, 2, -75, 10, -59,
-<a name="l07509"></a>07509 10, 3, 18, 2, 27, 7, 2, 4, 1, 12, 3, 3, 8, 12, 9, 70, 1, 74, 3, 69, 8, 74, 9, 86, 8,
-<a name="l07510"></a>07510 90, 9, -124, 1, -113, 3, -127, 8, -113, 9, -48, 1, -33, 3, -48, 8, -33, 9, -11, 8, -6, 9, 20, 8, 9,
-<a name="l07511"></a>07511 25, 2, 27, 9, 120, 2, 120, 9, -120, 9, -108, 1, -101, 3, -108, 8, -101, 9, -92, 1, -85, 3, -76, 1, -69,
-<a name="l07512"></a>07512 3, -74, 8, -60, 1, -53, 3, -58, 8, 18, 5, 8, 10, 9, 20, 1, 26, 3, 22, 8, 27, 9, -107, 1, -103,
-<a name="l07513"></a>07513 2, -102, 3, -107, 8, -98, 9, 11, 1, -72, -1, -10, 64, 21, 1, 10, 9, 9, 11, 10, 12, 6, 85, 9, 43,
-<a name="l07514"></a>07514 2, 1, 20, 2, 2, 1, 3, 7, 8, 8, -72, -1, -20, -76, 10, 12, 6, 85, 8, -72, -1, -11, 64, 39, 13,
-<a name="l07515"></a>07515 13, 6, 85, 8, 43, 2, 3, 20, 2, 2, 3, 10, 7, 2, 3, 11, 3, 1, 6, 11, 9, 9, 8, 8, 6,
-<a name="l07516"></a>07516 10, 2, 9, 8, 1, 3, 5, 6, 11, 6, 7, 37, 4, -72, -1, -28, 64, 11, 16, 16, 2, 85, 4, 28, 14,
-<a name="l07517"></a>07517 14, 2, 85, 4, -72, -1, -20, -76, 12, 12, 2, 85, 4, -72, -1, -6, -76, 12, 12, 6, 85, 4, -72, -1, -2,
-<a name="l07518"></a>07518 64, 33, 13, 13, 6, 85, 4, 8, 15, 15, 6, 85, 4, 32, 16, 17, 6, 85, 4, 78, -128, 14, -80, 14, -64,
-<a name="l07519"></a>07519 14, 3, 14, 63, 14, 1, 11, 10, 37, 0, -72, -1, -6, 64, 11, 16, 16, 2, 85, 0, 6, 11, 12, 2, 85,
-<a name="l07520"></a>07520 0, -72, -1, -2, -76, 12, 12, 6, 85, 0, -72, -1, -12, 64, 12, 15, 17, 6, 85, 0, 0, 32, 0, 2, 0,
-<a name="l07521"></a>07521 78, 13, 16, -10, 93, 43, 43, 43, 43, -3, 60, 93, 16, 93, -10, 43, 43, 43, 43, 43, 43, 43, -3, 60, 17,
-<a name="l07522"></a>07522 18, 23, 57, 0, 63, 60, 16, 60, 16, 60, 63, 60, 18, 23, 57, -121, 5, 46, 43, 43, 43, -121, 125, -60, -121,
-<a name="l07523"></a>07523 46, 24, 43, 43, -121, 125, -60, 49, 48, 1, 56, 1, 114, 93, 113, 0, 114, 93, 43, 43, 19, 33, 1, 1, 33,
-<a name="l07524"></a>07524 17, 35, 17, 1, 35, 1, 17, 35, -116, 1, 24, 1, 23, 1, 54, 1, 3, -76, -2, -58, -95, -2, -41, -80, 4,
-<a name="l07525"></a>07525 38, -4, -82, 3, 82, -5, -38, 3, 87, -4, -87, 3, -128, -4, -128, 0, 0, 1, 0, -120, 0, 0, 3, -29, 4,
-<a name="l07526"></a>07526 38, 0, 11, 0, -4, 64, 25, -48, 13, -32, 13, 2, 2, 43, 9, 9, 4, 1, 6, 10, 7, 10, 4, 7, 37,
-<a name="l07527"></a>07527 13, 64, 11, 11, 2, 85, 5, -72, -1, -20, 64, 11, 16, 16, 2, 85, 5, 22, 14, 14, 2, 85, 5, -72, -1,
-<a name="l07528"></a>07528 -20, 64, 17, 13, 13, 2, 85, 5, 8, 12, 12, 2, 85, 5, 34, 11, 11, 2, 85, 5, -72, -1, -10, 64, 30,
-<a name="l07529"></a>07529 11, 13, 6, 85, 5, 10, 15, 15, 6, 85, 5, 22, 16, 16, 6, 85, 5, 64, 51, 54, 52, -1, 5, 1, -1,
-<a name="l07530"></a>07530 5, 1, 5, 78, 13, -72, -1, -64, 64, 22, 52, 54, 52, -80, 13, -16, 13, 2, 112, 13, -96, 13, -80, 13, -64,
-<a name="l07531"></a>07531 13, 4, 13, 1, 10, 37, 0, -72, -1, -10, -76, 17, 17, 2, 85, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0,
-<a name="l07532"></a>07532 -72, -1, -6, 64, 23, 14, 14, 2, 85, 0, 4, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0, 3, 11, 11,
-<a name="l07533"></a>07533 6, 85, 0, -72, -1, -10, -76, 15, 15, 6, 85, 0, -72, -1, -64, 64, 20, 51, 54, 52, -16, 0, 1, 0, 0,
-<a name="l07534"></a>07534 32, 0, -48, 0, -32, 0, -16, 0, 5, 0, 78, 12, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -3,
-<a name="l07535"></a>07535 60, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, 60, 0, 63, 60, 63, 60,
-<a name="l07536"></a>07536 57, 47, -19, 49, 48, 1, 93, 19, 51, 17, 33, 17, 51, 17, 35, 17, 33, 17, 35, -120, -76, 1, -13, -76, -76,
-<a name="l07537"></a>07537 -2, 13, -76, 4, 38, -2, 70, 1, -70, -5, -38, 1, -41, -2, 41, 0, -1, -1, 0, 68, -1, -24, 4, 39, 4,
-<a name="l07538"></a>07538 62, 2, 6, 0, 82, 0, 0, 0, 1, 0, -120, 0, 0, 3, -50, 4, 38, 0, 7, 1, 11, 64, 16, 4, 43,
-<a name="l07539"></a>07539 0, 6, 6, 3, 10, 3, 37, 9, 64, 11, 11, 2, 85, 1, -72, -1, -5, 64, 17, 16, 16, 2, 85, 1, 12,
-<a name="l07540"></a>07540 15, 15, 2, 85, 1, 22, 14, 14, 2, 85, 1, -72, -1, -8, 64, 17, 13, 13, 2, 85, 1, 16, 12, 12, 2,
-<a name="l07541"></a>07541 85, 1, 38, 11, 11, 2, 85, 1, -72, -1, -8, -76, 12, 12, 6, 85, 1, -72, -1, -6, 64, 32, 13, 13, 6,
-<a name="l07542"></a>07542 85, 1, 14, 15, 15, 6, 85, 1, 24, 16, 16, 6, 85, 1, 64, 51, 54, 52, -1, 1, 1, -33, 1, -1, 1,
-<a name="l07543"></a>07543 2, 1, 78, 9, -72, -1, -64, 64, 23, 52, 54, 52, -80, 9, -16, 9, 2, 31, 9, 112, 9, -96, 9, -80, 9,
-<a name="l07544"></a>07544 -64, 9, 5, 9, 6, 37, 0, -72, -1, -10, -76, 17, 17, 2, 85, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0,
-<a name="l07545"></a>07545 -72, -1, -6, 64, 17, 14, 14, 2, 85, 0, 4, 12, 12, 2, 85, 0, 10, 11, 11, 2, 85, 0, -72, -1, -2,
-<a name="l07546"></a>07546 -76, 12, 12, 6, 85, 0, -72, -1, -8, -76, 15, 15, 6, 85, 0, -72, -1, -4, -76, 16, 16, 6, 85, 0, -72,
-<a name="l07547"></a>07547 -1, -64, 64, 18, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 8, 16, -10, 93,
-<a name="l07548"></a>07548 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07549"></a>07549 43, 43, 43, 43, 43, -3, 0, 63, 60, 63, -19, 49, 48, 19, 33, 17, 35, 17, 33, 17, 35, -120, 3, 70, -76,
-<a name="l07550"></a>07550 -2, 34, -76, 4, 38, -5, -38, 3, -111, -4, 111, -1, -1, 0, -121, -2, 105, 4, 33, 4, 62, 2, 6, 0, 83,
-<a name="l07551"></a>07551 0, 0, -1, -1, 0, 80, -1, -24, 3, -19, 4, 62, 2, 6, 0, 70, 0, 0, 0, 1, 0, 38, 0, 0, 3,
-<a name="l07552"></a>07552 -123, 4, 38, 0, 7, 0, -102, 64, 19, 47, 9, 48, 9, 64, 9, 95, 9, -96, 9, 5, 2, 7, 43, 0, 6,
-<a name="l07553"></a>07553 5, 10, 7, -69, 1, 87, 0, 4, 0, 2, 1, 87, -78, 4, 37, 5, -72, -1, -10, 64, 11, 16, 16, 2, 85,
-<a name="l07554"></a>07554 5, 10, 15, 15, 2, 85, 5, -72, -1, -12, -76, 13, 13, 2, 85, 5, -72, -1, -10, -76, 11, 11, 2, 85, 5,
-<a name="l07555"></a>07555 -72, -1, -18, -76, 11, 11, 6, 85, 5, -72, -1, -8, -76, 12, 12, 6, 85, 5, -72, -1, -5, 64, 38, 13, 13,
-<a name="l07556"></a>07556 6, 85, 5, 6, 16, 16, 6, 85, 0, 5, 16, 5, 80, 5, -80, 5, -64, 5, 5, 0, 5, 80, 5, 96, 5,
-<a name="l07557"></a>07557 -96, 5, -80, 5, 5, 0, 5, -96, 5, 2, 5, 47, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43, 43, -19, -19,
-<a name="l07558"></a>07558 16, -19, 0, 63, 63, -3, 60, 49, 48, 1, 93, 19, 33, 21, 33, 17, 35, 17, 33, 38, 3, 95, -2, -86, -77,
-<a name="l07559"></a>07559 -2, -86, 4, 38, -107, -4, 111, 3, -111, 0, -1, -1, 0, 33, -2, 81, 3, -18, 4, 38, 2, 6, 0, 92, 0,
-<a name="l07560"></a>07560 0, 0, 3, 0, 75, -2, 105, 6, 74, 5, -70, 0, 29, 0, 41, 0, 53, 1, 68, 64, 98, 88, 18, 1, 4,
-<a name="l07561"></a>07561 6, 4, 10, 11, 21, 11, 25, 15, 55, 31, 55, 91, 3, 92, 13, 85, 18, 83, 28, 89, 32, 89, 34, 89, 38,
-<a name="l07562"></a>07562 85, 44, 86, 46, 85, 52, 106, 3, 106, 13, 101, 18, 100, 28, 106, 32, 110, 34, 110, 38, 104, 40, 102, 44, 101,
-<a name="l07563"></a>07563 46, 102, 52, 121, 3, 118, 6, 121, 13, 118, 18, 118, 28, -125, 6, -119, 13, -123, 18, 35, 30, 48, 1, 0, 39,
-<a name="l07564"></a>07564 51, 51, 28, 5, 26, 7, 33, 51, 45, 28, 11, 20, 11, 16, 14, 0, 0, 1, 15, -72, -1, -10, -73, 15, 16,
-<a name="l07565"></a>07565 2, 85, 15, 37, 0, 16, -72, -1, -16, -76, 12, 12, 6, 85, 16, -72, -1, -13, 64, 10, 13, 13, 6, 85, 16,
-<a name="l07566"></a>07566 16, 23, 36, 36, 8, -72, -1, -10, -76, 10, 11, 2, 85, 8, -72, -1, -28, -76, 11, 12, 6, 85, 8, -72, -1,
-<a name="l07567"></a>07567 -22, -76, 13, 13, 6, 85, 8, -72, -1, -22, -76, 15, 15, 6, 85, 8, -72, -1, -64, 64, 36, 36, 37, 52, 48,
-<a name="l07568"></a>07568 8, 1, 32, 8, 1, 8, 49, 0, 55, 64, 55, 80, 55, 96, 55, -128, 55, -112, 55, 6, 0, 55, 32, 55, 48,
-<a name="l07569"></a>07569 55, 64, 55, -33, 55, 5, 55, -72, -1, -64, 64, 52, 30, 35, 52, 48, 55, 1, 55, 42, 36, 23, 24, 11, 11,
-<a name="l07570"></a>07570 6, 85, 23, 35, 12, 12, 6, 85, 23, 28, 13, 13, 6, 85, 23, 8, 15, 15, 6, 85, 23, 14, 16, 16, 6,
-<a name="l07571"></a>07571 85, 23, 64, 36, 37, 52, 31, 23, 63, 23, 2, 23, 49, 54, 16, -10, 93, 43, 43, 43, 43, 43, 43, -19, 16,
-<a name="l07572"></a>07572 113, 43, 93, 93, -12, 93, 93, 43, 43, 43, 43, 43, -19, 18, 57, 47, 43, 43, 60, -3, 43, 60, 0, 63, 63,
-<a name="l07573"></a>07573 63, 60, -3, -28, 63, 60, -3, -28, 1, 17, 18, 57, 57, 49, 48, 93, 0, 93, 1, 51, 17, 54, 54, 51, 50,
-<a name="l07574"></a>07574 18, 21, 20, 2, 35, 34, 38, 39, 17, 35, 17, 6, 6, 35, 34, 2, 17, 52, 18, 51, 50, 22, 23, 19, 20,
-<a name="l07575"></a>07575 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2, -15, -76,
-<a name="l07576"></a>07576 56, -122, 77, -67, -35, -18, -79, 58, 120, 84, -76, 54, -125, 76, -89, -6, -30, -65, 80, -126, 51, -77, -124, 99, 110,
-<a name="l07577"></a>07577 -101, -113, 112, 120, 121, -3, 94, -105, 112, 117, 116, 122, 123, 111, -116, 5, -70, -2, 5, 64, 63, -2, -59, -17, -7,
-<a name="l07578"></a>07578 -2, -51, 36, 80, -2, 13, 1, -13, 58, 58, 1, 37, 1, 17, -25, 1, 57, 63, 64, -2, 80, -16, -91, -53, -42,
-<a name="l07579"></a>07579 -54, -58, -50, -70, -31, -58, -59, -59, -46, -46, -51, 0, -1, -1, 0, 15, 0, 0, 3, -15, 4, 38, 2, 6, 0,
-<a name="l07580"></a>07580 91, 0, 0, 0, 1, 0, -118, -2, -45, 4, 88, 4, 38, 0, 11, 1, 6, 64, 22, 95, 13, 1, 4, 1, 6,
-<a name="l07581"></a>07581 7, 2, 43, 11, 10, 9, 14, 3, 37, 13, 64, 11, 11, 2, 85, 6, -72, -1, -22, -76, 16, 16, 2, 85, 6,
-<a name="l07582"></a>07582 -72, -1, -32, -76, 13, 13, 2, 85, 6, -72, -1, -6, 64, 11, 12, 12, 2, 85, 6, 22, 11, 11, 2, 85, 6,
-<a name="l07583"></a>07583 -72, -1, -14, -76, 11, 13, 6, 85, 6, -72, -1, -26, -76, 15, 15, 6, 85, 6, -72, -1, -18, -73, 16, 16, 6,
-<a name="l07584"></a>07584 85, 6, 9, 43, 7, -72, -1, -16, -76, 16, 16, 2, 85, 7, -72, -1, -16, 64, 17, 13, 13, 2, 85, 7, 40,
-<a name="l07585"></a>07585 11, 11, 2, 85, 7, 8, 13, 13, 6, 85, 7, -72, -1, -10, -76, 15, 16, 6, 85, 7, -72, 1, 12, 64, 16,
-<a name="l07586"></a>07586 -112, 6, 1, 96, 6, -128, 6, -64, 6, 3, 6, 78, 13, 2, 37, 0, -72, -1, -6, 64, 23, 16, 16, 2, 85,
-<a name="l07587"></a>07587 0, 6, 11, 12, 2, 85, 0, 14, 11, 11, 6, 85, 0, 4, 12, 12, 6, 85, 0, -72, -1, -15, -76, 15, 15,
-<a name="l07588"></a>07588 6, 85, 0, -72, -1, -10, -76, 16, 16, 6, 85, 0, -72, -1, -64, 64, 18, 51, 54, 52, -16, 0, 1, 0, 0,
-<a name="l07589"></a>07589 32, 0, -48, 0, -32, 0, 4, 0, 78, 12, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, -19, 16, -10, 93,
-<a name="l07590"></a>07590 114, -4, 43, 43, 43, 43, 43, -19, 16, 43, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, 63, -3, 60, 63, 60,
-<a name="l07591"></a>07591 49, 48, 1, 93, 19, 51, 17, 33, 17, 51, 17, 51, 17, 35, 17, 33, -118, -76, 1, -14, -76, 116, -108, -4, -58,
-<a name="l07592"></a>07592 4, 38, -4, 110, 3, -110, -4, 110, -2, 63, 1, 45, 0, 0, 1, 0, 69, 0, 0, 3, -93, 4, 38, 0, 19,
-<a name="l07593"></a>07593 0, -51, 64, 18, 28, 8, 8, 1, 13, 15, 72, 6, 6, 9, 1, 6, 12, 10, 9, 12, 37, 10, -72, -1, -48,
-<a name="l07594"></a>07594 64, 17, 16, 16, 2, 85, 10, 32, 15, 15, 2, 85, 10, 10, 13, 13, 2, 85, 10, -72, -1, -6, -76, 10, 11,
-<a name="l07595"></a>07595 2, 85, 10, -72, -1, -8, 64, 22, 12, 12, 6, 85, 10, 20, 15, 15, 6, 85, 10, 26, 16, 16, 6, 85, 10,
-<a name="l07596"></a>07596 78, 21, 1, 37, 0, -72, -1, -32, 64, 17, 16, 16, 2, 85, 0, 28, 15, 15, 2, 85, 0, 22, 13, 13, 2,
-<a name="l07597"></a>07597 85, 0, -72, -1, -4, 64, 36, 12, 12, 2, 85, 0, 22, 11, 12, 6, 85, 0, 24, 13, 13, 6, 85, 0, 24,
-<a name="l07598"></a>07598 15, 15, 6, 85, 0, 28, 16, 16, 6, 85, 31, 0, 79, 0, 2, 0, 40, 20, 16, -10, 93, 43, 43, 43, 43,
-<a name="l07599"></a>07599 43, 43, 43, 43, -19, 16, -12, 43, 43, 43, 43, 43, 43, 43, -3, 60, 0, 63, 63, 60, 57, 47, -19, 57, 18,
-<a name="l07600"></a>07600 57, 49, 48, 67, 121, 64, 18, 16, 18, 3, 5, 4, 38, 17, 37, 5, 16, 2, 29, 0, 3, 18, 6, 29, 0,
-<a name="l07601"></a>07601 43, 1, 43, 43, 43, -127, -127, 19, 51, 21, 20, 22, 22, 51, 50, 55, 17, 51, 17, 35, 17, 6, 35, 34, 38,
-<a name="l07602"></a>07602 38, 53, 69, -76, 31, 118, 89, 102, -94, -76, -76, -90, -112, 121, -71, 66, 4, 38, -55, -126, 117, 87, 54, 1, -31,
-<a name="l07603"></a>07603 -5, -38, 1, -84, 52, 123, -78, 107, 0, 1, 0, -115, 0, 0, 5, -35, 4, 38, 0, 11, 1, 124, 64, 37, 0,
-<a name="l07604"></a>07604 13, 16, 13, 112, 13, 3, 32, 13, 48, 13, 79, 13, 96, 13, 112, 13, -96, 13, -64, 13, -17, 13, 8, 8, 4,
-<a name="l07605"></a>07605 4, 1, 6, 7, 2, 43, 11, 10, 7, 37, 9, -72, -1, -10, -76, 16, 16, 2, 85, 9, -72, -1, -18, 64, 11,
-<a name="l07606"></a>07606 13, 13, 2, 85, 9, 6, 12, 12, 2, 85, 9, -72, -1, -16, -76, 11, 11, 2, 85, 9, -72, -1, -24, -76, 12,
-<a name="l07607"></a>07607 12, 6, 85, 9, -72, -1, -5, -76, 15, 15, 6, 85, 9, -72, -1, -3, 64, 36, 16, 16, 6, 85, 48, 9, 1,
-<a name="l07608"></a>07608 0, 9, 16, 9, 48, 9, 64, 9, -80, 9, -48, 9, -32, 9, 7, 16, 9, 32, 9, 48, 9, 96, 9, 112, 9,
-<a name="l07609"></a>07609 -128, 9, 6, 9, -72, 1, -60, -75, 64, 5, 1, 3, 37, 5, -72, -1, -20, -76, 16, 16, 2, 85, 5, -72, -1,
-<a name="l07610"></a>07610 -22, -76, 13, 13, 2, 85, 5, -72, -1, -12, -76, 12, 12, 2, 85, 5, -72, -1, -12, -76, 11, 11, 2, 85, 5,
-<a name="l07611"></a>07611 -72, -1, -19, -76, 12, 12, 6, 85, 5, -72, -1, -10, -76, 15, 15, 6, 85, 5, -72, -1, -6, 64, 36, 16, 16,
-<a name="l07612"></a>07612 6, 85, 31, 5, 47, 5, -81, 5, -33, 5, 4, 0, 5, 48, 5, -48, 5, -32, 5, 4, 16, 5, 32, 5, 48,
-<a name="l07613"></a>07613 5, 96, 5, 112, 5, -128, 5, 6, 5, -72, 1, -60, -78, 2, 37, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0,
-<a name="l07614"></a>07614 -72, -1, -12, 64, 11, 14, 14, 2, 85, 0, 6, 11, 11, 2, 85, 0, -72, -1, -16, 64, 11, 9, 10, 2, 85,
-<a name="l07615"></a>07615 0, 6, 16, 16, 6, 85, 0, -72, -1, -2, -76, 15, 15, 6, 85, 0, -72, -1, -8, 64, 28, 13, 13, 6, 85,
-<a name="l07616"></a>07616 0, 9, 12, 12, 6, 85, 0, 5, 11, 11, 6, 85, 15, 0, 1, 79, 0, 1, 0, 0, 1, 0, 78, 12, 16,
-<a name="l07617"></a>07617 -10, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, -3, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07618"></a>07618 -3, 113, -3, 93, 113, 114, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, -3, 60, 63, 60, 16, 60, 49, 48, 1,
-<a name="l07619"></a>07619 93, 93, 19, 51, 17, 33, 17, 51, 17, 33, 17, 51, 17, 33, -115, -76, 1, -102, -76, 1, -101, -77, -6, -80, 4,
-<a name="l07620"></a>07620 38, -4, 111, 3, -111, -4, 111, 3, -111, -5, -38, 0, 1, 0, -115, -2, -45, 6, 84, 4, 38, 0, 15, 1, 124,
-<a name="l07621"></a>07621 64, 46, 16, 17, 1, 32, 17, 79, 17, 96, 17, 112, 17, -96, 17, -64, 17, -17, 17, 7, 8, 4, 4, 1, 6,
-<a name="l07622"></a>07622 6, 11, 2, 43, 15, 10, 13, 14, 14, 43, 12, 10, 16, 16, 6, 85, 12, 20, 15, 15, 6, 85, 12, -72, -1,
-<a name="l07623"></a>07623 -17, 64, 25, 13, 13, 6, 85, 12, 17, 12, 12, 6, 85, 12, 12, 17, 48, 17, 80, 17, 112, 17, -96, 17, 4,
-<a name="l07624"></a>07624 7, 37, 9, -72, -1, -10, -76, 16, 16, 2, 85, 9, -72, -1, -18, 64, 11, 13, 13, 2, 85, 9, 6, 12, 12,
-<a name="l07625"></a>07625 2, 85, 9, -72, -1, -16, -76, 11, 11, 2, 85, 9, -72, -1, -19, 64, 42, 12, 13, 6, 85, 9, 3, 16, 16,
-<a name="l07626"></a>07626 6, 85, 48, 9, 1, 0, 9, 16, 9, 48, 9, 64, 9, -80, 9, -48, 9, -32, 9, 7, 16, 9, 32, 9, 48,
-<a name="l07627"></a>07627 9, 96, 9, 112, 9, -128, 9, 6, 9, -72, 1, -60, -75, 64, 5, 1, 3, 37, 5, -72, -1, -20, -76, 16, 16,
-<a name="l07628"></a>07628 2, 85, 5, -72, -1, -22, -76, 13, 13, 2, 85, 5, -72, -1, -12, -76, 12, 12, 2, 85, 5, -72, -1, -12, -76,
-<a name="l07629"></a>07629 11, 11, 2, 85, 5, -72, -1, -15, 64, 36, 12, 13, 6, 85, 31, 5, 47, 5, -81, 5, -33, 5, 4, 0, 5,
-<a name="l07630"></a>07630 48, 5, -48, 5, -32, 5, 4, 16, 5, 32, 5, 48, 5, 96, 5, 112, 5, -128, 5, 6, 5, -72, 1, -60, -78,
-<a name="l07631"></a>07631 2, 37, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0, -72, -1, -12, 64, 11, 14, 14, 2, 85, 0, 6, 11, 11,
-<a name="l07632"></a>07632 2, 85, 0, -72, -1, -16, 64, 11, 9, 10, 2, 85, 0, 10, 16, 16, 6, 85, 0, -72, -1, -13, 64, 22, 13,
-<a name="l07633"></a>07633 13, 6, 85, 0, 13, 12, 12, 6, 85, 15, 0, 1, 79, 0, 1, 0, 0, 1, 0, 78, 16, 16, -10, 93, 113,
-<a name="l07634"></a>07634 114, 43, 43, 43, 43, 43, 43, 43, -19, -3, 93, 113, 114, 43, 43, 43, 43, 43, -3, 113, -3, 93, 113, 114, 43,
-<a name="l07635"></a>07635 43, 43, 43, 43, 43, -19, 93, 18, 57, 47, 43, 43, 43, 43, -19, 0, 63, 63, -3, 60, 60, 63, 60, 16, 60,
-<a name="l07636"></a>07636 49, 48, 1, 93, 93, 19, 51, 17, 33, 17, 51, 17, 33, 17, 51, 17, 51, 17, 35, 17, 33, -115, -76, 1, -102,
-<a name="l07637"></a>07637 -76, 1, -101, -77, 119, -107, -6, -50, 4, 38, -4, 110, 3, -110, -4, 110, 3, -110, -4, 110, -2, 63, 1, 45, 0,
-<a name="l07638"></a>07638 2, 0, 40, 0, 0, 4, -73, 4, 38, 0, 12, 0, 21, 0, -8, 64, 28, 19, 16, 1, 25, 19, 1, 25, 18,
-<a name="l07639"></a>07639 1, 25, 4, 1, 21, 43, 2, 2, 10, 12, 43, 0, 6, 13, 43, 10, 10, 17, 36, 6, -72, -1, -26, -76, 13,
-<a name="l07640"></a>07640 13, 2, 85, 6, -72, -1, -6, -76, 11, 11, 2, 85, 6, -72, -1, -2, -76, 11, 11, 6, 85, 6, -72, -1, -22,
-<a name="l07641"></a>07641 -76, 12, 12, 6, 85, 6, -72, -1, -20, 64, 10, 15, 15, 6, 85, 6, 23, -33, 23, 1, 23, -72, -1, -64, 64,
-<a name="l07642"></a>07642 22, 30, 35, 52, 48, 23, 1, 2, 13, 37, 10, 12, 16, 16, 2, 85, 10, 16, 15, 15, 2, 85, 10, -72, -1,
-<a name="l07643"></a>07643 -38, -76, 13, 13, 2, 85, 10, -72, -1, -22, -76, 12, 12, 2, 85, 10, -72, -1, -12, -76, 11, 11, 2, 85, 10,
-<a name="l07644"></a>07644 -72, -1, -64, -77, 25, 76, 52, 10, -72, -1, -64, 64, 10, 11, 13, 52, -112, 10, 1, 10, 12, 12, 0, -72, -1,
-<a name="l07645"></a>07645 -14, -76, 11, 11, 6, 85, 0, -72, -1, -32, -76, 12, 13, 6, 85, 0, -72, -1, -45, -76, 15, 15, 6, 85, 0,
-<a name="l07646"></a>07646 -72, -1, -54, 64, 11, 16, 16, 6, 85, 0, 64, 25, 76, 52, 0, 22, 16, -34, 43, 43, 43, 43, 43, 60, 16,
-<a name="l07647"></a>07647 -34, 93, 43, 43, 43, 43, 43, 43, 43, -3, 60, 1, 113, 43, 93, 16, -34, 43, 43, 43, 43, 43, -19, 0, 63,
-<a name="l07648"></a>07648 -19, 63, -19, 18, 57, 47, -19, 49, 48, 114, 114, 114, 114, 19, 33, 17, 51, 50, 22, 21, 20, 6, 35, 33, 17,
-<a name="l07649"></a>07649 33, 1, 51, 50, 54, 53, 52, 38, 35, 35, 40, 1, -37, -27, -13, -36, -43, -48, -2, 61, -2, -39, 1, -37, -67,
-<a name="l07650"></a>07650 -84, -112, 123, -87, -43, 4, 38, -2, 97, -67, -119, -114, -77, 3, -111, -3, 1, 83, 92, 84, 92, 0, 3, 0, -117,
-<a name="l07651"></a>07651 0, 0, 5, 46, 4, 38, 0, 3, 0, 14, 0, 23, 1, 32, 64, 19, 31, 8, 6, 43, 23, 23, 3, 5, 0,
-<a name="l07652"></a>07652 6, 15, 43, 14, 14, 3, 10, 19, 36, 10, -72, -1, -20, 64, 11, 15, 16, 2, 85, 10, 10, 13, 13, 2, 85,
-<a name="l07653"></a>07653 10, -72, -1, -38, -76, 15, 15, 6, 85, 10, -72, -1, -20, 64, 39, 16, 16, 6, 85, 80, 10, -112, 10, 2, 15,
-<a name="l07654"></a>07654 10, 1, 96, 10, 112, 10, -128, 10, -64, 10, 4, 10, 10, 15, 3, 37, 1, 4, 16, 16, 2, 85, 1, 32, 15,
-<a name="l07655"></a>07655 15, 2, 85, 1, -72, -1, -30, 64, 11, 13, 13, 2, 85, 1, 10, 12, 12, 2, 85, 1, -72, -1, -20, -76, 10,
-<a name="l07656"></a>07656 11, 2, 85, 1, -72, -1, -28, -76, 11, 11, 6, 85, 1, -72, -1, -12, 64, 23, 12, 13, 6, 85, 1, 16, 15,
-<a name="l07657"></a>07657 15, 6, 85, 1, 36, 16, 16, 6, 85, 1, 78, 25, 5, 15, 37, 4, -72, -1, -4, 64, 11, 16, 16, 2, 85,
-<a name="l07658"></a>07658 4, 4, 11, 12, 2, 85, 4, -72, -1, -12, -76, 15, 15, 6, 85, 4, -72, -1, -16, -76, 16, 16, 6, 85, 4,
-<a name="l07659"></a>07659 -72, -1, -64, 64, 18, 51, 54, 52, -16, 4, 1, 0, 4, 32, 4, -48, 4, -32, 4, 4, 4, 78, 24, 16, -10,
-<a name="l07660"></a>07660 93, 113, 43, 43, 43, 43, 43, -3, 60, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, 17, 57, 47, 93,
-<a name="l07661"></a>07661 113, 114, 43, 43, 43, 43, -19, 0, 63, 60, 16, -19, 63, 60, 18, 57, 47, -3, 49, 48, 67, 121, 64, 22, 8,
-<a name="l07662"></a>07662 21, 17, 12, 19, 27, 1, 21, 8, 19, 27, 1, 18, 11, 16, 27, 0, 20, 9, 22, 27, 1, 43, 43, 1, 43,
-<a name="l07663"></a>07663 43, -127, 1, 51, 17, 35, 1, 51, 17, 51, 50, 22, 21, 20, 6, 35, 33, 55, 51, 50, 54, 53, 52, 38, 35,
-<a name="l07664"></a>07664 35, 4, 122, -76, -76, -4, 17, -76, -28, -33, -15, -55, -35, -2, 62, -76, -67, -85, -110, 108, -71, -43, 4, 38, -5,
-<a name="l07665"></a>07665 -38, 4, 38, -2, 97, -83, -104, -123, -67, -108, 84, 89, 69, 108, 0, 2, 0, -124, 0, 0, 3, -20, 4, 38, 0,
-<a name="l07666"></a>07666 10, 0, 19, 1, 6, 64, 22, 31, 8, 2, 43, 19, 19, 10, 0, 6, 11, 43, 10, 10, 15, 36, 6, 14, 12,
-<a name="l07667"></a>07667 12, 2, 85, 6, -72, -1, -4, -76, 11, 11, 6, 85, 6, -72, -1, -15, -76, 12, 12, 6, 85, 6, -72, -1, -10,
-<a name="l07668"></a>07668 64, 11, 15, 15, 6, 85, 6, 6, 16, 16, 6, 85, 6, -72, -1, -64, 64, 55, 36, 37, 52, 48, 6, 1, 0,
-<a name="l07669"></a>07669 6, 16, 6, 32, 6, 3, 6, 49, 31, 21, 63, 21, 95, 21, 127, 21, -97, 21, -81, 21, -65, 21, -33, 21, 8,
-<a name="l07670"></a>07670 15, 21, 1, 15, 21, -113, 21, -81, 21, -65, 21, -49, 21, -33, 21, -17, 21, 7, 21, 1, 11, 37, 0, -72, -1,
-<a name="l07671"></a>07671 -4, 64, 11, 16, 16, 2, 85, 0, 4, 11, 12, 2, 85, 0, -72, -1, -4, -76, 12, 12, 6, 85, 0, -72, -1,
-<a name="l07672"></a>07672 -2, -76, 13, 13, 6, 85, 0, -72, -1, -12, -76, 15, 15, 6, 85, 0, -72, -1, -20, -76, 16, 16, 6, 85, 0,
-<a name="l07673"></a>07673 -72, -1, -64, 64, 18, 51, 54, 52, -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 20, 16, -10,
-<a name="l07674"></a>07674 93, 113, 43, 43, 43, 43, 43, 43, 43, -3, 60, 16, 113, 114, 93, -10, 93, 93, 43, 43, 43, 43, 43, 43, -19,
-<a name="l07675"></a>07675 0, 63, -19, 63, 18, 57, 47, -3, 49, 48, 67, 121, 64, 22, 4, 17, 13, 8, 15, 27, 1, 17, 4, 15, 27,
-<a name="l07676"></a>07676 1, 14, 7, 12, 27, 0, 16, 5, 18, 27, 1, 43, 43, 1, 43, 43, -127, 19, 51, 17, 51, 50, 22, 21, 20,
-<a name="l07677"></a>07677 6, 35, 33, 55, 51, 50, 54, 53, 52, 38, 35, 35, -124, -76, -28, -33, -15, -55, -35, -2, 62, -76, -67, -85, -110,
-<a name="l07678"></a>07678 108, -71, -43, 4, 38, -2, 97, -83, -104, -123, -67, -108, 84, 89, 69, 108, 0, -1, -1, 0, 43, -1, -37, 3, -54,
-<a name="l07679"></a>07679 4, 62, 1, 83, 2, 125, 4, 21, 0, 0, -64, 0, 64, 0, 0, 57, -79, 0, 14, -72, -1, -6, 64, 11, 16,
-<a name="l07680"></a>07680 16, 2, 85, 14, 6, 15, 15, 2, 85, 14, -72, -1, -12, -76, 12, 12, 2, 85, 14, -72, -1, -2, 64, 14, 15,
-<a name="l07681"></a>07681 15, 6, 85, 14, 6, 16, 16, 6, 85, 14, 14, 55, 28, 78, 16, -10, 17, 43, 43, 43, 43, 43, 53, 0, 0,
-<a name="l07682"></a>07682 2, 0, -119, -1, -24, 5, -83, 4, 62, 0, 19, 0, 31, 1, 125, 64, 94, 10, 4, 1, 52, 25, 71, 25, 90,
-<a name="l07683"></a>07683 8, 95, 12, 80, 14, 83, 21, 83, 25, 95, 27, 91, 31, 110, 8, 111, 12, 101, 14, 99, 21, 99, 25, 111, 27,
-<a name="l07684"></a>07684 110, 31, -71, 4, -53, 4, -39, 4, -39, 15, -37, 21, -39, 22, -37, 25, -43, 27, -45, 31, -23, 4, -25, 15, -7,
-<a name="l07685"></a>07685 4, -5, 5, -9, 15, -7, 21, -6, 25, -11, 27, -13, 31, 34, 2, 43, 17, 17, 19, 0, 20, 28, 6, 7, 0,
-<a name="l07686"></a>07686 6, 19, 10, 26, 28, 13, 11, 3, 16, 36, 23, -72, -1, -18, -76, 16, 16, 2, 85, 23, -72, -1, -28, -76, 13,
-<a name="l07687"></a>07687 13, 2, 85, 23, -72, -1, -19, 64, 11, 16, 16, 6, 85, 23, 16, 13, 13, 6, 85, 23, -72, -1, -9, 64, 24,
-<a name="l07688"></a>07688 12, 12, 6, 85, 48, 23, -1, 23, 2, -97, 23, -48, 23, -32, 23, -16, 23, 4, 23, 23, 0, 29, 36, 10, -72,
-<a name="l07689"></a>07689 -1, -4, -76, 16, 16, 2, 85, 10, -72, -1, -14, -76, 15, 15, 2, 85, 10, -72, -1, -12, -76, 15, 15, 6, 85,
-<a name="l07690"></a>07690 10, -72, -1, -10, -76, 13, 13, 6, 85, 10, -72, -1, -16, -76, 11, 12, 6, 85, 10, -72, -1, -64, 64, 20, 36,
-<a name="l07691"></a>07691 37, 52, 48, 10, 1, 0, 10, 16, 10, 32, 10, 3, 10, 49, 33, 1, 18, 37, 0, -72, -1, -10, -76, 17, 17,
-<a name="l07692"></a>07692 2, 85, 0, -72, -1, -6, -76, 16, 16, 2, 85, 0, -72, -1, -6, 64, 23, 14, 14, 2, 85, 0, 4, 12, 12,
-<a name="l07693"></a>07693 2, 85, 0, 10, 11, 11, 2, 85, 0, 4, 11, 12, 6, 85, 0, -72, -1, -2, -76, 13, 13, 6, 85, 0, -72,
-<a name="l07694"></a>07694 -1, -8, -76, 15, 15, 6, 85, 0, -72, -1, -12, -76, 16, 16, 6, 85, 0, -72, -1, -64, 64, 18, 51, 54, 52,
-<a name="l07695"></a>07695 -16, 0, 1, 0, 0, 32, 0, -48, 0, -32, 0, 4, 0, 78, 32, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43,
-<a name="l07696"></a>07696 43, 43, 43, 43, -3, 60, 16, -10, 93, 93, 43, 43, 43, 43, 43, 43, -19, 18, 57, 47, 93, 113, 43, 43, 43,
-<a name="l07697"></a>07697 43, 43, -3, 60, 0, 63, -19, 63, 63, 63, -19, 17, 18, 57, 47, -19, 49, 48, 1, 93, 113, 19, 51, 17, 51,
-<a name="l07698"></a>07698 54, 54, 51, 50, 22, 22, 21, 16, 2, 35, 34, 2, 39, 35, 17, 35, 1, 34, 6, 21, 20, 22, 51, 50, 54,
-<a name="l07699"></a>07699 53, 52, 38, -119, -76, -38, 24, -19, -67, -95, -70, 121, -6, -42, -57, -16, 15, -38, -76, 3, 90, -124, -109, -108, 124,
-<a name="l07700"></a>07700 123, -99, -120, 4, 38, -2, 68, -28, -16, -126, -28, -63, -2, -19, -2, -28, 1, 8, -26, -2, 42, 3, -91, -53, -73,
-<a name="l07701"></a>07701 -37, -52, -67, -46, -51, -51, 0, 2, 0, 31, 0, 0, 3, -53, 4, 38, 0, 18, 0, 27, 1, 32, 64, 38, 4,
-<a name="l07702"></a>07702 9, 29, 8, 52, 12, 68, 12, 91, 8, 84, 12, -44, 12, 7, 121, 11, 1, 36, 8, 12, 2, 10, 6, 8, 8,
-<a name="l07703"></a>07703 10, 12, 12, 2, 85, 8, 6, 12, 12, 6, 85, 8, -72, -1, -10, 64, 42, 16, 16, 6, 85, 8, 37, 9, 11,
-<a name="l07704"></a>07704 20, 9, 9, 11, 11, 12, 6, 9, 3, 12, 12, 27, 43, 3, 3, 2, 20, 43, 18, 6, 9, 8, 8, 2, 10,
-<a name="l07705"></a>07705 11, 6, 8, 3, 9, 19, 2, 37, 0, -72, -1, -4, 64, 11, 16, 16, 2, 85, 0, 18, 15, 15, 2, 85, 0,
-<a name="l07706"></a>07706 -72, -1, -10, 64, 11, 13, 13, 2, 85, 0, 18, 12, 12, 2, 85, 0, -72, -1, -18, -76, 11, 11, 2, 85, 0,
-<a name="l07707"></a>07707 -72, -1, -22, -76, 10, 10, 2, 85, 0, -72, -1, -8, -76, 12, 12, 6, 85, 0, -72, -1, -6, 64, 24, 13, 13,
-<a name="l07708"></a>07708 6, 85, 0, 14, 15, 15, 6, 85, 0, 34, 16, 16, 6, 85, 0, 78, 29, 9, 40, 23, 36, 15, -72, -1, -8,
-<a name="l07709"></a>07709 -74, 10, 10, 2, 85, 15, -111, 28, 16, -10, 43, -19, 25, -28, 24, 16, -10, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07710"></a>07710 43, 43, -3, 60, 17, 23, 57, 0, 63, 60, 16, 60, 63, -19, 18, 57, 47, -19, 25, 57, 47, 17, 18, 57, 17,
-<a name="l07711"></a>07711 57, -121, 5, 46, 24, 43, 43, 43, 43, 14, 125, 16, -60, 1, 17, 18, 57, 49, 48, 24, 67, 121, 64, 24, 13,
-<a name="l07712"></a>07712 25, 25, 13, 23, 27, 2, 21, 17, 23, 27, 0, 24, 14, 26, 27, 0, 13, 12, 22, 16, 20, 27, 1, 0, 43,
-<a name="l07713"></a>07713 16, 60, 43, 1, 43, 43, -127, 1, 93, 113, 1, 17, 35, 17, 35, 34, 6, 7, 7, 35, 19, 54, 55, 38, 38,
-<a name="l07714"></a>07714 53, 52, 54, 51, 5, 33, 34, 6, 21, 20, 22, 51, 51, 3, -53, -77, 104, 95, 93, 89, -99, -33, -62, 89, 88,
-<a name="l07715"></a>07715 -102, -107, -61, -71, 1, 57, -1, 0, -95, 93, -119, -82, -57, 4, 38, -5, -38, 1, -98, 49, -123, -24, 1, 30, -125,
-<a name="l07716"></a>07716 17, 21, -76, 117, -118, -84, -107, 100, 67, 95, 89, -1, -1, 0, 75, -1, -24, 4, 30, 5, -61, 2, 38, 0, 72,
-<a name="l07717"></a>07717 0, 0, 1, 7, 0, -114, 0, -33, 0, 0, 0, 35, 64, 20, 3, 2, 34, 64, 11, 11, 2, 85, -81, 34, 1,
-<a name="l07718"></a>07718 34, 10, 80, 72, 43, 2, 3, 2, 37, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 43, 53, 53, 0, 0, 1,
-<a name="l07719"></a>07719 0, 0, -2, 81, 3, -24, 5, -70, 0, 37, 1, 56, 64, 30, 3, 15, 20, 15, 37, 11, 53, 11, 70, 11, 5,
-<a name="l07720"></a>07720 54, 18, 69, 19, 122, 31, -117, 31, 4, 23, 23, 22, 22, 26, 28, 20, 15, 7, 2, -72, -1, -64, 64, 55, 30,
-<a name="l07721"></a>07721 43, 52, 2, -44, 8, 1, 1, 13, 4, 0, 32, 28, 13, 7, 36, 37, 10, 23, 0, 22, 1, 22, 7, 32, 2,
-<a name="l07722"></a>07722 1, 2, 29, 37, 39, 64, 11, 11, 2, 85, 39, 64, 16, 16, 2, 85, 16, 40, 16, 16, 2, 85, 16, 20, 14,
-<a name="l07723"></a>07723 14, 2, 85, 16, -72, -1, -20, 64, 17, 13, 13, 2, 85, 16, 4, 12, 12, 2, 85, 16, 26, 11, 11, 2, 85,
-<a name="l07724"></a>07724 16, -72, -1, -10, 64, 30, 11, 13, 6, 85, 16, 10, 15, 15, 6, 85, 16, 20, 16, 16, 6, 85, 16, 64, 51,
-<a name="l07725"></a>07725 54, 52, -1, 16, 1, -64, 16, 1, 16, 78, 39, -72, -1, -64, 64, 24, 52, 54, 52, -80, 39, -16, 39, 2, 112,
-<a name="l07726"></a>07726 39, -96, 39, -80, 39, -1, 39, 4, 39, 10, 5, 36, 37, 4, 37, -72, -1, -6, -76, 16, 16, 2, 85, 37, -72,
-<a name="l07727"></a>07727 -1, -6, 64, 23, 14, 14, 2, 85, 37, 4, 12, 12, 2, 85, 37, 8, 11, 11, 2, 85, 37, 8, 11, 11, 6,
-<a name="l07728"></a>07728 85, 37, -72, -1, -8, -76, 15, 15, 6, 85, 37, -72, -1, -64, 64, 18, 51, 54, 52, -16, 37, 1, 0, 37, 32,
-<a name="l07729"></a>07729 37, -48, 37, -32, 37, 4, 37, 78, 38, 16, -3, 93, 113, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60, 60, 16,
-<a name="l07730"></a>07730 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 47, 93, 47, 47, 93, 51, 0,
-<a name="l07731"></a>07731 63, 60, 63, -19, 63, 18, 57, 47, 60, -3, 43, 60, 63, -19, 51, 47, 51, 47, 49, 48, 1, 93, 0, 93, 19,
-<a name="l07732"></a>07732 35, 39, 51, 53, 51, 21, 33, 21, 33, 17, 54, 54, 51, 50, 22, 21, 17, 20, 6, 35, 34, 39, 55, 22, 51,
-<a name="l07733"></a>07733 50, 54, 53, 17, 52, 38, 35, 34, 6, 21, 17, 35, -121, -122, 1, -121, -77, 1, 87, -2, -87, 61, -95, 99, -81,
-<a name="l07734"></a>07734 -66, -104, 114, 79, 63, 34, 52, 32, 47, 63, 113, 113, 99, -75, -77, 4, -63, 119, -126, -126, 119, -2, -22, 74, 73,
-<a name="l07735"></a>07735 -72, -27, -3, 37, -18, -121, 19, -103, 14, 63, -100, 2, -41, -127, -127, -118, -44, -3, -69, 0, -1, -1, 0, -120, 0,
-<a name="l07736"></a>07736 0, 2, -21, 5, -62, 2, 38, 2, 93, 0, 0, 1, 6, 0, -115, 120, 0, 0, 11, -78, 1, 1, 6, -71, 2,
-<a name="l07737"></a>07737 34, 0, 41, 0, 43, 0, 0, 1, 0, 75, -1, -37, 3, -22, 4, 62, 0, 26, 0, -30, 64, 58, 31, 28, 69,
-<a name="l07738"></a>07738 24, 85, 4, 85, 24, 107, 12, 108, 13, 108, 16, 115, 9, 115, 10, 123, 12, 116, 18, 117, 19, -123, 18, -107, 18,
-<a name="l07739"></a>07739 -112, 24, 15, 20, -113, 95, 21, 111, 21, 2, 21, 21, 11, 17, 8, 34, 48, 7, 64, 7, 96, 7, -96, 7, 4,
-<a name="l07740"></a>07740 7, 7, 17, 11, 26, -72, -1, -64, 64, 72, 30, 32, 52, 26, 43, 2, 2, 11, 23, 28, 17, 7, 5, 28, 11,
-<a name="l07741"></a>07741 11, 1, 1, 7, 2, 21, 36, 20, -102, 7, 36, 31, 8, 1, 8, 55, 28, 26, 2, 36, 14, 8, 14, 14, 2,
-<a name="l07742"></a>07742 85, 14, 12, 13, 13, 2, 85, 14, 12, 12, 12, 2, 85, 14, 16, 11, 11, 2, 85, 14, 16, 12, 12, 6, 85,
-<a name="l07743"></a>07743 14, 10, 11, 13, 6, 85, 14, -72, -1, -4, 64, 24, 15, 15, 6, 85, 14, 14, 16, 16, 6, 85, 14, 64, 36,
-<a name="l07744"></a>07744 37, 52, 31, 14, 63, 14, 2, 14, 49, 27, 52, -71, 1, 10, 0, 24, 43, 78, 16, -12, 93, 43, 43, 43, 43,
-<a name="l07745"></a>07745 43, 43, 43, 43, 43, 77, -3, 60, 78, 16, -10, 93, 77, -19, -12, -19, 17, 18, 57, 47, 0, 63, -19, 63, -19,
-<a name="l07746"></a>07746 18, 57, 47, -19, 43, 17, 18, 57, 47, 93, -28, 17, 18, 57, 47, 93, -28, 49, 48, 1, 93, 1, 21, 33, 22,
-<a name="l07747"></a>07747 22, 51, 50, 19, 23, 6, 6, 35, 6, 2, 55, 16, 0, 51, 50, 22, 23, 7, 38, 35, 34, 6, 7, 2, -127,
-<a name="l07748"></a>07748 -2, -119, 17, -111, -127, -28, 41, -80, 28, -21, -66, -30, -8, 6, 1, 2, -33, -78, -36, 24, -81, 44, -47, 120, -103,
-<a name="l07749"></a>07749 17, 2, 106, -108, -83, -83, 1, 8, 23, -81, -42, 13, 1, 57, -1, 1, 3, 1, 40, -67, -107, 28, -39, -79, -114,
-<a name="l07750"></a>07750 0, -1, -1, 0, 63, -1, -24, 3, -79, 4, 62, 2, 6, 0, 86, 0, 0, -1, -1, 0, -120, 0, 0, 1, 60,
-<a name="l07751"></a>07751 5, -70, 2, 6, 0, 76, 0, 0, -1, -1, 0, 9, 0, 0, 2, 58, 5, -61, 2, 38, 0, -43, 0, 0, 1,
-<a name="l07752"></a>07752 6, 0, -114, -52, 0, 0, 31, 64, 17, 2, 1, 8, 32, 11, 11, 6, 85, 8, 2, 0, 72, 43, 1, 2, 2,
-<a name="l07753"></a>07753 11, -71, 2, 34, 0, 41, 0, 43, 1, 43, 43, 53, 53, 0, -1, -1, -1, -94, -2, 81, 1, 58, 5, -70, 2,
-<a name="l07754"></a>07754 6, 0, 77, 0, 0, 0, 2, 0, 19, -1, -6, 6, -8, 4, 38, 0, 25, 0, 34, 1, 32, 64, 31, 21, 4,
-<a name="l07755"></a>07755 21, 6, 16, 36, 3, 1, 43, 34, 34, 9, 11, 43, 25, 6, 26, 43, 9, 19, 43, 18, 18, 9, 10, 16, 10,
-<a name="l07756"></a>07756 0, 26, 37, 9, -72, -1, -12, 64, 11, 16, 16, 2, 85, 9, 12, 15, 15, 2, 85, 9, -72, -1, -12, -76, 13,
-<a name="l07757"></a>07757 13, 2, 85, 9, -72, -1, -20, -76, 11, 11, 6, 85, 9, -72, -1, -39, -76, 12, 12, 6, 85, 9, -72, -1, -16,
-<a name="l07758"></a>07758 -76, 13, 13, 6, 85, 9, -72, -1, -30, 64, 18, 16, 16, 6, 85, 64, 9, 96, 9, 2, -112, 9, 1, 9, 9,
-<a name="l07759"></a>07759 12, 30, 36, 5, -72, -1, -10, -76, 11, 11, 6, 85, 5, -72, -1, -28, -76, 12, 12, 6, 85, 5, -72, -1, -10,
-<a name="l07760"></a>07760 64, 11, 15, 15, 6, 85, 5, 4, 16, 16, 6, 85, 5, -72, -1, -64, 64, 19, 36, 37, 52, 48, 5, 1, 0,
-<a name="l07761"></a>07761 5, 16, 5, 32, 5, 3, 5, 49, -33, 36, 1, 36, -72, -1, -64, 64, 22, 30, 35, 52, 48, 36, 1, 36, 12,
-<a name="l07762"></a>07762 37, 24, 8, 15, 16, 2, 85, 24, 18, 13, 13, 2, 85, 24, -72, -1, -12, 64, 34, 11, 12, 2, 85, 24, 32,
-<a name="l07763"></a>07763 11, 11, 6, 85, 24, 28, 12, 12, 6, 85, 24, 20, 13, 13, 6, 85, 79, 24, 95, 24, -33, 24, 3, 24, -92,
-<a name="l07764"></a>07764 19, -102, 35, 16, -10, -10, 93, 43, 43, 43, 43, 43, 43, -19, 16, 113, 43, 93, -12, 93, 93, 43, 43, 43, 43,
-<a name="l07765"></a>07765 43, -3, 17, 57, 47, 93, 113, 43, 43, 43, 43, 43, 43, 43, -3, 60, 0, 63, 63, 60, 16, -19, 16, -19, 63,
-<a name="l07766"></a>07766 -19, 18, 57, 47, -19, 49, 48, 1, 93, 1, 17, 51, 50, 22, 21, 20, 6, 35, 33, 17, 33, 17, 20, 6, 6,
-<a name="l07767"></a>07767 35, 34, 39, 53, 22, 51, 50, 54, 53, 17, 1, 51, 50, 54, 53, 52, 38, 35, 35, 4, 68, -27, -36, -13, -60,
-<a name="l07768"></a>07768 -30, -2, 62, -2, 13, 39, 111, 104, 29, 111, 71, 40, 63, 40, 3, 91, -67, -84, -110, 107, -70, -42, 4, 38, -2,
-<a name="l07769"></a>07769 97, -84, -103, -128, -62, 3, -111, -3, -17, -81, -112, 71, 6, -109, 10, 78, -109, 2, -68, -4, 110, 83, 90, 70, 107,
-<a name="l07770"></a>07770 0, 0, 2, 0, -125, 0, 0, 6, 57, 4, 38, 0, 18, 0, 27, 1, 22, 64, 40, 21, 3, 21, 5, 2, 1,
-<a name="l07771"></a>07771 15, 43, 26, 10, 10, 8, 17, 14, 6, 19, 43, 11, 8, 10, 17, 8, 37, 0, 27, 18, 18, 19, 28, 16, 16,
-<a name="l07772"></a>07772 2, 85, 19, 20, 13, 13, 2, 85, 19, -72, -1, -14, 64, 11, 12, 12, 6, 85, 19, 10, 13, 13, 6, 85, 19,
-<a name="l07773"></a>07773 -72, -1, -12, 64, 21, 15, 15, 6, 85, 19, 25, 16, 16, 6, 85, 15, 19, 47, 19, 2, 19, 19, 12, 23, 36,
-<a name="l07774"></a>07774 4, -72, -1, -8, -76, 11, 11, 6, 85, 4, -72, -1, -28, -76, 12, 12, 6, 85, 4, -72, -1, -12, -76, 15, 15,
-<a name="l07775"></a>07775 6, 85, 4, -72, -1, -64, 64, 17, 36, 37, 52, 48, 4, 1, 0, 4, 32, 4, 2, 4, 49, -33, 29, 1, 29,
-<a name="l07776"></a>07776 -72, -1, -64, 64, 11, 30, 35, 52, 48, 29, 1, 29, 14, 11, 37, 12, -72, -1, -8, 64, 17, 16, 16, 2, 85,
-<a name="l07777"></a>07777 12, 4, 11, 12, 2, 85, 12, 4, 12, 12, 6, 85, 12, -72, -1, -4, -76, 13, 13, 6, 85, 12, -72, -1, -12,
-<a name="l07778"></a>07778 -76, 15, 15, 6, 85, 12, -72, -1, -12, -76, 16, 16, 6, 85, 12, -72, -1, -64, 64, 18, 51, 54, 52, -16, 12,
-<a name="l07779"></a>07779 1, 0, 12, 32, 12, -48, 12, -32, 12, 4, 12, 78, 28, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, -3,
-<a name="l07780"></a>07780 60, 16, 113, 43, 93, -10, 93, 93, 43, 43, 43, 43, -19, 18, 57, 47, 93, 43, 43, 43, 43, 43, 43, 60, 18,
-<a name="l07781"></a>07781 57, 57, -3, 60, 0, 63, 60, -19, 63, 60, 18, 57, 47, 60, -3, 60, 49, 48, 1, 93, 1, 51, 50, 22, 21,
-<a name="l07782"></a>07782 20, 6, 35, 33, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 17, 51, 50, 54, 53, 52, 38, 35, 35, 3, -123,
-<a name="l07783"></a>07783 -27, -34, -15, -54, -36, -2, 62, -2, 102, -76, -76, 1, -102, -76, -67, -83, -112, 107, -70, -43, 2, 108, -90, -111, -127,
-<a name="l07784"></a>07784 -76, 1, -41, -2, 41, 4, 38, -2, 70, 1, -70, -4, 103, 79, 84, 66, 101, 0, 1, 0, 0, 0, 0, 3, -24,
-<a name="l07785"></a>07785 5, -70, 0, 27, 1, 30, 64, 18, 3, 12, 20, 12, 37, 8, 53, 8, 70, 8, 5, 122, 18, -118, 18, 2, 4,
-<a name="l07786"></a>07786 27, -72, -1, -64, 64, 50, 30, 43, 52, 27, -44, 5, 26, 26, 10, 1, 0, 19, 28, 10, 7, 15, 24, 10, 4,
-<a name="l07787"></a>07787 32, 27, 1, 27, 16, 37, 29, 64, 11, 11, 2, 85, 29, 64, 16, 16, 2, 85, 13, 40, 16, 16, 2, 85, 13,
-<a name="l07788"></a>07788 20, 14, 14, 2, 85, 13, -72, -1, -20, 64, 17, 13, 13, 2, 85, 13, 4, 12, 12, 2, 85, 13, 26, 11, 11,
-<a name="l07789"></a>07789 2, 85, 13, -72, -1, -10, 64, 30, 11, 13, 6, 85, 13, 10, 15, 15, 6, 85, 13, 22, 16, 16, 6, 85, 13,
-<a name="l07790"></a>07790 64, 51, 54, 52, -1, 13, 1, -64, 13, 1, 13, 78, 29, -72, -1, -64, 64, 24, 52, 54, 52, -80, 29, -16, 29,
-<a name="l07791"></a>07791 2, 112, 29, -96, 29, -80, 29, -1, 29, 4, 29, 7, 2, 23, 37, 1, 24, -72, -1, -6, -76, 16, 16, 2, 85,
-<a name="l07792"></a>07792 24, -72, -1, -6, 64, 23, 14, 14, 2, 85, 24, 4, 12, 12, 2, 85, 24, 8, 11, 11, 2, 85, 24, 6, 11,
-<a name="l07793"></a>07793 11, 6, 85, 24, -72, -1, -6, -76, 15, 15, 6, 85, 24, -72, -1, -64, 64, 18, 51, 54, 52, -16, 24, 1, 0,
-<a name="l07794"></a>07794 24, 32, 24, -48, 24, -32, 24, 4, 24, 78, 28, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 60, -3, 60,
-<a name="l07795"></a>07795 60, 16, 93, 113, 43, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 47, 93, 47, 0, 63,
-<a name="l07796"></a>07796 60, 63, -19, 63, 18, 57, 47, 60, -3, 43, 60, 49, 48, 1, 93, 0, 93, 19, 53, 51, 21, 33, 21, 33, 17,
-<a name="l07797"></a>07797 54, 54, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 35, 39, -121, -77, 1, 87, -2,
-<a name="l07798"></a>07798 -87, 61, -95, 99, -81, -66, -76, 113, 113, 99, -75, -77, -122, 1, 5, 56, -126, -126, 119, -2, -22, 74, 73, -72, -27,
-<a name="l07799"></a>07799 -3, 95, 2, -95, -127, -127, -118, -44, -3, -69, 4, -63, 119, 0, -1, -1, 0, -122, 0, 0, 3, -112, 5, -62, 2,
-<a name="l07800"></a>07800 38, 2, 100, 0, 0, 1, 6, 0, -115, 120, 0, 0, 11, -78, 1, 1, 30, -71, 2, 34, 0, 41, 0, 43, 0,
-<a name="l07801"></a>07801 -1, -1, 0, 33, -2, 81, 3, -18, 5, -72, 2, 38, 0, 92, 0, 0, 1, 7, 0, -39, 0, -73, 0, 0, 0,
-<a name="l07802"></a>07802 22, 64, 10, 1, 0, 34, 28, 11, 19, 65, 1, 1, 31, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, 0, 1,
-<a name="l07803"></a>07803 0, -120, -2, -46, 3, -29, 4, 38, 0, 11, 1, 62, 64, 14, 9, 6, 6, 2, 14, 7, 43, 4, 4, 11, 10,
-<a name="l07804"></a>07804 0, 43, 3, -72, -1, -6, -76, 10, 13, 2, 85, 3, -72, -1, -4, -76, 12, 12, 6, 85, 3, -72, -1, -8, -76,
-<a name="l07805"></a>07805 13, 13, 6, 85, 3, -72, -1, -16, 64, 23, 15, 16, 6, 85, 95, 3, 111, 3, 127, 3, 3, 3, 3, 4, 8,
-<a name="l07806"></a>07806 37, 13, 64, 11, 11, 2, 85, 11, -72, -1, -15, 64, 11, 16, 16, 2, 85, 11, 22, 14, 14, 2, 85, 11, -72,
-<a name="l07807"></a>07807 -1, -16, 64, 17, 13, 13, 2, 85, 11, 10, 12, 12, 2, 85, 11, 38, 11, 11, 2, 85, 11, -72, -1, -9, -76,
-<a name="l07808"></a>07808 11, 11, 6, 85, 11, -72, -1, -11, -76, 12, 12, 6, 85, 11, -72, -1, -8, 64, 30, 13, 13, 6, 85, 11, 8,
-<a name="l07809"></a>07809 15, 15, 6, 85, 11, 22, 16, 16, 6, 85, 11, 64, 51, 54, 52, -1, 11, 1, -1, 11, 1, 11, 78, 13, -72,
-<a name="l07810"></a>07810 -1, -64, 64, 21, 52, 54, 52, -80, 13, -16, 13, 2, 112, 13, -96, 13, -80, 13, -64, 13, 4, 13, 7, 37, 4,
-<a name="l07811"></a>07811 -72, -1, -10, -76, 17, 17, 2, 85, 4, -72, -1, -6, -76, 16, 16, 2, 85, 4, -72, -1, -6, 64, 23, 14, 14,
-<a name="l07812"></a>07812 2, 85, 4, 4, 12, 12, 2, 85, 4, 10, 11, 11, 2, 85, 4, 4, 11, 11, 6, 85, 4, -72, -1, -8, -76,
-<a name="l07813"></a>07813 15, 15, 6, 85, 4, -72, -1, -64, 64, 18, 51, 54, 52, -16, 4, 1, 0, 4, 32, 4, -48, 4, -32, 4, 4,
-<a name="l07814"></a>07814 4, 78, 12, 16, -10, 93, 113, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, 93, 113, 43, -10, 93, 113, 43, 43,
-<a name="l07815"></a>07815 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 18, 57, 47, 93, 43, 43, 43, 43, -19, 0, 63, 60, 16, -19,
-<a name="l07816"></a>07816 63, 63, 60, 49, 48, 33, 17, 35, 17, 33, 17, 51, 17, 33, 17, 51, 17, 2, -128, -107, -2, -99, -76, 1, -13,
-<a name="l07817"></a>07817 -76, -2, -46, 1, 46, 4, 38, -4, 110, 3, -110, -5, -38, 0, 0, 1, 0, -95, 0, 0, 3, -84, 7, 80, 0,
-<a name="l07818"></a>07818 7, 0, -116, 64, 46, 1, 4, 30, 7, 2, 6, 8, 0, 30, 3, 22, 15, 15, 2, 85, 3, 18, 12, 12, 2,
-<a name="l07819"></a>07819 85, 3, 9, 11, 11, 6, 85, 3, 19, 12, 13, 6, 85, 3, 30, 15, 15, 6, 85, 3, 3, 8, 9, 5, 32,
-<a name="l07820"></a>07820 6, -72, -1, -28, -76, 16, 16, 2, 85, 6, -72, -1, -12, -76, 15, 15, 2, 85, 6, -72, -1, -6, -76, 13, 13,
-<a name="l07821"></a>07821 2, 85, 6, -72, -1, -2, -76, 12, 12, 2, 85, 6, -72, -1, -3, -76, 15, 16, 6, 85, 6, -72, -1, -1, -76,
-<a name="l07822"></a>07822 13, 13, 6, 85, 6, -72, -1, -6, -74, 12, 12, 6, 85, 6, 57, 8, 16, -10, 43, 43, 43, 43, 43, 43, 43,
-<a name="l07823"></a>07823 -19, 17, 18, 57, 47, 43, 43, 43, 43, 43, -19, 0, 63, 63, -19, 47, 49, 48, 1, 17, 51, 17, 33, 17, 35,
-<a name="l07824"></a>07824 17, 2, -1, -83, -3, -73, -62, 5, -70, 1, -106, -3, -67, -6, -13, 5, -70, 0, 1, 0, -120, 0, 0, 3, 12,
-<a name="l07825"></a>07825 5, -68, 0, 7, 0, -105, 64, 35, 1, 0, 4, 43, 7, 6, 6, 10, 0, 37, 3, 22, 15, 15, 2, 85, 3,
-<a name="l07826"></a>07826 12, 12, 12, 2, 85, 3, 10, 11, 11, 6, 85, 3, 20, 12, 13, 6, 85, 3, -72, -1, -25, -76, 15, 15, 6,
-<a name="l07827"></a>07827 85, 3, -72, -1, -13, 64, 14, 16, 16, 6, 85, 32, 3, 1, 3, 3, 8, 9, 5, 37, 6, -72, -1, -10, -76,
-<a name="l07828"></a>07828 17, 17, 2, 85, 6, -72, -1, -6, 64, 23, 14, 14, 2, 85, 6, 4, 12, 12, 2, 85, 6, 10, 11, 11, 2,
-<a name="l07829"></a>07829 85, 6, 2, 12, 12, 6, 85, 6, -72, -1, -4, -76, 15, 15, 6, 85, 6, -72, -1, -13, -74, 16, 16, 6, 85,
-<a name="l07830"></a>07830 6, 69, 8, 16, -10, 43, 43, 43, 43, 43, 43, 43, -19, 17, 18, 57, 47, 93, 43, 43, 43, 43, 43, 43, -19,
-<a name="l07831"></a>07831 0, 63, 63, -19, 63, 49, 48, 1, 17, 51, 17, 33, 17, 35, 17, 2, 119, -107, -2, 48, -76, 4, 38, 1, -106,
-<a name="l07832"></a>07832 -3, -43, -4, 111, 4, 38, 0, 0, 1, 0, 65, 1, -54, 7, -64, 2, 91, 0, 3, 0, 20, 64, 9, 1, 30,
-<a name="l07833"></a>07833 0, 2, -85, 5, 0, -85, 4, 16, -26, 16, -26, 0, 47, -19, 49, 48, 19, 53, 33, 21, 65, 7, 127, 1, -54,
-<a name="l07834"></a>07834 -111, -111, 0, 0, 4, 0, -96, 0, 0, 8, 64, 5, -70, 0, 9, 0, 21, 0, 33, 0, 37, 1, 58, 64, 24,
-<a name="l07835"></a>07835 39, 1, 40, 6, 47, 39, -118, 1, -122, 6, -86, 11, -93, 14, -86, 21, 8, 7, 24, 9, 22, 2, 85, 2, -72,
-<a name="l07836"></a>07836 -1, -24, 64, 37, 9, 22, 2, 85, 55, 2, 102, 2, 117, 2, -123, 2, -113, 7, 5, 56, 8, 1, 7, 6, 6,
-<a name="l07837"></a>07837 -70, 2, 1, 20, 2, 2, 1, 2, 7, 6, 3, 1, 2, 31, 42, 13, -72, 1, 102, 64, 40, 25, 42, 19, 77,
-<a name="l07838"></a>07838 35, 34, 53, 36, 37, 117, 8, 8, 6, 8, 1, 6, 2, 8, 2, 3, 32, 5, 22, 16, 16, 2, 85, 5, 4,
-<a name="l07839"></a>07839 15, 15, 2, 85, 5, 10, 13, 13, 2, 85, 5, -72, -1, -32, 64, 16, 12, 12, 2, 85, 5, 5, 8, 10, 36,
-<a name="l07840"></a>07840 -59, 16, 37, -59, 22, 94, 10, -72, 1, 98, 64, 23, 28, 94, 16, 6, 11, 12, 2, 85, 16, 62, 39, 7, 8,
-<a name="l07841"></a>07841 32, 9, 9, 0, 28, 16, 16, 2, 85, 0, -72, -1, -12, -76, 15, 15, 2, 85, 0, -72, -1, -14, -76, 13, 13,
-<a name="l07842"></a>07842 2, 85, 0, -72, -1, -6, -74, 11, 12, 2, 85, 0, -7, 38, 16, -10, 43, 43, 43, 43, 60, 16, -3, 60, 16,
-<a name="l07843"></a>07843 -10, 43, -19, -3, -19, -28, 16, -28, 17, 18, 57, 47, 43, 43, 43, 43, -3, 60, 17, 18, 57, 57, 0, 63, 60,
-<a name="l07844"></a>07844 16, -12, 60, -3, 60, -2, -19, -3, -19, 63, 60, 18, 57, 57, -121, 5, 46, 43, -121, 125, -60, 49, 48, 24, 67,
-<a name="l07845"></a>07845 121, 64, 42, 11, 33, 26, 18, 28, 31, 1, 24, 20, 22, 31, 0, 30, 14, 28, 31, 1, 32, 12, 22, 31, 0,
-<a name="l07846"></a>07846 27, 17, 25, 31, 0, 23, 21, 25, 31, 0, 29, 15, 31, 31, 1, 33, 11, 31, 31, 1, 0, 43, 43, 43, 43,
-<a name="l07847"></a>07847 1, 43, 43, 43, 43, -127, 0, 93, 43, 43, 1, 93, 19, 51, 1, 17, 51, 17, 35, 1, 17, 35, 1, 52, 54,
-<a name="l07848"></a>07848 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 33, 21, 33,
-<a name="l07849"></a>07849 -96, -61, 2, -51, -71, -62, -3, 47, -74, 4, -49, -57, -92, -93, -61, -55, -91, -114, -43, -81, 107, 78, 73, 113, 117,
-<a name="l07850"></a>07850 70, 75, 109, -100, 2, -87, -3, 87, 5, -70, -5, -112, 4, 112, -6, 70, 4, 107, -5, -107, 3, 17, -79, -46, -40,
-<a name="l07851"></a>07851 -73, -71, -40, -61, -44, -122, -120, -125, -123, -116, 125, -126, -3, 126, -108, 0, 0, 1, 0, 45, 0, 0, 5, 89, 4,
-<a name="l07852"></a>07852 38, 0, 11, 0, -56, 64, 22, 15, 13, 47, 13, 2, 10, 10, 2, 10, 8, 0, 4, 43, 5, 6, 11, 37, 9,
-<a name="l07853"></a>07853 0, 37, 2, 9, -72, -1, -24, -76, 16, 16, 2, 85, 9, -72, -1, -8, -76, 13, 13, 2, 85, 9, -72, -1, -14,
-<a name="l07854"></a>07854 -76, 12, 12, 2, 85, 9, -72, -1, -19, -76, 12, 12, 6, 85, 9, -72, -1, -4, 64, 20, 13, 13, 6, 85, 9,
-<a name="l07855"></a>07855 10, 15, 15, 6, 85, 9, 38, 16, 16, 6, 85, 9, 66, 6, 2, -72, -1, -24, -76, 15, 16, 2, 85, 2, -72,
-<a name="l07856"></a>07856 -1, -12, 64, 11, 13, 13, 2, 85, 2, 10, 11, 11, 2, 85, 2, -72, -1, -18, 64, 11, 11, 11, 6, 85, 2,
-<a name="l07857"></a>07857 8, 12, 12, 6, 85, 2, -72, -1, -8, -76, 13, 13, 6, 85, 2, -72, -1, -22, -76, 15, 15, 6, 85, 2, -72,
-<a name="l07858"></a>07858 -1, -32, 64, 13, 16, 16, 6, 85, 2, 66, 5, 6, -60, 13, 5, 124, 12, 16, -26, 16, -26, 16, -28, 43, 43,
-<a name="l07859"></a>07859 43, 43, 43, 43, 43, 43, 16, -28, 43, 43, 43, 43, 43, 43, 43, 16, -19, 16, -19, 0, 63, -3, 60, 60, 63,
-<a name="l07860"></a>07860 63, 49, 48, 1, 93, 1, 17, 35, 17, 33, 53, 33, 21, 35, 17, 35, 17, 1, -7, -76, -2, -24, 5, 44, -14,
-<a name="l07861"></a>07861 -76, 3, -108, -4, 108, 3, -108, -110, -110, -4, 108, 3, -108, 0, 0, 2, 1, 1, -2, 82, 1, -87, -1, -50, 0,
-<a name="l07862"></a>07862 14, 0, 29, 0, 49, -71, 0, 0, 2, -45, -73, 8, 64, 13, 23, 52, 8, 8, 15, -67, 2, -45, 0, 23, 2,
-<a name="l07863"></a>07863 -60, 0, 19, 0, 4, 2, -45, -74, 27, 12, 64, 26, 27, 52, 12, 47, 43, 60, -3, 60, 0, 63, -3, 50, 47,
-<a name="l07864"></a>07864 43, -3, 49, 48, 5, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 23, 50, 22, 22, 21, 20,
-<a name="l07865"></a>07865 6, 6, 35, 34, 38, 38, 53, 52, 54, 1, 85, 24, 38, 22, 22, 38, 24, 24, 38, 22, 43, 41, 24, 38, 22,
-<a name="l07866"></a>07866 22, 38, 24, 24, 38, 22, 48, 50, 22, 38, 24, 24, 37, 23, 23, 37, 24, 31, 53, -44, 22, 38, 24, 24, 37,
-<a name="l07867"></a>07867 23, 23, 37, 24, 36, 48, 0, 5, 0, 30, -2, 82, 2, -116, -1, -50, 0, 14, 0, 29, 0, 42, 0, 55, 0,
-<a name="l07868"></a>07868 70, 0, 99, -78, 30, 15, 0, -72, 2, -45, 64, 11, 37, 23, 8, 64, 13, 23, 52, 8, 8, 56, 43, -67, 2,
-<a name="l07869"></a>07869 -45, 0, 64, 0, 49, 2, -60, 0, 46, 2, -45, -78, 53, 53, 12, -72, 2, -45, -76, 4, -27, 27, 60, 33, -72,
-<a name="l07870"></a>07870 2, -45, -77, 68, 40, -27, 19, -72, 2, -45, 64, 9, 27, 64, 26, 27, 52, 27, 27, 72, 71, 17, 18, 57, 47,
-<a name="l07871"></a>07871 43, -3, -2, 60, -3, 60, 16, -2, -3, 57, 47, -19, 0, 63, 60, -3, 60, 50, 47, 43, 60, 60, -3, 60, 60,
-<a name="l07872"></a>07872 49, 48, 23, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 33, 50, 22, 22, 21, 20, 6, 6,
-<a name="l07873"></a>07873 35, 34, 38, 38, 53, 52, 54, 33, 50, 22, 21, 20, 6, 6, 35, 34, 38, 53, 52, 54, 5, 50, 22, 21, 20,
-<a name="l07874"></a>07874 6, 35, 34, 38, 38, 53, 52, 54, 33, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 114, 24,
-<a name="l07875"></a>07875 37, 23, 23, 37, 24, 24, 38, 22, 43, 1, 12, 22, 37, 25, 22, 38, 24, 24, 38, 22, 48, 1, 7, 41, 43,
-<a name="l07876"></a>07876 22, 38, 24, 35, 49, 48, -2, -50, 31, 53, 48, 36, 24, 37, 23, 44, 1, 126, 22, 37, 25, 22, 38, 24, 21,
-<a name="l07877"></a>07877 37, 26, 48, 50, 22, 38, 24, 24, 37, 23, 23, 37, 24, 31, 53, 19, 39, 26, 24, 37, 23, 23, 37, 24, 36,
-<a name="l07878"></a>07878 48, 53, 31, 24, 37, 23, 49, 35, 36, 48, -44, 43, 41, 35, 49, 23, 37, 24, 31, 53, 19, 39, 26, 24, 37,
-<a name="l07879"></a>07879 23, 20, 38, 26, 36, 48, 0, 3, 0, 49, -2, 82, 2, 121, -1, -50, 0, 12, 0, 16, 0, 31, 0, 80, -76,
-<a name="l07880"></a>07880 16, 100, 14, 14, 0, -72, 2, -45, -73, 6, 64, 13, 23, 52, 6, 6, 17, -70, 2, -45, 0, 24, 2, -60, -74,
-<a name="l07881"></a>07881 14, 14, 15, 85, 9, 21, 3, -72, 2, -45, 64, 16, 28, 95, 9, 1, 127, 9, 1, 9, 64, 23, 25, 52, 9,
-<a name="l07882"></a>07882 9, 33, 32, 17, 18, 57, 47, 43, 93, 114, 60, -3, 60, 16, -2, 50, 47, 0, 63, -3, 50, 47, 43, -3, 50,
-<a name="l07883"></a>07883 47, -19, 49, 48, 5, 50, 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 54, 5, 53, 33, 21, 23, 50, 22, 22,
-<a name="l07884"></a>07884 21, 20, 6, 35, 34, 38, 38, 53, 52, 54, 54, 2, 37, 40, 44, 44, 40, 36, 48, 22, 38, -2, 36, 1, 80,
-<a name="l07885"></a>07885 -92, 21, 37, 26, 44, 40, 22, 37, 25, 19, 39, 50, 53, 31, 31, 53, 49, 35, 24, 38, 22, 114, 104, 104, 98,
-<a name="l07886"></a>07886 19, 39, 26, 31, 53, 20, 38, 26, 22, 37, 25, 0, 3, 0, 49, -2, 82, 2, 121, -1, -50, 0, 12, 0, 20,
-<a name="l07887"></a>07887 0, 35, 0, 108, 64, 12, 32, 20, 1, 20, 20, 28, 14, 19, 100, 16, 16, 0, -72, 2, -45, -73, 6, 64, 13,
-<a name="l07888"></a>07888 23, 52, 6, 6, 21, -67, 2, -45, 0, 28, 2, -60, 0, 25, 0, 3, 2, -45, 64, 34, 32, 9, 85, 18, 15,
-<a name="l07889"></a>07889 117, 14, 117, 19, 117, 47, 18, 63, 18, 2, 18, 64, 32, 34, 52, 18, 64, 45, 47, 52, 18, 64, 63, 67, 52,
-<a name="l07890"></a>07890 18, 18, 37, 36, 17, 18, 57, 47, 43, 43, 43, 113, -12, -3, -28, 16, -2, 60, -3, 60, 0, 63, -3, 50, 47,
-<a name="l07891"></a>07891 43, -3, 50, 47, -3, 60, 17, 57, 47, 113, 49, 48, 5, 50, 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 54,
-<a name="l07892"></a>07892 1, 53, 35, 53, 33, 21, 35, 21, 37, 50, 22, 22, 21, 20, 6, 35, 34, 38, 38, 53, 52, 54, 54, 2, 37,
-<a name="l07893"></a>07893 40, 44, 44, 40, 36, 48, 22, 38, -2, -107, 113, 1, 80, 107, 1, 15, 21, 37, 26, 44, 40, 22, 37, 25, 19,
-<a name="l07894"></a>07894 39, 50, 53, 31, 31, 53, 49, 35, 24, 38, 22, -2, -6, -108, 104, 104, -108, 50, 19, 39, 26, 31, 53, 20, 38,
-<a name="l07895"></a>07895 26, 22, 37, 25, 0, 1, 1, 1, -2, -113, 1, -87, -1, 55, 0, 14, 0, 20, -67, 0, 0, 2, -45, 0, 8,
-<a name="l07896"></a>07896 0, 4, 2, -45, 0, 12, 47, -19, 0, 47, -3, 49, 48, 5, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38,
-<a name="l07897"></a>07897 53, 52, 54, 1, 85, 24, 38, 22, 22, 38, 24, 24, 38, 22, 43, -55, 22, 38, 24, 24, 37, 23, 23, 37, 24,
-<a name="l07898"></a>07898 31, 53, 0, 0, 2, 0, 126, -2, -113, 2, 44, -1, 55, 0, 12, 0, 27, 0, 39, -79, 13, 0, -72, 2, -45,
-<a name="l07899"></a>07899 -78, 20, 6, 16, -72, 2, -45, -78, 24, 106, 10, -72, 2, -45, -77, 3, 3, 29, 28, 17, 18, 57, 47, -19, -2,
-<a name="l07900"></a>07900 -19, 0, 47, 60, -3, 60, 49, 48, 23, 50, 22, 21, 20, 6, 35, 34, 38, 38, 53, 52, 54, 33, 50, 22, 21,
-<a name="l07901"></a>07901 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 54, -46, 30, 54, 48, 36, 24, 38, 22, 48, 1, 42, 40, 44, 22,
-<a name="l07902"></a>07902 38, 24, 22, 37, 25, 19, 39, -55, 43, 41, 35, 49, 23, 37, 24, 36, 48, 53, 31, 24, 37, 23, 20, 38, 26,
-<a name="l07903"></a>07903 22, 37, 25, 0, 0, 3, 0, 126, -2, 82, 2, 44, -1, -50, 0, 12, 0, 27, 0, 42, 0, 72, -79, 13, 0,
-<a name="l07904"></a>07904 -72, 2, -45, 64, 9, 20, 6, 64, 13, 23, 52, 6, 6, 28, -68, 2, -45, 0, 36, 2, -60, 0, 32, 2, -45,
-<a name="l07905"></a>07905 -76, 40, 40, 3, 10, 16, -72, 2, -45, -78, 24, 106, 10, -72, 2, -45, -77, 3, 3, 44, 43, 17, 18, 57, 47,
-<a name="l07906"></a>07906 -19, -2, -19, 17, 18, 57, 47, -19, 0, 63, -3, 50, 47, 43, 60, -3, 60, 49, 48, 23, 50, 22, 21, 20, 6,
-<a name="l07907"></a>07907 35, 34, 38, 38, 53, 52, 54, 33, 50, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 54, 7, 50, 22,
-<a name="l07908"></a>07908 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, -46, 30, 54, 48, 36, 24, 38, 22, 48, 1, 42, 40, 44,
-<a name="l07909"></a>07909 22, 38, 24, 22, 37, 25, 19, 39, 105, 24, 38, 22, 22, 38, 24, 24, 38, 22, 48, 50, 43, 41, 35, 49, 23,
-<a name="l07910"></a>07910 37, 24, 36, 48, 53, 31, 24, 37, 23, 20, 38, 26, 22, 37, 25, -44, 22, 38, 24, 24, 37, 23, 23, 37, 24,
-<a name="l07911"></a>07911 36, 48, 0, 1, 0, -116, -2, -59, 2, 30, -1, 45, 0, 3, 0, 15, -75, 1, 100, 0, 2, 2, 1, 47, 51,
-<a name="l07912"></a>07912 47, 0, 47, -19, 49, 48, 19, 53, 33, 21, -116, 1, -110, -2, -59, 104, 104, 0, 1, 0, -116, -2, 82, 2, 30,
-<a name="l07913"></a>07913 -1, 98, 0, 7, 0, 40, -75, 3, 100, 6, 2, -97, 0, -72, 2, -60, 64, 11, 5, 5, 6, 117, 1, 2, 2,
-<a name="l07914"></a>07914 1, 1, 9, 8, 17, 18, 57, 47, 51, 47, 16, -3, 50, 47, 0, 63, -12, 60, -19, 49, 48, 1, 53, 35, 53,
-<a name="l07915"></a>07915 33, 21, 35, 21, 1, 28, -112, 1, -110, -114, -2, 82, -88, 104, 104, -88, 0, 1, 1, 1, 4, -98, 1, -87, 5,
-<a name="l07916"></a>07916 70, 0, 14, 0, 32, -71, 0, 0, 2, -45, -76, 16, 8, 1, 8, 4, -72, 2, -45, -73, 31, 12, 47, 12, -81,
-<a name="l07917"></a>07917 12, 3, 12, 47, 113, -19, 0, 47, 93, -19, 49, 48, 1, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53,
-<a name="l07918"></a>07918 52, 54, 1, 85, 22, 37, 25, 22, 38, 24, 24, 37, 23, 48, 5, 70, 20, 38, 26, 24, 38, 22, 22, 38, 24,
-<a name="l07919"></a>07919 35, 49, 0, 3, 0, 16, -2, 81, 2, -102, -1, -51, 0, 15, 0, 30, 0, 45, 0, 98, -71, 0, 16, 2, -45,
-<a name="l07920"></a>07920 -77, 24, 24, 39, 0, -72, 2, -45, 64, 18, 8, 64, 53, 57, 52, 8, 64, 33, 37, 52, 8, 64, 9, 23, 52,
-<a name="l07921"></a>07921 8, 8, 31, -70, 2, -45, 0, 39, -1, -64, -77, 9, 12, 52, 39, -70, 2, -60, 0, 35, 2, -45, -78, 43, -85,
-<a name="l07922"></a>07922 20, -69, 2, -45, 0, 28, 0, 12, 2, -45, -75, 4, -85, 28, 28, 47, 46, 17, 18, 57, 47, -10, -19, 16, -3,
-<a name="l07923"></a>07923 -10, -19, 0, 63, 43, -3, 50, 47, 43, 43, 43, -19, 18, 57, 47, -19, 49, 48, 23, 50, 22, 22, 21, 20, 6,
-<a name="l07924"></a>07924 6, 35, 34, 38, 38, 53, 52, 54, 54, 5, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 5,
-<a name="l07925"></a>07925 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53, 52, 54, 100, 22, 37, 25, 22, 38, 24, 24, 37, 23, 20,
-<a name="l07926"></a>07926 38, 1, 11, 24, 38, 22, 22, 38, 24, 24, 38, 22, 48, 1, 21, 24, 37, 23, 23, 37, 24, 24, 38, 22, 48,
-<a name="l07927"></a>07927 51, 19, 39, 26, 24, 37, 23, 23, 37, 24, 22, 37, 25, 108, 22, 38, 24, 24, 37, 23, 23, 37, 24, 36, 48,
-<a name="l07928"></a>07928 104, 22, 38, 24, 24, 37, 23, 23, 37, 24, 36, 48, 0, 0, 1, 1, 1, 1, -18, 1, -87, 2, -106, 0, 12,
-<a name="l07929"></a>07929 0, 26, -68, 0, 6, 2, -45, 0, 0, 0, 3, 2, -45, -75, 31, 10, 47, 10, 2, 10, 47, 113, -19, 0, 47,
-<a name="l07930"></a>07930 -19, 49, 48, 1, 50, 22, 21, 20, 6, 35, 34, 38, 38, 53, 52, 54, 1, 85, 30, 54, 49, 35, 24, 38, 22,
-<a name="l07931"></a>07931 43, 2, -106, 44, 40, 36, 48, 22, 37, 25, 31, 53, 0, 1, 1, 33, -2, 81, 1, -119, -1, -51, 0, 3, 0,
-<a name="l07932"></a>07932 26, -71, 0, 0, -1, -64, -76, 13, 19, 52, 0, 3, -72, 2, -60, -78, 1, 100, 0, 47, -19, 0, 63, 47, 43,
-<a name="l07933"></a>07933 49, 48, 5, 51, 17, 35, 1, 33, 104, 104, 51, -2, -124, 0, 0, 1, 0, 125, 3, -123, 2, -109, 4, 37, 0,
-<a name="l07934"></a>07934 3, 0, 14, -75, 0, -7, 1, 3, -18, 0, 47, -19, 0, 47, -3, 49, 48, 19, 53, 33, 21, 125, 2, 22, 3,
-<a name="l07935"></a>07935 -123, -96, -96, 0, 0, 1, 0, -116, 4, -29, 2, 30, 5, 75, 0, 3, 0, 14, -75, 0, 100, 1, 3, 110, 0,
-<a name="l07936"></a>07936 47, -19, 0, 47, -3, 49, 48, 19, 53, 33, 21, -116, 1, -110, 4, -29, 104, 104, 0, 0, 1, 0, -46, -1, -20,
-<a name="l07937"></a>07937 1, 97, 5, 1, 0, 3, 0, 27, -77, 1, 1, 0, 5, -72, 2, -56, -78, 3, 32, 0, -71, 2, -57, 0, 4,
-<a name="l07938"></a>07938 16, -10, -3, -26, 0, 47, 51, 47, 49, 48, 23, 17, 51, 17, -46, -113, 20, 5, 21, -6, -21, 0, 1, 3, 11,
-<a name="l07939"></a>07939 4, -98, 3, -77, 5, 71, 0, 12, 0, 20, -67, 0, 7, 2, -45, 0, 0, 0, 3, 2, -45, 0, 10, 47, -19,
-<a name="l07940"></a>07940 0, 47, -19, 49, 48, 1, 50, 22, 21, 20, 6, 6, 35, 34, 38, 53, 52, 54, 3, 95, 41, 43, 18, 39, 27,
-<a name="l07941"></a>07941 35, 49, 54, 5, 71, 53, 32, 22, 36, 26, 49, 35, 41, 44, 0, 1, -1, 4, 4, -98, -1, -84, 5, 71, 0,
-<a name="l07942"></a>07942 12, 0, 20, -67, 0, 7, 2, -45, 0, 0, 0, 10, 2, -45, 0, 3, 47, -19, 0, 47, -19, 49, 48, 3, 50,
-<a name="l07943"></a>07943 22, 21, 14, 2, 35, 34, 38, 53, 52, 54, -88, 40, 44, 1, 22, 37, 24, 36, 48, 53, 5, 71, 53, 32, 24,
-<a name="l07944"></a>07944 37, 23, 49, 35, 41, 44, 0, 0, 2, 0, -71, 0, 0, 1, -122, 4, 38, 0, 3, 0, 7, 0, 26, 64, 12,
-<a name="l07945"></a>07945 0, 60, 1, 5, 60, 4, 3, 7, 0, 7, 60, 4, 47, -19, 60, 16, 60, 0, 47, -19, 47, -19, 49, 48, 19,
-<a name="l07946"></a>07946 53, 51, 21, 3, 53, 51, 21, -71, -51, -51, -51, 3, 89, -51, -51, -4, -89, -51, -51, 0, 1, 0, 105, 0, 0,
-<a name="l07947"></a>07947 4, 74, 4, 37, 0, 21, 0, -23, 64, 122, 25, 8, 38, 12, 56, 1, 58, 2, 59, 8, 59, 9, 57, 12, 59,
-<a name="l07948"></a>07948 21, 72, 1, 77, 2, 73, 8, 77, 9, 73, 12, 77, 21, 85, 3, 86, 9, 86, 12, 103, 3, 127, 8, 115, 20,
-<a name="l07949"></a>07949 -116, 9, -126, 20, -128, 21, -89, 12, -40, 0, -41, 21, 26, 8, 2, 41, 19, 40, 21, 61, 2, 63, 21, -127, 9,
-<a name="l07950"></a>07950 -113, 21, -90, 12, -38, 21, 9, 21, 12, 11, 11, 0, 2, 9, 10, 1, 1, 0, 11, 11, 32, 10, 1, 20, 10,
-<a name="l07951"></a>07951 10, 1, 21, 12, 1, 9, 4, 10, 6, 5, 0, 1, 10, 17, 16, 11, 10, 6, 15, 16, 18, 4, 5, 7, 9,
-<a name="l07952"></a>07952 2, 12, 21, 4, 17, 6, 1, -72, 2, 96, -73, -128, 0, 1, 0, 0, 16, 32, 17, -72, 2, -54, -74, 23, 11,
-<a name="l07953"></a>07953 10, 5, 32, 10, 6, -71, 2, -55, 0, 22, 16, -10, 50, -19, 47, 51, 16, -10, -19, 51, 47, 93, -19, 17, 18,
-<a name="l07954"></a>07954 23, 57, 51, 17, 51, 50, 17, 51, 0, 63, 60, 60, 60, 63, 60, 60, 60, 18, 23, 57, -121, 5, 46, 43, -121,
-<a name="l07955"></a>07955 125, -60, 7, 14, 60, 60, -121, 14, 16, -60, 60, -79, 6, 2, 67, 84, 88, -75, 2, 24, 12, 17, 52, 12, -72,
-<a name="l07956"></a>07956 -1, -24, -78, 12, 17, 52, 0, 43, 43, 89, 49, 48, 0, 93, 1, 93, 33, 35, 1, 6, 7, 3, 35, 19, 18,
-<a name="l07957"></a>07957 55, 3, 51, 1, 54, 54, 55, 55, 51, 7, 6, 6, 7, 4, 74, -20, -2, 107, 94, 17, 43, -58, 43, 30, -78,
-<a name="l07958"></a>07958 -9, -21, 1, 84, 62, 49, 14, 25, -58, 24, 16, 95, 117, 2, 61, 51, -101, -2, -111, 1, 111, 1, 0, 90, 1,
-<a name="l07959"></a>07959 92, -2, 37, 41, 103, 118, -43, -37, -115, -75, 71, 0, 0, 1, 0, 50, 0, 0, 4, 41, 4, 49, 0, 18, 0,
-<a name="l07960"></a>07960 118, 64, 44, 5, 16, 22, 16, 84, 16, 99, 16, -30, 16, 5, 0, 4, -7, 3, 10, 12, -7, 13, 12, -7, 13,
-<a name="l07961"></a>07961 13, 10, -7, 15, 7, 5, 32, 0, 0, 1, 20, 12, 12, 6, 85, 1, 26, 13, 13, 6, 85, 1, -72, -1, -16,
-<a name="l07962"></a>07962 64, 11, 15, 15, 6, 85, 1, 8, 16, 16, 6, 85, 1, -72, 2, -52, -76, 20, 12, 12, 13, 12, -72, -1, -64,
-<a name="l07963"></a>07963 -75, 13, 17, 52, 12, 13, 4, -71, 2, -53, 0, 19, 16, -10, 50, 47, 43, 17, 51, 47, 16, -10, 43, 43, 43,
-<a name="l07964"></a>07964 43, 50, 47, -19, 0, 63, -19, 51, 47, -19, 47, -19, 63, -3, 60, 49, 48, 1, 93, 37, 51, 21, 33, 53, 33,
-<a name="l07965"></a>07965 17, 52, 38, 38, 35, 34, 7, 39, 54, 51, 32, 4, 21, 3, -128, -87, -4, 9, 2, -113, 66, -83, -73, 65, -120,
-<a name="l07966"></a>07966 16, -121, -104, 1, 30, 1, 1, -96, -96, -96, 1, 106, -108, -107, 88, 14, -98, 22, -8, -4, 0, 0, 1, 0, 25,
-<a name="l07967"></a>07967 0, 0, 2, -24, 4, 49, 0, 25, 0, -55, 64, 86, 3, 24, 18, 24, 35, 24, 47, 27, 56, 10, 52, 24, 75,
-<a name="l07968"></a>07968 10, 89, 10, 106, 10, 123, 10, -123, 6, -112, 5, -87, 11, 13, 3, 4, 4, -70, 1, 2, 20, 1, 1, 2, 5,
-<a name="l07969"></a>07969 7, 7, 35, 8, 10, 20, 8, 8, 10, 5, 4, 10, 8, 1, 12, -24, 0, 4, 16, 4, 2, 4, 4, 22, 8,
-<a name="l07970"></a>07970 7, 2, 3, 10, 19, -7, 20, 7, 20, 17, -7, 22, 7, 5, 10, 12, 8, 19, -59, 20, 20, 7, 8, -72, -1,
-<a name="l07971"></a>07971 -16, 64, 17, 8, 8, 4, 12, 32, 1, 3, -97, 2, -81, 2, -65, 2, 3, 2, 2, 1, -72, -1, -10, 64, 14,
-<a name="l07972"></a>07972 12, 12, 6, 85, 1, 10, 15, 16, 6, 85, 47, 1, 1, 1, -71, 2, -56, 0, 27, 16, -10, 93, 43, 43, 50,
-<a name="l07973"></a>07973 125, 47, 24, 93, 51, 16, -3, 50, 51, 47, 56, 51, 51, 47, -28, 17, 18, 57, 57, 0, 63, -19, 51, 63, -19,
-<a name="l07974"></a>07974 63, 60, 60, 60, 124, 18, 57, 47, 93, 24, -19, 51, 17, 57, 18, 57, -121, 5, 46, 43, 14, 125, 16, -60, -121,
-<a name="l07975"></a>07975 5, 46, 24, 43, 125, 16, -60, 49, 48, 1, 93, 1, 17, 19, 35, 3, 34, 7, 7, 35, 55, 54, 54, 51, 17,
-<a name="l07976"></a>07976 52, 38, 38, 35, 34, 7, 39, 54, 51, 50, 22, 22, 2, -122, 98, -69, 73, 123, 82, 59, -61, 84, 75, -58, 73,
-<a name="l07977"></a>07977 25, 86, 71, 61, 48, 14, 67, 97, -120, -112, 52, 2, -82, -2, -70, -2, -104, 1, 4, -107, 111, -92, -110, 91, 1,
-<a name="l07978"></a>07978 23, 86, 89, 54, 10, -104, 22, 102, -107, 0, 1, 0, 45, 0, 0, 3, -28, 4, 37, 0, 7, 0, 81, 64, 16,
-<a name="l07979"></a>07979 3, 10, 1, 5, -7, 6, 6, 4, 32, 1, 12, 11, 12, 6, 85, 1, -72, -1, -20, -76, 13, 13, 6, 85, 1,
-<a name="l07980"></a>07980 -72, -1, -4, 64, 16, 15, 15, 6, 85, 1, 10, 16, 16, 6, 85, -97, 1, 1, 1, -96, 7, -72, 2, -52, -76,
-<a name="l07981"></a>07981 9, 48, 6, 1, 6, -71, 2, -53, 0, 8, 16, -26, 93, 16, -10, -12, 93, 43, 43, 43, 43, -19, 0, 63, -3,
-<a name="l07982"></a>07982 60, 63, 49, 48, 1, 35, 17, 35, 17, 33, 53, 33, 3, -28, -75, -66, -3, -68, 3, -73, 3, -123, -4, 123, 3,
-<a name="l07983"></a>07983 -123, -96, 0, 2, 0, -106, 0, 0, 4, 64, 4, 49, 0, 14, 0, 18, 0, -118, 64, 31, 50, 3, 52, 4, 69,
-<a name="l07984"></a>07984 3, 69, 4, 86, 3, 86, 4, 102, 4, 7, 14, -7, 0, 18, 7, 17, 10, 14, 12, -7, 0, 2, 7, 8, 32,
-<a name="l07985"></a>07985 5, -72, -1, -20, 64, 11, 16, 16, 6, 85, 5, 16, 15, 15, 6, 85, 5, -72, -1, -16, -76, 12, 12, 6, 85,
-<a name="l07986"></a>07986 5, -72, 2, -56, 64, 14, 20, 14, 14, 0, 0, 15, 32, 18, 42, 16, 16, 6, 85, 18, -72, -1, -18, -76, 15,
-<a name="l07987"></a>07987 15, 6, 85, 18, -72, -1, -10, 64, 11, 13, 13, 6, 85, 18, 4, 12, 12, 6, 85, 18, -71, 2, -57, 0, 19,
-<a name="l07988"></a>07988 16, -10, 43, 43, 43, 43, -19, 51, 47, 51, 47, 16, -10, 43, 43, 43, -19, 0, 63, 51, -3, 50, 63, 60, 47,
-<a name="l07989"></a>07989 47, -19, 49, 48, 1, 93, 19, 54, 51, 32, 22, 21, 17, 35, 17, 52, 38, 38, 35, 34, 7, 19, 17, 35, 17,
-<a name="l07990"></a>07990 -106, -75, -85, 1, 76, -2, -65, 74, -75, -83, -120, -89, -69, -65, 4, 18, 31, -10, -2, -3, -61, 2, 10, -97, -107,
-<a name="l07991"></a>07991 77, 28, -2, -25, -3, -86, 2, 86, 0, 1, 0, -101, 0, 0, 1, 94, 4, 37, 0, 3, 0, 55, -76, 2, 10,
-<a name="l07992"></a>07992 3, 6, 5, -72, 2, -56, -78, 0, 32, 3, -72, -1, -2, -76, 11, 11, 6, 85, 3, -72, -1, -2, 64, 11, 13,
-<a name="l07993"></a>07993 13, 6, 85, 3, 20, 16, 16, 6, 85, 3, -71, 2, -57, 0, 4, 16, -10, 43, 43, 43, -3, -28, 0, 63, 63,
-<a name="l07994"></a>07994 49, 48, 1, 17, 35, 17, 1, 94, -61, 4, 37, -5, -37, 4, 37, 0, 1, 0, 95, 0, 0, 2, -30, 4, 37,
-<a name="l07995"></a>07995 0, 19, 0, 80, 64, 30, 15, 21, 32, 21, 2, 9, 10, 0, -24, 17, -7, 18, 6, 16, 16, 0, 17, 8, 32,
-<a name="l07996"></a>07996 9, 9, 3, 32, 14, 14, 18, 15, 19, 1, 19, -72, 2, -52, 64, 11, 21, 18, 20, 12, 13, 6, 85, 32, 18,
-<a name="l07997"></a>07997 1, 18, -71, 2, -59, 0, 20, 16, -26, 93, 43, 16, -26, 93, 17, 57, 47, -19, 57, 47, -19, 17, 18, 57, 47,
-<a name="l07998"></a>07998 0, 63, -19, -19, 63, 49, 48, 1, 93, 1, 34, 6, 21, 20, 23, 22, 21, 21, 35, 53, 52, 39, 38, 53, 52,
-<a name="l07999"></a>07999 55, 33, 53, 33, 2, -30, -103, -83, 9, 26, -64, 20, 7, -121, -2, -12, 2, -125, 3, -98, -81, -109, 29, 84, -14,
-<a name="l08000"></a>08000 102, -109, -82, 106, -36, 74, 49, -91, 113, -96, 0, 0, 1, 0, -101, 0, 0, 4, 57, 4, 49, 0, 17, 0, 115,
-<a name="l08001"></a>08001 64, 20, 99, 15, 115, 16, 2, 67, 15, 83, 15, 2, 1, 10, 10, 6, -7, 13, 7, 2, 32, 17, -72, -1, -20,
-<a name="l08002"></a>08002 64, 11, 16, 16, 6, 85, 17, 16, 15, 15, 6, 85, 17, -72, -1, -16, -76, 12, 12, 6, 85, 17, -72, 2, -56,
-<a name="l08003"></a>08003 64, 10, 19, 8, 32, 11, 42, 16, 16, 6, 85, 11, -72, -1, -18, -76, 15, 15, 6, 85, 11, -72, -1, -10, 64,
-<a name="l08004"></a>08004 11, 13, 13, 6, 85, 11, 4, 12, 12, 6, 85, 11, -71, 2, -57, 0, 18, 16, -10, 43, 43, 43, 43, -19, 16,
-<a name="l08005"></a>08005 -12, 43, 43, 43, -19, 0, 63, -19, 63, 60, 49, 48, 1, 93, 93, 33, 35, 17, 52, 38, 38, 35, 34, 7, 17,
-<a name="l08006"></a>08006 35, 17, 54, 51, 50, 22, 22, 21, 4, 57, -65, 52, -100, -110, 85, 105, -65, -42, -77, -60, -17, 98, 2, 63, 117,
-<a name="l08007"></a>08007 -122, 81, 14, -4, -125, 4, 14, 35, 115, -64, -84, 0, 0, 1, 0, -116, -1, -29, 4, 64, 4, 59, 0, 29, 0,
-<a name="l08008"></a>08008 -100, 64, 41, 47, 31, 1, 107, 27, 123, 27, 2, 3, 18, 19, 18, 35, 18, 3, 70, 5, 86, 5, 107, 23, 123,
-<a name="l08009"></a>08009 23, 4, 5, -7, 25, 11, 31, 14, 1, 14, 14, 12, -7, 17, 7, 0, 6, 15, 14, -72, -1, -16, 64, 23, 2,
-<a name="l08010"></a>08010 15, 15, -97, 14, -81, 14, 2, 14, 14, 0, 9, 32, 21, 16, 16, 16, 6, 85, 47, 21, 1, 21, -72, 2, -56,
-<a name="l08011"></a>08011 -77, 31, 1, 32, 0, -72, -1, -10, -76, 16, 16, 6, 85, 0, -72, -1, -17, -76, 15, 15, 6, 85, 0, -72, -1,
-<a name="l08012"></a>08012 -12, -76, 13, 13, 6, 85, 0, -72, -1, -2, -76, 11, 11, 6, 85, 0, -71, 2, -57, 0, 30, 16, -10, 43, 43,
-<a name="l08013"></a>08013 43, 43, -19, 16, -10, 93, 43, -19, 18, 57, 47, 93, 51, 47, 23, 56, 0, 63, 63, -3, 50, 47, 93, 63, -19,
-<a name="l08014"></a>08014 93, 93, 49, 48, 1, 93, 93, 19, 51, 17, 20, 22, 51, 50, 54, 54, 53, 53, 52, 35, 34, 7, 39, 54, 51,
-<a name="l08015"></a>08015 50, 22, 21, 21, 20, 6, 6, 35, 34, 38, 38, 53, -116, -65, -83, 107, 114, -123, 40, -121, 95, 79, 60, 108, -89,
-<a name="l08016"></a>08016 -116, -112, 79, -33, -81, -102, -29, 90, 4, 37, -3, -39, -21, -106, 106, -86, -112, -121, -23, 106, 98, -78, -36, -44, 76,
-<a name="l08017"></a>08017 -50, -24, -90, -104, -24, -48, 0, 1, 0, -101, 2, 0, 1, 94, 4, 37, 0, 3, 0, 56, -76, 2, 2, 3, 6,
-<a name="l08018"></a>08018 5, -72, 2, -56, -78, 0, 32, 3, -72, -1, -2, -76, 11, 11, 6, 85, 3, -72, -1, -2, 64, 11, 13, 13, 6,
-<a name="l08019"></a>08019 85, 3, 16, 16, 16, 6, 85, 3, -71, 2, -57, 0, 4, 16, -12, 43, 43, 43, -3, -26, 0, 63, 51, 47, 49,
-<a name="l08020"></a>08020 48, 1, 17, 35, 17, 1, 94, -61, 4, 37, -3, -37, 2, 37, 0, 0, 1, 0, 40, -2, 104, 3, -126, 4, 49,
-<a name="l08021"></a>08021 0, 14, 0, 94, -75, 43, 10, 59, 10, 2, 3, -70, -1, -16, 0, 4, -1, -16, 64, 19, 7, 14, 14, -7, 0,
-<a name="l08022"></a>08022 6, 0, 12, -7, 2, 7, 14, 14, 0, 0, 15, 8, 32, 5, -72, -1, -14, 64, 23, 11, 12, 6, 85, 5, 10,
-<a name="l08023"></a>08023 13, 13, 6, 85, 5, 22, 15, 15, 6, 85, 5, 32, 16, 16, 6, 85, 5, -71, 2, -56, 0, 16, 16, -10, 43,
-<a name="l08024"></a>08024 43, 43, 43, -19, 17, 51, 47, 51, 47, 0, 63, -19, 51, 63, -19, 63, 49, 48, 56, 1, 56, 1, 93, 19, 54,
-<a name="l08025"></a>08025 51, 32, 4, 17, 17, 35, 17, 52, 38, 38, 35, 34, 7, 40, -102, -128, 1, 42, 1, 22, -65, 89, -72, 122, 108,
-<a name="l08026"></a>08026 -108, 4, 27, 22, -29, -2, -17, -4, 43, 3, -94, -83, -110, 66, 20, 0, 1, 0, 80, -1, -16, 3, 86, 4, 55,
-<a name="l08027"></a>08027 0, 23, 0, 113, 64, 53, 74, 5, 74, 9, 92, 5, 92, 9, 89, 17, 89, 20, 6, 42, 5, 44, 9, 59, 5,
-<a name="l08028"></a>08028 59, 9, 4, 1, -97, 0, 0, 3, -97, 22, 11, 12, -97, 13, 13, 10, -97, 15, 7, 1, 12, 1, 0, 0, 12,
-<a name="l08029"></a>08029 63, 13, 1, 13, 13, 24, 7, 38, 18, -72, -1, -8, -76, 11, 13, 6, 85, 18, -72, -1, -8, -73, 15, 15, 6,
-<a name="l08030"></a>08030 85, 32, 18, 1, 18, -71, 2, -58, 0, 25, 16, -10, 93, 43, 43, -19, 17, 51, 47, 93, 51, 60, 17, 51, 47,
-<a name="l08031"></a>08031 47, 0, 63, -19, 51, 47, -19, 63, -19, 51, 47, -19, 49, 48, 1, 93, 93, 55, 55, 22, 51, 50, 54, 54, 53,
-<a name="l08032"></a>08032 52, 38, 35, 34, 7, 39, 54, 51, 32, 0, 21, 20, 6, 6, 35, 34, 80, 26, 94, 99, 113, -102, 83, -75, -87,
-<a name="l08033"></a>08033 100, 93, 26, 117, 92, 1, 10, 1, 43, -127, -10, -66, 93, 14, -84, 30, 93, -86, 111, -89, -46, 30, -84, 30, -2,
-<a name="l08034"></a>08034 -54, -17, -100, -16, -106, 0, 1, 0, 60, 0, 0, 3, 70, 5, -70, 0, 22, 0, -97, 64, 28, 54, 6, 68, 6,
-<a name="l08035"></a>08035 84, 6, 117, 6, -125, 6, 5, 10, 10, 20, -7, 0, 6, 21, 2, 8, 32, 11, 8, 11, 13, 6, 85, 11, -72,
-<a name="l08036"></a>08036 -1, -25, -76, 15, 15, 6, 85, 11, -72, -1, -32, 64, 10, 16, 16, 6, 85, 11, 11, 20, 19, 32, 1, -72, -1,
-<a name="l08037"></a>08037 -20, -76, 11, 11, 6, 85, 1, -72, -1, -24, -76, 12, 13, 6, 85, 1, -72, -1, -8, -76, 15, 15, 6, 85, 1,
-<a name="l08038"></a>08038 -72, -1, -2, -76, 16, 16, 6, 85, 1, -72, 2, -54, -77, 24, 0, 32, 20, -72, -1, -10, 64, 25, 11, 11, 6,
-<a name="l08039"></a>08039 85, 20, 25, 12, 13, 6, 85, 20, 25, 15, 15, 6, 85, 20, 34, 16, 16, 6, 85, 20, 20, 23, 17, 51, 47,
-<a name="l08040"></a>08040 43, 43, 43, 43, -19, 16, -12, 43, 43, 43, 43, -19, 18, 57, 47, 43, 43, 43, -19, 0, 63, 63, -19, 63, 49,
-<a name="l08041"></a>08041 48, 1, 93, 19, 33, 17, 20, 6, 7, 7, 6, 21, 21, 35, 53, 52, 54, 55, 55, 54, 54, 53, 53, 33, 17,
-<a name="l08042"></a>08042 51, -6, 2, 76, 42, 52, 54, 81, -65, 51, 49, 60, 44, 25, -3, -75, -66, 4, 37, -2, -8, 112, -117, 71, 72,
-<a name="l08043"></a>08043 109, 124, -86, -113, -127, -126, 63, 76, 56, 90, 71, -113, 2, 53, 0, 2, 0, -101, 0, 0, 4, 57, 4, 49, 0,
-<a name="l08044"></a>08044 8, 0, 17, 0, 112, 64, 18, 67, 6, 83, 6, 102, 6, 3, 17, -7, 1, 10, 14, -7, 4, 7, 10, 32, 8,
-<a name="l08045"></a>08045 -72, -1, -20, 64, 11, 16, 16, 6, 85, 8, 14, 15, 15, 6, 85, 8, -72, -1, -14, -76, 12, 12, 6, 85, 8,
-<a name="l08046"></a>08046 -72, 2, -56, 64, 10, 19, 16, 32, 2, 60, 16, 16, 6, 85, 2, -72, -1, -18, -76, 15, 16, 6, 85, 2, -72,
-<a name="l08047"></a>08047 -1, -12, 64, 11, 13, 13, 6, 85, 2, 4, 12, 12, 6, 85, 2, -71, 2, -57, 0, 18, 16, -10, 43, 43, 43,
-<a name="l08048"></a>08048 43, -19, 16, -10, 43, 43, 43, -19, 0, 63, -19, 63, -19, 49, 48, 1, 93, 33, 33, 17, 54, 51, 50, 22, 22,
-<a name="l08049"></a>08049 21, 3, 17, 52, 38, 38, 35, 34, 7, 17, 4, 57, -4, 98, -42, -77, -60, -17, 98, -65, 52, -100, -110, 85, 105,
-<a name="l08050"></a>08050 4, 14, 35, 115, -64, -84, -2, 78, 1, -97, 117, -122, 81, 14, -3, 35, 0, 0, 1, 0, 80, 0, 0, 4, 62,
-<a name="l08051"></a>08051 4, 49, 0, 26, 0, -59, 64, 22, 10, 4, 7, 8, 8, 21, 41, 4, 54, 21, 90, 4, 90, 5, 105, 5, 106,
-<a name="l08052"></a>08052 18, 9, 0, 16, 3, -72, -1, -16, 64, 75, 12, 12, 15, 23, 3, 2, 2, 32, 1, 0, 20, 1, 1, 0, 21,
-<a name="l08053"></a>08053 23, 23, 18, 11, 13, 6, 85, 23, 32, 24, 0, 20, 24, 24, 0, 0, 3, 21, 3, 24, 1, 19, -7, 6, 7,
-<a name="l08054"></a>08054 2, 1, 6, 13, -7, 11, 11, 23, 24, 10, 0, 3, 2, 23, 21, 5, 10, 1, 1, 24, 30, 16, 16, 6, 85,
-<a name="l08055"></a>08055 63, 24, 95, 24, 2, 24, 24, 15, 32, 10, -72, -1, -20, 64, 11, 16, 16, 6, 85, 10, 16, 15, 15, 6, 85,
-<a name="l08056"></a>08056 10, -72, -1, -16, -76, 12, 12, 6, 85, 10, -71, 2, -56, 0, 28, 16, -10, 43, 43, 43, -19, 51, 47, 93, 43,
-<a name="l08057"></a>08057 25, 51, 47, 24, 18, 23, 57, 0, 63, 60, 60, 16, -19, 63, 60, 63, -19, 17, 18, 23, 57, -121, 5, 46, 43,
-<a name="l08058"></a>08058 43, 14, 125, 16, -60, -121, 5, 46, 24, 43, 14, 125, 16, -60, 1, 24, 17, 18, 57, 47, 0, 56, 1, 56, 49,
-<a name="l08059"></a>08059 48, 1, 93, 19, 3, 51, 23, 54, 54, 51, 50, 22, 22, 21, 17, 33, 53, 33, 17, 52, 38, 38, 35, 34, 6,
-<a name="l08060"></a>08060 3, 3, 35, 19, 54, -12, -92, -69, 78, 47, -56, 115, 122, -79, 80, -3, -35, 1, 98, 23, 95, 72, 112, -99, 55,
-<a name="l08061"></a>08061 75, -63, 84, 12, 2, 106, 1, -69, -22, 103, -113, 125, -16, -15, -2, 45, -96, 1, 55, -80, -95, 101, -25, -2, -29,
-<a name="l08062"></a>08062 -2, 119, 1, -98, 59, 0, 1, 0, -101, -2, 104, 1, 94, 4, 37, 0, 3, 0, 55, -76, 2, 14, 3, 6, 5,
-<a name="l08063"></a>08063 -72, 2, -56, -78, 0, 32, 3, -72, -1, -2, -76, 11, 11, 6, 85, 3, -72, -1, -2, 64, 11, 13, 13, 6, 85,
-<a name="l08064"></a>08064 3, 16, 16, 16, 6, 85, 3, -71, 2, -57, 0, 4, 16, -10, 43, 43, 43, -3, -26, 0, 63, 63, 49, 48, 1,
-<a name="l08065"></a>08065 17, 35, 17, 1, 94, -61, 4, 37, -6, 67, 5, -67, 0, 1, 0, 60, 0, 0, 2, 60, 4, 49, 0, 17, 0,
-<a name="l08066"></a>08066 108, 64, 35, 4, 15, 20, 15, 36, 15, 47, 19, 52, 15, 5, 2, -7, 1, 10, 10, -7, 11, 11, 8, -7, 13,
-<a name="l08067"></a>08067 7, 11, 2, 2, 10, 16, 11, 1, 11, 11, 4, 32, 17, -72, -1, -17, 64, 17, 16, 16, 6, 85, 17, 7, 15,
-<a name="l08068"></a>08068 15, 6, 85, 17, 14, 13, 13, 6, 85, 17, -72, -1, -17, 64, 12, 12, 12, 6, 85, 47, 17, -65, 17, -49, 17,
-<a name="l08069"></a>08069 3, 17, -71, 2, -56, 0, 19, 16, -10, 93, 43, 43, 43, 43, -19, 51, 47, 93, 51, 51, 47, 47, 0, 63, -19,
-<a name="l08070"></a>08070 51, 47, -19, 63, -19, 49, 48, 1, 93, 33, 33, 53, 33, 17, 52, 38, 38, 35, 34, 7, 39, 54, 51, 50, 22,
-<a name="l08071"></a>08071 22, 21, 2, 60, -2, 0, 1, 65, 26, 85, 71, 61, 48, 14, 67, 97, -120, -112, 52, -96, 2, 8, 86, 89, 54,
-<a name="l08072"></a>08072 10, -104, 22, 102, -107, -120, 0, 0, 2, 0, 90, -1, -31, 4, 62, 4, 66, 0, 13, 0, 25, 0, -33, 64, 42,
-<a name="l08073"></a>08073 47, 27, 55, 24, 71, 24, 83, 2, 89, 5, 89, 9, 83, 12, 83, 16, 92, 18, 92, 22, 83, 24, -89, 9, -88,
-<a name="l08074"></a>08074 13, -25, 1, -23, 6, 15, 17, -7, 11, 11, 23, -7, 3, 7, 20, 38, 7, -72, -1, -12, 64, 11, 16, 16, 2,
-<a name="l08075"></a>08075 85, 7, 12, 15, 15, 2, 85, 7, -72, -1, -12, 64, 11, 14, 14, 2, 85, 7, 10, 13, 13, 2, 85, 7, -72,
-<a name="l08076"></a>08076 -1, -10, 64, 11, 12, 12, 2, 85, 7, 0, 11, 11, 2, 85, 7, -72, -1, -26, -76, 11, 11, 6, 85, 7, -72,
-<a name="l08077"></a>08077 -1, -16, -76, 13, 13, 6, 85, 7, -72, -1, -14, -76, 12, 12, 6, 85, 7, -72, -1, -8, -76, 15, 15, 6, 85,
-<a name="l08078"></a>08078 7, -72, 2, -58, 64, 10, 27, 14, 38, 0, 10, 12, 15, 2, 85, 0, -72, -1, -10, 64, 29, 11, 11, 2, 85,
-<a name="l08079"></a>08079 0, 14, 11, 11, 6, 85, 0, 14, 13, 13, 6, 85, 0, 12, 16, 16, 6, 85, 0, 20, 12, 12, 6, 85, 0,
-<a name="l08080"></a>08080 -72, -1, -10, -76, 15, 15, 6, 85, 0, -71, 2, -59, 0, 26, 16, -10, 43, 43, 43, 43, 43, 43, 43, -19, 16,
-<a name="l08081"></a>08081 -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 0, 63, -19, 63, -19, 49, 48, 1, 93, 19, 52, 0, 51,
-<a name="l08082"></a>08082 50, 22, 18, 21, 20, 6, 6, 35, 34, 0, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 90, 1, 17,
-<a name="l08083"></a>08083 -31, -122, -40, -108, 112, -30, -96, -31, -2, -17, -47, -104, -119, -108, -113, -102, -119, -111, -112, 2, 14, -2, 1, 54, 117,
-<a name="l08084"></a>08084 -1, 0, -65, -99, -8, -104, 1, 49, -4, -68, -47, -30, -83, -64, -42, -25, 0, 0, 1, 0, 25, -1, -98, 3, -75,
-<a name="l08085"></a>08085 4, 37, 0, 17, 0, -111, 64, 31, -121, 17, 1, 8, 0, 53, 13, 121, 0, 121, 3, 117, 12, 117, 13, -119, 0,
-<a name="l08086"></a>08086 7, 27, 0, 24, 3, 59, 4, 105, 4, 4, 0, 3, 2, 2, -72, -1, -8, 64, 54, 15, 16, 6, 85, 2, 32,
-<a name="l08087"></a>08087 1, 0, 20, 1, 1, 0, 3, 0, 2, 16, -7, 0, 15, 16, 15, 2, 15, 7, 2, 1, 6, 3, 3, 16, 3,
-<a name="l08088"></a>08088 2, 0, 2, 1, 18, 12, 12, 6, 85, 1, 1, 8, 16, 15, 15, 31, 16, 1, 16, 16, 7, 32, 8, -71, 2,
-<a name="l08089"></a>08089 -51, 0, 19, 16, -10, -19, 51, 47, 93, 51, 47, 17, 18, 57, 47, 43, 51, 51, 17, 51, 25, 17, 57, 47, 0,
-<a name="l08090"></a>08090 24, 63, 60, 60, 47, 93, -3, 17, 57, 57, -121, 5, 46, 43, 43, -121, 14, 125, -60, 49, 48, 1, 93, 93, 0,
-<a name="l08091"></a>08091 93, 37, 3, 51, 19, 54, 54, 53, 19, 51, 3, 14, 3, 4, 5, 39, 54, 1, 60, -72, -55, -99, -86, 86, 10,
-<a name="l08092"></a>08092 -63, 10, 8, 19, 85, -92, -2, -61, -2, -38, 27, -77, -127, 3, -92, -4, -105, 67, -5, -66, 1, 109, -2, -25, -53,
-<a name="l08093"></a>08093 -92, -59, -111, 120, 49, -90, 26, 0, 0, 1, 0, 110, -2, 104, 3, -9, 4, 49, 0, 25, 0, -110, 64, 9, 56,
-<a name="l08094"></a>08094 22, 73, 22, 91, 22, 3, 15, 23, -72, -1, -16, -78, 2, 16, 21, -72, -1, -16, 64, 23, 2, 3, 108, 8, 8,
-<a name="l08095"></a>08095 14, 26, 19, 14, 12, 12, 24, -7, 14, 7, 5, 5, 6, 6, 0, 20, 32, 17, -72, -1, -8, -76, 11, 12, 6,
-<a name="l08096"></a>08096 85, 17, -72, -1, -4, 64, 17, 13, 13, 6, 85, 17, 20, 15, 15, 6, 85, 17, 35, 16, 16, 6, 85, 17, -72,
-<a name="l08097"></a>08097 2, -56, 64, 22, 27, 0, 32, 12, 18, 11, 13, 6, 85, 12, 8, 15, 15, 6, 85, 12, 18, 16, 16, 6, 85,
-<a name="l08098"></a>08098 12, -71, 2, -55, 0, 26, 16, -10, 43, 43, 43, -19, 16, -10, 43, 43, 43, 43, -19, 17, 57, 47, 51, 47, 0,
-<a name="l08099"></a>08099 63, -19, 51, 47, 63, 17, 18, 57, 47, -19, 49, 48, 23, 56, 1, 23, 56, 93, 1, 17, 20, 51, 50, 55, 23,
-<a name="l08100"></a>08100 6, 35, 34, 38, 53, 17, 54, 51, 50, 4, 17, 17, 35, 17, 52, 38, 38, 35, 34, 1, 38, 123, 50, 34, 21,
-<a name="l08101"></a>08101 59, 76, -126, -109, -76, -63, -16, 1, 36, -66, 51, -96, -113, 98, 3, -127, -2, -25, 122, 12, -117, 25, -116, -117, 1,
-<a name="l08102"></a>08102 -113, 53, -58, -2, -25, -4, 22, 3, -41, 111, -119, 92, 0, 0, 1, 0, 115, -1, -16, 4, 5, 4, 55, 0, 32,
-<a name="l08103"></a>08103 0, -96, 64, 57, 77, 14, 75, 18, 122, 14, -117, 14, 4, 47, 14, 47, 18, 61, 14, 61, 18, 4, 24, 108, 29,
-<a name="l08104"></a>08104 29, 2, 8, 11, -7, 10, 10, 13, -7, 8, 11, 0, 0, 19, -7, 2, 7, 11, 11, 10, 10, 32, 26, 26, 27,
-<a name="l08105"></a>08105 27, 22, 16, 38, 5, 8, 16, 16, 6, 85, 5, -72, -1, -8, -76, 15, 15, 6, 85, 5, -72, -1, -8, -73, 11,
-<a name="l08106"></a>08106 13, 6, 85, 32, 5, 1, 5, -67, 2, -58, 0, 34, 0, 22, 2, -49, 0, 32, -1, -8, 64, 17, 16, 16, 6,
-<a name="l08107"></a>08107 85, 32, 14, 15, 15, 6, 85, 32, 14, 11, 13, 6, 85, 32, -71, 2, -55, 0, 33, 16, -12, 43, 43, 43, -19,
-<a name="l08108"></a>08108 16, -12, 93, 43, 43, 43, -19, 17, 57, 47, 51, 47, 17, 51, 47, 51, 47, 0, 63, -19, 51, 47, 63, -19, 51,
-<a name="l08109"></a>08109 47, -19, 17, 18, 57, 47, -19, 49, 48, 1, 93, 93, 19, 54, 51, 50, 0, 17, 16, 0, 33, 34, 39, 55, 22,
-<a name="l08110"></a>08110 51, 50, 54, 53, 52, 38, 35, 34, 7, 21, 20, 51, 50, 55, 23, 6, 35, 34, 38, 53, 122, -83, -67, -23, 1,
-<a name="l08111"></a>08111 56, -2, -64, -2, -30, -61, 113, 46, 98, -105, -85, -9, -62, -94, 84, 82, 123, 50, 34, 20, 58, 77, -126, -110, 4,
-<a name="l08112"></a>08112 2, 53, -2, -18, -2, -4, -2, -1, -2, -48, 71, -98, 63, -61, -60, -84, -47, 19, -62, 123, 12, -117, 25, -115, -118,
-<a name="l08113"></a>08113 0, 1, 0, 25, -2, 104, 3, 97, 4, 37, 0, 13, 0, -90, -71, 0, 3, -1, -20, 64, 65, 15, 16, 6, 85,
-<a name="l08114"></a>08114 9, 3, 1, 87, 4, 104, 2, 102, 3, 102, 4, 120, 2, 118, 4, -23, 3, -7, 3, 8, 25, 1, 20, 11, 38,
-<a name="l08115"></a>08115 11, 47, 15, 54, 11, 72, 2, 71, 4, 88, 2, 8, 12, 16, 1, 4, 108, 0, 12, 16, 12, 2, 12, 12, 2,
-<a name="l08116"></a>08116 0, 14, 9, 8, 3, 2, 6, 4, 12, 32, 1, -72, -1, -8, 64, 26, 11, 13, 6, 85, 1, 36, 15, 16, 6,
-<a name="l08117"></a>08117 85, -113, 1, 1, 31, 1, 47, 1, 111, 1, 127, 1, 4, 1, 1, 9, 2, -72, -1, -16, 64, 16, 3, 32, 15,
-<a name="l08118"></a>08118 2, 63, 2, 95, 2, 127, 2, 4, 2, 2, 8, 32, 9, -71, 2, -58, 0, 15, 16, -10, -19, 51, 47, 93, -19,
-<a name="l08119"></a>08119 56, 18, 57, 47, 93, 113, 43, 43, -19, 57, 0, 63, 60, 60, 60, 63, 18, 57, 47, 93, -19, 51, 56, 49, 48,
-<a name="l08120"></a>08120 1, 93, 93, 113, 43, 1, 17, 1, 51, 1, 54, 54, 55, 19, 51, 3, 2, 5, 17, 1, 89, -2, -64, -53, 1,
-<a name="l08121"></a>08121 0, 79, 64, 10, 29, -57, 33, 29, -2, -14, -2, 104, 3, 41, 2, -108, -3, -17, 47, 115, 97, 1, 14, -2, -51,
-<a name="l08122"></a>08122 -2, -14, 105, -4, -19, 0, 1, 0, 10, 0, 0, 3, 102, 4, 37, 0, 17, 0, -101, -71, 0, 10, -1, -20, 64,
-<a name="l08123"></a>08123 28, 11, 12, 6, 85, 11, 20, 13, 16, 6, 85, 7, 13, 47, 19, 58, 5, 58, 10, 72, 10, 118, 4, -124, 4,
-<a name="l08124"></a>08124 7, 12, 16, 5, -70, -1, -16, 0, 13, -1, -16, 64, 30, 5, 13, 5, 13, 6, 12, 10, 6, 12, 12, -70, 11,
-<a name="l08125"></a>08125 10, 20, 11, 11, 10, 6, 10, -7, 7, 10, 17, 12, 11, 6, 9, 9, 12, 11, -72, -1, -16, 64, 22, 15, 11,
-<a name="l08126"></a>08126 47, 11, 2, 11, 11, 0, 10, 6, 6, 7, 7, 17, 10, 16, 16, 6, 85, 17, 32, 0, -71, 2, -58, 0, 19,
-<a name="l08127"></a>08127 16, -10, -19, 43, 51, 47, 60, 17, 51, 17, 51, 47, 93, 56, 51, 51, 47, 0, 63, 60, 60, 63, -3, 57, -121,
-<a name="l08128"></a>08128 5, 46, 43, -121, 125, -60, 1, 17, 18, 57, 57, 0, 57, 57, 56, 1, 56, 56, 49, 48, 1, 93, 43, 43, 1,
-<a name="l08129"></a>08129 7, 14, 2, 7, 19, 21, 33, 53, 33, 1, 51, 1, 54, 54, 53, 55, 3, 102, 10, 5, 33, 106, 116, -29, -3,
-<a name="l08130"></a>08130 4, 2, 21, -3, -74, -39, 1, 39, 75, 64, 10, 4, 37, -65, 95, 117, 124, 67, -2, -98, 113, -96, 3, -123, -2,
-<a name="l08131"></a>08131 41, 55, 125, 115, -80, 0, 0, 2, 0, -106, -2, 104, 3, -8, 4, 37, 0, 20, 0, 24, 0, -97, 64, 25, 16,
-<a name="l08132"></a>08132 26, 117, 6, -125, 6, 3, 22, 21, 14, 10, 10, 20, -7, 0, 6, 8, 32, 11, 14, 16, 16, 6, 85, 11, -72,
-<a name="l08133"></a>08133 -1, -12, 64, 28, 15, 15, 6, 85, 11, 12, 13, 13, 6, 85, 11, 22, 12, 12, 6, 85, 11, 11, 0, 18, 32,
-<a name="l08134"></a>08134 2, 6, 16, 16, 6, 85, 2, -72, -1, -11, -76, 15, 15, 6, 85, 2, -72, -1, -11, -73, 11, 12, 6, 85, 16,
-<a name="l08135"></a>08135 2, 1, 2, -69, 2, -54, 0, 26, 0, 23, 2, -29, -78, 22, 22, 0, -72, -1, -23, -76, 15, 16, 6, 85, 0,
-<a name="l08136"></a>08136 -72, -1, -13, -76, 13, 13, 6, 85, 0, -72, -1, -11, -76, 12, 12, 6, 85, 0, -71, 2, -57, 0, 25, 16, -10,
-<a name="l08137"></a>08137 43, 43, 43, 50, 47, -19, 16, -10, 93, 43, 43, 43, -19, 18, 57, 47, 43, 43, 43, 43, -19, 0, 63, -19, 63,
-<a name="l08138"></a>08138 63, 47, 49, 48, 1, 93, 19, 33, 17, 20, 6, 7, 7, 6, 21, 21, 35, 53, 52, 54, 55, 55, 54, 54, 53,
-<a name="l08139"></a>08139 53, 33, 19, 17, 51, 17, -106, 3, 98, 41, 53, 53, 82, -65, 39, 62, 59, 43, 27, -3, 92, 16, -73, 4, 37,
-<a name="l08140"></a>08140 -2, -8, 113, -119, 72, 72, 110, 123, -86, -113, 109, -121, 78, 76, 55, 89, 73, -113, -6, -29, 3, -18, -4, 18, 0,
-<a name="l08141"></a>08141 0, 1, 0, 40, 0, 0, 3, -126, 4, 49, 0, 14, 0, 104, -73, 43, 10, 59, 10, 73, 10, 3, 3, -70, -1,
-<a name="l08142"></a>08142 -16, 0, 4, -1, -16, 64, 21, 7, 10, 14, -7, 0, 6, 0, 12, -7, 2, 7, 14, 14, 47, 0, 1, 0, 0,
-<a name="l08143"></a>08143 8, 32, 5, -72, -1, -14, 64, 11, 12, 12, 6, 85, 5, 8, 13, 13, 6, 85, 5, -72, -1, -35, -76, 15, 15,
-<a name="l08144"></a>08144 6, 85, 5, -72, -1, -32, -76, 16, 16, 6, 85, 5, -71, 2, -56, 0, 16, 16, -10, 43, 43, 43, 43, -19, 51,
-<a name="l08145"></a>08145 47, 93, 51, 47, 0, 63, -19, 51, 63, -19, 63, 49, 48, 56, 1, 56, 1, 93, 19, 54, 51, 32, 22, 21, 17,
-<a name="l08146"></a>08146 35, 17, 52, 38, 38, 35, 34, 7, 40, -102, -127, 1, 66, -3, -66, 62, -80, -98, 107, -107, 4, 27, 22, -7, -5,
-<a name="l08147"></a>08147 -3, -61, 2, 10, -111, -108, 92, 20, 0, 1, 0, 100, -1, -29, 5, 42, 4, 37, 0, 33, 0, -111, 64, 70, 7,
-<a name="l08148"></a>08148 15, 8, 19, 22, 15, 28, 19, 25, 26, 43, 31, 47, 35, 49, 15, 53, 16, 61, 19, 61, 26, 49, 30, 72, 20,
-<a name="l08149"></a>08149 72, 25, 89, 5, 92, 18, 90, 31, 104, 5, 106, 18, 106, 31, 117, 11, 114, 12, 116, 16, 118, 26, 121, 31, -116,
-<a name="l08150"></a>08150 5, -119, 30, -119, 31, 28, 14, 3, 3, 33, 17, -7, 28, 11, 22, 7, 33, 6, 8, -72, -1, -8, 64, 24, 16,
-<a name="l08151"></a>08151 16, 6, 85, 22, 8, 16, 16, 6, 85, 33, 8, 16, 16, 6, 85, 8, 32, 7, 7, 33, 22, 32, 23, -72, 2,
-<a name="l08152"></a>08152 -58, -75, 35, 14, 3, 0, 32, 33, -71, 2, -59, 0, 34, 16, -12, -3, 50, 50, 16, -10, -19, 18, 57, 47, -19,
-<a name="l08153"></a>08153 43, 43, 43, 0, 63, 60, 60, 63, -19, 18, 57, 47, 51, 49, 48, 1, 93, 1, 23, 18, 23, 50, 54, 53, 19,
-<a name="l08154"></a>08154 51, 3, 14, 3, 7, 22, 22, 51, 50, 54, 54, 55, 19, 51, 3, 6, 2, 4, 35, 34, 38, 2, 17, 3, 1,
-<a name="l08155"></a>08155 38, 4, 6, 17, 106, -86, 21, -64, 24, 6, 26, 81, -81, -108, 25, -74, -123, 123, -80, 84, 14, 43, -64, 36, 21,
-<a name="l08156"></a>08156 108, -2, -11, -45, -69, -3, 125, 14, 4, 37, -84, -2, -9, 102, 106, -108, 1, 29, -2, -78, 85, 88, 98, 73, 12,
-<a name="l08157"></a>08157 108, -126, 117, -71, -85, 1, -57, -2, 119, -35, -2, -38, -74, -75, 1, 80, 1, 24, 1, 37, 0, 1, 0, 40, -1,
-<a name="l08158"></a>08158 -8, 4, -109, 4, 49, 0, 30, 0, -102, 64, 76, 73, 21, 73, 22, 90, 21, 101, 15, 117, 15, 5, 1, -24, 0,
-<a name="l08159"></a>08159 0, 3, -7, 29, 10, 18, 10, 7, 24, -7, 12, 7, 10, 10, 0, 24, 32, 7, 11, 11, 11, 6, 85, 7, 15,
-<a name="l08160"></a>08160 12, 12, 6, 85, 7, 15, 15, 15, 6, 85, 7, 8, 16, 16, 6, 85, 64, 7, 1, 7, 7, 16, 0, 0, 1,
-<a name="l08161"></a>08161 1, 10, 9, 9, 47, 10, 1, 10, 10, 19, 32, 16, -72, -1, -11, -76, 12, 12, 6, 85, 16, -72, -1, -35, -76,
-<a name="l08162"></a>08162 15, 15, 6, 85, 16, -72, -1, -32, -76, 16, 16, 6, 85, 16, -71, 2, -56, 0, 32, 16, -10, 43, 43, 43, -19,
-<a name="l08163"></a>08163 51, 47, 93, 51, 47, 17, 51, 47, 51, 47, 18, 57, 47, 113, 43, 43, 43, 43, -19, 18, 57, 47, 0, 63, -3,
-<a name="l08164"></a>08164 50, 63, 63, -19, 51, 25, 47, 24, -19, 49, 48, 1, 93, 55, 55, 22, 51, 50, 54, 53, 17, 34, 7, 39, 54,
-<a name="l08165"></a>08165 51, 50, 4, 22, 21, 17, 35, 17, 52, 38, 38, 35, 7, 17, 20, 6, 6, 35, 34, 40, 33, 52, 61, 69, 52,
-<a name="l08166"></a>08166 86, 125, 17, -28, -21, -18, 1, 0, -121, -65, 47, -98, -74, 96, 37, 117, 116, 94, 25, -113, 18, 61, 80, 2, 100,
-<a name="l08167"></a>08167 18, -97, 29, 80, -43, -49, -3, -61, 2, 10, -101, -112, 90, 2, -3, 125, 100, 106, 68, 0, 0, 2, 0, -101, 0,
-<a name="l08168"></a>08168 0, 3, 87, 4, 37, 0, 3, 0, 7, 0, 79, -74, 2, 6, 10, 3, 7, 6, 9, -72, 2, -56, 64, 25, 0,
-<a name="l08169"></a>08169 32, 3, 13, 15, 15, 6, 85, 3, 3, 12, 12, 6, 85, 3, -108, 4, 32, 7, 20, 16, 16, 6, 85, 7, -72,
-<a name="l08170"></a>08170 -1, -3, -76, 13, 13, 6, 85, 7, -72, -1, -3, -76, 11, 11, 6, 85, 7, -71, 2, -57, 0, 8, 16, -10, 43,
-<a name="l08171"></a>08171 43, 43, -3, -10, 43, 43, -3, -26, 0, 63, 60, 63, 60, 49, 48, 1, 17, 35, 17, 33, 17, 35, 17, 3, 87,
-<a name="l08172"></a>08172 -61, -2, -54, -61, 4, 37, -5, -37, 4, 37, -5, -37, 4, 37, 0, 0, 2, 0, -101, 0, 0, 3, 87, 4, 37,
-<a name="l08173"></a>08173 0, 3, 0, 7, 0, 79, -74, 2, 10, 6, 3, 7, 6, 9, -72, 2, -56, 64, 25, 0, 32, 3, 13, 15, 15,
-<a name="l08174"></a>08174 6, 85, 3, 3, 12, 12, 6, 85, 3, -108, 4, 32, 7, 20, 16, 16, 6, 85, 7, -72, -1, -3, -76, 13, 13,
-<a name="l08175"></a>08175 6, 85, 7, -72, -1, -3, -76, 11, 11, 6, 85, 7, -71, 2, -57, 0, 8, 16, -10, 43, 43, 43, -3, -10, 43,
-<a name="l08176"></a>08176 43, -3, -26, 0, 63, 60, 47, 63, 49, 48, 1, 17, 35, 17, 33, 17, 35, 17, 3, 87, -61, -2, -54, -61, 4,
-<a name="l08177"></a>08177 37, -5, -37, 4, 37, -3, -37, 2, 37, 0, 0, 2, 0, -101, 2, 0, 3, 87, 4, 37, 0, 3, 0, 7, 0,
-<a name="l08178"></a>08178 78, -75, 2, 6, 3, 7, 6, 9, -72, 2, -56, 64, 25, 0, 32, 3, 13, 15, 15, 6, 85, 3, 3, 12, 12,
-<a name="l08179"></a>08179 6, 85, 3, -108, 4, 32, 7, 20, 16, 16, 6, 85, 7, -72, -1, -3, -76, 13, 13, 6, 85, 7, -72, -1, -3,
-<a name="l08180"></a>08180 -76, 11, 11, 6, 85, 7, -71, 2, -57, 0, 8, 16, -10, 43, 43, 43, -3, -10, 43, 43, -3, -26, 0, 63, 60,
-<a name="l08181"></a>08181 47, 47, 49, 48, 1, 17, 35, 17, 33, 17, 35, 17, 3, 87, -61, -2, -54, -61, 4, 37, -3, -37, 2, 37, -3,
-<a name="l08182"></a>08182 -37, 2, 37, 0, 1, 0, 90, 2, -92, 1, -119, 4, 37, 0, 3, 0, 25, 64, 12, 3, 0, 0, 1, 6, 2,
-<a name="l08183"></a>08183 60, 1, 100, 3, -84, 0, 47, -19, -4, -19, 0, 63, 51, 47, 60, 49, 48, 19, 19, 51, 3, 90, 98, -51, -74,
-<a name="l08184"></a>08184 2, -92, 1, -127, -2, 127, 0, 0, 2, 0, 90, 2, -92, 2, -4, 4, 37, 0, 3, 0, 7, 0, 48, 64, 26,
-<a name="l08185"></a>08185 0, 4, 1, 5, 4, 4, 5, 6, 2, 60, 1, 100, 3, -84, 95, 0, 1, 0, 0, 6, 60, 5, 100, 7, -84,
-<a name="l08186"></a>08186 4, 47, -19, -4, -3, 50, 47, 93, -19, -4, -19, 0, 63, 51, 47, 16, 60, 16, 60, 49, 48, 1, 19, 51, 3,
-<a name="l08187"></a>08187 33, 19, 51, 3, 1, -51, 98, -51, -74, -2, 20, 98, -51, -74, 2, -92, 1, -127, -2, 127, 1, -127, -2, 127, 0,
-<a name="l08188"></a>08188 2, 0, -101, 0, 0, 5, -21, 4, 37, 0, 13, 0, 27, 0, 106, 64, 9, 22, 6, 2, 16, 15, 1, 15, 18,
-<a name="l08189"></a>08189 17, -72, 2, -46, -75, 14, 14, 9, 10, 6, 7, -72, 2, -46, -78, 10, 6, 29, -68, 2, -56, 0, 23, 2, -48,
-<a name="l08190"></a>08190 0, 22, 2, -47, -76, 1, 1, 0, 2, 0, -70, 2, -48, 0, 3, 2, -47, -77, 17, 16, 14, 16, -65, 2, -48,
-<a name="l08191"></a>08191 0, 15, 2, -47, 0, 7, 2, -48, 0, 10, 2, -57, 0, 28, 16, -10, -3, -10, -19, 60, 16, 60, -10, -19, 60,
-<a name="l08192"></a>08192 16, 60, 16, -10, -3, -26, 0, 63, -3, 60, 63, 60, 16, -3, 60, 47, 93, 47, 63, 49, 48, 1, 17, 35, 17,
-<a name="l08193"></a>08193 52, 38, 35, 33, 17, 35, 17, 33, 50, 22, 1, 17, 51, 17, 33, 50, 54, 53, 17, 51, 17, 20, 6, 35, 4,
-<a name="l08194"></a>08194 94, -88, 70, 78, -2, 33, -88, 2, -88, -117, -112, -3, -54, -88, 1, -33, 88, 60, -88, -120, -109, 3, 23, -2, 65,
-<a name="l08195"></a>08195 1, -82, 77, 67, -4, 106, 4, 37, -107, -4, 112, 2, -51, -3, -62, 78, 66, 3, 6, -4, -23, 115, -101, 0, 0,
-<a name="l08196"></a>08196 2, -1, -84, 0, 0, 1, 94, 5, 71, 0, 12, 0, 16, 0, 78, -71, 0, 0, 2, -45, -73, 7, -84, 16, 15,
-<a name="l08197"></a>08197 10, 16, 6, 10, -72, 2, -45, -76, 47, 3, 1, 3, 18, -72, 2, -56, -78, 13, 32, 16, -72, -1, -2, -76, 11,
-<a name="l08198"></a>08198 11, 6, 85, 16, -72, -1, -2, 64, 11, 13, 13, 6, 85, 16, 18, 16, 16, 6, 85, 16, -71, 2, -57, 0, 17,
-<a name="l08199"></a>08199 16, -12, 43, 43, 43, -3, -26, 47, 93, -19, 0, 63, 63, 16, -2, -19, 49, 48, 17, 50, 22, 21, 20, 6, 6,
-<a name="l08200"></a>08200 35, 38, 38, 53, 52, 54, 1, 17, 35, 17, 41, 43, 22, 38, 24, 37, 47, 49, 1, -127, -61, 5, 71, 53, 32,
-<a name="l08201"></a>08201 24, 38, 22, 1, 50, 33, 37, 48, -2, -34, -5, -37, 4, 37, -1, -1, 0, 40, -2, 104, 3, -126, 4, 49, 2,
-<a name="l08202"></a>08202 38, 2, -86, 0, 0, 1, 7, 2, -115, 0, 8, 1, -10, 0, 29, 64, 15, 2, 1, -113, 15, 1, 0, 15, 15,
-<a name="l08203"></a>08203 2, 2, 65, 1, 2, 2, 15, -71, 2, -38, 0, 41, 0, 43, 1, 43, 93, 53, 53, 0, -1, -1, 0, 40, -2,
-<a name="l08204"></a>08204 104, 3, -126, 4, 49, 2, 38, 2, -86, 0, 0, 1, 7, 2, -107, 0, 8, 1, -10, 0, 44, 64, 12, 1, 80,
-<a name="l08205"></a>08205 15, -112, 15, 2, -112, 15, -80, 15, 2, 15, -72, -1, -64, 64, 12, 9, 12, 52, 0, 15, 15, 2, 2, 65, 1,
-<a name="l08206"></a>08206 1, 18, -71, 2, -38, 0, 41, 0, 43, 1, 43, 43, 93, 113, 53, -1, -1, -1, 87, 0, 0, 3, 70, 5, -70,
-<a name="l08207"></a>08207 0, 38, 2, -84, 0, 0, 1, 7, 2, -106, -2, 86, 0, 0, 0, 22, 64, 10, 1, 0, 27, 27, 38, 38, 65,
-<a name="l08208"></a>08208 1, 1, 23, -71, 2, -37, 0, 41, 0, 43, 1, 43, 53, -1, -1, -1, 87, 0, 0, 3, 70, 5, -70, 0, 38,
-<a name="l08209"></a>08209 2, -84, 0, 0, 0, 39, 2, -106, -2, 86, 0, 0, 1, 6, 2, -104, -31, 57, 0, 73, -79, 2, 48, -72, -1,
-<a name="l08210"></a>08210 -30, -76, 10, 10, 6, 85, 48, -72, -1, -30, -73, 15, 15, 6, 85, 0, 48, 1, 48, -72, -1, -64, 64, 19, 12,
-<a name="l08211"></a>08211 14, 52, 0, 48, 41, 20, 19, 65, 1, 0, 27, 27, 51, 51, 65, 2, 1, 38, -72, 2, -36, -77, 41, 1, 1,
-<a name="l08212"></a>08212 23, -71, 2, -37, 0, 41, 0, 43, 43, 1, 43, 53, 43, 43, 93, 43, 43, 53, 0, 0, 1, 0, 45, 0, 0,
-<a name="l08213"></a>08213 3, -63, 4, 37, 0, 13, 0, -126, 64, 32, 47, 15, 59, 9, 58, 10, 121, 6, 121, 9, 121, 10, -127, 2, 7,
-<a name="l08214"></a>08214 42, 2, 42, 6, 42, 9, 42, 10, 60, 2, 59, 6, 6, 6, 9, 8, 8, -72, -1, -10, 64, 46, 14, 17, 6,
-<a name="l08215"></a>08215 85, 8, -70, 7, 6, 20, 7, 7, 6, 6, 9, 58, 5, -7, 4, 4, 3, 10, 12, 7, 6, 9, 9, 4, 9,
-<a name="l08216"></a>08216 8, 6, 8, 7, 7, 13, 4, 4, 12, 32, 47, 13, -65, 13, -49, 13, 3, 13, -71, 2, -51, 0, 15, 16, -10,
-<a name="l08217"></a>08217 93, -19, 51, 47, 18, 57, 47, 51, 51, 17, 51, 25, 17, 57, 47, 0, 24, 63, 60, 63, 60, 16, -3, -28, 57,
-<a name="l08218"></a>08218 -121, 5, 46, 43, 43, -121, 125, -60, 49, 48, 1, 93, 93, 1, 2, 0, 35, 33, 53, 33, 3, 51, 19, 54, 19,
-<a name="l08219"></a>08219 19, 51, 3, -73, 17, -2, -5, -22, -2, 118, 1, 20, -79, -55, -94, -18, 13, 10, -63, 3, 12, -2, 40, -2, -52,
-<a name="l08220"></a>08220 -96, 3, -123, -4, 121, 67, 1, -41, 1, 109, 0, -1, -1, 0, 100, -1, -29, 5, 42, 5, 70, 2, 38, 2, -71,
-<a name="l08221"></a>08221 0, 0, 1, 7, 2, -106, 3, 125, 0, 0, 0, 26, 64, 13, 1, 79, 46, 1, 10, 46, 46, 22, 22, 65, 1,
-<a name="l08222"></a>08222 1, 34, -71, 2, -35, 0, 41, 0, 43, 1, 43, 113, 53, -1, -1, 0, 100, -1, -29, 5, 42, 5, 70, 2, 38,
-<a name="l08223"></a>08223 2, -71, 0, 0, 1, 7, 2, -106, -1, 106, 0, 0, 0, 22, 64, 10, 1, 0, 46, 46, 33, 33, 65, 1, 1,
-<a name="l08224"></a>08224 34, -71, 2, -35, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 100, -1, -29, 5, 42, 5, 70, 2, 38, 2, -31,
-<a name="l08225"></a>08225 0, 0, 1, 7, 2, -106, 3, 125, 0, 0, 0, 26, 64, 13, 2, 79, 59, 1, 10, 59, 59, 22, 22, 65, 2,
-<a name="l08226"></a>08226 1, 47, -71, 2, -35, 0, 41, 0, 43, 1, 43, 113, 53, -1, -1, 0, 100, -1, -29, 5, 42, 5, 70, 2, 38,
-<a name="l08227"></a>08227 2, -31, 0, 0, 1, 7, 2, -106, -1, 106, 0, 0, 0, 22, 64, 10, 2, 0, 59, 59, 33, 33, 65, 2, 1,
-<a name="l08228"></a>08228 47, -71, 2, -35, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 105, -2, -59, 4, 74, 4, 37, 2, 38, 2, -96,
-<a name="l08229"></a>08229 0, 0, 1, 7, 2, -108, 0, -21, 0, 0, 0, 22, 64, 10, 1, 0, 23, 24, 6, 17, 65, 1, 1, 23, -71,
-<a name="l08230"></a>08230 2, -34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 105, -2, 82, 4, 74, 4, 37, 2, 38, 2, -96, 0, 0,
-<a name="l08231"></a>08231 1, 7, 2, -107, 0, -21, 0, 0, 0, 22, 64, 10, 1, 0, 25, 26, 6, 17, 65, 1, 1, 25, -71, 2, -34,
-<a name="l08232"></a>08232 0, 41, 0, 43, 1, 43, 53, 0, 2, 0, 105, 0, 0, 4, 74, 4, 37, 0, 21, 0, 37, 1, 30, 64, 83,
-<a name="l08233"></a>08233 -126, 20, -128, 21, -89, 12, -40, 0, -41, 21, 5, 85, 3, 86, 9, 86, 12, 103, 3, 127, 8, 115, 20, -116, 9,
-<a name="l08234"></a>08234 7, 59, 21, 72, 1, 77, 2, 73, 8, 77, 9, 73, 12, 77, 21, 7, 25, 8, 38, 12, 56, 1, 58, 2, 59,
-<a name="l08235"></a>08235 8, 59, 9, 57, 12, 7, 63, 21, -127, 9, -113, 21, -90, 12, -38, 21, 5, 8, 2, 41, 19, 40, 21, 61, 2,
-<a name="l08236"></a>08236 4, 2, 24, 12, 17, 6, 85, 12, -72, -1, -24, -76, 12, 17, 6, 85, 34, -72, 2, -45, 64, 44, -80, 26, 1,
-<a name="l08237"></a>08237 26, 26, 6, 10, 21, 12, 11, 11, 0, 2, 9, 10, 1, 1, 0, 11, 11, -70, 10, 1, 20, 10, 10, 1, 21,
-<a name="l08238"></a>08238 12, 1, 9, 4, 10, 6, 5, 0, 1, 10, 17, 16, 11, 10, 6, 30, -72, 2, -45, 64, 33, 0, 22, 32, 22,
-<a name="l08239"></a>08239 127, 22, -81, 22, -65, 22, 5, 31, 22, 47, 22, 2, 22, 22, 5, 15, 16, 18, 4, 5, 7, 9, 2, 12, 21,
-<a name="l08240"></a>08240 4, 17, 6, 1, -72, 2, 96, -73, -128, 0, 1, 0, 0, 16, 32, 17, -72, 2, -54, -74, 39, 11, 10, 5, 32,
-<a name="l08241"></a>08241 10, 6, -71, 2, -55, 0, 38, 16, -10, 50, -19, 47, 51, 16, -10, -19, 51, 47, 93, -19, 17, 18, 23, 57, 51,
-<a name="l08242"></a>08242 17, 51, 50, 17, 51, 18, 57, 47, 113, 93, -19, 0, 63, 60, 60, 60, 63, 60, 60, 60, 18, 23, 57, -121, 5,
-<a name="l08243"></a>08243 46, 43, -121, 125, -60, 7, 14, 60, 60, -121, 14, 16, -60, 60, 0, 24, 17, 18, 57, 47, 93, -19, 43, 43, 49,
-<a name="l08244"></a>08244 48, 0, 93, 93, 1, 93, 93, 93, 93, 33, 35, 1, 6, 7, 3, 35, 19, 18, 55, 3, 51, 1, 54, 54, 55,
-<a name="l08245"></a>08245 55, 51, 7, 6, 6, 7, 1, 52, 54, 54, 51, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 4, 74, -20,
-<a name="l08246"></a>08246 -2, 107, 93, 18, 43, -58, 43, 30, -78, -9, -21, 1, 84, 62, 50, 13, 25, -58, 24, 17, 108, 103, -2, -83, 23,
-<a name="l08247"></a>08247 38, 23, 24, 38, 22, 22, 38, 24, 23, 38, 22, 2, 61, 51, -101, -2, -111, 1, 111, 1, 0, 90, 1, 92, -2,
-<a name="l08248"></a>08248 37, 41, 109, 112, -43, -37, -100, -81, 62, -2, -35, 24, 37, 23, 23, 37, 24, 24, 37, 23, 23, 37, 0, -1, -1,
-<a name="l08249"></a>08249 0, 50, 0, 0, 4, 41, 4, 49, 2, 38, 2, -95, 0, 0, 1, 6, 2, -104, 8, -20, 0, 32, 64, 19, 1,
-<a name="l08250"></a>08250 0, 29, 16, 29, 32, 29, 96, 29, 4, 0, 29, 22, 15, 15, 65, 1, 1, 19, -71, 2, -33, 0, 41, 0, 43,
-<a name="l08251"></a>08251 1, 43, 93, 53, -1, -1, 0, 25, 0, 0, 2, -24, 4, 49, 2, 38, 2, -94, 0, 0, 1, 6, 2, -104, -40,
-<a name="l08252"></a>08252 70, 0, 40, 64, 26, 1, 64, 36, -128, 36, 2, 32, 36, 80, 36, -112, 36, -80, 36, -64, 36, 5, 0, 36, 29,
-<a name="l08253"></a>08253 17, 17, 65, 1, 1, 26, -71, 2, -32, 0, 41, 0, 43, 1, 43, 93, 113, 53, -1, -1, 0, 45, 0, 0, 3,
-<a name="l08254"></a>08254 -28, 4, 37, 2, 38, 2, -93, 0, 0, 1, 6, 2, -104, 78, 0, 0, 32, 64, 19, 1, 0, 18, 16, 18, 32,
-<a name="l08255"></a>08255 18, -80, 18, 4, 0, 18, 11, 5, 4, 65, 1, 1, 8, -71, 2, -36, 0, 41, 0, 43, 1, 43, 93, 53, -1,
-<a name="l08256"></a>08256 -1, 0, -106, 0, 0, 4, 64, 4, 49, 2, 38, 2, -92, 0, 0, 1, 7, 2, -104, 1, 12, -1, -66, 0, 30,
-<a name="l08257"></a>08257 64, 17, 2, 64, 29, 112, 29, -80, 29, 3, 0, 29, 22, 15, 8, 65, 2, 1, 19, -71, 2, -31, 0, 41, 0,
-<a name="l08258"></a>08258 43, 1, 43, 93, 53, 0, 2, 0, 0, 0, 0, 1, -80, 4, 37, 0, 3, 0, 18, 0, 87, -71, 0, 12, 2,
-<a name="l08259"></a>08259 -45, -73, 4, 2, 10, 3, 6, 3, 32, 0, -72, -1, -18, 64, 28, 16, 16, 6, 85, 0, 10, 13, 15, 6, 85,
-<a name="l08260"></a>08260 0, 64, 67, 68, 52, 0, 64, 61, 53, -97, 0, 1, 79, 0, -1, 0, 2, 0, -69, 2, -56, 0, 20, 0, 8,
-<a name="l08261"></a>08261 2, -45, 64, 9, 47, 15, 1, 15, 64, 16, 17, 52, 15, 47, 43, 113, -19, 16, -10, 113, 114, 43, 43, 43, 43,
-<a name="l08262"></a>08262 -3, 0, 63, 63, 47, -19, 49, 48, 1, 17, 35, 17, 3, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 53, 52,
-<a name="l08263"></a>08263 54, 54, 1, -80, -62, -102, 22, 37, 25, 22, 38, 24, 31, 53, 22, 38, 4, 37, -5, -37, 4, 37, -2, 113, 20,
-<a name="l08264"></a>08264 38, 26, 24, 38, 22, 43, 41, 24, 37, 23, 0, 0, 2, 0, 0, 0, 0, 3, 59, 4, 37, 0, 19, 0, 34,
-<a name="l08265"></a>08265 0, -114, 64, 10, 15, 36, 31, 36, 80, 1, 98, 1, 4, 28, -72, 2, -45, 64, 29, 16, 20, 1, 20, 9, 10,
-<a name="l08266"></a>08266 0, 39, 17, -7, 18, 6, 16, 16, 0, 17, 8, 32, 9, 2, 16, 16, 6, 85, 9, 9, 3, 32, 14, -72, -1,
-<a name="l08267"></a>08267 -6, 64, 43, 11, 13, 6, 85, 14, 22, 15, 15, 6, 85, 14, 2, 16, 16, 6, 85, 14, 64, 14, 16, 52, 79,
-<a name="l08268"></a>08268 14, 1, 15, 14, -49, 14, -33, 14, 3, 14, 19, 64, 14, 23, 52, 15, 19, 31, 19, 2, 19, -72, 2, -52, -77,
-<a name="l08269"></a>08269 36, 18, -59, 24, -71, 2, -45, 0, 32, 47, -3, -26, 16, -26, 93, 43, 47, 93, 113, 43, 43, 43, 43, -19, 51,
-<a name="l08270"></a>08270 47, 43, -19, 17, 18, 57, 47, 0, 63, -3, -28, 63, 47, 93, -19, 49, 48, 1, 93, 1, 34, 6, 21, 20, 23,
-<a name="l08271"></a>08271 22, 21, 21, 35, 53, 52, 39, 38, 53, 52, 55, 33, 53, 33, 1, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38,
-<a name="l08272"></a>08272 38, 53, 52, 54, 3, 59, -103, -83, 9, 26, -64, 20, 7, -121, -2, -12, 2, -125, -3, 25, 22, 37, 25, 22, 38,
-<a name="l08273"></a>08273 24, 24, 37, 23, 48, 3, -98, -81, -109, 29, 84, -14, 102, -109, -82, 106, -36, 74, 49, -91, 113, -96, -2, -86, 20,
-<a name="l08274"></a>08274 38, 26, 24, 38, 22, 22, 38, 24, 35, 49, 0, -1, -1, 0, -116, -1, -29, 4, 64, 4, 59, 2, 38, 2, -88,
-<a name="l08275"></a>08275 0, 0, 1, 7, 2, -104, 1, 20, 0, 0, 0, 22, 64, 10, 1, 0, 40, 33, 29, 22, 65, 1, 1, 30, -71,
-<a name="l08276"></a>08276 2, -33, 0, 41, 0, 43, 1, 43, 53, 0, 2, 0, 0, 2, 0, 1, -80, 4, 37, 0, 3, 0, 16, 0, 102,
-<a name="l08277"></a>08277 -71, 0, 10, 2, -45, 64, 12, 4, 4, 0, 2, 1, 2, 2, 3, 6, 3, 32, 0, -72, -1, -18, 64, 34, 16,
-<a name="l08278"></a>08278 16, 6, 85, 0, 10, 13, 15, 6, 85, 0, 40, 11, 12, 6, 85, 0, 64, 67, 68, 52, 0, 64, 61, 53, -97,
-<a name="l08279"></a>08279 0, 1, 79, 0, -1, 0, 2, 0, -69, 2, -56, 0, 18, 0, 7, 2, -45, 64, 9, 47, 13, 1, 13, 64, 16,
-<a name="l08280"></a>08280 17, 52, 13, 47, 43, 113, -19, 16, -12, 113, 114, 43, 43, 43, 43, 43, -3, 0, 63, 51, 47, 93, 57, 47, -19,
-<a name="l08281"></a>08281 49, 48, 1, 17, 35, 17, 7, 50, 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 54, 1, -80, -62, -102, 31, 53,
-<a name="l08282"></a>08282 49, 35, 31, 53, 22, 38, 4, 37, -3, -37, 2, 37, -10, 43, 41, 35, 49, 44, 40, 24, 38, 22, 0, -1, -1,
-<a name="l08283"></a>08283 0, 40, -2, 104, 3, -126, 4, 49, 2, 38, 2, -86, 0, 0, 1, 6, 2, -104, 18, -72, 0, 22, 64, 10, 1,
-<a name="l08284"></a>08284 0, 25, 18, 14, 8, 65, 1, 1, 15, -71, 2, -31, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 80, -1, -16,
-<a name="l08285"></a>08285 3, 86, 4, 55, 2, 38, 2, -85, 0, 0, 1, 6, 2, -104, -11, -52, 0, 40, -79, 1, 34, -72, -1, -32, 64,
-<a name="l08286"></a>08286 20, 11, 11, 6, 85, 0, 34, 96, 34, 112, 34, 3, 0, 34, 27, 13, 7, 65, 1, 1, 24, -71, 2, -33, 0,
-<a name="l08287"></a>08287 41, 0, 43, 1, 43, 93, 43, 53, -1, -1, 0, 60, 0, 0, 3, 70, 5, -70, 0, 38, 2, -84, 0, 0, 1,
-<a name="l08288"></a>08288 6, 2, -104, 31, 57, 0, 55, -79, 1, 33, -72, -1, -30, -76, 15, 15, 6, 85, 33, -72, -1, -30, -73, 10, 10,
-<a name="l08289"></a>08289 6, 85, 0, 33, 1, 33, -72, -1, -64, 64, 12, 12, 14, 52, 0, 33, 26, 20, 19, 65, 1, 1, 23, -71, 2,
-<a name="l08290"></a>08290 -36, 0, 41, 0, 43, 1, 43, 43, 93, 43, 43, 53, 0, -1, -1, 0, 80, 0, 0, 4, 62, 4, 49, 2, 38,
-<a name="l08291"></a>08291 2, -82, 0, 0, 1, 7, 2, -104, 1, 63, -1, -68, 0, 22, 64, 10, 1, 0, 37, 30, 21, 14, 65, 1, 1,
-<a name="l08292"></a>08292 27, -71, 2, -33, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 60, 0, 0, 2, 60, 4, 49, 2, 38, 2, -80,
-<a name="l08293"></a>08293 0, 0, 1, 7, 2, -104, -1, 98, -1, -50, 0, 49, -79, 1, 28, -72, -1, -30, -76, 11, 13, 6, 85, 28, -72,
-<a name="l08294"></a>08294 -1, -64, -73, 12, 14, 52, 16, 28, -112, 28, 2, -72, -1, -22, -73, 28, 21, 2, 3, 65, 1, 1, 18, -71, 2,
-<a name="l08295"></a>08295 -33, 0, 41, 0, 43, 1, 43, 93, 43, 43, 53, 0, 0, 3, 0, 90, -1, -31, 4, 62, 4, 66, 0, 13, 0,
-<a name="l08296"></a>08296 25, 0, 40, 1, 25, 64, 33, 47, 42, 92, 18, 92, 22, 83, 24, -89, 9, -88, 13, -25, 1, -23, 6, 8, 55,
-<a name="l08297"></a>08297 24, 71, 24, 83, 2, 89, 5, 89, 9, 83, 12, 83, 16, 7, 34, -72, 2, -45, 64, 25, 127, 26, -97, 26, 2,
-<a name="l08298"></a>08298 32, 26, -33, 26, 2, 47, 26, 1, 26, 26, 23, 17, -7, 11, 11, 23, -7, 3, 7, 30, -72, 2, -45, 64, 18,
-<a name="l08299"></a>08299 31, 38, 79, 38, 2, 95, 38, -113, 38, -97, 38, 3, 38, 38, 14, 20, 38, 7, -72, -1, -12, 64, 11, 16, 16,
-<a name="l08300"></a>08300 2, 85, 7, 12, 15, 15, 2, 85, 7, -72, -1, -12, 64, 11, 14, 14, 2, 85, 7, 10, 13, 13, 2, 85, 7,
-<a name="l08301"></a>08301 -72, -1, -10, 64, 11, 12, 12, 2, 85, 7, 0, 11, 11, 2, 85, 7, -72, -1, -26, -76, 11, 11, 6, 85, 7,
-<a name="l08302"></a>08302 -72, -1, -16, -76, 13, 13, 6, 85, 7, -72, -1, -14, -76, 12, 12, 6, 85, 7, -72, -1, -8, -76, 15, 15, 6,
-<a name="l08303"></a>08303 85, 7, -72, 2, -58, 64, 10, 42, 14, 38, 0, 10, 12, 15, 2, 85, 0, -72, -1, -10, 64, 29, 11, 11, 2,
-<a name="l08304"></a>08304 85, 0, 14, 11, 11, 6, 85, 0, 14, 13, 13, 6, 85, 0, 12, 16, 16, 6, 85, 0, 20, 12, 12, 6, 85,
-<a name="l08305"></a>08305 0, -72, -1, -10, -76, 15, 15, 6, 85, 0, -71, 2, -59, 0, 41, 16, -10, 43, 43, 43, 43, 43, 43, 43, -19,
-<a name="l08306"></a>08306 16, -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 17, 57, 47, 93, 113, -19, 0, 63, -19, 63, -3, 17,
-<a name="l08307"></a>08307 57, 47, 93, 113, 114, -19, 49, 48, 1, 93, 93, 19, 52, 0, 51, 50, 22, 18, 21, 20, 6, 6, 35, 34, 0,
-<a name="l08308"></a>08308 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53,
-<a name="l08309"></a>08309 52, 54, 90, 1, 17, -31, -122, -40, -108, 112, -30, -96, -31, -2, -17, -47, -104, -119, -108, -113, -102, -119, -111, -112, 1,
-<a name="l08310"></a>08310 35, 22, 37, 25, 22, 38, 24, 24, 37, 23, 48, 2, 14, -2, 1, 54, 117, -1, 0, -65, -99, -8, -104, 1, 49,
-<a name="l08311"></a>08311 -4, -68, -47, -30, -83, -64, -42, -25, 89, 20, 38, 26, 24, 38, 22, 22, 38, 24, 35, 49, 0, 2, 0, 110, -2,
-<a name="l08312"></a>08312 104, 3, -9, 4, 49, 0, 24, 0, 40, 0, -23, 64, 32, 9, 32, 31, 34, 52, 9, 32, 14, 17, 52, 73, 21,
-<a name="l08313"></a>08313 75, 22, 91, 21, -117, 22, -72, 15, 5, 25, 21, 41, 21, 56, 21, 61, 22, 4, 15, 23, -72, -1, -16, -78, 2,
-<a name="l08314"></a>08314 14, 21, -69, -1, -16, 0, 2, 0, 25, 2, -45, 64, 19, 33, 33, 3, 108, 8, 8, 13, 41, 18, 14, 11, 11,
-<a name="l08315"></a>08315 23, -7, 13, 7, 5, -59, 6, -72, -1, -64, -75, 25, 40, 52, 6, 85, 29, -72, 2, -45, -74, 37, 20, 15, 15,
-<a name="l08316"></a>08316 6, 85, 37, -72, -1, -22, 64, 20, 12, 13, 6, 85, 37, 64, 35, 38, 52, 37, 64, 25, 28, 52, 37, 37, 0,
-<a name="l08317"></a>08317 19, 32, 16, -72, -1, -8, -76, 11, 12, 6, 85, 16, -72, -1, -4, 64, 20, 13, 13, 6, 85, 16, 20, 15, 15,
-<a name="l08318"></a>08318 6, 85, 16, 35, 16, 16, 6, 85, 47, 16, 1, 16, -72, 2, -56, 64, 22, 42, 0, 32, 11, 18, 11, 13, 6,
-<a name="l08319"></a>08319 85, 11, 8, 15, 15, 6, 85, 11, 18, 16, 16, 6, 85, 11, -71, 2, -55, 0, 41, 16, -10, 43, 43, 43, -19,
-<a name="l08320"></a>08320 16, -10, 93, 43, 43, 43, 43, -19, 17, 57, 47, 43, 43, 43, 43, -19, -2, 43, -28, 0, 63, -19, 51, 47, 63,
-<a name="l08321"></a>08321 17, 18, 57, 47, -19, 51, 47, -19, 49, 48, 23, 56, 1, 23, 56, 93, 93, 43, 43, 1, 17, 20, 51, 50, 55,
-<a name="l08322"></a>08322 23, 6, 35, 34, 17, 17, 54, 51, 32, 22, 21, 17, 35, 17, 52, 38, 38, 35, 34, 1, 50, 22, 22, 21, 20,
-<a name="l08323"></a>08323 6, 6, 35, 34, 38, 38, 53, 52, 54, 54, 1, 38, 92, 45, 31, 19, 54, 68, -7, -76, -63, 1, 26, -6, -66,
-<a name="l08324"></a>08324 63, -91, 126, 98, 1, 11, 24, 37, 23, 22, 37, 25, 24, 38, 22, 19, 39, 3, -127, -2, -25, 122, 12, -117, 25,
-<a name="l08325"></a>08325 1, 23, 1, -113, 53, -26, -7, -4, 22, 3, -41, 117, -111, 78, -2, -93, 23, 37, 24, 25, 37, 22, 22, 38, 24,
-<a name="l08326"></a>08326 22, 37, 25, 0, 2, 0, 115, -1, -16, 4, 5, 4, 55, 0, 32, 0, 45, 0, -42, 64, 19, 77, 14, 75, 18,
-<a name="l08327"></a>08327 122, 14, -117, 14, 4, 47, 14, 47, 18, 61, 14, 61, 18, 4, 33, -72, 2, -45, 64, 28, 40, 40, 24, 108, 29,
-<a name="l08328"></a>08328 29, 2, 8, 11, -7, 10, 10, 13, -7, 8, 11, 0, 0, 19, -7, 2, 7, 11, 11, 10, 10, 32, 27, -72, -1,
-<a name="l08329"></a>08329 -64, -75, 25, 35, 52, 27, 62, 37, -70, 2, -45, 0, 43, -1, -28, 64, 32, 12, 13, 6, 85, 43, 8, 16, 16,
-<a name="l08330"></a>08330 6, 85, 43, 64, 33, 35, 52, 43, 64, 25, 28, 52, 43, 43, 22, 16, 38, 5, 8, 16, 16, 6, 85, 5, -72,
-<a name="l08331"></a>08331 -1, -8, -76, 15, 15, 6, 85, 5, -72, -1, -8, -73, 11, 13, 6, 85, 32, 5, 1, 5, -67, 2, -58, 0, 47,
-<a name="l08332"></a>08332 0, 22, 2, -49, 0, 32, -1, -8, 64, 17, 16, 16, 6, 85, 32, 14, 15, 15, 6, 85, 32, 14, 11, 13, 6,
-<a name="l08333"></a>08333 85, 32, -71, 2, -55, 0, 46, 16, -10, 43, 43, 43, -19, 16, -12, 93, 43, 43, 43, -19, 17, 57, 47, 43, 43,
-<a name="l08334"></a>08334 43, 43, -19, -18, 43, 17, 51, 47, 51, 47, 0, 63, -19, 51, 47, 63, -19, 51, 47, -19, 17, 18, 57, 47, -19,
-<a name="l08335"></a>08335 51, 47, -19, 49, 48, 1, 93, 93, 19, 54, 51, 50, 0, 17, 16, 0, 33, 34, 39, 55, 22, 51, 50, 54, 53,
-<a name="l08336"></a>08336 52, 38, 35, 34, 7, 21, 20, 51, 50, 55, 23, 6, 35, 34, 38, 53, 5, 50, 22, 22, 21, 20, 6, 35, 34,
-<a name="l08337"></a>08337 38, 53, 52, 54, 122, -83, -67, -23, 1, 56, -2, -64, -2, -30, -61, 113, 46, 98, -105, -85, -9, -62, -94, 84, 82,
-<a name="l08338"></a>08338 123, 18, 10, 21, 39, 66, 98, -103, 2, 10, 24, 37, 23, 48, 36, 35, 49, 48, 4, 2, 53, -2, -18, -2, -4,
-<a name="l08339"></a>08339 -2, -1, -2, -48, 71, -98, 63, -61, -60, -84, -47, 19, -62, 123, 2, -121, 19, -125, -121, 73, 23, 37, 24, 36, 48,
-<a name="l08340"></a>08340 48, 36, 35, 49, 0, -1, -1, 0, 10, 0, 0, 3, 102, 4, 37, 2, 38, 2, -74, 0, 0, 1, 7, 2, -104,
-<a name="l08341"></a>08341 -1, 101, -1, -115, 0, 43, -73, 1, 28, 18, 11, 12, 6, 85, 28, -72, -1, -18, 64, 16, 13, 13, 6, 85, 0,
-<a name="l08342"></a>08342 28, 28, 9, 9, 65, 71, 11, 1, 1, 1, 18, -71, 2, -31, 0, 41, 0, 43, 1, 113, 43, 43, 43, 53, 0,
-<a name="l08343"></a>08343 -1, -1, 0, -106, -2, 104, 3, -8, 4, 37, 2, 38, 2, -73, 0, 0, 1, 7, 2, -104, 0, -56, 0, 0, 0,
-<a name="l08344"></a>08344 58, 64, 28, 2, 35, 8, 16, 16, 6, 85, 35, 64, 62, 67, 52, 35, 64, 51, 55, 52, 35, 64, 29, 31, 52,
-<a name="l08345"></a>08345 -1, 35, 1, 112, 35, 1, -72, -1, -93, -73, 35, 28, 23, 19, 65, 2, 1, 25, -71, 2, -30, 0, 41, 0, 43,
-<a name="l08346"></a>08346 1, 43, 93, 113, 43, 43, 43, 43, 53, -1, -1, 0, 40, 0, 0, 3, -126, 4, 49, 2, 38, 2, -72, 0, 0,
-<a name="l08347"></a>08347 1, 6, 2, -104, 18, -72, 0, 32, -79, 1, 25, -72, -1, -18, 64, 13, 13, 13, 6, 85, 0, 25, 18, 14, 8,
-<a name="l08348"></a>08348 65, 1, 1, 15, -71, 2, -31, 0, 41, 0, 43, 1, 43, 43, 53, 0, 2, 0, 100, -1, -29, 5, 42, 4, 37,
-<a name="l08349"></a>08349 0, 33, 0, 46, 0, -40, 64, 90, 47, 48, -51, 19, -53, 20, -53, 25, -38, 20, -38, 25, 6, -92, 11, -92, 12,
-<a name="l08350"></a>08350 -86, 20, -86, 25, -69, 20, -69, 25, 6, 121, 31, -116, 5, -119, 30, -119, 31, -101, 20, -103, 25, 6, 106, 18, 106,
-<a name="l08351"></a>08351 31, 117, 11, 114, 12, 116, 16, 118, 26, 6, 72, 20, 72, 25, 89, 5, 92, 18, 90, 31, 104, 5, 6, 43, 31,
-<a name="l08352"></a>08352 49, 15, 53, 16, 61, 19, 61, 26, 49, 30, 6, 7, 15, 8, 19, 22, 15, 28, 19, 25, 26, 5, 34, -72, 2,
-<a name="l08353"></a>08353 -45, 64, 16, 40, 40, 17, 14, 3, 3, 33, 17, -7, 28, 11, 22, 7, 33, 6, 37, -72, 2, -45, -74, 111, 44,
-<a name="l08354"></a>08354 1, 44, 44, 22, 8, -72, -1, -8, 64, 27, 16, 16, 6, 85, 22, 8, 16, 16, 6, 85, 33, 8, 16, 16, 6,
-<a name="l08355"></a>08355 85, 8, 32, 48, 7, 1, 7, 7, 33, 22, 32, 23, -72, 2, -58, -75, 48, 14, 3, 0, 32, 33, -71, 2, -59,
-<a name="l08356"></a>08356 0, 47, 16, -10, -3, 50, 50, 16, -10, -19, 18, 57, 47, 93, -3, 43, 43, 43, 17, 57, 47, 93, -19, 0, 63,
-<a name="l08357"></a>08357 60, 60, 63, -19, 18, 57, 47, 51, 17, 57, 47, -19, 49, 48, 1, 93, 93, 93, 93, 93, 93, 93, 1, 23, 18,
-<a name="l08358"></a>08358 23, 50, 54, 53, 19, 51, 3, 14, 3, 7, 22, 22, 51, 50, 54, 54, 55, 19, 51, 3, 6, 2, 4, 35, 34,
-<a name="l08359"></a>08359 38, 2, 17, 3, 1, 50, 22, 21, 20, 6, 35, 34, 38, 38, 53, 52, 54, 1, 38, 4, 6, 17, 106, -86, 21,
-<a name="l08360"></a>08360 -64, 24, 6, 26, 81, -81, -108, 25, -74, -123, 123, -80, 84, 14, 43, -64, 36, 21, 108, -2, -11, -45, -69, -3, 125,
-<a name="l08361"></a>08361 14, 3, 16, 35, 49, 48, 36, 21, 37, 26, 48, 4, 37, -84, -2, -9, 102, 106, -108, 1, 29, -2, -78, 85, 88,
-<a name="l08362"></a>08362 98, 73, 12, 108, -126, 117, -71, -85, 1, -57, -2, 119, -35, -2, -38, -74, -75, 1, 80, 1, 24, 1, 37, -2, 2,
-<a name="l08363"></a>08363 49, 35, 35, 49, 19, 39, 26, 35, 49, 0, -1, -1, 0, 40, -1, -8, 4, -109, 4, 49, 2, 38, 2, -70, 0,
-<a name="l08364"></a>08364 0, 1, 7, 2, -104, 1, -122, -1, -93, 0, 28, 64, 15, 1, -96, 41, -80, 41, 2, 0, 41, 34, 24, 18, 65,
-<a name="l08365"></a>08365 1, 1, 31, -71, 2, -31, 0, 41, 0, 43, 1, 43, 93, 53, 0, 2, 0, -101, 0, 0, 1, 94, 5, 70, 0,
-<a name="l08366"></a>08366 3, 0, 18, 0, 78, -69, 0, 12, 2, -45, 0, 4, 2, -35, -76, 2, 10, 3, 6, 8, -72, 2, -45, -77, 16,
-<a name="l08367"></a>08367 16, 3, 20, -72, 2, -56, -78, 0, 32, 3, -72, -1, -2, -76, 11, 11, 6, 85, 3, -72, -1, -2, 64, 11, 13,
-<a name="l08368"></a>08368 13, 6, 85, 3, 20, 16, 16, 6, 85, 3, -71, 2, -57, 0, 19, 16, -10, 43, 43, 43, -3, -26, 18, 57, 47,
-<a name="l08369"></a>08369 -19, 0, 63, 63, 63, -19, 49, 48, 1, 17, 35, 17, 19, 50, 22, 22, 21, 20, 6, 6, 35, 34, 38, 38, 53,
-<a name="l08370"></a>08370 52, 54, 1, 94, -61, 96, 22, 37, 25, 22, 38, 24, 24, 37, 23, 48, 4, 37, -5, -37, 4, 37, 1, 33, 20,
-<a name="l08371"></a>08371 38, 26, 24, 38, 22, 22, 38, 24, 35, 49, -1, -1, 0, 50, 0, 0, 4, 41, 5, 75, 2, 38, 2, -95, 0,
-<a name="l08372"></a>08372 0, 1, 7, 2, -101, 0, -122, 0, 0, 0, 36, 64, 22, 1, 20, 64, 18, 21, 52, 0, 20, 16, 20, -32, 20,
-<a name="l08373"></a>08373 3, 0, 20, 21, 11, 11, 65, 1, 1, 20, -71, 2, -35, 0, 41, 0, 43, 1, 43, 93, 43, 53, -1, -1, 0,
-<a name="l08374"></a>08374 80, -1, -16, 3, 86, 5, 75, 2, 38, 2, -85, 0, 0, 1, 6, 2, -101, 100, 0, 0, 22, 64, 10, 1, 0,
-<a name="l08375"></a>08375 25, 26, 13, 7, 65, 1, 1, 25, -71, 2, -35, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, 115, -1, -16, 4,
-<a name="l08376"></a>08376 5, 5, 75, 2, 38, 2, -76, 0, 0, 1, 7, 2, -101, 0, -68, 0, 0, 0, 35, -76, 1, 64, 34, 1, 34,
-<a name="l08377"></a>08377 -72, -1, -64, 64, 12, 9, 11, 52, 0, 34, 35, 2, 2, 65, 1, 1, 34, -71, 2, -35, 0, 41, 0, 43, 1,
-<a name="l08378"></a>08378 43, 43, 93, 53, 0, 0, 1, 0, 60, 0, 0, 4, 100, 5, -70, 0, 25, 0, -46, 64, 35, 108, 2, 113, 8,
-<a name="l08379"></a>08379 115, 9, 3, 5, 15, 26, 8, 39, 24, 52, 3, 75, 0, 75, 1, 87, 25, 111, 8, -118, 8, -126, 24, 10, 2,
-<a name="l08380"></a>08380 24, 12, 17, 6, 85, 16, -72, -1, -24, 64, 59, 12, 17, 6, 85, 12, 25, 16, 15, 15, 0, 2, 9, 10, 1,
-<a name="l08381"></a>08381 1, 10, 10, 32, 15, 0, 20, 15, 15, 0, 25, 16, 2, 9, 4, 14, 6, 5, 0, 1, 10, 11, -7, 14, 20,
-<a name="l08382"></a>08382 21, 21, 15, 15, 14, 6, 22, 19, 20, 4, 5, 7, 9, 2, 25, 16, 4, 21, 6, 1, -72, 2, 96, -73, -128,
-<a name="l08383"></a>08383 0, 1, 0, 0, 20, 32, 21, -72, 2, -54, 64, 15, 27, 10, 11, 12, 15, 117, 14, 14, 13, 32, 12, 12, 5,
-<a name="l08384"></a>08384 32, 6, -71, 2, -55, 0, 26, 16, -10, -19, 51, 47, -3, 60, 16, -28, 16, 60, 50, 16, -10, -19, 51, 47, 93,
-<a name="l08385"></a>08385 -19, 17, 18, 23, 57, 51, 17, 51, 17, 51, 50, 0, 63, 60, 16, 60, 16, 60, 16, -19, 63, 60, 60, 60, 18,
-<a name="l08386"></a>08386 23, 57, -121, 5, 46, 43, 125, 16, -60, 7, 14, 60, 60, -121, 14, 16, -60, 60, 0, 24, 47, 43, 43, 49, 48,
-<a name="l08387"></a>08387 1, 93, 0, 93, 33, 35, 1, 6, 7, 3, 35, 19, 18, 55, 39, 35, 17, 51, 17, 51, 1, 54, 54, 55, 55,
-<a name="l08388"></a>08388 51, 7, 6, 6, 7, 4, 100, -20, -2, 107, 93, 18, 43, -58, 43, 30, -78, -122, -68, -66, 120, 1, 84, 62, 50,
-<a name="l08389"></a>08389 13, 25, -58, 24, 17, 108, 103, 2, 61, 51, -101, -2, -111, 1, 111, 1, 0, 90, -68, 2, 53, -2, 107, -2, 37,
-<a name="l08390"></a>08390 41, 109, 112, -43, -37, -100, -81, 62, 0, 0, 1, -1, -36, -2, -19, 0, 36, 5, 9, 0, 3, 0, 13, -76, 2,
-<a name="l08391"></a>08391 3, 0, -85, 3, 47, -19, 0, 47, 47, 49, 48, 19, 17, 35, 17, 36, 72, 5, 9, -7, -28, 6, 28, 0, 0,
-<a name="l08392"></a>08392 1, -1, 37, -2, -19, 0, -37, 5, -123, 0, 14, 1, 1, 64, 18, 24, 5, 23, 11, 2, 77, 2, 77, 14, 2,
-<a name="l08393"></a>08393 1, 12, -27, 13, 13, 4, -27, 3, -72, -1, -64, -77, 9, 14, 52, 3, -72, 2, -40, 64, 13, 5, 10, -27, 9,
-<a name="l08394"></a>08394 6, -27, 9, 7, 64, 9, 14, 52, 7, -72, 2, -40, -74, 5, 8, 64, 63, 63, 52, 8, -72, -1, -64, 64, 52,
-<a name="l08395"></a>08395 22, 23, 52, 8, 8, 5, 11, 5, 14, 2, 64, -115, -114, 52, 2, 64, 91, 92, 52, 2, 64, 38, 41, 52, 2,
-<a name="l08396"></a>08396 64, 14, 23, 52, 2, 2, 5, 34, 9, 20, 52, 5, 12, -27, 13, 10, -27, 9, 13, 64, 43, 45, 52, 0, 13,
-<a name="l08397"></a>08397 1, 13, -72, 2, -42, 64, 9, 9, 64, 43, 45, 52, 0, 9, 1, 9, -70, 2, -42, 0, 11, -1, -34, 64, 15,
-<a name="l08398"></a>08398 43, 51, 52, 11, 11, 14, -85, 2, 4, -27, 3, 6, -27, 7, 3, -72, -1, -64, -74, 43, 45, 52, 15, 3, 1,
-<a name="l08399"></a>08399 3, -70, 2, -42, 0, 7, -1, -64, -74, 43, 45, 52, 15, 7, 1, 7, -72, 2, -42, -73, 5, 34, 43, 51, 52,
-<a name="l08400"></a>08400 5, 5, 2, 47, 51, 47, 43, -28, 93, 43, -28, 93, 43, 16, -20, 16, -20, 16, -3, 50, 47, 43, -28, 93, 43,
-<a name="l08401"></a>08401 -28, 93, 43, 16, -20, 16, -20, 0, 47, 43, 51, 47, 43, 43, 43, 43, 60, 16, 60, 17, 51, 47, 43, 43, 16,
-<a name="l08402"></a>08402 -3, 43, 60, -20, 16, -20, 16, -3, 43, -20, 60, 16, -20, 47, 49, 48, 0, 93, 1, 114, 19, 35, 17, 7, 39,
-<a name="l08403"></a>08403 55, 39, 55, 23, 55, 23, 7, 23, 7, 39, 36, 72, -122, 49, -85, -85, 49, -86, -86, 49, -85, -85, 49, -122, -2,
-<a name="l08404"></a>08404 -19, 5, 109, -120, 49, -87, -88, 49, -85, -85, 49, -88, -87, 49, -120, 0, 1, -1, -36, -2, -19, 1, -82, 5, -123,
-<a name="l08405"></a>08405 0, 10, 0, 95, 64, 54, 6, 10, -27, 9, 114, 8, 0, 0, 3, 8, 1, -27, 2, 114, 3, 3, 4, -85, 8,
-<a name="l08406"></a>08406 7, 0, 114, 8, 5, -85, 6, 6, 7, 10, -27, 9, 1, -27, 2, 2, 9, -24, 8, 8, 3, 34, 40, 41, 52,
-<a name="l08407"></a>08407 3, 64, 9, 11, 52, 3, -91, 4, -85, 7, 47, -3, -10, 43, 43, 60, 16, -12, 60, 16, -20, 16, -20, 16, 60,
-<a name="l08408"></a>08408 16, -19, 16, -19, 0, 47, 60, -3, 60, 16, -12, -28, 25, 17, 18, 57, 47, 24, 16, -12, -28, 47, 49, 48, 1,
-<a name="l08409"></a>08409 7, 39, 55, 33, 17, 35, 17, 33, 39, 55, 1, -82, -39, 49, -119, -2, -10, 71, 1, 81, -119, 49, 4, -82, -42,
-<a name="l08410"></a>08410 49, -126, -6, 98, 5, -27, -126, 49, 0, 0, 1, -2, 81, -2, -19, 0, 35, 5, -123, 0, 10, 0, 122, 64, 46,
-<a name="l08411"></a>08411 12, 64, 9, 10, 52, 1, 7, -27, 8, 114, 9, 6, 6, 9, 3, 5, -27, 4, 114, 3, -85, 9, 2, -85, 9,
-<a name="l08412"></a>08412 10, 6, 114, 9, 1, -85, 0, 0, 10, 7, -27, 8, 5, -27, 4, 4, 8, -24, 9, 9, 3, -72, -1, -34, -77,
-<a name="l08413"></a>08413 40, 41, 52, 3, -72, -1, -64, 64, 13, 9, 11, 52, 3, -91, 2, -85, 10, 64, 9, 10, 52, 10, -71, 2, -39,
-<a name="l08414"></a>08414 0, 12, 16, -11, 43, -3, -10, 43, 43, 60, 16, -12, 60, 16, -20, 16, -20, 16, 60, 16, -19, 16, -19, 0, 47,
-<a name="l08415"></a>08415 60, -19, 16, -3, -12, -28, 25, 17, 18, 57, 47, 24, 16, -12, -28, 47, 49, 48, 1, 43, 19, 35, 17, 33, 23,
-<a name="l08416"></a>08416 7, 39, 55, 23, 7, 33, 35, 71, -2, -10, -119, 49, -39, -39, 49, -119, 1, 81, -2, -19, 5, -98, -126, 49, -42,
-<a name="l08417"></a>08417 -41, 49, -126, 0, 0, 1, 0, -85, 1, 24, 1, -19, 3, -116, 0, 17, 0, 67, -79, 11, 10, -72, -1, -64, -77,
-<a name="l08418"></a>08418 15, 17, 52, 10, -72, -1, -64, -75, 12, 17, 52, 10, 10, 3, -72, 2, -20, -73, 11, 10, 10, 0, 15, 15, 6,
-<a name="l08419"></a>08419 0, -72, -1, -64, -75, 16, 17, 52, 0, 0, 6, -72, 1, 28, -123, 47, 51, 47, 43, 18, 57, 47, 18, 57, 47,
-<a name="l08420"></a>08420 51, 0, 63, 51, 47, 43, 43, 51, 49, 48, 1, 20, 6, 35, 34, 38, 53, 52, 55, 54, 55, 23, 6, 7, 6,
-<a name="l08421"></a>08421 21, 20, 22, 1, -19, 80, 63, 77, 102, 88, 43, 86, 33, 59, 31, 55, -39, 1, -95, 53, 84, -112, 107, -107, 112,
-<a name="l08422"></a>08422 55, 61, 55, 54, 40, 71, 54, 54, 48, 0, 2, 0, -96, 1, 22, 1, -30, 4, -32, 0, 17, 0, 29, 0, 93,
-<a name="l08423"></a>08423 -79, 11, 10, -72, -1, -64, -77, 15, 17, 52, 10, -72, -1, -64, 64, 11, 12, 17, 52, 10, 10, 15, 3, 1, 3,
-<a name="l08424"></a>08424 3, 27, -68, 2, -18, 0, 21, 2, -20, 0, 18, 2, -19, 64, 11, 24, 24, 6, 11, 10, 10, 0, 15, 15, 6,
-<a name="l08425"></a>08425 0, -72, -1, -64, -75, 16, 17, 52, 0, 0, 6, -72, 1, 28, -123, 47, 51, 47, 43, 18, 57, 47, 18, 57, 47,
-<a name="l08426"></a>08426 51, 17, 51, 47, -19, 0, 63, -3, 50, 47, 93, 51, 47, 43, 43, 51, 49, 48, 1, 20, 6, 35, 34, 38, 53,
-<a name="l08427"></a>08427 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 22, 3, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 1, -30,
-<a name="l08428"></a>08428 80, 63, 77, 102, 88, 43, 86, 33, 59, 31, 55, -39, 27, 67, 48, 48, 71, 70, 49, 49, 66, 2, -11, 53, 84,
-<a name="l08429"></a>08429 -112, 107, -107, 112, 55, 61, 55, 54, 40, 71, 54, 54, 48, -2, 34, 47, 69, 69, 47, 48, 68, 66, 0, 2, 0,
-<a name="l08430"></a>08430 67, 1, 24, 2, -100, 5, -79, 0, 39, 0, 51, 0, -125, -71, 0, 20, -1, -52, -77, 14, 17, 52, 20, -72, -1,
-<a name="l08431"></a>08431 -32, 64, 17, 10, 12, 52, 4, 64, 21, 26, 52, 4, 64, 9, 17, 52, 4, 4, 25, 13, -70, 2, -15, 0, 37,
-<a name="l08432"></a>08432 2, -14, -73, 25, 64, 9, 11, 52, 25, 25, 49, -68, 2, -18, 0, 43, 2, -20, 0, 24, 2, -15, -74, 25, 25,
-<a name="l08433"></a>08433 40, 46, 10, 10, 0, -72, 2, -19, 64, 15, 7, 64, 18, 19, 52, 7, 7, -128, 16, 1, 16, 16, 34, 34, 40,
-<a name="l08434"></a>08434 -70, 2, -19, 0, 46, 1, 36, -123, 47, -19, 51, 47, 51, 47, 93, 51, 47, 43, -19, 57, 47, 17, 18, 57, 47,
-<a name="l08435"></a>08435 -19, 0, 63, -3, 50, 47, 43, 63, -19, 17, 57, 47, 43, 43, 49, 48, 1, 43, 43, 1, 20, 7, 6, 35, 34,
-<a name="l08436"></a>08436 38, 53, 52, 54, 53, 52, 38, 35, 34, 6, 21, 20, 23, 22, 23, 22, 21, 20, 7, 39, 52, 55, 55, 52, 39,
-<a name="l08437"></a>08437 38, 39, 38, 53, 52, 54, 51, 50, 22, 3, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 2, -100, 36, 41,
-<a name="l08438"></a>08438 64, 50, 66, 110, 64, 52, 65, 83, 42, 64, 14, 42, 10, 61, 1, 5, 74, 126, 12, 75, -76, -123, 120, -88, -74,
-<a name="l08439"></a>08439 73, 52, 49, 72, 73, 52, 51, 70, 4, -71, 62, 47, 53, 66, 44, 68, 68, 22, 34, 42, 73, 53, 49, 76, 116,
-<a name="l08440"></a>08440 34, 105, 122, 66, 82, 1, 18, 10, 52, 56, 66, 112, 14, 89, 111, -121, -78, -119, -4, 108, 51, 73, 74, 50, 52,
-<a name="l08441"></a>08441 73, 74, 0, 1, 0, 121, 0, -109, 2, -24, 3, 51, 0, 36, 0, -105, -75, 11, 32, 16, 17, 52, 33, -72, -1,
-<a name="l08442"></a>08442 -32, 64, 15, 16, 17, 52, 23, 19, 24, 64, 14, 21, 52, 24, 24, 28, 35, 0, -70, 2, -17, 0, 1, -1, -64,
-<a name="l08443"></a>08443 -73, 9, 13, 52, 1, 1, 35, 10, 19, -72, 2, -17, -78, 28, 28, 35, -72, 2, -17, -75, 10, 6, 10, 5, 5,
-<a name="l08444"></a>08444 10, -72, 2, -21, 64, 13, 35, 35, 24, 24, 23, 23, 1, 0, 0, 1, 1, 38, 6, -72, -1, -64, 64, 12, 9,
-<a name="l08445"></a>08445 10, 52, 6, 5, 16, 14, 15, 52, 5, 5, 31, -70, 2, -13, 0, 13, 1, 22, -123, 47, -19, 57, 47, 43, 51,
-<a name="l08446"></a>08446 43, 17, 51, 47, 51, 47, 17, 57, 47, 57, 47, 57, 47, 0, 63, 51, 47, 18, 57, 16, -3, 50, 47, -19, 17,
-<a name="l08447"></a>08447 18, 57, 47, 43, -19, 17, 18, 57, 47, 43, 17, 57, 49, 48, 1, 43, 43, 1, 7, 6, 7, 6, 7, 39, 54,
-<a name="l08448"></a>08448 55, 54, 55, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 7, 38, 39, 38, 35, 34, 6, 21, 20,
-<a name="l08449"></a>08449 23, 22, 23, 54, 2, -24, 48, -104, 98, 113, 93, 31, 13, 22, 19, 25, 116, 51, 40, 48, 62, 80, 81, 75, 49,
-<a name="l08450"></a>08450 11, 40, 52, 37, 7, 61, 39, 48, 104, 60, 47, 95, -117, 2, 25, -92, 38, 47, 54, 87, 17, 46, 39, 34, 27,
-<a name="l08451"></a>08451 66, 34, 40, 32, 84, 100, 67, 86, 43, 9, 46, -125, 25, 5, 39, 54, 34, 41, 38, 29, 34, 67, 0, 1, -1,
-<a name="l08452"></a>08452 -70, 1, 37, 1, -88, 1, -45, 0, 3, 0, 24, -67, 0, 2, 2, -17, 0, 1, 2, -21, 0, 0, 2, -16, -79,
-<a name="l08453"></a>08453 5, 1, 47, 16, -28, 0, 63, -19, 49, 48, 1, 33, 53, 33, 1, -88, -2, 18, 1, -18, 1, 37, -82, 0, 0,
-<a name="l08454"></a>08454 2, 0, 70, 4, -41, 1, -100, 6, 61, 0, 7, 0, 16, 0, 68, -71, 0, 0, 2, -11, -78, 2, 2, 6, -72,
-<a name="l08455"></a>08455 2, -11, 64, 9, 4, 64, 9, 14, 52, 4, 4, 15, 8, -72, 2, -11, -78, 11, 11, 15, -70, 2, -11, 0, 13,
-<a name="l08456"></a>08456 2, -12, -76, 0, 8, 8, 4, 13, -72, 1, 36, -123, 47, 60, 51, 47, 60, 0, 63, -19, 51, 47, -19, 17, 51,
-<a name="l08457"></a>08457 47, 43, -19, 51, 47, -3, 49, 48, 1, 20, 7, 6, 7, 52, 55, 54, 23, 20, 6, 7, 6, 7, 52, 55, 54,
-<a name="l08458"></a>08458 1, -100, 51, 91, -56, 44, 83, -41, 27, 23, 92, -56, 44, 83, 6, 61, 46, 43, 37, 80, 43, 40, 35, 62, 48,
-<a name="l08459"></a>08459 23, 20, 37, 80, 43, 40, 35, 0, 0, 2, 0, 70, 4, -41, 1, -27, 6, 90, 0, 47, 0, 58, 0, -83, 64,
-<a name="l08460"></a>08460 9, 3, 57, 9, 37, 8, 8, 35, 13, 45, -70, 2, -11, 0, 51, -1, -64, -75, 11, 15, 52, 51, 51, 57, -72,
-<a name="l08461"></a>08461 2, -11, -74, 37, 37, 20, 24, 24, 35, 28, -72, 2, -11, -78, 20, 20, 35, -70, 2, -11, 0, 13, 2, -12, 64,
-<a name="l08462"></a>08462 14, 8, 6, 57, 9, 48, 37, 53, 41, 35, 31, 17, 6, 6, 0, -70, 2, -10, 0, 48, -1, -64, -75, 9, 10,
-<a name="l08463"></a>08463 52, 48, 48, 53, -72, 2, -10, 64, 12, 41, 64, 9, 17, 52, 41, 41, 31, 13, 24, 24, 17, -70, 2, -10, 0,
-<a name="l08464"></a>08464 31, -1, -64, -77, 23, 27, 52, 31, -72, -1, -64, -77, 14, 18, 52, 31, 47, 43, 43, -3, 50, 47, 57, 17, 51,
-<a name="l08465"></a>08465 47, 43, -3, 50, 47, 43, -19, 57, 47, 17, 18, 57, 17, 18, 57, 17, 57, 57, 18, 57, 0, 63, -3, 50, 47,
-<a name="l08466"></a>08466 -19, 18, 57, 47, 17, 57, 47, -3, 50, 47, 43, -19, 17, 18, 57, 47, 18, 57, 17, 57, 49, 48, 1, 20, 6,
-<a name="l08467"></a>08467 7, 22, 22, 21, 20, 7, 39, 6, 7, 6, 35, 54, 55, 54, 53, 52, 38, 35, 34, 7, 6, 7, 54, 55, 54,
-<a name="l08468"></a>08468 51, 50, 22, 21, 20, 7, 6, 7, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 7, 52, 38, 35, 34,
-<a name="l08469"></a>08469 21, 20, 23, 22, 23, 54, 1, -27, 22, 22, 14, 18, 7, 86, 46, 58, 71, 87, 40, 4, 12, 20, 19, 20, 18,
-<a name="l08470"></a>08470 7, 20, 7, 11, 20, 46, 34, 38, 4, 7, 3, 69, 63, 17, 16, 26, 39, 43, 53, 27, 38, 71, 24, 20, 22,
-<a name="l08471"></a>08471 18, 5, 30, 13, 6, 26, 37, 65, 34, 10, 23, 13, 47, 41, 67, 54, 30, 36, 66, 9, 27, 24, 24, 37, 24,
-<a name="l08472"></a>08472 10, 35, 70, 31, 55, 66, 42, 21, 21, 29, 15, 20, 47, 16, 17, 29, 32, 47, 47, 52, 38, 85, 23, 38, 28,
-<a name="l08473"></a>08473 18, 20, 6, 27, 19, 0, 0, 2, 0, 70, -2, -10, 1, -100, 0, 91, 0, 7, 0, 15, 0, 69, -71, 0, 8,
-<a name="l08474"></a>08474 2, -11, -78, 10, 10, 12, -70, 2, -11, 0, 14, -1, -64, -74, 9, 15, 52, 14, 14, 4, 0, -72, 2, -11, -78,
-<a name="l08475"></a>08475 2, 2, 6, -70, 2, -11, 0, 4, 2, -9, -76, 0, 8, 8, 4, 12, -72, 1, 36, -123, 47, 60, 51, 47, 60,
-<a name="l08476"></a>08476 0, 63, -19, 51, 47, -19, 17, 51, 47, 43, -3, 50, 47, -19, 49, 48, 37, 20, 7, 6, 7, 52, 55, 54, 23,
-<a name="l08477"></a>08477 20, 7, 6, 7, 52, 55, 54, 1, -100, 52, 90, -56, 44, 83, -41, 52, 90, -56, 44, 83, 91, 47, 44, 35, 81,
-<a name="l08478"></a>08478 44, 40, 34, 59, 47, 45, 35, 82, 43, 42, 35, 0, 1, 0, 70, 5, 98, 1, -100, 6, 49, 0, 7, 0, 35,
-<a name="l08479"></a>08479 -71, 0, 0, 2, -11, -78, 2, 2, 6, -70, 2, -11, 0, 4, 2, -12, -78, 0, 0, 4, -72, 1, 36, -123, 47,
-<a name="l08480"></a>08480 51, 47, 0, 63, -19, 51, 47, -3, 49, 48, 1, 20, 7, 6, 7, 52, 55, 54, 1, -100, 52, 90, -56, 44, 83,
-<a name="l08481"></a>08481 6, 49, 46, 45, 35, 81, 44, 40, 35, 0, 0, 2, 0, 72, 4, -41, 1, -83, 6, -118, 0, 29, 0, 40, 0,
-<a name="l08482"></a>08482 -118, -75, 26, 39, 4, 13, 3, 20, -70, 2, -11, 0, 33, -1, -64, 64, 10, 11, 13, 52, 33, 33, 39, 3, 3,
-<a name="l08483"></a>08483 9, 39, -72, 2, -11, -78, 13, 13, 9, -72, 2, -12, 64, 12, 3, 0, 23, 13, 4, 39, 3, 30, 36, 0, 0,
-<a name="l08484"></a>08484 23, -72, 2, -10, -77, 30, 30, 36, 8, -72, 2, -10, -78, 9, 9, 17, -70, 2, -10, 0, 36, -1, -64, -77, 26,
-<a name="l08485"></a>08485 28, 52, 36, -72, -1, -64, -77, 19, 21, 52, 36, -72, -1, -64, -77, 14, 16, 52, 36, -72, 1, 29, -123, 47, 43,
-<a name="l08486"></a>08486 43, 43, -3, 50, 47, -19, 17, 51, 47, -3, 50, 47, 17, 18, 23, 57, 17, 18, 57, 0, 63, 51, 47, -19, 18,
-<a name="l08487"></a>08487 57, 47, 17, 51, 47, 43, -19, 17, 18, 57, 17, 57, 49, 48, 1, 20, 6, 7, 39, 6, 7, 6, 35, 35, 54,
-<a name="l08488"></a>08488 55, 54, 55, 38, 39, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 22, 23, 22, 39, 52, 38, 35, 34, 6,
-<a name="l08489"></a>08489 21, 20, 23, 23, 54, 1, -83, 6, 3, 83, 50, 18, 74, 50, 73, 53, 71, 64, 33, 31, 16, 20, 77, 45, 26,
-<a name="l08490"></a>08490 42, 11, 20, 16, 17, 11, 75, 38, 18, 10, 11, 25, 44, 8, 5, 125, 17, 36, 18, 50, 55, 18, 72, 25, 56,
-<a name="l08491"></a>08491 51, 39, 19, 21, 26, 31, 66, 101, 56, 40, 19, 41, 55, 14, 13, 11, 93, 27, 46, 14, 7, 22, 24, 34, 20,
-<a name="l08492"></a>08492 0, 0, 1, 0, 70, -1, -43, 1, -100, 0, -92, 0, 7, 0, 35, -71, 0, 0, 2, -11, -78, 2, 2, 6, -70,
-<a name="l08493"></a>08493 2, -11, 0, 4, 2, -8, -78, 0, 0, 4, -72, 1, 36, -123, 47, 51, 47, 0, 63, -19, 51, 47, -19, 49, 48,
-<a name="l08494"></a>08494 37, 20, 7, 6, 7, 52, 55, 54, 1, -100, 52, 90, -56, 44, 83, -92, 48, 44, 35, 80, 43, 40, 34, 0, 1,
-<a name="l08495"></a>08495 0, 70, 4, -41, 1, -79, 6, 25, 0, 40, 0, -121, 64, 27, 7, 24, 4, 37, 38, 33, 28, 29, 17, 24, 29,
-<a name="l08496"></a>08496 29, 18, 38, 64, 9, 10, 52, 38, 38, 15, 18, 1, 18, 18, 24, 33, -72, 2, -11, -78, 4, 4, 24, -70, 2,
-<a name="l08497"></a>08497 -11, 0, 11, 2, -12, -73, 7, 29, 28, 21, 18, 17, 0, 38, -72, 2, -7, -76, 37, 37, 29, 14, 17, -72, 2,
-<a name="l08498"></a>08498 -7, -78, 18, 18, 29, -70, 2, -7, 0, 28, -1, -64, -77, 21, 23, 52, 28, -72, -1, -64, -77, 13, 16, 52, 28,
-<a name="l08499"></a>08499 47, 43, 43, -19, 51, 47, -3, 50, 17, 51, 47, -3, 50, 17, 18, 57, 17, 18, 57, 0, 63, -19, 57, 47, -19,
-<a name="l08500"></a>08500 17, 51, 47, 93, 51, 47, 43, 18, 57, 47, 17, 57, 18, 57, 17, 18, 57, 17, 18, 57, 49, 48, 1, 20, 7,
-<a name="l08501"></a>08501 6, 35, 34, 38, 39, 6, 7, 6, 35, 34, 38, 53, 52, 54, 55, 55, 20, 6, 21, 20, 22, 51, 50, 55, 54,
-<a name="l08502"></a>08502 55, 55, 22, 23, 22, 51, 50, 55, 54, 53, 55, 22, 22, 1, -79, 26, 29, 51, 18, 30, 19, 21, 18, 32, 35,
-<a name="l08503"></a>08503 42, 42, 14, 13, 21, 4, 18, 18, 43, 26, 12, 18, 21, 8, 5, 12, 28, 38, 22, 18, 21, 4, 7, 5, -59,
-<a name="l08504"></a>08504 75, 48, 54, 12, 13, 36, 18, 32, 57, 50, 26, 50, 32, 9, 8, 36, 12, 22, 35, 56, 26, 75, 6, 49, 11,
-<a name="l08505"></a>08505 31, 50, 40, 43, 6, 19, 47, 0, 0, 2, 0, 70, 4, -41, 1, 81, 6, 13, 0, 11, 0, 24, 0, 45, -71,
-<a name="l08506"></a>08506 0, 9, 2, -11, -78, 15, 15, 22, -68, 2, -11, 0, 3, 2, -12, 0, 0, 2, -10, -78, 12, 12, 6, -70, 2,
-<a name="l08507"></a>08507 -6, 0, 18, 1, 29, -123, 47, -19, 51, 47, -19, 0, 63, -3, 50, 47, -19, 49, 48, 1, 20, 6, 35, 34, 38,
-<a name="l08508"></a>08508 53, 52, 54, 51, 50, 22, 7, 52, 38, 35, 34, 6, 21, 20, 23, 22, 51, 50, 54, 1, 81, 92, 67, 54, 54,
-<a name="l08509"></a>08509 80, 59, 54, 74, 60, 78, 27, 26, 36, 33, 26, 49, 25, 34, 5, 119, 62, 98, 60, 54, 77, 119, 90, 87, 28,
-<a name="l08510"></a>08510 68, 45, 24, 35, 14, 11, 14, 0, 1, 1, 124, 1, -64, 2, -63, 3, -99, 0, 13, 0, 29, 64, 14, 10, 10,
-<a name="l08511"></a>08511 3, 10, 32, 16, 19, 52, 3, 10, 7, 0, 0, 7, 47, 51, 47, 18, 57, 57, 43, 0, 47, 51, 47, 49, 48,
-<a name="l08512"></a>08512 1, 6, 6, 7, 38, 39, 38, 39, 54, 54, 55, 22, 23, 22, 2, -63, 28, 28, 19, 85, 48, 32, 85, 21, 35,
-<a name="l08513"></a>08513 34, 56, 57, 38, 2, -24, 87, 108, 101, 48, 34, 23, 68, 91, 118, 95, 49, 44, 29, 0, 0, 1, 1, 46, 1,
-<a name="l08514"></a>08514 37, 2, -98, 5, -69, 0, 19, 0, 59, -78, 13, 13, 14, -68, 2, -14, 0, 5, 2, -21, 0, 18, -1, -16, 64,
-<a name="l08515"></a>08515 16, 9, 18, 52, 7, 4, 14, 14, 5, 13, 64, 11, 29, 52, 13, 13, 4, -71, 2, -5, 0, 5, 47, -19, 51,
-<a name="l08516"></a>08516 47, 43, 25, 18, 57, 47, 17, 57, 43, 0, 24, 63, 63, 57, 47, 49, 48, 1, 1, 20, 7, 6, 7, 35, 52,
-<a name="l08517"></a>08517 55, 52, 39, 38, 39, 38, 39, 55, 22, 23, 22, 23, 22, 2, -98, 14, 3, 25, 34, 4, 58, 45, 79, 40, 74,
-<a name="l08518"></a>08518 96, 79, 48, 68, 35, 42, 2, -57, 90, 119, 29, -76, 24, 115, -44, -72, -113, 126, 64, 90, -40, 95, 81, 115, -128,
-<a name="l08519"></a>08519 -104, 0, 0, 1, 0, -73, 1, 37, 3, 33, 5, -56, 0, 32, 0, 127, -79, 6, 4, -72, 2, -17, 64, 12, 25,
-<a name="l08520"></a>08520 64, 14, 17, 52, 25, 25, 21, 20, 20, 15, 21, -68, 2, -14, 0, 29, 2, -14, 0, 15, 2, -21, -75, 17, 64,
-<a name="l08521"></a>08521 14, 24, 52, 9, -72, -1, -12, -77, 9, 17, 52, 29, -72, 2, -5, -77, 30, 30, 14, 6, -72, -1, -42, 64, 15,
-<a name="l08522"></a>08522 14, 17, 52, 6, 21, 21, 15, 20, 64, 11, 29, 52, 20, 20, 14, -71, 2, -5, 0, 15, 47, -19, 51, 47, 43,
-<a name="l08523"></a>08523 25, 18, 57, 47, 57, 43, 17, 51, 24, 47, -19, 43, 43, 0, 63, 63, 63, 18, 57, 47, 17, 57, 47, 43, -3,
-<a name="l08524"></a>08524 57, -79, 6, 2, 67, 84, 88, -76, 20, 64, 15, 17, 52, 0, 43, 89, 49, 48, 1, 20, 7, 6, 35, 34, 39,
-<a name="l08525"></a>08525 22, 23, 22, 22, 21, 20, 6, 21, 35, 2, 39, 38, 38, 39, 55, 22, 23, 22, 51, 50, 55, 54, 55, 55, 22,
-<a name="l08526"></a>08526 22, 3, 33, 52, 57, 104, 13, 56, 38, 16, 27, 28, 4, 30, 76, 25, 48, -125, -125, 66, 67, 52, 95, 106, 112,
-<a name="l08527"></a>08527 43, 24, 13, 32, 4, 4, 5, 27, 110, 66, 72, 8, 80, 47, 79, -44, -78, 31, -115, 6, 1, 67, 85, -90, -9,
-<a name="l08528"></a>08528 -92, -54, 95, 46, 84, 75, 41, 107, 2, 35, 93, 0, 1, 0, -127, 1, 37, 3, -60, 5, -56, 0, 41, 0, -106,
-<a name="l08529"></a>08529 -73, 21, 32, 14, 17, 52, 6, 28, 3, -72, 2, -17, -77, 36, 36, 24, 9, -72, 2, -17, 64, 11, -113, 28, 1,
-<a name="l08530"></a>08530 28, 28, 18, 23, 23, 24, 18, 38, 65, 9, 2, -14, 0, 32, 2, -14, 0, 24, 2, -14, 0, 18, 2, -21, 0,
-<a name="l08531"></a>08531 32, 2, -5, -77, 33, 33, 17, 39, -70, 2, -5, 0, 38, -1, -64, 64, 23, 12, 18, 52, 38, 38, 14, 17, -128,
-<a name="l08532"></a>08532 9, 1, 9, 23, 24, 24, 18, 23, 64, 10, 29, 52, 23, 23, 17, -70, 2, -5, 0, 18, -1, -64, -77, 9, 12,
-<a name="l08533"></a>08533 52, 18, 47, 43, -19, 51, 47, 43, 25, 18, 57, 47, 17, 57, 93, 17, 51, 51, 24, 47, 43, -19, 18, 57, 47,
-<a name="l08534"></a>08534 -19, 0, 63, 63, 63, 63, 17, 18, 57, 47, 17, 57, 47, 93, -19, 18, 57, 47, -3, 17, 57, 49, 48, 1, 43,
-<a name="l08535"></a>08535 1, 20, 6, 35, 34, 38, 39, 6, 6, 35, 22, 23, 22, 22, 21, 20, 6, 7, 35, 52, 2, 39, 38, 39, 55,
-<a name="l08536"></a>08536 22, 23, 22, 51, 50, 55, 54, 55, 51, 22, 22, 51, 50, 55, 51, 20, 22, 3, -60, 95, 99, 57, 84, 20, 34,
-<a name="l08537"></a>08537 104, 73, 37, 16, 29, 31, 11, 24, 40, 56, 68, 52, -125, 73, 52, 60, 67, 82, 85, 48, 41, 16, 32, 8, 56,
-<a name="l08538"></a>08538 52, 105, 20, 33, 5, 5, 99, 125, -124, 36, 37, 56, 57, 73, 39, 71, -96, 113, 63, 117, -103, -36, 1, 26, -123,
-<a name="l08539"></a>08539 101, -63, -19, 86, 44, 49, 58, 50, 92, 92, 74, -90, 22, 73, 0, 1, 1, 44, 1, 37, 3, 46, 5, -75, 0,
-<a name="l08540"></a>08540 43, 0, 114, -77, -124, 31, 1, 31, -72, -1, -64, -77, 11, 17, 52, 32, -72, -1, -64, -73, 10, 17, 52, 32, 13,
-<a name="l08541"></a>08541 13, 0, 24, -66, 2, -17, 0, 23, 2, -14, 0, 0, 2, -17, 0, 1, 2, -21, -74, 1, 0, 0, 24, 23, 23,
-<a name="l08542"></a>08542 34, -72, 2, -4, -77, 13, 13, 40, 17, -72, 2, -4, -78, 28, 28, 7, -70, 2, -4, 0, 40, 1, 46, -123, 47,
-<a name="l08543"></a>08543 -3, 57, 47, -19, 17, 51, 47, -19, 57, 47, 51, 50, 47, 51, 0, 63, -19, 63, -19, 17, 57, 47, 57, 43, -79,
-<a name="l08544"></a>08544 6, 2, 67, 84, 88, -78, 9, 13, 1, 0, 93, 89, 49, 48, 1, 43, 93, 1, 7, 34, 39, 38, 39, 38, 53,
-<a name="l08545"></a>08545 52, 55, 54, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 7, 6, 7, 6, 21, 20, 23, 22, 23,
-<a name="l08546"></a>08546 22, 21, 20, 7, 6, 7, 6, 21, 20, 23, 22, 3, 46, 63, 90, 83, 110, 67, 82, 35, 30, 62, 33, 92, 85,
-<a name="l08547"></a>08547 85, 101, 74, 57, 109, 76, 93, 31, 111, 37, 88, 75, 70, 71, 76, 68, 63, 63, 68, -119, 89, 1, -17, -54, 13,
-<a name="l08548"></a>08548 17, 34, 41, 61, 57, 60, 51, 66, 35, 87, 32, 33, 45, 46, 76, 100, 77, 98, 68, 71, -64, 41, 18, 43, 36,
-<a name="l08549"></a>08549 32, 33, 27, 26, 31, 26, 29, 72, 66, 65, 77, 41, 48, 32, 21, 0, 0, 2, 0, -66, 1, -6, 3, -128, 4,
-<a name="l08550"></a>08550 -7, 0, 16, 0, 33, 0, 64, 64, 16, 20, 64, 14, 17, 52, 25, 32, 14, 17, 52, 20, 64, 9, 17, 52, 14,
-<a name="l08551"></a>08551 -72, 2, -17, -78, 23, 23, 31, -69, 2, -17, 0, 4, 0, 0, 2, -2, -78, 17, 17, 8, -70, 2, -3, 0, 27,
-<a name="l08552"></a>08552 1, 52, -123, 47, -19, 51, 47, -19, 0, 47, -3, 50, 47, -19, 49, 48, 1, 43, 43, 0, 43, 1, 20, 7, 6,
-<a name="l08553"></a>08553 35, 34, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 22, 7, 52, 39, 38, 39, 38, 35, 34, 7, 6, 21, 20,
-<a name="l08554"></a>08554 23, 22, 51, 50, 54, 3, -128, 103, 117, -41, 121, 70, 80, 44, 50, 70, 86, 92, 118, -10, 74, 80, 67, 101, 93,
-<a name="l08555"></a>08555 47, 66, 44, 36, 69, 63, 124, 122, -100, 3, -103, -83, 113, -127, 42, 48, 91, 81, -121, -104, 98, 120, -18, -36, 57,
-<a name="l08556"></a>08556 66, 55, 45, 41, 90, 73, 72, 82, 38, 35, 73, 0, 1, 0, -81, 1, 64, 3, 71, 5, -81, 0, 40, 0, 111,
-<a name="l08557"></a>08557 -71, 0, 40, -1, -32, -77, 12, 17, 52, 39, -72, -1, -24, -74, 9, 17, 52, 31, 22, 11, 15, -72, 2, -1, -77,
-<a name="l08558"></a>08558 27, 27, 22, 0, -72, -1, -64, -74, 14, 17, 52, 0, 0, 1, 22, -68, 2, -14, 0, 1, 2, -21, 0, 23, 2,
-<a name="l08559"></a>08559 -5, -74, 22, 22, 7, 31, 1, 11, 7, -72, 2, -2, 64, 11, 35, 64, 16, 17, 52, 35, 35, 1, 0, 0, 1,
-<a name="l08560"></a>08560 25, 47, 51, 24, 47, 17, 51, 47, 43, -3, 57, 18, 57, 17, 51, 47, -19, 0, 63, 63, 18, 57, 47, 43, 17,
-<a name="l08561"></a>08561 57, 47, -3, 57, 18, 57, 49, 48, 1, 43, 43, 1, 7, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 6, 7,
-<a name="l08562"></a>08562 6, 35, 34, 39, 38, 53, 52, 54, 53, 55, 22, 23, 22, 51, 50, 55, 54, 55, 6, 7, 6, 21, 20, 23, 22,
-<a name="l08563"></a>08563 23, 22, 3, 71, 38, 65, 33, 56, 29, 36, 5, 1, 21, 48, 23, 74, 47, -100, 48, 38, 6, 36, 24, 22, 46,
-<a name="l08564"></a>08564 106, 79, 99, 22, 85, 17, 7, 12, 28, 22, 46, 16, 2, 36, -28, 43, 37, 61, 91, 111, -93, 58, 61, 17, -74,
-<a name="l08565"></a>08565 9, 4, 14, 32, 25, 78, 33, -124, 34, 4, 55, 18, 37, 19, 4, 19, 103, 51, 87, 65, -95, 110, 87, 72, 25,
-<a name="l08566"></a>08566 0, 0, 1, 0, -127, 1, 37, 3, -84, 5, -81, 0, 17, 0, -123, 64, 32, 12, 32, 14, 17, 52, 3, 38, 14,
-<a name="l08567"></a>08567 17, 52, 3, 52, 9, 13, 52, 1, 1, 0, 8, 64, 14, 17, 52, 8, 64, 10, 17, 52, 8, 8, 9, 0, -70,
-<a name="l08568"></a>08568 2, -14, 0, 9, 2, -14, -75, 13, 32, 9, 13, 52, 13, -70, 2, -1, 0, 5, 2, -21, 64, 11, 14, 13, 5,
-<a name="l08569"></a>08569 8, 9, 1, 0, 0, 9, 4, 5, -72, 1, 71, -123, 25, 47, 51, 51, 51, 47, 51, 47, 51, 17, 51, 51, 0,
-<a name="l08570"></a>08570 24, 63, -19, 43, 63, 63, 17, 57, 47, 43, 43, 18, 57, 47, -79, 6, 2, 67, 84, 88, 64, 15, 13, -56, 15,
-<a name="l08571"></a>08571 17, 52, 13, -106, 14, 14, 52, 13, 64, 9, 13, 52, 0, 43, 43, 43, 89, 49, 48, 1, 43, 43, 43, 1, 3,
-<a name="l08572"></a>08572 6, 2, 3, 35, 2, 2, 39, 19, 22, 23, 22, 19, 51, 18, 55, 54, 3, -84, 8, -108, -82, 41, 14, 64, -57,
-<a name="l08573"></a>08573 -93, 36, -101, 101, 98, 63, 10, 39, 89, 86, 5, -81, -2, -31, -105, -2, 94, -2, -50, 1, 51, 1, -124, -110, 1,
-<a name="l08574"></a>08574 61, -75, -47, -53, -2, -8, 1, 22, -39, -46, 0, 0, 1, 0, -102, 1, 49, 3, -58, 5, -69, 0, 22, 0, -109,
-<a name="l08575"></a>08575 64, 19, 6, 84, 14, 17, 52, 19, 38, 14, 17, 52, 19, 52, 9, 13, 52, 12, 12, 11, 0, -72, -1, -64, -77,
-<a name="l08576"></a>08576 14, 17, 52, 0, -72, -1, -64, -75, 10, 17, 52, 0, 0, 1, -68, 2, -21, 0, 11, 2, -21, 0, 4, -1, -32,
-<a name="l08577"></a>08577 -77, 9, 13, 52, 4, -70, 2, -1, 0, 17, 2, -14, 64, 11, 5, 4, 17, 12, 11, 0, 1, 1, 11, 16, 17,
-<a name="l08578"></a>08578 -72, 1, 71, -123, 25, 47, 51, 51, 51, 47, 51, 47, 51, 17, 51, 51, 0, 24, 63, -19, 43, 63, 63, 57, 47,
-<a name="l08579"></a>08579 43, 43, 18, 57, 47, -79, 6, 2, 67, 84, 88, -71, 0, 4, -1, 56, -77, 15, 17, 52, 4, -72, -1, 106, -77,
-<a name="l08580"></a>08580 14, 14, 52, 4, -72, -1, -64, -78, 9, 13, 52, 0, 43, 43, 43, 89, 49, 48, 1, 43, 43, 43, 1, 3, 38,
-<a name="l08581"></a>08581 2, 39, 35, 6, 7, 6, 7, 6, 7, 17, 54, 55, 54, 19, 51, 22, 23, 22, 23, 22, 3, -58, 36, -108, -34,
-<a name="l08582"></a>08582 49, 7, 43, 32, 42, 60, 63, 110, -112, 89, 86, 50, 19, 51, 63, 59, 80, 66, 2, 115, -2, -60, -103, 1, -56,
-<a name="l08583"></a>08583 -3, -31, 114, -105, 118, 124, -120, 1, 30, -123, -43, -49, 1, 67, -18, -98, -108, 110, 90, 0, 0, 2, 0, -37, 1,
-<a name="l08584"></a>08584 37, 3, 77, 5, -52, 0, 26, 0, 39, 0, 106, -71, 0, 26, -1, -32, 64, 13, 12, 17, 52, 3, 16, 9, 10,
-<a name="l08585"></a>08585 52, 27, 31, 5, 37, 0, -72, -1, -64, -74, 15, 17, 52, 0, 0, 1, 8, -72, 2, -17, -77, 37, 37, 1, 31,
-<a name="l08586"></a>08586 -66, 2, -17, 0, 17, 2, -14, 0, 1, 2, -21, 0, 11, 2, -3, -78, 34, 34, 27, -70, 2, -3, 0, 5, 2,
-<a name="l08587"></a>08587 -3, -75, 23, 23, 1, 0, 0, 1, 25, 47, 51, 24, 47, 17, 51, 47, -19, -3, 50, 47, -19, 0, 63, 63, -19,
-<a name="l08588"></a>08588 17, 57, 47, -19, 17, 57, 47, 43, 17, 57, 18, 57, 49, 48, 1, 43, 43, 1, 7, 38, 39, 38, 17, 6, 6,
-<a name="l08589"></a>08589 35, 34, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 22, 23, 22, 3, 52, 39, 38, 35, 34,
-<a name="l08590"></a>08590 6, 21, 20, 22, 51, 50, 54, 3, 77, 61, 100, 32, 26, 68, 68, 33, 109, -127, 30, 38, 64, 82, 111, 83, 43,
-<a name="l08591"></a>08591 35, 11, 7, 20, 34, 15, -82, 23, 31, 80, 60, 112, 98, 70, 30, 86, 1, -6, -43, 61, -112, 118, 1, 45, 24,
-<a name="l08592"></a>08592 14, 90, 84, 62, 91, 116, 71, 91, 87, 70, -117, 86, -88, -26, 93, 41, 2, 10, 91, 47, 64, 90, 39, 42, 46,
-<a name="l08593"></a>08593 12, 0, 0, 3, 0, -123, 0, -84, 3, -76, 6, 56, 0, 11, 0, 15, 0, 27, 0, 80, 64, 9, 15, 2, 15,
-<a name="l08594"></a>08594 27, 52, 6, 13, 1, 3, -72, 2, -18, -77, 9, 9, 15, 25, -72, 2, -18, -77, 19, 19, 14, 22, -72, 2, -19,
-<a name="l08595"></a>08595 -78, 16, 16, 15, -72, 3, 0, -77, 12, 12, 29, 0, -72, 2, -19, -78, 6, 6, 13, -71, 3, 0, 0, 14, 47,
-<a name="l08596"></a>08596 -19, 57, 47, -19, 17, 51, 47, -3, 57, 47, -19, 0, 47, 51, 47, -19, 47, 51, 47, -19, 49, 48, 1, 93, 43,
-<a name="l08597"></a>08597 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 37, 1, 35, 1, 19, 20, 6, 35, 34, 38, 53, 52, 54,
-<a name="l08598"></a>08598 51, 50, 22, 1, -76, 76, 55, 54, 77, 76, 55, 55, 76, 2, 0, -3, 62, 109, 2, -68, 68, 76, 56, 55, 74,
-<a name="l08599"></a>08599 75, 54, 54, 78, 5, -71, 55, 78, 79, 54, 53, 74, 72, 71, -6, -122, 5, 122, -6, -9, 54, 76, 76, 54, 54,
-<a name="l08600"></a>08600 79, 78, 0, 0, 1, 0, -63, 0, 48, 1, -41, 2, 34, 0, 20, 0, 57, -71, 0, 18, -1, -64, -75, 12, 17,
-<a name="l08601"></a>08601 52, 18, 7, 6, -72, -1, -64, -74, 12, 14, 52, 6, 6, 18, 11, -72, 2, -20, 64, 9, 7, 6, 6, 11, 11,
-<a name="l08602"></a>08602 15, 0, 0, 15, 47, 51, 47, 18, 57, 47, 57, 47, 51, 0, 63, 51, 51, 47, 43, 51, 47, 43, 49, 48, 1,
-<a name="l08603"></a>08603 20, 7, 6, 7, 6, 7, 39, 54, 55, 54, 53, 38, 39, 38, 53, 52, 54, 51, 50, 22, 1, -41, 38, 31, 59,
-<a name="l08604"></a>08604 34, 74, 42, 69, 23, 41, 49, 37, 41, 75, 54, 57, 86, 1, -102, 85, 73, 59, 57, 33, 55, 55, 55, 25, 45,
-<a name="l08605"></a>08605 40, 19, 32, 36, 60, 54, 77, 80, 0, 2, 0, -77, 3, 58, 3, 100, 5, -12, 0, 103, 0, 115, 1, 28, -71,
-<a name="l08606"></a>08606 0, 13, -1, -32, -77, 11, 16, 52, 35, -72, -1, -32, 64, 50, 11, 16, 52, 13, 35, 24, 3, 48, 30, 113, 101,
-<a name="l08607"></a>08607 54, 107, 89, 32, 11, 16, 52, 66, 32, 11, 16, 52, 89, 66, 71, 78, 24, 24, 44, 57, 6, 97, 4, 107, 31,
-<a name="l08608"></a>08608 42, 15, 7, 4, 113, 30, 70, 85, 59, 96, 4, 107, 71, 30, -68, 2, -5, 0, 17, 2, -5, 0, 113, -1, -64,
-<a name="l08609"></a>08609 -75, 10, 13, 52, 113, 113, 84, -70, 2, -5, 0, 71, 2, -5, -75, 31, 107, 1, 107, 107, 78, -72, 2, -14, 64,
-<a name="l08610"></a>08610 25, 10, 32, 11, 16, 52, 92, 32, 11, 16, 52, 10, 92, 95, 0, 1, 0, 0, 81, 21, 97, 104, 75, 27, 110,
-<a name="l08611"></a>08611 63, -72, -1, -32, -77, 11, 16, 52, 38, -72, -1, -32, 64, 30, 11, 16, 52, 63, 38, 44, 80, 51, 1, 51, 51,
-<a name="l08612"></a>08612 70, 71, 84, 85, 15, 17, 30, 31, 8, 110, 7, 96, 97, 104, 59, 42, 110, 44, 6, -70, 2, -5, 0, 97, 2,
-<a name="l08613"></a>08613 -5, -73, 104, 64, 10, 12, 52, 104, 104, 57, -68, 2, -5, 0, 44, 2, -5, 0, 110, 1, 64, -123, 47, -27, -27,
-<a name="l08614"></a>08614 51, 47, 43, -27, -27, 17, 18, 57, 57, 17, 18, 57, 57, 18, 23, 57, 50, 47, 113, 18, 57, 57, 43, 43, 17,
-<a name="l08615"></a>08615 57, 57, 17, 18, 57, 57, 51, 47, 113, 57, 57, 43, 43, 0, 63, 51, 47, 93, -27, -27, 51, 47, 43, -27, -27,
-<a name="l08616"></a>08616 17, 18, 23, 57, 17, 18, 23, 57, 17, 23, 57, 50, 47, 17, 18, 57, 57, 43, 43, 17, 57, 57, 17, 18, 57,
-<a name="l08617"></a>08617 57, 17, 57, 57, 43, 43, 49, 48, 1, 20, 6, 35, 34, 39, 39, 7, 23, 22, 21, 20, 6, 35, 34, 39, 6,
-<a name="l08618"></a>08618 7, 22, 23, 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 55, 39, 6, 7, 6, 35, 34, 38, 53, 52, 55, 54,
-<a name="l08619"></a>08619 55, 38, 39, 6, 7, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 23, 54, 55, 38, 39, 38, 53, 52, 54, 51,
-<a name="l08620"></a>08620 50, 23, 22, 23, 55, 38, 39, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 23, 54, 55, 54, 51, 50, 22,
-<a name="l08621"></a>08621 21, 20, 7, 6, 7, 23, 54, 55, 54, 51, 50, 22, 5, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3,
-<a name="l08622"></a>08622 100, 44, 33, 53, 74, 74, 10, 118, 86, 37, 28, 52, 106, 9, 12, 22, 9, 17, 33, 32, 31, 33, 36, 18, 27,
-<a name="l08623"></a>08623 34, 33, 46, 48, 28, 36, 86, 8, 113, 8, 3, 67, 33, 59, 43, 33, 43, 42, 34, 44, 107, 51, 3, 8, 61,
-<a name="l08624"></a>08624 60, 86, 36, 28, 47, 46, 40, 28, 25, 2, 23, 27, 33, 31, 32, 33, 37, 17, 27, 63, 3, 46, 46, 29, 36,
-<a name="l08625"></a>08625 85, 73, 46, 10, 65, 33, 60, 43, 35, 42, -2, -49, 22, 18, 17, 22, 22, 17, 17, 23, 4, -106, 29, 36, 25,
-<a name="l08626"></a>08626 26, 30, 58, 47, 54, 28, 39, -49, 6, 3, 68, 34, 60, 44, 30, 40, 39, 31, 45, 110, 51, 9, 64, 63, 80,
-<a name="l08627"></a>08627 38, 29, 54, 46, 4, 55, 16, 14, 23, 10, 18, 35, 30, 31, 36, 37, 18, 16, 18, 28, 29, 45, 54, 29, 40,
-<a name="l08628"></a>08628 80, 76, 52, 8, 9, 67, 81, 49, 30, 43, 42, 31, 45, 109, 50, 10, 122, 5, 81, 40, 29, 53, 45, 36, 22,
-<a name="l08629"></a>08629 34, 24, 11, 20, 35, 32, 18, 22, 22, 18, 16, 24, 23, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0,
-<a name="l08630"></a>08630 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0,
-<a name="l08631"></a>08631 -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l08632"></a>08632 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l08633"></a>08633 0, 54, 1, 10, 2, 24, 3, 113, 0, 17, 0, 31, 0, 80, 64, 9, 22, 32, 13, 17, 52, 12, 22, 29, 14,
-<a name="l08634"></a>08634 -72, 2, -17, -78, 13, 13, 29, -70, 2, -17, 0, 4, 2, -21, 64, 9, 22, 18, 12, 13, 8, 14, 14, 26, 18,
-<a name="l08635"></a>08635 -72, 2, -3, -77, 0, 0, 33, 26, -70, 2, -3, 0, 8, 1, 40, -123, 47, -19, 17, 51, 47, -19, 25, 17, 57,
-<a name="l08636"></a>08636 47, 18, 57, 57, 18, 57, 0, 24, 63, -3, 50, 47, -20, 18, 57, 57, 43, 49, 48, 1, 20, 7, 6, 35, 34,
-<a name="l08637"></a>08637 39, 38, 53, 52, 55, 54, 55, 39, 55, 22, 23, 22, 7, 52, 39, 38, 39, 6, 7, 6, 21, 20, 22, 51, 50,
-<a name="l08638"></a>08638 54, 2, 24, 46, 71, -67, 73, 48, 55, 35, 32, 33, 15, 61, -75, 35, 120, 87, 110, 47, 54, 45, 9, 28, 57,
-<a name="l08639"></a>08639 48, 56, -124, 2, 76, -115, 71, 110, 29, 33, 61, 70, 92, 78, 79, 4, -87, 95, 25, 84, -89, 38, 63, 27, 26,
-<a name="l08640"></a>08640 49, 12, 39, 35, 51, 57, 63, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l08641"></a>08641 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l08642"></a>08642 1, 0, -98, 1, 45, 3, -92, 5, -61, 0, 44, 0, -73, -71, 0, 18, -1, -32, -74, 16, 17, 52, 11, 12, 25,
-<a name="l08643"></a>08643 4, -72, -1, -32, 64, 11, 9, 17, 52, 4, 19, 16, 26, 25, 32, 29, 25, -72, -1, -64, 64, 10, 9, 14, 52,
-<a name="l08644"></a>08644 25, 25, 22, 16, 16, 7, 29, -72, 2, -17, -75, 0, 22, 1, 22, 22, 7, -72, 2, -14, -77, 0, 0, 39, 1,
-<a name="l08645"></a>08645 -70, 2, -14, 0, 39, 2, -21, 64, 10, 12, 11, 11, 19, 36, 26, 38, 32, 0, 19, -72, 2, -5, -76, 4, 4,
-<a name="l08646"></a>08646 38, 0, 25, -72, 2, -5, 64, 16, 26, 26, 32, 38, 0, 1, 1, 39, 0, 64, 12, 29, 52, 0, 0, 38, -72,
-<a name="l08647"></a>08647 2, -5, -77, 48, 39, 1, 39, 47, 93, -19, 51, 47, 43, 25, 18, 57, 47, 17, 18, 57, 50, 24, 47, -19, 17,
-<a name="l08648"></a>08648 18, 57, 47, -19, 18, 57, 17, 18, 57, 17, 57, 47, 51, 0, 63, 63, 18, 57, 47, 63, 57, 47, 93, -19, 18,
-<a name="l08649"></a>08649 57, 47, 18, 57, 47, 43, 17, 57, 17, 57, 17, 57, 57, 43, 18, 57, 57, 49, 48, 1, 43, 19, 55, 22, 22,
-<a name="l08650"></a>08650 23, 54, 54, 51, 50, 23, 22, 23, 7, 38, 39, 38, 35, 34, 6, 7, 22, 22, 51, 50, 54, 55, 23, 6, 6,
-<a name="l08651"></a>08651 35, 34, 38, 39, 22, 23, 22, 21, 20, 7, 35, 52, 39, 38, 39, 38, -98, 75, 90, 74, 71, 14, 95, 91, 61,
-<a name="l08652"></a>08652 49, 45, 49, 8, 5, 33, 49, 46, 93, 113, 29, 51, 73, 31, 82, 114, 62, 23, 28, -101, 122, 59, 69, 40, 42,
-<a name="l08653"></a>08653 12, 9, 51, 35, 39, 34, 68, 54, 4, -53, -16, -94, 96, 42, -93, -111, 30, 27, 60, 12, 1, 11, 16, 105, 116,
-<a name="l08654"></a>08654 16, 15, 56, 75, 8, -109, -102, 21, 29, 96, 65, 50, 107, -114, -23, -37, -76, -97, -114, 113, 0, 0, 2, 0, -104,
-<a name="l08655"></a>08655 1, 70, 3, -121, 5, -86, 0, 22, 0, 44, 0, 123, 64, 25, 35, 32, 11, 17, 52, 31, 32, 11, 17, 52, 23,
-<a name="l08656"></a>08656 33, 22, 3, 0, 26, 12, 42, 9, 0, 64, 14, 17, 52, 0, -68, 2, -1, 0, 1, 2, -14, 0, 26, 2, -1,
-<a name="l08657"></a>08657 -78, 9, 9, 42, -70, 2, -1, 0, 15, 2, -21, 64, 16, 23, 12, 33, 22, 42, 11, 17, 52, 22, 22, 29, 0,
-<a name="l08658"></a>08658 1, 1, 19, 29, -72, 2, -2, -77, 5, 5, 46, 39, -70, 2, -4, 0, 19, 1, 44, -123, 47, -19, 17, 51, 47,
-<a name="l08659"></a>08659 -19, 25, 18, 57, 47, 51, 18, 57, 47, 43, 51, 57, 57, 0, 24, 63, -19, 57, 47, -19, 63, -19, 43, 17, 18,
-<a name="l08660"></a>08660 57, 17, 18, 23, 57, 49, 48, 1, 43, 43, 1, 55, 22, 23, 22, 21, 20, 7, 6, 35, 34, 38, 39, 6, 6,
-<a name="l08661"></a>08661 35, 34, 39, 38, 53, 52, 18, 55, 19, 22, 22, 51, 50, 54, 53, 52, 39, 38, 39, 6, 7, 6, 7, 6, 21,
-<a name="l08662"></a>08662 20, 22, 51, 50, 54, 1, -82, 66, -46, 105, 92, 65, 74, 107, 28, 48, 28, 44, 89, 47, 95, 61, 65, -94, -60,
-<a name="l08663"></a>08663 80, 22, 77, 40, 48, 65, 87, 80, -115, 41, 48, 64, 39, 49, 68, 61, 43, 71, 4, -49, -37, -47, -48, -74, -105,
-<a name="l08664"></a>08664 120, 105, 119, 14, 23, 37, 30, 52, 55, 95, 113, 1, 29, -28, -3, -44, 23, 32, 51, 39, 74, -121, 124, -98, 43,
-<a name="l08665"></a>08665 67, 89, 82, 103, 74, 64, 74, 28, 0, 1, 0, -53, 1, 45, 3, 123, 5, -67, 0, 35, 0, 121, -75, 21, 32,
-<a name="l08666"></a>08666 14, 22, 52, 10, -72, -1, -32, -74, 11, 17, 52, 15, 16, 19, 29, -72, 2, -17, -74, 28, 28, 25, 19, 19, 12,
-<a name="l08667"></a>08667 3, -72, 2, -17, -77, 25, 25, 0, 12, -70, 2, -14, 0, 0, 2, -21, 64, 21, 3, 64, 15, 16, 52, 3, 64,
-<a name="l08668"></a>08668 11, 13, 52, 3, 28, 35, 16, 15, 15, 29, 28, 28, 35, 22, -72, 2, -13, -78, 6, 6, 35, -70, 2, -5, 0,
-<a name="l08669"></a>08669 0, 1, 34, -123, 47, -19, 51, 47, -19, 17, 51, 47, 51, 57, 47, 51, 17, 18, 57, 43, 43, 0, 63, 63, 18,
-<a name="l08670"></a>08670 57, 47, -19, 18, 57, 47, 18, 57, 47, -19, 18, 57, 57, 49, 48, 1, 43, 43, 1, 52, 18, 55, 34, 38, 53,
-<a name="l08671"></a>08671 52, 54, 55, 54, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 7, 6, 7,
-<a name="l08672"></a>08672 6, 7, 6, 7, 1, 88, 71, 81, -107, -112, 78, 75, 59, 118, 45, 53, 115, 75, 10, 73, 77, 49, 125, -107, 108,
-<a name="l08673"></a>08673 95, 86, -115, 123, 45, 98, 94, 104, 68, 77, 20, 1, 45, -85, 1, 46, -123, 63, 62, 47, -111, 89, 74, 82, 86,
-<a name="l08674"></a>08674 95, 10, 25, 16, 67, 50, 54, 60, 34, 56, -65, 34, 88, 97, -121, -104, -76, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l08675"></a>08675 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l08676"></a>08676 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l08677"></a>08677 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l08678"></a>08678 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l08679"></a>08679 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l08680"></a>08680 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l08681"></a>08681 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l08682"></a>08682 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l08683"></a>08683 -64, 0, 0, 3, 0, 70, 4, -41, 1, -79, 7, 87, 0, 7, 0, 16, 0, 58, 0, -50, -71, 0, 0, 2, -11,
-<a name="l08684"></a>08684 -78, 2, 2, 6, -72, 2, -11, 64, 9, 4, 64, 9, 14, 52, 4, 4, 15, 8, -72, 2, -11, -78, 11, 11, 15,
-<a name="l08685"></a>08685 -72, 2, -11, 64, 27, 13, 64, 9, 17, 52, 13, 13, 36, 24, 42, 21, 55, 56, 51, 46, 47, 35, 42, 47, 47,
-<a name="l08686"></a>08686 36, 56, 56, 36, 36, 42, 51, -72, 2, -11, -78, 21, 21, 42, -70, 2, -11, 0, 28, 2, -12, -76, 0, 8, 8,
-<a name="l08687"></a>08687 4, 13, -72, -1, -63, 64, 12, 15, 16, 52, 13, 24, 47, 46, 39, 36, 35, 17, 56, -72, 2, -7, -76, 55, 55,
-<a name="l08688"></a>08688 47, 31, 35, -72, 2, -7, -78, 36, 36, 47, -70, 2, -7, 0, 46, -1, -64, -77, 21, 23, 52, 46, -72, -1, -64,
-<a name="l08689"></a>08689 -77, 13, 16, 52, 46, -72, 1, 36, -123, 47, 43, 43, -19, 51, 47, -3, 50, 17, 51, 47, -3, 50, 17, 18, 57,
-<a name="l08690"></a>08690 17, 18, 57, 47, 43, 60, 51, 47, 60, 0, 63, -19, 57, 47, -19, 17, 51, 47, 50, 47, 18, 57, 47, 17, 57,
-<a name="l08691"></a>08691 18, 57, 17, 18, 57, 17, 18, 57, 17, 51, 47, 43, -19, 51, 47, -19, 17, 51, 47, 43, -19, 51, 47, -19, 49,
-<a name="l08692"></a>08692 48, 1, 20, 7, 6, 7, 52, 55, 54, 23, 20, 6, 7, 6, 7, 52, 55, 54, 23, 20, 7, 6, 35, 34, 38,
-<a name="l08693"></a>08693 39, 6, 7, 6, 35, 34, 38, 53, 52, 55, 54, 55, 55, 20, 6, 21, 20, 22, 51, 50, 55, 54, 55, 55, 22,
-<a name="l08694"></a>08694 23, 22, 51, 50, 55, 54, 53, 55, 22, 22, 1, -100, 51, 91, -56, 44, 83, -41, 27, 23, 92, -56, 44, 83, -20,
-<a name="l08695"></a>08695 26, 29, 51, 17, 33, 17, 20, 19, 32, 35, 41, 43, 8, 5, 14, 21, 4, 18, 18, 43, 26, 12, 18, 21, 9,
-<a name="l08696"></a>08696 4, 12, 28, 38, 22, 18, 21, 4, 7, 7, 87, 46, 43, 37, 80, 43, 40, 35, 62, 48, 23, 20, 37, 80, 43,
-<a name="l08697"></a>08697 40, 35, -94, 76, 48, 54, 13, 12, 34, 19, 32, 57, 49, 26, 29, 18, 36, 8, 8, 36, 12, 22, 35, 56, 25,
-<a name="l08698"></a>08698 75, 7, 49, 11, 32, 50, 41, 45, 6, 19, 49, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l08699"></a>08699 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l08700"></a>08700 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l08701"></a>08701 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l08702"></a>08702 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l08703"></a>08703 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0,
-<a name="l08704"></a>08704 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0,
-<a name="l08705"></a>08705 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l08706"></a>08706 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l08707"></a>08707 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l08708"></a>08708 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3,
-<a name="l08709"></a>08709 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5,
-<a name="l08710"></a>08710 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17,
-<a name="l08711"></a>08711 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 1, -1,
-<a name="l08712"></a>08712 -70, 1, 37, 5, 27, 1, -45, 0, 3, 0, 24, -67, 0, 2, 2, -17, 0, 1, 2, -21, 0, 0, 2, -16, -79,
-<a name="l08713"></a>08713 5, 1, 47, 16, -28, 0, 63, -19, 49, 48, 1, 33, 53, 33, 5, 27, -6, -97, 5, 97, 1, 37, -82, 0, 0,
-<a name="l08714"></a>08714 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l08715"></a>08715 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l08716"></a>08716 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l08717"></a>08717 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l08718"></a>08718 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l08719"></a>08719 0, 4, 0, 58, -2, -103, 5, -75, 3, -64, 0, 28, 0, 32, 0, 36, 0, 40, 0, -18, -75, 36, 16, 18, 21,
-<a name="l08720"></a>08720 52, 30, -72, -1, -16, -77, 18, 21, 52, 40, -72, -1, -16, -77, 18, 21, 52, 16, -72, -1, -64, 64, 11, 14, 17,
-<a name="l08721"></a>08721 52, 22, 52, 12, 17, 52, 33, 35, 34, -72, 3, 2, -75, 36, 36, 30, 37, 39, 38, -72, 3, 2, -76, 40, 40,
-<a name="l08722"></a>08722 29, 31, 30, -72, 3, 2, 64, 12, 111, 32, 1, -33, 32, 1, 32, 32, 1, 10, 18, 9, 65, 9, 3, 4, 0,
-<a name="l08723"></a>08723 23, 2, -17, 0, 24, 3, 4, 0, 18, 2, -17, 0, 1, 2, -21, -78, 34, 36, 33, -72, 3, 1, -75, 35, 35,
-<a name="l08724"></a>08724 37, 30, 32, 29, -72, 3, 1, -76, 31, 31, 38, 40, 39, -72, 3, 1, -73, 37, 37, 5, 24, 24, 23, 23, 19,
-<a name="l08725"></a>08725 65, 10, 3, 3, 0, 64, 0, 0, 2, -16, 0, 42, 0, 10, 2, -5, 0, 32, 0, 9, -1, -64, -75, 9, 11,
-<a name="l08726"></a>08726 52, 9, 9, 14, -70, 3, 3, 0, 5, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -12, 26, -3,
-<a name="l08727"></a>08727 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 0, 63,
-<a name="l08728"></a>08728 -19, 63, -19, 63, 18, 57, 17, 51, 47, 93, 113, -3, 57, 57, 51, 47, -3, 57, 57, 17, 51, 47, -3, 57, 57,
-<a name="l08729"></a>08729 49, 48, 1, 43, 43, 43, 43, 43, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 23,
-<a name="l08730"></a>08730 22, 51, 33, 53, 52, 38, 39, 55, 22, 23, 22, 21, 1, 7, 39, 55, 19, 7, 39, 55, 39, 7, 39, 55, 5,
-<a name="l08731"></a>08731 -75, -4, 70, -64, 114, -113, 42, 15, 57, 30, 22, 21, 29, 124, 111, -86, 3, 79, 54, 65, 77, 44, 9, 68, -2,
-<a name="l08732"></a>08732 69, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 1, 37, 67, 84, -77, 93, 97, 35, 98, 19, 46, 46, 71,
-<a name="l08733"></a>08733 56, 118, 65, 58, 27, 112, -115, 50, -93, 55, 14, 112, -42, -2, 3, -111, 84, -111, -2, -97, -110, 86, -110, 90, -113,
-<a name="l08734"></a>08734 85, -112, 0, -1, -1, 0, 58, -2, -103, 5, -75, 3, -64, 0, 22, 3, 31, 0, 0, 0, 4, -1, -70, -2, -103,
-<a name="l08735"></a>08735 1, -12, 3, -90, 0, 3, 0, 7, 0, 11, 0, 24, 0, -69, -75, 7, 16, 18, 21, 52, 1, -72, -1, -16, -77,
-<a name="l08736"></a>08736 18, 21, 52, 11, -72, -1, -16, 64, 11, 18, 21, 52, 18, 52, 12, 17, 52, 4, 6, 5, -72, 3, 2, -75, 7,
-<a name="l08737"></a>08737 7, 1, 8, 10, 9, -72, 3, 2, -76, 11, 11, 0, 2, 1, -72, 3, 2, 64, 10, 111, 3, 1, -33, 3, 1,
-<a name="l08738"></a>08738 3, 3, 13, 19, -66, 2, -17, 0, 20, 3, 4, 0, 14, 2, -17, 0, 13, 2, -21, -78, 5, 7, 4, -72, 3,
-<a name="l08739"></a>08739 1, -75, 6, 6, 8, 1, 3, 0, -72, 3, 1, -76, 2, 2, 9, 11, 10, -72, 3, 1, -73, 8, 8, 13, 20,
-<a name="l08740"></a>08740 20, 19, 19, 15, -67, 3, 3, 0, 12, 2, -16, 0, 26, 0, 13, 1, 42, -123, 47, 16, -11, -3, 50, 47, 25,
-<a name="l08741"></a>08741 57, 47, 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 0, 63, -19, 63, -19,
-<a name="l08742"></a>08742 17, 51, 47, 93, 113, -3, 57, 57, 51, 47, -3, 57, 57, 17, 51, 47, -3, 57, 57, 49, 48, 1, 43, 43, 43,
-<a name="l08743"></a>08743 43, 37, 7, 39, 55, 19, 7, 39, 55, 39, 7, 39, 55, 37, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23, 22,
-<a name="l08744"></a>08744 21, 1, -28, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 1, -106, -3, -58, 1, -15, 28, 19, 75, 78, 72,
-<a name="l08745"></a>08745 18, 27, 56, -111, 84, -111, -2, -97, -110, 86, -110, 90, -113, 85, -112, -12, -82, 118, 62, 43, 81, -93, 91, 51, 77,
-<a name="l08746"></a>08746 -78, -1, -1, -1, -70, -2, -103, 1, -12, 3, -90, 0, 22, 3, 33, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l08747"></a>08747 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l08748"></a>08748 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l08749"></a>08749 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l08750"></a>08750 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l08751"></a>08751 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l08752"></a>08752 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l08753"></a>08753 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 4, 0, 54, -2, 78, 4, 32, 3, 117, 0, 44, 0, 48, 0,
-<a name="l08754"></a>08754 52, 0, 56, 0, -10, -75, 52, 16, 18, 21, 52, 46, -72, -1, -16, -77, 18, 21, 52, 56, -72, -1, -16, 64, 17,
-<a name="l08755"></a>08755 18, 21, 52, 41, 32, 10, 11, 52, 24, 42, 10, 11, 52, 121, 42, 1, 27, -72, -1, -74, -75, 9, 17, 52, 49,
-<a name="l08756"></a>08756 51, 50, -72, 3, 2, -75, 52, 52, 46, 53, 55, 54, -72, 3, 2, -76, 56, 56, 45, 47, 46, -70, 3, 2, 0,
-<a name="l08757"></a>08757 48, -1, -64, 64, 10, 11, 17, 52, 48, 48, 19, 7, 3, 31, 30, -70, 2, -17, 0, 32, 3, 6, -76, 15, 18,
-<a name="l08758"></a>08758 0, 19, 11, -72, 2, -17, -78, 3, 3, 18, -70, 2, -17, 0, 19, 3, 7, -78, 50, 52, 49, -72, 3, 1, -75,
-<a name="l08759"></a>08759 51, 51, 53, 46, 48, 45, -72, 3, 1, -76, 47, 47, 54, 56, 55, -72, 3, 1, 64, 23, 53, 64, 10, 11, 52,
-<a name="l08760"></a>08760 53, 53, -113, 0, 1, 0, 18, 30, 32, 31, 31, 19, 18, 18, 58, 7, 7, 25, -70, 3, 3, 0, 39, 1, 42,
-<a name="l08761"></a>08761 -123, 47, -19, 51, 47, 17, 51, 47, 51, 51, 47, 57, 57, 17, 57, 93, 57, 47, 43, -3, 57, 57, 51, 47, -19,
-<a name="l08762"></a>08762 57, 57, 17, 51, 47, -19, 57, 57, 0, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 57,
-<a name="l08763"></a>08763 47, 43, -3, 57, 57, 51, 47, -3, 57, 57, 17, 51, 47, -3, 57, 57, 49, 48, 1, 43, 93, 43, 43, 43, 43,
-<a name="l08764"></a>08764 43, 1, 34, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 51, 50, 54, 51, 7, 6, 7, 6, 7,
-<a name="l08765"></a>08765 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 5, 7, 39, 55,
-<a name="l08766"></a>08766 19, 7, 39, 55, 39, 7, 39, 55, 1, -28, 20, 76, 19, 64, 80, 52, 90, 40, 35, 75, -79, 66, -52, 95, 69,
-<a name="l08767"></a>08767 29, 112, 28, 37, -45, -108, -36, 123, -103, -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 79, 60, 115,
-<a name="l08768"></a>08768 35, 2, 1, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 2, -72, 6, 12, 8, 18, 113, 34, 74, 28, 13,
-<a name="l08769"></a>08769 14, -87, 36, 46, 68, 98, 122, -90, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -88, -122, 102, 91, 28, -13, -111,
-<a name="l08770"></a>08770 84, -111, -2, -97, -110, 86, -110, 90, -113, 85, -112, 0, 4, 0, 54, -2, 78, 4, 53, 3, 105, 0, 62, 0, 66,
-<a name="l08771"></a>08771 0, 70, 0, 74, 1, 54, -75, 70, 16, 18, 21, 52, 64, -72, -1, -16, -77, 18, 21, 52, 74, -72, -1, -16, 64,
-<a name="l08772"></a>08772 17, 18, 21, 52, 30, 32, 10, 11, 52, 13, 42, 10, 11, 52, 121, 31, 1, 16, -72, -1, -94, -75, 9, 17, 52,
-<a name="l08773"></a>08773 71, 73, 72, -72, 3, 2, -76, 74, 74, 65, 63, 66, -72, 3, 2, -76, 64, 64, 67, 69, 70, -72, 3, 2, 64,
-<a name="l08774"></a>08774 15, -48, 68, 1, 68, 68, 1, 19, 56, 8, 52, 61, 41, 37, 20, 19, -70, 2, -17, 0, 21, 3, 6, -76, 48,
-<a name="l08775"></a>08775 51, 34, 52, 45, -72, 2, -17, -78, 37, 37, 51, -66, 2, -17, 0, 52, 3, 7, 0, 61, 2, -17, 0, 1, 2,
-<a name="l08776"></a>08776 -21, -78, 68, 70, 67, -72, 3, 1, -75, 69, 69, 65, 72, 74, 73, -72, 3, 1, -76, 71, 71, 64, 66, 65, -72,
-<a name="l08777"></a>08777 3, 1, 64, 18, 63, 64, 18, 25, 52, 95, 63, 127, 63, 2, 63, 63, 4, 14, 56, 51, 8, 4, -72, 3, 3,
-<a name="l08778"></a>08778 64, 16, 57, 57, -113, 34, 1, 34, 51, 19, 21, 14, 20, 20, 52, 51, 51, 0, -72, 2, -16, -77, 76, 41, 41,
-<a name="l08779"></a>08779 14, -70, 3, 3, 0, 28, 1, 42, -123, 47, -19, 51, 47, 16, -28, 51, 47, 51, 51, 47, 18, 57, 57, 17, 57,
-<a name="l08780"></a>08780 93, 57, 47, -3, 57, 18, 57, 17, 18, 57, 47, 93, 43, -3, 57, 57, 50, 47, -3, 57, 57, 17, 51, 47, -19,
-<a name="l08781"></a>08781 57, 57, 0, 63, -19, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 18, 57, 57, 17, 18,
-<a name="l08782"></a>08782 57, 47, 93, -79, 6, 2, 67, 84, 88, -76, 15, 68, 31, 68, 2, 0, 93, 89, -19, 57, 57, 50, 47, -3, 57,
-<a name="l08783"></a>08783 57, 50, 47, -3, 57, 57, 49, 48, 1, 43, 93, 43, 43, 43, 43, 43, 1, 35, 34, 38, 53, 52, 55, 54, 55,
-<a name="l08784"></a>08784 6, 7, 6, 7, 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54,
-<a name="l08785"></a>08785 55, 38, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 22, 51, 50, 54, 55, 7, 6, 7, 6, 7, 7, 20,
-<a name="l08786"></a>08786 23, 22, 51, 51, 5, 7, 39, 55, 19, 7, 39, 55, 39, 7, 39, 55, 4, 53, -119, 121, 102, 10, 4, 7, -85,
-<a name="l08787"></a>08787 87, -96, 88, 111, -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 85, 66, 127, 37, -87, 40, 89, 36,
-<a name="l08788"></a>08788 101, 63, 21, 110, 34, 37, 83, -79, 97, -30, 77, 51, 97, 53, 40, 41, 52, 33, 58, 2, 50, 31, 75, -119, -2,
-<a name="l08789"></a>08789 -101, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 1, 37, 90, 104, 39, 58, 22, 36, 52, 37, 68, 86, 108,
-<a name="l08790"></a>08790 -118, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -85, -128, 100, 83, 25, 90, 5, 7, 9, 3, 24, 98, 38, 84,
-<a name="l08791"></a>08791 37, 8, 7, -86, 5, 9, 6, 11, 56, 82, 28, 17, -37, -111, 84, -111, -2, -97, -110, 86, -110, 90, -113, 85, -112,
-<a name="l08792"></a>08792 0, 0, 4, -1, -70, -2, -103, 4, 61, 3, 107, 0, 22, 0, 26, 0, 30, 0, 34, 0, -79, -75, 30, 16, 18,
-<a name="l08793"></a>08793 21, 52, 24, -72, -1, -16, -77, 18, 21, 52, 34, -72, -1, -16, -75, 18, 21, 52, 27, 29, 28, -72, 3, 2, -75,
-<a name="l08794"></a>08794 30, 30, 24, 31, 33, 32, -72, 3, 2, -76, 34, 34, 25, 23, 24, -72, 3, 2, -75, 26, 26, 1, 11, 2, 15,
-<a name="l08795"></a>08795 -72, 2, -17, -77, 9, 9, 22, 2, -70, 2, -17, 0, 1, 2, -21, -78, 28, 30, 27, -72, 3, 1, -75, 29, 29,
-<a name="l08796"></a>08796 25, 32, 34, 33, -72, 3, 1, -76, 31, 31, 24, 26, 23, -72, 3, 1, 64, 15, 25, 25, 3, 11, 11, 1, 3,
-<a name="l08797"></a>08797 84, 11, 17, 52, 3, 3, 1, 0, -72, 2, -16, -79, 36, 1, 47, 16, -28, 17, 57, 47, 43, 18, 57, 47, 17,
-<a name="l08798"></a>08798 57, 47, -19, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 0, 63, -3, 60, 50, 47, -19, 18, 57,
-<a name="l08799"></a>08799 17, 51, 47, -19, 57, 57, 51, 47, -3, 57, 57, 17, 51, 47, -3, 57, 57, 49, 48, 1, 43, 43, 43, 1, 33,
-<a name="l08800"></a>08800 53, 33, 38, 39, 38, 39, 38, 35, 34, 7, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 51, 1, 7, 39, 55,
-<a name="l08801"></a>08801 19, 7, 39, 55, 39, 7, 39, 55, 4, 61, -5, 125, 3, 47, 102, 70, 87, 72, 81, 83, 51, 52, 29, 47, 68,
-<a name="l08802"></a>08802 104, 102, -117, 69, -100, 121, 43, 60, -2, -123, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 1, 37, -82, 79,
-<a name="l08803"></a>08803 44, 55, 25, 28, 7, 74, 45, 65, 100, 50, -116, 109, 9, -2, 101, -111, 84, -111, -2, -97, -110, 86, -110, 90, -113,
-<a name="l08804"></a>08804 85, -112, 0, -1, -1, -1, -70, -2, -103, 4, 61, 3, 107, 0, 22, 3, 41, 0, 0, 0, 4, 0, 74, -1, 70,
-<a name="l08805"></a>08805 3, -23, 5, -55, 0, 30, 0, 34, 0, 38, 0, 42, 0, -23, 64, 11, 42, 16, 18, 21, 52, 36, 16, 18, 21,
-<a name="l08806"></a>08806 52, 32, -72, -1, -16, 64, 14, 18, 21, 52, 19, 42, 9, 17, 52, 18, 42, 12, 17, 52, 4, -72, -1, -32, -77,
-<a name="l08807"></a>08807 9, 17, 52, 3, -72, -1, -32, -77, 9, 17, 52, 2, -72, -1, -42, 64, 11, 9, 17, 52, 24, 52, 12, 17, 52,
-<a name="l08808"></a>08808 31, 33, 34, -72, 3, 2, -75, 32, 32, 42, 35, 37, 38, -72, 3, 2, -76, 36, 36, 39, 41, 42, -72, 3, 2,
-<a name="l08809"></a>08809 64, 9, 15, 40, 1, 40, 40, 26, 13, 12, 25, -70, 2, -17, 0, 26, 3, 9, -78, 12, 58, 16, -70, 3, 10,
-<a name="l08810"></a>08810 0, 6, 3, 8, -78, 32, 34, 33, -72, 3, 1, -75, 31, 31, 37, 40, 42, 41, -72, 3, 1, -76, 39, 39, 36,
-<a name="l08811"></a>08811 38, 35, -72, 3, 1, -73, 37, 37, 25, 26, 26, 25, 25, 21, -70, 3, 3, 0, 0, 2, -16, -78, 44, 13, 12,
-<a name="l08812"></a>08812 -72, 1, 26, -123, 47, 51, 16, -12, -3, 50, 47, 25, 57, 47, 17, 51, 24, 47, -19, 57, 57, 51, 47, -3, 57,
-<a name="l08813"></a>08813 57, 17, 51, 47, -3, 57, 57, 0, 63, -3, 25, -28, 24, 63, -19, 17, 57, 17, 51, 47, 93, -19, 57, 57, 51,
-<a name="l08814"></a>08814 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 7,
-<a name="l08815"></a>08815 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 55, 22, 22, 51, 50, 55, 54, 54, 53, 52, 39, 38, 39, 55, 22,
-<a name="l08816"></a>08816 23, 22, 21, 3, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 3, -23, 94, 82, 122, 116, 75, 69, 80, 61,
-<a name="l08817"></a>08817 85, 72, 71, 17, 66, -113, 58, -128, -117, 126, -78, 46, 37, 67, 57, 82, 39, 44, -33, 77, -96, 74, 1, 104, 78,
-<a name="l08818"></a>08818 -94, 75, 65, 76, -94, 74, 1, 37, 110, 118, 104, 75, 72, 20, 15, 32, 27, 27, 40, 13, 27, 82, 75, -27, 92,
-<a name="l08819"></a>08819 79, 87, 70, 74, -99, 76, 76, 86, 106, 3, 91, -110, 86, -110, -2, -8, -112, 86, -113, -81, -111, 84, -111, 0, -1,
-<a name="l08820"></a>08820 -1, 0, 74, -1, 70, 3, -23, 5, -55, 0, 22, 3, 43, 0, 0, 0, 1, 0, 20, 1, 37, 6, 127, 5, -33,
-<a name="l08821"></a>08821 0, 44, 0, -70, -71, 0, 22, -1, -64, 64, 19, 16, 17, 52, 9, 32, 16, 17, 52, 59, 5, 107, 5, 2, 9,
-<a name="l08822"></a>08822 32, 9, 12, 52, 42, -72, -1, -32, -77, 16, 17, 52, 18, -72, -1, -24, -77, 15, 17, 52, 18, -72, -1, -36, -77,
-<a name="l08823"></a>08823 13, 14, 52, 18, -72, -1, -16, 64, 10, 10, 12, 52, 4, 3, 7, 18, 4, 44, 13, 65, 11, 2, -17, 0, 12,
-<a name="l08824"></a>08824 3, 11, 0, 37, 0, 36, 3, 9, 0, 26, 0, 44, 2, -17, 0, 28, 2, -21, -77, 3, 4, 0, 7, -72, 2,
-<a name="l08825"></a>08825 -13, -74, 64, 18, 18, 40, 12, 12, 0, 65, 9, 3, 0, 0, 27, 2, -16, 0, 46, 0, 37, 2, -5, 0, 32,
-<a name="l08826"></a>08826 0, 36, -1, -64, -75, 9, 11, 52, 36, 36, 40, -70, 3, 3, 0, 32, 1, 42, -123, 47, -3, 50, 25, 47, 43,
-<a name="l08827"></a>08827 26, -19, 24, 16, -11, 25, -19, 51, 24, 47, 18, 57, 47, 26, -19, 18, 57, 57, 0, 63, -3, 60, 63, 57, 63,
-<a name="l08828"></a>08828 -19, 17, 23, 57, 43, 43, 43, 49, 48, 1, 43, 43, 93, 43, 43, 1, 38, 38, 39, 7, 39, 38, 53, 52, 55,
-<a name="l08829"></a>08829 54, 55, 37, 21, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 21, 33, 34, 39, 38, 53, 52, 55,
-<a name="l08830"></a>08830 54, 55, 23, 6, 6, 21, 20, 23, 22, 51, 6, 11, 70, -76, -103, 33, 118, 62, 84, 78, -65, 1, 26, -47, 125,
-<a name="l08831"></a>08831 77, 98, 64, 40, 41, -104, 113, 122, 74, -5, 85, -17, 101, 108, 47, 13, 42, 34, 34, 21, 115, 86, -90, 1, -45,
-<a name="l08832"></a>08832 106, -99, 91, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83, 70, 41, 34, 43, 23, 23, 48, 30, 30, 115, 126, -121,
-<a name="l08833"></a>08833 -111, -82, 57, 61, -109, 88, 112, 31, 84, 20, 78, 84, 38, 109, 44, 33, 0, 1, 0, 20, 1, 37, 7, 118, 5,
-<a name="l08834"></a>08834 -33, 0, 69, 0, -3, -71, 0, 42, -1, -42, -77, 16, 17, 52, 33, -72, -1, -16, -77, 15, 17, 52, 47, -72, -1,
-<a name="l08835"></a>08835 -32, -77, 15, 17, 52, 44, -72, -1, -32, -77, 15, 17, 52, 48, -72, -1, -32, -77, 13, 17, 52, 46, -72, -1, -32,
-<a name="l08836"></a>08836 64, 21, 13, 17, 52, 59, 27, 107, 27, -119, 61, 3, 31, 32, 9, 15, 52, 19, 32, 15, 17, 52, 14, -72, -1,
-<a name="l08837"></a>08837 -32, -77, 16, 17, 52, 40, -72, -1, -32, -77, 15, 17, 52, 40, -72, -1, -36, -77, 13, 14, 52, 40, -72, -1, -16,
-<a name="l08838"></a>08838 64, 11, 10, 12, 52, 65, 26, 25, 29, 40, 5, 16, 35, 65, 12, 2, -17, 0, 34, 3, 11, 0, 9, 0, 8,
-<a name="l08839"></a>08839 3, 9, 0, 55, 0, 16, 2, -17, 0, 56, 0, 0, 2, -21, -77, 25, 26, 21, 29, -72, 2, -13, 64, 13, 15,
-<a name="l08840"></a>08840 40, 95, 40, 2, 40, 40, 21, 12, 35, 35, 56, 21, -72, 3, 3, -76, 64, 65, 65, 12, 56, -66, 2, -16, 0,
-<a name="l08841"></a>08841 71, 0, 9, 2, -5, 0, 32, 0, 8, -1, -64, -75, 9, 11, 52, 8, 8, 12, -70, 3, 3, 0, 4, 1, 42,
-<a name="l08842"></a>08842 -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -27, 17, 57, 47, 26, -19, 18, 57, 47, 17, 18, 57, 47, 93,
-<a name="l08843"></a>08843 -19, 18, 57, 57, 0, 63, 60, -3, 60, 63, 57, 63, -19, 17, 23, 57, 43, 43, 43, 49, 48, 1, 43, 43, 43,
-<a name="l08844"></a>08844 93, 43, 43, 0, 43, 43, 43, 43, 1, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21, 20, 23, 22, 51,
-<a name="l08845"></a>08845 33, 50, 55, 54, 53, 52, 39, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7, 6, 21, 20,
-<a name="l08846"></a>08846 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 51, 51, 21, 35, 34, 39, 38, 39, 38, 39, 38, 39, 20,
-<a name="l08847"></a>08847 7, 6, 35, 1, -44, -17, 101, 108, 47, 13, 42, 34, 34, 21, 115, 86, -90, 1, -86, -97, 108, -127, 49, 25, 72,
-<a name="l08848"></a>08848 33, 118, 62, 84, 78, -65, 1, 26, -47, -85, 70, 59, 64, 40, 41, 88, 71, 61, 53, 33, 73, 47, 45, 61, 45,
-<a name="l08849"></a>08849 -125, 123, 82, 90, 44, 81, 49, 11, 25, 51, 111, 119, -21, 1, 37, 57, 61, -109, 88, 112, 31, 84, 20, 78, 84,
-<a name="l08850"></a>08850 38, 109, 44, 33, 41, 49, 89, 67, 46, 24, 38, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83, 70, 58, 35, 30,
-<a name="l08851"></a>08851 18, 23, 48, 30, 30, 67, 65, 56, 60, 37, 90, 57, 38, 51, -82, 84, 41, 105, 63, 13, 30, 49, -78, 100, 107,
-<a name="l08852"></a>08852 0, 0, 1, -1, -70, 1, 37, 3, 39, 5, -33, 0, 29, 0, -95, -71, 0, 25, -1, -64, 64, 19, 16, 17, 52,
-<a name="l08853"></a>08853 12, 32, 16, 17, 52, 59, 8, 107, 8, 2, 12, 32, 9, 12, 52, 21, -72, -1, -24, -77, 15, 17, 52, 21, -72,
-<a name="l08854"></a>08854 -1, -36, -77, 13, 14, 52, 21, -72, -1, -16, 64, 10, 10, 12, 52, 7, 6, 10, 21, 4, 2, 16, -65, 2, -17,
-<a name="l08855"></a>08855 0, 15, 3, 11, 0, 29, 0, 2, 2, -17, 0, 1, 2, -21, -77, 6, 7, 3, 10, -72, 2, -13, 64, 22, 64,
-<a name="l08856"></a>08856 111, 21, -113, 21, 2, 15, 21, 47, 21, 95, 21, 3, 32, 21, 1, 21, 21, 1, 15, 15, 3, -66, 3, 0, 0,
-<a name="l08857"></a>08857 32, 0, 0, 2, -16, 0, 31, 0, 1, 1, 42, -123, 47, 16, -12, 26, 25, -19, 51, 24, 47, 18, 57, 47, 93,
-<a name="l08858"></a>08858 93, 93, 26, -19, 18, 57, 57, 0, 63, -3, 60, 63, -19, 17, 23, 57, 43, 43, 43, 49, 48, 1, 43, 93, 43,
-<a name="l08859"></a>08859 43, 1, 33, 53, 33, 38, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7, 6, 21, 20, 23,
-<a name="l08860"></a>08860 22, 23, 22, 23, 22, 23, 3, 39, -4, -109, 2, -7, 70, -76, -103, 33, 118, 62, 84, 78, -65, 1, 26, -47, 125,
-<a name="l08861"></a>08861 77, 98, 64, 40, 41, -104, 113, 122, 74, 1, 37, -82, 106, -99, 91, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83,
-<a name="l08862"></a>08862 70, 41, 34, 43, 23, 23, 48, 30, 30, 115, 126, -121, -111, 0, 1, -1, -70, 1, 37, 4, 30, 5, -33, 0, 54,
-<a name="l08863"></a>08863 0, -36, -71, 0, 47, -1, -42, -77, 13, 17, 52, 38, -72, -1, -16, -77, 13, 17, 52, 52, -72, -1, -32, -77, 15,
-<a name="l08864"></a>08864 17, 52, 49, -72, -1, -32, -77, 13, 17, 52, 53, -72, -1, -32, -77, 13, 17, 52, 51, -72, -1, -32, 64, 31, 13,
-<a name="l08865"></a>08865 17, 52, 84, 43, 84, 50, 2, 68, 43, 68, 50, 2, 59, 32, 107, 32, -119, 11, 3, 36, 32, 9, 15, 52, 24,
-<a name="l08866"></a>08866 32, 15, 17, 52, 45, -72, -1, -32, -77, 15, 17, 52, 45, -72, -1, -36, -77, 13, 14, 52, 45, -72, -1, -16, 64,
-<a name="l08867"></a>08867 14, 10, 12, 52, 0, 45, 1, 15, 31, 30, 34, 45, 5, 21, 40, 65, 9, 2, -17, 0, 39, 3, 11, 0, 5,
-<a name="l08868"></a>08868 0, 21, 2, -17, 0, 6, 0, 20, 2, -21, -77, 30, 31, 26, 34, -72, 2, -13, 64, 11, 15, 45, 1, 45, 45,
-<a name="l08869"></a>08869 26, 20, 40, 40, 6, 26, -72, 3, 3, -77, 15, 15, 20, 6, -69, 2, -16, 0, 56, 0, 20, 1, 42, -123, 47,
-<a name="l08870"></a>08870 16, -27, 17, 57, 47, -19, 18, 57, 47, 17, 18, 57, 47, 93, -19, 18, 57, 57, 0, 63, 60, -3, 60, 63, -19,
-<a name="l08871"></a>08871 17, 23, 57, 93, 43, 43, 43, 49, 48, 1, 43, 43, 93, 93, 93, 43, 43, 0, 43, 43, 43, 43, 1, 22, 23,
-<a name="l08872"></a>08872 22, 51, 51, 21, 35, 34, 39, 38, 39, 38, 39, 38, 39, 20, 7, 6, 35, 35, 53, 51, 50, 55, 54, 53, 52,
-<a name="l08873"></a>08873 39, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22,
-<a name="l08874"></a>08874 23, 22, 2, -43, 47, 45, 61, 45, -125, 123, 82, 90, 44, 81, 49, 11, 25, 51, 111, 119, -21, 103, 108, -97, 108,
-<a name="l08875"></a>08875 -127, 49, 25, 72, 33, 118, 62, 84, 78, -65, 1, 26, -47, 125, 77, 98, 64, 40, 41, 88, 71, 61, 53, 33, 2,
-<a name="l08876"></a>08876 101, 57, 38, 51, -82, 84, 41, 105, 63, 13, 30, 49, -78, 100, 107, -82, 41, 49, 89, 67, 46, 24, 38, 31, 90,
-<a name="l08877"></a>08877 52, 29, -84, 98, 90, 72, 110, -83, 70, 41, 34, 43, 23, 23, 48, 30, 30, 67, 65, 56, 60, 37, 0, 2, 0,
-<a name="l08878"></a>08878 20, 1, 37, 6, 127, 6, -16, 0, 44, 0, 55, 0, -15, 64, 16, 48, 8, 19, 21, 52, 47, 32, 10, 11, 52,
-<a name="l08879"></a>08879 54, 32, 10, 11, 52, 22, -72, -1, -64, 64, 19, 16, 17, 52, 9, 32, 16, 17, 52, 59, 5, 107, 5, 2, 9,
-<a name="l08880"></a>08880 32, 9, 12, 52, 42, -72, -1, -32, -73, 16, 17, 52, 51, 13, 50, 12, 45, -72, 2, -17, -74, 15, 46, 1, 46,
-<a name="l08881"></a>08881 46, 12, 18, -72, -1, -24, -77, 15, 17, 52, 18, -72, -1, -36, -77, 13, 14, 52, 18, -72, -1, -16, 64, 10, 10,
-<a name="l08882"></a>08882 12, 52, 4, 3, 7, 18, 4, 44, 13, 65, 11, 2, -17, 0, 12, 3, 11, 0, 37, 0, 36, 3, 9, 0, 26,
-<a name="l08883"></a>08883 0, 44, 2, -17, 0, 28, 2, -21, 64, 9, 46, 12, 50, 50, 7, 3, 4, 0, 7, -72, 2, -13, -74, 64, 18,
-<a name="l08884"></a>08884 18, 40, 12, 12, 0, 65, 9, 3, 0, 0, 27, 2, -16, 0, 57, 0, 37, 2, -5, 0, 32, 0, 36, -1, -64,
-<a name="l08885"></a>08885 -75, 9, 11, 52, 36, 36, 40, -70, 3, 3, 0, 32, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16,
-<a name="l08886"></a>08886 -11, 25, -19, 51, 24, 47, 18, 57, 47, 26, -19, 18, 57, 57, 17, 51, 47, 16, 60, 0, 63, -3, 60, 63, 57,
-<a name="l08887"></a>08887 63, -19, 17, 23, 57, 43, 43, 43, 17, 51, 47, 93, -19, 17, 51, 18, 57, 49, 48, 1, 43, 43, 93, 43, 43,
-<a name="l08888"></a>08888 0, 43, 43, 43, 1, 38, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7, 6, 21, 20, 23,
-<a name="l08889"></a>08889 22, 23, 22, 23, 22, 23, 21, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21, 20, 23, 22, 51, 1,
-<a name="l08890"></a>08890 21, 6, 7, 6, 7, 53, 54, 54, 55, 54, 6, 11, 70, -76, -103, 33, 118, 62, 84, 78, -65, 1, 26, -47, 125,
-<a name="l08891"></a>08891 77, 98, 64, 40, 41, -104, 113, 122, 74, -5, 85, -17, 101, 108, 47, 13, 42, 34, 34, 21, 115, 86, -90, 4, 74,
-<a name="l08892"></a>08892 -40, -72, -93, 93, 32, -64, -122, -106, 1, -45, 106, -99, 91, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83, 70, 41,
-<a name="l08893"></a>08893 34, 43, 23, 23, 48, 30, 30, 115, 126, -121, -111, -82, 57, 61, -109, 88, 112, 31, 84, 20, 78, 84, 38, 109, 44,
-<a name="l08894"></a>08894 33, 5, 29, -87, 79, 89, 78, 63, 106, 36, 126, 70, 79, 0, 2, 0, 20, 1, 37, 7, 118, 6, -16, 0, 69,
-<a name="l08895"></a>08895 0, 80, 1, 51, 64, 16, 73, 8, 19, 21, 52, 72, 32, 10, 11, 52, 79, 32, 10, 11, 52, 42, -72, -1, -42,
-<a name="l08896"></a>08896 -77, 16, 17, 52, 33, -72, -1, -16, -77, 15, 17, 52, 47, -72, -1, -32, -77, 15, 17, 52, 44, -72, -1, -32, -77,
-<a name="l08897"></a>08897 15, 17, 52, 48, -72, -1, -32, -77, 13, 17, 52, 46, -72, -1, -32, 64, 21, 13, 17, 52, 59, 27, 107, 27, -119,
-<a name="l08898"></a>08898 61, 3, 31, 32, 9, 15, 52, 19, 32, 15, 17, 52, 14, -72, -1, -32, -73, 16, 17, 52, 76, 35, 75, 34, 70,
-<a name="l08899"></a>08899 -72, 2, -17, -74, 15, 71, 1, 71, 71, 34, 40, -72, -1, -32, -77, 15, 17, 52, 40, -72, -1, -36, -77, 13, 14,
-<a name="l08900"></a>08900 52, 40, -72, -1, -16, 64, 11, 10, 12, 52, 65, 26, 25, 29, 40, 5, 16, 35, 65, 12, 2, -17, 0, 34, 3,
-<a name="l08901"></a>08901 11, 0, 9, 0, 8, 3, 9, 0, 55, 0, 16, 2, -17, 0, 56, 0, 0, 2, -21, 64, 9, 71, 35, 75, 75,
-<a name="l08902"></a>08902 29, 25, 26, 21, 29, -72, 2, -13, 64, 13, 15, 40, 95, 40, 2, 40, 40, 21, 12, 35, 35, 56, 21, -72, 3,
-<a name="l08903"></a>08903 3, -76, 64, 65, 65, 12, 56, -66, 2, -16, 0, 82, 0, 9, 2, -5, 0, 32, 0, 8, -1, -64, -75, 9, 11,
-<a name="l08904"></a>08904 52, 8, 8, 12, -70, 3, 3, 0, 4, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -27, 17, 57,
-<a name="l08905"></a>08905 47, 26, -19, 18, 57, 47, 17, 18, 57, 47, 93, -19, 18, 57, 57, 17, 51, 47, 16, 60, 0, 63, 60, -3, 60,
-<a name="l08906"></a>08906 63, 57, 63, -19, 17, 23, 57, 43, 43, 43, 17, 51, 47, 93, -19, 17, 51, 18, 57, 49, 48, 1, 43, 43, 43,
-<a name="l08907"></a>08907 93, 43, 43, 0, 43, 43, 43, 43, 43, 43, 43, 1, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21, 20,
-<a name="l08908"></a>08908 23, 22, 51, 33, 50, 55, 54, 53, 52, 39, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7,
-<a name="l08909"></a>08909 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 51, 51, 21, 35, 34, 39, 38, 39, 38, 39,
-<a name="l08910"></a>08910 38, 39, 20, 7, 6, 35, 1, 21, 6, 7, 6, 7, 53, 54, 54, 55, 54, 1, -44, -17, 101, 108, 47, 13, 42,
-<a name="l08911"></a>08911 34, 34, 21, 115, 86, -90, 1, -86, -97, 108, -127, 49, 25, 72, 33, 118, 62, 84, 78, -65, 1, 26, -47, -85, 70,
-<a name="l08912"></a>08912 59, 64, 40, 41, 88, 71, 61, 53, 33, 73, 47, 45, 61, 45, -125, 123, 82, 90, 44, 81, 49, 11, 25, 51, 111,
-<a name="l08913"></a>08913 119, -21, 2, -91, -40, -72, -93, 93, 32, -64, -122, -106, 1, 37, 57, 61, -109, 88, 112, 31, 84, 20, 78, 84, 38,
-<a name="l08914"></a>08914 109, 44, 33, 41, 49, 89, 67, 46, 24, 38, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83, 70, 58, 35, 30, 18,
-<a name="l08915"></a>08915 23, 48, 30, 30, 67, 65, 56, 60, 37, 90, 57, 38, 51, -82, 84, 41, 105, 63, 13, 30, 49, -78, 100, 107, 5,
-<a name="l08916"></a>08916 -53, -87, 79, 89, 78, 63, 106, 36, 126, 70, 79, 0, 2, -1, -70, 1, 37, 3, 39, 7, 2, 0, 29, 0, 40,
-<a name="l08917"></a>08917 0, -46, 64, 14, -56, 33, 1, 32, 32, 10, 11, 52, 39, 32, 10, 11, 52, 25, -72, -1, -64, 64, 23, 16, 17,
-<a name="l08918"></a>08918 52, 12, 32, 16, 17, 52, 59, 8, 107, 8, 2, 12, 32, 9, 12, 52, 36, 16, 35, 15, 30, -72, 2, -17, -77,
-<a name="l08919"></a>08919 31, 31, 15, 21, -72, -1, -24, -77, 15, 17, 52, 21, -72, -1, -36, -77, 13, 14, 52, 21, -72, -1, -16, 64, 10,
-<a name="l08920"></a>08920 10, 12, 52, 7, 6, 10, 21, 4, 2, 16, -65, 2, -17, 0, 15, 3, 11, 0, 29, 0, 2, 2, -17, 0, 1,
-<a name="l08921"></a>08921 2, -21, 64, 9, 31, 15, 35, 35, 10, 6, 7, 3, 10, -72, 2, -13, 64, 22, 64, 111, 21, -113, 21, 2, 15,
-<a name="l08922"></a>08922 21, 47, 21, 95, 21, 3, 32, 21, 1, 21, 21, 1, 15, 15, 3, -66, 3, 0, 0, 32, 0, 0, 2, -16, 0,
-<a name="l08923"></a>08923 42, 0, 1, 1, 42, -123, 47, 16, -11, 26, 25, -19, 51, 24, 47, 18, 57, 47, 93, 93, 93, 26, -19, 18, 57,
-<a name="l08924"></a>08924 57, 17, 51, 47, 16, 60, 0, 63, -3, 60, 63, -19, 17, 23, 57, 43, 43, 43, 17, 51, 47, -19, 17, 51, 18,
-<a name="l08925"></a>08925 57, 49, 48, 1, 43, 93, 43, 43, 0, 43, 43, 93, 1, 33, 53, 33, 38, 38, 39, 7, 39, 38, 53, 52, 55,
-<a name="l08926"></a>08926 54, 55, 37, 21, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 3, 21, 6, 7, 6, 7, 53, 54,
-<a name="l08927"></a>08927 54, 55, 54, 3, 39, -4, -109, 2, -7, 70, -76, -103, 33, 118, 62, 84, 78, -65, 1, 26, -47, 125, 77, 98, 64,
-<a name="l08928"></a>08928 40, 41, -104, 113, 122, 74, 97, -40, -72, -93, 93, 32, -64, -122, -106, 1, 37, -82, 106, -99, 91, 31, 90, 52, 29,
-<a name="l08929"></a>08929 -84, 98, 90, 72, 110, -83, 70, 41, 34, 43, 23, 23, 48, 30, 30, 115, 126, -121, -111, 5, 47, -87, 79, 89, 78,
-<a name="l08930"></a>08930 63, 106, 36, 126, 70, 79, 0, 0, 2, -1, -70, 1, 37, 4, 30, 7, 2, 0, 54, 0, 65, 1, 27, -77, -56,
-<a name="l08931"></a>08931 58, 1, 65, -72, -1, -32, 64, 19, 16, 17, 52, 63, 32, 13, 14, 52, 57, 32, 10, 11, 52, 64, 32, 10, 11,
-<a name="l08932"></a>08932 52, 47, -72, -1, -42, -77, 13, 17, 52, 38, -72, -1, -16, -77, 13, 17, 52, 52, -72, -1, -32, -77, 15, 17, 52,
-<a name="l08933"></a>08933 49, -72, -1, -32, -77, 13, 17, 52, 53, -72, -1, -32, -77, 13, 17, 52, 51, -72, -1, -32, 64, 35, 13, 17, 52,
-<a name="l08934"></a>08934 84, 43, 84, 50, 2, 68, 43, 68, 50, 2, 59, 32, 107, 32, -119, 11, 3, 36, 32, 9, 15, 52, 24, 32, 15,
-<a name="l08935"></a>08935 17, 52, 61, 40, 60, 39, 55, -72, 2, -17, -77, 56, 56, 39, 45, -72, -1, -32, -77, 15, 17, 52, 45, -72, -1,
-<a name="l08936"></a>08936 -36, -77, 13, 14, 52, 45, -72, -1, -16, 64, 14, 10, 12, 52, 0, 45, 1, 15, 31, 30, 34, 45, 5, 21, 40,
-<a name="l08937"></a>08937 65, 9, 2, -17, 0, 39, 3, 11, 0, 5, 0, 21, 2, -17, 0, 6, 0, 20, 2, -21, 64, 9, 56, 40, 60,
-<a name="l08938"></a>08938 60, 34, 30, 31, 26, 34, -72, 2, -13, 64, 11, 15, 45, 1, 45, 45, 26, 20, 40, 40, 6, 26, -72, 3, 3,
-<a name="l08939"></a>08939 -77, 15, 15, 20, 6, -69, 2, -16, 0, 67, 0, 20, 1, 42, -123, 47, 16, -27, 17, 57, 47, -19, 18, 57, 47,
-<a name="l08940"></a>08940 17, 18, 57, 47, 93, -19, 18, 57, 57, 17, 51, 47, 16, 60, 0, 63, 60, -3, 60, 63, -19, 17, 23, 57, 93,
-<a name="l08941"></a>08941 43, 43, 43, 17, 51, 47, -19, 17, 51, 18, 57, 49, 48, 1, 43, 43, 93, 93, 93, 43, 43, 0, 43, 43, 43,
-<a name="l08942"></a>08942 43, 43, 43, 43, 43, 93, 1, 22, 23, 22, 51, 51, 21, 35, 34, 39, 38, 39, 38, 39, 38, 39, 20, 7, 6,
-<a name="l08943"></a>08943 35, 35, 53, 51, 50, 55, 54, 53, 52, 39, 38, 39, 7, 39, 38, 53, 52, 55, 54, 55, 37, 21, 7, 6, 7,
-<a name="l08944"></a>08944 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 22, 19, 21, 6, 7, 6, 7, 53, 54, 54, 55, 54, 2, -43, 47,
-<a name="l08945"></a>08945 45, 61, 45, -125, 123, 82, 90, 44, 81, 49, 11, 25, 51, 111, 119, -21, 103, 108, -97, 108, -127, 49, 25, 72, 33,
-<a name="l08946"></a>08946 118, 62, 84, 78, -65, 1, 26, -47, 125, 77, 98, 64, 40, 41, 88, 71, 61, 53, 33, 58, -40, -72, -93, 93, 32,
-<a name="l08947"></a>08947 -64, -122, -106, 2, 101, 57, 38, 51, -82, 84, 41, 105, 63, 13, 30, 49, -78, 100, 107, -82, 41, 49, 89, 67, 46,
-<a name="l08948"></a>08948 24, 38, 31, 90, 52, 29, -84, 98, 90, 72, 110, -83, 70, 41, 34, 43, 23, 23, 48, 30, 30, 67, 65, 56, 60,
-<a name="l08949"></a>08949 37, 4, 67, -87, 79, 89, 78, 63, 106, 36, 126, 70, 79, 0, 0, 1, 0, 50, -1, -89, 4, -39, 3, -78, 0,
-<a name="l08950"></a>08950 59, 0, -103, -71, 0, 38, -1, -42, 64, 19, 14, 17, 52, 41, 52, 14, 17, 52, 42, 52, 11, 17, 52, 3, 6,
-<a name="l08951"></a>08951 14, 33, 39, 32, 65, 9, 3, 7, 0, 6, 2, -17, 0, 57, 3, 4, 0, 39, 2, -17, 0, 22, -1, -64, -77,
-<a name="l08952"></a>08952 9, 11, 52, 22, -66, 3, 13, 0, 14, 2, -17, 0, 48, 2, -21, 0, 51, 3, 12, 64, 9, 10, 10, 44, 36,
-<a name="l08953"></a>08953 3, 18, 0, 0, 44, -72, 2, -3, -76, 64, 18, 18, 61, 33, -69, 2, -5, 0, 32, 0, 32, -1, -64, -75, 9,
-<a name="l08954"></a>08954 11, 52, 32, 32, 36, -70, 3, 12, 0, 26, 1, 57, -123, 47, -3, 50, 25, 47, 43, 26, -19, 17, 51, 24, 47,
-<a name="l08955"></a>08955 26, -19, 51, 47, 18, 57, 17, 18, 57, 47, -19, 0, 63, -19, 63, 43, -19, 63, -19, 63, 18, 57, 17, 18, 57,
-<a name="l08956"></a>08956 49, 48, 1, 43, 43, 43, 1, 20, 6, 7, 38, 38, 35, 34, 7, 6, 21, 20, 22, 51, 51, 50, 22, 22, 21,
-<a name="l08957"></a>08957 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22, 51, 50, 55, 54, 54,
-<a name="l08958"></a>08958 53, 52, 38, 35, 35, 34, 38, 53, 52, 55, 54, 55, 54, 51, 50, 22, 4, -39, 12, 2, 35, 97, 50, 87, 96,
-<a name="l08959"></a>08959 88, 43, 53, 80, 72, 69, 96, -37, -55, -2, -87, -78, 94, 102, 34, 26, 46, 3, 60, 42, 63, 67, -87, -99, 120,
-<a name="l08960"></a>08960 -97, -120, -38, 25, 28, -22, 43, 66, 55, 60, 85, 102, 103, 66, 76, 3, 32, 32, 67, 14, 45, 52, 101, 93, 55,
-<a name="l08961"></a>08961 19, 19, 3, 16, 65, -5, -125, 120, 69, 75, -105, 104, 114, 87, 95, 6, 113, 17, 112, -61, 75, 122, 122, 48, 41,
-<a name="l08962"></a>08962 114, 27, 19, 12, 62, 49, 67, 115, 125, 84, 101, 80, 0, 0, 1, 0, 36, -1, 31, 4, -75, 2, 5, 0, 54,
-<a name="l08963"></a>08963 0, -112, -71, 0, 32, -1, -32, 64, 9, 12, 17, 52, 26, 53, 25, 25, 53, 6, -72, -1, -64, 64, 10, 9, 10,
-<a name="l08964"></a>08964 52, 6, 6, 1, 44, 44, 1, 34, -70, 2, -17, 0, 17, -1, -64, -77, 9, 13, 52, 17, -66, 3, 14, 0, 53,
-<a name="l08965"></a>08965 2, -17, 0, 1, 2, -21, 0, 38, 3, 12, -77, 13, 13, 0, 47, -72, 3, 12, -76, 64, 4, 4, 30, 0, -66,
-<a name="l08966"></a>08966 2, -16, 0, 56, 0, 26, 2, -5, 0, 32, 0, 25, -1, -64, -75, 9, 11, 52, 25, 25, 30, -70, 3, 12, 0,
-<a name="l08967"></a>08967 21, 1, 57, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -28, 17, 57, 47, 26, -19, 18, 57, 47, -19, 0,
-<a name="l08968"></a>08968 63, -19, 63, 43, -3, 17, 57, 47, 18, 57, 47, 43, 17, 51, 47, 18, 57, 49, 48, 1, 43, 1, 35, 34, 6,
-<a name="l08969"></a>08969 21, 20, 51, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7,
-<a name="l08970"></a>08970 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 35, 38, 38, 35, 34, 38, 53, 52, 55, 54, 55, 54, 51,
-<a name="l08971"></a>08971 51, 4, -75, -81, -102, -101, 93, 41, 48, 81, 48, 18, 29, 123, -122, -2, -53, -41, 127, -121, 64, 23, 98, 40, 38,
-<a name="l08972"></a>08972 37, 57, -128, 122, -43, -113, 109, -122, 30, 35, 27, 115, 18, 63, 54, 73, 60, 101, 76, 84, -81, 1, 37, 16, 24,
-<a name="l08973"></a>08973 33, 4, 9, 6, 9, 15, 37, -69, 85, 93, 73, 78, -112, 116, -126, 47, -102, 20, 65, 64, 110, 70, 123, 64, 61,
-<a name="l08974"></a>08974 22, 27, 47, 17, 17, 3, 7, 33, 33, 124, 79, 64, 31, 23, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l08975"></a>08975 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l08976"></a>08976 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l08977"></a>08977 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l08978"></a>08978 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l08979"></a>08979 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l08980"></a>08980 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l08981"></a>08981 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l08982"></a>08982 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l08983"></a>08983 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1,
-<a name="l08984"></a>08984 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l08985"></a>08985 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l08986"></a>08986 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l08987"></a>08987 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l08988"></a>08988 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l08989"></a>08989 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l08990"></a>08990 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l08991"></a>08991 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l08992"></a>08992 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l08993"></a>08993 -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l08994"></a>08994 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l08995"></a>08995 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l08996"></a>08996 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l08997"></a>08997 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l08998"></a>08998 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l08999"></a>08999 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l09000"></a>09000 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l09001"></a>09001 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 3, 0, 48, 4, -41, 1, -49, 7, 119, 0, 45, 0,
-<a name="l09002"></a>09002 86, 0, 98, 1, 29, 64, 9, 3, 97, 10, 35, 9, 9, 33, 14, 43, -70, 2, -11, 0, 90, -1, -64, -75, 11,
-<a name="l09003"></a>09003 15, 52, 90, 90, 97, -72, 2, -11, -74, 35, 35, 20, 23, 23, 33, 27, -72, 2, -11, -78, 20, 20, 33, -72, 2,
-<a name="l09004"></a>09004 -11, 64, 22, 14, 14, 75, 53, 70, 50, 83, 84, 79, 74, 75, 63, 70, 75, 75, 64, 84, 84, 64, 64, 70, 79,
-<a name="l09005"></a>09005 -72, 2, -11, -78, 50, 50, 70, -70, 2, -11, 0, 57, 2, -12, 64, 14, 9, 6, 97, 10, 87, 35, 93, 39, 33,
-<a name="l09006"></a>09006 30, 17, 6, 6, 0, -70, 2, -10, 0, 87, -1, -64, -75, 9, 10, 52, 87, 87, 93, -72, 2, -10, 64, 12, 39,
-<a name="l09007"></a>09007 64, 9, 16, 52, 39, 39, 30, 14, 23, 23, 17, -72, 2, -10, 64, 10, 30, 30, 53, 75, 74, 67, 64, 63, 46,
-<a name="l09008"></a>09008 84, -72, 2, -7, -76, 83, 83, 75, 60, 63, -72, 2, -7, -78, 64, 64, 75, -70, 2, -7, 0, 74, -1, -64, -77,
-<a name="l09009"></a>09009 21, 23, 52, 74, -72, -1, -64, -77, 13, 16, 52, 74, -72, 1, 36, -123, 47, 43, 43, -19, 51, 47, -3, 50, 17,
-<a name="l09010"></a>09010 51, 47, -3, 50, 17, 18, 57, 17, 18, 57, 51, 47, -3, 50, 47, 57, 17, 51, 47, 43, -3, 50, 47, 43, -19,
-<a name="l09011"></a>09011 57, 47, 17, 18, 57, 17, 18, 57, 17, 57, 57, 18, 57, 0, 63, -19, 57, 47, -19, 17, 51, 47, 50, 47, 18,
-<a name="l09012"></a>09012 57, 47, 17, 57, 18, 57, 17, 18, 57, 17, 18, 57, 17, 51, 47, -3, 50, 47, -19, 18, 57, 47, 17, 57, 47,
-<a name="l09013"></a>09013 -3, 50, 47, 43, -19, 17, 18, 57, 47, 18, 57, 17, 57, 49, 48, 1, 6, 6, 7, 22, 22, 21, 20, 6, 7,
-<a name="l09014"></a>09014 39, 6, 7, 6, 35, 55, 54, 53, 52, 38, 35, 34, 7, 7, 54, 55, 54, 51, 50, 22, 21, 20, 6, 7, 54,
-<a name="l09015"></a>09015 55, 38, 39, 38, 53, 52, 55, 54, 55, 22, 22, 3, 20, 7, 6, 35, 34, 38, 39, 6, 7, 6, 35, 34, 38,
-<a name="l09016"></a>09016 53, 52, 54, 55, 55, 20, 6, 21, 20, 22, 51, 50, 55, 54, 55, 55, 22, 23, 22, 51, 50, 55, 54, 53, 55,
-<a name="l09017"></a>09017 22, 22, 3, 52, 38, 35, 34, 6, 21, 20, 23, 22, 23, 54, 1, -54, 4, 13, 22, 15, 17, 3, 4, 86, 46,
-<a name="l09018"></a>09018 58, 71, 87, 36, 20, 20, 19, 21, 18, 26, 7, 11, 20, 46, 34, 38, 7, 8, 69, 64, 32, 9, 18, 37, 46,
-<a name="l09019"></a>09019 50, 29, 38, 30, 26, 29, 51, 18, 30, 19, 20, 19, 32, 35, 42, 42, 14, 13, 21, 4, 18, 18, 43, 26, 12,
-<a name="l09020"></a>09020 18, 21, 8, 5, 12, 28, 38, 22, 18, 21, 4, 7, 41, 23, 12, 19, 12, 18, 5, 30, 13, 7, 21, 23, 47,
-<a name="l09021"></a>09021 35, 12, 21, 13, 18, 43, 26, 67, 54, 30, 36, 60, 37, 29, 22, 38, 24, 44, 71, 30, 55, 67, 42, 17, 35,
-<a name="l09022"></a>09022 33, 20, 46, 32, 12, 24, 27, 47, 45, 55, 1, 1, 38, -2, 116, 75, 48, 54, 12, 13, 34, 19, 32, 56, 50,
-<a name="l09023"></a>09023 26, 50, 33, 8, 8, 36, 12, 22, 35, 56, 25, 76, 6, 49, 11, 31, 50, 41, 44, 6, 19, 49, 1, 36, 24,
-<a name="l09024"></a>09024 38, 17, 12, 18, 20, 6, 27, 17, 0, 0, 3, 0, 70, 4, -41, 1, -79, 7, 61, 0, 41, 0, 49, 0, 57,
-<a name="l09025"></a>09025 0, -52, 64, 19, 7, 25, 4, 38, 39, 34, 29, 30, 18, 25, 30, 30, 19, 39, 39, 19, 19, 25, 34, -72, 2,
-<a name="l09026"></a>09026 -11, -78, 4, 4, 25, -72, 2, -11, 64, 9, 11, 64, 9, 12, 52, 11, 11, 48, 42, -72, 2, -11, -78, 44, 44,
-<a name="l09027"></a>09027 48, -72, 2, -11, 64, 9, 46, 64, 9, 24, 52, 46, 46, 56, 50, -72, 2, -11, -78, 52, 52, 56, -70, 2, -11,
-<a name="l09028"></a>09028 0, 54, 2, -12, 64, 18, 42, 50, 50, 46, 54, 64, 37, 40, 52, 54, 7, 30, 29, 22, 19, 18, 0, 39, -72,
-<a name="l09029"></a>09029 2, -7, -76, 38, 38, 30, 14, 18, -72, 2, -7, -78, 19, 19, 30, -70, 2, -7, 0, 29, -1, -64, -77, 21, 23,
-<a name="l09030"></a>09030 52, 29, -72, -1, -64, -77, 13, 16, 52, 29, -72, 1, 36, -123, 47, 43, 43, -19, 51, 47, -3, 50, 17, 51, 47,
-<a name="l09031"></a>09031 -3, 50, 17, 18, 57, 17, 18, 57, 47, 43, 60, 51, 47, 60, 0, 63, -19, 51, 47, -19, 17, 51, 47, 43, -19,
-<a name="l09032"></a>09032 51, 47, -19, 17, 51, 47, 43, -19, 57, 47, -19, 17, 51, 47, 50, 47, 18, 57, 47, 17, 57, 18, 57, 17, 18,
-<a name="l09033"></a>09033 57, 17, 18, 57, 49, 48, 1, 20, 7, 6, 35, 34, 38, 39, 6, 7, 6, 35, 34, 38, 53, 52, 55, 54, 55,
-<a name="l09034"></a>09034 55, 20, 6, 21, 20, 22, 51, 50, 55, 54, 55, 55, 22, 23, 22, 51, 50, 55, 54, 53, 55, 22, 22, 7, 20,
-<a name="l09035"></a>09035 7, 6, 7, 52, 55, 54, 23, 20, 7, 6, 7, 52, 55, 54, 1, -79, 26, 29, 51, 17, 33, 17, 19, 20, 32,
-<a name="l09036"></a>09036 35, 42, 42, 8, 5, 14, 21, 4, 17, 19, 43, 26, 13, 17, 21, 9, 4, 12, 28, 38, 22, 18, 21, 4, 7,
-<a name="l09037"></a>09037 15, 52, 89, -55, 43, 84, -41, 51, 90, -55, 43, 84, 6, -25, 76, 48, 53, 13, 12, 34, 19, 31, 56, 49, 25,
-<a name="l09038"></a>09038 29, 18, 36, 8, 8, 36, 12, 23, 33, 56, 27, 73, 6, 49, 11, 32, 50, 41, 45, 7, 24, 44, -42, 46, 44,
-<a name="l09039"></a>09039 35, 82, 44, 41, 34, 35, 47, 45, 36, 81, 43, 41, 35, 0, 0, 2, 0, 70, 4, -41, 1, -79, 6, -71, 0,
-<a name="l09040"></a>09040 7, 0, 49, 0, -83, -71, 0, 0, 2, -11, -78, 2, 2, 6, -72, 2, -11, 64, 27, 4, 64, 9, 28, 52, 4,
-<a name="l09041"></a>09041 4, 27, 46, 47, 42, 37, 38, 26, 27, 15, 33, 12, 38, 38, 27, 47, 47, 27, 27, 33, 42, -72, 2, -11, -78,
-<a name="l09042"></a>09042 12, 12, 33, -70, 2, -11, 0, 19, 2, -12, -78, 0, 0, 4, -72, -1, -64, 64, 12, 14, 19, 52, 4, 15, 38,
-<a name="l09043"></a>09043 37, 30, 27, 26, 8, 47, -72, 2, -7, -76, 46, 46, 38, 22, 26, -72, 2, -7, -78, 27, 27, 38, -70, 2, -7,
-<a name="l09044"></a>09044 0, 37, -1, -64, -77, 21, 23, 52, 37, -72, -1, -64, -77, 13, 16, 52, 37, -72, 1, 36, -123, 47, 43, 43, -19,
-<a name="l09045"></a>09045 51, 47, -3, 50, 17, 51, 47, -3, 50, 17, 18, 57, 17, 18, 57, 47, 43, 51, 47, 0, 63, -19, 57, 47, -19,
-<a name="l09046"></a>09046 17, 51, 47, 50, 47, 18, 57, 47, 17, 18, 57, 17, 57, 17, 57, 17, 18, 57, 17, 51, 47, 43, -19, 51, 47,
-<a name="l09047"></a>09047 -3, 49, 48, 1, 20, 7, 6, 7, 52, 55, 54, 23, 20, 7, 6, 35, 34, 38, 39, 6, 7, 6, 35, 34, 38,
-<a name="l09048"></a>09048 53, 52, 55, 54, 55, 55, 20, 6, 21, 20, 22, 51, 50, 55, 54, 55, 55, 22, 23, 22, 51, 50, 55, 54, 53,
-<a name="l09049"></a>09049 55, 22, 22, 1, -94, 52, 89, -55, 45, 82, -26, 26, 29, 51, 17, 33, 17, 20, 19, 32, 35, 42, 42, 8, 5,
-<a name="l09050"></a>09050 14, 21, 4, 18, 18, 43, 26, 12, 18, 21, 8, 5, 12, 28, 38, 22, 18, 21, 4, 7, 6, -71, 46, 46, 35,
-<a name="l09051"></a>09051 80, 42, 41, 34, -101, 75, 48, 54, 13, 12, 34, 19, 32, 56, 50, 26, 29, 18, 36, 8, 8, 36, 12, 22, 35,
-<a name="l09052"></a>09052 56, 25, 76, 6, 49, 11, 31, 50, 41, 44, 6, 19, 49, 0, 3, 0, 64, 4, -39, 1, -79, 7, 46, 0, 32,
-<a name="l09053"></a>09053 0, 74, 0, 86, 0, -20, -73, 29, 84, 4, 15, 11, 0, 8, 22, -70, 2, -11, 0, 78, -1, -64, 64, 10, 11,
-<a name="l09054"></a>09054 13, 52, 78, 78, 84, 0, 0, 8, 84, -72, 2, -11, 64, 29, 15, 15, 8, 64, 9, 24, 52, 8, 8, 52, 40,
-<a name="l09055"></a>09055 58, 37, 71, 72, 67, 62, 63, 51, 58, 63, 63, 52, 72, 72, 52, 52, 58, 67, -72, 2, -11, -78, 37, 37, 58,
-<a name="l09056"></a>09056 -70, 2, -11, 0, 44, 2, -12, 64, 9, 84, 4, 75, 15, 81, 19, 0, 0, 25, -72, 2, -10, -75, 75, 75, 81,
-<a name="l09057"></a>09057 11, 11, 19, -72, 2, -10, 64, 10, 81, 81, 40, 63, 62, 55, 52, 51, 33, 72, -72, 2, -7, -76, 71, 71, 63,
-<a name="l09058"></a>09058 47, 51, -72, 2, -7, -78, 52, 52, 63, -70, 2, -7, 0, 62, -1, -64, -77, 21, 23, 52, 62, -72, -1, -64, -77,
-<a name="l09059"></a>09059 13, 16, 52, 62, -72, 1, 36, -123, 47, 43, 43, -19, 51, 47, -3, 50, 17, 51, 47, -3, 50, 17, 18, 57, 17,
-<a name="l09060"></a>09060 18, 57, 51, 47, -3, 50, 47, 17, 51, 47, -3, 50, 47, 17, 18, 57, 17, 57, 57, 0, 63, -19, 57, 47, -19,
-<a name="l09061"></a>09061 17, 51, 47, 50, 47, 18, 57, 47, 17, 57, 18, 57, 17, 18, 57, 17, 18, 57, 17, 51, 47, 43, 51, 47, -19,
-<a name="l09062"></a>09062 18, 57, 47, 17, 51, 47, 43, -19, 17, 18, 57, 17, 57, 18, 57, 49, 48, 1, 34, 39, 38, 39, 6, 7, 6,
-<a name="l09063"></a>09063 35, 34, 38, 39, 54, 55, 54, 55, 38, 39, 38, 53, 52, 54, 51, 50, 22, 21, 20, 7, 6, 7, 22, 23, 22,
-<a name="l09064"></a>09064 21, 20, 7, 6, 35, 34, 38, 39, 6, 7, 6, 35, 34, 38, 53, 52, 55, 54, 55, 55, 20, 6, 21, 20, 22,
-<a name="l09065"></a>09065 51, 50, 55, 54, 55, 55, 22, 23, 22, 51, 50, 55, 54, 53, 55, 22, 22, 39, 52, 38, 35, 34, 6, 21, 20,
-<a name="l09066"></a>09066 22, 23, 54, 54, 1, -79, 35, 39, 8, 35, 57, 23, 60, 56, 14, 27, 15, 76, 31, 48, 58, 23, 11, 17, 71,
-<a name="l09067"></a>09067 45, 29, 47, 10, 3, 20, 32, 6, 10, 26, 29, 51, 17, 33, 17, 20, 19, 32, 35, 42, 42, 8, 5, 14, 21,
-<a name="l09068"></a>09068 4, 18, 18, 43, 26, 12, 18, 21, 9, 4, 12, 28, 38, 22, 18, 21, 4, 7, 81, 30, 22, 7, 6, 20, 35,
-<a name="l09069"></a>09069 3, 7, 6, 49, 9, 2, 10, 49, 14, 38, 9, 8, 34, 15, 23, 33, 22, 15, 23, 23, 43, 85, 41, 29, 21,
-<a name="l09070"></a>09070 23, 7, 35, 15, 11, 17, -95, 75, 48, 54, 13, 12, 34, 19, 32, 56, 50, 26, 29, 18, 36, 8, 8, 36, 12,
-<a name="l09071"></a>09071 22, 35, 56, 25, 75, 7, 50, 11, 31, 50, 41, 45, 6, 20, 49, -14, 21, 40, 14, 9, 21, 29, 19, 7, 18,
-<a name="l09072"></a>09072 0, 0, 2, 0, 70, 4, -41, 1, -79, 6, -45, 0, 41, 0, 49, 0, -79, 64, 19, 7, 25, 4, 38, 39, 34,
-<a name="l09073"></a>09073 29, 30, 18, 25, 30, 30, 19, 39, 39, 19, 19, 25, 34, -72, 2, -11, -78, 4, 4, 25, -72, 2, -11, 64, 14,
-<a name="l09074"></a>09074 11, 64, 27, 29, 52, 11, 64, 9, 9, 52, 11, 11, 48, 42, -72, 2, -11, -78, 44, 44, 48, -70, 2, -11, 0,
-<a name="l09075"></a>09075 46, 2, -12, 64, 16, 42, 42, 46, 64, 37, 40, 52, 46, 7, 30, 29, 22, 19, 18, 0, 39, -72, 2, -7, -76,
-<a name="l09076"></a>09076 38, 38, 30, 14, 18, -72, 2, -7, -78, 19, 19, 30, -70, 2, -7, 0, 29, -1, -64, -77, 21, 23, 52, 29, -72,
-<a name="l09077"></a>09077 -1, -64, -77, 13, 16, 52, 29, -72, 1, 36, -123, 47, 43, 43, -19, 51, 47, -3, 50, 17, 51, 47, -3, 50, 17,
-<a name="l09078"></a>09078 18, 57, 17, 18, 57, 47, 43, 51, 47, 0, 63, -19, 51, 47, -19, 17, 51, 47, 43, 43, -19, 57, 47, -19, 17,
-<a name="l09079"></a>09079 51, 47, 50, 47, 18, 57, 47, 17, 57, 18, 57, 17, 18, 57, 17, 18, 57, 49, 48, 1, 20, 7, 6, 35, 34,
-<a name="l09080"></a>09080 38, 39, 6, 7, 6, 35, 34, 38, 53, 52, 55, 54, 55, 55, 20, 6, 21, 20, 22, 51, 50, 55, 54, 55, 55,
-<a name="l09081"></a>09081 22, 23, 22, 51, 50, 55, 54, 53, 55, 22, 22, 7, 20, 7, 6, 7, 52, 55, 54, 1, -79, 26, 29, 51, 18,
-<a name="l09082"></a>09082 30, 19, 20, 19, 32, 35, 42, 42, 8, 5, 14, 21, 4, 18, 18, 43, 26, 12, 18, 21, 8, 5, 12, 28, 38,
-<a name="l09083"></a>09083 22, 18, 21, 4, 7, 15, 51, 90, -55, 44, 83, 6, 125, 75, 47, 53, 12, 13, 34, 19, 32, 56, 50, 25, 29,
-<a name="l09084"></a>09084 18, 35, 9, 9, 36, 12, 22, 33, 55, 26, 74, 6, 49, 11, 31, 50, 41, 44, 6, 19, 49, -24, 47, 45, 36,
-<a name="l09085"></a>09085 80, 43, 40, 35, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l09086"></a>09086 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l09087"></a>09087 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l09088"></a>09088 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 1, -1, -36, -2, -19, 1, -81, 4, -46, 0, 5,
-<a name="l09089"></a>09089 0, 16, -75, 0, 3, 2, 5, 1, 2, 47, -35, -58, 0, 47, 47, -51, 49, 48, 19, 17, 35, 17, 33, 21, 36,
-<a name="l09090"></a>09090 72, 1, -45, 4, -117, -6, 98, 5, -27, 71, 0, 0, 1, -2, 81, -2, -19, 0, 36, 4, -46, 0, 5, 0, 16,
-<a name="l09091"></a>09091 -75, 5, 2, 3, 0, 3, 4, 47, -51, -58, 0, 47, 47, -51, 49, 48, 1, 53, 33, 17, 35, 17, -2, 81, 1,
-<a name="l09092"></a>09092 -45, 72, 4, -117, 71, -6, 27, 5, -98, 0, 1, -1, 22, -2, -19, 0, -22, 5, -123, 0, 11, 0, 33, 64, 14,
-<a name="l09093"></a>09093 6, 9, 10, 0, 5, 10, 3, 8, 0, 2, 3, 10, 5, 3, 47, -42, -51, 16, -35, -42, 60, 0, 47, 47, -35,
-<a name="l09094"></a>09094 60, 16, -42, -51, 49, 48, 19, 35, 17, 35, 17, 35, 17, 33, 21, 33, 17, 33, -22, -58, 72, -58, 1, -44, -2,
-<a name="l09095"></a>09095 114, 1, -114, 3, -40, -5, 21, 4, -21, 1, -83, 71, -2, -31, 0, 1, -1, 22, -2, -19, 0, -22, 5, -123, 0,
-<a name="l09096"></a>09096 11, 0, 33, 64, 14, 5, 2, 1, 11, 6, 1, 8, 1, 6, 8, 9, 3, 11, 9, 47, -42, -64, 16, -35, -42,
-<a name="l09097"></a>09097 -51, 0, 47, 47, -35, -64, 16, -42, -51, 49, 48, 3, 33, 17, 33, 53, 33, 17, 35, 17, 35, 17, 35, -22, 1,
-<a name="l09098"></a>09098 -114, -2, 114, 1, -44, -58, 72, -58, 4, 31, 1, 31, 71, -2, 83, -5, 21, 4, -21, 0, 1, -1, 22, -2, -19,
-<a name="l09099"></a>09099 0, -22, 5, -123, 0, 7, 0, 27, 64, 13, 47, 6, 127, 6, 2, 6, 0, 5, 3, 0, 2, 5, 3, 47, -58,
-<a name="l09100"></a>09100 -35, -58, 0, 47, 47, 60, -51, 93, 49, 48, 19, 35, 17, 35, 17, 35, 17, 33, -22, -58, 72, -58, 1, -44, 3,
-<a name="l09101"></a>09101 -40, -5, 21, 4, -21, 1, -83, 0, 0, 2, -1, 22, -2, -19, 0, -22, 5, -123, 0, 6, 0, 10, 0, 64, 64,
-<a name="l09102"></a>09102 30, 5, 7, 9, 3, 3, 10, 4, 8, 64, 16, 21, 52, 8, 10, 6, 2, 1, 8, 4, 10, 10, 0, 1, 7,
-<a name="l09103"></a>09103 5, 0, 1, 9, 3, 1, 47, -42, -51, 16, -35, -42, -51, 17, 18, 57, 61, 47, 60, 60, 0, 24, 47, 47, 60,
-<a name="l09104"></a>09104 -35, -34, 43, -51, 18, 57, 61, 47, 60, 60, 60, 49, 48, 19, 35, 17, 39, 55, 23, 7, 55, 39, 7, 23, 36,
-<a name="l09105"></a>09105 72, -58, -22, -22, -58, 98, -122, -122, -122, -2, -19, 5, 11, -74, -41, -41, -74, -74, 121, 121, 120, 0, 0, 1, -1,
-<a name="l09106"></a>09106 22, -2, -19, 0, -22, 5, -123, 0, 13, 0, 35, 64, 15, 4, 3, 7, 0, 8, 13, 11, 8, 6, 10, 11, 3,
-<a name="l09107"></a>09107 13, 1, 11, 47, -64, -42, -64, 16, -35, -64, -50, 0, 47, 47, -64, -35, -64, -42, -51, 49, 48, 3, 51, 17, 35,
-<a name="l09108"></a>09108 53, 33, 17, 51, 21, 35, 17, 35, 17, 35, -22, -58, -58, 1, 14, -58, -58, 72, -58, 4, 31, 1, 31, 71, -2,
-<a name="l09109"></a>09109 -102, 71, -5, 21, 4, -21, 0, 1, -1, 22, -2, -19, 0, -22, 5, -123, 0, 15, 0, 41, 64, 18, 5, 4, 6,
-<a name="l09110"></a>09110 3, 9, 0, 10, 15, 13, 5, 10, 7, 12, 13, 4, 15, 2, 13, 47, -64, -42, -64, 16, -35, -64, -42, -64, 0,
-<a name="l09111"></a>09111 47, 47, -64, -35, -64, -42, -64, -35, -64, 49, 48, 3, 51, 17, 35, 53, 33, 21, 35, 17, 51, 21, 35, 17, 35,
-<a name="l09112"></a>09112 17, 35, -22, -58, -58, 1, -44, -58, -58, -58, 72, -58, 4, 31, 1, 31, 71, 71, -2, -31, 71, -5, 21, 4, -21,
-<a name="l09113"></a>09113 0, 2, -1, 22, -2, -19, 0, -22, 5, -123, 0, 3, 0, 11, 0, 33, 64, 14, 5, 3, 0, 7, 4, 0, 10,
-<a name="l09114"></a>09114 1, 7, 9, 10, 0, 4, 10, 47, -42, -51, 16, -35, -42, -51, 0, 47, 47, -35, 60, 16, -42, -51, 49, 48, 3,
-<a name="l09115"></a>09115 33, 17, 33, 3, 17, 33, 17, 35, 17, 35, 17, -92, 1, 72, -2, -72, 70, 1, -44, -58, 72, 4, 31, 1, 31,
-<a name="l09116"></a>09116 -2, -102, 1, -83, -2, 83, -5, 21, 4, -21, 0, 0, 1, -1, 22, -2, -19, 0, -22, 5, -123, 0, 5, 0, 20,
-<a name="l09117"></a>09117 -73, 3, 5, 2, 1, 4, 0, 3, 1, 47, -58, -35, -58, 0, 47, 47, 60, -51, 49, 48, 19, 35, 17, 3, 33,
-<a name="l09118"></a>09118 3, 36, 72, -58, 1, -44, -58, -2, -19, 5, 44, 1, 108, -2, -108, 0, 1, -1, 22, -2, -19, 0, -22, 5, -123,
-<a name="l09119"></a>09119 0, 6, 0, 29, 64, 11, 5, 6, 4, 2, 5, 5, 2, 6, 1, 4, 2, 47, -58, -35, -58, 18, 57, 61, 47,
-<a name="l09120"></a>09120 0, 24, 47, 47, 60, -51, 49, 48, 19, 17, 35, 17, 35, 19, 19, 36, 72, -58, -22, -22, 3, -40, -5, 21, 4,
-<a name="l09121"></a>09121 -21, 1, -83, -2, 83, 0, 0, 2, -1, -36, -2, 87, 0, 36, 7, 39, 0, 3, 0, 7, 0, 29, 64, 12, 2,
-<a name="l09122"></a>09122 2, 3, 7, 7, 6, 3, 6, 1, 5, 2, 6, 47, 60, -35, 60, 0, 47, 47, 18, 57, 47, 18, 57, 47, 49,
-<a name="l09123"></a>09123 48, 19, 17, 35, 17, 19, 17, 35, 17, 36, 72, 72, 72, 7, 39, -4, 56, 3, -56, -6, -8, -4, 56, 3, -56,
-<a name="l09124"></a>09124 0, 0, 1, -1, 22, -2, 87, 0, -22, 7, 39, 0, 11, 0, 31, 64, 13, 7, 4, 5, 10, 1, 0, 7, 11,
-<a name="l09125"></a>09125 9, 2, 4, 0, 2, 47, -35, -64, 16, -35, -35, -64, 0, 47, -35, -64, 47, -35, -64, 49, 48, 3, 53, 51, 17,
-<a name="l09126"></a>09126 35, 53, 33, 21, 35, 17, 51, 21, -22, -58, -58, 1, -44, -58, -58, -2, 87, 71, 8, 66, 71, 71, -9, -66, 71,
-<a name="l09127"></a>09127 0, 1, -1, -36, -2, 87, 0, -32, 7, 39, 0, 4, 0, 19, -74, 1, 0, 4, 3, 0, 2, 3, 47, -35, -50,
-<a name="l09128"></a>09128 0, 47, 47, 25, -35, -51, 49, 48, 19, 7, 17, 35, 17, -32, -68, 72, 6, 110, -114, -8, 119, 8, -48, 0, 1,
-<a name="l09129"></a>09129 -1, 32, -2, 87, 0, 36, 7, 39, 0, 4, 0, 27, 64, 12, 6, 4, 22, 4, 2, 3, 4, 0, 2, 1, 4,
-<a name="l09130"></a>09130 2, 47, -50, -51, 0, 47, 47, 25, -35, -51, 49, 48, 0, 93, 19, 17, 35, 17, 39, 36, 72, -68, 7, 39, -9,
-<a name="l09131"></a>09131 48, 7, -119, -114, 0, 1, -1, -36, -2, 87, 0, -22, 7, 39, 0, 5, 0, 16, -75, 5, 1, 4, 3, 1, 4,
-<a name="l09132"></a>09132 47, -35, -51, 0, 47, -51, 47, 49, 48, 19, 17, 51, 21, 33, 17, 36, -58, -2, -14, 7, 39, -9, 119, 71, 8,
-<a name="l09133"></a>09133 -48, 0, 0, 2, 0, 74, 0, -21, 4, 33, 4, -64, 0, 27, 0, 39, 0, -67, 64, 24, 47, 41, 1, 8, 16,
-<a name="l09134"></a>09134 14, 15, 22, 2, 0, 1, 23, 15, 17, 16, 9, 1, 3, 2, 22, 33, 16, 1, 16, -68, 2, -94, 0, 17, 2,
-<a name="l09135"></a>09135 -72, 0, 21, 2, -72, -78, 31, 41, 19, -72, 1, 105, -75, 5, 8, 46, 2, 1, 2, -68, 2, -94, 0, 7, 2,
-<a name="l09136"></a>09136 -72, 0, 3, 2, -72, 64, 22, 37, 41, 5, 9, 46, 15, 48, 15, 64, 15, -126, 15, 4, 15, 62, 34, 41, 14,
-<a name="l09137"></a>09137 62, 10, 62, 12, -72, 1, 105, 64, 27, 28, 41, 26, 23, 33, 1, 63, 1, 79, 1, -115, 1, 4, 1, 62, 24,
-<a name="l09138"></a>09138 62, 0, 62, 56, 26, 72, 26, -49, 26, 3, 26, -72, 1, -2, -75, 40, 5, 7, -98, 121, 24, 43, 0, 63, 1,
-<a name="l09139"></a>09139 78, 16, -12, 93, 77, -28, -28, -12, 93, 60, 16, -19, -3, -28, -28, -19, -12, 93, 60, 0, 77, 16, -19, -28, -28,
-<a name="l09140"></a>09140 -12, 93, 60, 16, -3, -19, -28, -28, -12, 93, 60, 17, 18, 57, 57, 17, 18, 57, 57, 1, 17, 18, 57, 57, 17,
-<a name="l09141"></a>09141 18, 57, 57, 49, 48, 1, 93, 19, 39, 55, 23, 54, 51, 50, 23, 55, 23, 7, 22, 21, 20, 7, 23, 7, 39,
-<a name="l09142"></a>09142 6, 35, 34, 39, 7, 39, 55, 38, 53, 52, 23, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, -43, -117, 115,
-<a name="l09143"></a>09143 -117, 106, -125, -124, 105, -117, 116, -117, 71, 71, -117, 116, -117, 105, -124, -125, 106, -117, 115, -117, 71, -93, -104, 107, 107,
-<a name="l09144"></a>09144 -104, -105, 108, 107, -104, 3, -63, -120, 119, -117, 72, 72, -117, 119, -120, 110, 125, 126, 110, -120, 119, -116, 73, 73, -116,
-<a name="l09145"></a>09145 119, -120, 110, 126, 125, 125, 108, -104, -104, 108, 107, -104, -104, 0, 0, 16, 0, 0, 0, 0, 8, 0, 5, -63, 0,
-<a name="l09146"></a>09146 5, 0, 9, 0, 13, 0, 25, 0, 29, 0, 35, 0, 46, 0, 52, 0, 56, 0, 68, 0, 72, 0, 76, 0, 82,
-<a name="l09147"></a>09147 0, 89, 0, 96, 0, 104, 1, -2, 64, -1, -89, 15, -73, 15, 2, 119, 15, -121, 15, -105, 15, 3, 122, 38, 1,
-<a name="l09148"></a>09148 83, 37, 99, 37, 2, 35, 37, 51, 37, 67, 37, 3, 89, 61, 105, 61, 2, 41, 61, 57, 61, 73, 61, 3, 89,
-<a name="l09149"></a>09149 65, 105, 65, 2, 41, 65, 57, 65, 73, 65, 3, 86, 59, 102, 59, 2, 38, 59, 54, 59, 70, 59, 3, 86, 67,
-<a name="l09150"></a>09150 102, 67, 2, 38, 67, 54, 67, 70, 67, 3, -58, 102, 1, -59, 104, 1, -54, 98, 1, -55, 100, 1, 86, 96, 102,
-<a name="l09151"></a>09151 96, 2, 89, 91, 105, 91, 2, -91, 42, -75, 42, 2, 99, 42, 1, -75, 42, -59, 42, -43, 42, -11, 42, 4, 117,
-<a name="l09152"></a>09152 42, -123, 42, -107, 42, 3, 51, 42, 67, 42, 83, 42, 3, 99, 66, 24, 66, 40, 45, 87, 111, 93, 1, 63, 93,
-<a name="l09153"></a>09153 79, 93, 95, 93, 3, 93, 93, 39, 86, 80, 40, 1, 47, 40, 63, 40, 79, 40, 3, 40, 47, 12, 79, 71, 1,
-<a name="l09154"></a>09154 71, 1, 50, 51, 7, 27, 3, 47, 8, 28, 4, 51, 19, 21, 103, 16, 60, 94, 80, 39, 1, 15, 39, 79, 39,
-<a name="l09155"></a>09155 95, 39, 3, -97, 39, 1, 32, 39, 48, 39, 64, 39, 3, 39, 82, 11, 70, 34, 79, 77, 55, 75, 32, 82, 54,
-<a name="l09156"></a>09156 74, 31, 77, 97, 112, 57, -128, 57, -112, 57, 3, 64, 57, 80, 57, 96, 57, 3, 31, 57, 1, 57, 39, 87, 48,
-<a name="l09157"></a>09157 94, 1, 94, 31, 39, -65, 39, 2, 31, 39, 95, 39, 111, 39, -97, 64, 102, 39, -33, 39, -17, 39, 6, 39, 36,
-<a name="l09158"></a>09158 85, 45, 101, 45, 2, 37, 45, 53, 45, 69, 45, 3, 45, 83, -97, 43, 1, 43, 95, 18, 111, 18, 2, 18, 90,
-<a name="l09159"></a>09159 80, 36, 1, 36, 23, -112, 14, 1, 111, 14, 127, 14, 2, 14, 33, 7, 54, 9, 53, 35, 3, 0, 31, 1, 31,
-<a name="l09160"></a>09160 35, 1, 11, 33, 0, 10, 35, 106, 48, 101, 1, 101, 111, 63, 127, 63, 2, 15, 63, 31, 63, 63, 63, 79, 63,
-<a name="l09161"></a>09161 4, 63, 26, 73, 27, 74, 78, 47, 15, 77, 1, 77, 78, 49, 69, 81, 50, 70, 78, 47, -64, -64, -35, -64, -64,
-<a name="l09162"></a>09162 16, -35, 93, -64, 16, -44, -64, -35, -64, 47, 93, 113, -51, 114, 16, -48, -64, -64, -35, -64, -64, 16, -44, 93, -64,
-<a name="l09163"></a>09163 16, -44, -64, -35, -64, 16, -42, 113, 93, -51, -44, 93, -51, -58, 93, -44, 113, -51, 51, 93, 93, 16, -44, 93, 113,
-<a name="l09164"></a>09164 -35, 114, -64, 16, -42, 93, 93, 93, -51, 0, 47, -64, 60, 60, -35, -64, 60, 60, 16, -44, -64, -42, -64, 16, -42,
-<a name="l09165"></a>09165 93, 93, 113, 93, -51, -44, -64, -35, -48, -58, 47, -64, 60, 60, -35, -64, 60, 60, 16, -35, -64, -42, 93, -64, 16,
-<a name="l09166"></a>09166 -42, 93, 113, -51, 18, 57, 47, 113, 113, -51, 57, 16, -60, -64, 16, -51, 49, 48, 93, 93, 113, 93, 93, 113, 113,
-<a name="l09167"></a>09167 93, 93, 93, 93, 1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 113, 93, 93, 1, 35, 53, 35, 53, 33, 5,
-<a name="l09168"></a>09168 33, 53, 33, 1, 35, 17, 51, 1, 20, 35, 34, 39, 55, 22, 51, 50, 53, 17, 51, 1, 33, 53, 33, 1, 33,
-<a name="l09169"></a>09169 53, 51, 53, 51, 1, 20, 33, 35, 17, 51, 50, 21, 20, 7, 22, 1, 35, 21, 35, 17, 33, 1, 33, 53, 33,
-<a name="l09170"></a>09170 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 1, 35, 17, 51, 1, 33, 53, 33, 5, 33, 17, 51, 21,
-<a name="l09171"></a>09171 51, 1, 52, 35, 35, 21, 51, 50, 23, 52, 35, 35, 21, 51, 50, 37, 16, 35, 34, 17, 16, 51, 50, 8, 0,
-<a name="l09172"></a>09172 100, -33, 1, 67, -3, -63, -2, -67, 1, 67, 2, 63, 100, 100, -2, -10, -45, 86, 52, 73, 25, 40, 95, 116, -4,
-<a name="l09173"></a>09173 -116, -2, -67, 1, 67, 4, 126, -2, -67, -33, 100, -3, -113, -2, -18, -16, -21, -7, 89, 119, -5, -76, -33, 100, 1,
-<a name="l09174"></a>09174 67, 4, 126, -2, -67, 1, 67, -3, -107, -92, -103, -103, -95, -95, -103, -103, -92, -3, 14, 100, 100, 3, 30, -2, -67,
-<a name="l09175"></a>09175 1, 67, -3, -63, -2, -67, 100, -33, 3, -70, -93, 89, 101, -105, 30, -85, 111, 124, -98, -3, -57, -55, -58, -58, -55,
-<a name="l09176"></a>09176 4, 126, -33, 100, 100, 100, -4, 126, 1, 67, -2, -31, -15, 45, 79, 26, -118, 1, -28, 1, 27, 100, -6, 63, 100,
-<a name="l09177"></a>09177 -33, 1, 12, -47, 2, -60, -70, 91, 54, 46, 2, -108, -33, 1, 67, -6, 63, 100, 2, 123, -83, -64, -64, -83, -81,
-<a name="l09178"></a>09178 -64, -64, -2, -79, 1, 67, -4, 126, 100, 100, 1, 67, -33, 3, 25, 99, -62, -49, 109, -36, -1, 1, 13, -2, -13,
-<a name="l09179"></a>09179 -2, -11, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l09180"></a>09180 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l09181"></a>09181 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l09182"></a>09182 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l09183"></a>09183 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l09184"></a>09184 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l09185"></a>09185 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l09186"></a>09186 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l09187"></a>09187 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0,
-<a name="l09188"></a>09188 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0,
-<a name="l09189"></a>09189 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l09190"></a>09190 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l09191"></a>09191 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l09192"></a>09192 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3,
-<a name="l09193"></a>09193 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5,
-<a name="l09194"></a>09194 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17,
-<a name="l09195"></a>09195 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1,
-<a name="l09196"></a>09196 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0,
-<a name="l09197"></a>09197 -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0,
-<a name="l09198"></a>09198 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0,
-<a name="l09199"></a>09199 -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l09200"></a>09200 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l09201"></a>09201 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4,
-<a name="l09202"></a>09202 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l09203"></a>09203 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l09204"></a>09204 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l09205"></a>09205 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l09206"></a>09206 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l09207"></a>09207 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l09208"></a>09208 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l09209"></a>09209 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l09210"></a>09210 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l09211"></a>09211 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1,
-<a name="l09212"></a>09212 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l09213"></a>09213 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l09214"></a>09214 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l09215"></a>09215 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l09216"></a>09216 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l09217"></a>09217 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l09218"></a>09218 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l09219"></a>09219 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l09220"></a>09220 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l09221"></a>09221 -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l09222"></a>09222 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l09223"></a>09223 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l09224"></a>09224 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l09225"></a>09225 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l09226"></a>09226 4, -64, 0, 0, 1, 0, 127, -2, 83, 2, 48, 6, 72, 0, 23, 0, 72, -71, 0, 22, -1, -32, -77, 11, 17,
-<a name="l09227"></a>09227 52, 16, -72, -1, -12, -77, 14, 17, 52, 15, -72, -1, -32, -76, 10, 17, 52, 0, 1, -72, 3, 6, -78, 14, 13,
-<a name="l09228"></a>09228 13, -72, 2, -6, -78, 14, 14, 1, -72, 2, -6, -78, 0, 0, 7, -71, 2, -1, 0, 18, 47, -19, 51, 47, -20,
-<a name="l09229"></a>09229 60, 16, -3, 0, 47, 51, 63, 51, 49, 48, 1, 43, 43, 43, 1, 7, 38, 39, 38, 39, 38, 17, 52, 55, 54,
-<a name="l09230"></a>09230 55, 54, 55, 23, 6, 7, 6, 21, 20, 23, 22, 23, 22, 2, 48, 44, 104, 51, 103, 57, 74, 74, 58, 102, 53,
-<a name="l09231"></a>09231 100, 46, 108, 56, 60, 34, 28, 56, 28, -2, -128, 45, 125, 78, -98, -82, -28, 1, 5, -6, -32, -79, -98, 83, 121,
-<a name="l09232"></a>09232 42, -18, -22, -7, -14, -12, -62, -99, -106, 75, 0, -1, -1, 0, 93, -2, 83, 2, 14, 6, 72, 0, 87, 3, 124,
-<a name="l09233"></a>09233 2, -115, 0, 0, -64, 0, 64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l09234"></a>09234 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l09235"></a>09235 0, 4, 0, 21, 1, 37, 4, -45, 6, 32, 0, 12, 0, 47, 0, 124, 0, -121, 1, 79, 64, 35, 5, 0, 1,
-<a name="l09236"></a>09236 7, 7, 1, 1, 37, 45, 46, 41, 36, 37, 29, 30, 19, 33, 16, 37, 37, 30, 15, 46, 1, 46, 46, 30, 64,
-<a name="l09237"></a>09237 9, 12, 52, 30, 30, 33, 41, -72, 2, -11, -78, 16, 16, 33, -72, 2, -11, 64, 26, 23, 23, 99, -126, 126, -123,
-<a name="l09238"></a>09238 57, 87, 61, 64, 67, 126, 126, -123, 73, 73, 80, 80, 119, 99, 99, -123, -123, 87, 67, 107, -72, 2, -17, -78, 53,
-<a name="l09239"></a>09239 53, 87, -72, 2, -17, -78, 61, 61, 67, -72, 2, -21, -78, 5, 5, 1, -72, 2, -7, -74, 0, 0, 19, 37, 36,
-<a name="l09240"></a>09240 13, 46, -72, 2, -7, -76, 45, 45, 37, 26, 29, -72, 2, -7, -78, 30, 30, 36, -72, 2, -7, -73, 64, 37, 37,
-<a name="l09241"></a>09241 99, 57, 90, 103, 95, -72, 3, 3, 64, 18, 99, 99, 119, 80, 103, 103, 48, 84, -126, -126, 70, 73, 126, 125, 64,
-<a name="l09242"></a>09242 4, 84, 76, -72, 3, 3, -78, 80, 80, 84, -72, -1, -64, -77, 16, 17, 52, 84, -72, -1, -64, 64, 10, 9, 10,
-<a name="l09243"></a>09243 52, 84, 84, 70, 53, 110, 48, 115, -72, 3, 3, -74, 32, 119, 119, 48, 48, -119, 70, -72, 1, 28, -123, 47, 17,
-<a name="l09244"></a>09244 51, 47, 51, 25, 47, 26, -3, 17, 57, 57, 24, 17, 57, 47, 43, 43, 51, 25, 47, -3, 17, 23, 57, 24, 17,
-<a name="l09245"></a>09245 57, 47, 17, 18, 57, 47, 25, 17, 18, 57, 47, -3, 17, 57, 57, 17, 51, 24, 47, 26, -3, 50, 47, -3, 50,
-<a name="l09246"></a>09246 17, 51, 47, -3, 50, 17, 18, 57, 51, 47, -3, 50, 47, 0, 63, 60, 16, -19, 60, 16, -19, 17, 18, 57, 47,
-<a name="l09247"></a>09247 50, 47, 60, 57, 47, 57, 47, 18, 57, 47, 17, 57, 17, 18, 57, 17, 18, 57, 17, 51, 47, -19, 57, 47, -19,
-<a name="l09248"></a>09248 17, 51, 47, 43, 50, 47, 93, 18, 57, 47, 17, 18, 57, 17, 57, 17, 57, 17, 18, 57, 17, 51, 47, 51, 47,
-<a name="l09249"></a>09249 18, 57, 57, 49, 48, 1, 7, 38, 39, 38, 39, 54, 51, 50, 23, 22, 23, 22, 23, 20, 6, 35, 34, 38, 39,
-<a name="l09250"></a>09250 6, 7, 6, 35, 34, 38, 53, 52, 54, 55, 55, 20, 22, 51, 50, 54, 55, 55, 22, 23, 22, 51, 50, 55, 54,
-<a name="l09251"></a>09251 55, 55, 22, 1, 20, 7, 6, 7, 7, 34, 39, 38, 39, 6, 7, 6, 35, 34, 38, 39, 6, 6, 35, 34, 38,
-<a name="l09252"></a>09252 53, 52, 54, 55, 38, 38, 53, 52, 55, 54, 55, 22, 23, 22, 23, 22, 22, 51, 50, 54, 55, 3, 38, 39, 38,
-<a name="l09253"></a>09253 53, 52, 55, 54, 55, 22, 22, 23, 23, 22, 23, 22, 51, 50, 54, 55, 3, 38, 39, 38, 53, 52, 55, 54, 55,
-<a name="l09254"></a>09254 22, 23, 22, 23, 22, 5, 39, 6, 7, 6, 7, 22, 22, 51, 50, 54, 2, -3, 21, 25, 51, 13, 54, 9, 37,
-<a name="l09255"></a>09255 37, 21, 31, 5, 17, -69, 53, 41, 23, 37, 23, 12, 25, 32, 33, 42, 42, 8, 2, 30, 29, 32, 21, 47, 6,
-<a name="l09256"></a>09256 23, 11, 6, 14, 38, 27, 19, 12, 8, 25, 5, 1, 34, 5, 8, 20, 13, 119, 76, 61, 46, 40, 56, 48, 63,
-<a name="l09257"></a>09257 65, 123, 22, 40, 112, 53, 112, -124, -28, -92, 4, 11, 23, 19, 32, 13, 14, 21, 22, 12, 67, 57, 46, 51, 39,
-<a name="l09258"></a>09258 59, 7, 3, 7, 23, 19, 32, 9, 23, 23, 36, 16, 32, 39, 66, 28, 35, 5, 58, 7, 2, 7, 23, 20, 29,
-<a name="l09259"></a>09259 4, 30, 36, 16, 27, -4, -18, 19, 88, 46, 52, 35, 22, 55, 50, 28, 60, 5, 81, 8, 61, 53, 14, 45, 42,
-<a name="l09260"></a>09260 36, 57, 12, 42, 106, 72, 107, 11, 13, 30, 24, 31, 54, 45, 18, 45, 12, 12, 48, 35, 85, 40, 6, 40, 7,
-<a name="l09261"></a>09261 19, 41, 27, 38, 6, 20, -4, -93, 37, 31, 50, 38, 25, 35, 28, 59, 68, 29, 25, 76, 60, 59, 77, 33, 26,
-<a name="l09262"></a>09262 84, -43, 76, 15, 52, 15, 34, 42, 34, 38, 82, 82, 123, 106, 55, 48, 25, 60, 1, 17, 32, 20, 39, 17, 35,
-<a name="l09263"></a>09263 42, 34, 37, 51, 119, 114, -84, 73, 38, 46, 45, 39, 1, 17, 42, 10, 41, 15, 34, 43, 37, 34, 25, -121, -92,
-<a name="l09264"></a>09264 84, -114, 23, 111, 32, 31, 35, 56, 9, 10, 33, -1, -1, 0, 121, 0, -109, 2, -24, 3, 51, 0, 22, 2, -17,
-<a name="l09265"></a>09265 0, 0, 0, 2, 0, 14, 1, 10, 1, -90, 6, -99, 0, 22, 0, 43, 0, -116, 64, 14, 0, 20, 22, 64, 22,
-<a name="l09266"></a>09266 63, 52, 22, 22, 16, 20, 12, 8, 11, -72, -1, -64, -74, 22, 63, 52, 11, 11, 4, 16, -72, 2, -15, -78, 8,
-<a name="l09267"></a>09267 8, 20, -72, 2, -15, 64, 11, 4, 64, 9, 15, 52, 4, 4, 39, 28, 27, 36, -68, 2, -17, 0, 39, 3, 11,
-<a name="l09268"></a>09268 0, 27, 3, 15, 64, 9, 22, 22, 0, 11, 0, 11, 12, 12, 36, -72, 3, 16, -74, 39, 39, 31, 28, 27, 27,
-<a name="l09269"></a>09269 23, -71, 3, 16, 0, 31, 47, -19, 25, 57, 47, 51, 17, 57, 47, 24, -3, 50, 47, 51, 51, 25, 47, 24, 47,
-<a name="l09270"></a>09270 51, 25, 47, 0, 24, 63, 63, -28, 17, 57, 17, 51, 47, 43, -19, 51, 47, -19, 18, 57, 47, 43, 18, 57, 17,
-<a name="l09271"></a>09271 18, 57, 47, 43, 18, 57, 49, 48, 1, 6, 7, 6, 35, 34, 39, 38, 35, 34, 6, 7, 39, 54, 55, 54, 51,
-<a name="l09272"></a>09272 50, 23, 22, 51, 50, 55, 3, 20, 7, 6, 7, 39, 54, 54, 53, 52, 2, 39, 38, 39, 54, 54, 55, 22, 18,
-<a name="l09273"></a>09273 23, 22, 1, -90, 28, 29, 41, 48, 50, 45, 99, 6, 12, 24, 15, 11, 25, 11, 23, 38, 9, 100, 50, 33, 53,
-<a name="l09274"></a>09274 52, 70, 29, 15, 50, 18, 3, 5, 33, 23, 14, 17, 20, 51, 23, 16, 49, 14, 18, 6, 118, 32, 17, 24, 15,
-<a name="l09275"></a>09275 33, 7, 7, 13, 36, 9, 20, 32, 16, 23, -5, -96, 80, 75, 40, 87, 10, 29, 76, 13, 104, 1, 117, -53, 123,
-<a name="l09276"></a>09276 -128, 44, 102, 45, 114, -2, 116, -97, -58, 0, 2, -1, -36, 1, 37, 1, -42, 6, -99, 0, 22, 0, 45, 0, -112,
-<a name="l09277"></a>09277 64, 14, 23, 43, 45, 64, 22, 63, 52, 45, 45, 39, 43, 35, 31, 34, -72, -1, -64, -74, 22, 63, 52, 34, 34,
-<a name="l09278"></a>09278 27, 39, -72, 2, -15, -78, 31, 31, 43, -72, 2, -15, -73, 27, 64, 9, 15, 52, 27, 27, 12, -66, 2, -17, 0,
-<a name="l09279"></a>09279 13, 3, 11, 0, 22, 2, -17, 0, 1, 2, -21, 64, 18, 45, 45, 23, 34, 23, 34, 35, 35, 12, 64, 9, 17,
-<a name="l09280"></a>09280 52, 12, 12, 13, 13, 6, -72, 3, 18, -78, 17, 17, 0, -71, 2, -16, 0, 47, 16, -11, 50, 47, -3, 25, 57,
-<a name="l09281"></a>09281 47, 50, 24, 47, 43, 51, 47, 51, 51, 25, 47, 24, 47, 51, 25, 47, 0, 24, 63, -19, 63, -20, 51, 47, 43,
-<a name="l09282"></a>09282 -19, 51, 47, -19, 18, 57, 47, 43, 18, 57, 17, 18, 57, 47, 43, 18, 57, 49, 48, 1, 35, 34, 39, 38, 38,
-<a name="l09283"></a>09283 39, 46, 2, 39, 38, 39, 55, 22, 23, 22, 19, 22, 23, 22, 51, 51, 3, 6, 7, 6, 35, 34, 39, 38, 35,
-<a name="l09284"></a>09284 34, 6, 7, 39, 54, 55, 54, 51, 50, 23, 22, 51, 50, 55, 1, -42, -116, 68, 41, 36, 37, 10, 6, 13, 21,
-<a name="l09285"></a>09285 18, 22, 39, 123, 39, 16, 10, 10, 18, 34, 28, 33, -116, 98, 28, 29, 41, 48, 50, 45, 99, 6, 12, 24, 15,
-<a name="l09286"></a>09286 11, 25, 11, 23, 38, 9, 100, 50, 33, 53, 52, 1, 37, 55, 48, -66, -117, 113, -18, 123, 39, 48, 36, -62, 120,
-<a name="l09287"></a>09287 -89, 104, -2, 124, -78, 50, 42, 4, -93, 32, 17, 24, 15, 33, 7, 7, 13, 36, 9, 20, 32, 16, 23, 0, 0,
-<a name="l09288"></a>09288 2, 0, 86, 1, 10, 1, 110, 7, 10, 0, 31, 0, 52, 0, -101, -71, 0, 3, -1, -32, -77, 18, 25, 52, 2,
-<a name="l09289"></a>09289 -72, -1, -32, -75, 11, 17, 52, 37, 36, 45, -70, 2, -17, 0, 48, -1, -64, 64, 13, 9, 42, 52, 48, 48, 5,
-<a name="l09290"></a>09290 21, 0, 23, 7, 29, 5, 5, -72, -1, -64, -74, 18, 25, 52, 5, 29, 29, 23, -68, 2, -11, 0, 15, 3, 21,
-<a name="l09291"></a>09291 0, 36, 3, 15, 64, 11, 21, 7, 18, 18, 26, 0, 0, 26, 5, 5, 11, -72, 3, 5, -78, 26, 26, 45, -72,
-<a name="l09292"></a>09292 3, 16, -74, 48, 48, 40, 37, 36, 36, 32, -70, 3, 16, 0, 40, 1, 59, -123, 47, -19, 25, 57, 47, 51, 17,
-<a name="l09293"></a>09293 57, 47, 24, -3, 57, 47, -3, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63, 63, -3, 50, 47, 51, 43,
-<a name="l09294"></a>09294 47, 18, 57, 17, 57, 57, 17, 51, 125, 47, 24, 43, -28, 17, 57, 49, 48, 0, 43, 43, 1, 20, 7, 6, 7,
-<a name="l09295"></a>09295 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51,
-<a name="l09296"></a>09296 50, 54, 19, 20, 7, 6, 7, 39, 54, 54, 53, 52, 2, 39, 38, 39, 54, 54, 55, 22, 18, 23, 22, 1, 110,
-<a name="l09297"></a>09297 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 2, 29,
-<a name="l09298"></a>09298 15, 50, 18, 3, 5, 33, 23, 14, 17, 20, 51, 23, 16, 49, 14, 18, 6, 102, 25, 20, 13, 15, 64, 46, 35,
-<a name="l09299"></a>09299 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, -5, -54, 80, 75, 40, 87, 10,
-<a name="l09300"></a>09300 29, 76, 13, 104, 1, 117, -53, 123, -128, 44, 102, 45, 114, -2, 116, -97, -58, 0, 2, 0, 16, 1, 37, 1, -42,
-<a name="l09301"></a>09301 7, 10, 0, 31, 0, 54, 0, -100, -71, 0, 2, -1, -32, -77, 11, 17, 52, 44, -70, 2, -17, 0, 45, -1, -64,
-<a name="l09302"></a>09302 64, 13, 9, 42, 52, 45, 45, 5, 21, 0, 23, 7, 29, 5, 5, -72, -1, -64, -74, 18, 25, 52, 5, 29, 29,
-<a name="l09303"></a>09303 23, -66, 2, -11, 0, 15, 3, 21, 0, 54, 2, -17, 0, 33, 2, -21, 64, 11, 21, 7, 18, 18, 26, 0, 0,
-<a name="l09304"></a>09304 26, 5, 5, 11, -72, 3, 5, 64, 13, 26, 26, 45, 44, 64, 9, 17, 52, 44, 44, 45, 45, 38, -72, 3, 18,
-<a name="l09305"></a>09305 -78, 49, 49, 32, -70, 2, -16, 0, 56, 1, 59, -123, 16, -11, 50, 47, -3, 25, 57, 47, 50, 24, 47, 43, 18,
-<a name="l09306"></a>09306 57, 47, -3, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63, -19, 63, -3, 50, 47, 51, 43, 47, 18, 57,
-<a name="l09307"></a>09307 17, 57, 57, 17, 51, 125, 47, 24, 43, -20, 49, 48, 0, 43, 1, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38,
-<a name="l09308"></a>09308 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 19, 35, 34, 39,
-<a name="l09309"></a>09309 38, 38, 39, 46, 2, 39, 38, 39, 55, 22, 23, 22, 19, 22, 23, 22, 51, 51, 1, 40, 31, 21, 42, -70, 100,
-<a name="l09310"></a>09310 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, -52, -116, 68, 41, 36, 37, 10,
-<a name="l09311"></a>09311 6, 13, 21, 18, 22, 39, 123, 39, 16, 10, 10, 18, 34, 28, 33, -116, 6, 102, 25, 20, 13, 15, 64, 46, 35,
-<a name="l09312"></a>09312 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, -6, -53, 55, 48, -66, -117, 113,
-<a name="l09313"></a>09313 -18, 123, 39, 48, 36, -62, 120, -89, 104, -2, 124, -78, 50, 42, 0, 3, 0, 50, -1, 99, 3, 117, 4, 113, 0,
-<a name="l09314"></a>09314 32, 0, 42, 0, 74, 0, -51, -71, 0, 45, -1, -32, 64, 9, 11, 17, 52, 16, 64, 11, 17, 52, 3, -72, -1,
-<a name="l09315"></a>09315 -32, 64, 15, 11, 18, 52, 18, 64, 9, 17, 52, 64, 43, 66, 50, 72, 48, 58, -72, 2, -11, 64, 21, 66, 66,
-<a name="l09316"></a>09316 72, 64, 18, 25, 52, 72, 72, 48, 64, 9, 29, 52, 48, 48, 28, 11, 20, 10, 28, -72, 2, -17, -78, 37, 37,
-<a name="l09317"></a>09317 33, -70, 2, -17, 0, 20, 2, -21, -78, 10, 10, 14, -70, 3, 10, 0, 4, 3, 8, 64, 11, 64, 50, 61, 61,
-<a name="l09318"></a>09318 69, 43, 43, 69, 48, 48, 54, -72, 3, 5, -78, 69, 69, 24, -72, 2, -3, -77, 40, 40, 10, 33, -68, 3, 3,
-<a name="l09319"></a>09319 0, 20, 3, 3, 0, 0, 2, -16, -78, 76, 11, 10, -72, -1, -64, -77, 9, 12, 52, 10, -72, 1, 59, -123, 47,
-<a name="l09320"></a>09320 43, 51, 16, -12, -19, -19, 17, 57, 47, -3, 50, 47, -3, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63,
-<a name="l09321"></a>09321 -3, 50, 25, 47, 24, 63, -3, 50, 47, -19, 17, 18, 57, 17, 51, 47, 43, 51, 47, 43, 51, 47, -19, 17, 18,
-<a name="l09322"></a>09322 57, 17, 57, 57, 49, 48, 1, 43, 43, 43, 0, 43, 1, 20, 7, 6, 35, 34, 39, 38, 39, 38, 39, 55, 22,
-<a name="l09323"></a>09323 22, 51, 50, 55, 54, 55, 54, 55, 34, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 7, 38, 39, 38, 35,
-<a name="l09324"></a>09324 34, 6, 21, 20, 22, 3, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20,
-<a name="l09325"></a>09325 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3, 117, 122, -120, -78, 66, 70, 51, 82, 65, 65, 17, 56,
-<a name="l09326"></a>09326 123, 49, 122, 109, 85, 85, 43, 79, -121, 67, 76, 48, 56, 86, 87, 38, 30, 63, 22, 31, 27, 39, 28, 41, 88,
-<a name="l09327"></a>09327 77, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 1,
-<a name="l09328"></a>09328 97, -91, -93, -74, 15, 11, 27, 23, 22, 35, 13, 29, 62, 49, 93, 47, 106, 43, 49, 112, 103, 88, 102, 101, 79,
-<a name="l09329"></a>09329 -115, 5, 96, 37, 32, 37, 28, 49, 51, 1, -1, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62,
-<a name="l09330"></a>09330 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, -1, -1, 0, 50, -1, 99, 3, 117, 4, 113, 0, 22, 3, -123,
-<a name="l09331"></a>09331 0, 0, 0, 2, 0, 45, -1, 64, 1, 82, 5, -20, 0, 31, 0, 52, 0, -97, -71, 0, 2, -1, -32, 64, 10,
-<a name="l09332"></a>09332 11, 17, 52, 21, 0, 23, 7, 29, 5, 15, -72, 2, -11, 64, 10, 23, 23, 29, 64, 18, 25, 52, 29, 29, 5,
-<a name="l09333"></a>09333 -72, -1, -64, -74, 18, 20, 52, 32, 5, 1, 5, -72, -1, -64, -73, 9, 15, 52, 5, 5, 37, 36, 45, -70, 2,
-<a name="l09334"></a>09334 -17, 0, 48, 3, 11, -77, 47, 36, 1, 36, -72, 3, 15, 64, 9, 21, 7, 18, 18, 0, 0, 5, 5, 26, -72,
-<a name="l09335"></a>09335 3, 5, -77, 11, 11, 40, 45, -72, 3, 16, -74, 48, 48, 40, 37, 36, 36, 32, -70, 3, 16, 0, 40, 1, 59,
-<a name="l09336"></a>09336 -123, 47, -19, 25, 57, 47, 51, 17, 57, 47, 24, -19, 17, 51, 47, -19, 51, 47, 50, 47, 57, 47, 57, 57, 0,
-<a name="l09337"></a>09337 63, 93, 63, -28, 17, 57, 51, 47, 43, 93, 43, 51, 47, 43, 51, 47, -19, 17, 18, 57, 17, 57, 57, 49, 48,
-<a name="l09338"></a>09338 0, 43, 5, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38,
-<a name="l09339"></a>09339 35, 34, 6, 21, 20, 22, 51, 50, 54, 19, 20, 7, 6, 7, 39, 54, 54, 53, 52, 2, 39, 38, 39, 54, 54,
-<a name="l09340"></a>09340 55, 22, 18, 23, 22, 1, 69, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22,
-<a name="l09341"></a>09341 43, 93, 33, 22, 19, 43, 29, 15, 50, 18, 3, 5, 33, 23, 14, 17, 20, 51, 23, 16, 49, 14, 18, 55, 25,
-<a name="l09342"></a>09342 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 2,
-<a name="l09343"></a>09343 103, 80, 75, 40, 87, 10, 29, 76, 13, 104, 1, 117, -53, 123, -128, 44, 102, 45, 114, -2, 116, -97, -58, 0, 0,
-<a name="l09344"></a>09344 2, 0, 19, -1, 64, 1, -42, 5, -20, 0, 22, 0, 54, 0, -87, -71, 0, 25, -1, -32, 64, 10, 11, 17, 52,
-<a name="l09345"></a>09345 44, 23, 46, 30, 52, 28, 38, -72, 2, -11, 64, 13, 46, 46, 52, 64, 18, 25, 52, 52, 52, -112, 28, 1, 28,
-<a name="l09346"></a>09346 -72, -1, -64, -74, 9, 14, 52, 28, 28, 1, 12, -66, 2, -17, 0, 13, 3, 11, 0, 22, 2, -17, 0, 1, 2,
-<a name="l09347"></a>09347 -21, 64, 11, 44, 30, 41, 41, 49, 23, 23, 49, 28, 28, 34, -72, 3, 5, 64, 22, 49, 64, 13, 14, 52, 49,
-<a name="l09348"></a>09348 64, 9, 10, 52, 49, 49, 12, 64, 9, 17, 52, 12, 12, 13, 13, 6, -72, 3, 18, -78, 17, 17, 0, -70, 2,
-<a name="l09349"></a>09349 -16, 0, 56, 1, 59, -123, 16, -12, 50, 47, -3, 25, 57, 47, 50, 24, 47, 43, 50, 47, 43, 43, -3, 50, 47,
-<a name="l09350"></a>09350 17, 51, 47, 18, 57, 47, 57, 57, 0, 63, -19, 63, -20, 17, 51, 47, 43, 93, 51, 47, 43, 51, 47, -19, 17,
-<a name="l09351"></a>09351 18, 57, 17, 57, 57, 49, 48, 0, 43, 1, 35, 34, 39, 38, 38, 39, 46, 2, 39, 38, 39, 55, 22, 23, 22,
-<a name="l09352"></a>09352 19, 22, 23, 22, 51, 51, 3, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21,
-<a name="l09353"></a>09353 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, -42, -116, 68, 41, 36, 37, 10, 6, 13, 21, 18,
-<a name="l09354"></a>09354 22, 39, 123, 39, 16, 10, 10, 18, 34, 28, 33, -116, -91, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20,
-<a name="l09355"></a>09355 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 1, 37, 55, 48, -66, -117, 113, -18, 123, 39, 48, 36, -62, 120,
-<a name="l09356"></a>09356 -89, 104, -2, 124, -78, 50, 42, -3, -10, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22,
-<a name="l09357"></a>09357 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 0, 2, 0, 50, -1, -89, 4, -39, 4, 113, 0, 59, 0, 91, 0,
-<a name="l09358"></a>09358 -16, -71, 0, 62, -1, -32, -77, 11, 17, 52, 38, -72, -1, -42, 64, 20, 14, 17, 52, 41, 52, 14, 17, 52, 42,
-<a name="l09359"></a>09359 52, 11, 17, 52, 81, 60, 83, 67, 89, 65, 75, -72, 2, -11, 64, 21, 83, 83, 89, 64, 18, 25, 52, 89, 89,
-<a name="l09360"></a>09360 15, 65, 1, 65, 65, 32, 3, 6, 14, 33, 39, 32, 65, 9, 3, 7, 0, 6, 2, -17, 0, 57, 3, 4, 0,
-<a name="l09361"></a>09361 39, 2, -17, 0, 22, -1, -64, -77, 9, 11, 52, 22, -68, 3, 13, 0, 14, 2, -17, 0, 48, 2, -21, 64, 11,
-<a name="l09362"></a>09362 81, 67, 78, 78, 86, 60, 60, 86, 65, 65, 71, -72, 3, 5, -77, 86, 86, 36, 51, -72, 3, 12, 64, 9, 10,
-<a name="l09363"></a>09363 10, 44, 36, 3, 18, 0, 0, 44, -72, 2, -3, -76, 64, 18, 18, 93, 33, -69, 2, -5, 0, 32, 0, 32, -1,
-<a name="l09364"></a>09364 -64, -75, 9, 11, 52, 32, 32, 36, -70, 3, 12, 0, 26, 1, 59, -123, 47, -3, 50, 25, 47, 43, 26, -19, 17,
-<a name="l09365"></a>09365 51, 24, 47, 26, -19, 51, 47, 18, 57, 17, 18, 57, 47, -19, 17, 51, 47, -3, 50, 47, 17, 51, 47, 18, 57,
-<a name="l09366"></a>09366 47, 57, 57, 0, 63, -19, 63, 43, -19, 63, -19, 63, 18, 57, 17, 18, 57, 17, 51, 47, 93, 51, 47, 43, 51,
-<a name="l09367"></a>09367 47, -19, 17, 18, 57, 17, 57, 57, 49, 48, 1, 43, 43, 43, 0, 43, 1, 20, 6, 7, 38, 38, 35, 34, 7,
-<a name="l09368"></a>09368 6, 21, 20, 22, 51, 51, 50, 22, 22, 21, 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55, 54, 55, 23,
-<a name="l09369"></a>09369 6, 6, 21, 20, 22, 51, 50, 55, 54, 54, 53, 52, 38, 35, 35, 34, 38, 53, 52, 55, 54, 55, 54, 51, 50,
-<a name="l09370"></a>09370 22, 37, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35,
-<a name="l09371"></a>09371 34, 6, 21, 20, 22, 51, 50, 54, 4, -39, 12, 2, 35, 97, 50, 87, 96, 88, 43, 53, 80, 72, 69, 96, -37,
-<a name="l09372"></a>09372 -55, -2, -87, -78, 94, 102, 34, 26, 46, 3, 60, 42, 63, 67, -87, -99, 120, -97, -120, -38, 25, 28, -22, 43, 66,
-<a name="l09373"></a>09373 55, 60, 85, 102, 103, 66, 76, -4, -111, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31,
-<a name="l09374"></a>09374 36, 22, 43, 93, 33, 22, 19, 3, 32, 32, 67, 14, 45, 52, 101, 93, 55, 19, 19, 3, 16, 65, -5, -125, 120,
-<a name="l09375"></a>09375 69, 75, -105, 104, 114, 87, 95, 6, 113, 17, 112, -61, 75, 122, 122, 48, 41, 114, 27, 19, 12, 62, 49, 67, 115,
-<a name="l09376"></a>09376 125, 84, 101, 80, 107, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28,
-<a name="l09377"></a>09377 18, 12, 15, 52, 3, 0, 0, 2, 0, 36, -1, 31, 4, -75, 3, -18, 0, 54, 0, 86, 0, -31, -71, 0, 57,
-<a name="l09378"></a>09378 -1, -32, -77, 11, 17, 52, 32, -72, -1, -32, 64, 10, 12, 17, 52, 76, 55, 78, 62, 84, 60, 70, -72, 2, -11,
-<a name="l09379"></a>09379 64, 17, 78, 78, 84, 64, 18, 25, 52, 84, 84, 60, 60, 26, 53, 25, 25, 53, 6, -72, -1, -64, 64, 10, 9,
-<a name="l09380"></a>09380 10, 52, 6, 6, 1, 44, 44, 1, 34, -70, 2, -17, 0, 17, -1, -64, -77, 9, 13, 52, 17, -68, 3, 14, 0,
-<a name="l09381"></a>09381 53, 2, -17, 0, 1, 2, -21, 64, 11, 76, 62, 73, 73, 81, 55, 55, 81, 60, 60, 66, -72, 3, 5, -77, 81,
-<a name="l09382"></a>09382 81, 30, 38, -72, 3, 12, -77, 13, 13, 0, 47, -72, 3, 12, -76, 64, 4, 4, 30, 0, -66, 2, -16, 0, 88,
-<a name="l09383"></a>09383 0, 26, 2, -5, 0, 32, 0, 25, -1, -64, -75, 9, 11, 52, 25, 25, 30, -70, 3, 12, 0, 21, 1, 59, -123,
-<a name="l09384"></a>09384 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -27, 17, 57, 47, 26, -19, 18, 57, 47, -19, 17, 51, 47, -3, 50,
-<a name="l09385"></a>09385 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63, -19, 63, 43, -3, 17, 57, 47, 18, 57, 47, 43, 17, 51, 47,
-<a name="l09386"></a>09386 18, 57, 51, 47, 51, 47, 43, 51, 47, -19, 17, 18, 57, 17, 57, 57, 49, 48, 1, 43, 0, 43, 1, 35, 34,
-<a name="l09387"></a>09387 6, 21, 20, 51, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6,
-<a name="l09388"></a>09388 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 35, 38, 38, 35, 34, 38, 53, 52, 55, 54, 55, 54,
-<a name="l09389"></a>09389 51, 51, 1, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38,
-<a name="l09390"></a>09390 35, 34, 6, 21, 20, 22, 51, 50, 54, 4, -75, -81, -102, -101, 93, 41, 48, 81, 48, 18, 29, 123, -122, -2, -53,
-<a name="l09391"></a>09391 -41, 127, -121, 64, 23, 98, 40, 38, 37, 57, -128, 122, -43, -113, 109, -122, 30, 35, 27, 115, 18, 63, 54, 73, 60,
-<a name="l09392"></a>09392 101, 76, 84, -81, -4, -85, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22, 43,
-<a name="l09393"></a>09393 93, 33, 22, 19, 1, 37, 16, 24, 33, 4, 9, 6, 9, 15, 37, -69, 85, 93, 73, 78, -112, 116, -126, 47, -102,
-<a name="l09394"></a>09394 20, 65, 64, 110, 70, 123, 64, 61, 22, 27, 47, 17, 17, 3, 7, 33, 33, 124, 79, 64, 31, 23, 1, 119, 25,
-<a name="l09395"></a>09395 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0,
-<a name="l09396"></a>09396 2, -1, -70, 1, 37, 1, -12, 5, 89, 0, 12, 0, 44, 0, -114, -71, 0, 15, -1, -32, 64, 15, 11, 17, 52,
-<a name="l09397"></a>09397 6, 52, 12, 17, 52, 34, 13, 36, 20, 42, 18, 28, -72, 2, -11, 64, 12, 36, 36, 42, 64, 18, 24, 52, 42,
-<a name="l09398"></a>09398 42, 18, 18, 7, -66, 2, -17, 0, 8, 3, 4, 0, 2, 2, -17, 0, 1, 2, -21, 64, 11, 34, 20, 31, 31,
-<a name="l09399"></a>09399 39, 13, 13, 39, 18, 18, 24, -72, 3, 5, -73, 39, 39, 1, 8, 8, 7, 7, 3, -67, 3, 3, 0, 0, 2,
-<a name="l09400"></a>09400 -16, 0, 46, 0, 1, 1, 59, -123, 47, 16, -11, -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 50, 47, 17,
-<a name="l09401"></a>09401 51, 47, 18, 57, 47, 57, 57, 0, 63, -19, 63, -19, 51, 47, 51, 47, 43, 51, 47, -19, 17, 18, 57, 17, 57,
-<a name="l09402"></a>09402 57, 49, 48, 1, 43, 0, 43, 1, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 3, 20, 7, 6, 7,
-<a name="l09403"></a>09403 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51,
-<a name="l09404"></a>09404 50, 54, 1, -12, -3, -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, 108, 31, 21, 42, -70, 100, 31, 16, 21, 53,
-<a name="l09405"></a>09405 59, 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 1, 37, -82, 118, 62, 43, 81, -93, 91, 51, 77,
-<a name="l09406"></a>09406 -78, 2, -100, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12,
-<a name="l09407"></a>09407 15, 52, 3, 0, -1, -1, -1, -70, 1, 37, 1, -12, 5, 89, 0, 22, 3, -117, 0, 0, 0, 1, 0, -109, 1,
-<a name="l09408"></a>09408 10, 1, 82, 5, -20, 0, 20, 0, 51, -78, 5, 4, 13, -66, 2, -17, 0, 16, 3, 11, 0, 4, 3, 15, 0,
-<a name="l09409"></a>09409 13, 3, 16, -74, 16, 16, 8, 5, 4, 4, 0, -71, 3, 16, 0, 8, 47, -19, 25, 57, 47, 51, 17, 57, 47,
-<a name="l09410"></a>09410 24, -19, 0, 63, 63, -28, 17, 57, 49, 48, 1, 20, 7, 6, 7, 39, 54, 54, 53, 52, 2, 39, 38, 39, 54,
-<a name="l09411"></a>09411 54, 55, 22, 18, 23, 22, 1, 82, 29, 15, 50, 18, 3, 5, 33, 23, 14, 17, 20, 51, 23, 16, 49, 14, 18,
-<a name="l09412"></a>09412 2, 36, 80, 75, 40, 87, 10, 29, 76, 13, 104, 1, 117, -53, 123, -128, 44, 102, 45, 114, -2, 116, -97, -58, 0,
-<a name="l09413"></a>09413 0, 1, 0, 19, 1, 37, 1, -42, 5, -20, 0, 22, 0, 60, -65, 0, 12, 2, -17, 0, 13, 3, 11, 0, 22,
-<a name="l09414"></a>09414 2, -17, 0, 1, 2, -21, 64, 10, 12, 64, 9, 17, 52, 12, 12, 13, 13, 6, -72, 3, 18, -78, 17, 17, 0,
-<a name="l09415"></a>09415 -71, 2, -16, 0, 24, 16, -12, 50, 47, -3, 25, 57, 47, 50, 24, 47, 43, 0, 63, -19, 63, -20, 49, 48, 1,
-<a name="l09416"></a>09416 35, 34, 39, 38, 38, 39, 46, 2, 39, 38, 39, 55, 22, 23, 22, 19, 22, 23, 22, 51, 51, 1, -42, -116, 68,
-<a name="l09417"></a>09417 41, 36, 37, 10, 6, 13, 21, 18, 22, 39, 123, 39, 16, 10, 10, 18, 34, 28, 33, -116, 1, 37, 55, 48, -66,
-<a name="l09418"></a>09418 -117, 113, -18, 123, 39, 48, 36, -62, 120, -89, 104, -2, 124, -78, 50, 42, 0, 0, 2, 0, 58, -1, -95, 5, -75,
-<a name="l09419"></a>09419 3, -64, 0, 28, 0, 32, 0, -111, -71, 0, 16, -1, -64, 64, 11, 14, 17, 52, 22, 52, 12, 17, 52, 29, 31,
-<a name="l09420"></a>09420 30, -72, 3, 2, -75, 32, 32, 1, 10, 18, 9, 65, 9, 3, 4, 0, 23, 2, -17, 0, 24, 3, 4, 0, 18,
-<a name="l09421"></a>09421 2, -17, 0, 1, 2, -21, -78, 30, 32, 29, -72, 3, 1, -73, 31, 31, 5, 24, 24, 23, 23, 19, 65, 10, 3,
-<a name="l09422"></a>09422 3, 0, 64, 0, 0, 2, -16, 0, 34, 0, 10, 2, -5, 0, 32, 0, 9, -1, -64, -75, 9, 11, 52, 9, 9,
-<a name="l09423"></a>09423 14, -70, 3, 3, 0, 5, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -12, 26, -3, 50, 47, 25,
-<a name="l09424"></a>09424 57, 47, 24, 17, 57, 47, -19, 57, 57, 0, 63, -19, 63, -19, 63, 18, 57, 17, 51, 47, -3, 57, 57, 49, 48,
-<a name="l09425"></a>09425 1, 43, 43, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 23, 22, 51, 33, 53, 52,
-<a name="l09426"></a>09426 38, 39, 55, 22, 23, 22, 21, 1, 7, 39, 55, 5, -75, -4, 70, -64, 114, -113, 42, 15, 57, 30, 22, 21, 29,
-<a name="l09427"></a>09427 124, 111, -86, 3, 79, 54, 65, 77, 44, 9, 68, -3, -61, 78, -94, 74, 1, 37, 67, 84, -77, 93, 97, 35, 98,
-<a name="l09428"></a>09428 19, 46, 46, 71, 56, 118, 65, 58, 27, 112, -115, 50, -93, 55, 14, 112, -42, -3, -3, -111, 84, -110, 0, -1, -1,
-<a name="l09429"></a>09429 0, 58, -1, -95, 5, -75, 3, -64, 0, 22, 3, -113, 0, 0, 0, 2, -1, -70, -1, -95, 1, -12, 3, -90, 0,
-<a name="l09430"></a>09430 12, 0, 16, 0, 93, -73, 6, 52, 12, 17, 52, 15, 13, 14, -72, 3, 2, -77, 16, 16, 1, 7, -66, 2, -17,
-<a name="l09431"></a>09431 0, 8, 3, 4, 0, 2, 2, -17, 0, 1, 2, -21, -78, 14, 16, 13, -72, 3, 1, -73, 15, 15, 1, 8, 8,
-<a name="l09432"></a>09432 7, 7, 3, -67, 3, 3, 0, 0, 2, -16, 0, 18, 0, 1, 1, 42, -123, 47, 16, -12, -3, 50, 47, 25, 57,
-<a name="l09433"></a>09433 47, 24, 17, 57, 47, -19, 57, 57, 0, 63, -19, 63, -19, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 1, 33,
-<a name="l09434"></a>09434 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 3, 7, 39, 55, 1, -12, -3, -58, 1, -15, 28, 19, 75, 78,
-<a name="l09435"></a>09435 72, 18, 27, 102, 78, -94, 74, 1, 37, -82, 118, 62, 43, 81, -93, 91, 51, 77, -78, -2, 25, -111, 84, -110, -1,
-<a name="l09436"></a>09436 -1, -1, -70, -1, -95, 1, -12, 3, -90, 0, 22, 3, -111, 0, 0, 0, 4, 0, 0, 1, 10, 2, 44, 5, 32,
-<a name="l09437"></a>09437 0, 3, 0, 7, 0, 25, 0, 39, 0, -112, -78, 0, 2, 3, -72, 3, 2, -76, 1, 1, 4, 6, 7, -72, 3,
-<a name="l09438"></a>09438 2, 64, 15, 15, 5, 1, 5, 5, 22, 30, 32, 13, 17, 52, 20, 30, 37, 22, -72, 2, -17, -78, 21, 21, 37,
-<a name="l09439"></a>09439 -70, 2, -17, 0, 12, 2, -21, -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6, -72, 3, 1, 64, 12,
-<a name="l09440"></a>09440 4, 4, 34, 30, 26, 21, 20, 16, 22, 22, 34, 26, -72, 2, -3, -77, 8, 8, 41, 34, -70, 2, -3, 0, 16,
-<a name="l09441"></a>09441 1, 40, -123, 47, -19, 17, 51, 47, -19, 25, 17, 57, 47, 18, 57, 57, 18, 57, 17, 51, 24, 47, -3, 57, 57,
-<a name="l09442"></a>09442 51, 47, -19, 57, 57, 0, 63, -3, 50, 47, -20, 18, 57, 57, 43, 17, 51, 47, 93, -19, 57, 57, 51, 47, -19,
-<a name="l09443"></a>09443 57, 57, 49, 48, 1, 7, 39, 55, 7, 7, 39, 55, 1, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55,
-<a name="l09444"></a>09444 39, 55, 22, 23, 22, 7, 52, 39, 38, 39, 6, 7, 6, 21, 20, 22, 51, 50, 54, 1, -44, 78, -94, 75, 65,
-<a name="l09445"></a>09445 76, -94, 74, 1, -30, 46, 71, -67, 73, 48, 55, 35, 32, 33, 15, 61, -75, 35, 120, 87, 110, 47, 54, 45, 9,
-<a name="l09446"></a>09446 28, 57, 48, 56, -124, 4, -53, -112, 86, -113, -81, -111, 84, -111, -3, -121, -115, 71, 110, 29, 33, 61, 70, 92, 78,
-<a name="l09447"></a>09447 79, 4, -87, 95, 25, 84, -89, 38, 63, 27, 26, 49, 12, 39, 35, 51, 57, 63, 0, 4, -1, -9, 1, 37, 3,
-<a name="l09448"></a>09448 0, 6, 37, 0, 3, 0, 7, 0, 38, 0, 47, 0, -76, -75, 4, 11, 1, 0, 2, 3, -72, 3, 2, -76, 1,
-<a name="l09449"></a>09449 1, 4, 6, 7, -72, 3, 2, 64, 17, 5, 64, 9, 11, 52, 5, 5, 29, 39, 43, 40, 13, 46, 16, 29, 29,
-<a name="l09450"></a>09450 22, -72, 3, 10, -78, 40, 40, 46, -72, 2, -17, -75, -112, 16, 1, 16, 16, 38, -70, 2, -17, 0, 9, 2, -21,
-<a name="l09451"></a>09451 -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6, -72, 3, 1, 64, 12, 64, 4, 4, 43, 35, 8, 22,
-<a name="l09452"></a>09452 40, 39, 13, 4, 25, -72, 2, -2, -73, 32, 15, 29, 1, 29, 29, 43, 8, -67, 2, -16, 0, 49, 0, 43, 3,
-<a name="l09453"></a>09453 19, 0, 19, 1, 19, -123, 47, -19, 16, -27, 25, 17, 57, 47, 93, 26, -3, 23, 57, 18, 57, 24, 18, 57, 47,
-<a name="l09454"></a>09454 26, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -3, 50, 47, 93, -3, 50, 47, -3, 50, 47, 17, 18, 57, 17,
-<a name="l09455"></a>09455 57, 57, 17, 51, 47, 43, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1, 93, 1, 7, 39, 55, 7, 7, 39,
-<a name="l09456"></a>09456 55, 1, 35, 34, 39, 38, 39, 6, 6, 35, 34, 38, 53, 52, 54, 55, 38, 38, 53, 52, 55, 54, 55, 22, 22,
-<a name="l09457"></a>09457 23, 23, 22, 23, 22, 51, 51, 1, 39, 6, 6, 7, 22, 22, 51, 50, 2, 3, 78, -94, 75, 65, 76, -94, 74,
-<a name="l09458"></a>09458 2, -121, -113, 72, 55, 41, 25, 30, 92, 51, 115, -103, -32, -88, 2, 13, 23, 19, 31, 10, 21, 14, 30, 25, 20,
-<a name="l09459"></a>09459 31, 33, -113, -2, -93, 19, 87, 100, 34, 21, 56, 49, 60, 5, -48, -112, 86, -113, -81, -111, 84, -111, -5, 91, 123,
-<a name="l09460"></a>09460 92, -111, 56, 62, 31, 24, 86, -47, 78, 8, 68, 8, 34, 42, 34, 36, 62, 116, 62, -84, -114, 68, 104, 1, 17,
-<a name="l09461"></a>09461 109, 31, 67, 55, 9, 10, 0, 3, 0, 58, 1, 37, 5, -75, 5, 6, 0, 3, 0, 7, 0, 36, 0, -76, -71,
-<a name="l09462"></a>09462 0, 24, -1, -64, 64, 11, 14, 17, 52, 30, 52, 12, 17, 52, 0, 2, 3, -72, 3, 2, -76, 1, 1, 4, 6,
-<a name="l09463"></a>09463 7, -72, 3, 2, 64, 11, 5, 64, 9, 11, 52, 5, 5, 32, 18, 26, 17, 65, 9, 3, 4, 0, 31, 2, -17,
-<a name="l09464"></a>09464 0, 32, 3, 4, 0, 26, 2, -17, 0, 9, 2, -21, -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6,
-<a name="l09465"></a>09465 -72, 3, 1, -73, 4, 4, 13, 32, 32, 31, 31, 27, 65, 10, 3, 3, 0, 64, 0, 8, 2, -16, 0, 38, 0,
-<a name="l09466"></a>09466 18, 2, -5, 0, 32, 0, 17, -1, -64, -75, 9, 11, 52, 17, 17, 22, -70, 3, 3, 0, 13, 1, 42, -123, 47,
-<a name="l09467"></a>09467 -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 57, 57, 51,
-<a name="l09468"></a>09468 47, -19, 57, 57, 0, 63, -19, 63, -19, 63, 18, 57, 17, 51, 47, 43, -19, 57, 57, 51, 47, -19, 57, 57, 49,
-<a name="l09469"></a>09469 48, 1, 43, 43, 1, 7, 39, 55, 7, 7, 39, 55, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7,
-<a name="l09470"></a>09470 6, 21, 20, 23, 22, 51, 33, 53, 52, 38, 39, 55, 22, 23, 22, 21, 3, -33, 78, -94, 75, 65, 76, -94, 74,
-<a name="l09471"></a>09471 3, 96, -4, 70, -64, 114, -113, 42, 15, 57, 30, 22, 21, 29, 124, 111, -86, 3, 79, 54, 65, 77, 44, 9, 68,
-<a name="l09472"></a>09472 4, -79, -112, 86, -113, -81, -111, 84, -111, -4, 122, 67, 84, -77, 93, 97, 35, 98, 19, 46, 46, 71, 56, 118, 65,
-<a name="l09473"></a>09473 58, 27, 112, -115, 50, -93, 55, 14, 112, -42, -1, -1, 0, 58, 1, 37, 5, -75, 5, 6, 0, 22, 3, -107, 0,
-<a name="l09474"></a>09474 0, 0, 3, -1, -70, 1, 37, 1, -12, 5, 86, 0, 3, 0, 7, 0, 20, 0, 123, -73, 14, 52, 12, 17, 52,
-<a name="l09475"></a>09475 0, 2, 3, -72, 3, 2, -76, 1, 1, 4, 6, 7, -72, 3, 2, -75, 15, 5, 1, 5, 5, 15, -66, 2, -17,
-<a name="l09476"></a>09476 0, 16, 3, 4, 0, 10, 2, -17, 0, 9, 2, -21, -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6,
-<a name="l09477"></a>09477 -72, 3, 1, -73, 4, 4, 9, 16, 16, 15, 15, 11, -67, 3, 3, 0, 8, 2, -16, 0, 22, 0, 9, 1, 42,
-<a name="l09478"></a>09478 -123, 47, 16, -11, -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -19,
-<a name="l09479"></a>09479 63, -19, 51, 47, 93, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1, 43, 1, 7, 39, 55, 7, 7, 39, 55,
-<a name="l09480"></a>09480 1, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 1, -17, 78, -94, 75, 65, 76, -94, 74, 1, -113, -3,
-<a name="l09481"></a>09481 -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, 5, 1, -112, 86, -113, -81, -111, 84, -111, -4, 42, -82, 118, 62, 43,
-<a name="l09482"></a>09482 81, -93, 91, 51, 77, -78, 0, -1, -1, -1, -70, 1, 37, 1, -12, 5, 86, 0, 22, 3, -105, 0, 0, 0, 4,
-<a name="l09483"></a>09483 0, 58, 1, 37, 5, -75, 5, -71, 0, 3, 0, 7, 0, 11, 0, 40, 0, -22, 64, 11, 11, 16, 18, 21, 52,
-<a name="l09484"></a>09484 5, 16, 18, 21, 52, 1, -72, -1, -16, -77, 18, 21, 52, 28, -72, -1, -64, 64, 11, 14, 17, 52, 34, 52, 12,
-<a name="l09485"></a>09485 17, 52, 0, 2, 3, -72, 3, 2, -75, 1, 1, 11, 4, 6, 7, -72, 3, 2, -76, 5, 5, 8, 10, 11, -72,
-<a name="l09486"></a>09486 3, 2, 64, 11, 9, 64, 9, 11, 52, 9, 9, 36, 22, 30, 21, 65, 9, 3, 4, 0, 35, 2, -17, 0, 36,
-<a name="l09487"></a>09487 3, 4, 0, 30, 2, -17, 0, 13, 2, -21, -78, 1, 3, 2, -72, 3, 1, -75, 0, 0, 8, 5, 7, 4, -72,
-<a name="l09488"></a>09488 3, 1, -76, 6, 6, 9, 11, 10, -72, 3, 1, -73, 8, 8, 17, 36, 36, 35, 35, 31, 65, 10, 3, 3, 0,
-<a name="l09489"></a>09489 64, 0, 12, 2, -16, 0, 42, 0, 22, 2, -5, 0, 32, 0, 21, -1, -64, -75, 9, 11, 52, 21, 21, 26, -70,
-<a name="l09490"></a>09490 3, 3, 0, 17, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -3, 50, 47, 25, 57, 47,
-<a name="l09491"></a>09491 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -3, 57, 57, 0, 63, -19, 63, -19, 63, 18,
-<a name="l09492"></a>09492 57, 17, 51, 47, 43, -19, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43,
-<a name="l09493"></a>09493 43, 43, 1, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23,
-<a name="l09494"></a>09494 6, 7, 6, 21, 20, 23, 22, 51, 33, 53, 52, 38, 39, 55, 22, 23, 22, 21, 3, 26, 77, -96, 74, 1, 104,
-<a name="l09495"></a>09495 78, -94, 75, 65, 76, -94, 74, 3, 96, -4, 70, -64, 114, -113, 42, 15, 57, 30, 22, 21, 29, 124, 111, -86, 3,
-<a name="l09496"></a>09496 79, 54, 65, 77, 44, 9, 68, 5, 99, -110, 86, -110, -2, -8, -112, 86, -113, -81, -111, 84, -111, -4, 122, 67, 84,
-<a name="l09497"></a>09497 -77, 93, 97, 35, 98, 19, 46, 46, 71, 56, 118, 65, 58, 27, 112, -115, 50, -93, 55, 14, 112, -42, -1, -1, 0,
-<a name="l09498"></a>09498 58, 1, 37, 5, -75, 5, -71, 0, 22, 3, -103, 0, 0, 0, 4, -1, -70, 1, 37, 1, -12, 6, 9, 0, 3,
-<a name="l09499"></a>09499 0, 7, 0, 11, 0, 24, 0, -78, 64, 11, 11, 16, 18, 21, 52, 5, 16, 18, 21, 52, 1, -72, -1, -16, 64,
-<a name="l09500"></a>09500 11, 18, 21, 52, 18, 52, 12, 17, 52, 0, 2, 3, -72, 3, 2, -75, 1, 1, 11, 4, 6, 7, -72, 3, 2,
-<a name="l09501"></a>09501 -76, 5, 5, 8, 10, 11, -72, 3, 2, -75, 15, 9, 1, 9, 9, 19, -66, 2, -17, 0, 20, 3, 4, 0, 14,
-<a name="l09502"></a>09502 2, -17, 0, 13, 2, -21, -78, 1, 3, 2, -72, 3, 1, -75, 0, 0, 8, 5, 7, 4, -72, 3, 1, -76, 6,
-<a name="l09503"></a>09503 6, 9, 11, 10, -72, 3, 1, -73, 8, 8, 13, 20, 20, 19, 19, 15, -67, 3, 3, 0, 12, 2, -16, 0, 26,
-<a name="l09504"></a>09504 0, 13, 1, 42, -123, 47, 16, -11, -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57,
-<a name="l09505"></a>09505 57, 17, 51, 47, -3, 57, 57, 0, 63, -19, 63, -19, 51, 47, 93, -19, 57, 57, 51, 47, -19, 57, 57, 17, 51,
-<a name="l09506"></a>09506 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 43, 1, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 1, 33,
-<a name="l09507"></a>09507 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 1, 42, 77, -96, 74, 1, 104, 78, -94, 75, 65, 76, -94, 74,
-<a name="l09508"></a>09508 1, -113, -3, -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, 5, -77, -110, 86, -110, -2, -8, -112, 86, -113, -81, -111,
-<a name="l09509"></a>09509 84, -111, -4, 42, -82, 118, 62, 43, 81, -93, 91, 51, 77, -78, -1, -1, -1, -70, 1, 37, 1, -12, 6, 9, 0,
-<a name="l09510"></a>09510 22, 3, -101, 0, 0, 0, 2, 0, 54, -2, 78, 4, 32, 3, 117, 0, 3, 0, 48, 0, -100, 64, 14, 45, 32,
-<a name="l09511"></a>09511 10, 11, 52, 28, 42, 10, 11, 52, 121, 46, 1, 31, -72, -1, -74, -75, 9, 17, 52, 0, 2, 1, -70, 3, 2,
-<a name="l09512"></a>09512 0, 3, -1, -64, 64, 10, 9, 10, 52, 3, 3, 23, 11, 7, 35, 34, -70, 2, -17, 0, 36, 3, 6, -76, 19,
-<a name="l09513"></a>09513 22, 4, 23, 15, -72, 2, -17, -78, 7, 7, 22, -70, 2, -17, 0, 23, 3, 7, -78, 1, 3, 2, -72, 3, 1,
-<a name="l09514"></a>09514 64, 18, 0, 0, -113, 4, 1, 4, 22, 34, 36, 35, 35, 23, 22, 22, 50, 11, 11, 29, -70, 3, 3, 0, 43,
-<a name="l09515"></a>09515 1, 42, -123, 47, -19, 51, 47, 17, 51, 47, 51, 51, 47, 57, 57, 17, 57, 93, 57, 47, -3, 57, 57, 0, 63,
-<a name="l09516"></a>09516 -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 57, 47, 43, -3, 57, 57, 49, 48, 1, 43, 93,
-<a name="l09517"></a>09517 43, 43, 1, 7, 39, 55, 3, 34, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 51, 50, 54, 51,
-<a name="l09518"></a>09518 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55,
-<a name="l09519"></a>09519 54, 3, 6, 85, -99, 77, 125, 20, 76, 19, 64, 80, 52, 90, 40, 35, 75, -79, 66, -52, 95, 69, 29, 112, 28,
-<a name="l09520"></a>09520 37, -45, -108, -36, 123, -103, -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 79, 60, 115, 35, 1, 7,
-<a name="l09521"></a>09521 -105, 90, -111, 1, 93, 6, 12, 8, 18, 113, 34, 74, 28, 13, 14, -87, 36, 46, 68, 98, 122, -90, -41, 108, 94,
-<a name="l09522"></a>09522 11, -97, 40, 48, 106, 121, -57, -88, -122, 102, 91, 28, 0, 0, 2, 0, 54, -2, 78, 4, 53, 3, 105, 0, 62,
-<a name="l09523"></a>09523 0, 66, 0, -52, 64, 14, 30, 32, 10, 11, 52, 13, 42, 10, 11, 52, 121, 31, 1, 16, -72, -1, -94, -75, 9,
-<a name="l09524"></a>09524 17, 52, 65, 63, 64, -70, 3, 2, 0, 66, -1, -64, 64, 15, 11, 19, 52, 66, 66, 1, 19, 56, 8, 52, 61,
-<a name="l09525"></a>09525 41, 37, 20, 19, -70, 2, -17, 0, 21, 3, 6, -76, 48, 51, 34, 52, 45, -72, 2, -17, -78, 37, 37, 51, -66,
-<a name="l09526"></a>09526 2, -17, 0, 52, 3, 7, 0, 61, 2, -17, 0, 1, 2, -21, -78, 64, 66, 65, -72, 3, 1, -73, 63, 63, 4,
-<a name="l09527"></a>09527 14, 56, 51, 8, 4, -72, 3, 3, 64, 16, 57, 57, -113, 34, 1, 34, 51, 19, 21, 14, 20, 20, 52, 51, 51,
-<a name="l09528"></a>09528 0, -72, 2, -16, -77, 68, 41, 41, 14, -70, 3, 3, 0, 28, 1, 42, -123, 47, -19, 51, 47, 16, -27, 51, 47,
-<a name="l09529"></a>09529 51, 51, 47, 18, 57, 57, 17, 57, 93, 57, 47, -3, 57, 18, 57, 17, 18, 57, 47, -3, 57, 57, 0, 63, -19,
-<a name="l09530"></a>09530 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 18, 57, 57, 17, 18, 57, 47, 43, -19, 57,
-<a name="l09531"></a>09531 57, 49, 48, 1, 43, 93, 43, 43, 1, 35, 34, 38, 53, 52, 55, 54, 55, 6, 7, 6, 7, 6, 21, 20, 23,
-<a name="l09532"></a>09532 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 38, 38, 35, 34, 7, 6, 7,
-<a name="l09533"></a>09533 54, 55, 54, 51, 50, 22, 51, 50, 54, 55, 7, 6, 7, 6, 7, 7, 20, 23, 22, 51, 51, 1, 7, 39, 55,
-<a name="l09534"></a>09534 4, 53, -119, 121, 102, 10, 4, 7, -85, 87, -96, 88, 111, -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88,
-<a name="l09535"></a>09535 100, 85, 66, 127, 37, -87, 40, 89, 36, 101, 63, 21, 110, 34, 37, 83, -79, 97, -30, 77, 51, 97, 53, 40, 41,
-<a name="l09536"></a>09536 52, 33, 58, 2, 50, 31, 75, -119, -2, -118, 77, -95, 77, 1, 37, 90, 104, 39, 58, 22, 36, 52, 37, 68, 86,
-<a name="l09537"></a>09537 108, -118, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -85, -128, 100, 83, 25, 90, 5, 7, 9, 3, 24, 98, 38,
-<a name="l09538"></a>09538 84, 37, 8, 7, -86, 5, 9, 6, 11, 56, 82, 28, 17, -2, -26, -110, 85, -110, 0, 0, 2, -1, -70, -1, -68,
-<a name="l09539"></a>09539 4, 61, 3, 107, 0, 22, 0, 26, 0, 92, -78, 25, 23, 24, -72, 3, 2, -75, 26, 26, 1, 11, 2, 15, -72,
-<a name="l09540"></a>09540 2, -17, -77, 9, 9, 22, 2, -70, 2, -17, 0, 1, 2, -21, -78, 24, 26, 23, -72, 3, 1, 64, 15, 25, 25,
-<a name="l09541"></a>09541 3, 11, 11, 1, 3, 84, 11, 17, 52, 3, 3, 1, 0, -72, 2, -16, -79, 28, 1, 47, 16, -27, 17, 57, 47,
-<a name="l09542"></a>09542 43, 18, 57, 47, 17, 57, 47, -19, 57, 57, 0, 63, -3, 60, 50, 47, -19, 18, 57, 17, 51, 47, -19, 57, 57,
-<a name="l09543"></a>09543 49, 48, 1, 33, 53, 33, 38, 39, 38, 39, 38, 35, 34, 7, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 51,
-<a name="l09544"></a>09544 1, 7, 39, 55, 4, 61, -5, 125, 3, 47, 102, 70, 87, 72, 81, 83, 51, 52, 29, 47, 68, 104, 102, -117, 69,
-<a name="l09545"></a>09545 -100, 121, 43, 60, -2, 3, 75, -93, 78, 1, 37, -82, 79, 44, 55, 25, 28, 7, 74, 45, 65, 100, 50, -116, 109,
-<a name="l09546"></a>09546 9, -2, 121, -112, 84, -110, 0, -1, -1, -1, -70, -1, -68, 4, 61, 3, 107, 0, 22, 3, -97, 0, 0, 0, 1,
-<a name="l09547"></a>09547 0, 54, -2, 78, 4, 32, 3, 117, 0, 44, 0, 117, 64, 14, 41, 32, 10, 11, 52, 24, 42, 10, 11, 52, 121,
-<a name="l09548"></a>09548 42, 1, 27, -72, -1, -74, -74, 9, 17, 52, 7, 3, 31, 30, -70, 2, -17, 0, 32, 3, 6, -76, 15, 18, 0,
-<a name="l09549"></a>09549 19, 11, -72, 2, -17, -78, 3, 3, 18, -70, 2, -17, 0, 19, 3, 7, 64, 16, -113, 0, 1, 0, 18, 30, 32,
-<a name="l09550"></a>09550 31, 31, 19, 18, 18, 46, 7, 7, 25, -70, 3, 3, 0, 39, 1, 42, -123, 47, -19, 51, 47, 17, 51, 47, 51,
-<a name="l09551"></a>09551 51, 47, 57, 57, 17, 57, 93, 0, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 49, 48, 1,
-<a name="l09552"></a>09552 43, 93, 43, 43, 1, 34, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 51, 50, 54, 51, 7, 6,
-<a name="l09553"></a>09553 7, 6, 7, 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 1,
-<a name="l09554"></a>09554 -28, 20, 76, 19, 64, 80, 52, 90, 40, 35, 75, -79, 66, -52, 95, 69, 29, 112, 28, 37, -45, -108, -36, 123, -103,
-<a name="l09555"></a>09555 -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 79, 60, 115, 35, 2, -72, 6, 12, 8, 18, 113, 34,
-<a name="l09556"></a>09556 74, 28, 13, 14, -87, 36, 46, 68, 98, 122, -90, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -88, -122, 102, 91,
-<a name="l09557"></a>09557 28, 0, 0, 1, 0, 54, -2, 78, 4, 53, 3, 105, 0, 62, 0, -96, 64, 14, 30, 32, 10, 11, 52, 13, 42,
-<a name="l09558"></a>09558 10, 11, 52, 121, 31, 1, 16, -72, -1, -94, 64, 11, 9, 17, 52, 56, 8, 52, 61, 41, 37, 20, 19, -70, 2,
-<a name="l09559"></a>09559 -17, 0, 21, 3, 6, -76, 48, 51, 34, 52, 45, -72, 2, -17, -78, 37, 37, 51, -66, 2, -17, 0, 52, 3, 7,
-<a name="l09560"></a>09560 0, 61, 2, -17, 0, 1, 2, -21, -77, 56, 51, 8, 4, -72, 3, 3, 64, 16, 57, 57, -113, 34, 1, 34, 51,
-<a name="l09561"></a>09561 19, 21, 14, 20, 20, 52, 51, 51, 0, -72, 2, -16, -77, 64, 41, 41, 14, -70, 3, 3, 0, 28, 1, 42, -123,
-<a name="l09562"></a>09562 47, -19, 51, 47, 16, -27, 51, 47, 51, 51, 47, 18, 57, 57, 17, 57, 93, 57, 47, -3, 57, 18, 57, 0, 63,
-<a name="l09563"></a>09563 -19, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 18, 57, 57, 49, 48, 1, 43, 93, 43,
-<a name="l09564"></a>09564 43, 1, 35, 34, 38, 53, 52, 55, 54, 55, 6, 7, 6, 7, 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34,
-<a name="l09565"></a>09565 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 38, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 22, 51,
-<a name="l09566"></a>09566 50, 54, 55, 7, 6, 7, 6, 7, 7, 20, 23, 22, 51, 51, 4, 53, -119, 121, 102, 10, 4, 7, -85, 87, -96,
-<a name="l09567"></a>09567 88, 111, -32, -61, 1, 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 85, 66, 127, 37, -87, 40, 89, 36, 101, 63,
-<a name="l09568"></a>09568 21, 110, 34, 37, 83, -79, 97, -30, 77, 51, 97, 53, 40, 41, 52, 33, 58, 2, 50, 31, 75, -119, 1, 37, 90,
-<a name="l09569"></a>09569 104, 39, 58, 22, 36, 52, 37, 68, 86, 108, -118, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -85, -128, 100, 83,
-<a name="l09570"></a>09570 25, 90, 5, 7, 9, 3, 24, 98, 38, 84, 37, 8, 7, -86, 5, 9, 6, 11, 56, 82, 28, 17, 0, 0, 1,
-<a name="l09571"></a>09571 -1, -70, 1, 37, 4, 61, 3, 107, 0, 22, 0, 60, -78, 11, 2, 15, -72, 2, -17, -77, 9, 9, 22, 2, -70,
-<a name="l09572"></a>09572 2, -17, 0, 1, 2, -21, 64, 12, 11, 11, 1, 3, 84, 11, 17, 52, 3, 3, 1, 0, -72, 2, -16, -79, 24,
-<a name="l09573"></a>09573 1, 47, 16, -27, 17, 57, 47, 43, 18, 57, 47, 0, 63, -3, 60, 50, 47, -19, 18, 57, 49, 48, 1, 33, 53,
-<a name="l09574"></a>09574 33, 38, 39, 38, 39, 38, 35, 34, 7, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 51, 4, 61, -5, 125, 3,
-<a name="l09575"></a>09575 47, 102, 70, 87, 72, 81, 83, 51, 52, 29, 47, 68, 104, 102, -117, 69, -100, 121, 43, 60, 1, 37, -82, 79, 44,
-<a name="l09576"></a>09576 55, 25, 28, 7, 74, 45, 65, 100, 50, -116, 109, 9, 0, -1, -1, -1, -70, 1, 37, 4, 61, 3, 107, 0, 22,
-<a name="l09577"></a>09577 3, -93, 0, 0, 0, 2, 0, 54, -2, 78, 4, 32, 5, 29, 0, 3, 0, 48, 0, -109, 64, 14, 45, 32, 10,
-<a name="l09578"></a>09578 11, 52, 28, 42, 10, 11, 52, 121, 46, 1, 31, -72, -1, -74, -75, 9, 17, 52, 0, 2, 3, -72, 3, 2, -74,
-<a name="l09579"></a>09579 1, 1, 15, 11, 7, 35, 34, -70, 2, -17, 0, 36, 3, 6, -76, 19, 22, 4, 23, 15, -72, 2, -17, -78, 7,
-<a name="l09580"></a>09580 7, 22, -70, 2, -17, 0, 23, 3, 7, -78, 1, 3, 2, -72, 3, 1, 64, 18, 0, 0, -113, 4, 1, 4, 22,
-<a name="l09581"></a>09581 34, 36, 35, 35, 23, 22, 22, 50, 11, 11, 29, -70, 3, 3, 0, 43, 1, 42, -123, 47, -19, 51, 47, 17, 51,
-<a name="l09582"></a>09582 47, 51, 51, 47, 57, 57, 17, 57, 93, 57, 47, -3, 57, 57, 0, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63,
-<a name="l09583"></a>09583 -19, 57, 17, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 93, 43, 43, 1, 7, 39, 55, 3, 34, 38, 35,
-<a name="l09584"></a>09584 34, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 51, 50, 54, 51, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22,
-<a name="l09585"></a>09585 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 2, -92, 77, -95, 75, 29, 20, 76, 19,
-<a name="l09586"></a>09586 64, 80, 52, 90, 40, 35, 75, -79, 66, -52, 95, 69, 29, 112, 28, 37, -45, -108, -36, 123, -103, -32, -61, 1, 70,
-<a name="l09587"></a>09587 -72, 6, -30, 58, -40, -113, -85, 88, 100, 79, 60, 115, 35, 4, -56, -111, 84, -110, -3, -101, 6, 12, 8, 18, 113,
-<a name="l09588"></a>09588 34, 74, 28, 13, 14, -87, 36, 46, 68, 98, 122, -90, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -88, -122, 102,
-<a name="l09589"></a>09589 91, 28, 0, 2, 0, 54, -2, 78, 4, 53, 5, 29, 0, 3, 0, 66, 0, -62, 64, 14, 34, 32, 10, 11, 52,
-<a name="l09590"></a>09590 17, 42, 10, 11, 52, 121, 35, 1, 20, -72, -1, -94, -75, 9, 17, 52, 0, 2, 3, -72, 3, 2, 64, 11, 1,
-<a name="l09591"></a>09591 1, 49, 60, 12, 56, 65, 45, 41, 24, 23, -70, 2, -17, 0, 25, 3, 6, -76, 52, 55, 38, 56, 49, -72, 2,
-<a name="l09592"></a>09592 -17, -78, 41, 41, 55, -66, 2, -17, 0, 56, 3, 7, 0, 65, 2, -17, 0, 5, 2, -21, -78, 1, 3, 2, -72,
-<a name="l09593"></a>09593 3, 1, -73, 0, 0, 8, 18, 60, 55, 12, 8, -72, 3, 3, 64, 16, 61, 61, -113, 38, 1, 38, 55, 23, 25,
-<a name="l09594"></a>09594 18, 24, 24, 56, 55, 55, 4, -72, 2, -16, -77, 68, 45, 45, 18, -70, 3, 3, 0, 32, 1, 42, -123, 47, -19,
-<a name="l09595"></a>09595 51, 47, 16, -27, 51, 47, 51, 51, 47, 18, 57, 57, 17, 57, 93, 57, 47, -3, 57, 18, 57, 17, 18, 57, 47,
-<a name="l09596"></a>09596 -3, 57, 57, 0, 63, -19, 63, -19, 57, 47, -19, 18, 57, 17, 57, 63, -19, 57, 17, 57, 17, 18, 57, 57, 17,
-<a name="l09597"></a>09597 51, 47, -19, 57, 57, 49, 48, 1, 43, 93, 43, 43, 1, 7, 39, 55, 1, 35, 34, 38, 53, 52, 55, 54, 55,
-<a name="l09598"></a>09598 6, 7, 6, 7, 6, 21, 20, 23, 22, 33, 51, 23, 7, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54,
-<a name="l09599"></a>09599 55, 38, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 22, 51, 50, 54, 55, 7, 6, 7, 6, 7, 7, 20,
-<a name="l09600"></a>09600 23, 22, 51, 51, 2, -88, 77, -95, 75, 2, 48, -119, 121, 102, 10, 4, 7, -85, 87, -96, 88, 111, -32, -61, 1,
-<a name="l09601"></a>09601 70, -72, 6, -30, 58, -40, -113, -85, 88, 100, 85, 66, 127, 37, -87, 40, 89, 36, 101, 63, 21, 110, 34, 37, 83,
-<a name="l09602"></a>09602 -79, 97, -30, 77, 51, 97, 53, 40, 41, 52, 33, 58, 2, 50, 31, 75, -119, 4, -56, -111, 84, -110, -4, 8, 90,
-<a name="l09603"></a>09603 104, 39, 58, 22, 36, 52, 37, 68, 86, 108, -118, -41, 108, 94, 11, -97, 40, 48, 106, 121, -57, -85, -128, 100, 83,
-<a name="l09604"></a>09604 25, 90, 5, 7, 9, 3, 24, 98, 38, 84, 37, 8, 7, -86, 5, 9, 6, 11, 56, 82, 28, 17, 0, 0, 2,
-<a name="l09605"></a>09605 -1, -70, 1, 37, 4, 61, 5, 29, 0, 3, 0, 26, 0, 92, -78, 0, 2, 3, -72, 3, 2, -75, 1, 1, 19,
-<a name="l09606"></a>09606 15, 6, 19, -72, 2, -17, -77, 13, 13, 26, 6, -70, 2, -17, 0, 5, 2, -21, -78, 1, 3, 0, -72, 3, 1,
-<a name="l09607"></a>09607 64, 15, 2, 2, 7, 15, 15, 5, 7, 84, 11, 17, 52, 7, 7, 5, 4, -72, 2, -16, -79, 28, 5, 47, 16,
-<a name="l09608"></a>09608 -27, 17, 57, 47, 43, 18, 57, 47, 17, 57, 47, -19, 57, 57, 0, 63, -3, 60, 50, 47, -19, 18, 57, 17, 51,
-<a name="l09609"></a>09609 47, -19, 57, 57, 49, 48, 1, 7, 39, 55, 1, 33, 53, 33, 38, 39, 38, 39, 38, 35, 34, 7, 54, 55, 54,
-<a name="l09610"></a>09610 51, 50, 23, 22, 23, 22, 23, 51, 2, 94, 76, -94, 74, 2, -125, -5, 125, 3, 47, 102, 70, 87, 72, 81, 83,
-<a name="l09611"></a>09611 51, 52, 29, 47, 68, 104, 102, -117, 69, -100, 121, 43, 60, 4, -56, -111, 84, -110, -4, 8, -82, 79, 44, 55, 25,
-<a name="l09612"></a>09612 28, 7, 74, 45, 65, 100, 50, -116, 109, 9, 0, -1, -1, -1, -70, 1, 37, 4, 61, 5, 29, 0, 22, 3, -89,
-<a name="l09613"></a>09613 0, 0, 0, 1, 0, 95, 1, 37, 2, -77, 4, 106, 0, 22, 0, 77, 64, 9, 102, 19, 116, 19, 2, 7, 7,
-<a name="l09614"></a>09614 13, 18, -72, 2, -17, -78, 17, 17, 13, -70, 2, -17, 0, 1, 2, -21, -75, 18, 18, 17, 17, 8, 13, -70, 3,
-<a name="l09615"></a>09615 3, 0, 0, 2, -16, -78, 24, 4, 8, -70, 2, -7, 0, 7, 1, 42, -123, 47, -19, 51, 16, -11, -19, 17, 57,
-<a name="l09616"></a>09616 47, 25, 57, 47, 0, 24, 63, -3, 50, 47, -19, 18, 57, 47, 49, 48, 1, 93, 1, 33, 34, 38, 53, 52, 54,
-<a name="l09617"></a>09617 55, 51, 22, 23, 22, 51, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 2, -77, -2, 64, 57, 91, 8, 11, 23,
-<a name="l09618"></a>09618 11, 29, 24, 42, 1, -125, 50, 62, -111, 15, -83, 72, 58, 1, 37, 66, 45, 38, 62, 37, 41, 18, 15, -77, 109,
-<a name="l09619"></a>09619 -120, 45, -62, 85, -70, -106, -14, 0, -1, -1, 0, 95, 1, 37, 2, -77, 4, 106, 0, 22, 3, -87, 0, 0, 0,
-<a name="l09620"></a>09620 2, 0, 95, 1, 37, 2, -77, 6, 19, 0, 3, 0, 26, 0, 111, -73, 102, 23, 116, 23, 2, 0, 2, 3, -72,
-<a name="l09621"></a>09621 3, 2, -74, 1, 1, 22, 11, 11, 17, 22, -72, 2, -17, -78, 21, 21, 17, -70, 2, -17, 0, 5, 2, -21, -78,
-<a name="l09622"></a>09622 1, 3, 0, -72, 3, 1, 64, 10, 2, 2, 21, 11, 22, 22, 21, 21, 12, 17, -70, 3, 3, 0, 4, 2, -16,
-<a name="l09623"></a>09623 -78, 28, 8, 12, -70, 2, -7, 0, 11, 1, 42, -123, 47, -19, 51, 16, -11, -19, 17, 57, 47, 25, 57, 47, 24,
-<a name="l09624"></a>09624 17, 18, 57, 47, -19, 57, 57, 0, 63, -3, 50, 47, -19, 18, 57, 47, 17, 51, 47, -19, 57, 57, 49, 48, 1,
-<a name="l09625"></a>09625 93, 1, 7, 39, 55, 1, 33, 34, 38, 53, 52, 54, 55, 51, 22, 23, 22, 51, 33, 52, 39, 38, 39, 55, 22,
-<a name="l09626"></a>09626 23, 22, 21, 1, -87, 78, -96, 73, 1, -81, -2, 64, 57, 91, 8, 11, 23, 11, 29, 24, 42, 1, -125, 50, 62,
-<a name="l09627"></a>09627 -111, 15, -83, 72, 58, 5, -67, -111, 86, -111, -5, 18, 66, 45, 38, 62, 37, 41, 18, 15, -77, 109, -120, 45, -62,
-<a name="l09628"></a>09628 85, -70, -106, -14, 0, -1, -1, 0, 95, 1, 37, 2, -77, 6, 19, 0, 22, 3, -85, 0, 0, 0, 1, 0, 74,
-<a name="l09629"></a>09629 -1, 70, 3, -23, 3, 112, 0, 30, 0, 114, 64, 11, 19, 42, 9, 17, 52, 18, 42, 12, 17, 52, 4, -72, -1,
-<a name="l09630"></a>09630 -32, -77, 9, 17, 52, 3, -72, -1, -32, -77, 9, 17, 52, 2, -72, -1, -42, 64, 11, 9, 17, 52, 24, 52, 12,
-<a name="l09631"></a>09631 17, 52, 13, 12, 25, -70, 2, -17, 0, 26, 3, 9, -78, 12, 58, 16, -70, 3, 10, 0, 6, 3, 8, -76, 26,
-<a name="l09632"></a>09632 26, 25, 25, 21, -70, 3, 3, 0, 0, 2, -16, -78, 32, 13, 12, -72, 1, 26, -123, 47, 51, 16, -12, -3, 50,
-<a name="l09633"></a>09633 47, 25, 57, 47, 0, 24, 63, -3, 25, -28, 24, 63, -19, 17, 57, 49, 48, 1, 43, 43, 43, 43, 43, 43, 1,
-<a name="l09634"></a>09634 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 55, 22, 22, 51, 50, 55, 54, 54, 53, 52, 39, 38, 39,
-<a name="l09635"></a>09635 55, 22, 23, 22, 21, 3, -23, 94, 82, 122, 116, 75, 69, 80, 61, 85, 72, 71, 17, 66, -113, 58, -128, -117, 126,
-<a name="l09636"></a>09636 -78, 46, 37, 67, 57, 82, 39, 44, 1, 37, 110, 118, 104, 75, 72, 20, 15, 32, 27, 27, 40, 13, 27, 82, 75,
-<a name="l09637"></a>09637 -27, 92, 79, 87, 70, 74, -99, 76, 76, 86, 106, 0, -1, -1, 0, 74, -1, 70, 3, -23, 3, 112, 0, 22, 3,
-<a name="l09638"></a>09638 -83, 0, 0, 0, 2, 0, 74, -1, 70, 3, -23, 5, 29, 0, 3, 0, 34, 0, -110, 64, 11, 23, 42, 9, 17,
-<a name="l09639"></a>09639 52, 22, 42, 12, 17, 52, 8, -72, -1, -32, -77, 9, 17, 52, 7, -72, -1, -32, -77, 9, 17, 52, 6, -72, -1,
-<a name="l09640"></a>09640 -42, 64, 11, 9, 17, 52, 28, 52, 12, 17, 52, 0, 2, 3, -72, 3, 2, -75, 1, 1, 30, 17, 16, 29, -70,
-<a name="l09641"></a>09641 2, -17, 0, 30, 3, 9, -78, 16, 58, 20, -70, 3, 10, 0, 10, 3, 8, -78, 1, 3, 2, -72, 3, 1, -73,
-<a name="l09642"></a>09642 0, 0, 29, 30, 30, 29, 29, 25, -70, 3, 3, 0, 4, 2, -16, -78, 36, 17, 16, -72, 1, 26, -123, 47, 51,
-<a name="l09643"></a>09643 16, -12, -3, 50, 47, 25, 57, 47, 17, 51, 24, 47, -3, 57, 57, 0, 63, -3, 25, -28, 24, 63, -19, 17, 57,
-<a name="l09644"></a>09644 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 43, 43, 43, 1, 7, 39, 55, 1, 20, 7, 6, 7, 6,
-<a name="l09645"></a>09645 35, 34, 39, 38, 39, 38, 39, 55, 22, 22, 51, 50, 55, 54, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21,
-<a name="l09646"></a>09646 3, 83, 77, -95, 75, 1, 57, 94, 82, 122, 116, 75, 69, 80, 61, 85, 72, 71, 17, 66, -113, 58, -128, -117, 126,
-<a name="l09647"></a>09647 -78, 46, 37, 67, 57, 82, 39, 44, 4, -56, -111, 84, -110, -4, 8, 110, 118, 104, 75, 72, 20, 15, 32, 27, 27,
-<a name="l09648"></a>09648 40, 13, 27, 82, 75, -27, 92, 79, 87, 70, 74, -99, 76, 76, 86, 106, 0, -1, -1, 0, 74, -1, 70, 3, -23,
-<a name="l09649"></a>09649 5, 29, 0, 22, 3, -81, 0, 0, 0, 1, 0, 62, -1, 108, 6, -110, 3, 87, 0, 70, 0, -7, -75, 64, 32,
-<a name="l09650"></a>09650 16, 17, 52, 30, -72, -1, -32, 64, 26, 14, 17, 52, 33, 32, 11, 17, 52, 38, 52, 11, 17, 52, 65, 65, 66,
-<a name="l09651"></a>09651 58, 52, 53, 44, 66, 66, 40, 53, 53, 39, -70, 2, -17, 0, 40, 3, 9, -78, 25, 31, 24, -70, 3, 7, 0,
-<a name="l09652"></a>09652 58, 2, -17, -78, 0, 0, 44, -66, 2, -17, 0, 9, 2, -21, 0, 31, 2, -17, 0, 15, 3, 17, -77, 4, 65,
-<a name="l09653"></a>09653 49, 52, -70, 2, -6, 0, 53, -1, -64, 64, 17, 9, 17, 52, 53, 53, 65, 9, 40, 40, 15, 39, 31, 39, 2,
-<a name="l09654"></a>09654 39, 39, 35, -69, 3, 5, 0, 44, 0, 9, -1, -64, 64, 15, 9, 13, 52, 9, 9, 65, 28, 66, 66, 63, 65,
-<a name="l09655"></a>09655 1, 65, 65, 61, 65, 10, 3, 5, 0, 64, 0, 0, 2, -16, 0, 72, 0, 25, 2, -5, 0, 32, 0, 24, -1,
-<a name="l09656"></a>09656 -64, -75, 9, 11, 52, 24, 24, 28, -72, 3, 3, -77, 0, 19, 1, 19, -72, 1, 42, -123, 47, 93, -3, 50, 25,
-<a name="l09657"></a>09657 47, 43, 26, -19, 24, 16, -11, 26, -3, 50, 47, 93, 25, 57, 47, 24, 17, 18, 57, 47, 43, 60, -3, 50, 47,
-<a name="l09658"></a>09658 93, 25, 57, 47, 17, 18, 57, 47, 43, -12, 57, 18, 57, 0, 24, 63, -19, 63, -19, 60, 16, -19, 63, 18, 57,
-<a name="l09659"></a>09659 63, -3, 57, 47, 18, 57, 47, 17, 18, 57, 17, 18, 57, 47, 49, 48, 1, 43, 43, 43, 43, 1, 35, 34, 38,
-<a name="l09660"></a>09660 39, 6, 7, 6, 35, 35, 20, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6, 6, 21,
-<a name="l09661"></a>09661 20, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 51, 50, 55, 54, 53, 52, 38, 39, 55,
-<a name="l09662"></a>09662 23, 22, 23, 22, 51, 50, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 6, -110, 79, 60, 91, 47, 42, 33,
-<a name="l09663"></a>09663 47, 90, 123, 44, 57, 117, -109, -35, -56, 106, 116, 42, 36, 22, 54, 40, 70, 45, -79, -92, -64, -105, -68, 37, 29,
-<a name="l09664"></a>09664 53, 83, 50, 18, 25, 123, 95, 40, 35, 7, 7, 40, 16, 22, 37, 41, 75, 23, 25, 31, 23, 38, 67, 47, 10,
-<a name="l09665"></a>09665 22, 1, 37, 33, 36, 38, 13, 18, 92, 87, 113, 66, 83, 70, 77, -97, 86, -80, 89, 54, 112, 18, -112, -90, 69,
-<a name="l09666"></a>09666 124, -127, 67, 83, -107, 100, 90, 71, 65, -51, 82, 63, 89, -102, 29, 25, 52, 29, 59, 35, 60, 97, 98, 43, 48,
-<a name="l09667"></a>09667 29, 22, 50, 57, 42, 42, 109, 77, 28, 63, 120, 0, -1, -1, 0, 62, -1, 108, 6, -110, 3, 87, 0, 22, 3,
-<a name="l09668"></a>09668 -79, 0, 0, 0, 1, -1, -70, 1, 37, 4, 63, 3, 53, 0, 59, 0, -86, 64, 23, 53, 32, 16, 17, 52, 4,
-<a name="l09669"></a>09669 13, 18, 17, 41, 42, 34, 26, 18, 27, 27, 54, 42, 42, 55, 54, 54, 55, -70, 3, 9, 0, 47, 2, -17, -78,
-<a name="l09670"></a>09670 0, 0, 34, -72, 2, -17, -78, 9, 9, 18, -70, 2, -17, 0, 17, 2, -21, -74, 4, 50, 42, 13, 27, 38, 41,
-<a name="l09671"></a>09671 -70, 2, -6, 0, 42, -1, -64, -73, 9, 14, 52, 42, 42, 54, 23, 26, -70, 2, -6, 0, 27, -1, -64, 64, 17,
-<a name="l09672"></a>09672 9, 10, 52, 27, 27, 54, 17, 55, 55, 54, 64, 12, 14, 52, 54, 54, 50, -70, 3, 5, 0, 0, 2, -16, -79,
-<a name="l09673"></a>09673 61, 17, 47, 16, -11, -3, 50, 47, 43, 25, 57, 47, 17, 18, 57, 47, 43, -12, 57, 18, 57, 47, 43, -12, 57,
-<a name="l09674"></a>09674 17, 57, 17, 18, 57, 0, 24, 63, -19, 60, 16, -19, 60, 16, -19, 63, 57, 47, 18, 57, 47, 17, 57, 47, 18,
-<a name="l09675"></a>09675 57, 17, 18, 57, 17, 18, 57, 57, 49, 48, 1, 43, 1, 35, 34, 38, 39, 6, 7, 6, 35, 35, 34, 39, 38,
-<a name="l09676"></a>09676 39, 6, 6, 35, 35, 53, 51, 50, 55, 54, 53, 52, 38, 39, 55, 22, 23, 22, 23, 22, 51, 51, 50, 55, 54,
-<a name="l09677"></a>09677 53, 52, 38, 39, 55, 23, 22, 23, 22, 51, 50, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 4, 63, 77,
-<a name="l09678"></a>09678 64, 92, 38, 47, 35, 51, 89, 65, 52, 52, 34, 50, 48, 80, 90, -63, -63, 81, 35, 58, 6, 8, 41, 28, 18,
-<a name="l09679"></a>09679 32, 38, 46, 64, 67, 75, 36, 40, 8, 7, 42, 21, 27, 39, 34, 58, 27, 33, 41, 7, 42, 65, 41, 15, 22,
-<a name="l09680"></a>09680 1, 37, 35, 32, 37, 12, 18, 20, 13, 30, 36, 27, -82, 14, 23, 69, 29, 58, 36, 60, 92, 42, 73, 37, 45,
-<a name="l09681"></a>09681 23, 26, 57, 31, 58, 34, 60, 94, 111, 43, 38, 33, 26, 56, 62, 10, 55, 109, 62, 45, 68, 113, -1, -1, -1,
-<a name="l09682"></a>09682 -70, 1, 37, 4, 63, 3, 53, 0, 22, 3, -77, 0, 0, 0, 4, 0, 62, -1, 108, 6, -110, 5, -71, 0, 3,
-<a name="l09683"></a>09683 0, 7, 0, 11, 0, 82, 1, 111, 64, 11, 11, 16, 18, 21, 52, 5, 16, 18, 21, 52, 1, -72, -1, -16, 64,
-<a name="l09684"></a>09684 9, 18, 21, 52, 76, 32, 16, 17, 52, 42, -72, -1, -32, 64, 16, 14, 17, 52, 45, 32, 11, 17, 52, 50, 52,
-<a name="l09685"></a>09685 11, 17, 52, 0, 2, 3, -72, 3, 2, -75, 1, 1, 11, 4, 6, 7, -72, 3, 2, -76, 5, 5, 8, 10, 11,
-<a name="l09686"></a>09686 -72, 3, 2, 64, 16, 9, 9, 52, 77, 77, 78, 70, 64, 65, 56, 78, 78, 52, 65, 65, 51, -70, 2, -17, 0,
-<a name="l09687"></a>09687 52, 3, 9, -78, 37, 43, 36, -70, 3, 7, 0, 70, 2, -17, -78, 12, 12, 56, -66, 2, -17, 0, 21, 2, -21,
-<a name="l09688"></a>09688 0, 43, 2, -17, 0, 27, 3, 17, -78, 1, 3, 2, -72, 3, 1, -75, 0, 0, 8, 5, 7, 4, -72, 3, 1,
-<a name="l09689"></a>09689 -76, 6, 6, 9, 11, 10, -72, 3, 1, -73, 8, 8, 73, 21, 16, 77, 61, 64, -70, 2, -6, 0, 65, -1, -64,
-<a name="l09690"></a>09690 64, 17, 9, 17, 52, 65, 65, 77, 21, 52, 52, 15, 51, 31, 51, 2, 51, 51, 47, -69, 3, 5, 0, 56, 0,
-<a name="l09691"></a>09691 21, -1, -64, 64, 15, 9, 13, 52, 21, 21, 77, 40, 78, 78, 63, 77, 1, 77, 77, 73, 65, 10, 3, 5, 0,
-<a name="l09692"></a>09692 64, 0, 12, 2, -16, 0, 84, 0, 37, 2, -5, 0, 32, 0, 36, -1, -64, -75, 9, 11, 52, 36, 36, 40, -72,
-<a name="l09693"></a>09693 3, 3, -77, 0, 31, 1, 31, -72, 1, 42, -123, 47, 93, -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -3,
-<a name="l09694"></a>09694 50, 47, 93, 25, 57, 47, 24, 17, 18, 57, 47, 43, 60, -3, 50, 47, 93, 25, 57, 47, 17, 18, 57, 47, 43,
-<a name="l09695"></a>09695 -12, 57, 18, 57, 24, 17, 18, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -3, 57, 57, 0, 63,
-<a name="l09696"></a>09696 -19, 63, -19, 60, 16, -19, 63, 18, 57, 63, -3, 57, 47, 18, 57, 47, 17, 18, 57, 17, 18, 57, 47, 17, 51,
-<a name="l09697"></a>09697 47, -19, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43,
-<a name="l09698"></a>09698 1, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 1, 35, 34, 38, 39, 6, 7, 6, 35, 35, 20, 7, 6,
-<a name="l09699"></a>09699 7, 6, 35, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22, 51, 50, 55, 54, 53, 52, 39,
-<a name="l09700"></a>09700 38, 39, 55, 22, 23, 22, 21, 51, 50, 55, 54, 53, 52, 38, 39, 55, 23, 22, 23, 22, 51, 50, 54, 53, 52,
-<a name="l09701"></a>09701 39, 38, 39, 55, 22, 23, 22, 21, 5, 126, 77, -96, 74, 1, 104, 78, -94, 75, 65, 76, -94, 74, 1, -39, 79,
-<a name="l09702"></a>09702 60, 91, 47, 42, 33, 47, 90, 123, 44, 57, 117, -109, -35, -56, 106, 116, 42, 36, 22, 54, 40, 70, 45, -79, -92,
-<a name="l09703"></a>09703 -64, -105, -68, 37, 29, 53, 83, 50, 18, 25, 123, 95, 40, 35, 7, 7, 40, 16, 22, 37, 41, 75, 23, 25, 31,
-<a name="l09704"></a>09704 23, 38, 67, 47, 10, 22, 5, 99, -110, 86, -110, -2, -8, -112, 86, -113, -81, -111, 84, -111, -4, 122, 33, 36, 38,
-<a name="l09705"></a>09705 13, 18, 92, 87, 113, 66, 83, 70, 77, -97, 86, -80, 89, 54, 112, 18, -112, -90, 69, 124, -127, 67, 83, -107, 100,
-<a name="l09706"></a>09706 90, 71, 65, -51, 82, 63, 89, -102, 29, 25, 52, 29, 59, 35, 60, 97, 98, 43, 48, 29, 22, 50, 57, 42, 42,
-<a name="l09707"></a>09707 109, 77, 28, 63, 120, 0, -1, -1, 0, 62, -1, 108, 6, -110, 5, -71, 0, 22, 3, -75, 0, 0, 0, 4, -1,
-<a name="l09708"></a>09708 -70, 1, 37, 4, 63, 5, -71, 0, 3, 0, 7, 0, 11, 0, 71, 1, 30, 64, 11, 11, 16, 18, 21, 52, 5,
-<a name="l09709"></a>09709 16, 18, 21, 52, 1, -72, -1, -16, 64, 11, 18, 21, 52, 65, 32, 16, 17, 52, 0, 2, 3, -72, 3, 2, -75,
-<a name="l09710"></a>09710 1, 1, 11, 4, 6, 7, -72, 3, 2, -76, 5, 5, 8, 10, 11, -72, 3, 2, 64, 21, 9, 9, 67, 16, 25,
-<a name="l09711"></a>09711 30, 29, 53, 54, 46, 38, 30, 39, 39, 66, 54, 54, 67, 66, 66, 67, -70, 3, 9, 0, 59, 2, -17, -78, 12,
-<a name="l09712"></a>09712 12, 46, -72, 2, -17, -78, 21, 21, 30, -70, 2, -17, 0, 29, 2, -21, -78, 1, 3, 2, -72, 3, 1, -75, 0,
-<a name="l09713"></a>09713 0, 8, 5, 7, 4, -72, 3, 1, -76, 6, 6, 9, 11, 10, -72, 3, 1, 64, 10, 8, 8, 53, 16, 62, 54,
-<a name="l09714"></a>09714 25, 39, 50, 53, -70, 2, -6, 0, 54, -1, -64, -73, 9, 14, 52, 54, 54, 66, 35, 38, -70, 2, -6, 0, 39,
-<a name="l09715"></a>09715 -1, -64, 64, 17, 9, 10, 52, 39, 39, 66, 29, 67, 67, 66, 64, 12, 14, 52, 66, 66, 62, -70, 3, 5, 0,
-<a name="l09716"></a>09716 12, 2, -16, -79, 73, 29, 47, 16, -11, -3, 50, 47, 43, 25, 57, 47, 17, 18, 57, 47, 43, -12, 57, 18, 57,
-<a name="l09717"></a>09717 47, 43, -12, 57, 17, 57, 17, 18, 57, 24, 18, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -3,
-<a name="l09718"></a>09718 57, 57, 0, 63, -19, 60, 16, -19, 60, 16, -19, 63, 57, 47, 18, 57, 47, 17, 57, 47, 18, 57, 17, 18, 57,
-<a name="l09719"></a>09719 17, 18, 57, 57, 17, 51, 47, -19, 57, 57, 51, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43,
-<a name="l09720"></a>09720 43, 43, 43, 1, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 1, 35, 34, 38, 39, 6, 7, 6, 35, 35,
-<a name="l09721"></a>09721 34, 39, 38, 39, 6, 6, 35, 35, 53, 51, 50, 55, 54, 53, 52, 38, 39, 55, 22, 23, 22, 23, 22, 51, 51,
-<a name="l09722"></a>09722 50, 55, 54, 53, 52, 38, 39, 55, 23, 22, 23, 22, 51, 50, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21,
-<a name="l09723"></a>09723 3, 33, 77, -96, 74, 1, 104, 78, -94, 75, 65, 76, -94, 74, 1, -29, 77, 64, 92, 38, 47, 35, 51, 89, 65,
-<a name="l09724"></a>09724 52, 52, 34, 50, 48, 80, 90, -63, -63, 81, 35, 58, 6, 8, 41, 28, 18, 32, 38, 46, 64, 67, 75, 36, 40,
-<a name="l09725"></a>09725 8, 7, 42, 21, 27, 39, 34, 58, 27, 33, 41, 7, 42, 65, 41, 15, 22, 5, 99, -110, 86, -110, -2, -8, -112,
-<a name="l09726"></a>09726 86, -113, -81, -111, 84, -111, -4, 122, 35, 32, 37, 12, 18, 20, 13, 30, 36, 27, -82, 14, 23, 69, 29, 58, 36,
-<a name="l09727"></a>09727 60, 92, 42, 73, 37, 45, 23, 26, 57, 31, 58, 34, 60, 94, 111, 43, 38, 33, 26, 56, 62, 10, 55, 109, 62,
-<a name="l09728"></a>09728 45, 68, 113, -1, -1, -1, -70, 1, 37, 4, 63, 5, -71, 0, 22, 3, -73, 0, 0, 0, 2, 0, 62, -1, 108,
-<a name="l09729"></a>09729 8, -55, 3, 87, 0, 49, 0, 62, 0, -83, -71, 0, 20, -1, -42, 64, 14, 14, 17, 52, 23, 52, 11, 17, 52,
-<a name="l09730"></a>09730 28, 52, 11, 17, 52, 53, -72, 2, -17, -78, 45, 45, 29, -70, 2, -17, 0, 30, 3, 9, -78, 15, 21, 14, -70,
-<a name="l09731"></a>09731 3, 7, 0, 60, 2, -17, -78, 0, 0, 34, -66, 2, -17, 0, 1, 2, -21, 0, 21, 2, -17, 0, 5, 3, 17,
-<a name="l09732"></a>09732 -73, 59, 50, 1, 30, 30, 29, 29, 25, -72, 3, 5, -74, 1, 34, 34, 1, 1, 18, 50, 65, 10, 2, -4, 0,
-<a name="l09733"></a>09733 64, 0, 0, 2, -16, 0, 64, 0, 15, 2, -5, 0, 32, 0, 14, -1, -64, -75, 9, 11, 52, 14, 14, 18, -70,
-<a name="l09734"></a>09734 3, 3, 0, 9, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -19, 17, 57, 47, 51, 47,
-<a name="l09735"></a>09735 16, -3, 50, 47, 25, 57, 47, 17, 18, 57, 0, 24, 63, -19, 63, -19, 60, 16, -19, 63, 18, 57, 63, -3, 57,
-<a name="l09736"></a>09736 47, -19, 49, 48, 1, 43, 43, 43, 1, 33, 6, 7, 6, 33, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6,
-<a name="l09737"></a>09737 6, 21, 20, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 51, 50, 55, 54, 55, 54, 55,
-<a name="l09738"></a>09738 54, 55, 54, 51, 50, 23, 22, 21, 7, 52, 38, 35, 34, 7, 6, 7, 6, 7, 33, 50, 54, 8, -55, -5, 92,
-<a name="l09739"></a>09739 30, 114, -114, -2, -35, -56, 106, 116, 42, 36, 22, 54, 40, 70, 45, -79, -92, -64, -105, -68, 37, 29, 53, 83, 50,
-<a name="l09740"></a>09740 18, 25, 18, 119, 102, 88, 97, -108, 29, 82, 65, 74, 89, -119, 68, 63, -94, 123, 82, 72, 89, 63, 97, 73, 72,
-<a name="l09741"></a>09741 1, -51, 96, 114, 1, 37, -48, 104, -127, 70, 77, -97, 86, -80, 89, 54, 112, 18, -112, -90, 69, 124, -127, 67, 83,
-<a name="l09742"></a>09742 -107, 100, 90, 71, 65, -51, 82, 63, 89, -102, 38, 33, 71, 103, 19, 52, 22, 25, 79, 73, -124, 2, 49, 55, 32,
-<a name="l09743"></a>09743 23, 50, 38, 38, 39, 0, -1, -1, 0, 62, -1, 108, 8, -55, 3, 87, 0, 22, 3, -71, 0, 0, 0, 2, -1,
-<a name="l09744"></a>09744 -70, 1, 37, 6, -59, 3, 62, 0, 37, 0, 48, 0, 91, -73, 18, 19, 5, 10, 9, 19, 19, 33, -72, 2, -17,
-<a name="l09745"></a>09745 -78, 41, 41, 45, -70, 2, -17, 0, 23, 2, -17, -78, 1, 1, 10, -70, 2, -17, 0, 9, 2, -21, -76, 45, 5,
-<a name="l09746"></a>09746 38, 15, 18, -72, 2, -6, -77, 19, 19, 9, 38, -70, 2, -4, 0, 0, 2, -16, -79, 50, 9, 47, 16, -11, -19,
-<a name="l09747"></a>09747 25, 17, 57, 47, -12, 57, 18, 57, 57, 0, 24, 63, -19, 60, 16, -19, -3, 50, 47, -19, 57, 47, 17, 18, 57,
-<a name="l09748"></a>09748 17, 57, 49, 48, 1, 33, 34, 39, 38, 39, 6, 6, 35, 35, 53, 51, 50, 55, 54, 53, 52, 38, 39, 55, 22,
-<a name="l09749"></a>09749 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 21, 7, 52, 38, 35, 34, 7, 6, 7,
-<a name="l09750"></a>09750 33, 50, 54, 6, -59, -5, 78, 54, 49, 37, 50, 42, 84, 92, -63, -63, 81, 35, 58, 7, 7, 41, 35, 61, 65,
-<a name="l09751"></a>09751 88, 84, 113, 122, 88, -113, 32, 81, 66, 74, 88, -120, 69, 64, -93, 122, 81, 100, -114, 113, 112, 1, -51, 109, 100,
-<a name="l09752"></a>09752 1, 37, 18, 14, 31, 36, 27, -82, 14, 23, 69, 29, 59, 35, 60, -120, 74, 79, 38, 41, 63, 102, 20, 52, 22,
-<a name="l09753"></a>09753 25, 79, 73, -124, 2, 49, 55, 67, 57, 57, 38, 0, -1, -1, -1, -70, 1, 37, 6, -59, 3, 62, 0, 22, 3,
-<a name="l09754"></a>09754 -69, 0, 0, 0, 3, 0, 62, -1, 108, 8, -55, 4, -71, 0, 3, 0, 53, 0, 66, 0, -52, -71, 0, 24, -1,
-<a name="l09755"></a>09755 -42, 64, 16, 14, 17, 52, 27, 52, 11, 17, 52, 32, 52, 11, 17, 52, 0, 2, 3, -72, 3, 2, -77, 1, 1,
-<a name="l09756"></a>09756 34, 57, -72, 2, -17, -78, 49, 49, 33, -70, 2, -17, 0, 34, 3, 9, -78, 19, 25, 18, -70, 3, 7, 0, 64,
-<a name="l09757"></a>09757 2, -17, -78, 4, 4, 38, -66, 2, -17, 0, 5, 2, -21, 0, 25, 2, -17, 0, 9, 3, 17, -78, 1, 3, 2,
-<a name="l09758"></a>09758 -72, 3, 1, 64, 10, 0, 0, 63, 54, 5, 34, 34, 33, 33, 29, -72, 3, 5, -74, 5, 38, 38, 5, 5, 22,
-<a name="l09759"></a>09759 54, 65, 10, 2, -4, 0, 64, 0, 4, 2, -16, 0, 68, 0, 19, 2, -5, 0, 32, 0, 18, -1, -64, -75, 9,
-<a name="l09760"></a>09760 11, 52, 18, 18, 22, -70, 3, 3, 0, 13, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26,
-<a name="l09761"></a>09761 -19, 17, 57, 47, 51, 47, 16, -3, 50, 47, 25, 57, 47, 17, 18, 57, 24, 57, 47, -3, 57, 57, 0, 63, -19,
-<a name="l09762"></a>09762 63, -19, 60, 16, -19, 63, 18, 57, 63, -3, 57, 47, -19, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43,
-<a name="l09763"></a>09763 1, 7, 39, 55, 1, 33, 6, 7, 6, 33, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22,
-<a name="l09764"></a>09764 51, 50, 55, 54, 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 51, 50, 55, 54, 55, 54, 55, 54, 55, 54, 51,
-<a name="l09765"></a>09765 50, 23, 22, 21, 7, 52, 38, 35, 34, 7, 6, 7, 6, 7, 33, 50, 54, 6, 47, 76, -94, 74, 3, 62, -5,
-<a name="l09766"></a>09766 92, 30, 114, -114, -2, -35, -56, 106, 116, 42, 36, 22, 54, 40, 70, 45, -79, -92, -64, -105, -68, 37, 29, 53, 83,
-<a name="l09767"></a>09767 50, 18, 25, 18, 119, 102, 88, 97, -108, 29, 82, 65, 74, 89, -119, 68, 63, -94, 123, 82, 72, 89, 63, 97, 73,
-<a name="l09768"></a>09768 72, 1, -51, 96, 114, 4, 100, -111, 84, -110, -4, 108, -48, 104, -127, 70, 77, -97, 86, -80, 89, 54, 112, 18, -112,
-<a name="l09769"></a>09769 -90, 69, 124, -127, 67, 83, -107, 100, 90, 71, 65, -51, 82, 63, 89, -102, 38, 33, 71, 103, 19, 52, 22, 25, 79,
-<a name="l09770"></a>09770 73, -124, 2, 49, 55, 32, 23, 50, 38, 38, 39, -1, -1, 0, 62, -1, 108, 8, -55, 4, -71, 0, 22, 3, -67,
-<a name="l09771"></a>09771 0, 0, 0, 3, -1, -70, 1, 37, 6, -59, 4, -71, 0, 3, 0, 41, 0, 52, 0, 122, -78, 0, 2, 3, -72,
-<a name="l09772"></a>09772 3, 2, 64, 11, 1, 1, 37, 22, 23, 9, 14, 13, 23, 23, 37, -72, 2, -17, -78, 45, 45, 49, -70, 2, -17,
-<a name="l09773"></a>09773 0, 27, 2, -17, -78, 5, 5, 14, -70, 2, -17, 0, 13, 2, -21, -78, 1, 3, 2, -72, 3, 1, -74, 0, 0,
-<a name="l09774"></a>09774 49, 9, 42, 19, 22, -72, 2, -6, -77, 23, 23, 13, 42, -70, 2, -4, 0, 4, 2, -16, -79, 54, 13, 47, 16,
-<a name="l09775"></a>09775 -11, -19, 25, 17, 57, 47, -12, 57, 18, 57, 57, 24, 57, 47, -3, 57, 57, 0, 63, -19, 60, 16, -19, -3, 50,
-<a name="l09776"></a>09776 47, -19, 57, 47, 17, 18, 57, 17, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 7, 39, 55, 1, 33, 34, 39,
-<a name="l09777"></a>09777 38, 39, 6, 6, 35, 35, 53, 51, 50, 55, 54, 53, 52, 38, 39, 55, 22, 23, 22, 51, 50, 55, 54, 55, 54,
-<a name="l09778"></a>09778 55, 54, 55, 54, 51, 50, 23, 22, 21, 7, 52, 38, 35, 34, 7, 6, 7, 33, 50, 54, 4, 73, 76, -94, 74,
-<a name="l09779"></a>09779 3, 32, -5, 78, 54, 49, 37, 50, 42, 84, 92, -63, -63, 81, 35, 58, 7, 7, 41, 35, 61, 65, 88, 84, 113,
-<a name="l09780"></a>09780 122, 88, -113, 32, 81, 66, 74, 88, -120, 69, 64, -93, 122, 81, 100, -114, 113, 112, 1, -51, 109, 100, 4, 100, -111,
-<a name="l09781"></a>09781 84, -110, -4, 108, 18, 14, 31, 36, 27, -82, 14, 23, 69, 29, 59, 35, 60, -120, 74, 79, 38, 41, 63, 102, 20,
-<a name="l09782"></a>09782 52, 22, 25, 79, 73, -124, 2, 49, 55, 67, 57, 57, 38, -1, -1, -1, -70, 1, 37, 6, -59, 4, -71, 0, 22,
-<a name="l09783"></a>09783 3, -65, 0, 0, 0, 2, -1, -70, 1, 37, 4, -89, 6, 89, 0, 45, 0, 57, 0, -115, -71, 0, 31, -1, -16,
-<a name="l09784"></a>09784 64, 13, 15, 17, 52, 37, 7, 49, 55, 17, 16, 24, 27, 41, 30, -67, 2, -17, 0, 20, 0, 24, 3, 11, 0,
-<a name="l09785"></a>09785 41, 2, -17, -76, 49, 49, 55, 55, 2, -70, 2, -17, 0, 1, 2, -21, 64, 16, 37, 33, 55, 7, 10, 1, 27,
-<a name="l09786"></a>09786 24, 30, 20, 20, 17, 17, 24, 24, 16, -72, 3, 18, -78, 30, 30, 33, -72, 3, 18, -77, 10, 10, 1, 46, -70,
-<a name="l09787"></a>09787 2, -4, 0, 0, 2, -16, -79, 59, 1, 47, 16, -11, -19, 17, 57, 47, -19, 51, 47, -19, 51, 47, 50, 47, 25,
-<a name="l09788"></a>09788 57, 47, 17, 18, 57, 17, 18, 57, 57, 17, 57, 0, 24, 63, -3, 60, 17, 51, 47, -19, 63, 51, -19, 17, 57,
-<a name="l09789"></a>09789 17, 57, 57, 17, 18, 57, 57, 49, 48, 1, 43, 1, 33, 53, 55, 50, 55, 54, 55, 54, 54, 53, 52, 39, 38,
-<a name="l09790"></a>09790 39, 38, 39, 39, 54, 54, 55, 22, 23, 22, 23, 6, 6, 7, 38, 39, 39, 22, 22, 21, 20, 7, 6, 7, 54,
-<a name="l09791"></a>09791 55, 54, 51, 50, 23, 22, 21, 7, 52, 38, 35, 34, 7, 6, 7, 6, 7, 33, 50, 4, -89, -5, 19, -103, 68,
-<a name="l09792"></a>09792 59, 68, 86, 18, 22, 20, 15, 30, 16, 26, 62, 7, 27, 24, 16, 57, 47, 73, 10, 10, 14, 7, 30, 13, 35,
-<a name="l09793"></a>09793 45, 14, 5, 13, -81, 49, -108, 106, -121, 67, 61, -98, 105, 98, 73, 95, 78, 88, 65, 69, 1, -77, -20, 1, 37,
-<a name="l09794"></a>09794 -82, 1, 18, 21, 53, 44, 101, 47, 107, -127, 94, 127, 66, 95, 31, 60, 112, 52, 47, 26, 21, 7, 103, 56, 41,
-<a name="l09795"></a>09795 1, 9, 4, 117, -9, 84, 71, 87, 31, 65, 101, 23, 70, 79, 72, -123, 2, 51, 53, 32, 26, 46, 34, 43, -1,
-<a name="l09796"></a>09796 -1, -1, -70, 1, 37, 4, -89, 6, 89, 0, 22, 3, -63, 0, 0, -1, -1, -1, -70, 1, 37, 4, -89, 6, 89,
-<a name="l09797"></a>09797 0, 22, 3, -63, 0, 0, -1, -1, -1, -70, 1, 37, 4, -89, 6, 89, 0, 22, 3, -63, 0, 0, 0, 3, -1,
-<a name="l09798"></a>09798 -70, 1, 37, 4, -89, 6, 89, 0, 3, 0, 49, 0, 61, 0, -75, -71, 0, 35, -1, -16, -75, 15, 17, 52, 0,
-<a name="l09799"></a>09799 2, 3, -72, 3, 2, 64, 13, 1, 1, 45, 41, 11, 53, 59, 21, 20, 28, 31, 45, 34, -67, 2, -17, 0, 24,
-<a name="l09800"></a>09800 0, 28, 3, 11, 0, 45, 2, -17, -76, 53, 53, 59, 59, 6, -70, 2, -17, 0, 5, 2, -21, -78, 1, 3, 2,
-<a name="l09801"></a>09801 -72, 3, 1, 64, 25, 0, 64, 9, 11, 52, 0, 0, 50, 28, 41, 37, 59, 11, 14, 5, 31, 28, 34, 24, 24,
-<a name="l09802"></a>09802 21, 21, 28, 28, 20, -72, 3, 18, -78, 34, 34, 37, -72, 3, 18, -77, 14, 14, 5, 50, -70, 2, -4, 0, 4,
-<a name="l09803"></a>09803 2, -16, -79, 63, 5, 47, 16, -11, -19, 17, 57, 47, -19, 51, 47, -19, 51, 47, 50, 47, 25, 57, 47, 17, 18,
-<a name="l09804"></a>09804 57, 17, 18, 57, 57, 17, 57, 24, 17, 18, 57, 47, 43, -3, 57, 57, 0, 63, -3, 60, 17, 51, 47, -19, 63,
-<a name="l09805"></a>09805 51, -19, 17, 57, 17, 57, 57, 17, 18, 57, 57, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 1, 7, 39, 55,
-<a name="l09806"></a>09806 1, 33, 53, 55, 50, 55, 54, 55, 54, 54, 53, 52, 39, 38, 39, 38, 39, 39, 54, 54, 55, 22, 23, 22, 23,
-<a name="l09807"></a>09807 6, 6, 7, 38, 39, 39, 22, 22, 21, 20, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 21, 7, 52, 38, 35,
-<a name="l09808"></a>09808 34, 7, 6, 7, 6, 7, 33, 50, 3, -105, 77, -94, 74, 1, -75, -5, 19, -103, 68, 59, 68, 86, 18, 22, 20,
-<a name="l09809"></a>09809 15, 30, 16, 26, 62, 7, 27, 24, 16, 57, 47, 73, 10, 10, 14, 7, 30, 13, 35, 45, 14, 5, 13, -81, 49,
-<a name="l09810"></a>09810 -108, 106, -121, 67, 61, -98, 105, 98, 73, 95, 78, 88, 65, 69, 1, -77, -20, 4, -56, -111, 84, -110, -4, 8, -82,
-<a name="l09811"></a>09811 1, 18, 21, 53, 44, 101, 47, 107, -127, 94, 127, 66, 95, 31, 60, 112, 52, 47, 26, 21, 7, 103, 56, 41, 1,
-<a name="l09812"></a>09812 9, 4, 117, -9, 84, 71, 87, 31, 65, 101, 23, 70, 79, 72, -123, 2, 51, 53, 32, 26, 46, 34, 43, -1, -1,
-<a name="l09813"></a>09813 -1, -70, 1, 37, 4, -89, 6, 89, 0, 22, 3, -59, 0, 0, -1, -1, -1, -70, 1, 37, 4, -89, 6, 89, 0,
-<a name="l09814"></a>09814 22, 3, -59, 0, 0, -1, -1, -1, -70, 1, 37, 4, -89, 6, 89, 0, 22, 3, -59, 0, 0, 0, 1, 0, 42,
-<a name="l09815"></a>09815 -2, 78, 4, 32, 4, 70, 0, 55, 0, -89, -77, -128, 43, 1, 29, -72, -1, -32, -77, 14, 17, 52, 49, -72, -1,
-<a name="l09816"></a>09816 -52, -77, 11, 17, 52, 48, -72, -1, -32, 64, 9, 11, 17, 52, 13, 32, 14, 17, 52, 13, -70, 2, -17, 0, 35,
-<a name="l09817"></a>09817 -1, -38, -73, 14, 17, 52, 35, 35, 40, 0, 55, -68, 2, -17, 0, 1, 3, 6, 0, 21, 2, -17, -78, 25, 25,
-<a name="l09818"></a>09818 39, -70, 2, -17, 0, 40, 3, 7, 64, 20, 13, 52, 14, 17, 52, 35, 13, 39, 31, 1, 0, 46, 25, 25, 39,
-<a name="l09819"></a>09819 55, 0, 0, 40, 39, -72, -1, -64, -74, 12, 13, 52, 39, 39, 57, 31, -72, 3, 12, -78, 17, 17, 46, -70, 3,
-<a name="l09820"></a>09820 12, 0, 7, 1, 31, -123, 47, -19, 51, 47, -19, 17, 51, 47, 43, 51, 51, 47, 60, 17, 57, 47, 17, 18, 57,
-<a name="l09821"></a>09821 17, 18, 57, 57, 43, 0, 63, -3, 50, 47, -19, 63, -19, 57, 17, 57, 47, 43, -19, 43, 49, 48, 1, 43, 43,
-<a name="l09822"></a>09822 43, 93, 1, 7, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50,
-<a name="l09823"></a>09823 23, 22, 23, 34, 7, 6, 7, 6, 21, 20, 23, 22, 23, 54, 55, 54, 55, 7, 6, 7, 6, 7, 6, 21, 20,
-<a name="l09824"></a>09824 23, 22, 23, 22, 51, 50, 54, 55, 4, 32, -3, -48, 114, -59, 107, -121, 38, 31, 58, 28, 70, 96, 37, 82, 89,
-<a name="l09825"></a>09825 102, -111, 65, 73, 49, 74, 98, 103, -123, 82, 100, 115, 97, 123, 100, 95, 106, 114, 42, -48, 92, -70, 99, 127, 106,
-<a name="l09826"></a>09826 92, -77, -114, -36, 47, 94, 47, -2, -11, -89, 17, 29, 87, 109, -52, 124, 99, 81, 72, 34, 69, 48, 35, 77, 118,
-<a name="l09827"></a>09827 106, 102, 117, 38, 25, 58, 13, 17, 32, 39, 57, 61, 55, 46, 19, 54, 38, 42, 28, -100, 81, 43, 88, 92, 118,
-<a name="l09828"></a>09828 -121, -115, 81, 70, 29, 23, 2, 1, 0, 0, 1, 0, 54, -2, 78, 3, -29, 3, 115, 0, 52, 0, -79, 64, 9,
-<a name="l09829"></a>09829 -24, 4, 1, 5, 32, 12, 14, 52, 49, -72, -1, -70, -77, 9, 17, 52, 48, -72, -1, -52, 64, 16, 9, 17, 52,
-<a name="l09830"></a>09830 11, 10, 27, 10, 2, 40, 31, 13, 3, 19, 35, 0, 52, -70, 2, -17, 0, 1, 3, 6, -75, 16, 16, 23, 19,
-<a name="l09831"></a>09831 19, 23, -72, -1, -64, -75, 13, 17, 52, 23, 23, 35, -70, 2, -17, 0, 37, 2, -21, 64, 15, 52, 1, 0, 46,
-<a name="l09832"></a>09832 40, 31, 13, 27, 27, 36, 31, 13, 13, 18, 31, -72, -1, -64, 64, 9, 15, 17, 52, 31, 31, 18, 0, 0, 36,
-<a name="l09833"></a>09833 -69, 2, -16, 0, 54, 0, 18, 2, -7, -78, 19, 19, 46, -70, 3, 12, 0, 7, 1, 30, -123, 47, -19, 51, 47,
-<a name="l09834"></a>09834 -19, 16, -11, 50, 47, 17, 57, 47, 43, 18, 57, 47, 17, 18, 57, 47, 17, 18, 57, 17, 18, 57, 57, 0, 63,
-<a name="l09835"></a>09835 -3, 50, 47, 43, 57, 47, 18, 57, 47, 63, -19, 57, 17, 18, 23, 57, 49, 48, 1, 93, 43, 43, 43, 0, 93,
-<a name="l09836"></a>09836 1, 7, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 38, 38, 35, 34, 7, 35, 54, 55, 54, 51, 50,
-<a name="l09837"></a>09837 23, 22, 21, 20, 7, 6, 7, 22, 22, 51, 51, 21, 35, 34, 38, 39, 6, 7, 6, 7, 6, 21, 20, 23, 22,
-<a name="l09838"></a>09838 23, 22, 51, 3, -29, -54, -69, 107, -62, 110, -115, 53, 42, 84, 40, 107, 10, 37, 21, 26, 25, 17, 21, 23, 56,
-<a name="l09839"></a>09839 -128, 86, 62, 69, 38, 35, 22, 56, 103, 77, 92, 92, -103, -87, 51, 73, 59, 80, 45, 56, -87, -126, -29, 120, -55,
-<a name="l09840"></a>09840 -2, -18, -96, 17, 31, 89, 115, -49, -119, 117, 93, 94, 45, 100, 34, 32, 35, 105, 40, 96, 42, 47, 75, 49, 34,
-<a name="l09841"></a>09841 28, 18, 67, 56, -82, 92, 106, 47, 50, 68, 65, 81, 75, -87, 93, 71, 25, 13, 0, 1, -1, -70, 1, 37, 3,
-<a name="l09842"></a>09842 -61, 3, -57, 0, 29, 0, 110, -71, 0, 22, -1, -32, -73, 16, 17, 52, 17, 18, 18, 0, 21, -72, 2, -17, -77,
-<a name="l09843"></a>09843 47, 13, 1, 13, -70, 3, 4, 0, 0, 2, -17, -74, 0, 1, 1, 1, 1, 6, 27, -68, 2, -17, 0, 6, 2,
-<a name="l09844"></a>09844 -17, 0, 5, 2, -21, 64, 17, 18, 27, 17, 7, 52, 13, 17, 52, 7, 10, 17, 17, 1, 0, 0, 31, 24, -72,
-<a name="l09845"></a>09845 3, 0, -78, 10, 10, 5, 47, 51, 47, -19, 17, 51, 47, 51, 51, 47, 17, 57, 43, 17, 57, 57, 0, 63, -19,
-<a name="l09846"></a>09846 -19, 18, 57, 47, 93, -19, 63, 93, -19, 17, 57, 47, 57, 49, 48, 1, 43, 1, 7, 6, 4, 35, 35, 53, 51,
-<a name="l09847"></a>09847 38, 38, 53, 52, 54, 51, 50, 23, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 23, 54, 54, 3, -61, 69,
-<a name="l09848"></a>09848 -105, -2, 115, -89, -7, -16, 29, 36, -59, -101, 123, 80, 34, 81, 19, 69, 110, 59, -118, -99, 99, 78, -92, -46, 2,
-<a name="l09849"></a>09849 93, -74, 55, 75, -82, 47, 119, 56, 118, -96, 60, 25, 98, 17, 19, 19, 61, 50, 49, 121, 47, 25, 47, 0, 0,
-<a name="l09850"></a>09850 1, -1, -70, 1, 37, 3, 39, 3, 88, 0, 40, 0, 106, 64, 12, 16, 36, 23, 5, 40, 0, 19, 19, 28, 23,
-<a name="l09851"></a>09851 23, 28, -72, -1, -64, -75, 14, 17, 52, 28, 28, 40, -72, 2, -17, -78, 0, 0, 11, -70, 2, -17, 0, 10, 2,
-<a name="l09852"></a>09852 -21, 64, 15, 5, 36, 16, 16, 36, 36, 22, 80, 32, -128, 32, 2, 32, 32, 0, -69, 2, -16, 0, 42, 0, 22,
-<a name="l09853"></a>09853 2, -7, -78, 23, 23, 10, 47, 51, 47, -19, 16, -12, 50, 47, 93, 18, 57, 47, 57, 47, 18, 57, 0, 63, -19,
-<a name="l09854"></a>09854 60, 16, -3, 50, 47, 43, 57, 47, 18, 57, 47, 17, 18, 57, 17, 57, 57, 49, 48, 1, 35, 34, 39, 38, 39,
-<a name="l09855"></a>09855 6, 7, 6, 35, 35, 53, 51, 50, 55, 54, 55, 39, 38, 35, 34, 6, 7, 35, 53, 52, 55, 54, 51, 50, 23,
-<a name="l09856"></a>09856 22, 21, 20, 7, 6, 7, 22, 22, 51, 51, 3, 39, -109, 65, 67, 80, 36, 67, 86, 105, -122, 90, 90, 84, 72,
-<a name="l09857"></a>09857 82, 79, 42, 32, 40, 18, 28, 17, 21, 58, 53, -125, 113, 71, 93, 37, 27, 72, 16, 91, 31, -109, 1, 37, 31,
-<a name="l09858"></a>09858 37, 66, 60, 33, 41, -82, 18, 21, 46, 54, 38, 13, 22, 59, 110, 41, 37, 30, 39, 81, 43, 46, 34, 60, 24,
-<a name="l09859"></a>09859 32, 0, 0, 2, 0, 42, -2, 78, 4, 32, 5, -27, 0, 3, 0, 59, 0, -59, -77, -128, 47, 1, 33, -72, -1,
-<a name="l09860"></a>09860 -32, -77, 14, 17, 52, 53, -72, -1, -52, -77, 11, 17, 52, 52, -72, -1, -32, -75, 11, 17, 52, 0, 2, 3, -72,
-<a name="l09861"></a>09861 3, 2, 64, 9, 1, 1, 25, 17, 32, 14, 17, 52, 17, -70, 2, -17, 0, 39, -1, -38, -73, 14, 17, 52, 39,
-<a name="l09862"></a>09862 39, 44, 4, 59, -68, 2, -17, 0, 5, 3, 6, 0, 25, 2, -17, -78, 29, 29, 43, -70, 2, -17, 0, 44, 3,
-<a name="l09863"></a>09863 7, -78, 1, 3, 2, -72, 3, 1, 64, 22, 0, 0, 17, 52, 14, 17, 52, 39, 17, 43, 35, 5, 4, 50, 29,
-<a name="l09864"></a>09864 29, 43, 59, 4, 4, 44, 43, -72, -1, -64, -74, 12, 13, 52, 43, 43, 61, 35, -72, 3, 12, -78, 21, 21, 50,
-<a name="l09865"></a>09865 -70, 3, 12, 0, 11, 1, 31, -123, 47, -19, 51, 47, -19, 17, 51, 47, 43, 51, 51, 47, 60, 17, 57, 47, 17,
-<a name="l09866"></a>09866 18, 57, 17, 18, 57, 57, 43, 57, 47, -3, 57, 57, 0, 63, -3, 50, 47, -19, 63, -19, 57, 17, 57, 47, 43,
-<a name="l09867"></a>09867 -19, 43, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 93, 1, 7, 39, 55, 1, 7, 34, 39, 38, 39,
-<a name="l09868"></a>09868 38, 53, 52, 55, 54, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 34, 7, 6, 7, 6,
-<a name="l09869"></a>09869 21, 20, 23, 22, 23, 54, 55, 54, 55, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 51, 50, 54, 55,
-<a name="l09870"></a>09870 1, -14, 81, -100, 81, 2, -54, -3, -48, 114, -59, 107, -121, 38, 31, 58, 28, 70, 96, 37, 82, 89, 102, -111, 65,
-<a name="l09871"></a>09871 73, 49, 74, 98, 103, -123, 82, 100, 115, 97, 123, 100, 95, 106, 114, 42, -48, 92, -70, 99, 127, 106, 92, -77, -114,
-<a name="l09872"></a>09872 -36, 47, 94, 47, 5, -112, -112, 83, -110, -7, 16, -89, 17, 29, 87, 109, -52, 124, 99, 81, 72, 34, 69, 48, 35,
-<a name="l09873"></a>09873 77, 118, 106, 102, 117, 38, 25, 58, 13, 17, 32, 39, 57, 61, 55, 46, 19, 54, 38, 42, 28, -100, 81, 43, 88,
-<a name="l09874"></a>09874 92, 118, -121, -115, 81, 70, 29, 23, 2, 1, 0, 0, 2, 0, 54, -2, 78, 3, -29, 5, 29, 0, 3, 0, 56,
-<a name="l09875"></a>09875 0, -44, 64, 9, -24, 8, 1, 9, 32, 12, 14, 52, 53, -72, -1, -70, -77, 9, 17, 52, 52, -72, -1, -52, 64,
-<a name="l09876"></a>09876 11, 9, 17, 52, 11, 14, 27, 14, 2, 0, 2, 3, -72, 3, 2, 64, 11, 1, 1, 27, 44, 35, 17, 3, 23,
-<a name="l09877"></a>09877 39, 4, 56, -70, 2, -17, 0, 5, 3, 6, -75, 20, 20, 27, 23, 23, 27, -72, -1, -64, -75, 13, 17, 52, 27,
-<a name="l09878"></a>09878 27, 39, -70, 2, -17, 0, 41, 2, -21, -78, 1, 3, 2, -72, 3, 1, 64, 19, 0, 0, 31, 35, 56, 5, 4,
-<a name="l09879"></a>09879 50, 44, 35, 17, 31, 31, 40, 35, 17, 17, 22, 35, -72, -1, -64, 64, 9, 15, 17, 52, 35, 35, 22, 4, 4,
-<a name="l09880"></a>09880 40, -69, 2, -16, 0, 58, 0, 22, 2, -7, -78, 23, 23, 50, -70, 3, 12, 0, 11, 1, 30, -123, 47, -19, 51,
-<a name="l09881"></a>09881 47, -19, 16, -11, 50, 47, 17, 57, 47, 43, 18, 57, 47, 17, 18, 57, 47, 17, 18, 57, 17, 18, 57, 57, 17,
-<a name="l09882"></a>09882 18, 57, 47, -3, 57, 57, 0, 63, -3, 50, 47, 43, 57, 47, 18, 57, 47, 63, -19, 57, 17, 18, 23, 57, 17,
-<a name="l09883"></a>09883 51, 47, -19, 57, 57, 49, 48, 1, 93, 43, 43, 43, 0, 93, 1, 7, 39, 55, 1, 7, 34, 39, 38, 39, 38,
-<a name="l09884"></a>09884 53, 52, 55, 54, 55, 54, 55, 38, 38, 35, 34, 7, 35, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7,
-<a name="l09885"></a>09885 22, 22, 51, 51, 21, 35, 34, 38, 39, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 51, 2, 87, 76, -94,
-<a name="l09886"></a>09886 75, 2, 47, -54, -69, 107, -62, 110, -115, 53, 42, 84, 40, 107, 10, 37, 21, 26, 25, 17, 21, 23, 56, -128, 86,
-<a name="l09887"></a>09887 62, 69, 38, 35, 22, 56, 103, 77, 92, 92, -103, -87, 51, 73, 59, 80, 45, 56, -87, -126, -29, 120, -55, 4, -56,
-<a name="l09888"></a>09888 -111, 84, -110, -7, -47, -96, 17, 31, 89, 115, -49, -119, 117, 93, 94, 45, 100, 34, 32, 35, 105, 40, 96, 42, 47,
-<a name="l09889"></a>09889 75, 49, 34, 28, 18, 67, 56, -82, 92, 106, 47, 50, 68, 65, 81, 75, -87, 93, 71, 25, 13, 0, 0, 2, -1,
-<a name="l09890"></a>09890 -70, 1, 37, 3, -61, 5, 29, 0, 3, 0, 33, 0, -111, -71, 0, 26, -1, -32, -75, 16, 17, 52, 0, 2, 3,
-<a name="l09891"></a>09891 -72, 3, 2, 64, 11, 15, 1, 1, 1, 1, 17, 21, 22, 22, 4, 25, -72, 2, -17, -77, 47, 17, 1, 17, -70,
-<a name="l09892"></a>09892 3, 4, 0, 4, 2, -17, -74, 0, 5, 1, 5, 5, 10, 31, -68, 2, -17, 0, 10, 2, -17, 0, 9, 2, -21,
-<a name="l09893"></a>09893 -78, 1, 3, 2, -72, 3, 1, 64, 19, 0, 0, 22, 31, 21, 11, 52, 13, 17, 52, 11, 14, 21, 21, 5, 4,
-<a name="l09894"></a>09894 4, 35, 28, -72, 3, 0, -78, 14, 14, 9, 47, 51, 47, -19, 17, 51, 47, 51, 51, 47, 17, 57, 43, 17, 57,
-<a name="l09895"></a>09895 57, 57, 47, -3, 57, 57, 0, 63, -19, -19, 18, 57, 47, 93, -19, 63, 93, -19, 17, 57, 47, 57, 17, 51, 47,
-<a name="l09896"></a>09896 93, -19, 57, 57, 49, 48, 1, 43, 1, 7, 39, 55, 1, 7, 6, 4, 35, 35, 53, 51, 38, 38, 53, 52, 54,
-<a name="l09897"></a>09897 51, 50, 23, 22, 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 23, 54, 54, 2, 31, 75, -93, 76, 2, 70, 69,
-<a name="l09898"></a>09898 -105, -2, 115, -89, -7, -16, 29, 36, -59, -101, 123, 80, 34, 81, 19, 69, 110, 59, -118, -99, 99, 78, -92, -46, 4,
-<a name="l09899"></a>09899 -56, -111, 84, -110, -3, 64, -74, 55, 75, -82, 47, 119, 56, 118, -96, 60, 25, 98, 17, 19, 19, 61, 50, 49, 121,
-<a name="l09900"></a>09900 47, 25, 47, 0, 2, -1, -70, 1, 37, 3, 39, 5, 29, 0, 3, 0, 44, 0, -118, -78, 0, 2, 3, -72, 3,
-<a name="l09901"></a>09901 2, 64, 15, 1, 1, 32, 20, 40, 27, 9, 44, 4, 23, 23, 32, 27, 27, 32, -72, -1, -64, -75, 14, 17, 52,
-<a name="l09902"></a>09902 32, 32, 44, -72, 2, -17, -78, 4, 4, 15, -70, 2, -17, 0, 14, 2, -21, -78, 1, 3, 2, -72, 3, 1, 64,
-<a name="l09903"></a>09903 18, 0, 0, 36, 9, 40, 20, 20, 40, 40, 26, 80, 36, -128, 36, 2, 36, 36, 4, -69, 2, -16, 0, 46, 0,
-<a name="l09904"></a>09904 26, 2, -7, -78, 27, 27, 14, 47, 51, 47, -19, 16, -11, 50, 47, 93, 18, 57, 47, 57, 47, 18, 57, 18, 57,
-<a name="l09905"></a>09905 47, -3, 57, 57, 0, 63, -19, 60, 16, -3, 50, 47, 43, 57, 47, 18, 57, 47, 17, 18, 57, 17, 57, 57, 17,
-<a name="l09906"></a>09906 51, 47, -19, 57, 57, 49, 48, 1, 7, 39, 55, 1, 35, 34, 39, 38, 39, 6, 7, 6, 35, 35, 53, 51, 50,
-<a name="l09907"></a>09907 55, 54, 55, 39, 38, 35, 34, 6, 7, 35, 53, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 22, 22,
-<a name="l09908"></a>09908 51, 51, 1, -46, 76, -94, 75, 1, -8, -109, 65, 67, 80, 36, 67, 86, 105, -122, 90, 90, 84, 72, 82, 79, 42,
-<a name="l09909"></a>09909 32, 40, 18, 28, 17, 21, 58, 53, -125, 113, 71, 93, 37, 27, 72, 16, 91, 31, -109, 4, -56, -111, 84, -110, -4,
-<a name="l09910"></a>09910 8, 31, 37, 66, 60, 33, 41, -82, 18, 21, 46, 54, 38, 13, 22, 59, 110, 41, 37, 30, 39, 81, 43, 46, 34,
-<a name="l09911"></a>09911 60, 24, 32, 0, 0, 3, 0, 39, 1, 37, 6, 79, 5, 115, 0, 3, 0, 35, 0, 46, 0, -81, -75, 9, 32,
-<a name="l09912"></a>09912 16, 17, 52, 21, -72, -1, -52, -77, 12, 17, 52, 20, -72, -1, -32, -75, 12, 17, 52, 0, 2, 3, -72, 3, 2,
-<a name="l09913"></a>09913 -77, 1, 1, 31, 36, -72, -1, -64, 64, 9, 16, 17, 52, 36, 36, 40, 16, 22, 15, 65, 9, 3, 4, 0, 40,
-<a name="l09914"></a>09914 2, -17, 0, 31, 3, 4, 0, 22, 2, -17, 0, 5, 2, -21, -78, 1, 3, 2, -72, 3, 1, -74, 0, 0, 43,
-<a name="l09915"></a>09915 23, 23, 36, 27, -72, 2, -13, -78, 43, 43, 36, 65, 10, 3, 16, 0, 64, 0, 4, 2, -16, 0, 48, 0, 16,
-<a name="l09916"></a>09916 2, -5, 0, 32, 0, 15, -1, -64, -75, 9, 11, 52, 15, 15, 19, -70, 3, 3, 0, 11, 1, 42, -123, 47, -3,
-<a name="l09917"></a>09917 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -3, 50, 47, -19, 18, 57, 47, 17, 57, 47, -3, 57, 57, 0, 63,
-<a name="l09918"></a>09918 -19, 63, -19, 63, 18, 57, 17, 57, 47, 43, 17, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 1, 7, 39,
-<a name="l09919"></a>09919 55, 1, 33, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21, 20, 4, 33, 33, 38, 39, 38, 53,
-<a name="l09920"></a>09920 52, 55, 54, 51, 50, 23, 22, 21, 39, 52, 39, 38, 35, 34, 6, 21, 20, 23, 22, 5, -120, 82, -94, 83, 1,
-<a name="l09921"></a>09921 104, -4, 107, -45, -127, -102, 79, 86, 51, 37, 18, 40, 43, 28, 1, 32, 1, 58, 2, -31, 117, 55, 63, 62, 70,
-<a name="l09922"></a>09922 85, 99, 44, 37, 104, 19, 23, 47, 34, 33, 41, 30, 5, 29, -108, 88, -110, -5, -78, 26, 31, 72, 78, -122, 89,
-<a name="l09923"></a>09923 119, 81, 40, 23, 87, 91, 37, -124, 126, 32, 42, 48, 71, 93, 106, 119, 117, 98, -75, 14, 87, 47, 56, 41, 37,
-<a name="l09924"></a>09924 49, 25, 18, -1, -1, 0, 39, 1, 37, 6, 79, 5, 115, 0, 22, 3, -47, 0, 0, 0, 3, -1, -70, 1, 37,
-<a name="l09925"></a>09925 2, 36, 5, -49, 0, 3, 0, 25, 0, 37, 0, 116, -78, 0, 2, 3, -72, 3, 2, 64, 9, 1, 1, 21, 26,
-<a name="l09926"></a>09926 30, 9, 35, 13, 21, -72, 2, -17, -78, 30, 30, 35, -72, 2, -17, -78, 13, 13, 6, -70, 2, -17, 0, 5, 2,
-<a name="l09927"></a>09927 -21, -78, 1, 3, 2, -72, 3, 1, 64, 11, 0, 0, 26, 32, 14, 17, 52, 9, 26, 7, 17, -72, 3, 12, -77,
-<a name="l09928"></a>09928 33, 33, 5, 7, -70, 3, 12, 0, 4, 2, -16, -79, 39, 5, 47, 16, -11, -19, 17, 57, 47, -19, 18, 57, 57,
-<a name="l09929"></a>09929 43, 57, 47, -3, 57, 57, 0, 63, -3, 50, 47, -3, 50, 47, -19, 17, 18, 57, 17, 57, 17, 51, 47, -19, 57,
-<a name="l09930"></a>09930 57, 49, 48, 1, 7, 39, 55, 1, 33, 53, 33, 52, 39, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 51,
-<a name="l09931"></a>09931 50, 23, 22, 21, 3, 38, 39, 38, 35, 34, 6, 21, 20, 51, 50, 54, 1, -97, 77, -95, 74, 1, 41, -3, -106,
-<a name="l09932"></a>09932 2, 21, 21, 52, 28, 46, 35, 73, 46, 53, 50, 56, 90, 122, 66, 55, -93, 14, 31, 42, 38, 27, 35, 88, 23,
-<a name="l09933"></a>09933 52, 5, 121, -110, 86, -110, -5, 86, -82, 89, 78, 17, 7, 12, 37, 42, 79, -117, 104, 116, -65, -98, -43, 1, 4,
-<a name="l09934"></a>09934 36, 37, 50, 45, 31, 80, 18, 0, 3, -1, -70, 1, 37, 2, 26, 5, -89, 0, 3, 0, 22, 0, 33, 0, 106,
-<a name="l09935"></a>09935 64, 11, 11, 12, 1, 25, 32, 16, 17, 52, 0, 2, 3, -72, 3, 2, -78, 1, 1, 18, -72, 2, -17, -75, 27,
-<a name="l09936"></a>09936 27, 10, 23, 23, 6, -70, 2, -17, 0, 5, 2, -21, -78, 1, 3, 2, -72, 3, 1, -74, 0, 0, 30, 10, 4,
-<a name="l09937"></a>09937 23, 14, -72, 3, 12, -77, 30, 30, 5, 23, -70, 3, 12, 0, 4, 2, -16, -79, 35, 5, 47, 16, -11, -19, 17,
-<a name="l09938"></a>09938 57, 47, -19, 17, 18, 57, 18, 57, 47, -3, 57, 57, 0, 63, -3, 50, 47, 57, 51, 47, -3, 50, 47, -19, 57,
-<a name="l09939"></a>09939 57, 49, 48, 1, 43, 93, 1, 7, 39, 55, 19, 33, 53, 33, 50, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51,
-<a name="l09940"></a>09940 50, 23, 22, 21, 39, 38, 39, 38, 35, 34, 6, 21, 20, 23, 22, 1, -61, 88, -116, 83, -24, -3, -96, 1, 87,
-<a name="l09941"></a>09941 62, 87, 51, -84, 51, 115, 55, 62, 89, 102, 53, 42, 90, 23, 21, 41, 58, 28, 40, 79, 28, 5, 75, -112, 96,
-<a name="l09942"></a>09942 -116, -5, 126, -82, 9, 15, 25, 22, 50, 120, 105, 93, 105, -126, 103, -116, 4, 80, 39, 75, 44, 30, 76, 26, 9,
-<a name="l09943"></a>09943 0, 4, 0, 70, -1, 103, 4, -89, 5, 119, 0, 3, 0, 7, 0, 53, 0, 66, 0, -47, -77, 84, 10, 1, 9,
-<a name="l09944"></a>09944 -72, -1, -32, -77, 14, 17, 52, 29, -72, -1, -32, 64, 11, 14, 17, 52, 33, 64, 9, 17, 52, 0, 2, 3, -72,
-<a name="l09945"></a>09945 3, 2, -76, 1, 1, 4, 6, 7, -72, 3, 2, -78, 5, 5, 49, -72, 2, -17, -78, 58, 58, 41, -72, 2, -17,
-<a name="l09946"></a>09946 -77, 64, 64, 21, 20, -68, 3, 7, 0, 31, 2, -17, 0, 12, 3, 17, -78, 1, 3, 0, -72, 3, 1, -76, 2,
-<a name="l09947"></a>09947 2, 5, 7, 6, -72, 3, 1, 64, 11, 4, 4, 54, 32, 13, 17, 52, 38, 54, 35, 45, -72, 2, -3, -77, 61,
-<a name="l09948"></a>09948 61, 27, 35, 65, 10, 3, 3, 0, 64, 0, 8, 2, -16, 0, 68, 0, 21, 2, -5, 0, 32, 0, 20, -1, -64,
-<a name="l09949"></a>09949 -75, 9, 11, 52, 20, 20, 27, -72, 3, 3, -77, 0, 16, 1, 16, -72, 1, 42, -123, 47, 93, -3, 50, 25, 47,
-<a name="l09950"></a>09950 43, 26, -19, 24, 16, -11, 26, -19, 17, 57, 47, -19, 18, 57, 57, 43, 57, 47, -3, 57, 57, 51, 47, -19, 57,
-<a name="l09951"></a>09951 57, 0, 63, -19, 63, 57, 57, 47, -19, 51, 47, -3, 50, 47, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1,
-<a name="l09952"></a>09952 43, 43, 43, 93, 1, 7, 39, 55, 7, 7, 39, 55, 1, 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55,
-<a name="l09953"></a>09953 23, 6, 7, 6, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 39, 6, 6, 35, 34, 39, 38, 53,
-<a name="l09954"></a>09954 52, 55, 54, 51, 50, 23, 22, 21, 39, 38, 39, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 4, 50, 78, -94,
-<a name="l09955"></a>09955 75, 65, 76, -94, 74, 1, -1, -66, -85, -2, -27, -33, 122, -124, 38, 35, 65, 42, 29, 20, 27, 12, 15, 110, 102,
-<a name="l09956"></a>09956 -57, -43, -96, -71, 7, 9, 38, 77, 39, 88, 55, 67, 58, 65, 89, 117, 68, 58, -97, 26, 11, 28, 42, 48, 45,
-<a name="l09957"></a>09957 58, 37, 26, 45, 5, 34, -112, 86, -113, -81, -111, 84, -111, -5, -42, -58, 104, 93, 80, 87, -85, 118, -126, 120, 120,
-<a name="l09958"></a>09958 18, 70, 54, 74, 53, 67, 63, -126, 62, 57, 70, 81, -118, 51, 45, 23, 18, 21, 40, 48, 97, 113, 103, 116, -96,
-<a name="l09959"></a>09959 -120, -77, -79, 62, 15, 41, 46, 35, 31, 36, 15, 0, -1, -1, 0, 70, -1, 103, 4, -89, 5, 119, 0, 22, 3,
-<a name="l09960"></a>09960 -43, 0, 0, 0, 4, -1, -70, 1, 37, 2, 36, 5, -20, 0, 3, 0, 7, 0, 29, 0, 41, 0, -106, -78, 0,
-<a name="l09961"></a>09961 2, 3, -72, 3, 2, -76, 1, 1, 4, 6, 7, -72, 3, 2, 64, 14, 5, 64, 9, 12, 52, 5, 5, 25, 30,
-<a name="l09962"></a>09962 34, 13, 39, 17, 25, -72, 2, -17, -78, 34, 34, 39, -72, 2, -17, -78, 17, 17, 10, -70, 2, -17, 0, 9, 2,
-<a name="l09963"></a>09963 -21, -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6, -72, 3, 1, 64, 11, 4, 4, 30, 32, 14, 17,
-<a name="l09964"></a>09964 52, 13, 30, 11, 21, -72, 3, 12, -77, 37, 37, 9, 11, -70, 3, 12, 0, 8, 2, -16, -79, 43, 9, 47, 16,
-<a name="l09965"></a>09965 -11, -19, 17, 57, 47, -19, 18, 57, 57, 43, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -3, 50, 47,
-<a name="l09966"></a>09966 -3, 50, 47, -19, 17, 18, 57, 17, 57, 17, 51, 47, 43, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1, 7,
-<a name="l09967"></a>09967 39, 55, 7, 7, 39, 55, 1, 33, 53, 33, 52, 39, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 51, 50,
-<a name="l09968"></a>09968 23, 22, 21, 3, 38, 39, 38, 35, 34, 6, 21, 20, 51, 50, 54, 2, 4, 78, -94, 75, 65, 76, -94, 74, 1,
-<a name="l09969"></a>09969 -86, -3, -106, 2, 21, 21, 52, 28, 46, 35, 73, 46, 53, 50, 56, 90, 122, 66, 55, -93, 14, 31, 42, 38, 27,
-<a name="l09970"></a>09970 35, 88, 23, 52, 5, -105, -112, 86, -113, -81, -111, 84, -111, -5, -108, -82, 89, 78, 17, 7, 12, 37, 42, 79, -117,
-<a name="l09971"></a>09971 104, 116, -65, -98, -43, 1, 4, 36, 37, 50, 45, 31, 80, 18, 0, 4, -1, -70, 1, 37, 2, 26, 5, -48, 0,
-<a name="l09972"></a>09972 3, 0, 7, 0, 26, 0, 37, 0, -122, 64, 11, 11, 16, 1, 29, 32, 16, 17, 52, 0, 2, 3, -72, 3, 2,
-<a name="l09973"></a>09973 -76, 1, 1, 4, 6, 7, -72, 3, 2, -78, 5, 5, 22, -72, 2, -17, -75, 31, 31, 14, 27, 27, 10, -70, 2,
-<a name="l09974"></a>09974 -17, 0, 9, 2, -21, -78, 1, 3, 0, -72, 3, 1, -76, 2, 2, 5, 7, 6, -72, 3, 1, -74, 4, 4, 34,
-<a name="l09975"></a>09975 14, 8, 27, 18, -72, 3, 12, -77, 34, 34, 9, 27, -70, 3, 12, 0, 8, 2, -16, -79, 39, 9, 47, 16, -11,
-<a name="l09976"></a>09976 -19, 17, 57, 47, -19, 17, 18, 57, 18, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -3, 50, 47, 57,
-<a name="l09977"></a>09977 51, 47, -3, 50, 47, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1, 43, 93, 1, 7, 39, 55, 7, 7, 39,
-<a name="l09978"></a>09978 55, 1, 33, 53, 33, 50, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 39, 38, 39, 38, 35,
-<a name="l09979"></a>09979 34, 6, 21, 20, 23, 22, 1, -17, 85, 125, 86, 105, 79, 123, 83, 1, -121, -3, -96, 1, 87, 62, 87, 51, -84,
-<a name="l09980"></a>09980 51, 115, 55, 62, 89, 102, 53, 42, 90, 23, 21, 41, 58, 28, 40, 79, 28, 5, 127, -122, 82, -123, -115, -120, 81,
-<a name="l09981"></a>09981 -122, -5, -109, -82, 9, 15, 25, 22, 50, 120, 105, 93, 105, -126, 103, -116, 4, 80, 39, 75, 44, 30, 76, 26, 9,
-<a name="l09982"></a>09982 0, 0, 2, 0, 45, 1, 37, 4, -49, 6, 51, 0, 40, 0, 73, 1, 37, -71, 0, 56, -1, -32, -77, 16, 17,
-<a name="l09983"></a>09983 52, 27, -72, 3, 10, 64, 9, 47, 28, 1, 28, 28, 72, 35, 18, 21, -72, 3, 10, -74, 47, 38, 1, 38, 38,
-<a name="l09984"></a>09984 72, 3, -72, 2, -15, 64, 15, 12, 64, 9, 12, 52, 12, 12, 50, 58, 61, 60, 68, 71, 50, 72, -72, 2, -17,
-<a name="l09985"></a>09985 -78, 65, 64, 68, -65, 3, 11, 0, 51, 0, 50, 3, 9, 0, 58, 2, -17, 0, 42, 2, -21, 64, 21, 28, 15,
-<a name="l09986"></a>09986 27, 64, 11, 14, 52, 27, 27, 0, 15, 8, 7, 64, 9, 14, 52, 7, 7, 54, 24, -72, 2, -3, 64, 9, 32,
-<a name="l09987"></a>09987 64, 9, 10, 52, 32, 32, 54, 0, -69, 2, -3, 0, 64, 0, 15, -1, -64, -73, 9, 17, 52, 15, 15, 61, 54,
-<a name="l09988"></a>09988 65, -72, 2, -5, 64, 11, 32, 64, 64, 61, 61, 60, 71, 72, 68, 68, 60, -72, 3, 16, -75, 15, 72, 1, 72,
-<a name="l09989"></a>09989 72, 59, -65, 3, 16, 0, 41, 2, -16, 0, 75, 0, 51, 2, -5, 0, 50, -1, -64, -75, 9, 17, 52, 50, 50,
-<a name="l09990"></a>09990 54, -70, 3, 12, 0, 46, 1, 36, -123, 47, -3, 50, 47, 43, -19, 16, -11, -19, 51, 47, 93, -19, 51, 47, 18,
-<a name="l09991"></a>09991 57, 17, 51, 47, 51, 25, 47, 26, -19, 24, 17, 18, 57, 47, 43, 26, -19, 18, 57, 47, 43, -19, 17, 57, 47,
-<a name="l09992"></a>09992 43, 57, 17, 18, 57, 47, 43, 18, 57, 0, 63, -19, 63, 57, 63, 51, 51, -19, 17, 57, 17, 57, 57, 17, 18,
-<a name="l09993"></a>09993 57, 47, 43, -19, 18, 57, 47, 93, -79, 6, 2, 67, 84, 88, -76, 11, 38, 27, 38, 2, 0, 93, 89, -3, 57,
-<a name="l09994"></a>09994 57, 18, 57, 47, 93, -19, 49, 48, 1, 43, 1, 20, 6, 35, 34, 39, 38, 39, 55, 50, 23, 22, 51, 50, 54,
-<a name="l09995"></a>09995 53, 52, 38, 35, 34, 7, 7, 34, 38, 53, 52, 54, 55, 7, 6, 7, 6, 21, 20, 22, 51, 50, 55, 55, 50,
-<a name="l09996"></a>09996 22, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21, 20, 23, 22, 51, 33, 3, 39, 52, 54, 55,
-<a name="l09997"></a>09997 23, 20, 23, 23, 20, 6, 7, 39, 19, 3, 97, -110, -124, 61, 74, 45, 87, 17, 24, 34, 79, 19, 115, -91, 34,
-<a name="l09998"></a>09998 23, 26, 14, 70, 25, 35, -81, 96, 19, 69, 37, 60, 32, 21, 18, 14, 54, 52, 42, 1, 110, -3, 30, -17, 101,
-<a name="l09999"></a>09999 108, 47, 13, 42, 34, 34, 21, 115, 86, -90, 2, 125, 125, 52, 24, 24, 15, 72, 108, 23, 12, 48, 118, 3, -120,
-<a name="l10000"></a>10000 109, 120, 17, 10, 27, 21, 3, 7, 67, 46, 21, 30, 1, 5, 26, 31, 84, -22, 32, -125, 19, 22, 35, 49, 17,
-<a name="l10001"></a>10001 15, 2, 7, 54, -3, 89, 57, 61, -109, 88, 112, 31, 84, 20, 78, 84, 38, 109, 44, 33, 3, 80, 25, 69, 121,
-<a name="l10002"></a>10002 57, 11, 58, 29, 40, 46, 114, 32, 16, -4, -16, -1, -1, 0, 45, 1, 37, 4, -49, 6, 51, 0, 22, 3, -39,
-<a name="l10003"></a>10003 0, 0, -1, -1, -1, -70, 1, 37, 3, 39, 5, -33, 0, 22, 3, 47, 0, 0, -1, -1, -1, -70, 1, 37, 3,
-<a name="l10004"></a>10004 39, 5, -33, 0, 22, 3, 47, 0, 0, 0, 1, 0, 71, 0, 14, 4, 13, 6, 51, 0, 55, 0, -96, -71, 0,
-<a name="l10005"></a>10005 2, -1, -32, -77, 15, 17, 52, 53, -72, -1, -16, -77, 13, 17, 52, 25, -72, -1, -52, 64, 14, 13, 17, 52, 28,
-<a name="l10006"></a>10006 32, 12, 17, 52, 36, 35, 46, 49, 16, 50, -72, 2, -17, -78, 39, 38, 46, 65, 9, 3, 11, 0, 17, 0, 16,
-<a name="l10007"></a>10007 3, 9, 0, 26, 2, -17, 0, 6, 0, 39, 2, -5, 64, 10, 38, 38, 36, 36, 35, 49, 50, 46, 46, 35, -72,
-<a name="l10008"></a>10008 3, 16, -78, 50, 50, 30, -65, 3, 12, 0, 0, 2, -16, 0, 57, 0, 17, 2, -5, 0, 16, -1, -64, -75, 9,
-<a name="l10009"></a>10009 11, 52, 16, 16, 23, -70, 3, 12, 0, 10, 1, 37, -123, 47, -3, 50, 47, 43, -19, 16, -11, -19, 51, 47, -19,
-<a name="l10010"></a>10010 51, 47, 18, 57, 17, 51, 47, 51, 25, 47, -27, 0, 24, 47, -19, 63, 57, 63, 51, 51, -19, 17, 57, 17, 57,
-<a name="l10011"></a>10011 57, 49, 48, 1, 43, 43, 43, 43, 1, 20, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55, 54, 55,
-<a name="l10012"></a>10012 23, 6, 7, 6, 7, 6, 21, 20, 22, 51, 50, 55, 54, 53, 52, 39, 38, 47, 2, 52, 55, 51, 22, 22, 23,
-<a name="l10013"></a>10013 22, 23, 22, 23, 20, 6, 7, 39, 22, 23, 22, 23, 22, 4, 13, 75, 67, -126, 110, -87, -63, 106, 116, 25, 21,
-<a name="l10014"></a>10014 43, 31, 53, 32, 37, 25, 33, 16, 19, -77, -97, -87, -112, -98, 31, 24, 35, 33, 46, 55, 17, 4, 20, 23, 31,
-<a name="l10015"></a>10015 37, 27, 20, 10, 15, 57, 2, 27, 31, 15, 24, 1, -95, -96, 94, 83, 36, 30, 71, 78, -101, 86, 93, 79, 94,
-<a name="l10016"></a>10016 68, 96, 19, 67, 53, 71, 56, 68, 64, 123, 126, 58, 64, 89, 97, -24, -78, -36, -62, 24, -122, 110, 38, 37, 9,
-<a name="l10017"></a>10017 13, 18, 13, 10, 70, 64, 58, 18, 22, -77, -47, -126, -48, 0, -1, -1, 0, 71, 0, 14, 4, 13, 6, 51, 0,
-<a name="l10018"></a>10018 22, 3, -35, 0, 0, 0, 1, -1, -70, 1, 37, 1, -88, 6, 51, 0, 18, 0, 113, -71, 0, 18, -1, -16, 64,
-<a name="l10019"></a>10019 10, 28, 29, 52, 5, 4, 13, 16, 18, 3, 17, -72, 2, -17, -78, 9, 8, 13, -65, 3, 11, 0, 3, 2, -17,
-<a name="l10020"></a>10020 0, 64, 0, 1, 2, -21, 0, 9, 2, -5, 64, 11, 32, 8, 8, 5, 5, 4, 16, 17, 13, 13, 4, -72, 3,
-<a name="l10021"></a>10021 16, -78, 17, 17, 3, -67, 3, 16, 0, 0, 2, -16, 0, 20, 0, 1, 1, 37, -123, 47, 16, -11, -19, 51, 47,
-<a name="l10022"></a>10022 -19, 51, 47, 18, 57, 17, 51, 47, 51, 25, 47, 26, -19, 0, 24, 63, 26, -19, 63, 51, 51, -19, 17, 57, 57,
-<a name="l10023"></a>10023 17, 57, 57, 49, 48, 0, 43, 1, 33, 53, 33, 3, 39, 52, 54, 55, 23, 20, 23, 22, 23, 20, 6, 7, 39,
-<a name="l10024"></a>10024 19, 1, -88, -2, 18, 1, -119, 119, 52, 24, 24, 15, 65, 50, 51, 16, 11, 48, 118, 1, 37, -82, 3, 80, 25,
-<a name="l10025"></a>10025 69, 121, 57, 11, 58, 29, 20, 20, 50, 114, 28, 16, -4, -16, -1, -1, -1, -70, 1, 37, 1, -88, 6, 51, 0,
-<a name="l10026"></a>10026 22, 3, -33, 0, 0, 0, 1, 0, 35, -2, 78, 2, -76, 2, -37, 0, 42, 0, -120, -71, 0, 8, -1, -32, -77,
-<a name="l10027"></a>10027 28, 31, 52, 7, -72, -1, -8, 64, 19, 17, 25, 52, -117, 19, -117, 24, 2, 32, 27, 31, 64, 9, 24, 52, 31,
-<a name="l10028"></a>10028 31, 23, 36, -72, 2, -17, 64, 9, 27, 64, 25, 26, 52, 27, 27, 23, 42, -66, 2, -17, 0, 23, 2, -17, 0,
-<a name="l10029"></a>10029 1, 2, -21, 0, 12, 3, 6, -77, 23, 23, 0, 31, -72, 2, -6, -77, 32, 32, 5, 0, -72, 2, -16, -74, 44,
-<a name="l10030"></a>10030 12, 12, 18, 9, 9, 5, -72, 2, -3, -77, 16, 18, 1, 18, 47, 93, -19, 51, 47, 25, 18, 57, 47, 24, 16,
-<a name="l10031"></a>10031 -28, 17, 57, 47, -3, 17, 57, 47, 0, 63, 63, -19, -19, 17, 51, 47, 43, -19, 18, 57, 47, 43, 18, 57, 49,
-<a name="l10032"></a>10032 48, 1, 93, 43, 43, 1, 35, 34, 7, 6, 21, 20, 22, 22, 21, 20, 6, 7, 38, 39, 38, 39, 38, 53, 52,
-<a name="l10033"></a>10033 54, 55, 54, 55, 38, 39, 38, 35, 34, 7, 6, 7, 39, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 2, -76,
-<a name="l10034"></a>10034 119, -90, 124, -99, 45, 47, 11, 14, 26, 25, 48, 23, 36, 107, 111, 88, -79, 63, 15, 51, 52, 33, 30, 24, 34,
-<a name="l10035"></a>10035 46, 30, 38, 63, 86, 62, 62, 51, 53, 26, 51, 1, 37, 31, 39, 73, 66, -106, -102, 64, 38, 62, 50, 83, 83,
-<a name="l10036"></a>10036 -98, 81, -128, 26, -128, -119, 33, 26, 18, 64, 12, 40, 20, 16, 39, 29, 75, 45, 74, 46, 38, 68, 33, 79, 0,
-<a name="l10037"></a>10037 -1, -1, 0, 35, -2, 78, 2, -76, 2, -37, 0, 22, 3, -31, 0, 0, 0, 2, -1, -70, 1, 37, 3, 39, 3,
-<a name="l10038"></a>10038 73, 0, 23, 0, 35, 0, 118, 64, 11, 30, 32, 12, 13, 52, 27, 32, 12, 17, 52, 33, -72, -1, -32, -77, 12,
-<a name="l10039"></a>10039 17, 52, 19, -72, 3, 10, -78, 28, 28, 32, -72, 2, -17, -76, 5, 5, 10, 9, 35, -72, 2, -17, -78, 0, 0,
-<a name="l10040"></a>10040 10, -70, 2, -17, 0, 9, 2, -21, -73, 28, 32, 19, 19, 24, 5, 9, 32, -72, -1, -32, -74, 17, 21, 52, 32,
-<a name="l10041"></a>10041 32, 9, 24, -70, 3, 0, 0, 0, 2, -16, -79, 37, 9, 47, 16, -11, -19, 17, 57, 47, 43, 18, 57, 25, 18,
-<a name="l10042"></a>10042 57, 47, 18, 57, 0, 24, 63, -19, 60, 16, -19, 17, 18, 57, 47, -3, 50, 47, -19, 49, 48, 1, 43, 43, 43,
-<a name="l10043"></a>10043 1, 35, 34, 39, 38, 39, 6, 6, 35, 35, 53, 51, 50, 55, 54, 55, 54, 55, 54, 55, 22, 23, 22, 21, 39,
-<a name="l10044"></a>10044 38, 39, 38, 39, 6, 7, 6, 7, 22, 22, 23, 3, 39, 104, 67, 84, 97, 74, 58, 121, 116, -100, -103, 91, 71,
-<a name="l10045"></a>10045 55, 45, 61, 89, 80, 67, 69, 41, 55, 115, 13, 27, 23, 38, 48, 33, 22, 30, 36, -125, 58, 1, 37, 30, 35,
-<a name="l10046"></a>10046 61, 71, 55, -82, 46, 36, 65, 88, 65, 58, 16, 105, 84, 114, 71, 23, 58, 56, 47, 50, 12, 33, 21, 50, 39,
-<a name="l10047"></a>10047 62, 7, -1, -1, -1, -70, 1, 37, 3, 39, 3, 73, 0, 22, 3, -29, 0, 0, 0, 2, 0, 69, -1, 108, 4,
-<a name="l10048"></a>10048 53, 4, 118, 0, 3, 0, 36, 0, -90, -71, 0, 6, -1, -32, -77, 13, 17, 52, 23, -72, -1, -42, 64, 16, 14,
-<a name="l10049"></a>10049 17, 52, 26, 32, 11, 17, 52, 31, 32, 11, 17, 52, 0, 2, 3, -72, 3, 2, -78, 1, 1, 32, 65, 10, 2,
-<a name="l10050"></a>10050 -17, 0, 33, 3, 9, 0, 18, 0, 17, 3, 7, 0, 24, 2, -17, 0, 8, 3, 17, -78, 1, 3, 2, -70, 3,
-<a name="l10051"></a>10051 1, 0, 0, -1, -64, 64, 11, 10, 14, 52, 0, 0, 21, 33, 33, 32, 32, 28, 65, 10, 3, 3, 0, 64, 0,
-<a name="l10052"></a>10052 4, 2, -16, 0, 38, 0, 18, 2, -5, 0, 32, 0, 17, -1, -64, -75, 9, 11, 52, 17, 17, 21, -70, 3, 3,
-<a name="l10053"></a>10053 0, 12, 1, 42, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -11, 26, -3, 50, 47, 25, 57, 47, 24, 17,
-<a name="l10054"></a>10054 57, 47, 43, -3, 57, 57, 0, 63, -19, 63, 57, 63, -19, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 43,
-<a name="l10055"></a>10055 1, 7, 39, 55, 1, 20, 7, 6, 33, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22, 51,
-<a name="l10056"></a>10056 50, 55, 54, 53, 52, 39, 38, 39, 55, 22, 22, 21, 2, -63, 75, -100, 72, 2, 19, -125, -115, -2, -58, -56, 106,
-<a name="l10057"></a>10057 116, 42, 36, 22, 54, 40, 70, 45, -79, -92, -67, -110, -75, 30, 26, 48, 83, 53, 40, 4, 36, -113, 86, -117, -4,
-<a name="l10058"></a>10058 -81, -33, 105, 113, 70, 77, -97, 86, -80, 89, 54, 112, 18, -112, -90, 69, 124, -127, 67, 83, -107, 102, 88, 78, 58,
-<a name="l10059"></a>10059 -51, 81, -88, -117, -1, -1, 0, 69, -1, 108, 4, 53, 4, 118, 0, 22, 3, -27, 0, 0, 0, 2, -1, -70, 1,
-<a name="l10060"></a>10060 37, 1, -12, 5, 22, 0, 3, 0, 16, 0, 91, -73, 10, 52, 12, 17, 52, 0, 2, 3, -72, 3, 2, -78, 1,
-<a name="l10061"></a>10061 1, 11, -66, 2, -17, 0, 12, 3, 4, 0, 6, 2, -17, 0, 5, 2, -21, -78, 1, 3, 0, -72, 3, 1, -73,
-<a name="l10062"></a>10062 2, 2, 5, 12, 12, 11, 11, 7, -67, 3, 3, 0, 4, 2, -16, 0, 18, 0, 5, 1, 42, -123, 47, 16, -11,
-<a name="l10063"></a>10063 -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -19, 57, 57, 0, 63, -19, 63, -19, 51, 47, -19, 57, 57, 49, 48,
-<a name="l10064"></a>10064 1, 43, 1, 7, 39, 55, 19, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 1, -92, 76, -94, 74, -12,
-<a name="l10065"></a>10065 -3, -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, 4, -62, -111, 84, -111, -4, 15, -82, 118, 62, 43, 81, -93, 91,
-<a name="l10066"></a>10066 51, 77, -78, -1, -1, -1, -70, 1, 37, 1, -12, 5, 22, 0, 22, 3, -25, 0, 0, -1, -1, 0, 54, 1, 10,
-<a name="l10067"></a>10067 2, 24, 3, 113, 0, 22, 3, 8, 0, 0, 0, 2, -1, -9, 1, 37, 3, 0, 4, -87, 0, 30, 0, 39, 0,
-<a name="l10068"></a>10068 110, 64, 12, 4, 3, 1, 31, 35, 32, 5, 38, 8, 21, 21, 14, -72, 3, 10, -78, 32, 32, 38, -72, 2, -17,
-<a name="l10069"></a>10069 -78, 8, 8, 30, -69, 2, -17, 0, 64, 0, 1, 2, -21, -73, 27, 0, 14, 32, 31, 5, 4, 17, -72, 2, -2,
-<a name="l10070"></a>10070 -73, 32, 15, 21, 1, 21, 21, 35, 0, -67, 2, -16, 0, 41, 0, 35, 3, 19, 0, 11, 1, 19, -123, 47, -19,
-<a name="l10071"></a>10071 16, -27, 25, 17, 57, 47, 93, 26, -3, 23, 57, 18, 57, 0, 24, 63, 26, -3, 50, 47, -3, 50, 47, -3, 50,
-<a name="l10072"></a>10072 47, 17, 18, 57, 17, 57, 57, 49, 48, 1, 93, 1, 35, 34, 39, 38, 39, 6, 6, 35, 34, 38, 53, 52, 54,
-<a name="l10073"></a>10073 55, 38, 38, 53, 52, 55, 54, 55, 22, 22, 23, 23, 22, 23, 22, 51, 51, 1, 39, 6, 6, 7, 22, 22, 51,
-<a name="l10074"></a>10074 50, 3, 0, -113, 72, 55, 41, 25, 30, 92, 51, 115, -103, -32, -88, 2, 13, 23, 19, 31, 10, 21, 14, 30, 25,
-<a name="l10075"></a>10075 20, 31, 33, -113, -2, -93, 19, 87, 100, 34, 21, 56, 49, 60, 1, 37, 123, 92, -111, 56, 62, 31, 24, 86, -47,
-<a name="l10076"></a>10076 78, 8, 68, 8, 34, 42, 34, 36, 62, 116, 62, -84, -114, 68, 104, 1, 17, 109, 31, 67, 55, 9, 10, 0, 3,
-<a name="l10077"></a>10077 -1, -70, 1, 0, 3, 20, 4, 112, 0, 40, 0, 53, 0, 67, 0, -89, 64, 15, 58, 32, 15, 17, 52, 58, 45,
-<a name="l10078"></a>10078 61, 18, 50, 14, 29, 29, 45, 35, -72, -1, -64, -73, 15, 17, 52, 35, 35, 45, 45, 50, -72, 2, -17, -76, 8,
-<a name="l10079"></a>10079 8, 14, 13, 65, -66, 2, -17, 0, 4, 2, -21, 0, 14, 2, -17, 0, 13, 2, -21, 64, 20, 61, 58, 8, 50,
-<a name="l10080"></a>10080 41, 29, 31, 35, 18, 32, 9, 14, 52, 18, 48, 22, 35, 35, 41, 22, -72, 3, 0, -77, 48, 48, 13, 41, -72,
-<a name="l10081"></a>10081 2, -3, 64, 9, 58, 64, 9, 12, 52, 58, 58, 13, 54, -72, 3, 0, -77, 0, 0, 69, 13, -72, 1, 31, -123,
-<a name="l10082"></a>10082 47, 17, 51, 47, -19, 17, 57, 47, 43, -19, 17, 57, 47, -19, 25, 18, 57, 47, 17, 18, 57, 43, 17, 57, 57,
-<a name="l10083"></a>10083 17, 57, 57, 18, 57, 0, 24, 63, -19, 63, -19, 17, 18, 57, 47, -3, 50, 47, 51, 47, 43, 18, 57, 47, 17,
-<a name="l10084"></a>10084 18, 57, 57, 17, 57, 43, 49, 48, 1, 20, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 35, 53, 51, 50,
-<a name="l10085"></a>10085 54, 55, 38, 39, 38, 53, 52, 54, 55, 55, 54, 54, 55, 38, 53, 52, 55, 54, 55, 22, 23, 22, 23, 22, 37,
-<a name="l10086"></a>10086 52, 39, 38, 35, 34, 6, 21, 20, 23, 54, 55, 54, 23, 52, 39, 38, 39, 20, 6, 7, 22, 23, 22, 51, 50,
-<a name="l10087"></a>10087 54, 3, 20, 36, 39, 39, 41, 112, 103, 71, 116, 53, 67, 91, 90, 90, 41, 76, 65, 26, 26, 28, 3, 12, 99,
-<a name="l10088"></a>10088 20, 33, 29, 69, 44, 15, 31, 64, 97, 123, 71, 94, -2, -96, 18, 21, 46, 46, 80, 122, 43, 21, 25, -15, 56,
-<a name="l10089"></a>10089 35, 51, 41, 37, 60, 61, 50, 21, 12, 16, 1, -50, 58, 71, 77, 52, 48, 46, 66, 19, 24, -82, 13, 17, 19,
-<a name="l10090"></a>10090 20, 25, 24, 17, 16, 22, -83, 35, 27, 8, 47, 20, 20, 83, 28, 55, 61, 116, -110, 115, -104, -123, 43, 25, 30,
-<a name="l10091"></a>10091 61, 43, 41, 67, 28, 26, 30, -57, 35, 74, 47, 53, 49, 85, 23, 31, 30, 22, 18, 0, 0, 3, -1, -70, -1,
-<a name="l10092"></a>10092 -126, 3, 39, 3, 111, 0, 31, 0, 41, 0, 52, 0, -118, -75, 38, 34, 46, 16, 15, 23, -72, 2, -17, -77, 34,
-<a name="l10093"></a>10093 34, 16, 9, -72, 2, -17, -77, 50, 50, 15, 31, -72, 2, -17, -78, 0, 0, 16, -70, 2, -17, 0, 15, 2, -21,
-<a name="l10094"></a>10094 64, 10, 1, 42, 46, 30, 32, 38, 14, 46, 13, 38, -72, 3, 3, -78, 17, 17, 46, -72, 3, 3, -76, 13, 13,
-<a name="l10095"></a>10095 42, 15, 32, -72, 2, -3, -78, 26, 26, 5, -72, 2, -3, -77, 42, 42, 15, 0, -69, 2, -16, 0, 54, 0, 15,
-<a name="l10096"></a>10096 1, 27, -123, 47, 16, -28, 17, 57, 47, -19, 57, 47, -19, 17, 18, 57, 47, -19, 51, 47, -19, 17, 18, 57, 17,
-<a name="l10097"></a>10097 18, 57, 17, 18, 57, 0, 63, -19, 60, 16, -19, 17, 51, 47, -19, 17, 51, 47, -19, 17, 18, 57, 17, 57, 49,
-<a name="l10098"></a>10098 48, 1, 33, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 55, 35, 53, 51, 54, 55, 54, 55, 54, 51,
-<a name="l10099"></a>10099 50, 22, 21, 20, 7, 6, 7, 33, 37, 52, 35, 34, 7, 6, 7, 54, 55, 54, 19, 52, 39, 38, 39, 20, 23,
-<a name="l10100"></a>10100 22, 51, 50, 54, 3, 39, -2, -110, 64, 45, 57, 24, 30, 64, 120, 100, 120, 2, -35, -3, 35, 42, 53, 58, 67,
-<a name="l10101"></a>10101 59, 31, 47, 46, 27, -121, 1, -72, -2, -75, 40, 43, 60, 29, 53, 91, 62, 72, 40, 116, 95, 92, 53, 64, 127,
-<a name="l10102"></a>10102 24, 35, 1, 37, 30, 55, 69, 81, 78, 47, 59, 83, 100, -92, 72, -82, 93, 80, 101, 64, 74, 108, 61, 88, 55,
-<a name="l10103"></a>10103 33, 67, -87, 95, 94, 45, 105, 25, 38, 44, -3, -8, 79, 73, 60, 16, 110, 71, 86, 20, 0, 2, 0, 50, -1,
-<a name="l10104"></a>10104 99, 3, 117, 3, 20, 0, 32, 0, 42, 0, 117, -75, 16, 64, 11, 17, 52, 3, -72, -1, -32, 64, 12, 11, 18,
-<a name="l10105"></a>10105 52, 18, 64, 9, 17, 52, 11, 20, 10, 28, -72, 2, -17, -78, 37, 37, 33, -70, 2, -17, 0, 20, 2, -21, -78,
-<a name="l10106"></a>10106 10, 10, 14, -68, 3, 10, 0, 4, 3, 8, 0, 24, 2, -3, -77, 40, 40, 10, 33, -68, 3, 3, 0, 20, 3,
-<a name="l10107"></a>10107 3, 0, 0, 2, -16, -78, 44, 11, 10, -72, -1, -64, -77, 9, 12, 52, 10, -72, 1, 31, -123, 47, 43, 51, 16,
-<a name="l10108"></a>10108 -11, -19, -19, 17, 57, 47, -19, 0, 63, -3, 50, 25, 47, 24, 63, -3, 50, 47, -19, 17, 18, 57, 49, 48, 1,
-<a name="l10109"></a>10109 43, 43, 43, 1, 20, 7, 6, 35, 34, 39, 38, 39, 38, 39, 55, 22, 22, 51, 50, 55, 54, 55, 54, 55, 34,
-<a name="l10110"></a>10110 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 7, 38, 39, 38, 35, 34, 6, 21, 20, 22, 3, 117, 122, -120,
-<a name="l10111"></a>10111 -78, 66, 70, 51, 82, 65, 65, 17, 56, 123, 49, 122, 109, 85, 85, 43, 79, -121, 67, 76, 48, 56, 86, 87, 38,
-<a name="l10112"></a>10112 30, 63, 22, 31, 27, 39, 28, 41, 88, 1, 97, -91, -93, -74, 15, 11, 27, 23, 22, 35, 13, 29, 62, 49, 93,
-<a name="l10113"></a>10113 47, 106, 43, 49, 112, 103, 88, 102, 101, 79, -115, 5, 96, 37, 32, 37, 28, 49, 51, 0, -1, -1, 0, 50, -1,
-<a name="l10114"></a>10114 99, 3, 117, 3, 20, 0, 22, 3, -19, 0, 0, -1, -1, 0, 50, -1, -89, 4, -39, 3, -78, 0, 22, 3, 53,
-<a name="l10115"></a>10115 0, 0, -1, -1, 0, 36, -1, 31, 4, -75, 2, 5, 0, 22, 3, 54, 0, 0, 0, 3, 0, 50, -2, 86, 4,
-<a name="l10116"></a>10116 -39, 3, -78, 0, 59, 0, 63, 0, 67, 0, -43, -71, 0, 38, -1, -42, 64, 16, 14, 17, 52, 41, 52, 14, 17,
-<a name="l10117"></a>10117 52, 42, 52, 11, 17, 52, 60, 62, 63, -72, 3, 2, -76, 61, 61, 64, 66, 67, -70, 3, 2, 0, 65, 3, 6,
-<a name="l10118"></a>10118 -75, 3, 6, 14, 33, 39, 32, 65, 9, 3, 7, 0, 6, 2, -17, 0, 57, 3, 4, 0, 39, 2, -17, 0, 22,
-<a name="l10119"></a>10119 -1, -64, -77, 9, 11, 52, 22, -68, 3, 13, 0, 14, 2, -17, 0, 48, 2, -21, -78, 61, 63, 60, -72, 3, 1,
-<a name="l10120"></a>10120 -76, 62, 62, 65, 67, 66, -72, 3, 1, -77, 64, 64, 36, 51, -72, 3, 12, 64, 9, 10, 10, 44, 36, 3, 18,
-<a name="l10121"></a>10121 0, 0, 44, -72, 2, -3, -76, 64, 18, 18, 69, 33, -69, 2, -5, 0, 32, 0, 32, -1, -64, -75, 9, 11, 52,
-<a name="l10122"></a>10122 32, 32, 36, -70, 3, 12, 0, 26, 1, 57, -123, 47, -3, 50, 25, 47, 43, 26, -19, 17, 51, 24, 47, 26, -19,
-<a name="l10123"></a>10123 51, 47, 18, 57, 17, 18, 57, 47, -19, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -19, 63, 43,
-<a name="l10124"></a>10124 -19, 63, -19, 63, 18, 57, 17, 18, 57, 63, -19, 57, 57, 51, 47, -19, 57, 57, 49, 48, 1, 43, 43, 43, 1,
-<a name="l10125"></a>10125 20, 6, 7, 38, 38, 35, 34, 7, 6, 21, 20, 22, 51, 51, 50, 22, 22, 21, 20, 7, 6, 33, 34, 39, 38,
-<a name="l10126"></a>10126 53, 52, 55, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22, 51, 50, 55, 54, 54, 53, 52, 38, 35, 35, 34, 38,
-<a name="l10127"></a>10127 53, 52, 55, 54, 55, 54, 51, 50, 22, 1, 7, 39, 55, 7, 7, 39, 55, 4, -39, 12, 2, 35, 97, 50, 87,
-<a name="l10128"></a>10128 96, 88, 43, 53, 80, 72, 69, 96, -37, -55, -2, -87, -78, 94, 102, 34, 26, 46, 3, 60, 42, 63, 67, -87, -99,
-<a name="l10129"></a>10129 120, -97, -120, -38, 25, 28, -22, 43, 66, 55, 60, 85, 102, 103, 66, 76, -2, -121, 78, -94, 75, 65, 76, -94, 74,
-<a name="l10130"></a>10130 3, 32, 32, 67, 14, 45, 52, 101, 93, 55, 19, 19, 3, 16, 65, -5, -125, 120, 69, 75, -105, 104, 114, 87, 95,
-<a name="l10131"></a>10131 6, 113, 17, 112, -61, 75, 122, 122, 48, 41, 114, 27, 19, 12, 62, 49, 67, 115, 125, 84, 101, 80, -5, -33, -112,
-<a name="l10132"></a>10132 86, -113, -81, -111, 84, -111, 0, 0, 3, 0, 36, -2, 78, 4, -75, 2, 5, 0, 54, 0, 58, 0, 62, 0, -2,
-<a name="l10133"></a>10133 -75, -122, 51, -106, 51, 2, 32, -72, -1, -32, 64, 19, 12, 24, 52, 58, 16, 18, 21, 52, 20, 24, 18, 20, 52,
-<a name="l10134"></a>10134 -106, 15, -89, 15, 2, 6, -72, -1, -64, -74, 9, 10, 52, 6, 6, 1, 44, -72, -1, -64, -74, 46, 47, 52, 44,
-<a name="l10135"></a>10135 44, 1, 34, -72, 2, -17, 64, 12, -17, 17, 1, 17, 17, 62, 55, 57, -97, 58, 1, 58, -72, 3, 20, -73, 56,
-<a name="l10136"></a>10136 56, 59, 61, -97, 62, 1, 62, -70, 3, 20, 0, 60, -1, -64, -77, 9, 12, 52, 60, -72, 3, 6, -77, 26, 25,
-<a name="l10137"></a>10137 25, 53, -70, 2, -17, 0, 1, 2, -21, -78, 56, 58, 55, -72, 3, 1, -76, 57, 57, 60, 62, 61, -72, 3, 1,
-<a name="l10138"></a>10138 -73, 48, 59, 1, 59, 59, 47, 30, 38, -72, 3, 12, -77, 13, 13, 0, 47, -72, 3, 12, -76, 64, 4, 4, 30,
-<a name="l10139"></a>10139 0, -66, 2, -16, 0, 64, 0, 26, 2, -5, 0, 32, 0, 25, -1, -64, -75, 9, 11, 52, 25, 25, 30, -70, 3,
-<a name="l10140"></a>10140 12, 0, 21, 1, 57, -123, 47, -3, 50, 25, 47, 43, 26, -19, 24, 16, -28, 17, 57, 47, 26, -19, 18, 57, 47,
-<a name="l10141"></a>10141 -19, 17, 18, 57, 47, 93, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -3, 50, 47, 57, 63, 43, -19, 93, 57,
-<a name="l10142"></a>10142 57, 51, 47, -19, 93, 57, 57, 17, 51, 47, 93, -3, 17, 57, 47, 43, 18, 57, 47, 43, 49, 48, 1, 93, 43,
-<a name="l10143"></a>10143 43, 43, 0, 113, 1, 35, 34, 6, 21, 20, 51, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 33, 34, 39, 38,
-<a name="l10144"></a>10144 53, 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 35, 38, 38, 35, 34,
-<a name="l10145"></a>10145 38, 53, 52, 55, 54, 55, 54, 51, 51, 1, 7, 39, 55, 7, 7, 39, 55, 4, -75, -81, -102, -101, 93, 41, 48,
-<a name="l10146"></a>10146 81, 48, 18, 29, 123, -122, -2, -53, -41, 127, -121, 64, 23, 98, 40, 38, 37, 57, -128, 122, -43, -113, 109, -122, 30,
-<a name="l10147"></a>10147 35, 27, 115, 18, 63, 54, 73, 60, 101, 76, 84, -81, -2, 98, 93, 112, 90, 92, 91, 116, 93, 1, 37, 16, 24,
-<a name="l10148"></a>10148 33, 4, 9, 6, 9, 15, 37, -69, 85, 93, 73, 78, -112, 116, -126, 47, -102, 20, 65, 64, 110, 70, 123, 64, 61,
-<a name="l10149"></a>10149 22, 27, 47, 17, 17, 3, 7, 33, 33, 124, 79, 64, 31, 23, -4, -47, 86, 71, 94, 79, 86, 71, 94, 0, 0,
-<a name="l10150"></a>10150 3, -1, -70, -1, 114, 1, -12, 3, -90, 0, 12, 0, 16, 0, 20, 0, 125, -73, 6, 52, 12, 17, 52, 17, 19,
-<a name="l10151"></a>10151 18, -72, 3, 2, -76, 20, 20, 15, 13, 14, -72, 3, 2, -74, 0, 16, 1, 16, 16, 1, 7, -66, 2, -17, 0,
-<a name="l10152"></a>10152 8, 3, 4, 0, 2, 2, -17, 0, 1, 2, -21, -78, 14, 16, 13, -72, 3, 1, -76, 15, 15, 18, 20, 19, -72,
-<a name="l10153"></a>10153 3, 1, -73, 17, 17, 1, 8, 8, 7, 7, 3, -67, 3, 3, 0, 0, 2, -16, 0, 22, 0, 1, 1, 42, -123,
-<a name="l10154"></a>10154 47, 16, -12, -3, 50, 47, 25, 57, 47, 24, 17, 57, 47, -3, 57, 57, 51, 47, -19, 57, 57, 0, 63, -19, 63,
-<a name="l10155"></a>10155 -19, 17, 51, 47, 93, -19, 57, 57, 51, 47, -3, 57, 57, 49, 48, 1, 43, 1, 33, 53, 33, 52, 39, 38, 39,
-<a name="l10156"></a>10156 55, 22, 23, 22, 21, 3, 7, 39, 55, 7, 7, 39, 55, 1, -12, -3, -58, 1, -15, 28, 19, 75, 78, 72, 18,
-<a name="l10157"></a>10157 27, 5, 78, -94, 75, 65, 76, -94, 74, 1, 37, -82, 118, 62, 43, 81, -93, 91, 51, 77, -78, -2, 68, -112, 86,
-<a name="l10158"></a>10158 -113, -81, -111, 84, -111, -1, -1, -1, -70, -1, 114, 1, -12, 3, -90, 0, 22, 3, -13, 0, 0, 0, 3, 0, 64,
-<a name="l10159"></a>10159 0, -94, 4, 14, 6, -99, 0, 68, 0, 78, 0, 101, 1, 48, 64, 19, 84, 8, 86, 74, 2, 79, 99, 101, 64,
-<a name="l10160"></a>10160 22, 63, 52, 101, 101, 95, 99, 91, 87, 90, -72, -1, -64, -74, 22, 63, 52, 90, 90, 83, 95, -72, 2, -15, -78,
-<a name="l10161"></a>10161 87, 87, 99, -72, 2, -15, 64, 39, 83, 83, 46, 60, 59, 0, 1, 2, 75, 31, 46, 55, 32, 12, 17, 52, 21,
-<a name="l10162"></a>10162 72, 23, 7, 55, 5, 35, 14, 75, 17, -113, 35, 1, 35, 64, 9, 17, 52, 35, 35, 46, 75, 2, -72, 2, -17,
-<a name="l10163"></a>10163 -77, 0, 0, 75, 63, -65, 2, -14, 0, 46, 2, -14, 0, 17, 2, -17, 0, 64, 0, 75, 2, -21, 64, 19, 101,
-<a name="l10164"></a>10164 101, 79, 90, 79, 90, 91, 91, 31, 35, 42, 55, 72, 7, 75, 21, 23, 17, 64, -72, 2, -5, 64, 11, 32, 63,
-<a name="l10165"></a>10165 63, 60, 60, 59, 1, 2, 0, 0, 59, -72, 3, 12, -78, 2, 2, 7, -70, 3, 12, 0, 23, -1, -64, 64, 9,
-<a name="l10166"></a>10166 9, 10, 52, 23, 23, 17, 17, 42, 69, -72, 3, 3, 64, 17, 11, 64, 13, 15, 52, 11, 64, 9, 11, 52, 11,
-<a name="l10167"></a>10167 11, 103, 64, 42, 1, 42, -72, 1, 21, -123, 47, 93, 17, 51, 47, 43, 43, -19, 17, 57, 47, 57, 47, 43, -3,
-<a name="l10168"></a>10168 50, 47, -19, 51, 47, 18, 57, 17, 51, 47, 51, 25, 47, 26, -19, 17, 18, 57, 57, 17, 57, 57, 17, 57, 57,
-<a name="l10169"></a>10169 51, 24, 47, 51, 51, 25, 47, 24, 47, 51, 25, 47, 0, 24, 63, 26, -19, 63, 63, 18, 57, 47, -19, 17, 18,
-<a name="l10170"></a>10170 57, 47, 43, 93, 17, 18, 57, 17, 23, 57, 43, 18, 57, 17, 18, 57, 17, 57, 57, 17, 51, 47, -19, 51, 47,
-<a name="l10171"></a>10171 -19, 18, 57, 47, 43, 18, 57, 17, 18, 57, 47, 43, 18, 57, 49, 48, 0, 93, 1, 7, 39, 23, 20, 7, 6,
-<a name="l10172"></a>10172 7, 22, 23, 22, 21, 20, 6, 7, 6, 6, 35, 54, 53, 54, 55, 54, 55, 38, 39, 38, 39, 38, 39, 38, 35,
-<a name="l10173"></a>10173 34, 7, 6, 35, 34, 39, 38, 39, 38, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 22, 23, 23, 22, 23, 54,
-<a name="l10174"></a>10174 55, 54, 53, 39, 52, 54, 55, 23, 22, 23, 22, 22, 3, 52, 38, 39, 6, 6, 7, 50, 55, 54, 1, 6, 7,
-<a name="l10175"></a>10175 6, 35, 34, 39, 38, 35, 34, 6, 7, 39, 54, 55, 54, 51, 50, 23, 22, 51, 50, 55, 4, 14, 48, 59, 2,
-<a name="l10176"></a>10176 34, 37, 80, 38, 15, 23, 4, 7, 106, -15, 114, 1, 5, 19, -86, 117, 70, 32, 35, 84, 31, 24, 33, 19, 13,
-<a name="l10177"></a>10177 30, 16, 11, 22, 47, 41, 45, 36, 26, 8, 12, 29, 41, 78, 69, 85, 75, 73, 102, 45, 47, 67, 25, 22, 57,
-<a name="l10178"></a>10178 23, 21, 23, 4, 44, 24, 75, -16, 17, 29, 30, 119, 58, 118, 50, 85, -2, -50, 28, 29, 41, 48, 50, 45, 99,
-<a name="l10179"></a>10179 6, 12, 24, 15, 11, 25, 11, 23, 38, 9, 100, 50, 33, 53, 52, 5, 70, -76, 29, 91, -122, 126, -118, -121, 70,
-<a name="l10180"></a>10180 40, 63, 65, 37, 52, 35, 24, 27, 19, 13, 76, 65, 91, -111, -124, 55, 60, 127, 43, 26, 35, 15, 8, 44, 39,
-<a name="l10181"></a>10181 57, 46, 61, 43, 62, 35, 53, 78, 70, 114, 101, 117, -92, 74, 94, -121, -118, 120, -70, 33, 66, 107, 44, 6, 43,
-<a name="l10182"></a>10182 26, 14, 36, -4, 43, 22, 47, 54, 39, 102, 36, 7, 12, 5, 32, 32, 17, 24, 15, 33, 7, 7, 13, 36, 9,
-<a name="l10183"></a>10183 20, 32, 16, 23, 0, 3, 0, 73, 0, -14, 4, -50, 6, -99, 0, 23, 0, 62, 0, 85, 1, 68, -71, 0, 22,
-<a name="l10184"></a>10184 -1, -32, -77, 15, 17, 52, 20, -72, -1, -32, -77, 15, 17, 52, 21, -72, -1, -42, -77, 14, 17, 52, 41, -72, -1,
-<a name="l10185"></a>10185 -42, -77, 11, 17, 52, 40, -72, -1, -32, 64, 9, 11, 17, 52, 91, 28, -119, 43, 2, 34, -72, -1, -32, 64, 37,
-<a name="l10186"></a>10186 9, 10, 52, 43, 42, 9, 17, 52, 42, 74, 9, 17, 52, 41, 84, 9, 17, 52, 40, 64, 9, 17, 52, 63, 83,
-<a name="l10187"></a>10187 85, 64, 22, 63, 52, 85, 85, 79, 83, 75, 71, 74, -72, -1, -64, -74, 22, 63, 52, 74, 74, 67, 79, -72, 2,
-<a name="l10188"></a>10188 -15, -78, 71, 71, 83, -72, 2, -15, 64, 24, 67, 67, 7, 10, 64, 10, 17, 52, 10, 10, 18, 3, 32, 32, 48,
-<a name="l10189"></a>10189 3, 64, 9, 24, 52, 3, 3, 62, 18, -66, 2, -14, 0, 48, 2, -17, 0, 51, 2, -14, 0, 39, 2, -5, -78,
-<a name="l10190"></a>10190 38, 38, 62, -70, 2, -17, 0, 25, 2, -21, 64, 13, 85, 85, 63, 74, 63, 63, 74, 75, 75, 7, 10, 0, 3,
-<a name="l10191"></a>10191 -72, -1, -64, -77, 24, 32, 52, 3, -72, -1, -64, 64, 13, 10, 15, 52, 3, 3, 16, 32, 55, 45, 11, 48, 1,
-<a name="l10192"></a>10192 48, -72, 3, 16, -78, 51, 51, 45, -72, 3, 16, -78, 55, 55, 24, -72, 2, -16, -77, 87, 38, 38, 16, -72, 1,
-<a name="l10193"></a>10193 29, -123, 47, 51, 47, 16, -11, 50, 47, -19, 51, 25, 47, 24, -19, 93, 17, 18, 57, 25, 18, 57, 47, 43, 43,
-<a name="l10194"></a>10194 51, 57, 57, 50, 24, 47, 51, 51, 47, 25, 47, 17, 51, 47, 0, 24, 63, -19, 51, 47, -19, 63, -19, 63, 18,
-<a name="l10195"></a>10195 57, 47, 43, 17, 57, 47, 17, 18, 57, 47, 43, 57, 50, 47, -19, 51, 47, -19, 18, 57, 47, 43, 18, 57, 17,
-<a name="l10196"></a>10196 18, 57, 47, 43, 18, 57, 49, 48, 1, 43, 43, 43, 43, 43, 93, 0, 43, 43, 43, 43, 43, 1, 20, 6, 7,
-<a name="l10197"></a>10197 38, 39, 38, 35, 34, 6, 35, 34, 39, 38, 39, 38, 53, 52, 51, 50, 23, 22, 23, 22, 1, 35, 34, 39, 38,
-<a name="l10198"></a>10198 53, 52, 38, 53, 2, 7, 6, 7, 6, 33, 53, 36, 55, 54, 55, 54, 53, 52, 38, 39, 55, 54, 55, 22, 23,
-<a name="l10199"></a>10199 22, 23, 22, 23, 22, 23, 22, 51, 51, 1, 6, 7, 6, 35, 34, 39, 38, 35, 34, 6, 7, 39, 54, 55, 54,
-<a name="l10200"></a>10200 51, 50, 23, 22, 51, 50, 55, 3, 48, 4, 8, 56, 110, 122, 70, 15, 30, 20, 27, 58, 73, 44, 59, 41, 72,
-<a name="l10201"></a>10201 -103, -85, 116, -113, 1, -98, 61, 84, 51, 61, 7, 96, 75, 89, -94, -118, -2, -76, 1, 13, -124, -43, 110, -123, 25,
-<a name="l10202"></a>10202 22, 33, 20, 17, 26, 23, 16, 15, 19, 14, 18, 36, 24, 24, 61, -3, 19, 28, 29, 41, 48, 50, 45, 99, 6,
-<a name="l10203"></a>10203 12, 24, 15, 11, 25, 11, 23, 38, 9, 100, 50, 33, 53, 52, 3, 48, 20, 28, 21, 125, -123, -109, 52, 35, 44,
-<a name="l10204"></a>10204 58, 78, 88, 63, 91, 101, -121, -91, -3, 87, 91, 110, -33, 16, 54, 7, -2, -11, 99, 116, 38, 32, 28, 81, 59,
-<a name="l10205"></a>10205 94, 123, -108, -53, 98, -86, 89, 84, 49, 34, -112, -89, 115, -124, -94, 99, 126, 54, 36, 4, -93, 32, 17, 24, 15,
-<a name="l10206"></a>10206 33, 7, 7, 13, 36, 9, 20, 32, 16, 23, 0, 0, 3, 0, 38, 0, -94, 4, 14, 7, 10, 0, 68, 0, 78,
-<a name="l10207"></a>10207 0, 110, 1, 64, -71, 0, 81, -1, -32, 64, 44, 11, 17, 52, 84, 8, 86, 74, 2, 60, 59, 0, 1, 2, 75,
-<a name="l10208"></a>10208 31, 46, 55, 32, 12, 17, 52, 21, 72, 23, 7, 55, 5, 35, 14, 75, 17, -113, 35, 1, 35, 64, 9, 17, 52,
-<a name="l10209"></a>10209 35, 35, 46, 75, 2, -72, 2, -17, -76, 0, 0, 63, 75, 46, -72, -1, -64, -74, 9, 29, 52, 46, 46, 84, 63,
-<a name="l10210"></a>10210 -72, 2, -14, -74, 79, 100, 102, 86, 108, 84, 84, -72, -1, -64, -74, 18, 25, 52, 84, 108, 108, 102, -72, 2, -11,
-<a name="l10211"></a>10211 -75, 94, 64, 9, 14, 52, 94, -68, 3, 21, 0, 17, 2, -17, 0, 75, 2, -21, 64, 11, 100, 86, 97, 97, 105,
-<a name="l10212"></a>10212 79, 79, 105, 84, 84, 90, -72, 3, 5, 64, 14, 64, 105, 105, 31, 35, 42, 55, 72, 7, 75, 21, 23, 17, 64,
-<a name="l10213"></a>10213 -72, 2, -5, 64, 11, 32, 63, 63, 60, 60, 59, 1, 2, 0, 0, 59, -72, 3, 12, -78, 2, 2, 7, -70, 3,
-<a name="l10214"></a>10214 12, 0, 23, -1, -64, 64, 9, 9, 10, 52, 23, 23, 17, 17, 42, 69, -72, 3, 3, 64, 17, 11, 64, 13, 15,
-<a name="l10215"></a>10215 52, 11, 64, 9, 11, 52, 11, 11, 112, 64, 42, 1, 42, -72, 1, 59, -123, 47, 93, 17, 51, 47, 43, 43, -19,
-<a name="l10216"></a>10216 17, 57, 47, 57, 47, 43, -3, 50, 47, -19, 51, 47, 18, 57, 17, 51, 47, 51, 25, 47, 26, -19, 17, 18, 57,
-<a name="l10217"></a>10217 57, 17, 57, 57, 17, 57, 57, 51, 24, 47, 26, -3, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63, -19,
-<a name="l10218"></a>10218 63, 43, -3, 50, 47, 51, 43, 47, 18, 57, 17, 57, 57, 63, 17, 51, 47, 43, 17, 18, 57, 47, -19, 17, 18,
-<a name="l10219"></a>10219 57, 47, 43, 93, 17, 18, 57, 17, 23, 57, 43, 18, 57, 17, 18, 57, 17, 57, 57, 49, 48, 0, 93, 43, 1,
-<a name="l10220"></a>10220 7, 39, 23, 20, 7, 6, 7, 22, 23, 22, 21, 20, 6, 7, 6, 6, 35, 54, 53, 54, 55, 54, 55, 38, 39,
-<a name="l10221"></a>10221 38, 39, 38, 39, 38, 35, 34, 7, 6, 35, 34, 39, 38, 39, 38, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23,
-<a name="l10222"></a>10222 22, 23, 23, 22, 23, 54, 55, 54, 53, 39, 52, 54, 55, 23, 22, 23, 22, 22, 3, 52, 38, 39, 6, 6, 7,
-<a name="l10223"></a>10223 50, 55, 54, 1, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7,
-<a name="l10224"></a>10224 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 4, 14, 48, 59, 2, 34, 37, 80, 38, 15, 23, 4, 7, 106, -15,
-<a name="l10225"></a>10225 114, 1, 5, 19, -86, 117, 70, 32, 35, 84, 31, 24, 33, 19, 13, 30, 16, 11, 22, 47, 41, 45, 36, 26, 8,
-<a name="l10226"></a>10226 12, 29, 41, 78, 69, 85, 75, 73, 102, 45, 47, 67, 25, 22, 57, 23, 21, 23, 4, 44, 24, 75, -16, 17, 29,
-<a name="l10227"></a>10227 30, 119, 58, 118, 50, 85, -2, 52, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36,
-<a name="l10228"></a>10228 22, 43, 93, 33, 22, 19, 5, 70, -76, 29, 91, -122, 126, -118, -121, 70, 40, 63, 65, 37, 52, 35, 24, 27, 19,
-<a name="l10229"></a>10229 13, 76, 65, 91, -111, -124, 55, 60, 127, 43, 26, 35, 15, 8, 44, 39, 57, 46, 61, 43, 62, 35, 53, 78, 70,
-<a name="l10230"></a>10230 114, 101, 117, -92, 74, 94, -121, -118, 120, -70, 33, 66, 107, 44, 6, 43, 26, 14, 36, -4, 43, 22, 47, 54, 39,
-<a name="l10231"></a>10231 102, 36, 7, 12, 5, 16, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18,
-<a name="l10232"></a>10232 28, 18, 12, 15, 52, 3, 0, 0, 3, 0, 57, 0, -14, 4, -50, 7, 10, 0, 23, 0, 62, 0, 94, 1, 78,
-<a name="l10233"></a>10233 -71, 0, 65, -1, -32, -77, 11, 17, 52, 41, -72, -1, -42, -77, 11, 17, 52, 40, -72, -1, -32, 64, 18, 11, 17,
-<a name="l10234"></a>10234 52, -123, 20, -122, 21, -122, 22, -57, 20, 4, 91, 28, -119, 43, 2, 34, -72, -1, -32, 64, 47, 9, 10, 52, 43,
-<a name="l10235"></a>10235 42, 9, 17, 52, 42, 74, 9, 17, 52, 41, 84, 9, 17, 52, 40, 64, 9, 17, 52, 7, 32, 10, 1, 10, 64,
-<a name="l10236"></a>10236 10, 17, 52, 10, 10, 3, 64, 9, 24, 52, 3, 3, 18, 62, 32, 32, 62, 48, -68, 2, -17, 0, 51, 2, -14,
-<a name="l10237"></a>10237 0, 39, 2, -5, -78, 38, 38, 62, -68, 2, -17, 0, 25, 2, -21, 0, 18, -1, -64, -77, 23, 29, 52, 18, -72,
-<a name="l10238"></a>10238 -1, -64, 64, 13, 9, 17, 52, 18, 18, 68, 84, 63, 86, 70, 92, 68, 68, -72, -1, -64, -74, 18, 25, 52, 68,
-<a name="l10239"></a>10239 92, 92, 86, -72, 2, -11, -75, 78, 64, 9, 14, 52, 78, -72, 3, 21, 64, 11, 84, 70, 81, 81, 89, 63, 63,
-<a name="l10240"></a>10240 89, 68, 68, 74, -72, 3, 5, -75, 89, 89, 7, 10, 0, 3, -72, -1, -64, -77, 24, 32, 52, 3, -72, -1, -64,
-<a name="l10241"></a>10241 64, 13, 10, 15, 52, 3, 3, 16, 32, 55, 45, 11, 48, 1, 48, -72, 3, 16, -78, 51, 51, 45, -72, 3, 16,
-<a name="l10242"></a>10242 -78, 55, 55, 24, -72, 2, -16, -77, 96, 38, 38, 16, -72, 1, 59, -123, 47, 51, 47, 16, -11, 50, 47, -19, 51,
-<a name="l10243"></a>10243 25, 47, 24, -19, 93, 17, 18, 57, 25, 18, 57, 47, 43, 43, 51, 57, 57, 50, 24, 47, -3, 50, 47, 17, 51,
-<a name="l10244"></a>10244 47, 18, 57, 47, 57, 57, 0, 63, 43, -3, 50, 47, 51, 43, 47, 18, 57, 17, 57, 57, 17, 51, 47, 43, 43,
-<a name="l10245"></a>10245 63, -19, 51, 47, -19, 63, -19, 17, 57, 47, 17, 18, 57, 47, 43, 57, 47, 43, 93, 57, 49, 48, 1, 43, 43,
-<a name="l10246"></a>10246 43, 43, 43, 93, 0, 93, 43, 43, 43, 1, 20, 6, 7, 38, 39, 38, 35, 34, 6, 35, 34, 39, 38, 39, 38,
-<a name="l10247"></a>10247 53, 52, 51, 50, 23, 22, 23, 22, 1, 35, 34, 39, 38, 53, 52, 38, 53, 2, 7, 6, 7, 6, 33, 53, 36,
-<a name="l10248"></a>10248 55, 54, 55, 54, 53, 52, 38, 39, 55, 54, 55, 22, 23, 22, 23, 22, 23, 22, 23, 22, 51, 51, 1, 20, 7,
-<a name="l10249"></a>10249 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20,
-<a name="l10250"></a>10250 22, 51, 50, 54, 3, 48, 4, 8, 56, 110, 122, 70, 15, 30, 20, 27, 58, 73, 44, 59, 41, 72, -103, -85, 116,
-<a name="l10251"></a>10251 -113, 1, -98, 61, 84, 51, 61, 7, 96, 75, 89, -94, -118, -2, -76, 1, 13, -124, -43, 110, -123, 25, 22, 33, 20,
-<a name="l10252"></a>10252 17, 26, 23, 16, 15, 19, 14, 18, 36, 24, 24, 61, -4, -125, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45,
-<a name="l10253"></a>10253 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 3, 48, 20, 28, 21, 125, -123, -109, 52, 35, 44, 58, 78,
-<a name="l10254"></a>10254 88, 63, 91, 101, -121, -91, -3, 87, 91, 110, -33, 16, 54, 7, -2, -11, 99, 116, 38, 32, 28, 81, 59, 94, 123,
-<a name="l10255"></a>10255 -108, -53, 98, -86, 89, 84, 49, 34, -112, -89, 115, -124, -94, 99, 126, 54, 36, 4, -109, 25, 20, 13, 15, 64, 46,
-<a name="l10256"></a>10256 35, 16, 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 3, 0, 83, -1, 29,
-<a name="l10257"></a>10257 4, 14, 5, -53, 0, 68, 0, 78, 0, 110, 1, 64, -71, 0, 81, -1, -32, 64, 15, 11, 17, 52, 84, 8, 86,
-<a name="l10258"></a>10258 74, 2, 100, 79, 102, 86, 108, 84, 94, -72, 2, -11, 64, 15, 102, 102, 108, 64, 18, 25, 52, 108, 108, 64, 84,
-<a name="l10259"></a>10259 -112, 84, 2, 84, -72, -1, -64, 64, 42, 11, 23, 52, 84, 84, 17, 60, 59, 0, 1, 2, 75, 31, 46, 55, 32,
-<a name="l10260"></a>10260 12, 17, 52, 21, 72, 23, 7, 55, 5, 35, 14, 75, 17, -113, 35, 1, 35, 64, 9, 17, 52, 35, 35, 46, 75,
-<a name="l10261"></a>10261 2, -72, 2, -17, -77, 0, 0, 75, 63, -66, 2, -14, 0, 46, 2, -14, 0, 17, 2, -17, 0, 75, 2, -21, 64,
-<a name="l10262"></a>10262 11, 100, 86, 97, 97, 105, 79, 79, 105, 84, 84, 90, -72, 3, 5, 64, 15, 64, 105, 105, 17, 31, 35, 42, 55,
-<a name="l10263"></a>10263 72, 7, 75, 21, 23, 17, 64, -72, 2, -5, 64, 11, 32, 63, 63, 60, 60, 59, 1, 2, 0, 0, 59, -72, 3,
-<a name="l10264"></a>10264 12, -78, 2, 2, 7, -70, 3, 12, 0, 23, -1, -64, 64, 9, 9, 10, 52, 23, 23, 17, 17, 42, 69, -72, 3,
-<a name="l10265"></a>10265 3, 64, 17, 11, 64, 13, 15, 52, 11, 64, 9, 11, 52, 11, 11, 112, 64, 42, 1, 42, -72, 1, 59, -123, 47,
-<a name="l10266"></a>10266 93, 17, 51, 47, 43, 43, -19, 17, 57, 47, 57, 47, 43, -3, 50, 47, -19, 51, 47, 18, 57, 17, 51, 47, 51,
-<a name="l10267"></a>10267 25, 47, 26, -19, 17, 18, 57, 57, 17, 57, 57, 17, 57, 57, 17, 51, 24, 47, 26, -3, 50, 47, 17, 51, 47,
-<a name="l10268"></a>10268 18, 57, 47, 57, 57, 0, 63, -19, 63, 63, 18, 57, 47, -19, 17, 18, 57, 47, 43, 93, 17, 18, 57, 17, 23,
-<a name="l10269"></a>10269 57, 43, 18, 57, 17, 18, 57, 17, 57, 57, 17, 51, 47, 43, 93, 51, 47, 43, 51, 47, -19, 17, 18, 57, 17,
-<a name="l10270"></a>10270 57, 57, 49, 48, 0, 93, 43, 1, 7, 39, 23, 20, 7, 6, 7, 22, 23, 22, 21, 20, 6, 7, 6, 6, 35,
-<a name="l10271"></a>10271 54, 53, 54, 55, 54, 55, 38, 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 35, 34, 39, 38, 39, 38, 38, 53,
-<a name="l10272"></a>10272 52, 55, 54, 51, 50, 23, 22, 23, 22, 23, 23, 22, 23, 54, 55, 54, 53, 39, 52, 54, 55, 23, 22, 23, 22,
-<a name="l10273"></a>10273 22, 3, 52, 38, 39, 6, 6, 7, 50, 55, 54, 3, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55,
-<a name="l10274"></a>10274 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 4, 14, 48, 59, 2, 34, 37,
-<a name="l10275"></a>10275 80, 38, 15, 23, 4, 7, 106, -15, 114, 1, 5, 19, -86, 117, 70, 32, 35, 84, 31, 24, 33, 19, 13, 30, 16,
-<a name="l10276"></a>10276 11, 22, 47, 41, 45, 36, 26, 8, 12, 29, 41, 78, 69, 85, 75, 73, 102, 45, 47, 67, 25, 22, 57, 23, 21,
-<a name="l10277"></a>10277 23, 4, 44, 24, 75, -16, 17, 29, 30, 119, 58, 118, 50, 85, -101, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59,
-<a name="l10278"></a>10278 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 5, 70, -76, 29, 91, -122, 126, -118, -121, 70, 40, 63,
-<a name="l10279"></a>10279 65, 37, 52, 35, 24, 27, 19, 13, 76, 65, 91, -111, -124, 55, 60, 127, 43, 26, 35, 15, 8, 44, 39, 57, 46,
-<a name="l10280"></a>10280 61, 43, 62, 35, 53, 78, 70, 114, 101, 117, -92, 74, 94, -121, -118, 120, -70, 33, 66, 107, 44, 6, 43, 26, 14,
-<a name="l10281"></a>10281 36, -4, 43, 22, 47, 54, 39, 102, 36, 7, 12, -2, 80, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31,
-<a name="l10282"></a>10282 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 3, 0, 74, -1, 29, 4, -50, 5, -34, 0, 23,
-<a name="l10283"></a>10283 0, 62, 0, 94, 1, 91, -71, 0, 65, -1, -32, -77, 11, 17, 52, 22, -72, -1, -32, -77, 15, 17, 52, 20, -72,
-<a name="l10284"></a>10284 -1, -32, -77, 15, 17, 52, 21, -72, -1, -42, -77, 14, 17, 52, 41, -72, -1, -42, -77, 11, 17, 52, 40, -72, -1,
-<a name="l10285"></a>10285 -32, 64, 9, 11, 17, 52, 91, 28, -119, 43, 2, 34, -72, -1, -32, 64, 30, 9, 10, 52, 43, 42, 9, 17, 52,
-<a name="l10286"></a>10286 42, 74, 9, 17, 52, 41, 84, 9, 17, 52, 40, 64, 9, 17, 52, 84, 63, 86, 70, 92, 68, 78, -72, 2, -11,
-<a name="l10287"></a>10287 64, 10, 86, 86, 92, 64, 18, 25, 52, 92, 92, 68, -72, -1, -64, -77, 18, 19, 52, 68, -72, -1, -64, 64, 28,
-<a name="l10288"></a>10288 9, 15, 52, 68, 68, 38, 7, 10, 64, 10, 17, 52, 10, 10, 18, 3, 32, 32, 48, 3, 64, 9, 24, 52, 3,
-<a name="l10289"></a>10289 3, 62, 18, -66, 2, -14, 0, 48, 2, -17, 0, 51, 2, -14, 0, 39, 2, -5, -78, 38, 38, 62, -70, 2, -17,
-<a name="l10290"></a>10290 0, 25, 2, -21, 64, 11, 84, 70, 81, 81, 89, 63, 63, 89, 68, 68, 74, -72, 3, 5, -73, 89, 89, 45, 38,
-<a name="l10291"></a>10291 7, 10, 0, 3, -72, -1, -64, -77, 24, 32, 52, 3, -72, -1, -64, 64, 13, 10, 15, 52, 3, 3, 16, 32, 55,
-<a name="l10292"></a>10292 45, 11, 48, 1, 48, -72, 3, 16, -78, 51, 51, 45, -72, 3, 16, -78, 55, 55, 24, -72, 2, -16, -77, 96, 38,
-<a name="l10293"></a>10293 38, 16, -72, 1, 59, -123, 47, 51, 47, 16, -11, 50, 47, -19, 51, 25, 47, 24, -19, 93, 17, 18, 57, 25, 18,
-<a name="l10294"></a>10294 57, 47, 43, 43, 51, 57, 57, 24, 17, 18, 57, 47, -3, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 0, 63,
-<a name="l10295"></a>10295 -19, 51, 47, -19, 63, -19, 63, 18, 57, 47, 43, 17, 57, 47, 17, 18, 57, 47, 43, 57, 17, 51, 47, 43, 43,
-<a name="l10296"></a>10296 51, 47, 43, 51, 47, -19, 17, 18, 57, 17, 57, 57, 49, 48, 1, 43, 43, 43, 43, 43, 93, 0, 43, 43, 43,
-<a name="l10297"></a>10297 43, 43, 43, 1, 20, 6, 7, 38, 39, 38, 35, 34, 6, 35, 34, 39, 38, 39, 38, 53, 52, 51, 50, 23, 22,
-<a name="l10298"></a>10298 23, 22, 1, 35, 34, 39, 38, 53, 52, 38, 53, 2, 7, 6, 7, 6, 33, 53, 36, 55, 54, 55, 54, 53, 52,
-<a name="l10299"></a>10299 38, 39, 55, 54, 55, 22, 23, 22, 23, 22, 23, 22, 23, 22, 51, 51, 1, 20, 7, 6, 7, 7, 52, 55, 38,
-<a name="l10300"></a>10300 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3, 48,
-<a name="l10301"></a>10301 4, 8, 56, 110, 122, 70, 15, 30, 20, 27, 58, 73, 44, 59, 41, 72, -103, -85, 116, -113, 1, -98, 61, 84, 51,
-<a name="l10302"></a>10302 61, 7, 96, 75, 89, -94, -118, -2, -76, 1, 13, -124, -43, 110, -123, 25, 22, 33, 20, 17, 26, 23, 16, 15, 19,
-<a name="l10303"></a>10303 14, 18, 36, 24, 24, 61, -3, 11, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29, 12, 11, 31, 36,
-<a name="l10304"></a>10304 22, 43, 93, 33, 22, 19, 3, 48, 20, 28, 21, 125, -123, -109, 52, 35, 44, 58, 78, 88, 63, 91, 101, -121, -91,
-<a name="l10305"></a>10305 -3, 87, 91, 110, -33, 16, 54, 7, -2, -11, 99, 116, 38, 32, 28, 81, 59, 94, 123, -108, -53, 98, -86, 89, 84,
-<a name="l10306"></a>10306 49, 34, -112, -89, 115, -124, -94, 99, 126, 54, 36, -3, -45, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31,
-<a name="l10307"></a>10307 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 0, 2, 0, 83, 0, -94, 4, 14, 5, -53, 0,
-<a name="l10308"></a>10308 68, 0, 78, 0, -32, 64, 41, 84, 8, 86, 74, 2, 60, 59, 0, 1, 2, 75, 31, 46, 55, 32, 12, 17, 52,
-<a name="l10309"></a>10309 21, 72, 23, 7, 55, 5, 35, 14, 75, 17, -113, 35, 1, 35, 64, 9, 17, 52, 35, 35, 46, 75, 2, -72, 2,
-<a name="l10310"></a>10310 -17, -77, 0, 0, 75, 63, -65, 2, -14, 0, 46, 2, -14, 0, 17, 2, -17, 0, 64, 0, 75, 2, -21, 64, 11,
-<a name="l10311"></a>10311 31, 35, 42, 55, 72, 7, 75, 21, 23, 17, 64, -72, 2, -5, 64, 11, 32, 63, 63, 60, 60, 59, 1, 2, 0,
-<a name="l10312"></a>10312 0, 59, -72, 3, 12, -78, 2, 2, 7, -70, 3, 12, 0, 23, -1, -64, 64, 9, 9, 10, 52, 23, 23, 17, 17,
-<a name="l10313"></a>10313 42, 69, -72, 3, 3, 64, 17, 11, 64, 13, 15, 52, 11, 64, 9, 11, 52, 11, 11, 80, 64, 42, 1, 42, -72,
-<a name="l10314"></a>10314 1, 21, -123, 47, 93, 17, 51, 47, 43, 43, -19, 17, 57, 47, 57, 47, 43, -3, 50, 47, -19, 51, 47, 18, 57,
-<a name="l10315"></a>10315 17, 51, 47, 51, 25, 47, 26, -19, 17, 18, 57, 57, 17, 57, 57, 17, 57, 57, 0, 24, 63, 26, -19, 63, 63,
-<a name="l10316"></a>10316 18, 57, 47, -19, 17, 18, 57, 47, 43, 93, 17, 18, 57, 17, 23, 57, 43, 18, 57, 17, 18, 57, 17, 57, 57,
-<a name="l10317"></a>10317 49, 48, 0, 93, 1, 7, 39, 23, 20, 7, 6, 7, 22, 23, 22, 21, 20, 6, 7, 6, 6, 35, 54, 53, 54,
-<a name="l10318"></a>10318 55, 54, 55, 38, 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 35, 34, 39, 38, 39, 38, 38, 53, 52, 55, 54,
-<a name="l10319"></a>10319 51, 50, 23, 22, 23, 22, 23, 23, 22, 23, 54, 55, 54, 53, 39, 52, 54, 55, 23, 22, 23, 22, 22, 3, 52,
-<a name="l10320"></a>10320 38, 39, 6, 6, 7, 50, 55, 54, 4, 14, 48, 59, 2, 34, 37, 80, 38, 15, 23, 4, 7, 106, -15, 114, 1,
-<a name="l10321"></a>10321 5, 19, -86, 117, 70, 32, 35, 84, 31, 24, 33, 19, 13, 30, 16, 11, 22, 47, 41, 45, 36, 26, 8, 12, 29,
-<a name="l10322"></a>10322 41, 78, 69, 85, 75, 73, 102, 45, 47, 67, 25, 22, 57, 23, 21, 23, 4, 44, 24, 75, -16, 17, 29, 30, 119,
-<a name="l10323"></a>10323 58, 118, 50, 85, 5, 70, -76, 29, 91, -122, 126, -118, -121, 70, 40, 63, 65, 37, 52, 35, 24, 27, 19, 13, 76,
-<a name="l10324"></a>10324 65, 91, -111, -124, 55, 60, 127, 43, 26, 35, 15, 8, 44, 39, 57, 46, 61, 43, 62, 35, 53, 78, 70, 114, 101,
-<a name="l10325"></a>10325 117, -92, 74, 94, -121, -118, 120, -70, 33, 66, 107, 44, 6, 43, 26, 14, 36, -4, 43, 22, 47, 54, 39, 102, 36,
-<a name="l10326"></a>10326 7, 12, 0, 0, 2, 0, 74, 0, -14, 4, -50, 5, -34, 0, 23, 0, 62, 0, -11, -71, 0, 22, -1, -32, -77,
-<a name="l10327"></a>10327 15, 17, 52, 20, -72, -1, -32, -77, 15, 17, 52, 21, -72, -1, -42, -77, 14, 17, 52, 41, -72, -1, -42, -77, 11,
-<a name="l10328"></a>10328 17, 52, 40, -72, -1, -32, 64, 9, 11, 17, 52, 91, 28, -119, 43, 2, 34, -72, -1, -32, 64, 45, 9, 10, 52,
-<a name="l10329"></a>10329 43, 42, 9, 17, 52, 42, 74, 9, 17, 52, 41, 84, 9, 17, 52, 40, 64, 9, 17, 52, 7, 10, 64, 10, 17,
-<a name="l10330"></a>10330 52, 10, 10, 18, 3, 32, 32, 48, 3, 64, 9, 24, 52, 3, 3, 62, 18, -66, 2, -14, 0, 48, 2, -17, 0,
-<a name="l10331"></a>10331 51, 2, -14, 0, 39, 2, -5, -78, 38, 38, 62, -70, 2, -17, 0, 25, 2, -21, -77, 7, 10, 0, 3, -72, -1,
-<a name="l10332"></a>10332 -64, -77, 24, 32, 52, 3, -72, -1, -64, 64, 13, 10, 15, 52, 3, 3, 16, 32, 55, 45, 11, 48, 1, 48, -72,
-<a name="l10333"></a>10333 3, 16, -78, 51, 51, 45, -72, 3, 16, -78, 55, 55, 24, -72, 2, -16, -77, 64, 38, 38, 16, -72, 1, 29, -123,
-<a name="l10334"></a>10334 47, 51, 47, 16, -11, 50, 47, -19, 51, 25, 47, 24, -19, 93, 17, 18, 57, 25, 18, 57, 47, 43, 43, 51, 57,
-<a name="l10335"></a>10335 57, 0, 24, 63, -19, 51, 47, -19, 63, -19, 63, 18, 57, 47, 43, 17, 57, 47, 17, 18, 57, 47, 43, 57, 49,
-<a name="l10336"></a>10336 48, 1, 43, 43, 43, 43, 43, 93, 0, 43, 43, 43, 43, 43, 1, 20, 6, 7, 38, 39, 38, 35, 34, 6, 35,
-<a name="l10337"></a>10337 34, 39, 38, 39, 38, 53, 52, 51, 50, 23, 22, 23, 22, 1, 35, 34, 39, 38, 53, 52, 38, 53, 2, 7, 6,
-<a name="l10338"></a>10338 7, 6, 33, 53, 36, 55, 54, 55, 54, 53, 52, 38, 39, 55, 54, 55, 22, 23, 22, 23, 22, 23, 22, 23, 22,
-<a name="l10339"></a>10339 51, 51, 3, 48, 4, 8, 56, 110, 122, 70, 15, 30, 20, 27, 58, 73, 44, 59, 41, 72, -103, -85, 116, -113, 1,
-<a name="l10340"></a>10340 -98, 61, 84, 51, 61, 7, 96, 75, 89, -94, -118, -2, -76, 1, 13, -124, -43, 110, -123, 25, 22, 33, 20, 17, 26,
-<a name="l10341"></a>10341 23, 16, 15, 19, 14, 18, 36, 24, 24, 61, 3, 48, 20, 28, 21, 125, -123, -109, 52, 35, 44, 58, 78, 88, 63,
-<a name="l10342"></a>10342 91, 101, -121, -91, -3, 87, 91, 110, -33, 16, 54, 7, -2, -11, 99, 116, 38, 32, 28, 81, 59, 94, 123, -108, -53,
-<a name="l10343"></a>10343 98, -86, 89, 84, 49, 34, -112, -89, 115, -124, -94, 99, 126, 54, 36, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l10344"></a>10344 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l10345"></a>10345 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l10346"></a>10346 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l10347"></a>10347 -1, -1, 0, 70, 5, 98, 1, -100, 6, 49, 0, 22, 2, -12, 0, 0, -1, -1, 0, 70, 4, -41, 1, -100, 6,
-<a name="l10348"></a>10348 61, 0, 22, 2, -15, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l10349"></a>10349 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l10350"></a>10350 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l10351"></a>10351 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l10352"></a>10352 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l10353"></a>10353 5, 0, -5, 0, 32, 4, -64, 0, -1, -1, 0, 70, 4, -41, 1, 81, 6, 13, 0, 22, 2, -8, 0, 0, -1,
-<a name="l10354"></a>10354 -1, 0, 70, 4, -41, 1, -79, 6, 25, 0, 22, 2, -9, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l10355"></a>10355 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l10356"></a>10356 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l10357"></a>10357 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, -1,
-<a name="l10358"></a>10358 -1, 0, 72, 4, -41, 1, -83, 6, -118, 0, 22, 2, -11, 0, 0, -1, -1, 0, 70, 4, -41, 1, -27, 6, 90,
-<a name="l10359"></a>10359 0, 22, 2, -14, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l10360"></a>10360 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l10361"></a>10361 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4,
-<a name="l10362"></a>10362 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l10363"></a>10363 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l10364"></a>10364 0, -5, 0, 32, 4, -64, 0, -1, -1, 0, 70, 4, -41, 1, -79, 6, -71, 0, 22, 3, 73, 0, 0, -1, -1,
-<a name="l10365"></a>10365 0, 70, 4, -41, 1, -79, 7, 87, 0, 22, 3, 18, 0, 0, -1, -1, 0, 70, 4, -41, 1, -79, 6, -45, 0,
-<a name="l10366"></a>10366 22, 3, 75, 0, 0, -1, -1, 0, 70, 4, -41, 1, -79, 7, 61, 0, 22, 3, 72, 0, 0, -1, -1, 0, 64,
-<a name="l10367"></a>10367 4, -39, 1, -79, 7, 46, 0, 22, 3, 74, 0, 0, -1, -1, 0, 48, 4, -41, 1, -49, 7, 119, 0, 22, 3,
-<a name="l10368"></a>10368 71, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l10369"></a>10369 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, -1, -1, 0, 70, -1,
-<a name="l10370"></a>10370 -43, 1, -100, 0, -92, 0, 22, 2, -10, 0, 0, -1, -1, 0, 70, -2, -10, 1, -100, 0, 91, 0, 22, 2, -13,
-<a name="l10371"></a>10371 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l10372"></a>10372 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l10373"></a>10373 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l10374"></a>10374 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l10375"></a>10375 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l10376"></a>10376 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l10377"></a>10377 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l10378"></a>10378 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l10379"></a>10379 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0,
-<a name="l10380"></a>10380 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0,
-<a name="l10381"></a>10381 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l10382"></a>10382 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l10383"></a>10383 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l10384"></a>10384 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3,
-<a name="l10385"></a>10385 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5,
-<a name="l10386"></a>10386 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17,
-<a name="l10387"></a>10387 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1,
-<a name="l10388"></a>10388 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0,
-<a name="l10389"></a>10389 -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0,
-<a name="l10390"></a>10390 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0,
-<a name="l10391"></a>10391 -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l10392"></a>10392 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l10393"></a>10393 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4,
-<a name="l10394"></a>10394 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l10395"></a>10395 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l10396"></a>10396 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l10397"></a>10397 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l10398"></a>10398 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l10399"></a>10399 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l10400"></a>10400 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l10401"></a>10401 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l10402"></a>10402 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l10403"></a>10403 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1,
-<a name="l10404"></a>10404 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l10405"></a>10405 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l10406"></a>10406 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l10407"></a>10407 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l10408"></a>10408 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l10409"></a>10409 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l10410"></a>10410 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l10411"></a>10411 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l10412"></a>10412 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l10413"></a>10413 -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l10414"></a>10414 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l10415"></a>10415 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l10416"></a>10416 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l10417"></a>10417 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l10418"></a>10418 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l10419"></a>10419 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l10420"></a>10420 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l10421"></a>10421 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0,
-<a name="l10422"></a>10422 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0,
-<a name="l10423"></a>10423 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l10424"></a>10424 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l10425"></a>10425 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l10426"></a>10426 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3,
-<a name="l10427"></a>10427 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5,
-<a name="l10428"></a>10428 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17,
-<a name="l10429"></a>10429 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1,
-<a name="l10430"></a>10430 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0,
-<a name="l10431"></a>10431 -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0,
-<a name="l10432"></a>10432 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0,
-<a name="l10433"></a>10433 -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l10434"></a>10434 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l10435"></a>10435 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4,
-<a name="l10436"></a>10436 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l10437"></a>10437 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l10438"></a>10438 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l10439"></a>10439 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l10440"></a>10440 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0,
-<a name="l10441"></a>10441 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l10442"></a>10442 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l10443"></a>10443 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l10444"></a>10444 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l10445"></a>10445 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1,
-<a name="l10446"></a>10446 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l10447"></a>10447 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l10448"></a>10448 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l10449"></a>10449 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l10450"></a>10450 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l10451"></a>10451 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l10452"></a>10452 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l10453"></a>10453 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l10454"></a>10454 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l10455"></a>10455 -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l10456"></a>10456 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l10457"></a>10457 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l10458"></a>10458 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l10459"></a>10459 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l10460"></a>10460 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l10461"></a>10461 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 0, -54, 1,
-<a name="l10462"></a>10462 24, 1, -55, 5, -73, 0, 18, 0, 30, 0, 62, -71, 0, 16, 2, -14, -73, 7, 64, 9, 10, 52, 7, 7, 28,
-<a name="l10463"></a>10463 -68, 2, -18, 0, 22, 2, -20, 0, 6, 2, -15, -76, 7, 7, 19, 25, 0, -72, 2, -19, -78, 13, 13, 19, -71,
-<a name="l10464"></a>10464 2, -19, 0, 25, 47, -19, 51, 47, -19, 17, 18, 57, 47, -19, 0, 63, -3, 50, 47, 43, 63, 49, 48, 1, 20,
-<a name="l10465"></a>10465 7, 6, 7, 6, 21, 35, 52, 39, 38, 39, 38, 53, 52, 54, 51, 50, 22, 3, 20, 6, 35, 34, 38, 53, 52,
-<a name="l10466"></a>10466 54, 51, 50, 22, 1, -55, 26, 43, 5, 26, 57, 25, 10, 37, 26, 70, 55, 57, 73, 6, 72, 52, 50, 72, 72,
-<a name="l10467"></a>10467 52, 50, 72, 5, 29, 67, 118, -61, 28, -110, -120, 126, -103, 58, -74, 126, 45, 61, 93, 92, -4, 55, 50, 72, 72,
-<a name="l10468"></a>10468 50, 51, 74, 74, 0, 0, 1, 0, -57, 1, 24, 1, -49, 2, 34, 0, 11, 0, 22, -66, 0, 9, 2, -18, 0,
-<a name="l10469"></a>10469 3, 2, -20, 0, 0, 2, -19, 0, 6, 47, -19, 0, 63, -19, 49, 48, 1, 20, 6, 35, 34, 38, 53, 52, 54,
-<a name="l10470"></a>10470 51, 50, 22, 1, -49, 79, 55, 54, 76, 77, 53, 56, 78, 1, -99, 54, 79, 78, 55, 54, 79, 78, 0, 0, 2,
-<a name="l10471"></a>10471 0, -58, 1, 24, 1, -51, 4, 87, 0, 11, 0, 23, 0, 42, -71, 0, 9, 2, -18, -78, 3, 3, 21, -68, 2,
-<a name="l10472"></a>10472 -18, 0, 15, 2, -20, 0, 0, 2, -19, -78, 6, 6, 12, -71, 2, -19, 0, 18, 47, -19, 51, 47, -19, 0, 63,
-<a name="l10473"></a>10473 -3, 50, 47, -19, 49, 48, 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 17, 20, 6, 35, 34, 38, 53,
-<a name="l10474"></a>10474 52, 54, 51, 50, 22, 1, -51, 78, 56, 53, 76, 74, 55, 56, 78, 79, 55, 53, 76, 75, 54, 56, 78, 3, -46,
-<a name="l10475"></a>10475 56, 78, 78, 56, 55, 78, 78, -3, -108, 54, 79, 78, 55, 54, 79, 78, 0, 2, 1, 0, 0, 0, 5, 0, 5,
-<a name="l10476"></a>10476 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64,
-<a name="l10477"></a>10477 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33,
-<a name="l10478"></a>10478 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0,
-<a name="l10479"></a>10479 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1,
-<a name="l10480"></a>10480 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0,
-<a name="l10481"></a>10481 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4,
-<a name="l10482"></a>10482 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0,
-<a name="l10483"></a>10483 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64,
-<a name="l10484"></a>10484 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33,
-<a name="l10485"></a>10485 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5,
-<a name="l10486"></a>10486 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64,
-<a name="l10487"></a>10487 -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0,
-<a name="l10488"></a>10488 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4,
-<a name="l10489"></a>10489 -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17,
-<a name="l10490"></a>10490 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0,
-<a name="l10491"></a>10491 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3,
-<a name="l10492"></a>10492 -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7,
-<a name="l10493"></a>10493 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32,
-<a name="l10494"></a>10494 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33,
-<a name="l10495"></a>10495 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0,
-<a name="l10496"></a>10496 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32,
-<a name="l10497"></a>10497 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0,
-<a name="l10498"></a>10498 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0,
-<a name="l10499"></a>10499 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37,
-<a name="l10500"></a>10500 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0,
-<a name="l10501"></a>10501 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4,
-<a name="l10502"></a>10502 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3,
-<a name="l10503"></a>10503 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5,
-<a name="l10504"></a>10504 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17,
-<a name="l10505"></a>10505 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1,
-<a name="l10506"></a>10506 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0,
-<a name="l10507"></a>10507 -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0,
-<a name="l10508"></a>10508 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0,
-<a name="l10509"></a>10509 -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33,
-<a name="l10510"></a>10510 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2,
-<a name="l10511"></a>10511 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4,
-<a name="l10512"></a>10512 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0,
-<a name="l10513"></a>10513 0, 3, 0, 7, 0, 0, 33, 17, 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5,
-<a name="l10514"></a>10514 0, -5, 0, 32, 4, -64, 0, 0, 2, 1, 0, 0, 0, 5, 0, 5, 0, 0, 3, 0, 7, 0, 0, 33, 17,
-<a name="l10515"></a>10515 33, 17, 37, 33, 17, 33, 1, 0, 4, 0, -4, 32, 3, -64, -4, 64, 5, 0, -5, 0, 32, 4, -64, 0, 0,
-<a name="l10516"></a>10516 1, -1, -70, 1, 37, 1, 0, 1, -45, 0, 3, 0, 24, -67, 0, 2, 2, -17, 0, 1, 2, -21, 0, 0, 2,
-<a name="l10517"></a>10517 -16, -79, 5, 1, 47, 16, -27, 0, 63, -19, 49, 48, 1, 33, 53, 33, 1, 0, -2, -70, 1, 70, 1, 37, -82,
-<a name="l10518"></a>10518 0, 0, 1, -1, -70, 1, 37, 8, 0, 1, -45, 0, 3, 0, 24, -67, 0, 2, 2, -17, 0, 1, 2, -21, 0,
-<a name="l10519"></a>10519 0, 2, -16, -79, 5, 1, 47, 16, -27, 0, 63, -19, 49, 48, 1, 33, 53, 33, 8, 0, -9, -70, 8, 70, 1,
-<a name="l10520"></a>10520 37, -82, 0, 0, 1, -1, -70, 1, 37, 16, 0, 1, -45, 0, 3, 0, 24, -67, 0, 2, 2, -17, 0, 1, 2,
-<a name="l10521"></a>10521 -21, 0, 0, 2, -16, -79, 5, 1, 47, 16, -27, 0, 63, -19, 49, 48, 1, 33, 53, 33, 16, 0, -17, -70, 16,
-<a name="l10522"></a>10522 70, 1, 37, -82, 0, 0, 2, 0, 99, -1, -25, 6, -84, 5, -44, 0, 15, 0, 44, 1, 1, -75, 27, 16, 13,
-<a name="l10523"></a>10523 14, 52, 39, -72, -1, -32, 64, 19, 16, 17, 52, 39, 32, 9, 10, 52, 10, 32, 9, 14, 52, 6, 32, 9, 14,
-<a name="l10524"></a>10524 52, 2, -72, -1, -32, -77, 9, 14, 52, 14, -72, -1, -32, 64, 70, 9, 14, 52, 40, 16, 23, 23, 12, 4, 16,
-<a name="l10525"></a>10525 30, 17, 3, 12, 30, 37, 3, 4, 30, 29, 9, 23, 40, 25, 8, 44, 44, 18, 38, 17, 26, 16, 16, 2, 85,
-<a name="l10526"></a>10526 17, 35, 11, 11, 6, 85, 17, 28, 12, 12, 6, 85, 17, 22, 13, 13, 6, 85, 17, 12, 15, 15, 6, 85, 17,
-<a name="l10527"></a>10527 56, 16, 16, 6, 85, 17, 17, 8, 38, 25, -72, -1, -26, -76, 16, 16, 2, 85, 25, -72, -1, -32, -76, 13, 13,
-<a name="l10528"></a>10528 2, 85, 25, -72, -1, -34, -76, 12, 12, 2, 85, 25, -72, -1, -32, -76, 11, 11, 6, 85, 25, -72, -1, -28, -76,
-<a name="l10529"></a>10529 12, 12, 6, 85, 25, -72, -1, -24, -76, 13, 13, 6, 85, 25, -72, -1, -46, -76, 16, 16, 6, 85, 25, -72, -1,
-<a name="l10530"></a>10530 -64, 64, 21, 11, 13, 52, 0, 25, 1, 25, 0, 38, 33, 8, 11, 11, 6, 85, 32, 33, 1, 33, 99, 45, 16,
-<a name="l10531"></a>10531 -10, 93, 43, -19, 47, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 51, 47, 43, 43, 43, 43, 43, 43, -19, 57,
-<a name="l10532"></a>10532 47, 17, 18, 57, 57, 0, 63, -19, 63, -19, 63, -19, 17, 18, 57, 47, 18, 57, 49, 48, 1, 43, 43, 43, 43,
-<a name="l10533"></a>10533 43, 43, 43, 1, 16, 23, 22, 51, 50, 55, 54, 17, 16, 39, 38, 35, 34, 7, 6, 37, 53, 51, 21, 20, 7,
-<a name="l10534"></a>10534 6, 7, 22, 21, 20, 2, 4, 35, 34, 36, 2, 53, 16, 55, 54, 33, 50, 4, 23, 54, 55, 54, 39, 1, 43,
-<a name="l10535"></a>10535 -113, -118, -37, -32, -119, -115, -19, 117, -111, -33, -125, -107, 4, -64, -63, 38, 52, -113, 26, -75, -2, -73, -65, -50, -2,
-<a name="l10536"></a>10536 -71, -88, -60, -65, 1, 59, -29, 1, 95, 73, 91, 37, 30, 1, 2, -57, -2, -4, -98, -104, -102, -96, 1, 21, 1,
-<a name="l10537"></a>10537 114, -106, 73, -115, -96, -7, -47, -91, 124, 66, 91, 76, 108, 121, -32, -2, -95, -75, -57, 1, 91, -63, 1, 104, -44,
-<a name="l10538"></a>10538 -50, -9, -48, 49, 56, 45, 86, 0, 2, 0, 68, -1, -24, 5, 0, 4, 64, 0, 15, 0, 44, 1, 19, 64, 14,
-<a name="l10539"></a>10539 89, 39, 1, 6, 32, 12, 14, 52, 10, 32, 12, 14, 52, 2, -72, -1, -32, -77, 12, 14, 52, 14, -72, -1, -32,
-<a name="l10540"></a>10540 64, 52, 12, 14, 52, 41, 16, 23, 23, 12, 4, 16, 28, 17, 7, 12, 28, 37, 7, 4, 28, 29, 11, 23, 40,
-<a name="l10541"></a>10541 25, 8, 44, 44, 18, 38, 17, 32, 16, 16, 6, 85, 17, 48, 15, 15, 6, 85, 17, 18, 11, 13, 6, 85, 17,
-<a name="l10542"></a>10542 17, 8, 36, 25, -72, -1, -26, 64, 17, 15, 15, 2, 85, 25, 24, 13, 13, 2, 85, 25, 16, 11, 11, 2, 85,
-<a name="l10543"></a>10543 25, -72, -1, -15, -76, 16, 16, 6, 85, 25, -72, -1, -45, -76, 15, 15, 6, 85, 25, -72, -1, -42, -76, 13, 13,
-<a name="l10544"></a>10544 6, 85, 25, -72, -1, -8, 64, 48, 11, 12, 6, 85, 0, 25, 32, 25, 2, 25, 0, 36, 0, 64, 36, 37, 52,
-<a name="l10545"></a>10545 33, 12, 14, 15, 2, 85, 33, 18, 13, 13, 2, 85, 33, 12, 12, 12, 2, 85, 33, 28, 11, 11, 2, 85, 33,
-<a name="l10546"></a>10546 8, 16, 16, 6, 85, 33, -72, -1, -4, 64, 30, 15, 15, 6, 85, 33, 8, 13, 13, 6, 85, 33, 22, 12, 12,
-<a name="l10547"></a>10547 6, 85, 33, 14, 11, 11, 6, 85, 31, 33, 63, 33, 2, 33, 49, 45, 16, -10, 93, 43, 43, 43, 43, 43, 43,
-<a name="l10548"></a>10548 43, 43, 43, 43, -19, 47, 93, 43, 43, 43, 43, 43, 43, 43, -19, 51, 47, 43, 43, 43, -19, 57, 47, 17, 18,
-<a name="l10549"></a>10549 57, 57, 0, 63, -19, 63, -19, 63, -19, 17, 18, 57, 47, 18, 57, 49, 48, 1, 43, 43, 43, 43, 93, 19, 20,
-<a name="l10550"></a>10550 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 37, 53, 51, 21, 20, 7, 6, 7, 20, 21, 16,
-<a name="l10551"></a>10551 7, 6, 35, 34, 39, 38, 17, 16, 55, 54, 51, 50, 23, 22, 23, 54, 54, 39, -3, 89, 84, -116, -116, 83, 89,
-<a name="l10552"></a>10552 90, 84, -118, -115, 83, 89, 3, 66, -63, 38, 49, -126, -16, 118, -117, -28, -123, -119, -92, -119, -59, -37, -117, 105, 26,
-<a name="l10553"></a>10553 68, 59, 1, 2, 19, -59, 108, 102, 102, 109, -54, -65, 107, 102, 101, 108, -105, -47, -91, 124, 66, 86, 72, 14, 15,
-<a name="l10554"></a>10554 -2, -116, -123, 65, -113, -108, 1, 8, 1, 39, -114, 118, -113, 109, -84, 42, 90, 85, 0, 0, 1, 0, -95, -1, -25,
-<a name="l10555"></a>10555 6, -126, 5, -70, 0, 37, 1, 37, -75, 15, 52, 12, 14, 52, 12, -72, -1, -32, 64, 19, 12, 14, 52, 38, 24,
-<a name="l10556"></a>10556 1, 33, 7, 7, 26, 0, 28, 1, 2, 31, 2, 19, 2, 26, -72, 2, -69, 64, 54, 14, 9, 37, 37, 2, 14,
-<a name="l10557"></a>10557 9, 13, 2, 85, 2, 38, 1, 18, 10, 10, 2, 85, 1, 68, 11, 11, 6, 85, 1, 8, 12, 12, 6, 85, 1,
-<a name="l10558"></a>10558 30, 13, 13, 6, 85, 1, 68, 15, 15, 6, 85, 1, 68, 16, 16, 6, 85, 1, 1, 30, 38, 32, 8, -72, -1,
-<a name="l10559"></a>10559 -20, -76, 15, 15, 2, 85, 8, -72, -1, -18, 64, 11, 13, 13, 2, 85, 8, 16, 12, 12, 2, 85, 8, -72, -1,
-<a name="l10560"></a>10560 -59, 64, 11, 11, 11, 6, 85, 8, 28, 12, 12, 6, 85, 8, -72, -1, -15, -76, 13, 13, 6, 85, 8, -72, -1,
-<a name="l10561"></a>10561 -45, -76, 15, 15, 6, 85, 8, -72, -1, -45, 64, 14, 16, 16, 6, 85, 8, 21, 38, 18, 32, 16, 16, 2, 85,
-<a name="l10562"></a>10562 18, -72, -1, -10, -76, 15, 15, 2, 85, 18, -72, -1, -10, -76, 13, 13, 2, 85, 18, -72, -1, -6, -76, 12, 12,
-<a name="l10563"></a>10563 2, 85, 18, -72, -1, -6, -76, 12, 12, 6, 85, 18, -72, -1, -10, -76, 13, 13, 6, 85, 18, -72, -1, -15, -76,
-<a name="l10564"></a>10564 15, 15, 6, 85, 18, -72, -1, -8, -76, 16, 16, 6, 85, 18, -72, -1, -64, -75, 19, 21, 52, 18, 93, 38, 16,
-<a name="l10565"></a>10565 -10, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 47, 43, 43, 43, 43, 43, 43, 43, 43, 60, -19, 51, 47, 43,
-<a name="l10566"></a>10566 43, 43, 43, 43, 43, -19, 43, 57, 47, 0, 63, -19, 63, 63, 63, -19, 17, 57, 47, 57, 49, 48, 1, 93, 43,
-<a name="l10567"></a>10567 43, 1, 53, 51, 21, 20, 7, 6, 7, 17, 20, 7, 6, 7, 6, 35, 32, 3, 38, 53, 17, 51, 17, 20, 23,
-<a name="l10568"></a>10568 22, 22, 51, 50, 55, 54, 17, 17, 51, 17, 54, 55, 54, 53, 5, -63, -63, 36, 99, -39, 50, 52, -128, -125, -44,
-<a name="l10569"></a>10569 -2, 103, 115, 56, -62, 36, 34, -82, 125, -37, 86, 91, -62, -100, 70, 27, 4, -23, -47, -91, -99, 62, -83, 10, -2,
-<a name="l10570"></a>10570 -24, -31, 126, -125, 80, 82, 1, 21, -122, -23, 3, 79, -4, -78, -67, 93, 89, 99, 97, 102, 1, 15, 3, 78, -2,
-<a name="l10571"></a>10571 19, 16, 108, 42, 118, 0, 0, 1, 0, -125, -1, -24, 5, 29, 4, 38, 0, 36, 1, 28, -75, 27, 16, 11, 13,
-<a name="l10572"></a>10572 52, 24, -72, -1, -32, 64, 83, 16, 17, 52, 14, 32, 9, 10, 52, 10, 19, 25, 32, 7, 7, 25, 0, 28, 1,
-<a name="l10573"></a>10573 6, 30, 6, 19, 6, 9, 10, 25, 28, 12, 36, 36, 2, 38, 1, 30, 11, 11, 6, 85, 1, 20, 12, 12, 6,
-<a name="l10574"></a>10574 85, 1, 45, 13, 13, 6, 85, 1, 12, 15, 15, 6, 85, 1, 32, 16, 16, 6, 85, 1, 1, 8, 9, 51, 29,
-<a name="l10575"></a>10575 37, 31, 8, 44, 16, 16, 2, 85, 8, 18, 14, 14, 2, 85, 8, -72, -1, -16, 64, 11, 13, 13, 2, 85, 8,
-<a name="l10576"></a>10576 10, 12, 12, 2, 85, 8, -72, -1, -12, 64, 11, 11, 11, 6, 85, 8, 10, 12, 12, 6, 85, 8, -72, -1, -30,
-<a name="l10577"></a>10577 -76, 13, 13, 6, 85, 8, -72, -1, -34, -73, 16, 16, 6, 85, 8, 21, 37, 18, -72, -1, -8, -76, 16, 16, 2,
-<a name="l10578"></a>10578 85, 18, -72, -1, -8, 64, 23, 14, 14, 2, 85, 18, 4, 12, 12, 2, 85, 18, 10, 11, 11, 6, 85, 18, 4,
-<a name="l10579"></a>10579 12, 12, 6, 85, 18, -72, -1, -4, -76, 13, 13, 6, 85, 18, -72, -1, -14, -76, 15, 16, 6, 85, 18, -72, -1,
-<a name="l10580"></a>10580 -64, 64, 18, 51, 54, 52, -16, 18, 1, 0, 18, 32, 18, -48, 18, -32, 18, 4, 18, 78, 37, 16, -10, 93, 113,
-<a name="l10581"></a>10581 43, 43, 43, 43, 43, 43, 43, 43, -19, 47, 43, 43, 43, 43, 43, 43, 43, 43, 60, -3, -28, 17, 51, 47, 43,
-<a name="l10582"></a>10582 43, 43, 43, 43, -19, 57, 47, 0, 47, -19, 63, 63, 63, 63, -19, 17, 57, 47, 57, 17, 18, 57, 49, 48, 1,
-<a name="l10583"></a>10583 43, 43, 0, 43, 1, 53, 51, 21, 20, 7, 6, 7, 17, 35, 53, 6, 35, 34, 38, 38, 39, 38, 53, 17, 51,
-<a name="l10584"></a>10584 17, 20, 23, 22, 51, 50, 54, 54, 53, 17, 51, 17, 54, 55, 54, 53, 4, 92, -63, 36, 92, -67, -95, 124, -43,
-<a name="l10585"></a>10585 93, -93, 80, 16, 11, -76, 11, 35, -83, 83, -115, 58, -76, 127, 63, 28, 3, 85, -47, -91, -99, 62, -96, 20, -2,
-<a name="l10586"></a>10586 14, -100, -76, 71, 110, 79, 54, 114, 2, -110, -3, -77, -113, 47, -104, 84, -114, -120, 2, 57, -2, 24, 22, 97, 42,
-<a name="l10587"></a>10587 118, 0, 0, 1, -3, -36, 6, -115, -1, 69, 7, 43, 0, 3, 0, 44, -73, 1, 32, 14, 17, 52, 1, -128, 2,
-<a name="l10588"></a>10588 -70, 3, 23, 0, 0, 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -71, 2, 96, 0, 2, 47, -19, 93, -3,
-<a name="l10589"></a>10589 -19, 0, 125, 63, 26, -51, 49, 48, 1, 43, 3, 35, 39, 51, -69, -126, -25, -30, 6, -115, -98, 0, 0, 1, -4,
-<a name="l10590"></a>10590 47, 6, -115, -3, -104, 7, 43, 0, 3, 0, 44, -73, 1, 32, 14, 17, 52, 1, -128, 2, -70, 3, 23, 0, 0,
-<a name="l10591"></a>10591 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -71, 2, 96, 0, 2, 47, -19, 93, -3, -19, 0, 125, 63, 26,
-<a name="l10592"></a>10592 -51, 49, 48, 1, 43, 1, 35, 39, 51, -3, -104, -126, -25, -30, 6, -115, -98, 0, 1, -4, -90, 6, 11, -2, 30,
-<a name="l10593"></a>10593 7, 35, 0, 3, 0, 83, -75, 1, 32, 14, 17, 52, 1, -72, -1, -64, 64, 31, 9, 10, 52, 1, -121, 31, 2,
-<a name="l10594"></a>10594 47, 2, 2, 31, 2, 47, 2, -113, 2, -97, 2, 4, -81, 2, -65, 2, 2, 2, 64, 9, 16, 52, 2, 0, -72,
-<a name="l10595"></a>10595 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -72, 2, 96, -75, 112, 2, -80, 2, 2, 2, 47, 93, -19, 93,
-<a name="l10596"></a>10596 -3, -19, 0, 47, 43, 93, 113, 114, -19, 43, 49, 48, 1, 43, 1, 35, 3, 51, -2, 30, -111, -25, -15, 6, 11,
-<a name="l10597"></a>10597 1, 24, 0, 1, -2, 84, 6, -115, -1, -67, 7, 43, 0, 3, 0, 65, -71, 0, 2, -1, -32, -77, 14, 17, 52,
-<a name="l10598"></a>10598 1, -72, -1, -32, -75, 14, 17, 52, 2, -128, 0, -70, 3, 23, 0, 3, -1, -12, -77, 9, 18, 52, 3, -72, 2,
-<a name="l10599"></a>10599 83, -73, 2, -122, 79, 0, -33, 0, 2, 0, -71, 2, 96, 0, 1, 47, -19, 93, -3, -19, 43, 0, 125, 63, 26,
-<a name="l10600"></a>10600 -51, 49, 48, 1, 43, 43, 1, 51, 7, 35, -2, -37, -30, -25, -126, 7, 43, -98, 0, 0, 1, -4, -41, 6, -115,
-<a name="l10601"></a>10601 -2, 64, 7, 43, 0, 3, 0, 56, -71, 0, 2, -1, -32, -75, 14, 17, 52, 2, -128, 0, -70, 3, 23, 0, 3,
-<a name="l10602"></a>10602 -1, -12, -77, 9, 18, 52, 3, -72, 2, 83, -73, 2, -122, 79, 0, -33, 0, 2, 0, -71, 2, 96, 0, 1, 47,
-<a name="l10603"></a>10603 -19, 93, -3, -19, 43, 0, 125, 63, 26, -51, 49, 48, 1, 43, 1, 51, 7, 35, -3, 94, -30, -25, -126, 7, 43,
-<a name="l10604"></a>10604 -98, 0, 1, -3, 115, 6, 11, -2, -21, 7, 35, 0, 3, 0, 84, -77, -103, 2, 1, 2, -72, -1, -32, -77, 14,
-<a name="l10605"></a>10605 17, 52, 2, -72, -1, -64, 64, 31, 9, 10, 52, 2, -121, 31, 1, 47, 1, 2, 31, 1, 47, 1, -113, 1, -97,
-<a name="l10606"></a>10606 1, 4, -81, 1, -65, 1, 2, 1, 64, 9, 16, 52, 1, 3, -72, 2, 83, -73, 2, -122, 79, 0, -33, 0, 2,
-<a name="l10607"></a>10607 0, -71, 2, 96, 0, 1, 47, -19, 93, -3, -19, 0, 47, 43, 93, 113, 114, -19, 43, 49, 48, 1, 43, 93, 1,
-<a name="l10608"></a>10608 51, 3, 35, -3, -6, -15, -25, -111, 7, 35, -2, -24, 0, 0, 1, -2, 41, 5, -24, -1, -34, 7, 44, 0, 21,
-<a name="l10609"></a>10609 0, -117, -71, 0, 17, -1, -64, 64, 9, 9, 24, 52, 10, 12, 9, 7, 21, 18, -72, -1, -64, 64, 14, 18, 24,
-<a name="l10610"></a>10610 52, 18, -112, 20, 1, 127, 20, 1, -112, 20, 1, 20, -72, -1, -64, -77, 9, 12, 52, 20, -72, -1, -64, -77, 25,
-<a name="l10611"></a>10611 37, 52, 20, -72, -1, -64, 64, 10, 55, 57, 52, 20, 64, 83, 90, 52, 20, 7, -70, 3, 22, 0, 12, 3, 23,
-<a name="l10612"></a>10612 64, 12, 16, -55, 3, 3, 19, 9, 20, 10, 10, 19, 87, 20, -72, -1, -64, 64, 9, 11, 13, 52, 0, 20, 112,
-<a name="l10613"></a>10613 20, 2, 20, 47, 93, 43, -19, 51, 47, 18, 57, 17, 51, 47, -19, 0, 125, 63, 24, -19, 125, -44, 43, 43, 43,
-<a name="l10614"></a>10614 43, 93, 113, 114, 24, -35, 43, -51, 17, 57, 18, 57, 49, 48, 1, 43, 0, 55, 54, 55, 54, 39, 38, 35, 34,
-<a name="l10615"></a>10615 7, 39, 54, 23, 22, 23, 22, 23, 22, 7, 21, 35, 53, -2, -19, 16, 53, 1, 1, 29, 42, 91, 31, 63, 11,
-<a name="l10616"></a>10616 39, 105, 123, 78, 86, 2, 4, -70, 112, 6, 94, 5, 13, 28, 23, 16, 23, 4, 94, 8, 1, 1, 39, 42, 67,
-<a name="l10617"></a>10617 101, 23, 50, 112, 0, 1, -2, 13, 6, 109, -1, -95, 7, 44, 0, 20, 0, -128, -71, 0, 16, -1, -64, 64, 42,
-<a name="l10618"></a>10618 9, 32, 52, 11, 13, 10, 7, 17, 17, 20, 64, 19, 64, 124, -118, 52, 19, 64, 82, 85, 52, 19, 64, 75, 76,
-<a name="l10619"></a>10619 52, 19, 64, 60, 62, 52, 19, 64, 38, 54, 52, 16, 19, 1, 19, -128, 7, -68, 1, -113, 0, 13, 3, 23, 0,
-<a name="l10620"></a>10620 15, -1, -64, 64, 15, 22, 24, 52, 15, -8, 3, 3, 18, 10, 19, 11, 11, 18, -112, 19, 47, -19, 51, 47, 18,
-<a name="l10621"></a>10621 57, 17, 51, 47, -19, 43, 0, 125, 63, 24, -19, 26, -36, 113, 43, 43, 43, 43, 43, 26, -51, 57, 47, 17, 57,
-<a name="l10622"></a>10622 18, 57, -79, 6, 2, 67, 84, 88, -76, 17, 64, 9, 25, 52, 0, 43, 89, 49, 48, 1, 43, 0, 55, 54, 55,
-<a name="l10623"></a>10623 54, 39, 38, 35, 34, 6, 7, 39, 54, 23, 4, 23, 22, 7, 21, 35, 53, -2, -65, 18, 49, 1, 1, 27, 39,
-<a name="l10624"></a>10624 84, 8, 60, 18, 11, 36, 98, 1, 6, 5, 3, -84, 93, 6, -90, 4, 11, 22, 13, 9, 13, 5, 3, 65, 5,
-<a name="l10625"></a>10625 1, 1, 90, 63, 14, 22, 55, 0, 0, 1, -3, 17, 5, -24, -2, -58, 7, 44, 0, 21, 0, -117, -71, 0, 17,
-<a name="l10626"></a>10626 -1, -64, 64, 9, 9, 24, 52, 10, 12, 9, 7, 21, 18, -72, -1, -64, 64, 14, 18, 24, 52, 18, -112, 20, 1,
-<a name="l10627"></a>10627 127, 20, 1, -112, 20, 1, 20, -72, -1, -64, -77, 9, 12, 52, 20, -72, -1, -64, -77, 25, 37, 52, 20, -72, -1,
-<a name="l10628"></a>10628 -64, 64, 10, 55, 57, 52, 20, 64, 83, 90, 52, 20, 7, -70, 3, 22, 0, 12, 3, 23, 64, 12, 16, -55, 3,
-<a name="l10629"></a>10629 3, 19, 9, 20, 10, 10, 19, 87, 20, -72, -1, -64, 64, 9, 11, 13, 52, 0, 20, 112, 20, 2, 20, 47, 93,
-<a name="l10630"></a>10630 43, -19, 51, 47, 18, 57, 17, 51, 47, -19, 0, 125, 63, 24, -19, 125, -44, 43, 43, 43, 43, 93, 113, 114, 24,
-<a name="l10631"></a>10631 -35, 43, -51, 17, 57, 18, 57, 49, 48, 1, 43, 0, 55, 54, 55, 54, 39, 38, 35, 34, 7, 39, 54, 23, 22,
-<a name="l10632"></a>10632 23, 22, 23, 22, 7, 21, 35, 53, -3, -43, 16, 53, 1, 1, 29, 42, 91, 31, 63, 11, 39, 105, 123, 78, 86,
-<a name="l10633"></a>10633 2, 4, -70, 112, 6, 94, 5, 13, 28, 23, 16, 23, 4, 94, 8, 1, 1, 39, 42, 75, 93, 23, 50, 112, 0,
-<a name="l10634"></a>10634 1, -4, 103, 6, 109, -3, -5, 7, 44, 0, 20, 0, -128, -71, 0, 16, -1, -64, 64, 42, 9, 32, 52, 11, 13,
-<a name="l10635"></a>10635 10, 7, 17, 17, 20, 64, 19, 64, 124, -118, 52, 19, 64, 82, 85, 52, 19, 64, 75, 76, 52, 19, 64, 60, 62,
-<a name="l10636"></a>10636 52, 19, 64, 38, 54, 52, 16, 19, 1, 19, -128, 7, -68, 1, -113, 0, 13, 3, 23, 0, 15, -1, -64, 64, 15,
-<a name="l10637"></a>10637 22, 24, 52, 15, -8, 3, 3, 18, 10, 19, 11, 11, 18, -112, 19, 47, -19, 51, 47, 18, 57, 17, 51, 47, -19,
-<a name="l10638"></a>10638 43, 0, 125, 63, 24, -19, 26, -36, 113, 43, 43, 43, 43, 43, 26, -51, 57, 47, 17, 57, 18, 57, -79, 6, 2,
-<a name="l10639"></a>10639 67, 84, 88, -76, 17, 64, 9, 25, 52, 0, 43, 89, 49, 48, 1, 43, 0, 55, 54, 55, 54, 39, 38, 35, 34,
-<a name="l10640"></a>10640 6, 7, 39, 54, 23, 4, 23, 22, 7, 21, 35, 53, -3, 25, 18, 49, 1, 1, 27, 39, 84, 8, 60, 18, 11,
-<a name="l10641"></a>10641 36, 98, 1, 6, 5, 3, -84, 93, 6, -90, 4, 11, 22, 13, 9, 13, 5, 3, 65, 5, 1, 1, 90, 63, 14,
-<a name="l10642"></a>10642 22, 55, 0, 0, 1, -3, -99, 6, 73, 0, 59, 7, 48, 0, 18, 0, 95, -75, 14, 32, 9, 17, 52, 11, -72,
-<a name="l10643"></a>10643 -1, -32, 64, 55, 9, 19, 52, 2, 32, 9, 17, 52, 0, 0, -17, 12, 1, 12, 69, 7, 7, -17, 16, 1, 16,
-<a name="l10644"></a>10644 69, 3, 3, 31, 9, -33, 9, 2, -113, 9, 1, 9, 64, 9, 16, 52, 63, 9, -65, 9, 2, 9, 10, 118, 9,
-<a name="l10645"></a>10645 9, 0, 118, 64, 18, 111, 18, 2, 18, 47, 93, -19, 51, 47, -19, 0, 47, 93, 43, 113, 114, 51, 47, -19, 93,
-<a name="l10646"></a>10646 57, 47, -19, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35,
-<a name="l10647"></a>10647 34, 39, 38, 35, 34, 23, -3, -98, 1, 113, 91, 62, 107, 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78,
-<a name="l10648"></a>10648 2, 6, 73, 102, 126, 54, 30, 87, -28, 56, 36, 95, 0, 0, 1, -5, -11, 6, 124, -2, -109, 7, 43, 0, 18,
-<a name="l10649"></a>10649 0, -39, -77, 75, 14, 1, 11, -72, -1, -32, 64, 11, 10, 19, 52, 2, 32, 10, 17, 52, 0, 0, 7, -72, 3,
-<a name="l10650"></a>10650 22, 64, 31, 64, 12, 64, 94, 53, 12, 64, 79, 83, 52, 12, 64, 67, 69, 52, 12, 64, 43, 45, 52, 111, 12,
-<a name="l10651"></a>10651 127, 12, 2, 15, 12, 1, 12, -128, 16, -72, 3, 22, 64, 97, 3, 3, 15, 9, -17, 9, 2, 31, 9, 47, 9,
-<a name="l10652"></a>10652 79, 9, 95, 9, -113, 9, -97, 9, 6, 15, 9, 95, 9, 111, 9, 127, 9, -65, 9, -16, 9, 6, 9, 64, -117,
-<a name="l10653"></a>10653 53, 9, 64, 106, 108, 52, 9, 64, 97, 53, 9, 64, 92, 93, 52, 9, 64, 87, 89, 52, 9, 64, 77, 81, 52,
-<a name="l10654"></a>10654 9, 64, 68, 73, 52, 9, 64, 58, 53, 9, 64, 49, 52, 52, 9, 64, 46, 66, 52, 9, 64, 39, 44, 52, 9,
-<a name="l10655"></a>10655 64, 18, 37, 52, 9, -128, 10, 13, 52, 9, 10, -72, 3, 22, -78, 9, 9, 0, -71, 3, 22, 0, 18, 47, -19,
-<a name="l10656"></a>10656 51, 47, -19, 0, 125, 47, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 51, 24, 47,
-<a name="l10657"></a>10657 -19, 26, -35, 93, 113, 43, 43, 43, 43, 26, -19, 51, 47, 49, 48, 1, 43, 43, 93, 1, 38, 54, 51, 50, 23,
-<a name="l10658"></a>10658 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -5, -10, 1, 113, 91, 62, 107, 59, 68, 61, 12, 97,
-<a name="l10659"></a>10659 6, -66, 63, 103, 67, 67, 78, 2, 6, 124, 82, 91, 44, 24, 70, -84, 44, 29, 76, 0, 0, 1, -4, 114, 6,
-<a name="l10660"></a>10660 11, -1, 16, 6, -14, 0, 18, 0, 115, -75, 14, 32, 9, 17, 52, 11, -72, -1, -32, 64, 16, 9, 19, 52, 2,
-<a name="l10661"></a>10661 32, 9, 17, 52, 0, 0, -17, 12, 1, 12, 69, 7, -72, -1, -64, 64, 52, 33, 38, 52, 7, 7, -17, 16, 1,
-<a name="l10662"></a>10662 16, 69, 3, 3, 31, 9, 47, 9, 63, 9, 3, 47, 9, -113, 9, 2, 9, 64, 9, 16, 52, 9, 64, 54, 62,
-<a name="l10663"></a>10663 52, 63, 9, -65, 9, 2, 9, 10, 118, 9, 9, 0, 118, 64, 18, 111, 18, 2, 18, 47, 93, -19, 51, 47, -19,
-<a name="l10664"></a>10664 0, 47, 93, 43, 43, 113, 114, 51, 47, -19, 93, 57, 47, 43, -19, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1,
-<a name="l10665"></a>10665 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -4, 115, 1, 113, 91, 62, 107,
-<a name="l10666"></a>10666 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78, 2, 6, 11, 102, 126, 54, 30, 87, -28, 56, 36, 95, 0,
-<a name="l10667"></a>10667 0, 1, -2, -43, 5, -44, 1, 28, 6, 102, 0, 19, 0, 61, -71, 0, 10, -1, -16, -77, 22, 31, 52, 4, -72,
-<a name="l10668"></a>10668 -1, -16, -76, 22, 31, 52, 11, 2, -72, -1, -64, 64, 19, 35, 40, 52, 2, -128, -16, 7, 1, 7, -128, 16, 3,
-<a name="l10669"></a>10669 12, -128, 11, 11, 2, -128, 3, 47, -19, 51, 47, -19, 0, 63, -19, 113, 26, -35, 43, -64, 49, 48, 0, 43, 43,
-<a name="l10670"></a>10670 3, 38, 39, 51, 22, 23, 22, 51, 50, 55, 54, 55, 51, 6, 7, 6, 35, 34, 39, 38, -4, 30, 17, 78, 24,
-<a name="l10671"></a>10671 59, 64, 65, 67, 64, 59, 24, 79, 31, 73, 77, 112, 35, 31, 118, 6, 35, 30, 37, 29, 19, 20, 20, 18, 30,
-<a name="l10672"></a>10672 72, 36, 38, 4, 14, 0, 1, -2, -43, 5, -44, 1, 57, 6, 79, 0, 6, 0, 57, 64, 17, 0, 3, 6, 15,
-<a name="l10673"></a>10673 3, 1, 3, -128, 2, 3, 3, 4, 0, 3, 1, 5, 6, -72, -1, -64, -77, 20, 24, 52, 6, -72, -1, -64, -75,
-<a name="l10674"></a>10674 12, 17, 52, 6, 2, 1, 47, -51, -42, 43, 43, -51, 18, 23, 57, 0, 63, 26, -51, 114, -64, 18, 57, 49, 48,
-<a name="l10675"></a>10675 1, 19, 7, 35, 55, 51, 23, 35, 7, -125, -81, -47, -61, -48, -81, 6, 23, 67, 123, 123, 0, 1, -1, 2, -2,
-<a name="l10676"></a>10676 -69, -1, -49, -1, -120, 0, 3, 0, 40, 64, 19, 0, 60, 80, 1, -112, 1, -48, 1, 3, 0, 1, 1, 1, 3,
-<a name="l10677"></a>10677 60, 64, 0, 1, 0, -72, -1, -64, -77, 9, 10, 52, 0, 47, 43, 113, -19, 0, 47, 113, 114, -19, 49, 48, 3,
-<a name="l10678"></a>10678 53, 51, 21, -2, -51, -2, -69, -51, -51, 0, 3, 0, -96, 0, -10, 3, -119, 5, -70, 0, 24, 0, 36, 0, 40,
-<a name="l10679"></a>10679 0, -92, 64, 21, -113, 16, -128, 20, 2, -119, 12, -122, 24, 2, 7, 2, 46, 8, 1, 1, 4, 22, 38, 46, 39,
-<a name="l10680"></a>10680 -72, -1, -64, 64, 23, 9, 11, 52, 39, 39, 14, 24, 12, 34, 11, 11, 28, -111, 14, 64, 10, 12, 52, 14, 14,
-<a name="l10681"></a>10681 34, -111, 22, -72, -1, -64, 64, 14, 10, 12, 52, 22, 22, 4, 2, 31, 0, 11, 11, 10, 0, 2, -72, -1, -64,
-<a name="l10682"></a>10682 64, 12, 10, 22, 52, 2, 2, 4, 25, 7, 37, 37, 4, 0, -72, 2, -114, 64, 10, 5, 32, 10, 1, 10, 10,
-<a name="l10683"></a>10683 42, 38, 38, 25, -71, 2, -114, 0, 18, 47, -19, 51, 47, 17, 51, 47, 93, 60, -3, 60, 51, 47, 60, 17, 18,
-<a name="l10684"></a>10684 57, 47, 43, 17, 18, 57, 47, 18, 57, 0, 63, 51, 47, 43, -19, 51, 47, 43, -19, 57, 47, 17, 57, 57, 17,
-<a name="l10685"></a>10685 51, 47, 43, -19, 17, 18, 57, 47, 60, -3, 60, 49, 48, 0, 93, 93, 1, 35, 53, 51, 53, 51, 21, 51, 21,
-<a name="l10686"></a>10686 35, 17, 35, 53, 6, 35, 34, 39, 38, 53, 52, 55, 54, 51, 50, 23, 1, 20, 22, 51, 50, 54, 53, 52, 38,
-<a name="l10687"></a>10687 35, 34, 6, 1, 33, 53, 33, 2, -90, 94, 94, 125, 102, 102, 116, 71, -119, -65, 87, 41, -108, 74, 92, -126, 74,
-<a name="l10688"></a>10688 -2, 123, 111, 91, 91, 107, 109, 95, 92, 104, 2, 104, -3, 23, 2, -23, 5, 13, 92, 81, 81, 92, -4, -83, 93,
-<a name="l10689"></a>10689 111, -69, 87, 114, -12, 96, 49, 103, -2, -30, -126, -102, -109, 126, -116, -100, -106, -3, 67, 91, 0, 3, 0, 107, -1,
-<a name="l10690"></a>10690 -57, 6, -106, 5, -45, 0, 3, 0, 12, 0, 48, 0, -79, 64, 21, 2, 3, 3, 63, 0, 1, 20, 0, 0, 1,
-<a name="l10691"></a>10691 34, 33, 33, 31, 27, 13, 14, 14, 18, 41, 27, -72, 2, 97, -77, 26, 26, 18, 31, -68, 2, 97, 0, 37, 1,
-<a name="l10692"></a>10692 31, 0, 18, 2, 97, 64, 9, 47, -30, 3, 0, 9, 5, 7, -24, 8, -70, 2, -93, 0, 4, 1, 31, 64, 22,
-<a name="l10693"></a>10693 10, -30, 2, 1, 1, 2, 1, 14, 41, 21, 27, 26, 26, 29, 14, 33, 41, 34, 34, 14, 41, 13, -72, 2, 40,
-<a name="l10694"></a>10694 64, 20, 43, 29, 41, 39, 39, 21, 41, 43, 43, 50, 3, 12, 0, 7, 10, 12, 41, 7, -53, 4, 47, -26, -19,
-<a name="l10695"></a>10695 57, 18, 57, 18, 57, 17, 51, 47, -3, 57, 47, -19, 16, -3, -19, 51, 47, -19, 17, 18, 57, 47, 57, 17, 57,
-<a name="l10696"></a>10696 18, 57, 57, 0, 63, 60, -12, -19, -12, -3, 57, 63, 60, -10, -19, -3, -19, 17, 57, 47, -20, 57, 18, 57, 47,
-<a name="l10697"></a>10697 57, 17, 18, 57, 47, 57, -121, 5, 46, 43, 125, 16, -60, 49, 48, 23, 1, 51, 1, 3, 17, 6, 7, 53, 54,
-<a name="l10698"></a>10698 55, 51, 17, 1, 55, 22, 23, 22, 51, 50, 54, 53, 52, 35, 34, 6, 35, 55, 22, 53, 52, 35, 34, 7, 39,
-<a name="l10699"></a>10699 54, 54, 51, 32, 21, 20, 7, 22, 21, 20, 7, 6, 35, 32, -28, 4, 77, -99, -5, -77, 54, 102, 122, -100, 105,
-<a name="l10700"></a>10700 108, 2, 85, -110, 20, 32, 43, 59, 70, 87, -97, 7, 41, 7, 22, -100, 119, 101, 41, -113, 41, 125, 120, 1, 19,
-<a name="l10701"></a>10701 -118, -83, 79, 84, -115, -2, -9, 57, 6, 12, -7, -12, 3, 22, 2, 42, 81, 32, 123, 50, -119, -3, 17, -3, -54,
-<a name="l10702"></a>10702 15, 59, 23, 30, 77, 56, 110, 3, 110, 2, 104, 89, 102, 23, 107, 83, -69, 120, 40, 42, -107, 97, 65, 69, 0,
-<a name="l10703"></a>10703 0, 3, 0, 25, -1, -57, 6, -116, 5, -45, 0, 3, 0, 39, 0, 66, 0, -48, 64, 21, 2, 3, 3, 63, 0,
-<a name="l10704"></a>10704 1, 20, 0, 0, 1, 25, 24, 24, 22, 18, 4, 5, 5, 9, 32, 18, -72, 2, 97, -77, 17, 17, 9, 22, -68,
-<a name="l10705"></a>10705 2, 97, 0, 28, 1, 31, 0, 9, 2, 97, 64, 11, 38, -30, 3, 0, 9, 52, 51, 51, 48, 65, 64, -68, 2,
-<a name="l10706"></a>10706 97, 0, 66, 1, 31, 0, 48, 2, 97, 64, 22, 54, -30, 2, 1, 1, 2, 1, 24, 32, 12, 18, 17, 17, 20,
-<a name="l10707"></a>10707 5, 24, 41, 25, 25, 5, 41, 4, -72, 2, 40, 64, 13, 34, 20, 41, 30, 30, 12, 41, 34, 34, 68, 3, 0,
-<a name="l10708"></a>10708 64, -72, -1, -32, 64, 18, 15, 17, 52, 64, 46, 40, 66, 58, 46, 41, 58, -65, 40, 51, 41, 52, 39, 40, 47,
-<a name="l10709"></a>10709 -12, -19, 16, -3, -19, -28, 17, 18, 57, 43, 57, 57, 17, 51, 47, -3, 57, 47, -19, 16, -3, -19, 51, 47, -19,
-<a name="l10710"></a>10710 17, 18, 57, 47, 57, 17, 57, 17, 57, 57, 0, 63, 60, -12, -19, -3, -19, 17, 18, 57, 47, 57, 63, 60, -10,
-<a name="l10711"></a>10711 -19, -3, -19, 17, 57, 47, -20, 57, 18, 57, 47, 57, 17, 18, 57, 47, 57, -121, 5, 46, 43, 125, 16, -60, 49,
-<a name="l10712"></a>10712 48, 23, 1, 51, 1, 37, 55, 22, 23, 22, 51, 50, 54, 53, 52, 35, 34, 6, 35, 55, 22, 53, 52, 35, 34,
-<a name="l10713"></a>10713 7, 39, 54, 54, 51, 32, 21, 20, 7, 22, 21, 20, 7, 6, 35, 32, 1, 54, 55, 54, 55, 54, 53, 52, 35,
-<a name="l10714"></a>10714 34, 6, 7, 39, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 6, 7, 33, 21, -28, 4, 77, -99, -5, -77, 2,
-<a name="l10715"></a>10715 -90, -110, 20, 32, 43, 59, 70, 87, -97, 7, 41, 7, 22, -100, 119, 101, 41, -113, 41, 125, 120, 1, 19, -118, -83,
-<a name="l10716"></a>10716 79, 84, -115, -2, -9, -5, -58, 14, -16, -112, 27, 37, -118, 67, 64, 21, -105, 56, -6, -112, 78, 70, 59, 42, -93,
-<a name="l10717"></a>10717 80, 38, 1, -126, 57, 6, 12, -7, -12, -32, 15, 59, 23, 30, 77, 56, 110, 3, 110, 2, 104, 89, 102, 23, 107,
-<a name="l10718"></a>10718 83, -69, 120, 40, 42, -107, 97, 65, 69, 3, 12, -126, -81, 104, 30, 41, 43, 110, 48, 66, 16, -40, 59, 54, 90,
-<a name="l10719"></a>10719 85, 74, 53, 118, 58, 39, 121, 0, 0, 1, -2, -74, 4, -86, 0, 46, 5, -62, 0, 3, 0, 66, -77, -103, 1,
-<a name="l10720"></a>10720 1, 2, -72, -1, -32, -77, 14, 17, 52, 2, -72, -1, -64, 64, 15, 9, 10, 52, 2, -121, -113, 1, 1, 1, 64,
-<a name="l10721"></a>10721 9, 16, 52, 1, 3, -72, 2, 83, -73, 2, -122, 79, 0, -33, 0, 2, 0, -71, 2, 96, 0, 1, 47, -19, 93,
-<a name="l10722"></a>10722 -3, -19, 0, 47, 43, 113, -19, 43, 49, 48, 1, 43, 93, 3, 51, 3, 35, -61, -15, -25, -111, 5, -62, -2, -24,
-<a name="l10723"></a>10723 0, 1, -3, 115, 4, -86, -2, -21, 5, -62, 0, 3, 0, 66, -77, -103, 1, 1, 2, -72, -1, -32, -77, 14, 17,
-<a name="l10724"></a>10724 52, 2, -72, -1, -64, 64, 15, 9, 10, 52, 2, -121, -113, 1, 1, 1, 64, 9, 16, 52, 1, 3, -72, 2, 83,
-<a name="l10725"></a>10725 -73, 2, -122, 79, 0, -33, 0, 2, 0, -71, 2, 96, 0, 1, 47, -19, 93, -3, -19, 0, 47, 43, 113, -19, 43,
-<a name="l10726"></a>10726 49, 48, 1, 43, 93, 1, 51, 3, 35, -3, -6, -15, -25, -111, 5, -62, -2, -24, 0, 0, 1, -2, 8, 4, -86,
-<a name="l10727"></a>10727 -1, -128, 5, -62, 0, 3, 0, 65, -75, 1, 32, 14, 17, 52, 1, -72, -1, -64, 64, 15, 9, 10, 52, 1, -121,
-<a name="l10728"></a>10728 -113, 2, 1, 2, 64, 9, 16, 52, 2, 0, -72, 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -72, 2, 96,
-<a name="l10729"></a>10729 -75, 112, 2, -80, 2, 2, 2, 47, 93, -19, 93, -12, -19, 0, 47, 43, 113, -19, 43, 49, 48, 1, 43, 3, 35,
-<a name="l10730"></a>10730 3, 51, -128, -111, -25, -15, 4, -86, 1, 24, 0, 0, 1, -4, -90, 4, -86, -2, 30, 5, -62, 0, 3, 0, 65,
-<a name="l10731"></a>10731 -75, 1, 32, 14, 17, 52, 1, -72, -1, -64, 64, 15, 9, 10, 52, 1, -121, -113, 2, 1, 2, 64, 9, 16, 52,
-<a name="l10732"></a>10732 2, 0, -72, 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -72, 2, 96, -75, 112, 2, -80, 2, 2, 2, 47,
-<a name="l10733"></a>10733 93, -19, 93, -12, -19, 0, 47, 43, 113, -19, 43, 49, 48, 1, 43, 1, 35, 3, 51, -2, 30, -111, -25, -15, 4,
-<a name="l10734"></a>10734 -86, 1, 24, 0, 1, -2, 83, 4, -86, 0, 8, 6, 13, 0, 21, 0, 104, -71, 0, 17, -1, -64, -73, 9, 23,
-<a name="l10735"></a>10735 52, 10, 12, 9, 21, 7, -72, 3, 22, -77, 12, 21, 52, 18, -72, -1, -64, -76, 9, 26, 52, 18, 20, -72, 2,
-<a name="l10736"></a>10736 -61, 64, 12, 16, -55, 3, 3, 19, 9, 20, 10, 10, 19, 87, 20, -72, -1, -64, 64, 9, 11, 13, 52, 0, 20,
-<a name="l10737"></a>10737 112, 20, 2, 20, 47, 93, 43, -19, 51, 47, 18, 57, 17, 51, 47, -19, 0, 63, -35, 43, -3, -44, -19, 17, 57,
-<a name="l10738"></a>10738 17, 57, -79, 6, 2, 67, 84, 88, -76, 18, 64, 9, 13, 52, 0, 43, 89, 49, 48, 1, 43, 2, 55, 54, 55,
-<a name="l10739"></a>10739 54, 39, 38, 35, 34, 7, 39, 54, 23, 22, 23, 22, 23, 22, 7, 21, 35, 53, -23, 16, 53, 1, 1, 29, 42,
-<a name="l10740"></a>10740 91, 31, 63, 11, 39, 105, 123, 78, 86, 2, 4, -70, 112, 5, 40, 5, 18, 38, 23, 16, 23, 4, 102, 8, 1,
-<a name="l10741"></a>10741 1, 39, 42, 75, 124, 23, 50, 120, 0, 1, -3, 17, 4, -86, -2, -58, 6, 13, 0, 21, 0, 104, -71, 0, 17,
-<a name="l10742"></a>10742 -1, -64, -73, 9, 23, 52, 10, 12, 9, 21, 7, -72, 3, 22, -77, 12, 21, 52, 18, -72, -1, -64, -76, 9, 26,
-<a name="l10743"></a>10743 52, 18, 20, -72, 2, -61, 64, 12, 16, -55, 3, 3, 19, 9, 20, 10, 10, 19, 87, 20, -72, -1, -64, 64, 9,
-<a name="l10744"></a>10744 11, 13, 52, 0, 20, 112, 20, 2, 20, 47, 93, 43, -19, 51, 47, 18, 57, 17, 51, 47, -19, 0, 63, -35, 43,
-<a name="l10745"></a>10745 -3, -44, -19, 17, 57, 17, 57, -79, 6, 2, 67, 84, 88, -76, 18, 64, 9, 13, 52, 0, 43, 89, 49, 48, 1,
-<a name="l10746"></a>10746 43, 0, 55, 54, 55, 54, 39, 38, 35, 34, 7, 39, 54, 23, 22, 23, 22, 23, 22, 7, 21, 35, 53, -3, -43,
-<a name="l10747"></a>10747 16, 53, 1, 1, 29, 42, 91, 31, 63, 11, 39, 105, 123, 78, 86, 2, 4, -70, 112, 5, 40, 5, 18, 38, 23,
-<a name="l10748"></a>10748 16, 23, 4, 102, 8, 1, 1, 39, 42, 75, 124, 23, 50, 120, 0, 0, 1, -5, -56, 6, 73, -2, 102, 7, 48,
-<a name="l10749"></a>10749 0, 18, 0, 107, -75, 14, 32, 9, 17, 52, 11, -72, -1, -32, 64, 65, 9, 19, 52, 2, 32, 9, 17, 52, 0,
-<a name="l10750"></a>10750 0, -17, 12, 1, 12, 69, 7, 7, -17, 16, 1, 16, 69, 3, 3, 31, 9, -33, 9, 2, 79, 9, 1, 9, 64,
-<a name="l10751"></a>10751 9, 16, 52, 63, 9, 79, 9, -65, 9, 3, 9, 10, 118, 9, 9, 0, 118, -128, 18, 1, 64, 18, -48, 18, -32,
-<a name="l10752"></a>10752 18, 3, 80, 18, 1, 18, 47, 93, 93, 113, -19, 51, 47, -19, 0, 47, 93, 43, 113, 114, 51, 47, -3, 93, 57,
-<a name="l10753"></a>10753 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34,
-<a name="l10754"></a>10754 39, 38, 35, 34, 23, -5, -55, 1, 113, 91, 62, 107, 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78, 2,
-<a name="l10755"></a>10755 6, 73, 102, 126, 54, 30, 87, -28, 56, 36, 95, 0, 0, 1, -6, -12, 6, 73, -3, -110, 7, 48, 0, 18, 0,
-<a name="l10756"></a>10756 107, -75, 14, 32, 9, 17, 52, 11, -72, -1, -32, 64, 65, 9, 19, 52, 2, 32, 9, 17, 52, 0, 0, -17, 12,
-<a name="l10757"></a>10757 1, 12, 69, 7, 7, -17, 16, 1, 16, 69, 3, 3, 31, 9, -33, 9, 2, 79, 9, 1, 9, 64, 9, 16, 52,
-<a name="l10758"></a>10758 63, 9, 79, 9, -65, 9, 3, 9, 10, 118, 9, 9, 0, 118, -128, 18, 1, 64, 18, -48, 18, -32, 18, 3, 80,
-<a name="l10759"></a>10759 18, 1, 18, 47, 93, 93, 113, -19, 51, 47, -19, 0, 47, 93, 43, 113, 114, 51, 47, -3, 93, 57, 47, -3, 93,
-<a name="l10760"></a>10760 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35,
-<a name="l10761"></a>10761 34, 23, -6, -11, 1, 113, 91, 62, 107, 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78, 2, 6, 73, 102,
-<a name="l10762"></a>10762 126, 54, 30, 87, -28, 56, 36, 95, 0, 0, 1, -6, -81, 6, 73, -3, 77, 7, 48, 0, 18, 0, 107, -75, 14,
-<a name="l10763"></a>10763 32, 9, 17, 52, 11, -72, -1, -32, 64, 65, 9, 19, 52, 2, 32, 9, 17, 52, 0, 0, -17, 12, 1, 12, 69,
-<a name="l10764"></a>10764 7, 7, -17, 16, 1, 16, 69, 3, 3, 31, 9, -33, 9, 2, 79, 9, 1, 9, 64, 9, 16, 52, 63, 9, 79,
-<a name="l10765"></a>10765 9, -65, 9, 3, 9, 10, 118, 9, 9, 0, 118, -128, 18, 1, 64, 18, -48, 18, -32, 18, 3, 80, 18, 1, 18,
-<a name="l10766"></a>10766 47, 93, 93, 113, -19, 51, 47, -19, 0, 47, 93, 43, 113, 114, 51, 47, -3, 93, 57, 47, -3, 93, 50, 47, 49,
-<a name="l10767"></a>10767 48, 1, 43, 43, 43, 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -6,
-<a name="l10768"></a>10768 -80, 1, 113, 91, 62, 107, 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78, 2, 6, 73, 102, 126, 54, 30,
-<a name="l10769"></a>10769 87, -28, 56, 36, 95, 0, 0, 1, -4, 114, 4, -61, -1, 16, 5, -86, 0, 23, 0, 105, -71, 0, 14, -1, -32,
-<a name="l10770"></a>10770 64, 50, 9, 17, 52, 17, 32, 9, 17, 52, 2, 32, 9, 17, 52, 0, 0, -17, 15, 1, 15, 69, 8, 8, -17,
-<a name="l10771"></a>10771 19, 1, 19, 69, 4, 4, -33, 11, 1, 15, 11, 127, 11, 2, 11, 64, 9, 14, 52, 11, 12, 118, 11, 11, 0,
-<a name="l10772"></a>10772 118, 23, -72, -1, -64, -77, 19, 23, 52, 23, -72, -1, -64, -74, 13, 14, 52, 111, 23, 1, 23, 47, 93, 43, 43,
-<a name="l10773"></a>10773 -19, 51, 47, -19, 0, 47, 43, 93, 114, 51, 47, -3, 93, 57, 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43,
-<a name="l10774"></a>10774 1, 38, 55, 54, 51, 50, 23, 22, 51, 50, 54, 55, 51, 6, 6, 35, 34, 39, 38, 35, 34, 7, 6, 23, -4,
-<a name="l10775"></a>10775 115, 1, 58, 57, 89, 62, 107, 59, 35, 32, 34, 7, -126, 3, 109, 84, 63, 103, 67, 31, 34, 21, 22, 1, 4,
-<a name="l10776"></a>10776 -61, 104, 62, 62, 54, 30, 35, 52, 114, 114, 56, 36, 24, 24, 47, 0, 1, -5, -86, 4, -61, -2, 72, 5, -86,
-<a name="l10777"></a>10777 0, 23, 0, 105, -71, 0, 14, -1, -32, 64, 50, 9, 17, 52, 17, 32, 9, 17, 52, 2, 32, 9, 17, 52, 0,
-<a name="l10778"></a>10778 0, -17, 15, 1, 15, 69, 8, 8, -17, 19, 1, 19, 69, 4, 4, -33, 11, 1, 15, 11, 127, 11, 2, 11, 64,
-<a name="l10779"></a>10779 9, 14, 52, 11, 12, 118, 11, 11, 0, 118, 23, -72, -1, -64, -77, 19, 23, 52, 23, -72, -1, -64, -74, 13, 14,
-<a name="l10780"></a>10780 52, 111, 23, 1, 23, 47, 93, 43, 43, -19, 51, 47, -19, 0, 47, 43, 93, 114, 51, 47, -3, 93, 57, 47, -3,
-<a name="l10781"></a>10781 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 55, 54, 51, 50, 23, 22, 51, 50, 54, 55, 51, 6, 6, 35,
-<a name="l10782"></a>10782 34, 39, 38, 35, 34, 7, 6, 23, -5, -85, 1, 58, 57, 89, 62, 107, 59, 35, 32, 34, 7, -126, 3, 109, 84,
-<a name="l10783"></a>10783 63, 103, 67, 31, 34, 21, 22, 1, 4, -61, 104, 62, 62, 54, 30, 35, 52, 114, 114, 56, 36, 24, 24, 47, 0,
-<a name="l10784"></a>10784 1, -5, 106, 4, -61, -2, 8, 5, -86, 0, 23, 0, 105, -71, 0, 14, -1, -32, 64, 50, 9, 17, 52, 17, 32,
-<a name="l10785"></a>10785 9, 17, 52, 2, 32, 9, 17, 52, 0, 0, -17, 15, 1, 15, 69, 8, 8, -17, 19, 1, 19, 69, 4, 4, -33,
-<a name="l10786"></a>10786 11, 1, 15, 11, 127, 11, 2, 11, 64, 9, 14, 52, 11, 12, 118, 11, 11, 0, 118, 23, -72, -1, -64, -77, 19,
-<a name="l10787"></a>10787 23, 52, 23, -72, -1, -64, -74, 13, 14, 52, 111, 23, 1, 23, 47, 93, 43, 43, -19, 51, 47, -19, 0, 47, 43,
-<a name="l10788"></a>10788 93, 114, 51, 47, -3, 93, 57, 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 55, 54, 51, 50, 23,
-<a name="l10789"></a>10789 22, 51, 50, 54, 55, 51, 6, 6, 35, 34, 39, 38, 35, 34, 7, 6, 23, -5, 107, 1, 58, 57, 89, 62, 107,
-<a name="l10790"></a>10790 59, 35, 32, 34, 7, -126, 3, 109, 84, 63, 103, 67, 31, 34, 21, 22, 1, 4, -61, 104, 62, 62, 54, 30, 35,
-<a name="l10791"></a>10791 52, 114, 114, 56, 36, 24, 24, 47, -1, -1, -4, -15, -2, -69, -3, -66, -1, -120, 2, 23, 4, 125, -3, -17, 0,
-<a name="l10792"></a>10792 0, -1, -1, -4, 125, -2, -69, -3, 74, -1, -120, 2, 23, 4, 125, -3, 123, 0, 0, -1, -1, -5, -35, -2, -69,
-<a name="l10793"></a>10793 -4, -86, -1, -120, 2, 23, 4, 125, -4, -37, 0, 0, -1, -1, -4, -63, -2, -69, -3, -114, -1, -120, 2, 23, 4,
-<a name="l10794"></a>10794 125, -3, -65, 0, 0, -1, -1, -5, -104, -2, -69, -4, 101, -1, -120, 2, 23, 4, 125, -4, -106, 0, 0, 0, 1,
-<a name="l10795"></a>10795 -3, -22, 6, 11, -1, 98, 7, 35, 0, 3, 0, 83, -75, 1, 32, 14, 17, 52, 1, -72, -1, -64, 64, 31, 9,
-<a name="l10796"></a>10796 10, 52, 1, -121, 31, 2, 47, 2, 2, 31, 2, 47, 2, -113, 2, -97, 2, 4, -81, 2, -65, 2, 2, 2, 64,
-<a name="l10797"></a>10797 9, 16, 52, 2, 0, -72, 2, 83, -73, 1, -122, 64, 3, -48, 3, 2, 3, -72, 2, 96, -75, 112, 2, -80, 2,
-<a name="l10798"></a>10798 2, 2, 47, 93, -19, 93, -3, -19, 0, 47, 43, 93, 113, 114, -19, 43, 49, 48, 1, 43, 3, 35, 3, 51, -98,
-<a name="l10799"></a>10799 -111, -25, -15, 6, 11, 1, 24, 0, 0, 1, -2, -124, 6, 11, -1, -4, 7, 35, 0, 3, 0, 84, -77, -103, 1,
-<a name="l10800"></a>10800 1, 2, -72, -1, -32, -77, 14, 17, 52, 2, -72, -1, -64, 64, 31, 9, 10, 52, 2, -121, 31, 1, 47, 1, 2,
-<a name="l10801"></a>10801 31, 1, 47, 1, -113, 1, -97, 1, 4, -81, 1, -65, 1, 2, 1, 64, 9, 16, 52, 1, 3, -72, 2, 83, -73,
-<a name="l10802"></a>10802 2, -122, 79, 0, -33, 0, 2, 0, -71, 2, 96, 0, 1, 47, -19, 93, -3, -19, 0, 47, 43, 93, 113, 114, -19,
-<a name="l10803"></a>10803 43, 49, 48, 1, 43, 93, 3, 51, 3, 35, -11, -15, -25, -111, 7, 35, -2, -24, 0, 1, -3, -62, 4, -61, 0,
-<a name="l10804"></a>10804 96, 5, -86, 0, 23, 0, 105, -71, 0, 14, -1, -32, 64, 50, 9, 17, 52, 17, 32, 9, 17, 52, 2, 32, 9,
-<a name="l10805"></a>10805 17, 52, 0, 0, -17, 15, 1, 15, 69, 8, 8, -17, 19, 1, 19, 69, 4, 4, -33, 11, 1, 15, 11, 127, 11,
-<a name="l10806"></a>10806 2, 11, 64, 9, 14, 52, 11, 12, 118, 11, 11, 0, 118, 23, -72, -1, -64, -77, 19, 23, 52, 23, -72, -1, -64,
-<a name="l10807"></a>10807 -74, 13, 14, 52, 111, 23, 1, 23, 47, 93, 43, 43, -19, 51, 47, -19, 0, 47, 43, 93, 114, 51, 47, -3, 93,
-<a name="l10808"></a>10808 57, 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 55, 54, 51, 50, 23, 22, 51, 50, 54, 55, 51,
-<a name="l10809"></a>10809 6, 6, 35, 34, 39, 38, 35, 34, 7, 6, 23, -3, -61, 1, 58, 57, 89, 62, 107, 59, 35, 32, 34, 7, -126,
-<a name="l10810"></a>10810 3, 109, 84, 63, 103, 67, 31, 34, 21, 22, 1, 4, -61, 104, 62, 62, 54, 30, 35, 52, 114, 114, 56, 36, 24,
-<a name="l10811"></a>10811 24, 47, -1, -1, -4, -15, -2, -69, -3, -66, -1, -120, 2, 23, 4, 125, -3, -17, 0, 0, -1, -1, -3, 95, -2,
-<a name="l10812"></a>10812 -69, -2, 44, -1, -120, 2, 23, 4, 125, -2, 93, 0, 0, -1, -1, -2, 118, -2, -69, -1, 67, -1, -120, 2, 23,
-<a name="l10813"></a>10813 4, 125, -1, 116, 0, 0, -1, -1, -2, -68, -2, -69, -1, -119, -1, -120, 2, 22, 4, 125, -70, 0, -1, -1, -4,
-<a name="l10814"></a>10814 -21, -2, -69, -3, -72, -1, -120, 2, 23, 4, 125, -3, -23, 0, 0, -1, -1, -3, 108, -2, -69, -2, 57, -1, -120,
-<a name="l10815"></a>10815 2, 23, 4, 125, -2, 106, 0, 0, -1, -1, -3, 88, -2, -69, -2, 37, -1, -120, 2, 23, 4, 125, -2, 86, 0,
-<a name="l10816"></a>10816 0, -1, -1, -4, -112, -2, -69, -3, 93, -1, -120, 2, 23, 4, 125, -3, -114, 0, 0, -1, -1, -3, 21, -2, -69,
-<a name="l10817"></a>10817 -3, -30, -1, -120, 2, 23, 4, 125, -2, 19, 0, 0, -1, -1, -4, 44, -2, -69, -4, -7, -1, -120, 2, 23, 4,
-<a name="l10818"></a>10818 125, -3, 42, 0, 0, 0, 1, -4, 19, 6, 124, -2, -80, 7, 43, 0, 18, 0, 110, -77, 75, 14, 1, 11, -72,
-<a name="l10819"></a>10819 -1, -32, 64, 11, 10, 19, 52, 2, 32, 10, 17, 52, 0, 0, 7, -72, 3, 22, 64, 31, 64, 12, 64, 94, 53,
-<a name="l10820"></a>10820 12, 64, 79, 83, 52, 12, 64, 67, 69, 52, 12, 64, 43, 45, 52, 111, 12, 127, 12, 2, 15, 12, 1, 12, -128,
-<a name="l10821"></a>10821 16, -72, 3, 22, -78, 3, 3, 9, -70, 3, 23, 0, 10, 3, 22, -78, 9, 9, 0, -71, 3, 22, 0, 18, 47,
-<a name="l10822"></a>10822 -19, 51, 47, -19, 0, 125, 63, 51, 24, 47, -19, 26, -35, 93, 113, 43, 43, 43, 43, 26, -19, 51, 47, 49, 48,
-<a name="l10823"></a>10823 1, 43, 43, 93, 1, 52, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -4, 19,
-<a name="l10824"></a>10824 112, 91, 62, 107, 59, 68, 61, 12, 97, 6, -66, 63, 103, 67, 64, 81, 2, 6, 124, 82, 91, 44, 24, 70, -84,
-<a name="l10825"></a>10825 44, 29, 76, 0, 0, 1, -4, 18, 6, 73, -2, -80, 7, 48, 0, 18, 0, 107, -75, 14, 32, 9, 17, 52, 11,
-<a name="l10826"></a>10826 -72, -1, -32, 64, 65, 9, 19, 52, 2, 32, 9, 17, 52, 0, 0, -17, 12, 1, 12, 69, 7, 7, -17, 16, 1,
-<a name="l10827"></a>10827 16, 69, 3, 3, 31, 9, -33, 9, 2, 79, 9, 1, 9, 64, 9, 16, 52, 63, 9, 79, 9, -65, 9, 3, 9,
-<a name="l10828"></a>10828 10, 118, 9, 9, 0, 118, -128, 18, 1, 64, 18, -48, 18, -32, 18, 3, 80, 18, 1, 18, 47, 93, 93, 113, -19,
-<a name="l10829"></a>10829 51, 47, -19, 0, 47, 93, 43, 113, 114, 51, 47, -3, 93, 57, 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43,
-<a name="l10830"></a>10830 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -4, 19, 1, 113, 91, 62,
-<a name="l10831"></a>10831 107, 59, 35, 61, 12, -126, 6, -66, 63, 103, 67, 31, 78, 2, 6, 73, 102, 126, 54, 30, 87, -28, 56, 36, 95,
-<a name="l10832"></a>10832 0, 0, 1, -5, -106, 6, 124, -2, 52, 7, 43, 0, 18, 0, 110, -77, 75, 14, 1, 11, -72, -1, -32, 64, 11,
-<a name="l10833"></a>10833 10, 19, 52, 2, 32, 10, 17, 52, 0, 0, 7, -72, 3, 22, 64, 31, 64, 12, 64, 94, 53, 12, 64, 79, 83,
-<a name="l10834"></a>10834 52, 12, 64, 67, 69, 52, 12, 64, 43, 45, 52, 111, 12, 127, 12, 2, 15, 12, 1, 12, -128, 16, -72, 3, 22,
-<a name="l10835"></a>10835 -78, 3, 3, 9, -70, 3, 23, 0, 10, 3, 22, -78, 9, 9, 0, -71, 3, 22, 0, 18, 47, -19, 51, 47, -19,
-<a name="l10836"></a>10836 0, 125, 63, 51, 24, 47, -19, 26, -35, 93, 113, 43, 43, 43, 43, 26, -19, 51, 47, 49, 48, 1, 43, 43, 93,
-<a name="l10837"></a>10837 1, 38, 54, 51, 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -5, -105, 1, 113, 91, 62,
-<a name="l10838"></a>10838 107, 59, 68, 61, 12, 97, 6, -66, 63, 103, 67, 67, 78, 2, 6, 124, 82, 91, 44, 24, 70, -84, 44, 29, 76,
-<a name="l10839"></a>10839 0, 1, -5, -106, 6, 73, -2, 52, 7, 48, 0, 18, 0, 107, -75, 14, 32, 9, 17, 52, 11, -72, -1, -32, 64,
-<a name="l10840"></a>10840 65, 9, 19, 52, 2, 32, 9, 17, 52, 0, 0, -17, 12, 1, 12, 69, 7, 7, -17, 16, 1, 16, 69, 3, 3,
-<a name="l10841"></a>10841 31, 9, -33, 9, 2, 79, 9, 1, 9, 64, 9, 16, 52, 63, 9, 79, 9, -65, 9, 3, 9, 10, 118, 9, 9,
-<a name="l10842"></a>10842 0, 118, -128, 18, 1, 64, 18, -48, 18, -32, 18, 3, 80, 18, 1, 18, 47, 93, 93, 113, -19, 51, 47, -19, 0,
-<a name="l10843"></a>10843 47, 93, 43, 113, 114, 51, 47, -3, 93, 57, 47, -3, 93, 50, 47, 49, 48, 1, 43, 43, 43, 1, 38, 54, 51,
-<a name="l10844"></a>10844 50, 23, 22, 51, 50, 55, 51, 6, 35, 34, 39, 38, 35, 34, 23, -5, -105, 1, 113, 91, 62, 107, 59, 35, 61,
-<a name="l10845"></a>10845 12, -126, 6, -66, 63, 103, 67, 31, 78, 2, 6, 73, 102, 126, 54, 30, 87, -28, 56, 36, 95, 0, 0, 1, 0,
-<a name="l10846"></a>10846 -120, 0, 0, 1, 60, 4, 38, 0, 3, 0, 127, 64, 64, 79, 5, -112, 5, -96, 5, -80, 5, -64, 5, -33, 5,
-<a name="l10847"></a>10847 -16, 5, 7, 0, 5, 31, 5, 112, 5, -128, 5, -97, 5, -80, 5, -64, 5, -33, 5, -32, 5, -1, 5, 10, 31,
-<a name="l10848"></a>10848 5, 1, 1, 6, 0, 10, 3, 37, 5, 32, 11, 11, 2, 85, 0, 6, 12, 12, 2, 85, 0, 10, 11, 11, 2,
-<a name="l10849"></a>10849 85, 0, -72, -1, -20, 64, 11, 10, 10, 2, 85, 0, 20, 11, 11, 6, 85, 0, -72, -1, -4, -76, 12, 13, 6,
-<a name="l10850"></a>10850 85, 0, -72, -1, -18, 64, 12, 16, 16, 6, 85, 0, 0, 32, 0, -32, 0, 3, 0, 47, 93, 43, 43, 43, 43,
-<a name="l10851"></a>10851 43, 43, 43, -19, 0, 63, 63, 49, 48, 1, 93, 114, 113, 51, 17, 51, 17, -120, -76, 4, 38, -5, -38, 0, -1,
-<a name="l10852"></a>10852 -1, -1, -3, -2, -69, 5, 89, 5, -70, 2, 38, 0, 36, 0, 0, 1, 7, 4, 125, 3, 52, 0, 0, 0, 32,
-<a name="l10853"></a>10853 -79, 2, 16, -72, -1, -64, -77, 53, 60, 52, 16, -72, -1, -64, -78, 18, 23, 52, -72, -1, -20, -76, 16, 17, 7,
-<a name="l10854"></a>10854 4, 65, 1, 43, 43, 43, 53, -1, -1, 0, 74, -2, -69, 4, 28, 4, 62, 2, 38, 0, 68, 0, 0, 1, 7,
-<a name="l10855"></a>10855 4, 125, 2, -56, 0, 0, 0, 16, 64, 10, 2, 31, 57, 1, 0, 57, 58, 47, 55, 65, 1, 43, 93, 53, -1,
-<a name="l10856"></a>10856 -1, -1, -3, 0, 0, 5, 89, 7, 44, 2, 38, 0, 36, 0, 0, 1, 7, 4, 116, 3, -84, 0, 0, 0, 16,
-<a name="l10857"></a>10857 64, 10, 2, 127, 35, 1, 0, 35, 34, 1, 2, 65, 1, 43, 93, 53, -1, -1, 0, 74, -1, -24, 4, 28, 6,
-<a name="l10858"></a>10858 13, 2, 38, 0, 68, 0, 0, 1, 7, 4, -123, 3, 52, 0, 0, 0, 58, -79, 2, 76, -72, -1, -64, -76, 18,
-<a name="l10859"></a>10859 18, 6, 85, 76, -72, -1, -64, 64, 27, 14, 16, 6, 85, -112, 76, 1, 112, 76, -128, 76, 2, 80, 76, 96, 76,
-<a name="l10860"></a>10860 -96, 76, -80, 76, -32, 76, -16, 76, 6, 76, 28, -72, -1, -54, -79, 72, 43, 1, 43, 93, 113, 114, 43, 43, 53,
-<a name="l10861"></a>10861 -1, -1, -1, -3, 0, 0, 5, 89, 7, 43, 2, 38, 0, 36, 0, 0, 0, 39, 4, 124, 2, -115, 0, 25, 1,
-<a name="l10862"></a>10862 7, 4, 113, 3, -33, 0, 0, 0, 48, -73, 3, -48, 25, 1, 0, 25, 1, 25, -72, -1, -64, 64, 22, 31, 42,
-<a name="l10863"></a>10863 52, 25, 18, 0, 72, 43, 2, 0, 17, 20, 1, 2, 65, 2, 17, 64, 25, 40, 52, 17, 0, 47, 43, 53, 1,
-<a name="l10864"></a>10864 43, 53, 43, 43, 93, 113, 53, -1, -1, 0, 74, -1, -24, 4, 28, 7, 35, 2, 38, 0, 68, 0, 0, 0, 39,
-<a name="l10865"></a>10865 0, -42, 0, -34, 0, 0, 1, 7, 4, -109, 3, 75, 0, 0, 0, 90, -76, 3, 95, 66, 1, 66, -72, -1, -64,
-<a name="l10866"></a>10866 64, 61, 23, 25, 52, 66, 59, 0, 72, 43, 2, -97, 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58,
-<a name="l10867"></a>10867 -96, 58, -80, 58, -32, 58, -16, 58, 5, 58, 64, 46, 50, 52, 0, 58, 61, 28, 28, 65, 2, 31, 62, 47, 62,
-<a name="l10868"></a>10868 2, -16, 62, 1, 95, 62, 1, 62, 64, 9, 12, 52, 62, 0, 47, 43, 93, 113, 114, 53, 1, 43, 43, 93, 113,
-<a name="l10869"></a>10869 114, 53, 43, 43, 93, 53, -1, -1, -1, -3, 0, 0, 5, 89, 7, 43, 2, 38, 0, 36, 0, 0, 0, 39, 4,
-<a name="l10870"></a>10870 124, 2, -115, 0, 25, 1, 7, 4, 110, 3, -79, 0, 0, 0, 39, 64, 26, 3, -33, 22, 1, 15, 22, 1, 22,
-<a name="l10871"></a>10871 19, 0, 72, 43, 2, 0, 17, 20, 1, 2, 65, 2, 17, 64, 25, 40, 52, 17, 0, 47, 43, 53, 1, 43, 53,
-<a name="l10872"></a>10872 43, 93, 113, 53, 0, -1, -1, 0, 74, -1, -24, 4, 28, 7, 35, 2, 38, 0, 68, 0, 0, 0, 39, 0, -42,
-<a name="l10873"></a>10873 0, -34, 0, 0, 1, 7, 4, -110, 3, 45, 0, 0, 0, 89, 64, 69, 3, 63, 64, 38, 51, 52, 63, 64, 23,
-<a name="l10874"></a>10874 30, 52, 63, 60, 0, 72, 43, 2, -97, 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58, -96, 58, -80,
-<a name="l10875"></a>10875 58, -32, 58, -16, 58, 5, 58, 64, 46, 50, 52, 0, 58, 61, 28, 28, 65, 2, 31, 62, 47, 62, 2, -16, 62,
-<a name="l10876"></a>10876 1, 95, 62, 1, 62, 64, 9, 12, 52, 62, 0, 47, 43, 93, 113, 114, 53, 1, 43, 43, 93, 113, 114, 53, 43,
-<a name="l10877"></a>10877 43, 43, 53, 0, -1, -1, -1, -3, 0, 0, 5, 89, 7, 44, 2, 38, 0, 36, 0, 0, 0, 39, 4, 124, 2,
-<a name="l10878"></a>10878 -115, 0, 25, 1, 7, 4, 117, 3, -44, 0, 0, 0, 49, -79, 3, 41, -72, -1, -64, 64, 29, 29, 31, 52, -80,
-<a name="l10879"></a>10879 41, 1, 0, 41, 1, 0, 41, 40, 18, 19, 65, 2, 0, 17, 20, 1, 2, 65, 2, 16, 64, 25, 40, 52, 16,
-<a name="l10880"></a>10880 0, 47, 43, 53, 1, 43, 53, 43, 93, 113, 43, 53, 0, -1, -1, 0, 74, -1, -24, 4, 28, 7, 44, 2, 38,
-<a name="l10881"></a>10881 0, 68, 0, 0, 0, 39, 0, -42, 0, -34, 0, 0, 1, 7, 4, 116, 3, 72, 0, 0, 0, 98, 64, 10, 3,
-<a name="l10882"></a>10882 -128, 83, 1, 79, 83, 127, 83, 2, 83, -72, -1, -64, 64, 62, 18, 27, 52, 0, 83, 82, 59, 60, 65, 2, -97,
-<a name="l10883"></a>10883 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58, -96, 58, -80, 58, -32, 58, -16, 58, 5, 58, 64, 46,
-<a name="l10884"></a>10884 50, 52, 0, 58, 61, 28, 28, 65, 2, 31, 62, 47, 62, 2, -16, 62, 1, 95, 62, 1, 62, 64, 9, 12, 52,
-<a name="l10885"></a>10885 62, 0, 47, 43, 93, 113, 114, 53, 1, 43, 43, 93, 113, 114, 53, 43, 43, 93, 113, 53, -1, -1, -1, -3, 0,
-<a name="l10886"></a>10886 0, 5, 89, 7, 43, 2, 38, 0, 36, 0, 0, 0, 39, 4, 124, 2, -115, 0, 25, 1, 7, 4, -97, 5, 60,
-<a name="l10887"></a>10887 0, 0, 0, 48, 64, 34, 3, 22, 64, 29, 32, 52, 22, 64, 20, 23, 52, 16, 22, 1, 0, 22, 32, 1, 2,
-<a name="l10888"></a>10888 65, 2, 0, 17, 20, 1, 2, 65, 2, 17, 64, 25, 40, 52, 17, 0, 47, 43, 53, 1, 43, 53, 43, 93, 43,
-<a name="l10889"></a>10889 43, 53, -1, -1, 0, 74, -1, -24, 4, 28, 6, -14, 2, 38, 0, 68, 0, 0, 0, 39, 0, -42, 0, -34, 0,
-<a name="l10890"></a>10890 0, 1, 7, 4, 122, 4, 116, 0, 0, 0, 84, 64, 65, 3, 0, 63, 79, 63, 2, 0, 63, 73, 58, 61, 65,
-<a name="l10891"></a>10891 2, -97, 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58, -96, 58, -80, 58, -32, 58, -16, 58, 5, 58,
-<a name="l10892"></a>10892 64, 46, 50, 52, 0, 58, 61, 28, 28, 65, 2, 31, 62, 47, 62, 2, -16, 62, 1, 95, 62, 1, 62, 64, 9,
-<a name="l10893"></a>10893 12, 52, 62, 0, 47, 43, 93, 113, 114, 53, 1, 43, 43, 93, 113, 114, 53, 43, 93, 53, -1, -1, -1, -3, -2,
-<a name="l10894"></a>10894 -69, 5, 89, 6, 104, 2, 38, 0, 36, 0, 0, 0, 39, 4, 124, 2, -115, 0, 25, 1, 7, 4, 125, 3, 52,
-<a name="l10895"></a>10895 0, 0, 0, 53, -79, 3, 23, -72, -1, -64, -77, 53, 60, 52, 23, -72, -1, -64, -78, 18, 23, 52, -72, -1, -20,
-<a name="l10896"></a>10896 64, 19, 23, 24, 7, 4, 65, 2, 0, 17, 20, 1, 2, 65, 2, 17, 64, 10, 40, 52, 17, 0, 47, 43, 53,
-<a name="l10897"></a>10897 1, 43, 53, 43, 43, 43, 53, 0, -1, -1, 0, 74, -2, -69, 4, 28, 5, -62, 2, 38, 0, 68, 0, 0, 0,
-<a name="l10898"></a>10898 39, 0, -42, 0, -34, 0, 0, 1, 7, 4, 125, 2, -56, 0, 0, 0, 67, 64, 48, 3, 31, 64, 1, 0, 64,
-<a name="l10899"></a>10899 65, 47, 55, 65, 2, -97, 58, 1, 32, 58, 48, 58, 112, 58, -128, 58, 4, -112, 58, -96, 58, -80, 58, -32, 58,
-<a name="l10900"></a>10900 -16, 58, 5, 58, 64, 46, 50, 52, 0, 58, 61, 28, 28, 65, 2, 1, 62, -71, 2, 34, 0, 41, 0, 43, 1,
-<a name="l10901"></a>10901 43, 43, 93, 113, 114, 53, 43, 93, 53, 0, -1, -1, -1, -3, 0, 0, 5, 89, 7, 43, 2, 38, 0, 36, 0,
-<a name="l10902"></a>10902 0, 0, 39, 4, 123, 2, -85, 0, 0, 1, 7, 4, 113, 3, -33, 0, 0, 0, 52, -79, 3, 35, -72, -1, -64,
-<a name="l10903"></a>10903 -77, 65, 66, 52, 35, -72, -1, -64, 64, 24, 57, 53, -1, 35, 1, 35, 22, 19, 72, 43, 2, 0, 17, 27, 1,
-<a name="l10904"></a>10904 2, 65, 2, 32, 64, 25, 45, 52, 32, 0, 47, 43, 53, 1, 43, 53, 43, 113, 43, 43, 53, -1, -1, 0, 74,
-<a name="l10905"></a>10905 -1, -24, 4, 28, 7, 35, 2, 38, 0, 68, 0, 0, 0, 39, 0, -39, 0, -11, 0, 0, 1, 7, 4, -109, 3,
-<a name="l10906"></a>10906 72, 0, 0, 0, 55, 64, 12, 3, 96, 72, 112, 72, 2, 0, 72, 91, 72, 2, 72, -72, -1, -32, 64, 20, 15,
-<a name="l10907"></a>10907 17, 52, 72, 67, 24, 72, 43, 2, -49, 60, 1, 60, 28, 3, 104, 43, 2, 1, 60, -71, 2, 34, 0, 41, 0,
-<a name="l10908"></a>10908 43, 1, 43, 93, 53, 43, 43, 93, 113, 53, 0, -1, -1, -1, -3, 0, 0, 5, 89, 7, 43, 2, 38, 0, 36,
-<a name="l10909"></a>10909 0, 0, 0, 39, 4, 123, 2, -85, 0, 0, 1, 7, 4, 110, 3, -79, 0, 0, 0, 92, -74, 2, 32, 64, 25,
-<a name="l10910"></a>10910 45, 52, 32, 0, 47, 43, 53, 1, -79, 6, 2, 67, 84, 88, 64, 14, 3, 84, 35, 35, 22, 22, 65, 2, 0,
-<a name="l10911"></a>10911 31, 31, 1, 2, 65, 43, 53, 43, 53, 27, 64, 27, 3, 35, 64, 56, 57, 52, 35, 64, 41, 49, 52, 35, 64,
-<a name="l10912"></a>10912 9, 17, 52, 64, 35, 111, 35, -33, 35, -17, 35, 4, 35, 2, -72, -1, -11, 64, 9, 72, 43, 2, 0, 17, 27,
-<a name="l10913"></a>10913 1, 2, 65, 43, 53, 43, 113, 43, 43, 43, 53, 89, -1, -1, 0, 74, -1, -24, 4, 28, 7, 35, 2, 38, 0,
-<a name="l10914"></a>10914 68, 0, 0, 0, 39, 0, -39, 0, -11, 0, 0, 1, 7, 4, -110, 3, 92, 0, 0, 0, 42, -73, 3, 15, 73,
-<a name="l10915"></a>10915 80, 73, 2, 73, 67, -72, -1, -14, 64, 14, 72, 43, 2, -49, 60, 1, 60, 28, 3, 104, 43, 2, 1, 60, -71,
-<a name="l10916"></a>10916 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 43, 93, 53, -1, -1, -1, -3, 0, 0, 5, 89, 7, 44, 2, 38,
-<a name="l10917"></a>10917 0, 36, 0, 0, 0, 39, 4, 123, 2, -85, 0, 0, 1, 7, 4, 117, 3, -44, 0, 0, 0, 59, 64, 9, 3,
-<a name="l10918"></a>10918 -80, 54, -64, 54, -48, 54, 3, 54, -72, -1, -64, -77, 42, 50, 52, 54, -72, -1, -64, 64, 23, 33, 40, 52, 0,
-<a name="l10919"></a>10919 54, 53, 1, 2, 65, 2, 0, 17, 27, 1, 2, 65, 2, 32, 64, 25, 45, 52, 32, 0, 47, 43, 53, 1, 43,
-<a name="l10920"></a>10920 53, 43, 43, 43, 114, 53, 0, -1, -1, 0, 74, -1, -24, 4, 28, 7, 44, 2, 38, 0, 68, 0, 0, 0, 39,
-<a name="l10921"></a>10921 0, -39, 0, -11, 0, 0, 1, 7, 4, 116, 3, 92, 0, 0, 0, 66, 64, 48, 3, 80, 90, 96, 90, -112, 90,
-<a name="l10922"></a>10922 -96, 90, 4, 0, 90, 16, 90, 48, 90, 112, 90, -128, 90, 5, 0, 90, -128, 90, -64, 90, -48, 90, 4, 0, 90,
-<a name="l10923"></a>10923 89, 28, 28, 65, 2, -49, 60, 1, 60, 28, 3, 104, 43, 2, 1, 60, -71, 2, 34, 0, 41, 0, 43, 1, 43,
-<a name="l10924"></a>10924 93, 53, 43, 93, 113, 114, 53, -1, -1, -1, -3, 0, 0, 5, 89, 7, 43, 2, 38, 0, 36, 0, 0, 0, 39,
-<a name="l10925"></a>10925 4, 123, 2, -85, 0, 0, 1, 7, 4, -97, 5, 80, 0, 0, 0, 44, 64, 31, 3, -49, 35, -33, 35, -17, 35,
-<a name="l10926"></a>10926 3, 47, 35, 1, 0, 35, 45, 1, 2, 65, 2, 0, 17, 27, 1, 2, 65, 2, 32, 64, 25, 45, 52, 32, 0,
-<a name="l10927"></a>10927 47, 43, 53, 1, 43, 53, 43, 93, 113, 53, -1, -1, 0, 74, -1, -24, 4, 28, 6, -14, 2, 38, 0, 68, 0,
-<a name="l10928"></a>10928 0, 0, 39, 0, -39, 0, -11, 0, 0, 1, 7, 4, 122, 4, -100, 0, 0, 0, 43, -79, 3, 70, -72, -1, -64,
-<a name="l10929"></a>10929 64, 21, 10, 12, 52, 0, 70, 80, 63, 57, 65, 2, -49, 60, 1, 60, 28, 3, 104, 43, 2, 1, 60, -71, 2,
-<a name="l10930"></a>10930 34, 0, 41, 0, 43, 1, 43, 93, 53, 43, 43, 53, 0, -1, -1, -1, -3, -2, -69, 5, 89, 6, 102, 2, 38,
-<a name="l10931"></a>10931 0, 36, 0, 0, 0, 39, 4, 123, 2, -85, 0, 0, 1, 7, 4, 125, 3, 52, 0, 0, 0, 53, -79, 3, 36,
-<a name="l10932"></a>10932 -72, -1, -64, -77, 53, 60, 52, 36, -72, -1, -64, -78, 18, 23, 52, -72, -1, -20, 64, 19, 36, 37, 7, 4, 65,
-<a name="l10933"></a>10933 2, 0, 17, 27, 1, 2, 65, 2, 32, 64, 10, 45, 52, 32, 0, 47, 43, 53, 1, 43, 53, 43, 43, 43, 53,
-<a name="l10934"></a>10934 0, -1, -1, 0, 74, -2, -69, 4, 28, 5, -72, 2, 38, 0, 68, 0, 0, 0, 39, 0, -39, 0, -11, 0, 0,
-<a name="l10935"></a>10935 1, 7, 4, 125, 2, -56, 0, 0, 0, 38, 64, 22, 3, 31, 71, 1, 0, 71, 72, 47, 55, 65, 2, -49, 60,
-<a name="l10936"></a>10936 1, 60, 28, 3, 104, 43, 2, 1, 60, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 53, 43, 93, 53, -1, -1,
-<a name="l10937"></a>10937 0, -94, -2, -69, 4, -24, 5, -70, 2, 38, 0, 40, 0, 0, 1, 7, 4, 125, 3, 92, 0, 0, 0, 16, 64,
-<a name="l10938"></a>10938 10, 1, 32, 13, 1, 0, 13, 14, 0, 11, 65, 1, 43, 93, 53, -1, -1, 0, 75, -2, -69, 4, 30, 4, 62,
-<a name="l10939"></a>10939 2, 38, 0, 72, 0, 0, 1, 7, 4, 125, 2, -38, 0, 0, 0, 20, -75, 2, 80, 31, 96, 31, 2, -72, -1,
-<a name="l10940"></a>10940 -40, -76, 31, 32, 4, 4, 65, 1, 43, 93, 53, -1, -1, 0, -94, 0, 0, 4, -24, 7, 44, 2, 38, 0, 40,
-<a name="l10941"></a>10941 0, 0, 1, 7, 4, 116, 3, -44, 0, 0, 0, 11, -74, 1, 0, 22, 28, 1, 2, 65, 1, 43, 53, 0, -1,
-<a name="l10942"></a>10942 -1, 0, 75, -1, -24, 4, 30, 6, 13, 2, 38, 0, 72, 0, 0, 1, 7, 4, -123, 3, 42, 0, 0, 0, 26,
-<a name="l10943"></a>10943 64, 19, 2, 0, 50, 16, 50, 2, -112, 50, -64, 50, -48, 50, 3, 0, 50, 49, 10, 10, 65, 1, 43, 93, 113,
-<a name="l10944"></a>10944 53, -1, -1, 0, -94, 0, 0, 4, -24, 7, 20, 2, 38, 0, 40, 0, 0, 1, 7, 0, -41, 1, 124, 1, 106,
-<a name="l10945"></a>10945 0, 22, 64, 10, 1, 0, 12, 24, 1, 2, 65, 1, 1, 12, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1,
-<a name="l10946"></a>10946 -1, 0, 75, -1, -24, 4, 30, 5, -86, 2, 38, 0, 72, 0, 0, 1, 7, 0, -41, 0, -16, 0, 0, 0, 22,
-<a name="l10947"></a>10947 64, 10, 2, 0, 30, 42, 10, 10, 65, 2, 1, 30, -71, 2, -61, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0,
-<a name="l10948"></a>10948 -94, 0, 0, 4, -24, 7, 43, 2, 38, 0, 40, 0, 0, 0, 39, 4, 124, 2, -85, 0, 25, 1, 7, 4, 113,
-<a name="l10949"></a>10949 3, -3, 0, 0, 0, 48, -73, 2, -48, 22, 1, 0, 22, 1, 22, -72, -1, -64, 64, 22, 31, 42, 52, 22, 15,
-<a name="l10950"></a>10950 0, 72, 43, 1, 0, 14, 17, 1, 2, 65, 1, 14, 64, 25, 40, 52, 14, 0, 47, 43, 53, 1, 43, 53, 43,
-<a name="l10951"></a>10951 43, 93, 113, 53, -1, -1, 0, 75, -1, -24, 4, 30, 7, 35, 2, 38, 0, 72, 0, 0, 0, 39, 0, -42, 0,
-<a name="l10952"></a>10952 -33, 0, 0, 1, 7, 4, -109, 3, 76, 0, 0, 0, 75, -76, 3, 95, 40, 1, 40, -72, -1, -64, 64, 47, 23,
-<a name="l10953"></a>10953 25, 52, 40, 33, 0, 72, 43, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97, 32, 2, 0, 32, 35,
-<a name="l10954"></a>10954 10, 10, 65, 2, 31, 32, 47, 32, 2, -16, 32, 1, 95, 32, 1, 32, 64, 9, 12, 52, 32, 0, 47, 43, 93,
-<a name="l10955"></a>10955 113, 114, 53, 1, 43, 114, 43, 43, 53, 43, 43, 93, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7, 43, 2,
-<a name="l10956"></a>10956 38, 0, 40, 0, 0, 0, 39, 4, 124, 2, -85, 0, 25, 1, 7, 4, 110, 3, -49, 0, 0, 0, 52, 64, 37,
-<a name="l10957"></a>10957 2, 19, 64, 58, 53, 15, 19, 31, 19, 2, -33, 19, -1, 19, 2, 15, 19, 1, 19, 16, 0, 72, 43, 1, 0,
-<a name="l10958"></a>10958 14, 17, 1, 2, 65, 1, 14, 64, 25, 40, 52, 14, 0, 47, 43, 53, 1, 43, 53, 43, 93, 113, 114, 43, 53,
-<a name="l10959"></a>10959 -1, -1, 0, 75, -1, -24, 4, 30, 7, 35, 2, 38, 0, 72, 0, 0, 0, 39, 0, -42, 0, -33, 0, 0, 1,
-<a name="l10960"></a>10960 7, 4, -110, 3, 46, 0, 0, 0, 81, 64, 61, 3, 37, 64, 17, 17, 6, 85, 37, 64, 38, 51, 52, 37, 64,
-<a name="l10961"></a>10961 23, 30, 52, 37, 34, 0, 72, 43, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97, 32, 2, 0, 32,
-<a name="l10962"></a>10962 35, 10, 10, 65, 2, 31, 32, 47, 32, 2, -16, 32, 1, 95, 32, 1, 32, 64, 9, 12, 52, 32, 0, 47, 43,
-<a name="l10963"></a>10963 93, 113, 114, 53, 1, 43, 114, 43, 43, 53, 43, 43, 43, 43, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7,
-<a name="l10964"></a>10964 44, 2, 38, 0, 40, 0, 0, 0, 39, 4, 124, 2, -85, 0, 25, 1, 7, 4, 117, 3, -24, 0, 0, 0, 49,
-<a name="l10965"></a>10965 -79, 2, 38, -72, -1, -64, 64, 29, 28, 32, 52, -80, 38, 1, 0, 38, 1, 0, 38, 37, 15, 16, 65, 1, 0,
-<a name="l10966"></a>10966 14, 17, 1, 2, 65, 1, 14, 64, 25, 40, 52, 14, 0, 47, 43, 53, 1, 43, 53, 43, 93, 113, 43, 53, 0,
-<a name="l10967"></a>10967 -1, -1, 0, 75, -1, -24, 4, 30, 7, 44, 2, 38, 0, 72, 0, 0, 0, 39, 0, -42, 0, -33, 0, 0, 1,
-<a name="l10968"></a>10968 7, 4, 116, 3, 72, 0, 0, 0, 81, 64, 9, 3, 79, 57, 127, 57, -17, 57, 3, 57, -72, -1, -64, 64, 48,
-<a name="l10969"></a>10969 18, 27, 52, 0, 57, 56, 33, 34, 65, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97, 32, 2, 0,
-<a name="l10970"></a>10970 32, 35, 10, 10, 65, 2, 31, 32, 47, 32, 2, -16, 32, 1, 95, 32, 1, 32, 64, 9, 12, 52, 32, 0, 47,
-<a name="l10971"></a>10971 43, 93, 113, 114, 53, 1, 43, 114, 43, 43, 53, 43, 43, 93, 53, 0, -1, -1, 0, -94, 0, 0, 4, -24, 7,
-<a name="l10972"></a>10972 43, 2, 38, 0, 40, 0, 0, 0, 39, 4, 124, 2, -85, 0, 25, 1, 7, 4, -97, 5, 80, 0, 0, 0, 36,
-<a name="l10973"></a>10973 64, 24, 2, -80, 19, 1, 0, 19, 29, 14, 17, 65, 1, 0, 14, 17, 1, 2, 65, 1, 14, 64, 25, 40, 52,
-<a name="l10974"></a>10974 14, 0, 47, 43, 53, 1, 43, 53, 43, 113, 53, -1, -1, 0, 75, -1, -24, 4, 30, 6, -14, 2, 38, 0, 72,
-<a name="l10975"></a>10975 0, 0, 0, 39, 0, -42, 0, -33, 0, 0, 1, 7, 4, 122, 4, 116, 0, 0, 0, 69, 64, 51, 3, 0, 37,
-<a name="l10976"></a>10976 79, 37, 2, 0, 37, 47, 32, 35, 65, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97, 32, 2, 0,
-<a name="l10977"></a>10977 32, 35, 10, 10, 65, 2, 31, 32, 47, 32, 2, -16, 32, 1, 95, 32, 1, 32, 64, 9, 12, 52, 32, 0, 47,
-<a name="l10978"></a>10978 43, 93, 113, 114, 53, 1, 43, 114, 43, 43, 53, 43, 93, 53, 0, -1, -1, 0, -94, -2, -69, 4, -24, 6, 104,
-<a name="l10979"></a>10979 2, 38, 0, 40, 0, 0, 0, 39, 4, 124, 2, -85, 0, 25, 1, 7, 4, 125, 3, 92, 0, 0, 0, 36, 64,
-<a name="l10980"></a>10980 24, 2, 32, 20, 1, 0, 20, 21, 0, 11, 65, 1, 0, 14, 17, 1, 2, 65, 1, 14, 64, 10, 40, 52, 14,
-<a name="l10981"></a>10981 0, 47, 43, 53, 1, 43, 53, 43, 93, 53, -1, -1, 0, 75, -2, -69, 4, 30, 5, -62, 2, 38, 0, 72, 0,
-<a name="l10982"></a>10982 0, 0, 39, 0, -42, 0, -33, 0, 0, 1, 7, 4, 125, 2, -38, 0, 0, 0, 57, -75, 3, 80, 38, 96, 38,
-<a name="l10983"></a>10983 2, -72, -1, -40, 64, 29, 38, 39, 4, 4, 65, 2, 32, 64, 59, 53, 32, 64, 45, 50, 52, 15, 32, -97, 32,
-<a name="l10984"></a>10984 2, 0, 32, 35, 10, 10, 65, 2, 1, 36, -71, 2, 34, 0, 41, 0, 43, 1, 43, 114, 43, 43, 53, 43, 93,
-<a name="l10985"></a>10985 53, 0, -1, -1, 0, 99, 0, 0, 2, 24, 7, 44, 2, 38, 0, 44, 0, 0, 1, 7, 4, 116, 2, 58, 0,
-<a name="l10986"></a>10986 0, 0, 22, -79, 1, 14, -72, -1, -64, 64, 10, 16, 16, 6, 85, 0, 14, 20, 1, 2, 65, 1, 43, 43, 53,
-<a name="l10987"></a>10987 -1, -1, 0, 31, 0, 0, 1, -44, 6, 13, 2, 38, 4, -93, 0, 0, 1, 7, 4, -123, 1, -52, 0, 0, 0,
-<a name="l10988"></a>10988 31, -80, 1, 1, -79, 6, 2, 67, 84, 88, -75, 0, 24, 23, 1, 2, 65, 43, 27, -73, 79, 24, 1, 24, 1,
-<a name="l10989"></a>10989 34, 72, 43, 43, 113, 89, 53, 0, -1, -1, 0, -70, -2, -69, 1, -121, 5, -70, 2, 38, 0, 44, 0, 0, 1,
-<a name="l10990"></a>10990 7, 4, 125, 1, -72, 0, 0, 0, 11, -74, 1, 0, 5, 6, 0, 3, 65, 1, 43, 53, 0, -1, -1, 0, 124,
-<a name="l10991"></a>10991 -2, -69, 1, 73, 5, -70, 2, 38, 0, 76, 0, 0, 1, 7, 4, 125, 1, 122, 0, 0, 0, 22, 64, 15, 2,
-<a name="l10992"></a>10992 9, 64, 109, 111, 52, 79, 9, 1, 0, 9, 10, 4, 7, 65, 1, 43, 113, 43, 53, -1, -1, 0, 99, -2, -69,
-<a name="l10993"></a>10993 5, -35, 5, -44, 2, 38, 0, 50, 0, 0, 1, 7, 4, 125, 3, -84, 0, 0, 0, 11, -74, 2, 0, 29, 30,
-<a name="l10994"></a>10994 11, 11, 65, 1, 43, 53, 0, -1, -1, 0, 68, -2, -69, 4, 39, 4, 62, 2, 38, 0, 82, 0, 0, 1, 7,
-<a name="l10995"></a>10995 4, 125, 2, -58, 0, 0, 0, 11, -74, 2, 0, 27, 28, 11, 11, 65, 1, 43, 53, 0, -1, -1, 0, 99, -1,
-<a name="l10996"></a>10996 -25, 5, -35, 7, 44, 2, 38, 0, 50, 0, 0, 1, 7, 4, 116, 4, 56, 0, 0, 0, 24, 64, 17, 2, 112,
-<a name="l10997"></a>10997 48, 1, -112, 48, -80, 48, -64, 48, 3, 0, 48, 47, 3, 3, 65, 1, 43, 93, 113, 53, -1, -1, 0, 68, -1,
-<a name="l10998"></a>10998 -24, 4, 39, 6, 13, 2, 38, 0, 82, 0, 0, 1, 7, 4, -123, 3, 42, 0, 0, 0, 22, 64, 15, 2, 0,
-<a name="l10999"></a>10999 46, 16, 46, 2, -112, 46, 1, 0, 46, 45, 4, 4, 65, 1, 43, 93, 113, 53, -1, -1, 0, 99, -1, -25, 5,
-<a name="l11000"></a>11000 -35, 7, 43, 2, 38, 0, 50, 0, 0, 0, 39, 4, 124, 3, 28, 0, 25, 1, 7, 4, 113, 4, 110, 0, 0,
-<a name="l11001"></a>11001 0, 48, -73, 3, -48, 38, 1, 0, 38, 1, 38, -72, -1, -64, 64, 22, 31, 42, 52, 38, 31, 0, 72, 43, 2,
-<a name="l11002"></a>11002 0, 30, 33, 0, 7, 65, 2, 30, 64, 25, 40, 52, 30, 0, 47, 43, 53, 1, 43, 53, 43, 43, 93, 113, 53,
-<a name="l11003"></a>11003 -1, -1, 0, 68, -1, -24, 4, 39, 7, 35, 2, 38, 0, 82, 0, 0, 0, 39, 0, -42, 0, -32, 0, 0, 1,
-<a name="l11004"></a>11004 7, 4, -109, 3, 77, 0, 0, 0, 68, -76, 3, 95, 36, 1, 36, -72, -1, -64, 64, 41, 23, 25, 52, 36, 29,
-<a name="l11005"></a>11005 0, 72, 43, 2, 28, 64, 46, 50, 52, -97, 28, 1, 0, 28, 31, 0, 7, 65, 2, 31, 28, 47, 28, 2, -16,
-<a name="l11006"></a>11006 28, 1, 95, 28, 1, 28, 64, 9, 12, 52, 28, 0, 47, 43, 93, 113, 114, 53, 1, 43, 114, 43, 53, 43, 43,
-<a name="l11007"></a>11007 93, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 43, 2, 38, 0, 50, 0, 0, 0, 39, 4, 124, 3, 28, 0,
-<a name="l11008"></a>11008 25, 1, 7, 4, 110, 4, 64, 0, 0, 0, 52, 64, 37, 3, 35, 64, 58, 53, 15, 35, 31, 35, 2, -33, 35,
-<a name="l11009"></a>11009 -1, 35, 2, 15, 35, 1, 35, 32, 0, 72, 43, 2, 0, 30, 33, 0, 7, 65, 2, 30, 64, 25, 40, 52, 30,
-<a name="l11010"></a>11010 0, 47, 43, 53, 1, 43, 53, 43, 93, 113, 114, 43, 53, -1, -1, 0, 68, -1, -24, 4, 39, 7, 35, 2, 38,
-<a name="l11011"></a>11011 0, 82, 0, 0, 0, 39, 0, -42, 0, -32, 0, 0, 1, 7, 4, -110, 3, 47, 0, 0, 0, 67, 64, 49, 3,
-<a name="l11012"></a>11012 33, 64, 38, 51, 52, 33, 64, 23, 30, 52, 33, 30, 0, 72, 43, 2, 28, 64, 46, 50, 52, -97, 28, 1, 0,
-<a name="l11013"></a>11013 28, 31, 0, 7, 65, 2, 31, 28, 47, 28, 2, -16, 28, 1, 95, 28, 1, 28, 64, 9, 12, 52, 28, 0, 47,
-<a name="l11014"></a>11014 43, 93, 113, 114, 53, 1, 43, 114, 43, 53, 43, 43, 43, 53, 0, -1, -1, 0, 99, -1, -25, 5, -35, 7, 44,
-<a name="l11015"></a>11015 2, 38, 0, 50, 0, 0, 0, 39, 4, 124, 3, 28, 0, 25, 1, 7, 4, 117, 4, 96, 0, 0, 0, 49, -79,
-<a name="l11016"></a>11016 3, 54, -72, -1, -64, 64, 29, 28, 32, 52, -80, 54, 1, 0, 54, 1, 0, 54, 53, 30, 33, 65, 2, 0, 30,
-<a name="l11017"></a>11017 33, 0, 7, 65, 2, 30, 64, 25, 40, 52, 30, 0, 47, 43, 53, 1, 43, 53, 43, 93, 113, 43, 53, 0, -1,
-<a name="l11018"></a>11018 -1, 0, 68, -1, -24, 4, 39, 7, 44, 2, 38, 0, 82, 0, 0, 0, 39, 0, -42, 0, -32, 0, 0, 1, 7,
-<a name="l11019"></a>11019 4, 116, 3, 72, 0, 0, 0, 76, 64, 11, 3, 79, 53, 127, 53, -33, 53, -17, 53, 4, 53, -72, -1, -64, 64,
-<a name="l11020"></a>11020 42, 18, 27, 52, 0, 53, 52, 29, 30, 65, 2, 28, 64, 46, 50, 52, -97, 28, 1, 0, 28, 31, 0, 7, 65,
-<a name="l11021"></a>11021 2, 31, 28, 47, 28, 2, -16, 28, 1, 95, 28, 1, 28, 64, 9, 12, 52, 28, 0, 47, 43, 93, 113, 114, 53,
-<a name="l11022"></a>11022 1, 43, 114, 43, 53, 43, 43, 93, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 43, 2, 38, 0, 50, 0, 0,
-<a name="l11023"></a>11023 0, 39, 4, 124, 3, 28, 0, 25, 1, 7, 4, -97, 5, -56, 0, 0, 0, 32, 64, 21, 3, 0, 35, 45, 30,
-<a name="l11024"></a>11024 33, 65, 2, 0, 30, 33, 0, 7, 65, 2, 29, 64, 25, 40, 52, 29, 0, 47, 43, 53, 1, 43, 53, 43, 53,
-<a name="l11025"></a>11025 -1, -1, 0, 68, -1, -24, 4, 39, 6, -14, 2, 38, 0, 82, 0, 0, 0, 39, 0, -42, 0, -32, 0, 0, 1,
-<a name="l11026"></a>11026 7, 4, 122, 4, 116, 0, 0, 0, 62, 64, 45, 3, 0, 33, 79, 33, 2, 0, 33, 43, 28, 31, 65, 2, 28,
-<a name="l11027"></a>11027 64, 46, 50, 52, -97, 28, 1, 0, 28, 31, 0, 7, 65, 2, 31, 28, 47, 28, 2, -16, 28, 1, 95, 28, 1,
-<a name="l11028"></a>11028 28, 64, 9, 12, 52, 28, 0, 47, 43, 93, 113, 114, 53, 1, 43, 114, 43, 53, 43, 93, 53, -1, -1, 0, 99,
-<a name="l11029"></a>11029 -2, -69, 5, -35, 6, 104, 2, 38, 0, 50, 0, 0, 0, 39, 4, 124, 3, 28, 0, 25, 1, 7, 4, 125, 3,
-<a name="l11030"></a>11030 -84, 0, 0, 0, 32, 64, 21, 3, 0, 36, 37, 11, 11, 65, 2, 0, 30, 33, 0, 7, 65, 2, 30, 64, 10,
-<a name="l11031"></a>11031 40, 52, 30, 0, 47, 43, 53, 1, 43, 53, 43, 53, -1, -1, 0, 68, -2, -69, 4, 39, 5, -62, 2, 38, 0,
-<a name="l11032"></a>11032 82, 0, 0, 0, 39, 0, -42, 0, -32, 0, 0, 1, 7, 4, 125, 2, -58, 0, 0, 0, 41, 64, 25, 3, 0,
-<a name="l11033"></a>11033 34, 35, 11, 11, 65, 2, 28, 64, 46, 50, 52, -97, 28, 1, 0, 28, 31, 0, 7, 65, 2, 1, 32, -71, 2,
-<a name="l11034"></a>11034 34, 0, 41, 0, 43, 1, 43, 114, 43, 53, 43, 53, 0, -1, -1, 0, 99, -1, -25, 6, -84, 7, 44, 2, 38,
-<a name="l11035"></a>11035 4, 106, 0, 0, 1, 7, 0, -115, 1, -57, 1, 106, 0, 31, 64, 17, 2, 0, 48, 1, 111, 48, -16, 48, 2,
-<a name="l11036"></a>11036 48, 37, 25, 72, 43, 2, 1, 45, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 53, 0, -1, -1, 0, 68,
-<a name="l11037"></a>11037 -1, -24, 5, 0, 5, -62, 2, 38, 4, 107, 0, 0, 1, 7, 0, -115, 0, -12, 0, 0, 0, 33, 64, 19, 2,
-<a name="l11038"></a>11038 0, 48, 1, 79, 48, 95, 48, -113, 48, 3, 48, 37, 49, 72, 43, 2, 1, 45, -71, 2, 34, 0, 41, 0, 43,
-<a name="l11039"></a>11039 1, 43, 93, 113, 53, 0, -1, -1, 0, 99, -1, -25, 6, -84, 7, 44, 2, 38, 4, 106, 0, 0, 1, 7, 0,
-<a name="l11040"></a>11040 67, 1, -61, 1, 106, 0, 32, 64, 9, 2, 15, 46, 1, -1, 46, 1, 46, 37, -72, -1, -30, -76, 72, 43, 2,
-<a name="l11041"></a>11041 1, 45, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 53, -1, -1, 0, 68, -1, -24, 5, 0, 5, -62, 2,
-<a name="l11042"></a>11042 38, 4, 107, 0, 0, 1, 7, 0, 67, 0, -34, 0, 0, 0, 33, 64, 19, 2, 95, 46, 111, 46, 2, 32, 46,
-<a name="l11043"></a>11043 48, 46, 2, 46, 37, 0, 72, 43, 2, 1, 45, -71, 2, 34, 0, 41, 0, 43, 1, 43, 93, 113, 53, 0, -1,
-<a name="l11044"></a>11044 -1, 0, 99, -1, -25, 6, -84, 7, 69, 2, 38, 4, 106, 0, 0, 1, 7, 4, 116, 4, 56, 0, 25, 0, 26,
-<a name="l11045"></a>11045 64, 19, 2, 80, 65, 1, 127, 65, -112, 65, -80, 65, -64, 65, 4, 0, 65, 64, 37, 37, 65, 1, 43, 93, 113,
-<a name="l11046"></a>11046 53, -1, -1, 0, 68, -1, -24, 5, 0, 6, 13, 2, 38, 4, 107, 0, 0, 1, 7, 4, -123, 3, 42, 0, 0,
-<a name="l11047"></a>11047 0, 24, 64, 17, 2, 0, 65, 1, -112, 65, -64, 65, -48, 65, 3, 0, 65, 64, 37, 37, 65, 1, 43, 93, 113,
-<a name="l11048"></a>11048 53, -1, -1, 0, 99, -1, -25, 6, -84, 6, -5, 2, 38, 4, 106, 0, 0, 1, 7, 0, -41, 1, -53, 1, 81,
-<a name="l11049"></a>11049 0, 22, 64, 10, 2, 0, 45, 57, 37, 37, 65, 2, 1, 45, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1,
-<a name="l11050"></a>11050 -1, 0, 68, -1, -24, 5, 0, 5, -86, 2, 38, 4, 107, 0, 0, 1, 7, 0, -41, 0, -32, 0, 0, 0, 22,
-<a name="l11051"></a>11051 64, 10, 2, 0, 45, 57, 37, 37, 65, 2, 1, 45, -71, 2, 34, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0,
-<a name="l11052"></a>11052 99, -2, -69, 6, -84, 5, -44, 2, 38, 4, 106, 0, 0, 1, 7, 4, 125, 3, -84, 0, 0, 0, 16, 64, 10,
-<a name="l11053"></a>11053 2, 0, 46, 1, 0, 46, 47, 29, 29, 65, 1, 43, 113, 53, -1, -1, 0, 68, -2, -69, 5, 0, 4, 64, 2,
-<a name="l11054"></a>11054 38, 4, 107, 0, 0, 1, 7, 4, 125, 2, -58, 0, 0, 0, 11, -74, 2, 0, 46, 47, 29, 29, 65, 1, 43,
-<a name="l11055"></a>11055 53, 0, -1, -1, 0, -95, -2, -69, 5, 34, 5, -70, 2, 38, 0, 56, 0, 0, 1, 7, 4, 125, 3, 112, 0,
-<a name="l11056"></a>11056 0, 0, 16, 64, 10, 1, 79, 22, 1, 0, 22, 23, 17, 6, 65, 1, 43, 113, 53, -1, -1, 0, -125, -2, -69,
-<a name="l11057"></a>11057 3, -32, 4, 38, 2, 38, 0, 88, 0, 0, 1, 7, 4, 125, 2, -88, 0, 0, 0, 20, 64, 14, 1, 80, 26,
-<a name="l11058"></a>11058 96, 26, 112, 26, 3, 0, 26, 27, 12, 21, 65, 1, 43, 93, 53, -1, -1, 0, -95, -1, -25, 5, 34, 7, 44,
-<a name="l11059"></a>11059 2, 38, 0, 56, 0, 0, 1, 7, 4, 116, 3, -24, 0, 0, 0, 16, 64, 10, 1, -48, 31, 1, 0, 31, 37,
-<a name="l11060"></a>11060 12, 0, 65, 1, 43, 93, 53, -1, -1, 0, -125, -1, -24, 3, -32, 6, 13, 2, 38, 0, 88, 0, 0, 1, 7,
-<a name="l11061"></a>11061 4, -123, 3, 27, 0, 0, 0, 50, 64, 28, 1, 80, 45, -112, 45, -96, 45, -80, 45, 4, 0, 45, 16, 45, 80,
-<a name="l11062"></a>11062 45, 96, 45, 112, 45, -112, 45, -96, 45, -80, 45, 8, 45, -72, -1, -64, 64, 9, 23, 26, 52, 0, 45, 44, 11,
-<a name="l11063"></a>11063 22, 65, 1, 43, 43, 93, 113, 53, -1, -1, 0, -95, -1, -25, 6, -126, 7, 44, 2, 38, 4, 108, 0, 0, 1,
-<a name="l11064"></a>11064 7, 0, -115, 1, -120, 1, 106, 0, 41, -79, 1, 39, -72, -1, -64, 64, 20, 57, 53, 112, 39, 1, 47, 39, 95,
-<a name="l11065"></a>11065 39, -113, 39, 3, 39, 26, 23, 72, 43, 1, 1, 38, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 114, 43, 53,
-<a name="l11066"></a>11066 0, -1, -1, 0, -125, -1, -24, 5, 29, 5, -62, 2, 38, 4, 109, 0, 0, 1, 7, 0, -115, 0, -25, 0, 0,
-<a name="l11067"></a>11067 0, 27, 64, 14, 1, 79, 40, -112, 40, 2, 40, 25, 60, 72, 43, 1, 1, 37, -71, 2, 34, 0, 41, 0, 43,
-<a name="l11068"></a>11068 1, 43, 113, 53, 0, -1, -1, 0, -95, -1, -25, 6, -126, 7, 44, 2, 38, 4, 108, 0, 0, 1, 7, 0, 67,
-<a name="l11069"></a>11069 1, -123, 1, 106, 0, 33, 64, 18, 1, 127, 41, 1, 111, 41, 1, -97, 41, 1, 41, 26, 0, 72, 43, 1, 1,
-<a name="l11070"></a>11070 39, -71, 2, 33, 0, 41, 0, 43, 1, 43, 93, 113, 114, 53, 0, -1, -1, 0, -125, -1, -24, 5, 29, 5, -62,
-<a name="l11071"></a>11071 2, 38, 4, 109, 0, 0, 1, 7, 0, 67, 0, -34, 0, 0, 0, 25, 64, 12, 1, -32, 38, 1, 38, 25, 12,
-<a name="l11072"></a>11072 72, 43, 1, 1, 38, -71, 2, 34, 0, 41, 0, 43, 1, 43, 113, 53, 0, -1, -1, 0, -95, -1, -25, 6, -126,
-<a name="l11073"></a>11073 7, 44, 2, 38, 4, 108, 0, 0, 1, 7, 4, 116, 3, -24, 0, 0, 0, 20, 64, 14, 1, 47, 48, -128, 48,
-<a name="l11074"></a>11074 -48, 48, 3, 0, 48, 54, 20, 31, 65, 1, 43, 93, 53, -1, -1, 0, -125, -1, -24, 5, 29, 6, 13, 2, 38,
-<a name="l11075"></a>11075 4, 109, 0, 0, 1, 7, 4, -123, 3, 27, 0, 0, 0, 36, -79, 1, 57, -72, -1, -64, 64, 16, 22, 24, 6,
-<a name="l11076"></a>11076 85, 80, 57, -96, 57, 2, -112, 57, -96, 57, 2, 57, 25, -72, -1, -25, -79, 72, 43, 1, 43, 93, 113, 43, 53,
-<a name="l11077"></a>11077 -1, -1, 0, -95, -1, -25, 6, -126, 6, -5, 2, 38, 4, 108, 0, 0, 1, 7, 0, -41, 1, -103, 1, 81, 0,
-<a name="l11078"></a>11078 22, 64, 10, 1, 0, 38, 50, 20, 31, 65, 1, 1, 38, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1,
-<a name="l11079"></a>11079 0, -125, -1, -24, 5, 29, 5, -86, 2, 38, 4, 109, 0, 0, 1, 7, 0, -41, 0, -26, 0, 0, 0, 32, 64,
-<a name="l11080"></a>11080 18, 1, -17, 37, 1, 37, 64, 83, 84, 52, 0, 37, 49, 19, 31, 65, 1, 1, 37, -71, 2, 34, 0, 41, 0,
-<a name="l11081"></a>11081 43, 1, 43, 43, 113, 53, -1, -1, 0, -95, -2, -69, 6, -126, 5, -70, 2, 38, 4, 108, 0, 0, 1, 7, 4,
-<a name="l11082"></a>11082 125, 3, 112, 0, 0, 0, 16, 64, 10, 1, 79, 39, 1, 0, 39, 40, 26, 14, 65, 1, 43, 113, 53, -1, -1,
-<a name="l11083"></a>11083 0, -125, -2, -69, 5, 29, 4, 38, 2, 38, 4, 109, 0, 0, 1, 7, 4, 125, 2, -88, 0, 0, 0, 20, 64,
-<a name="l11084"></a>11084 14, 1, 80, 38, 96, 38, 112, 38, 3, 0, 38, 39, 21, 29, 65, 1, 43, 93, 53, -1, -1, 0, 6, -2, -69,
-<a name="l11085"></a>11085 5, 70, 5, -70, 2, 38, 0, 60, 0, 0, 1, 7, 4, 125, 3, 52, 0, 0, 0, 11, -74, 1, 0, 14, 15,
-<a name="l11086"></a>11086 0, 12, 65, 1, 43, 53, 0, -1, -1, 0, 33, -2, 81, 3, -18, 4, 38, 2, 38, 0, 92, 0, 0, 1, 7,
-<a name="l11087"></a>11087 4, 125, 3, -84, 0, 0, 0, 11, -74, 1, 0, 28, 28, 18, 18, 65, 1, 43, 53, 0, -1, -1, 0, 6, 0,
-<a name="l11088"></a>11088 0, 5, 70, 7, 44, 2, 38, 0, 60, 0, 0, 1, 7, 4, 116, 3, -74, 0, 0, 0, 18, 64, 12, 1, -48,
-<a name="l11089"></a>11089 23, -32, 23, 2, 0, 23, 29, 3, 9, 65, 1, 43, 93, 53, -1, -1, 0, 33, -2, 81, 3, -18, 6, 13, 2,
-<a name="l11090"></a>11090 38, 0, 92, 0, 0, 1, 7, 4, -123, 2, -8, 0, 0, 0, 65, -79, 1, 47, -72, -1, -64, -76, 24, 24, 6,
-<a name="l11091"></a>11091 85, 47, -72, -1, -64, -76, 20, 21, 6, 85, 47, -72, -1, -64, 64, 15, 15, 17, 6, 85, 31, 47, 112, 47, 2,
-<a name="l11092"></a>11092 -112, 47, -96, 47, 2, 47, -72, -1, -64, -76, 43, 48, 52, 47, 15, -72, -1, -55, -79, 72, 43, 1, 43, 43, 93,
-<a name="l11093"></a>11093 113, 43, 43, 43, 53, 0, -1, -1, 0, 6, 0, 0, 5, 70, 6, -5, 2, 38, 0, 60, 0, 0, 1, 7, 0,
-<a name="l11094"></a>11094 -41, 1, 104, 1, 81, 0, 22, 64, 10, 1, 0, 13, 25, 3, 9, 65, 1, 1, 13, -71, 2, 33, 0, 41, 0,
-<a name="l11095"></a>11095 43, 1, 43, 53, -1, -1, 0, 33, -2, 81, 3, -18, 5, -86, 2, 38, 0, 92, 0, 0, 1, 7, 0, -41, 0,
-<a name="l11096"></a>11096 -66, 0, 0, 0, 22, 64, 10, 1, 0, 27, 39, 12, 18, 65, 1, 1, 27, -71, 2, 34, 0, 41, 0, 43, 1,
-<a name="l11097"></a>11097 43, 53, -1, -1, -1, -3, 0, 0, 5, 89, 7, 33, 2, 54, 0, 36, 0, 0, 1, 23, 0, -33, 1, 54, 1,
-<a name="l11098"></a>11098 95, 0, 22, 64, 10, 2, 0, 20, 17, 1, 2, 65, 2, 1, 19, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53,
-<a name="l11099"></a>11099 -1, -1, 0, 74, -1, -24, 4, 28, 5, -62, 2, 54, 0, 68, 0, 0, 1, 23, 0, -33, 0, -11, 0, 0, 0,
-<a name="l11100"></a>11100 30, 64, 16, 2, 96, 61, 1, -32, 61, 1, 0, 61, 58, 28, 28, 65, 2, 1, 60, -71, 2, -61, 0, 41, 0,
-<a name="l11101"></a>11101 43, 1, 43, 93, 113, 53, -1, -1, -1, -30, 0, 0, 2, 91, 7, 33, 2, 54, 0, 44, 0, 0, 1, 23, 0,
-<a name="l11102"></a>11102 -33, -1, -70, 1, 95, 0, 26, 64, 13, 1, 32, 9, 1, 0, 9, 6, 1, 2, 65, 1, 1, 8, -71, 2, 33,
-<a name="l11103"></a>11103 0, 41, 0, 43, 1, 43, 93, 53, -1, -1, -1, -80, 0, 0, 2, 41, 5, -62, 2, 54, 4, -93, 0, 0, 1,
-<a name="l11104"></a>11104 22, 0, -33, -120, 0, 0, 22, 64, 10, 1, 0, 9, 6, 1, 2, 65, 1, 1, 8, -71, 2, -61, 0, 41, 0,
-<a name="l11105"></a>11105 43, 1, 43, 53, -1, -1, 0, 99, -1, -25, 5, -35, 7, 33, 2, 54, 0, 50, 0, 0, 1, 23, 0, -33, 1,
-<a name="l11106"></a>11106 -62, 1, 95, 0, 22, 64, 10, 2, 0, 33, 30, 3, 3, 65, 2, 1, 32, -71, 2, 33, 0, 41, 0, 43, 1,
-<a name="l11107"></a>11107 43, 53, -1, -1, 0, 68, -1, -24, 4, 39, 5, -62, 2, 54, 0, 82, 0, 0, 1, 23, 0, -33, 0, -46, 0,
-<a name="l11108"></a>11108 0, 0, 22, 64, 10, 2, 0, 31, 28, 4, 4, 65, 2, 1, 30, -71, 2, -61, 0, 41, 0, 43, 1, 43, 53,
-<a name="l11109"></a>11109 -1, -1, 0, -95, -1, -25, 5, 34, 7, 33, 2, 54, 0, 56, 0, 0, 1, 23, 0, -33, 1, -112, 1, 95, 0,
-<a name="l11110"></a>11110 22, 64, 10, 1, 0, 26, 23, 11, 1, 65, 1, 1, 25, -71, 2, 33, 0, 41, 0, 43, 1, 43, 53, -1, -1,
-<a name="l11111"></a>11111 0, -125, -1, -24, 3, -32, 5, -62, 2, 54, 0, 88, 0, 0, 1, 23, 0, -33, 0, -36, 0, 0, 0, 22, 64,
-<a name="l11112"></a>11112 10, 1, 0, 30, 27, 10, 23, 65, 1, 1, 29, -71, 2, -61, 0, 41, 0, 43, 1, 43, 53, -1, -1, 0, -95,
-<a name="l11113"></a>11113 -1, -25, 5, 34, 7, 51, 2, 54, 0, 56, 0, 0, 1, 23, 5, 12, 2, -18, 0, 0, 0, 25, 64, 13, 3,
-<a name="l11114"></a>11114 2, 1, 0, 30, 25, 11, 1, 65, 3, 2, 1, 23, 0, 47, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1,
-<a name="l11115"></a>11115 0, -125, -1, -24, 3, -32, 6, -47, 2, 38, 0, 88, 0, 0, 0, 39, 0, -114, 0, -36, 0, 0, 1, 7, 0,
-<a name="l11116"></a>11116 -40, 0, -36, 1, 114, 0, 52, 64, 32, 3, 0, 33, 36, 25, 32, 65, 2, 1, 112, 25, 1, 0, 25, 31, 17,
-<a name="l11117"></a>11117 17, 65, 3, -64, 33, 1, 15, 33, 63, 33, 2, 33, 1, 2, 2, 32, -71, 2, 34, 0, 41, 0, 43, 47, 93,
-<a name="l11118"></a>11118 93, 53, 1, 43, 93, 53, 53, 43, 53, -1, -1, 0, -95, -1, -25, 5, 34, 7, 52, 2, 54, 0, 56, 0, 0,
-<a name="l11119"></a>11119 1, 23, 5, 13, 2, -18, 0, 0, 0, 25, 64, 13, 3, 2, 1, 0, 30, 25, 11, 1, 65, 3, 2, 1, 30,
-<a name="l11120"></a>11120 0, 47, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, -125, -1, -24, 3, -32, 7, 52, 2, 38, 0, 88,
-<a name="l11121"></a>11121 0, 0, 0, 39, 0, -114, 0, -36, 0, 0, 1, 7, 0, -115, 0, -25, 1, 114, 0, 61, -71, 0, 3, -1, -16,
-<a name="l11122"></a>11122 64, 18, 33, 33, 27, 27, 65, 2, 1, 112, 25, 1, 0, 25, 31, 17, 17, 65, 3, 33, -72, -1, -64, 64, 13,
-<a name="l11123"></a>11123 15, 17, 52, 33, 64, 10, 12, 52, 33, 1, 2, 2, 25, -71, 2, 34, 0, 41, 0, 43, 47, 43, 43, 53, 1,
-<a name="l11124"></a>11124 43, 93, 53, 53, 43, 53, 0, -1, -1, 0, -95, -1, -25, 5, 34, 7, 52, 2, 54, 0, 56, 0, 0, 1, 23,
-<a name="l11125"></a>11125 5, 14, 2, -18, 0, 0, 0, 25, 64, 13, 3, 2, 1, 0, 33, 21, 11, 1, 65, 3, 2, 1, 33, 0, 47,
-<a name="l11126"></a>11126 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, -125, -1, -24, 3, -32, 7, 52, 2, 38, 0, 88, 0, 0,
-<a name="l11127"></a>11127 0, 39, 0, -114, 0, -36, 0, 0, 1, 7, 0, -33, 0, -36, 1, 114, 0, 54, 64, 34, 3, 0, 37, 36, 25,
-<a name="l11128"></a>11128 32, 65, 2, 1, 112, 25, 1, 0, 25, 31, 17, 17, 65, 3, 96, 37, -128, 37, 2, 37, 64, 11, 12, 52, 37,
-<a name="l11129"></a>11129 1, 2, 2, 25, -71, 2, 34, 0, 41, 0, 43, 47, 43, 93, 53, 1, 43, 93, 53, 53, 43, 53, -1, -1, 0,
-<a name="l11130"></a>11130 -95, -1, -25, 5, 34, 7, 52, 2, 54, 0, 56, 0, 0, 1, 23, 5, 15, 2, -18, 0, 0, 0, 25, 64, 13,
-<a name="l11131"></a>11131 3, 2, 1, 0, 30, 21, 11, 1, 65, 3, 2, 1, 30, 0, 47, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1,
-<a name="l11132"></a>11132 -1, 0, -125, -1, -24, 3, -32, 7, 52, 2, 38, 0, 88, 0, 0, 0, 39, 0, -114, 0, -36, 0, 0, 1, 7,
-<a name="l11133"></a>11133 0, 67, 0, -51, 1, 114, 0, 58, 64, 20, 3, 16, 33, 33, 30, 30, 65, 2, 1, 112, 25, 1, 0, 25, 31,
-<a name="l11134"></a>11134 17, 17, 65, 3, 34, -72, -1, -64, 64, 13, 15, 17, 52, 34, 64, 10, 12, 52, 34, 1, 2, 2, 25, -71, 2,
-<a name="l11135"></a>11135 34, 0, 41, 0, 43, 47, 43, 43, 53, 1, 43, 93, 53, 53, 43, 53, 0, 3, -2, -2, 5, -40, 1, 2, 7,
-<a name="l11136"></a>11136 51, 0, 3, 0, 7, 0, 11, 0, 108, 64, 75, 2, 10, 8, 3, 7, 5, 8, 8, 4, 64, 35, 37, 52, 4,
-<a name="l11137"></a>11137 64, 21, 22, 52, 4, 11, 15, 6, 1, 6, 0, 2, 64, -120, -119, 52, 2, 64, 79, 115, 52, 2, 64, 62, 69,
-<a name="l11138"></a>11138 52, 2, 64, 46, 51, 52, 2, 64, 36, 41, 52, 47, 2, 1, 2, 64, 26, 30, 52, -16, 2, 1, 2, 64, 18,
-<a name="l11139"></a>11139 20, 52, 127, 2, 1, 2, 64, 9, 13, 52, 2, 0, 47, 43, 93, 43, 93, 43, 113, 43, 43, 43, 43, 43, -35,
-<a name="l11140"></a>11140 -34, 93, 60, -35, 43, 43, 60, 1, 47, -34, -35, 60, 16, -35, 60, 49, 48, 1, 33, 53, 33, 17, 35, 53, 51,
-<a name="l11141"></a>11141 5, 35, 53, 51, 1, 2, -3, -4, 2, 4, -121, -121, -2, -125, -121, -121, 6, -66, 117, -2, -91, -109, -109, -109, 0,
-<a name="l11142"></a>11142 3, -2, -2, 5, -40, 1, 2, 7, 52, 0, 3, 0, 7, 0, 11, 0, -100, -77, 3, 1, 2, 0, -72, -1, -64,
-<a name="l11143"></a>11143 -77, 21, 22, 52, 0, -72, -1, -64, 64, 37, 12, 20, 52, 0, 7, 5, 64, 11, 20, 52, 63, 5, 1, 5, 2,
-<a name="l11144"></a>11144 64, 11, 28, 52, 2, 10, 8, 8, 5, 64, 35, 37, 52, 5, 64, 21, 22, 52, 5, 10, 7, 1, -72, -1, -64,
-<a name="l11145"></a>11145 64, 57, 10, 17, 52, 1, 0, 64, -120, -119, 52, 0, 64, 79, 115, 52, 0, 64, 62, 69, 52, 0, 64, 46, 58,
-<a name="l11146"></a>11146 52, 15, 0, 1, 0, 64, 36, 37, 52, 47, 0, 1, 0, 64, 26, 30, 52, -16, 0, 1, 0, 64, 18, 20, 52,
-<a name="l11147"></a>11147 127, 0, 1, 0, 64, 9, 13, 52, 0, 0, 47, 43, 93, 43, 93, 43, 113, 43, 114, 43, 43, 43, 43, -35, 43,
-<a name="l11148"></a>11148 -42, 60, -35, 43, 43, 60, 1, 47, -51, -58, 43, -34, 93, 43, -35, -58, 43, 43, 17, 57, 57, 49, 48, 19, 7,
-<a name="l11149"></a>11149 35, 55, 19, 35, 53, 51, 5, 35, 53, 51, -3, -25, -126, -121, -25, -121, -121, -2, -125, -121, -121, 7, 52, -78, -78,
-<a name="l11150"></a>11150 -2, -92, -109, -109, -109, 0, 3, -2, -2, 5, -40, 1, 2, 7, 52, 0, 3, 0, 10, 0, 14, 0, -27, -78, 9,
-<a name="l11151"></a>11151 10, 8, -72, -1, -64, -77, 48, 52, 52, 8, -72, -1, -100, -73, 21, 22, 52, 8, 6, 5, 4, 7, -72, -1, -64,
-<a name="l11152"></a>11152 64, 28, 35, 37, 52, 7, 64, 11, 22, 52, 7, 13, 11, 10, 64, 49, 52, 52, 10, 100, 21, 22, 52, 10, 4,
-<a name="l11153"></a>11153 64, 35, 37, 52, 4, -72, -1, -64, 64, 20, 12, 22, 52, 4, 3, 1, 64, 15, 20, 52, 1, 64, 11, 14, 52,
-<a name="l11154"></a>11154 63, 1, 1, 1, 11, -72, -1, -64, 64, 25, 12, 22, 52, 11, 12, 1, 64, 35, 37, 52, 1, 64, 21, 22, 52,
-<a name="l11155"></a>11155 1, 14, 3, 64, 43, 44, 52, 3, 9, 5, -72, -1, -64, 64, 58, 9, 17, 52, 5, 4, 8, 64, -120, -119, 52,
-<a name="l11156"></a>11156 8, 64, 79, 115, 52, 8, 64, 62, 69, 52, 8, 64, 46, 58, 52, 15, 8, 1, 8, 64, 36, 37, 52, 47, 8,
-<a name="l11157"></a>11157 1, 8, 64, 26, 30, 52, -16, 8, 1, 8, 64, 18, 20, 52, 127, 8, 1, 8, 64, 9, 13, 52, 8, 0, 47,
-<a name="l11158"></a>11158 43, 93, 43, 93, 43, 113, 43, 114, 43, 43, 43, 43, 60, -35, 43, 57, -42, 43, 60, -35, 43, 43, 60, 1, 47,
-<a name="l11159"></a>11159 43, -34, 93, 43, 43, -35, -42, 43, 43, -51, 43, 43, 16, -35, -42, 43, 43, 17, 57, 57, -51, 43, 43, 17, 57,
-<a name="l11160"></a>11160 49, 48, 1, 35, 53, 51, 39, 7, 35, 39, 51, 23, 55, 3, 35, 53, 51, 1, 2, -121, -121, 30, -94, -118, -100,
-<a name="l11161"></a>11161 -107, 81, 79, -52, -121, -121, 5, -40, -109, -55, -79, -79, 98, 98, -2, -92, -109, 0, 0, 3, -2, -2, 5, -40, 1,
-<a name="l11162"></a>11162 2, 7, 52, 0, 3, 0, 7, 0, 11, 0, -106, 64, 12, 5, 7, 4, 6, 64, 12, 22, 52, 6, 10, 8, 4,
-<a name="l11163"></a>11163 -72, -1, -64, 64, 30, 11, 28, 52, 4, 3, 1, 64, 11, 20, 52, 63, 1, 1, 1, 8, 9, 1, 64, 35, 37,
-<a name="l11164"></a>11164 52, 1, 64, 21, 22, 52, 1, 11, 3, 5, -72, -1, -64, 64, 57, 10, 17, 52, 5, 7, 64, -120, -119, 52, 7,
-<a name="l11165"></a>11165 64, 79, 115, 52, 7, 64, 62, 69, 52, 7, 64, 46, 58, 52, 15, 7, 1, 7, 64, 36, 37, 52, 47, 7, 1,
-<a name="l11166"></a>11166 7, 64, 26, 30, 52, -16, 7, 1, 7, 64, 18, 20, 52, 127, 7, 1, 7, 64, 9, 13, 52, 7, 0, 47, 43,
-<a name="l11167"></a>11167 93, 43, 93, 43, 113, 43, 114, 43, 43, 43, 43, -35, 43, -42, 60, -35, 43, 43, 60, 1, 47, -34, 93, 43, -51,
-<a name="l11168"></a>11168 -58, 43, 16, -35, -58, 43, 17, 57, 57, 49, 48, 1, 35, 53, 51, 39, 35, 39, 51, 3, 35, 53, 51, 1, 2,
-<a name="l11169"></a>11169 -121, -121, -106, -126, -25, -30, 96, -121, -121, 5, -40, -109, 23, -78, -2, -92, -109, 0, 0, 1, -1, -3, 0, 0, 4,
-<a name="l11170"></a>11170 85, 5, -70, 0, 13, 0, 90, 64, 17, 3, 3, 5, 0, 15, 1, 5, 32, 11, 9, 7, 32, 16, 16, 2, 85,
-<a name="l11171"></a>11171 7, -72, -1, -12, -76, 15, 15, 2, 85, 7, -72, -1, -10, -76, 13, 13, 2, 85, 7, -72, -1, -6, 64, 20, 12,
-<a name="l11172"></a>11172 12, 2, 85, 7, 93, 14, 10, 2, 30, 4, 8, 8, 7, 1, 30, 13, 2, 7, 8, 0, 63, 63, -19, 17, 57,
-<a name="l11173"></a>11173 47, -64, -3, -64, 1, 16, -10, 43, 43, 43, 43, -50, -64, -3, -64, 16, -64, 17, 57, 47, 49, 48, 1, 33, 17,
-<a name="l11174"></a>11174 33, 21, 33, 17, 35, 17, 35, 53, 51, 17, 33, 4, 85, -3, 14, 1, -111, -2, 111, -62, -92, -92, 3, -76, 5,
-<a name="l11175"></a>11175 13, -2, 18, -124, -3, 101, 2, -101, -124, 2, -101, 0, 0, 1, 0, 12, 0, 0, 2, -21, 4, 38, 0, 13, 0,
-<a name="l11176"></a>11176 98, 64, 11, 3, 3, 5, 0, 15, 2, 5, 37, 11, 9, 7, -72, -1, -8, -76, 16, 17, 2, 85, 7, -72, -1,
-<a name="l11177"></a>11177 -6, 64, 24, 14, 14, 2, 85, 7, 4, 12, 12, 2, 85, 7, 10, 11, 11, 2, 85, 7, 78, 14, 10, 2, 43,
-<a name="l11178"></a>11178 4, 8, -72, -1, -64, 64, 13, 16, 19, 2, 85, 8, 8, 7, 1, 43, 13, 6, 7, 10, 0, 63, 63, -19, 17,
-<a name="l11179"></a>11179 57, 47, 43, -64, -3, -64, 1, 16, -10, 43, 43, 43, 43, -50, -64, -3, -64, 16, -64, 17, 57, 47, 49, 48, 1,
-<a name="l11180"></a>11180 33, 17, 51, 21, 35, 17, 35, 17, 35, 53, 51, 17, 33, 2, -21, -2, 81, -25, -25, -76, 124, 124, 2, 99, 3,
-<a name="l11181"></a>11181 -111, -2, -11, -124, -3, -2, 2, 2, -124, 1, -96, 0, 0, 1, 0, 7, -2, 105, 7, 91, 5, -69, 0, 70, 1,
-<a name="l11182"></a>11182 19, 64, 95, 56, 49, 1, 55, 36, 71, 36, 2, 8, 20, 24, 20, 2, 69, 13, 1, 41, 6, 57, 6, 2, 36,
-<a name="l11183"></a>11183 38, 38, 32, 25, 27, 20, 25, 25, 27, 27, 25, 30, 41, 17, 18, 18, 32, 19, 20, 20, 19, 19, 20, 20, 22,
-<a name="l11184"></a>11184 19, 41, 10, 30, 19, 10, 5, 3, 3, 32, 69, 68, 20, 69, 69, 68, 66, 68, 8, 69, 49, 47, 47, 32, 63,
-<a name="l11185"></a>11185 61, 20, 63, 63, 61, 63, 61, 43, 54, 2, 32, 0, 69, 43, 8, 32, 10, 12, 16, 16, 2, 85, 10, -72, -1,
-<a name="l11186"></a>11186 -8, -76, 15, 15, 2, 85, 10, -72, -1, -2, -76, 12, 12, 2, 85, 10, -72, -1, -3, 64, 51, 15, 15, 6, 85,
-<a name="l11187"></a>11187 10, 38, 47, 49, 36, 4, 44, 55, 30, 54, 42, 25, 63, 61, 27, 4, 11, 30, 30, 31, 42, 20, 68, 70, 44,
-<a name="l11188"></a>11188 66, 22, 41, 30, 17, 5, 3, 8, 11, 11, 10, 42, 2, 69, 70, 30, 3, 19, 18, 1, 10, 8, 0, 63, -50,
-<a name="l11189"></a>11189 -64, -64, -48, -3, -64, 63, 18, 57, 47, -64, 17, 57, 57, -3, 57, 57, -64, 17, 57, 57, 16, -44, -19, 17, 23,
-<a name="l11190"></a>11190 57, 16, -44, -19, 18, 23, 57, 1, 47, 43, 43, 43, 43, -3, -64, -44, -35, -19, -60, 17, 57, 57, -121, 16, 43,
-<a name="l11191"></a>11191 125, 16, -60, 1, 17, 18, 57, 57, -121, 24, 16, 43, 125, 16, -60, 1, 24, 16, -44, -58, 16, -64, 17, 57, 57,
-<a name="l11192"></a>11192 -121, 16, 43, 125, 16, -60, 1, 17, 18, 57, 57, -121, 24, 16, 43, 125, 16, -60, 49, 48, 1, 93, 93, 93, 93,
-<a name="l11193"></a>11193 93, 1, 35, 17, 35, 3, 38, 39, 38, 35, 17, 35, 17, 34, 7, 6, 7, 55, 6, 3, 35, 1, 54, 55, 38,
-<a name="l11194"></a>11194 39, 38, 39, 38, 38, 7, 7, 53, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23, 17, 51, 17, 50, 55, 54, 55,
-<a name="l11195"></a>11195 54, 55, 54, 51, 50, 23, 21, 34, 38, 35, 34, 7, 6, 7, 6, 7, 6, 7, 22, 23, 19, 51, 7, 91, -84,
-<a name="l11196"></a>11196 69, -12, 93, 46, 90, 124, -57, 96, 73, 66, 106, 1, 11, -9, -15, 1, 46, -118, -114, 100, 58, 36, 54, 63, 92,
-<a name="l11197"></a>11197 87, 78, 11, 101, -72, 93, 41, 62, 77, 36, 68, -104, -57, -106, 70, 37, 76, 62, 39, 93, -77, 95, 23, 13, 51,
-<a name="l11198"></a>11198 13, 103, 57, 32, 51, 54, 35, 58, 100, -115, -118, -61, 107, -2, 105, 1, -105, 1, -114, -104, 46, 90, -3, 82, 2,
-<a name="l11199"></a>11199 -82, 50, 45, -83, 2, 18, -2, 110, 1, -24, -33, 39, 41, 84, 51, -120, -99, 82, 2, 2, -88, 2, -118, 60, -110,
-<a name="l11200"></a>11200 -76, 40, 77, 2, 2, -126, -3, 126, 79, 42, -78, -111, 59, -116, 2, -88, 2, 71, 38, -128, -121, 51, 83, 43, 39,
-<a name="l11201"></a>11201 -33, -2, -59, 0, 0, 1, -1, -5, -2, -45, 5, 80, 4, 38, 0, 66, 1, 49, 64, 59, 7, 35, 1, 104, 6,
-<a name="l11202"></a>11202 1, 36, 38, 38, 12, 16, 16, 2, 85, 38, 12, 15, 16, 6, 85, 38, 37, 23, 25, 20, 23, 23, 25, 25, 23,
-<a name="l11203"></a>11203 29, 41, 15, 16, 16, 15, 12, 13, 6, 85, 16, 37, 17, 18, 20, 17, 17, 18, 18, 20, 17, 41, 10, 29, 17,
-<a name="l11204"></a>11204 10, 48, 47, 47, -72, -1, -12, 64, 23, 15, 16, 6, 85, 47, 37, 59, 57, 20, 59, 59, 57, 59, 57, 44, 53,
-<a name="l11205"></a>11205 2, 37, 66, 65, 5, 3, 3, -72, -1, -15, 64, 25, 12, 13, 6, 85, 3, 37, 65, 63, 20, 65, 63, 63, 62,
-<a name="l11206"></a>11206 44, 65, 44, 9, 37, 10, 14, 15, 16, 2, 85, 10, -72, -1, -10, 64, 11, 14, 14, 2, 85, 10, 8, 13, 13,
-<a name="l11207"></a>11207 2, 85, 10, -72, -1, -14, 64, 59, 11, 11, 2, 85, 10, 9, 16, 16, 6, 85, 10, 25, 57, 23, 59, 4, 8,
-<a name="l11208"></a>11208 53, 43, 48, 36, 38, 47, 4, 44, 52, 42, 29, 43, 30, 42, 63, 65, 44, 20, 62, 41, 43, 5, 18, 15, 3,
-<a name="l11209"></a>11209 3, 8, 11, 11, 10, 42, 6, 17, 16, 10, 66, 65, 43, 3, 1, 10, 10, 0, 63, -50, -48, -3, -64, 16, -48,
-<a name="l11210"></a>11210 -64, 63, 18, 57, 47, -64, 17, 23, 57, -3, 57, 57, -64, 17, 57, 16, -48, -19, 16, -48, 17, 23, 57, -19, 17,
-<a name="l11211"></a>11211 23, 57, 1, 47, 43, 43, 43, 43, 43, -3, -64, -44, 17, 57, 57, -121, 43, 43, 125, 16, -60, 1, 24, 16, -35,
-<a name="l11212"></a>11212 -19, -58, 17, 57, 57, -121, 16, 43, 43, 125, 16, -60, 1, 24, 16, -44, -58, 16, -64, 17, 57, 57, -121, 16, 43,
-<a name="l11213"></a>11213 43, 125, 16, -60, 1, 17, 18, 57, 57, -121, 24, 16, 43, 43, 43, 125, 16, -60, 49, 48, 1, 93, 93, 1, 35,
-<a name="l11214"></a>11214 17, 35, 3, 38, 39, 38, 35, 17, 35, 17, 34, 7, 6, 7, 3, 35, 19, 54, 55, 38, 39, 38, 39, 38, 38,
-<a name="l11215"></a>11215 35, 34, 7, 53, 51, 50, 23, 22, 23, 22, 23, 22, 23, 22, 51, 17, 51, 17, 50, 55, 54, 18, 55, 54, 51,
-<a name="l11216"></a>11216 51, 21, 39, 38, 7, 6, 7, 6, 7, 6, 7, 22, 23, 23, 51, 5, 80, -108, 34, -63, 48, 34, 53, 73, -72,
-<a name="l11217"></a>11217 74, 52, 32, 49, -63, -58, -59, 111, 118, 90, 45, 17, 56, 20, 48, 56, 13, 40, 25, 106, 41, 57, 46, 19, 41,
-<a name="l11218"></a>11218 57, 17, 49, 99, -72, 100, 48, 18, 113, 37, 58, 118, 66, 49, 76, 30, 11, 39, 37, 27, 38, 78, 117, 111, 109,
-<a name="l11219"></a>11219 73, -2, -45, 1, 45, 1, 73, 81, 32, 49, -2, 21, 1, -21, 48, 31, 83, -2, -73, 1, 73, -71, 31, 41, 76,
-<a name="l11220"></a>11220 28, -113, 51, 30, 1, -107, 12, 17, 75, 32, 98, -120, 23, 66, 1, -53, -2, 53, 65, 24, 1, 14, 39, 61, -107,
-<a name="l11221"></a>11221 1, 2, 41, 14, 99, 95, 36, 50, 36, 31, -71, -75, 0, 1, 0, -95, -2, 105, 4, -94, 5, -69, 0, 39, 0,
-<a name="l11222"></a>11222 -5, 64, 15, 23, 37, 1, -119, 20, 1, 8, 19, 1, -119, 6, 1, 5, 3, 3, -72, -1, -12, 64, 47, 11, 11,
-<a name="l11223"></a>11223 6, 85, 3, 12, 14, 16, 6, 85, 3, 32, 38, 36, 20, 38, 38, 36, 103, 36, 1, 38, 36, 35, 3, 8, 39,
-<a name="l11224"></a>11224 18, 16, 16, 32, 32, 30, 20, 32, 32, 30, 55, 30, 1, 32, 30, 13, 24, 2, 32, 39, -72, -1, -10, 64, 10,
-<a name="l11225"></a>11225 11, 11, 2, 85, 39, 41, 13, 8, 32, 10, -72, -1, -26, -76, 16, 16, 2, 85, 10, -72, -1, -10, -76, 15, 15,
-<a name="l11226"></a>11226 2, 85, 10, -72, -1, -10, -76, 13, 13, 2, 85, 10, -72, -1, -6, -76, 12, 12, 2, 85, 10, -72, -1, -8, -76,
-<a name="l11227"></a>11227 12, 12, 6, 85, 10, -72, -1, -16, -76, 13, 13, 6, 85, 10, -72, -1, -12, 64, 35, 15, 15, 6, 85, 10, 93,
-<a name="l11228"></a>11228 40, 32, 30, 8, 27, 30, 16, 18, 13, 21, 12, 36, 38, 35, 13, 30, 5, 3, 8, 8, 9, 12, 2, 38, 30,
-<a name="l11229"></a>11229 3, 1, 9, 8, 0, 63, -50, -48, -19, 63, 18, 57, 47, 18, 57, -19, 57, 17, 57, 16, -44, 17, 57, 57, -19,
-<a name="l11230"></a>11230 17, 57, 57, 1, 16, -10, 43, 43, 43, 43, 43, 43, 43, -3, -64, 16, -42, 43, -19, -58, 17, 57, 57, 93, -121,
-<a name="l11231"></a>11231 16, 43, 125, 16, -60, 1, 17, 18, 23, 57, 93, -121, 24, 16, 43, 43, 43, 125, 16, -60, 49, 48, 1, 93, 93,
-<a name="l11232"></a>11232 93, 93, 1, 35, 17, 35, 3, 38, 39, 38, 35, 17, 35, 17, 51, 17, 50, 55, 54, 55, 54, 55, 54, 51, 50,
-<a name="l11233"></a>11233 23, 21, 34, 38, 35, 34, 7, 6, 7, 6, 7, 6, 7, 22, 23, 19, 51, 4, -94, -84, 69, -11, 92, 44, 90,
-<a name="l11234"></a>11234 119, -62, -62, -112, 70, 37, 74, 62, 39, 93, -76, 112, 6, 13, 52, 13, 103, 57, 32, 51, 55, 34, 57, 101, -114,
-<a name="l11235"></a>11235 -118, -61, 107, -2, 105, 1, -105, 1, -114, -106, 46, 92, -3, 82, 5, -70, -3, 126, 82, 43, -82, -111, 59, -116, 2,
-<a name="l11236"></a>11236 -88, 2, 71, 39, 127, -117, 49, 83, 41, 39, -33, -2, -59, 0, 1, 0, -122, -2, -45, 3, 118, 4, 38, 0, 38,
-<a name="l11237"></a>11237 0, -1, -78, 5, 3, 3, -72, -1, -18, 64, 24, 13, 13, 6, 85, 3, 37, 37, 35, 20, 37, 37, 35, 70, 35,
-<a name="l11238"></a>11238 1, 34, 35, 37, 3, 38, 8, 18, 16, 16, -72, -1, -18, 64, 19, 15, 16, 6, 85, 16, 37, 31, 29, 20, 31,
-<a name="l11239"></a>11239 31, 29, 31, 29, 13, 25, 2, 37, 38, -72, -1, -16, 64, 13, 10, 10, 2, 85, 32, 38, 1, 38, 40, 13, 8,
-<a name="l11240"></a>11240 37, 10, -72, -1, -8, -76, 16, 16, 2, 85, 10, -72, -1, -6, 64, 17, 14, 14, 2, 85, 10, 6, 12, 12, 2,
-<a name="l11241"></a>11241 85, 10, 6, 11, 11, 2, 85, 10, -72, -1, -16, -76, 10, 10, 2, 85, 10, -72, -1, -10, -76, 16, 16, 6, 85,
-<a name="l11242"></a>11242 10, -72, -1, -18, -76, 15, 15, 6, 85, 10, -72, -1, -4, 64, 46, 13, 13, 6, 85, 10, 10, 12, 12, 6, 85,
-<a name="l11243"></a>11243 0, 10, 32, 10, 2, 10, 78, 39, 31, 29, 8, 25, 43, 16, 18, 13, 24, 12, 35, 37, 34, 13, 43, 5, 3,
-<a name="l11244"></a>11244 8, 8, 9, 12, 6, 37, 43, 3, 1, 9, 10, 0, 63, -50, -48, -19, 63, 18, 57, 47, 18, 57, -19, 57, 17,
-<a name="l11245"></a>11245 57, 16, -48, 17, 57, 57, -19, 17, 57, 57, 1, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, -64,
-<a name="l11246"></a>11246 16, -42, 93, 43, -19, -58, 17, 57, 57, -121, 16, 43, 43, 125, 16, -60, 1, 17, 18, 23, 57, 93, -121, 24, 16,
-<a name="l11247"></a>11247 43, 43, 125, 16, -60, 49, 48, 1, 35, 17, 35, 3, 38, 39, 38, 35, 17, 35, 17, 51, 17, 50, 55, 54, 55,
-<a name="l11248"></a>11248 54, 55, 54, 55, 54, 51, 51, 21, 39, 38, 7, 6, 7, 6, 7, 6, 7, 22, 23, 23, 51, 3, 118, -108, 24,
-<a name="l11249"></a>11249 -64, 47, 35, 53, 73, -76, -76, 100, 48, 16, 58, 40, 20, 44, 58, 43, 95, 36, 50, 75, 31, 10, 39, 37, 28,
-<a name="l11250"></a>11250 38, 77, 117, 111, 109, 62, -2, -45, 1, 45, 1, 73, 81, 32, 49, -2, 21, 4, 38, -2, 53, 65, 21, -117, 96,
-<a name="l11251"></a>11251 32, 73, 19, 14, -107, 1, 1, 40, 13, 100, 94, 37, 50, 36, 31, -71, -75, 0, 0, 1, 0, -95, 0, 0, 4,
-<a name="l11252"></a>11252 -94, 5, -69, 0, 43, 1, 36, -74, 4, 38, 1, 22, 38, 36, 38, -72, -1, -28, 64, 56, 13, 16, 6, 85, 38,
-<a name="l11253"></a>11253 32, 20, 22, 20, 20, 20, 22, 73, 20, 89, 20, 105, 20, 3, -122, 36, 1, 20, 36, 30, 18, 5, 42, 1, 3,
-<a name="l11254"></a>11254 1, 18, 13, 16, 6, 85, 1, 32, 0, 42, 20, 0, 0, 42, 3, 0, 41, 5, 10, 11, 12, 2, 85, 5, 17,
-<a name="l11255"></a>11255 6, -72, -1, -18, 64, 23, 16, 16, 2, 85, 6, 10, 11, 12, 2, 85, 6, 6, 9, 30, 15, 0, 1, 0, 45,
-<a name="l11256"></a>11256 14, 9, 32, 11, -72, -1, -26, -76, 16, 16, 2, 85, 11, -72, -1, -10, -76, 15, 15, 2, 85, 11, -72, -1, -10,
-<a name="l11257"></a>11257 -76, 13, 13, 2, 85, 11, -72, -1, -6, -76, 12, 12, 2, 85, 11, -72, -1, -8, -76, 12, 12, 6, 85, 11, -72,
-<a name="l11258"></a>11258 -1, -16, -76, 13, 13, 6, 85, 11, -72, -1, -12, 64, 49, 15, 15, 6, 85, 32, 11, 1, 11, 93, 44, 38, 36,
-<a name="l11259"></a>11259 9, 33, 30, 22, 14, 27, 13, 42, 1, 41, 9, 20, 19, 16, 3, 17, 17, 13, 14, 30, 9, 7, 4, 3, 3,
-<a name="l11260"></a>11260 9, 6, 9, 6, 9, 10, 13, 2, 0, 1, 10, 8, 0, 63, -48, -64, 63, 18, 57, 57, 47, 47, 18, 23, 57,
-<a name="l11261"></a>11261 16, -19, 17, 57, 47, 23, 57, 17, 57, 17, 57, 16, -44, 17, 57, -19, 17, 57, 57, 1, 16, -10, 93, 43, 43,
-<a name="l11262"></a>11262 43, 43, 43, 43, 43, -3, -64, 16, -42, 93, -58, 17, 57, 47, 43, 43, -64, -51, 43, 50, 17, 57, -121, 16, 43,
-<a name="l11263"></a>11263 43, -121, 125, -60, 1, 16, -64, 17, 57, 57, 93, 93, -121, 24, 16, 43, 43, -121, 125, -60, 1, 93, 49, 48, 33,
-<a name="l11264"></a>11264 35, 3, 38, 39, 17, 35, 17, 38, 35, 17, 35, 17, 51, 17, 50, 55, 17, 51, 17, 54, 55, 54, 55, 54, 55,
-<a name="l11265"></a>11265 54, 51, 50, 23, 21, 34, 38, 35, 34, 7, 6, 7, 6, 7, 6, 7, 22, 23, 4, -94, -15, -11, 58, 47, 120,
-<a name="l11266"></a>11266 51, 69, -62, -62, 71, 49, 120, 38, 47, 55, 26, 54, 78, 72, 89, 112, 6, 13, 52, 13, 103, 57, 32, 51, 55,
-<a name="l11267"></a>11267 34, 57, 101, -114, -118, 1, -114, 95, 60, -2, -58, 1, -89, 24, -3, 82, 5, -70, -3, 126, 15, 1, -109, -2, -38,
-<a name="l11268"></a>11268 65, 110, -126, 42, 88, 44, 40, 2, -88, 2, 71, 39, 127, -117, 49, 83, 41, 39, -33, 0, 1, 0, -122, 0, 0,
-<a name="l11269"></a>11269 3, -112, 4, 38, 0, 40, 1, 52, -74, 105, 21, 1, 22, 35, 33, 35, -72, -1, -18, 64, 74, 13, 17, 6, 85,
-<a name="l11270"></a>11270 35, 37, 20, 22, 20, 20, 20, 22, -65, 33, 1, -21, 33, 1, -97, 33, -33, 33, 2, 20, 33, 29, 19, 5, 39,
-<a name="l11271"></a>11271 1, 3, 1, 8, 15, 16, 6, 85, 1, 37, 0, 39, 20, 0, 0, 39, 3, 0, 38, 5, 16, 6, 6, 11, 14,
-<a name="l11272"></a>11272 2, 85, 6, 6, 9, -81, 29, -65, 29, 2, 29, -49, 0, 1, 0, 42, 14, 9, 37, 11, -72, -1, -8, -76, 16,
-<a name="l11273"></a>11273 16, 2, 85, 11, -72, -1, -6, 64, 17, 14, 14, 2, 85, 11, 6, 12, 12, 2, 85, 11, 6, 11, 11, 2, 85,
-<a name="l11274"></a>11274 11, -72, -1, -10, -76, 16, 16, 6, 85, 11, -72, -1, -18, -76, 15, 15, 6, 85, 11, -72, -1, -4, 64, 59, 13,
-<a name="l11275"></a>11275 13, 6, 85, 11, 10, 12, 12, 6, 85, 0, 11, 32, 11, 48, 11, 3, 11, 78, 41, 35, 33, 9, 29, 43, 22,
-<a name="l11276"></a>11276 14, 28, 13, 39, 0, 38, 9, 20, 19, 16, 3, 17, 17, 13, 14, 43, 9, 7, 4, 3, 3, 9, 6, 9, 6,
-<a name="l11277"></a>11277 9, 10, 13, 6, 0, 1, 10, 10, 0, 63, -48, -64, 63, 18, 57, 57, 47, 47, 18, 23, 57, 16, -19, 17, 57,
-<a name="l11278"></a>11278 47, 23, 57, 17, 57, 17, 57, 16, -48, 17, 57, -19, 17, 57, 57, 1, 16, -10, 93, 43, 43, 43, 43, 43, 43,
-<a name="l11279"></a>11279 43, 43, -3, -64, 16, -43, 114, -58, 114, 17, 57, 47, 43, -64, -51, 50, 17, 57, -121, 16, 43, 43, -121, 125, -60,
-<a name="l11280"></a>11280 1, 16, -64, 17, 57, 57, 93, 93, 114, -121, 24, 16, 43, 43, -121, 125, -60, -79, 6, 2, 67, 84, 88, 64, 9,
-<a name="l11281"></a>11281 45, 6, 34, 17, 61, 6, 50, 17, 4, 0, 93, 89, 49, 48, 1, 93, 33, 35, 3, 38, 39, 21, 35, 17, 38,
-<a name="l11282"></a>11282 35, 17, 35, 17, 51, 17, 50, 55, 17, 51, 21, 54, 55, 54, 55, 54, 55, 54, 51, 51, 21, 39, 38, 7, 6,
-<a name="l11283"></a>11283 7, 6, 7, 6, 7, 22, 23, 3, -112, -58, -64, 14, 17, 99, 35, 43, -76, -76, 45, 33, 99, 21, 24, 40, 20,
-<a name="l11284"></a>11284 44, 58, 43, 95, 36, 50, 75, 31, 10, 39, 41, 34, 41, 54, 106, 112, 1, 73, 24, 25, -42, 1, 55, 16, -2,
-<a name="l11285"></a>11285 21, 4, 38, -2, 53, 10, 1, 68, -47, 43, 57, 96, 32, 73, 19, 14, -107, 1, 1, 40, 13, 100, 104, 40, 48,
-<a name="l11286"></a>11286 25, 28, -68, 0, 1, 0, -92, -2, 105, 5, -88, 5, -70, 0, 15, 0, -82, 64, 20, 11, 4, 32, 14, 2, 32,
-<a name="l11287"></a>11287 0, 12, 12, 12, 2, 85, 0, 10, 12, 13, 6, 85, 0, 14, -72, -1, -18, -76, 15, 15, 2, 85, 14, -72, -1,
-<a name="l11288"></a>11288 -14, 64, 11, 13, 13, 2, 85, 14, 16, 12, 12, 2, 85, 14, -72, -1, -14, 64, 22, 11, 11, 6, 85, 14, 10,
-<a name="l11289"></a>11289 15, 15, 6, 85, 14, 17, 10, 5, 32, 7, 32, 16, 16, 2, 85, 7, -72, -1, -10, -76, 15, 15, 2, 85, 7,
-<a name="l11290"></a>11290 -72, -1, -10, -76, 13, 13, 2, 85, 7, -72, -1, -6, -76, 12, 12, 2, 85, 7, -72, -1, -9, -76, 12, 13, 6,
-<a name="l11291"></a>11291 85, 7, -72, -1, -14, 64, 21, 15, 16, 6, 85, 7, 93, 16, 11, 30, 5, 5, 6, 12, 9, 2, 14, 30, 3,
-<a name="l11292"></a>11292 1, 6, 8, 0, 63, -50, -48, -19, 63, -64, 18, 57, 47, -19, 1, 16, -10, 43, 43, 43, 43, 43, 43, -3, -64,
-<a name="l11293"></a>11293 16, -44, 43, 43, 43, 43, 43, -35, 43, 43, -19, 16, -3, -64, 49, 48, 1, 35, 17, 35, 17, 33, 17, 35, 17,
-<a name="l11294"></a>11294 51, 17, 33, 17, 51, 17, 51, 5, -88, -84, -100, -3, 6, -62, -62, 2, -6, -62, -122, -2, 105, 1, -105, 2, -77,
-<a name="l11295"></a>11295 -3, 77, 5, -70, -3, -90, 2, 90, -6, -13, 0, 1, 0, -120, -2, -45, 4, 87, 4, 38, 0, 15, 0, -5, 64,
-<a name="l11296"></a>11296 44, 11, 3, 37, 14, 2, 37, 17, 64, 11, 11, 2, 85, 0, 20, 13, 13, 2, 85, 0, 12, 11, 11, 2, 85,
-<a name="l11297"></a>11297 0, 12, 15, 15, 6, 85, 0, 14, 12, 13, 6, 85, 0, 10, 11, 11, 6, 85, 0, 14, -72, -1, -6, -76, 17,
-<a name="l11298"></a>11298 17, 2, 85, 14, -72, -1, -20, 64, 11, 16, 16, 2, 85, 14, 20, 14, 14, 2, 85, 14, -72, -1, -20, 64, 17,
-<a name="l11299"></a>11299 13, 13, 2, 85, 14, 10, 12, 12, 2, 85, 14, 34, 11, 11, 2, 85, 14, -72, -1, -33, -76, 16, 16, 6, 85,
-<a name="l11300"></a>11300 14, -72, -1, -10, -76, 12, 13, 6, 85, 14, -72, -1, -8, 64, 10, 11, 11, 6, 85, 14, 17, 10, 5, 37, 7,
-<a name="l11301"></a>11301 -72, -1, -10, -76, 17, 17, 2, 85, 7, -72, -1, -6, -76, 16, 16, 2, 85, 7, -72, -1, -6, 64, 17, 14, 14,
-<a name="l11302"></a>11302 2, 85, 7, 4, 12, 12, 2, 85, 7, 10, 11, 11, 2, 85, 7, -72, -1, -13, 64, 32, 15, 16, 6, 85, 7,
-<a name="l11303"></a>11303 10, 11, 11, 6, 85, 0, 7, 32, 7, 2, 7, 78, 16, 11, 43, 5, 5, 6, 12, 9, 6, 15, 43, 3, 1,
-<a name="l11304"></a>11304 6, 8, 0, 63, -50, -48, -19, 63, -64, 18, 57, 47, -19, 1, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, -3,
-<a name="l11305"></a>11305 -64, 16, -44, 43, 43, 43, 43, 43, 43, 43, 43, 43, -35, 43, 43, 43, 43, 43, 43, -19, 16, -3, -64, 49, 48,
-<a name="l11306"></a>11306 1, 35, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 17, 51, 4, 87, -108, -108, -2, 13, -76, -76, 1,
-<a name="l11307"></a>11307 -13, -76, 116, -2, -45, 1, 45, 1, -41, -2, 41, 4, 38, -2, 70, 1, -70, -4, 110, 0, 0, 1, -1, -3, 0,
-<a name="l11308"></a>11308 0, 4, 109, 5, -70, 0, 12, 0, -70, -71, 0, 9, -1, -22, -76, 13, 16, 2, 85, 9, -72, -1, -12, 64, 58,
-<a name="l11309"></a>11309 13, 16, 6, 85, 9, 12, 16, 16, 6, 85, 9, 12, 9, 6, 12, 32, 0, 1, 20, 0, 0, 1, 9, 6, 6,
-<a name="l11310"></a>11310 18, 13, 13, 2, 85, 6, 8, 12, 13, 6, 85, 6, 32, 5, 4, 20, 5, 4, 111, 5, 1, 5, 4, 0, 1,
-<a name="l11311"></a>11311 32, 4, 4, 16, 16, 2, 85, 4, -72, -1, -28, -76, 15, 15, 2, 85, 4, -72, -1, -12, 64, 11, 13, 13, 2,
-<a name="l11312"></a>11312 85, 4, 6, 12, 12, 2, 85, 4, -72, -1, -4, -76, 12, 13, 6, 85, 4, -72, -1, -6, 64, 24, 16, 16, 6,
-<a name="l11313"></a>11313 85, 4, 0, 12, 6, 1, 9, 6, 38, 4, 54, 4, 2, 4, 4, 3, 5, 6, 2, 3, 8, 0, 63, 63, -64,
-<a name="l11314"></a>11314 18, 57, 47, 93, 18, 57, -64, 16, -48, -64, 1, 47, 43, 43, 43, 43, 43, 43, -3, -51, 16, -35, 93, -121, 43,
-<a name="l11315"></a>11315 43, 43, 125, 16, -60, -121, 24, 16, 43, 8, 125, 16, -60, 1, 43, 0, 43, 43, 49, 48, 1, 1, 17, 35, 17,
-<a name="l11316"></a>11316 1, 51, 1, 22, 23, 54, 55, 1, 4, 109, -2, 36, -76, -2, 32, -56, 1, 34, 48, 28, 25, 57, 1, 18, 5,
-<a name="l11317"></a>11317 -70, -4, -72, -3, -114, 2, 114, 3, 72, -3, -4, 85, 69, 57, 106, 1, -5, 0, 0, 1, 0, 20, -2, 105, 3,
-<a name="l11318"></a>11318 -19, 4, 38, 0, 12, 0, -42, -71, 0, 9, -1, -18, 64, 11, 15, 17, 2, 85, 9, 10, 13, 13, 2, 85, 9,
-<a name="l11319"></a>11319 -72, -1, -20, -76, 9, 11, 2, 85, 9, -72, -1, -12, 64, 61, 14, 16, 6, 85, 9, 11, 11, 11, 6, 85, 9,
-<a name="l11320"></a>11320 12, 9, 6, 12, 15, 15, 15, 6, 85, 12, 37, 0, 1, 20, 0, 0, 1, 9, 6, 6, 4, 11, 11, 6, 85,
-<a name="l11321"></a>11321 6, 15, 13, 13, 6, 85, 6, 37, 5, 4, 20, 5, 4, 5, 4, 0, 1, 37, 4, 18, 17, 17, 2, 85, 4,
-<a name="l11322"></a>11322 -72, -1, -16, -76, 16, 16, 2, 85, 4, -72, -1, -8, 64, 17, 15, 15, 2, 85, 4, 10, 13, 13, 2, 85, 4,
-<a name="l11323"></a>11323 10, 9, 9, 2, 85, 4, -72, -1, -4, -76, 13, 13, 6, 85, 4, -72, -1, -2, 64, 27, 16, 16, 6, 85, 4,
-<a name="l11324"></a>11324 9, 4, 12, 5, 0, 6, 6, 1, 36, 4, 52, 4, 68, 4, 116, 4, -124, 4, 5, 4, 10, 2, 0, 47, 63,
-<a name="l11325"></a>11325 93, -64, 63, -64, -64, -64, 18, 57, 1, 47, 43, 43, 43, 43, 43, 43, 43, -3, -51, 16, -35, -121, 43, 43, 43,
-<a name="l11326"></a>11326 125, 16, -60, -121, 24, 16, 43, 43, 8, 125, 16, -60, 1, 43, 0, 43, 43, 43, 43, 49, 48, 1, 1, 17, 35,
-<a name="l11327"></a>11327 17, 1, 51, 19, 22, 23, 54, 55, 19, 3, -19, -2, 110, -76, -2, 109, -62, -35, 46, 31, 29, 49, -35, 4, 38,
-<a name="l11328"></a>11328 -5, -38, -2, 105, 1, -105, 4, 38, -3, -103, 127, 119, 109, -119, 2, 103, 0, 0, 1, -1, -3, 0, 0, 4, 109,
-<a name="l11329"></a>11329 5, -70, 0, 18, 0, -47, -71, 0, 15, -1, -22, -76, 13, 17, 2, 85, 15, -72, -1, -18, 64, 72, 15, 16, 6,
-<a name="l11330"></a>11330 85, 1, 0, 4, 15, 18, 15, 12, 18, 8, 16, 17, 2, 85, 18, 8, 13, 16, 6, 85, 18, 32, 0, 4, 20,
-<a name="l11331"></a>11331 0, 0, 4, 10, 11, 7, 15, 12, 12, 18, 13, 13, 2, 85, 12, 4, 12, 13, 6, 85, 12, 32, 11, 7, 20,
-<a name="l11332"></a>11332 11, 7, 9, 11, 7, 1, 4, 18, 2, 0, 4, 32, 7, 4, 16, 16, 2, 85, 7, -72, -1, -28, -76, 15, 15,
-<a name="l11333"></a>11333 2, 85, 7, -72, -1, -12, 64, 11, 13, 13, 2, 85, 7, 6, 12, 12, 2, 85, 7, -72, -1, -4, -76, 16, 16,
-<a name="l11334"></a>11334 6, 85, 7, -72, -1, -4, 64, 21, 12, 13, 6, 85, 7, 15, 12, 2, 9, 30, 4, 7, 7, 6, 18, 11, 0,
-<a name="l11335"></a>11335 12, 2, 6, 8, 0, 63, 63, -64, -64, -64, 18, 57, 47, -64, -3, -64, 18, 57, 1, 47, 43, 43, 43, 43, 43,
-<a name="l11336"></a>11336 43, -3, -36, -58, 51, 18, 57, 16, -36, -58, -121, 43, 43, 43, 125, 16, -60, 1, 17, 18, 57, -121, 24, 16, 43,
-<a name="l11337"></a>11337 43, 43, 8, 125, 16, -60, 1, 17, 18, 57, 0, 43, 43, 49, 48, 1, 1, 33, 21, 33, 17, 35, 17, 33, 53,
-<a name="l11338"></a>11338 33, 1, 51, 1, 22, 23, 54, 55, 1, 4, 109, -2, 107, 1, 85, -2, 100, -76, -2, 97, 1, 85, -2, 106, -56,
-<a name="l11339"></a>11339 1, 34, 48, 28, 25, 57, 1, 18, 5, -70, -3, 57, -108, -3, -95, 2, 95, -108, 2, -57, -3, -4, 85, 69, 57,
-<a name="l11340"></a>11340 106, 1, -5, 0, 1, 0, 20, -2, 105, 3, -19, 4, 38, 0, 18, 0, -22, 64, 19, 38, 13, 70, 13, 118, 13,
-<a name="l11341"></a>11341 -122, 13, 4, 38, 17, 70, 17, 118, 17, -122, 17, 4, 15, -72, -1, -18, 64, 11, 15, 17, 2, 85, 15, 10, 13,
-<a name="l11342"></a>11342 13, 2, 85, 15, -72, -1, -20, -76, 9, 11, 2, 85, 15, -72, -1, -30, 64, 71, 14, 16, 6, 85, 15, 11, 13,
-<a name="l11343"></a>11343 13, 6, 85, 15, 11, 11, 11, 6, 85, 15, 18, 15, 12, 18, 15, 15, 15, 6, 85, 18, 37, 0, 1, 20, 0,
-<a name="l11344"></a>11344 0, 1, 15, 12, 12, 4, 11, 11, 6, 85, 12, 10, 13, 13, 6, 85, 12, 37, 11, 10, 20, 11, 10, 9, 11,
-<a name="l11345"></a>11345 10, 2, 0, 5, 1, 37, 6, 10, 18, 17, 17, 2, 85, 10, -72, -1, -16, -76, 16, 16, 2, 85, 10, -72, -1,
-<a name="l11346"></a>11346 -8, 64, 17, 15, 15, 2, 85, 10, 10, 13, 13, 2, 85, 10, 10, 9, 9, 2, 85, 10, -72, -1, -4, 64, 19,
-<a name="l11347"></a>11347 13, 13, 6, 85, 10, 15, 10, 18, 11, 0, 12, 6, 3, 8, 43, 1, 10, 10, 6, 0, 47, 63, -64, -3, -64,
-<a name="l11348"></a>11348 63, -64, -64, -64, 18, 57, 1, 47, 43, 43, 43, 43, 43, 43, -64, -3, -64, -35, -58, 16, -35, -58, -121, 43, 43,
-<a name="l11349"></a>11349 43, 125, 16, -60, -121, 24, 16, 43, 43, 8, 125, 16, -60, 1, 43, 43, 0, 43, 43, 43, 43, 49, 48, 0, 93,
-<a name="l11350"></a>11350 93, 1, 1, 33, 21, 33, 17, 35, 17, 33, 53, 33, 1, 51, 19, 22, 23, 54, 55, 19, 3, -19, -2, 110, 1,
-<a name="l11351"></a>11351 66, -2, -66, -76, -2, -67, 1, 67, -2, 109, -62, -35, 46, 31, 29, 49, -35, 4, 38, -5, -38, -124, -2, -19, 1,
-<a name="l11352"></a>11352 19, -124, 4, 38, -3, -103, 127, 119, 109, -119, 2, 103, 0, 0, 1, 0, 9, -2, 105, 5, 73, 5, -70, 0, 23,
-<a name="l11353"></a>11353 1, 8, -71, 0, 16, -1, -12, 64, 27, 11, 11, 2, 85, 105, 3, 1, 68, 21, 116, 21, -124, 21, 3, 73, 11,
-<a name="l11354"></a>11354 1, 22, 13, 1, 6, 14, 12, 17, 2, 85, 16, -72, -1, -14, -76, 12, 17, 2, 85, 21, -72, -1, -8, 64, 10,
-<a name="l11355"></a>11355 12, 17, 2, 85, 11, 8, 12, 17, 2, 85, -79, 6, 2, 67, 84, 88, -73, 2, 32, 23, 23, 10, 25, 24, 16,
-<a name="l11356"></a>11356 -72, -1, -24, 64, 21, 10, 17, 52, 6, 24, 10, 17, 52, 6, 11, 21, 16, 4, 10, 12, 3, 10, 8, 19, 12,
-<a name="l11357"></a>11357 2, 0, 63, 60, 63, 60, 17, 18, 23, 57, 43, 43, 1, 17, 18, 57, 57, 47, -19, 27, 64, 48, 6, 9, 20,
-<a name="l11358"></a>11358 3, 12, 21, 9, 20, 22, 13, 16, 10, 19, 22, 13, 11, 10, 19, 3, 12, 13, 3, 12, 3, 32, 22, 13, 20,
-<a name="l11359"></a>11359 22, 22, 13, 2, 32, 0, 22, 20, 19, 9, 20, 9, 32, 10, 19, 20, 10, 10, 19, 20, -72, -1, -18, 64, 33,
-<a name="l11360"></a>11360 9, 12, 2, 85, 20, 16, 10, 12, 4, 9, 12, 2, 85, 12, 16, 16, 21, 11, 6, 4, 9, 20, 19, 12, 13,
-<a name="l11361"></a>11361 2, 22, 30, 3, 10, 9, 8, 1, 0, 47, 63, -64, -48, -19, 63, -64, -64, -64, 18, 23, 57, 1, 47, -35, 43,
-<a name="l11362"></a>11362 -58, 16, -51, 43, -121, 16, 43, -121, 125, -60, 1, 24, 16, -42, -35, -19, -121, 16, 43, -121, 125, -60, 15, 15, 15,
-<a name="l11363"></a>11363 15, 89, 43, 43, 0, 43, 43, 49, 48, 1, 93, 93, 93, 93, 0, 43, 1, 35, 17, 35, 1, 38, 39, 6, 7,
-<a name="l11364"></a>11364 1, 35, 1, 1, 51, 1, 22, 23, 54, 55, 1, 51, 1, 1, 51, 5, 73, -84, 68, -2, -113, 25, 39, 52, 18,
-<a name="l11365"></a>11365 -2, -112, -23, 2, 55, -2, 12, -25, 1, 10, 84, 34, 45, 71, 1, 39, -45, -3, -3, 1, -82, 125, -2, 105, 1,
-<a name="l11366"></a>11366 -105, 2, 11, 36, 62, 86, 24, -2, 1, 2, -4, 2, -66, -2, -120, 119, 61, 73, 94, 1, -123, -3, 77, -3, -90,
-<a name="l11367"></a>11367 0, 1, 0, 15, -2, -45, 3, -15, 4, 38, 0, 19, 1, 28, 64, 21, 38, 17, 70, 17, -122, 17, 3, 38, 4,
-<a name="l11368"></a>11368 70, 4, 2, 88, 7, 1, 38, 17, 70, 17, 2, 12, -72, -1, -20, 64, 11, 11, 11, 6, 85, 4, 40, 13, 17,
-<a name="l11369"></a>11369 6, 85, 12, -72, -1, -40, 64, 40, 13, 17, 6, 85, 12, 20, 11, 11, 6, 85, 12, 10, 13, 13, 6, 85, 4,
-<a name="l11370"></a>11370 5, 16, 3, 8, 17, 5, 16, 18, 9, 12, 6, 15, 18, 9, 7, 6, 15, 3, 8, 3, 9, 18, 9, -72, -1,
-<a name="l11371"></a>11371 -8, 64, 15, 13, 17, 2, 85, 9, 37, 8, 3, 20, 8, 8, 3, 2, 37, 0, -72, -1, -3, 64, 29, 12, 12,
-<a name="l11372"></a>11372 6, 85, 0, 10, 13, 13, 6, 85, 0, 12, 15, 16, 6, 85, 0, -107, 18, 1, 48, 18, 1, 18, 16, 15, 5,
-<a name="l11373"></a>11373 16, 5, -72, -1, -8, 64, 30, 13, 17, 2, 85, 5, 37, 6, 15, 20, 6, 6, 15, 95, 16, 111, 16, -97, 16,
-<a name="l11374"></a>11374 3, 16, 12, 6, -96, 8, 1, 8, 17, 7, 4, 12, -72, -1, -10, -76, 13, 13, 2, 85, 12, -72, -1, -10, 64,
-<a name="l11375"></a>11375 26, 10, 10, 2, 85, 32, 12, 1, 12, 12, 17, 7, 4, 4, 5, 16, 15, 8, 9, 6, 18, 43, 3, 6, 5,
-<a name="l11376"></a>11376 10, 1, 0, 47, 63, -64, -48, -19, 63, -64, -64, -64, 18, 23, 57, 1, 47, 93, 43, 43, 51, 51, 51, -35, 93,
-<a name="l11377"></a>11377 -58, 16, -51, 93, -121, 16, 43, 43, -121, 125, -60, 1, 24, 16, -42, 93, 93, -35, 43, 43, 43, -19, -121, 16, 43,
-<a name="l11378"></a>11378 43, -121, 125, -60, 15, 15, 15, 15, 1, 43, 43, 0, 43, 43, 43, 49, 48, 0, 93, 93, 93, 1, 93, 1, 35,
-<a name="l11379"></a>11379 17, 35, 1, 1, 35, 1, 1, 51, 23, 22, 23, 54, 55, 55, 51, 1, 1, 51, 3, -15, -108, 73, -2, -20, -2,
-<a name="l11380"></a>11380 -23, -38, 1, -124, -2, -103, -31, -93, 42, 32, 35, 46, -77, -41, -2, -111, 1, 36, 103, -2, -45, 1, 45, 1, -93,
-<a name="l11381"></a>11381 -2, 93, 2, 40, 1, -2, -7, 64, 55, 52, 65, -5, -2, 12, -2, 98, 0, 1, 0, 87, 0, 0, 4, -76, 5,
-<a name="l11382"></a>11382 -70, 0, 29, 1, 56, 64, 15, 100, 20, 1, 69, 20, 85, 20, 2, 54, 20, 1, 24, 4, 23, 6, -72, -1, -14,
-<a name="l11383"></a>11383 64, 11, 16, 16, 2, 85, 6, 4, 13, 13, 2, 85, 6, -72, -1, -14, 64, 11, 12, 12, 2, 85, 6, 14, 16,
-<a name="l11384"></a>11384 16, 6, 85, 6, -72, -1, -8, -76, 15, 15, 6, 85, 6, -72, -1, -14, 64, 11, 12, 12, 6, 85, 6, 6, 17,
-<a name="l11385"></a>11385 27, 29, 32, 1, -72, -1, -8, -76, 16, 16, 2, 85, 1, -72, -1, -28, 64, 11, 15, 15, 2, 85, 1, 30, 13,
-<a name="l11386"></a>11386 13, 2, 85, 1, -72, -1, -2, -76, 12, 12, 2, 85, 1, -72, -1, -24, 64, 23, 11, 11, 2, 85, 1, 10, 16,
-<a name="l11387"></a>11387 16, 6, 85, 1, 18, 15, 15, 6, 85, 1, 8, 13, 13, 6, 85, 1, -72, -1, -2, 64, 45, 12, 12, 6, 85,
-<a name="l11388"></a>11388 1, 14, 11, 11, 6, 85, 1, 31, 17, 32, 15, 10, 16, 16, 2, 85, 15, 20, 15, 15, 2, 85, 15, 22, 13,
-<a name="l11389"></a>11389 13, 2, 85, 15, 26, 12, 12, 2, 85, 15, 18, 11, 11, 2, 85, 15, -72, -1, -20, 64, 17, 16, 16, 6, 85,
-<a name="l11390"></a>11390 15, 14, 13, 13, 6, 85, 15, 24, 12, 12, 6, 85, 15, -72, -1, -4, 64, 33, 11, 11, 6, 85, 0, 15, 1,
-<a name="l11391"></a>11391 15, 93, 30, 24, 24, 28, 27, 25, 22, 21, 30, 9, 7, 4, 2, 9, 6, 9, 6, 9, 1, 17, 28, 2, 1,
-<a name="l11392"></a>11392 8, 0, 63, 63, -64, 18, 57, 57, 47, 47, 17, 51, 51, 51, 16, -19, 50, 50, 50, 17, 57, 47, 1, 16, -10,
-<a name="l11393"></a>11393 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, -44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -19, -64,
-<a name="l11394"></a>11394 17, 57, 47, 43, 43, 43, 43, 43, 43, -64, -35, -64, 49, 48, 93, 93, 93, 33, 35, 17, 6, 7, 17, 35, 17,
-<a name="l11395"></a>11395 6, 35, 34, 39, 38, 39, 38, 53, 17, 51, 17, 20, 22, 55, 51, 17, 51, 17, 54, 55, 17, 51, 4, -76, -62,
-<a name="l11396"></a>11396 -94, -118, 120, 22, 15, -118, 116, -128, 44, 40, -62, -79, 121, 11, 120, -111, -101, -62, 2, 79, 60, 23, -2, -23, 1,
-<a name="l11397"></a>11397 10, 1, 62, 70, 121, 111, -79, 1, -81, -2, 99, -17, -103, 1, 1, -62, -2, 71, 20, 62, 2, -55, 0, 1, 0,
-<a name="l11398"></a>11398 69, 0, 0, 3, -93, 4, 38, 0, 30, 1, 28, 64, 30, 116, 21, -124, 21, 2, 101, 21, 1, 25, 4, 14, 12,
-<a name="l11399"></a>11399 12, 2, 85, 4, 14, 11, 12, 6, 85, 4, 24, 6, 10, 15, 16, 2, 85, 6, -72, -1, -10, -76, 12, 12, 2,
-<a name="l11400"></a>11400 85, 6, -72, -1, -8, 64, 17, 11, 12, 6, 85, 6, 14, 15, 15, 6, 85, 6, 6, 17, 28, 30, 37, 1, -72,
-<a name="l11401"></a>11401 -1, -52, 64, 17, 16, 16, 2, 85, 1, 32, 15, 15, 2, 85, 1, 8, 13, 13, 2, 85, 1, -72, -1, -10, -76,
-<a name="l11402"></a>11402 10, 11, 2, 85, 1, -72, -1, -8, -76, 11, 12, 6, 85, 1, -72, -1, -4, 64, 27, 13, 13, 6, 85, 1, 14,
-<a name="l11403"></a>11403 15, 15, 6, 85, 1, 24, 16, 16, 6, 85, 31, 1, 1, 0, 1, 1, 1, 32, 17, 37, 14, -72, -1, -32, 64,
-<a name="l11404"></a>11404 17, 16, 16, 2, 85, 14, 28, 15, 15, 2, 85, 14, 22, 13, 13, 2, 85, 14, -72, -1, -4, 64, 58, 12, 12,
-<a name="l11405"></a>11405 2, 85, 14, 22, 11, 12, 6, 85, 14, 24, 13, 13, 6, 85, 14, 24, 15, 15, 6, 85, 14, 28, 16, 16, 6,
-<a name="l11406"></a>11406 85, 79, 14, 95, 14, 2, 14, 31, 25, 25, 23, 29, 16, 28, 26, 23, 43, 8, 7, 4, 2, 8, 6, 8, 6,
-<a name="l11407"></a>11407 8, 1, 16, 6, 1, 10, 0, 63, 63, 18, 57, 57, 47, 47, 17, 51, 51, 51, 16, -19, 50, 50, 16, -64, 17,
-<a name="l11408"></a>11408 57, 47, 1, 16, -42, 93, 43, 43, 43, 43, 43, 43, 43, 43, -19, 16, -44, 93, 93, 43, 43, 43, 43, 43, 43,
-<a name="l11409"></a>11409 43, 43, -19, -64, 17, 57, 47, 43, 43, 43, 43, -64, -35, 43, 43, -64, 49, 48, 93, 93, 33, 35, 17, 6, 7,
-<a name="l11410"></a>11410 21, 35, 53, 35, 34, 39, 38, 39, 38, 53, 17, 51, 21, 20, 23, 22, 23, 22, 23, 17, 51, 17, 54, 55, 17,
-<a name="l11411"></a>11411 51, 3, -93, -76, 110, 100, 99, 21, 89, 94, 100, 36, 33, -76, 9, 18, 63, 44, 59, 99, 87, 123, -76, 1, -84,
-<a name="l11412"></a>11412 34, 12, -42, -48, 55, 59, 98, 89, 107, 1, 22, -55, 116, 43, 84, 47, 33, 8, 1, 21, -2, -21, 10, 41, 1,
-<a name="l11413"></a>11413 -31, 0, 0, 1, 0, -95, 0, 0, 4, -2, 5, -70, 0, 21, 0, -57, 64, 24, 103, 19, 1, 91, 4, 1, 74,
-<a name="l11414"></a>11414 4, 1, 21, 32, 1, 20, 16, 16, 2, 85, 1, 2, 13, 13, 2, 85, 1, -72, -1, -32, -76, 12, 12, 2, 85,
-<a name="l11415"></a>11415 1, -72, -1, -48, -76, 11, 11, 6, 85, 1, -72, -1, -30, -76, 12, 12, 6, 85, 1, -72, -1, -16, -76, 13, 13,
-<a name="l11416"></a>11416 6, 85, 1, -72, -1, -16, -76, 15, 15, 6, 85, 1, -72, -1, -24, 64, 16, 16, 16, 6, 85, 1, 23, 9, 13,
-<a name="l11417"></a>11417 32, 11, 32, 16, 16, 2, 85, 11, -72, -1, -10, -76, 15, 15, 2, 85, 11, -72, -1, -10, -76, 13, 13, 2, 85,
-<a name="l11418"></a>11418 11, -72, -1, -6, -76, 12, 12, 2, 85, 11, -72, -1, -8, -76, 12, 12, 6, 85, 11, -72, -1, -19, -76, 13, 13,
-<a name="l11419"></a>11419 6, 85, 11, -72, -1, -29, 64, 19, 15, 15, 6, 85, 11, 93, 22, 8, 6, 30, 13, 15, 15, 9, 12, 2, 1,
-<a name="l11420"></a>11420 9, 8, 0, 63, -64, 63, 18, 57, 47, 51, -19, 50, 1, 16, -10, 43, 43, 43, 43, 43, 43, 43, -3, -64, 16,
-<a name="l11421"></a>11421 -44, 43, 43, 43, 43, 43, 43, 43, 43, -19, 49, 48, 93, 93, 93, 33, 35, 17, 52, 39, 38, 35, 34, 7, 17,
-<a name="l11422"></a>11422 35, 17, 51, 17, 36, 51, 50, 23, 22, 23, 22, 21, 4, -2, -62, 56, 71, -85, -51, -30, -62, -62, 1, 5, -60,
-<a name="l11423"></a>11423 -117, 115, -127, 44, 39, 1, -99, -72, 92, 115, 91, -3, 55, 5, -70, -3, -79, 97, 62, 69, 122, 109, -77, 0, -1,
-<a name="l11424"></a>11424 -1, 0, -121, 0, 0, 3, -24, 5, -70, 2, 22, 0, 75, 0, 0, 0, 2, 0, 99, -1, -25, 5, -80, 5, -45,
-<a name="l11425"></a>11425 0, 26, 0, 33, 0, -75, 64, 53, -118, 32, 1, 109, 32, 1, 92, 32, 1, 26, 32, 74, 32, 2, 98, 30, 1,
-<a name="l11426"></a>11426 85, 30, 1, 68, 30, 1, 21, 30, 1, -122, 29, 1, 119, 24, 1, 57, 19, 73, 19, 2, -124, 15, 1, 118, 15,
-<a name="l11427"></a>11427 1, 106, 12, 1, 25, 12, 1, 10, 27, 38, 0, -72, -1, -22, -76, 15, 15, 2, 85, 0, -72, -1, -20, -76, 11,
-<a name="l11428"></a>11428 11, 2, 85, 0, -72, -1, -8, -76, 12, 12, 6, 85, 0, -72, -1, -21, -76, 11, 11, 6, 85, 0, -72, -1, -13,
-<a name="l11429"></a>11429 64, 38, 13, 13, 6, 85, 0, 92, 35, 16, 38, 17, 28, 38, 32, 8, 1, 8, 99, 34, 28, 30, 17, 16, 47,
-<a name="l11430"></a>11430 16, 1, 9, 16, 9, 16, 31, 14, 30, 21, 3, 31, 30, 4, 9, 0, 63, -19, 63, -19, 17, 57, 57, 47, 47,
-<a name="l11431"></a>11431 93, 17, 51, -19, 1, 16, -10, 93, -19, -44, -19, 16, -10, 43, 43, 43, 43, 43, -3, -59, 49, 48, 93, 93, 93,
-<a name="l11432"></a>11432 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 18, 7, 6, 33, 32, 39, 38, 17, 53, 33, 38, 39,
-<a name="l11433"></a>11433 38, 35, 32, 3, 39, 54, 55, 54, 51, 50, 23, 22, 23, 22, 3, 33, 22, 18, 51, 50, 18, 5, -87, 7, -91,
-<a name="l11434"></a>11434 -86, -2, -91, -2, -90, -86, -97, 4, 117, 12, 117, 124, -40, -2, -61, 83, -66, 56, -96, -103, -36, -56, -97, -93, 82,
-<a name="l11435"></a>11435 71, -59, -4, 76, 11, -4, -45, -45, -4, 2, -19, -2, -77, -39, -32, -32, -46, 1, 84, 94, -36, 126, -124, -2, -51,
-<a name="l11436"></a>11436 50, -48, 112, 107, 98, 99, -76, -102, -2, -34, -10, -2, -30, 1, 30, 0, 2, 0, 85, -1, -24, 4, 40, 4, 62,
-<a name="l11437"></a>11437 0, 23, 0, 32, 0, -50, 64, 45, 56, 31, 72, 31, 2, 85, 21, 101, 21, 2, -118, 19, 1, 121, 19, 1, 92,
-<a name="l11438"></a>11438 19, 108, 19, 2, 74, 13, 1, 40, 13, 56, 13, 2, 108, 6, 1, 91, 6, 1, 99, 3, 1, 85, 3, 1, 24,
-<a name="l11439"></a>11439 11, 36, 0, -72, -1, -26, -76, 15, 15, 2, 85, 0, -72, -1, -22, -76, 13, 13, 2, 85, 0, -72, -1, -22, -76,
-<a name="l11440"></a>11440 11, 11, 2, 85, 0, -72, -1, -18, -76, 15, 15, 6, 85, 0, -72, -1, -14, 64, 71, 11, 13, 6, 85, 0, 7,
-<a name="l11441"></a>11441 34, 17, 36, 18, 25, 36, 10, 12, 14, 15, 2, 85, 10, 20, 12, 13, 2, 85, 10, 28, 11, 13, 6, 85, 31,
-<a name="l11442"></a>11442 10, 63, 10, 79, 10, 3, 10, 52, 33, 25, 43, -97, 11, -81, 11, 2, 18, 17, 15, 17, 31, 17, -97, 17, -81,
-<a name="l11443"></a>11443 17, 4, 11, 17, 11, 17, 29, 15, 28, 20, 7, 29, 28, 4, 11, 0, 63, -19, 63, -19, 17, 57, 57, 47, 47,
-<a name="l11444"></a>11444 93, 17, 51, 93, -19, 1, 16, -10, 93, 43, 43, 43, -19, -42, -19, 16, -2, 43, 43, 43, 43, 43, -19, 50, 49,
-<a name="l11445"></a>11445 48, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 33, 38,
-<a name="l11446"></a>11446 39, 38, 35, 34, 7, 39, 18, 33, 50, 23, 22, 3, 33, 22, 23, 22, 51, 50, 55, 54, 4, 40, 123, -123, -16,
-<a name="l11447"></a>11447 -22, -126, 119, 1, 3, 24, 9, 76, 86, -106, -54, 78, -70, 93, 1, 118, -11, -122, 127, -60, -3, -81, 12, 56, 86,
-<a name="l11448"></a>11448 -119, -125, 83, 79, 2, 28, -10, -103, -91, -93, -106, -16, 16, 32, -100, 96, 109, -38, 23, 1, 87, -104, -111, -2, -104,
-<a name="l11449"></a>11449 -122, 67, 104, 88, 84, 0, 0, 3, 0, 96, -1, -25, 5, -38, 5, -44, 0, 17, 0, 26, 0, 35, 0, -57, 64,
-<a name="l11450"></a>11450 56, 89, 34, 1, 26, 34, 1, 22, 30, 86, 30, 2, -124, 24, 1, 117, 24, 1, 84, 24, 1, 22, 24, 70, 24,
-<a name="l11451"></a>11451 2, 86, 23, 1, -118, 20, 1, 121, 20, 1, 92, 20, 1, 73, 20, 1, 26, 20, 1, 89, 16, 1, 120, 12, 1,
-<a name="l11452"></a>11452 89, 2, 1, 27, 18, 38, 0, -72, -1, -24, 64, 11, 16, 16, 2, 85, 0, 8, 15, 15, 2, 85, 0, -72, -1,
-<a name="l11453"></a>11453 -18, -76, 13, 13, 2, 85, 0, -72, -1, -16, -76, 12, 12, 2, 85, 0, -72, -1, -12, -76, 13, 13, 6, 85, 0,
-<a name="l11454"></a>11454 -72, -1, -6, 64, 47, 12, 12, 6, 85, 0, 92, 37, 26, 28, 38, 10, 6, 12, 12, 6, 85, 32, 10, 1, 10,
-<a name="l11455"></a>11455 99, 36, 18, 30, 28, 64, 16, 17, 2, 85, 28, 64, 13, 14, 2, 85, 28, 28, 32, 22, 30, 14, 3, 32, 30,
-<a name="l11456"></a>11456 4, 9, 0, 63, -19, 63, -19, 17, 57, 47, 43, 43, -19, 1, 16, -10, 93, 43, -3, -59, 16, -10, 43, 43, 43,
-<a name="l11457"></a>11457 43, 43, 43, -3, -64, 49, 48, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 16,
-<a name="l11458"></a>11458 7, 6, 33, 34, 39, 38, 39, 38, 53, 16, 55, 54, 33, 32, 23, 22, 7, 38, 39, 38, 35, 34, 7, 6, 7,
-<a name="l11459"></a>11459 5, 33, 22, 23, 22, 51, 50, 55, 54, 5, -38, -71, -62, -2, -66, -49, -89, -82, 79, 74, -78, -65, 1, 77, 1,
-<a name="l11460"></a>11460 69, -64, -73, -52, 19, 117, -116, -37, -41, -112, 118, 21, 3, -31, -4, 28, 15, 119, -120, -28, -37, -122, 126, 2, -37,
-<a name="l11461"></a>11461 -2, -71, -47, -36, 103, 106, -70, -81, -87, 1, 84, -44, -30, -35, -46, -14, -37, -125, -100, -109, 120, -17, -84, -49, -117,
-<a name="l11462"></a>11462 -96, -109, -120, 0, 3, 0, 68, -1, -24, 4, 39, 4, 62, 0, 15, 0, 24, 0, 33, 1, 18, 64, 68, 92, 32,
-<a name="l11463"></a>11463 108, 32, 2, 83, 28, 99, 28, 2, 100, 22, 1, 85, 22, 1, 55, 22, 71, 22, 2, 91, 18, 107, 18, 2, 72,
-<a name="l11464"></a>11464 18, 1, 57, 18, 1, 105, 14, 1, 88, 14, 1, 102, 10, 1, 102, 6, 1, 85, 6, 1, 90, 2, 106, 2, 2,
-<a name="l11465"></a>11465 16, 25, 36, 35, 64, 13, 13, 2, 85, 35, 64, 11, 11, 2, 85, 0, -72, -1, -14, 64, 17, 15, 15, 2, 85,
-<a name="l11466"></a>11466 0, 18, 13, 13, 2, 85, 0, 16, 11, 11, 2, 85, 0, -72, -1, -16, -76, 11, 11, 6, 85, 0, -72, -1, -25,
-<a name="l11467"></a>11467 -76, 13, 13, 6, 85, 0, -72, -1, -8, -76, 15, 15, 6, 85, 0, -72, -1, -22, 64, 47, 12, 12, 6, 85, 0,
-<a name="l11468"></a>11468 55, 35, 24, 26, 36, 8, 8, 14, 15, 2, 85, 8, 32, 13, 13, 2, 85, 8, 24, 12, 12, 2, 85, 8, 28,
-<a name="l11469"></a>11469 11, 11, 2, 85, 8, 18, 11, 11, 6, 85, 8, 28, 13, 13, 6, 85, 8, -72, -1, -4, 64, 44, 15, 15, 6,
-<a name="l11470"></a>11470 85, 8, 4, 16, 16, 6, 85, 8, 32, 12, 12, 6, 85, 31, 8, 63, 8, 79, 8, 3, 8, 52, 34, 16, 43,
-<a name="l11471"></a>11471 -112, 26, -96, 26, 2, 26, 26, 30, 20, 28, 12, 7, 30, 28, 4, 11, 0, 63, -19, 63, -19, 17, 57, 47, 93,
-<a name="l11472"></a>11472 -19, 1, 16, -10, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, -3, -59, 16, -10, 43, 43, 43, 43, 43, 43, 43,
-<a name="l11473"></a>11473 43, 43, -3, -59, 49, 48, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 16, 7, 6, 35,
-<a name="l11474"></a>11474 34, 39, 38, 53, 16, 55, 54, 51, 50, 23, 22, 7, 38, 39, 38, 35, 34, 7, 6, 7, 5, 33, 22, 23, 22,
-<a name="l11475"></a>11475 51, 50, 55, 54, 4, 39, -16, 117, -116, -14, -123, 123, -92, -119, -59, -21, -122, -128, -65, 17, 66, 89, -122, -121, 89,
-<a name="l11476"></a>11476 66, 17, 2, 106, -3, -111, 8, 73, 84, -109, -109, 83, 72, 2, 34, -2, -116, -123, 65, -97, -108, -8, 1, 39, -114,
-<a name="l11477"></a>11477 118, -101, -109, -105, -127, 74, 101, 101, 74, -127, -108, -102, 97, 110, 111, 96, 0, 1, 0, 58, 1, 37, 5, -75, 3,
-<a name="l11478"></a>11478 -64, 0, 28, 0, 124, 64, 33, 121, 22, -119, 22, 2, 88, 22, 104, 22, 2, -127, 16, 1, 114, 16, 1, 100, 16,
-<a name="l11479"></a>11479 1, 85, 16, 1, 40, 3, 1, 9, 3, 1, 24, 24, 0, 23, 19, -72, 3, 3, -77, 64, 0, 30, 10, -72, 2,
-<a name="l11480"></a>11480 -5, 64, 9, 32, 0, 9, 16, 9, 2, 9, 9, 14, 65, 14, 3, 3, 0, 5, 0, 23, 2, -17, 0, 24, 3,
-<a name="l11481"></a>11481 4, 0, 10, 0, 9, 3, 4, 0, 18, 2, -17, 0, 1, 2, -21, 1, 42, -123, 0, 63, -19, 63, 51, 63, -19,
-<a name="l11482"></a>11482 1, 47, -19, 50, 25, 47, 93, 26, -19, 16, -48, 26, 24, -3, -50, 17, 57, 25, 47, 49, 48, 93, 93, 93, 93,
-<a name="l11483"></a>11483 93, 93, 93, 93, 1, 33, 34, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 23, 22, 51, 33, 53,
-<a name="l11484"></a>11484 52, 38, 39, 55, 22, 23, 22, 21, 5, -75, -4, 70, -64, 114, -113, 42, 15, 57, 30, 22, 21, 29, 124, 111, -86,
-<a name="l11485"></a>11485 3, 79, 54, 65, 77, 44, 9, 68, 1, 37, 67, 84, -77, 93, 97, 35, 98, 19, 46, 46, 71, 56, 118, 65, 58,
-<a name="l11486"></a>11486 27, 112, -115, 50, -93, 55, 14, 112, -42, 0, 1, -1, -70, 1, 37, 1, -12, 3, -90, 0, 12, 0, 66, 64, 18,
-<a name="l11487"></a>11487 -116, 6, 1, 125, 6, 1, 90, 6, 106, 6, 2, 8, 8, 31, 7, 1, 7, 3, -72, 3, 3, -77, 0, 14, 1,
-<a name="l11488"></a>11488 7, -65, 2, -17, 0, 8, 3, 4, 0, 3, 2, -17, 0, 1, 2, -21, 1, 42, -123, 0, 63, -19, 63, -19, 1,
-<a name="l11489"></a>11489 47, 16, -48, -3, -50, 114, 57, 25, 47, 49, 48, 93, 93, 93, 1, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23,
-<a name="l11490"></a>11490 22, 21, 1, -12, -3, -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, 1, 37, -82, 118, 62, 43, 81, -93, 91, 51,
-<a name="l11491"></a>11491 77, -78, 0, 2, -1, -70, 1, 37, 2, 36, 4, 91, 0, 21, 0, 33, 0, 76, -71, 0, 13, 3, 12, 64, 14,
-<a name="l11492"></a>11492 -116, 22, 1, 107, 22, 123, 22, 2, 22, 5, 29, 29, 2, 3, -72, 3, 12, -77, 0, 35, 2, 17, -72, 2, -17,
-<a name="l11493"></a>11493 -77, 26, 26, 5, 31, -72, 2, -17, -78, 9, 9, 3, -70, 2, -17, 0, 1, 2, -21, 0, 63, -19, 50, 47, -19,
-<a name="l11494"></a>11494 57, 50, 47, -19, 1, 47, 16, -48, -19, 17, 57, 47, 57, 57, 93, 93, -19, 49, 48, 1, 33, 53, 33, 52, 39,
-<a name="l11495"></a>11495 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 3, 38, 39, 38, 35, 34, 6, 21, 20,
-<a name="l11496"></a>11496 51, 50, 54, 2, 36, -3, -106, 2, 21, 21, 52, 28, 46, 35, 73, 46, 53, 50, 56, 90, 122, 66, 55, -93, 14,
-<a name="l11497"></a>11497 31, 42, 38, 27, 35, 88, 23, 52, 1, 37, -82, 89, 78, 17, 7, 12, 37, 42, 79, -117, 104, 116, -65, -98, -43,
-<a name="l11498"></a>11498 1, 4, 36, 37, 50, 45, 31, 80, 18, 0, 2, -1, -70, 1, 37, 2, 26, 3, -13, 0, 18, 0, 29, 0, 68,
-<a name="l11499"></a>11499 -75, 120, 21, -120, 21, 2, 10, -72, 3, 12, -76, 26, 26, 2, 6, 19, -72, 3, 12, -77, 0, 31, 2, 14, -72,
-<a name="l11500"></a>11500 2, -17, 64, 9, 23, 23, 11, 6, 1, 6, 19, 19, 3, -70, 2, -17, 0, 1, 2, -21, 0, 63, -19, 50, 47,
-<a name="l11501"></a>11501 57, 93, 51, 47, -19, 1, 47, 16, -48, -19, 57, 17, 57, 47, -19, 49, 48, 93, 1, 33, 53, 33, 50, 54, 55,
-<a name="l11502"></a>11502 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 39, 38, 39, 38, 35, 34, 6, 21, 20, 23, 22, 2, 26,
-<a name="l11503"></a>11503 -3, -96, 1, 87, 62, 87, 51, -84, 51, 115, 55, 62, 89, 102, 53, 42, 90, 23, 21, 41, 58, 28, 40, 79, 28,
-<a name="l11504"></a>11504 1, 37, -82, 9, 15, 25, 22, 50, 120, 105, 93, 105, -126, 103, -116, 4, 80, 39, 75, 44, 30, 76, 26, 9, 0,
-<a name="l11505"></a>11505 0, 2, 0, 70, -1, 103, 4, -89, 3, -113, 0, 45, 0, 58, 0, -60, 64, 51, -117, 25, 1, 76, 25, 1, 58,
-<a name="l11506"></a>11506 25, 1, 41, 25, 1, 24, 25, 1, -124, 21, 1, 118, 21, 1, 101, 21, 1, 86, 21, 1, 87, 16, 103, 16, 119,
-<a name="l11507"></a>11507 16, 3, -123, 15, 1, 87, 10, 1, 8, 6, 1, 84, 1, 100, 1, 116, 1, 3, 37, -72, 2, -3, 64, 19, -118,
-<a name="l11508"></a>11508 46, 1, 124, 46, 1, 75, 46, 91, 46, 107, 46, 3, 46, 30, 53, 53, 19, 27, -72, 3, 3, -74, 64, 0, 60,
-<a name="l11509"></a>11509 4, 13, 1, 13, -72, 2, -5, 64, 11, 32, 0, 12, 16, 12, 32, 12, 3, 12, 12, 19, -72, 3, 3, -77, 8,
-<a name="l11510"></a>11510 46, 56, 41, -72, 2, -17, -77, 50, 50, 30, 33, -72, 2, -17, -77, 56, 56, 13, 12, -67, 3, 7, 0, 23, 2,
-<a name="l11511"></a>11511 -17, 0, 4, 3, 17, 1, 42, -123, 0, 63, -19, 63, 51, 57, 47, -19, 57, 51, 47, -19, 18, 57, 1, 47, -19,
-<a name="l11512"></a>11512 50, 25, 47, 93, 26, -19, 93, 16, -48, 26, 24, -19, 17, 57, 47, 57, 57, 93, 93, 93, -19, 49, 48, 93, 93,
-<a name="l11513"></a>11513 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 37, 20, 7, 6, 33, 34, 39, 38, 53, 52, 55, 54, 55,
-<a name="l11514"></a>11514 23, 6, 7, 6, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 39, 6, 6, 35, 34, 39, 38, 53,
-<a name="l11515"></a>11515 52, 55, 54, 51, 50, 23, 22, 21, 39, 38, 39, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 4, -89, -66, -85,
-<a name="l11516"></a>11516 -2, -27, -33, 122, -124, 38, 35, 65, 42, 29, 20, 27, 12, 15, 110, 102, -57, -43, -96, -71, 7, 9, 38, 77, 39,
-<a name="l11517"></a>11517 88, 55, 67, 58, 65, 89, 117, 68, 58, -97, 26, 11, 28, 42, 48, 45, 58, 37, 26, 45, -14, -58, 104, 93, 80,
-<a name="l11518"></a>11518 87, -85, 118, -126, 120, 120, 18, 70, 54, 74, 53, 67, 63, -126, 62, 57, 70, 81, -118, 51, 45, 23, 18, 21, 40,
-<a name="l11519"></a>11519 48, 97, 113, 103, 116, -96, -120, -77, -79, 62, 15, 41, 46, 35, 31, 36, 15, 0, 0, 1, 0, -98, -1, -95, 1,
-<a name="l11520"></a>11520 -114, 0, -121, 0, 3, 0, 29, -78, 3, 1, 0, -72, 3, 1, -77, 2, 2, 0, 3, -71, 3, 2, 0, 1, 0,
-<a name="l11521"></a>11521 47, -19, 57, 57, 1, 47, -19, 57, 57, 49, 48, 37, 7, 39, 55, 1, -114, 78, -94, 74, 50, -111, 84, -110, 0,
-<a name="l11522"></a>11522 2, 0, 16, -1, 76, 1, -28, 0, -116, 0, 3, 0, 7, 0, 80, 64, 21, 103, 5, 119, 5, -121, 5, -89, 5,
-<a name="l11523"></a>11523 4, -104, 4, -72, 4, -56, 4, -40, 4, 4, 7, 5, 6, -72, 3, 1, -77, 4, 3, 1, 0, -72, 3, 1, -75,
-<a name="l11524"></a>11524 2, 2, 4, 6, 4, 5, -72, 3, 2, -77, 7, 2, 0, 3, -71, 3, 2, 0, 1, 0, 47, -3, 57, 57, -42,
-<a name="l11525"></a>11525 -19, 57, 57, 1, 47, 51, 47, -19, 57, 57, 16, -19, 57, 57, 49, 48, 0, 113, 1, 113, 37, 7, 39, 55, 7,
-<a name="l11526"></a>11526 7, 39, 55, 1, -28, 74, -92, 76, 66, 75, -91, 78, 56, -111, 84, -111, -79, -113, 85, -112, 0, 0, 3, 0, 27,
-<a name="l11527"></a>11527 -2, -103, 1, -17, 0, -116, 0, 3, 0, 7, 0, 11, 0, -119, 64, 13, -87, 11, -71, 11, -55, 11, 3, -102, 11,
-<a name="l11528"></a>11528 1, 9, 11, 10, -72, 3, 1, 64, 14, 8, -87, 5, -71, 5, -55, 5, 3, -102, 5, 1, 7, 5, 4, -72, 3,
-<a name="l11529"></a>11529 1, 64, 16, 6, 6, 8, -59, 1, 1, -106, 1, -90, 1, -74, 1, 3, 1, 3, 2, -72, 3, 1, -75, 0, 0,
-<a name="l11530"></a>11530 8, 10, 8, 9, -72, 3, 2, -75, 11, 11, 1, 4, 6, 5, -72, 3, 2, 64, 10, -97, 7, -81, 7, 2, 7,
-<a name="l11531"></a>11531 7, 2, 0, 3, -71, 3, 2, 0, 1, 0, 47, -19, 57, 57, 51, 47, 93, -19, 57, 57, 17, 51, 47, -19, 57,
-<a name="l11532"></a>11532 57, 1, 47, 51, 47, -19, 57, 57, 93, 93, 17, 51, 47, -19, 57, 57, 93, 93, 16, -19, 57, 57, 93, 93, 49,
-<a name="l11533"></a>11533 48, 37, 7, 39, 55, 1, 7, 39, 55, 7, 7, 39, 55, 1, 42, 77, -96, 74, 1, 104, 78, -94, 75, 65, 76,
-<a name="l11534"></a>11534 -94, 74, 54, -110, 86, -110, -2, -8, -112, 86, -113, -81, -111, 84, -111, 0, 3, 0, 16, -2, -103, 1, -28, 0, -116,
-<a name="l11535"></a>11535 0, 3, 0, 7, 0, 11, 0, -126, 64, 13, -59, 11, 1, -106, 11, -90, 11, -74, 11, 3, 11, 9, 10, -72, 3,
-<a name="l11536"></a>11536 1, 64, 14, 8, -54, 7, 1, -103, 7, -87, 7, -71, 7, 3, 7, 5, 4, -72, 3, 1, 64, 16, 6, 6, 8,
-<a name="l11537"></a>11537 -59, 1, 1, -106, 1, -90, 1, -74, 1, 3, 3, 1, 0, -72, 3, 1, -75, 2, 2, 8, 4, 6, 5, -72, 3,
-<a name="l11538"></a>11538 2, -75, 7, 7, 1, 10, 8, 9, -72, 3, 2, -76, 11, 11, 2, 0, 3, -71, 3, 2, 0, 1, 0, 47, -19,
-<a name="l11539"></a>11539 57, 57, 50, 47, -19, 57, 57, 17, 51, 47, -19, 57, 57, 1, 47, 51, 47, -19, 57, 57, 93, 93, 17, 51, 47,
-<a name="l11540"></a>11540 -19, 57, 57, 93, 93, 16, -19, 57, 57, 93, 93, 49, 48, 37, 7, 39, 55, 19, 7, 39, 55, 39, 7, 39, 55,
-<a name="l11541"></a>11541 1, -28, 74, -92, 76, -128, 74, -93, 77, 34, 75, -91, 78, 56, -111, 84, -111, -2, -97, -110, 86, -110, 90, -113, 85,
-<a name="l11542"></a>11542 -112, 0, 2, 0, 107, -2, -84, 1, -121, 0, -116, 0, 3, 0, 7, 0, 62, -78, 7, 5, 4, -72, 3, 1, -77,
-<a name="l11543"></a>11543 6, 3, 1, 0, -72, 3, 1, 64, 9, 16, 2, 32, 2, 2, 2, 6, 4, 5, -72, 3, 2, -76, 7, 7, 2,
-<a name="l11544"></a>11544 0, 3, -71, 3, 2, 0, 1, 0, 47, -19, 57, 57, 51, 47, -19, 57, 57, 1, 47, 93, -19, 57, 57, -34, -19,
-<a name="l11545"></a>11545 57, 57, 49, 48, 37, 7, 39, 55, 19, 7, 39, 55, 1, 89, 74, -92, 76, -48, 74, -93, 77, 56, -111, 84, -111,
-<a name="l11546"></a>11546 -2, -78, -110, 86, -110, 0, 4, -1, -7, -2, 81, 1, -5, 0, -116, 0, 3, 0, 7, 0, 11, 0, 15, 0, -64,
-<a name="l11547"></a>11547 64, 13, 58, 12, 1, 9, 12, 25, 12, 41, 12, 3, 14, 12, 13, -72, 3, 1, 64, 14, 15, 53, 11, 1, 6,
-<a name="l11548"></a>11548 11, 22, 11, 38, 11, 3, 11, 9, 10, -72, 3, 1, 64, 14, 8, 53, 7, 1, 6, 7, 22, 7, 38, 7, 3,
-<a name="l11549"></a>11549 7, 5, 4, -72, 3, 1, 64, 21, 6, 6, 8, 8, 15, 58, 1, 1, 3, 15, 1, 31, 1, 47, 1, 3, 18,
-<a name="l11550"></a>11550 5, 3, 1, 0, -72, 3, 1, -75, 2, 2, 15, 6, 4, 7, -72, 3, 2, -75, 5, 5, 9, 2, 0, 3, -72,
-<a name="l11551"></a>11551 3, 2, -76, 1, 1, 13, 15, 14, -72, 3, 2, -76, 12, 12, 10, 8, 11, -72, 3, 2, -73, 9, 64, 9, 64,
-<a name="l11552"></a>11552 12, 17, 52, 9, 0, 47, 43, 0, 26, 24, 16, 77, -19, 57, 57, 50, 47, -19, 57, 57, 51, 47, -19, 57, 57,
-<a name="l11553"></a>11553 17, 51, 47, -19, 57, 57, 1, 47, 51, 47, -19, 57, 57, 95, 94, 93, 95, 93, 17, 51, 47, 51, 47, -19, 57,
-<a name="l11554"></a>11554 57, 93, 93, 16, -19, 57, 57, 93, 93, 16, -19, 57, 57, 93, 93, 49, 48, 37, 7, 39, 55, 19, 7, 39, 55,
-<a name="l11555"></a>11555 7, 7, 39, 55, 55, 39, 55, 23, 1, -53, 77, -96, 74, -45, 78, -94, 75, 65, 76, -94, 74, 40, -96, 70, -89,
-<a name="l11556"></a>11556 54, -110, 86, -110, -2, -80, -112, 86, -113, -81, -111, 84, -111, 19, 90, -112, 90, 0, 2, -1, -50, 4, 38, 2, 39,
-<a name="l11557"></a>11557 6, -96, 0, 37, 0, 46, 0, -90, 64, 22, 38, 0, 37, 48, 37, 64, 37, 112, 37, -128, 37, 5, 10, 3, 37,
-<a name="l11558"></a>11558 48, 22, 25, 16, 16, 14, 20, -72, -1, -64, 64, 52, 7, 14, 52, 20, 25, 64, 14, 13, 7, 44, 40, 9, 20,
-<a name="l11559"></a>11559 52, 44, 5, 7, 31, 79, 27, 95, 27, 2, 27, 27, 48, -17, 2, -1, 2, 2, 2, 25, 13, 14, 20, 14, 20,
-<a name="l11560"></a>11560 22, 15, 16, 31, 16, 2, 7, 16, 1, 5, 31, 3, 35, 40, -72, -1, -64, 64, 18, 7, 14, 52, 40, 3, 44,
-<a name="l11561"></a>11561 31, 1, 63, 1, 95, 1, 127, 1, -97, 1, 5, 1, -72, 1, 42, -123, 0, 47, 93, -35, -64, -34, 43, -51, 17,
-<a name="l11562"></a>11562 57, 57, 16, -36, 94, 93, -52, 57, 57, 47, 47, 57, 57, 1, 47, 93, 18, 57, 47, 93, 51, -51, 50, 50, 43,
-<a name="l11563"></a>11563 1, 24, 16, -42, -59, 26, -35, -51, 43, 17, 57, 25, 47, 17, 57, 16, -48, 95, 94, 93, 24, -51, 49, 48, 1,
-<a name="l11564"></a>11564 33, 53, 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 39, 39, 54, 55, 22, 23, 22, 23, 6, 7, 38, 39, 39,
-<a name="l11565"></a>11565 22, 21, 20, 7, 6, 7, 54, 55, 54, 51, 50, 21, 7, 52, 35, 34, 7, 6, 7, 51, 50, 2, 39, -3, -89,
-<a name="l11566"></a>11566 73, 63, 71, 19, 10, 8, 13, 7, 13, 29, 8, 19, 8, 32, 20, 32, 2, 14, 4, 14, 6, 38, 7, 2, 6,
-<a name="l11567"></a>11567 81, 26, 72, 48, 126, 76, 96, 63, 96, 39, 25, -49, 112, 4, 38, 83, 44, 46, 45, 49, 64, 49, 56, 30, 47,
-<a name="l11568"></a>11568 14, 65, 42, 24, 13, 8, 3, 31, 64, 1, 3, 2, 127, 86, 32, 43, 13, 33, 47, 12, 34, -120, 1, 50, 50,
-<a name="l11569"></a>11569 20, 16, 0, 2, 0, 15, 5, -37, 1, -81, 7, 33, 0, 19, 0, 26, 0, 124, 64, 82, 7, 23, 23, 23, 39,
-<a name="l11570"></a>11570 23, 3, -26, 23, -10, 23, 2, 24, 15, 16, 31, 16, 47, 16, 3, 8, 16, 16, 13, 127, 20, -113, 20, 2, 20,
-<a name="l11571"></a>11571 0, 28, 11, 7, 0, 13, 16, 13, 2, 11, 13, 22, 0, 18, 1, 68, 0, 18, 1, 112, 18, 1, 18, 126, 11,
-<a name="l11572"></a>11572 1, 79, 11, 95, 11, 111, 11, 3, 11, 5, 16, -16, 25, 1, 95, 25, 111, 25, -81, 25, 3, -81, 25, -65, 25,
-<a name="l11573"></a>11573 2, 25, -72, 1, 52, -123, 0, 47, 93, 113, 93, -64, -35, -58, 93, 93, 47, 113, 114, 94, 93, -51, 1, 47, 94,
-<a name="l11574"></a>11574 93, -51, 50, 16, -44, -51, 113, 18, 57, 47, 94, 93, -51, 49, 48, 93, 113, 1, 20, 7, 6, 35, 35, 34, 21,
-<a name="l11575"></a>11575 20, 23, 22, 7, 38, 53, 52, 51, 51, 54, 51, 50, 7, 52, 35, 34, 7, 51, 50, 1, -81, 48, 52, 72, -89,
-<a name="l11576"></a>11576 31, 2, 1, 1, 48, 76, 24, 118, 116, 82, 90, 32, 55, 85, 82, 90, 6, -67, 53, 44, 48, 45, 5, 13, 12,
-<a name="l11577"></a>11577 6, 49, 52, 66, -97, 99, 38, 98, 0, 1, -1, -11, 5, -8, 1, 110, 7, 30, 0, 38, 0, -18, -71, 0, 1,
-<a name="l11578"></a>11578 -1, -32, 64, 124, 16, 20, 52, -102, 23, -86, 23, 2, 4, 1, 20, 1, -60, 1, -44, 1, 4, 37, 1, 53, 1,
-<a name="l11579"></a>11579 69, 1, 3, 29, 33, 27, 19, 21, 27, 27, 0, 12, 33, 0, 21, 16, 21, 2, 21, 21, 12, -97, 0, 1, -113,
-<a name="l11580"></a>11580 0, -97, 0, -81, 0, 3, 126, 0, 1, 0, 40, 11, 0, 12, 16, 12, 2, 11, 12, 29, 8, 29, 51, 52, 0,
-<a name="l11581"></a>11581 29, 37, 31, 25, 57, 19, 73, 19, 89, 19, -103, 19, -87, 19, 5, 8, 19, 24, 19, 40, 19, 104, 19, 120, 19,
-<a name="l11582"></a>11582 -120, 19, 6, 18, 19, 17, 37, 12, 11, 14, 9, 9, 6, 64, 15, 17, 31, 17, 79, 17, 95, 17, 4, 19, 3,
-<a name="l11583"></a>11583 17, 37, 37, -72, -1, -64, 64, 33, 14, 17, 52, 15, 37, 31, 37, 95, 37, 3, 64, 63, 37, 79, 37, -113, 37,
-<a name="l11584"></a>11584 -97, 37, -81, 37, 5, -96, 37, -80, 37, 2, 32, 37, 48, 37, 2, 37, -72, 1, 74, -123, 0, 47, 93, 114, 113,
-<a name="l11585"></a>11585 94, 93, 43, 0, 24, 16, -44, 95, 94, 93, 26, -51, 57, 47, -51, -58, 50, 17, 18, 57, 94, 93, 93, 47, -51,
-<a name="l11586"></a>11586 17, 57, 57, 43, 1, 47, 94, 93, 51, 16, -58, 93, 93, 113, 17, 57, 47, 113, -51, 17, 18, 57, 47, 17, 57,
-<a name="l11587"></a>11587 17, 18, 57, 49, 48, 0, 93, 93, 113, 43, 1, 20, 7, 6, 7, 6, 35, 34, 38, 35, 34, 7, 39, 54, 51,
-<a name="l11588"></a>11588 50, 22, 51, 50, 55, 38, 53, 52, 55, 54, 51, 50, 21, 20, 7, 38, 35, 34, 21, 20, 23, 22, 51, 50, 1,
-<a name="l11589"></a>11589 110, 94, 76, 53, 7, 9, 16, 57, 11, 17, 26, 11, 40, 30, 20, 48, 19, 22, 18, 68, 53, 59, 45, 49, 23,
-<a name="l11590"></a>11590 31, 36, 65, 53, 49, 24, 33, 6, 122, 40, 33, 26, 17, 2, 23, 35, 13, 70, 22, 13, 35, 36, 31, 56, 62,
-<a name="l11591"></a>11591 49, 23, 38, 28, 30, 19, 25, 23, 0, 1, 0, -92, 4, -41, 1, -20, 5, -67, 0, 6, 0, 87, 64, 58, -42,
-<a name="l11592"></a>11592 2, -26, 2, -10, 2, 3, 4, 2, -64, 3, 1, 53, 3, 1, 4, 3, 20, 3, 36, 3, 3, 3, -39, 1, -23,
-<a name="l11593"></a>11593 1, -7, 1, 3, 1, 6, -49, 0, 1, 58, 0, 1, 11, 0, 27, 0, 43, 0, 3, 0, 64, 5, 0, -32, 3,
-<a name="l11594"></a>11594 -16, 3, 2, 3, -128, 5, 2, 0, 47, -51, 26, -35, 93, -64, 1, 25, 47, 26, -51, 93, 93, 113, 57, 57, 93,
-<a name="l11595"></a>11595 -51, 93, 93, 113, 57, 57, 93, 49, 48, 1, 7, 35, 39, 51, 23, 55, 1, -20, -120, 56, -120, 87, 77, 77, 5,
-<a name="l11596"></a>11596 -67, -26, -26, -116, -116, 0, 1, 0, -92, 4, -41, 1, -20, 5, -67, 0, 6, 0, 87, 64, 58, -42, 5, -26, 5,
-<a name="l11597"></a>11597 -10, 5, 3, 3, 5, -64, 4, 1, 53, 4, 1, 4, 4, 20, 4, 36, 4, 3, 4, -39, 6, -23, 6, -7, 6,
-<a name="l11598"></a>11598 3, 6, 1, -49, 0, 1, 58, 0, 1, 11, 0, 27, 0, 43, 0, 3, 0, 2, 2, 64, -32, 5, -16, 5, 2,
-<a name="l11599"></a>11599 5, -128, 0, 4, 0, 47, -64, 26, -35, 93, 26, -51, 1, 25, 47, -51, 93, 93, 113, 57, 57, 93, -51, 93, 93,
-<a name="l11600"></a>11600 113, 57, 57, 93, 49, 48, 1, 35, 39, 7, 35, 55, 51, 1, -20, 87, 77, 77, 87, -120, 56, 4, -41, -116, -116,
-<a name="l11601"></a>11601 -26, 0, 0, 1, 0, 14, 5, -119, 1, -90, 5, -7, 0, 15, 0, -113, 64, 101, 23, 12, 1, 6, 12, 1, -25,
-<a name="l11602"></a>11602 12, -9, 12, 2, 105, 3, 1, 90, 3, 1, 41, 3, 57, 3, 73, 3, 3, -37, 3, 1, -55, 3, 1, -69, 3,
-<a name="l11603"></a>11603 1, -103, 3, -87, 3, 2, 122, 3, -118, 3, 2, 107, 3, 1, 58, 3, 74, 3, 90, 3, 3, -39, 3, 1, -54,
-<a name="l11604"></a>11604 3, 1, -103, 3, -87, 3, -71, 3, 3, 15, 0, 7, 8, 0, 2, 15, 13, 2, 8, 7, 10, 112, 7, 1, 97,
-<a name="l11605"></a>11605 7, 1, 48, 7, 64, 7, 80, 7, 3, 7, -97, 5, -81, 5, -65, 5, 3, 5, 2, 0, 47, -44, 93, -58, 114,
-<a name="l11606"></a>11606 114, 114, -51, 17, 57, 16, -35, -58, 17, 57, 1, 47, 51, -52, 50, 49, 48, 0, 93, 93, 93, 113, 113, 113, 113,
-<a name="l11607"></a>11607 113, 113, 113, 114, 114, 114, 113, 114, 114, 1, 6, 35, 34, 38, 35, 34, 7, 39, 54, 51, 50, 22, 51, 50, 55,
-<a name="l11608"></a>11608 1, -90, 64, 82, 60, 118, 22, 19, 32, 11, 46, 51, 17, -123, 42, 53, 52, 5, -46, 73, 48, 14, 13, 65, 48,
-<a name="l11609"></a>11609 23, 0, 0, 1, 0, 86, 5, -35, 1, 110, 7, 10, 0, 31, 0, 87, -71, 0, 2, -1, -32, 64, 14, 11, 17,
-<a name="l11610"></a>11610 52, 21, 7, 18, 18, 26, 0, 0, 26, 5, 5, 11, -72, 3, 5, -73, 26, 21, 0, 23, 7, 29, 5, 5, -72,
-<a name="l11611"></a>11611 -1, -64, -74, 18, 25, 52, 5, 29, 29, 23, -72, 2, -11, -77, 79, 15, 1, 15, -72, 1, 74, -123, 0, 47, 93,
-<a name="l11612"></a>11612 -19, 50, 47, 51, 43, 47, 18, 57, 17, 57, 57, 1, 47, -19, 50, 47, 17, 51, 47, 18, 57, 47, 57, 57, 49,
-<a name="l11613"></a>11613 48, 0, 43, 1, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 22, 21, 20, 6, 7,
-<a name="l11614"></a>11614 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 110, 31, 21, 42, -70, 100, 31, 16, 21, 53, 59, 45, 20, 29,
-<a name="l11615"></a>11615 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 6, 102, 25, 20, 13, 15, 64, 46, 35, 16, 15, 19, 21, 31, 56,
-<a name="l11616"></a>11616 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 0, 1, 0, 86, -1, 95, 1, 110, 0, -116, 0, 31,
-<a name="l11617"></a>11617 0, 82, -71, 0, 2, -1, -32, 64, 14, 11, 17, 52, 21, 7, 18, 18, 26, 0, 0, 26, 5, 5, 11, -72, 3,
-<a name="l11618"></a>11618 5, -73, 26, 21, 0, 23, 7, 29, 5, 5, -72, -1, -64, -74, 18, 24, 52, 5, 29, 29, 23, -70, 2, -11, 0,
-<a name="l11619"></a>11619 15, 1, 42, -123, 0, 47, -19, 50, 47, 51, 43, 47, 18, 57, 17, 57, 57, 1, 47, -19, 50, 47, 17, 51, 47,
-<a name="l11620"></a>11620 18, 57, 47, 57, 57, 49, 48, 0, 43, 5, 20, 7, 6, 7, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51,
-<a name="l11621"></a>11621 50, 22, 21, 20, 6, 7, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 110, 31, 21, 42, -70, 100, 31, 16,
-<a name="l11622"></a>11622 21, 53, 59, 45, 20, 29, 12, 11, 31, 36, 22, 43, 93, 33, 22, 19, 24, 25, 20, 13, 15, 64, 46, 35, 16,
-<a name="l11623"></a>11623 15, 19, 21, 31, 56, 62, 27, 22, 14, 29, 18, 28, 18, 12, 15, 52, 3, 0, 0, 1, -1, -49, 4, 38, 0,
-<a name="l11624"></a>11624 50, 6, 121, 0, 10, 0, 45, 64, 26, 2, 16, 26, 31, 52, 9, 7, 3, 2, 5, 0, 7, 9, 3, 31, 2,
-<a name="l11625"></a>11625 63, 2, 95, 2, 127, 2, -97, 2, 5, 2, 0, 47, 93, 51, -51, 50, 1, 47, -35, 50, 50, -42, -51, 49, 48,
-<a name="l11626"></a>11626 1, 43, 19, 20, 7, 39, 54, 53, 52, 3, 54, 55, 18, 50, 47, 9, 4, 47, 19, 28, 52, 4, -89, 54, 75,
-<a name="l11627"></a>11627 4, 37, 17, 124, 1, 70, 38, 49, -2, -78, -1, -1, 0, 15, 1, 10, 1, -81, 7, 33, 2, 54, 3, -115, 0,
-<a name="l11628"></a>11628 0, 1, 22, 5, 52, 0, 0, 0, 65, -78, 2, 1, 34, -72, -1, -64, 64, 10, 22, 26, 52, 0, 34, 21, 13,
-<a name="l11629"></a>11629 16, 65, 16, -72, -1, -64, -77, 9, 16, 52, 15, -72, -1, -64, 64, 21, 9, 16, 52, 0, 13, 0, 14, 0, 15,
-<a name="l11630"></a>11630 0, 16, 0, 17, -16, 15, -16, 16, 7, 2, 1, 25, 0, 47, 53, 53, 93, 43, 43, 1, 43, 43, 53, 53, 0,
-<a name="l11631"></a>11631 -1, -1, -1, -65, 1, 37, 1, -42, 7, 33, 2, 54, 3, -114, 0, 0, 1, 22, 5, 52, -80, 0, 0, 47, 64,
-<a name="l11632"></a>11632 9, 2, 1, 0, 36, 23, 13, 13, 65, 13, -72, -1, -64, 64, 21, 9, 16, 52, 0, 10, 0, 11, 0, 12, 0,
-<a name="l11633"></a>11633 13, 0, 14, 0, 15, -16, 13, 7, 2, 1, 27, 0, 47, 53, 53, 93, 43, 1, 43, 53, 53, 0, -1, -1, -1,
-<a name="l11634"></a>11634 -11, 1, 10, 1, 110, 7, 30, 2, 54, 3, -115, 0, 0, 1, 22, 5, 53, 0, 0, 0, 88, 64, 14, 1, 48,
-<a name="l11635"></a>11635 33, 1, 0, 33, 21, 13, 16, 65, 25, 16, 1, 17, -72, -1, -100, -77, 9, 16, 52, 16, -72, -1, -100, -77, 9,
-<a name="l11636"></a>11636 16, 52, 15, -72, -1, -100, -77, 9, 16, 52, 14, -72, -1, -64, -77, 9, 16, 52, 13, -72, -1, -64, -77, 9, 16,
-<a name="l11637"></a>11637 52, 16, -72, -1, -64, -77, 17, 28, 52, 15, -72, -1, -64, -76, 17, 18, 52, 1, 58, 0, 47, 53, 43, 43, 43,
-<a name="l11638"></a>11638 43, 43, 43, 43, 93, 1, 43, 113, 53, -1, -1, -1, -51, 1, 37, 1, -42, 7, 30, 2, 54, 3, -114, 0, 0,
-<a name="l11639"></a>11639 1, 22, 5, 53, -40, 0, 0, 100, -79, 1, 35, -72, -1, -64, 64, 10, 18, 26, 52, 0, 35, 23, 13, 13, 65,
-<a name="l11640"></a>11640 15, -72, -1, -64, -77, 9, 16, 52, 14, -72, -1, -100, -77, 9, 16, 52, 13, -72, -1, -100, -77, 9, 16, 52, 12,
-<a name="l11641"></a>11641 -72, -1, -100, -77, 9, 16, 52, 11, -72, -1, -64, -77, 9, 16, 52, 10, -72, -1, -64, -77, 9, 16, 52, 13, -72,
-<a name="l11642"></a>11642 -1, -64, 64, 13, 17, 31, 52, -48, 13, -32, 13, 2, 25, 13, 1, 1, 60, 0, 47, 53, 93, 113, 43, 43, 43,
-<a name="l11643"></a>11643 43, 43, 43, 43, 1, 43, 43, 53, -1, -1, 0, 29, -1, 84, 1, -106, 5, -20, 2, 54, 3, -115, 0, 0, 1,
-<a name="l11644"></a>11644 23, 5, 53, 0, 40, -7, 92, 0, 47, -76, 1, 48, 21, 1, 21, -72, -1, -64, -77, 14, 16, 52, 21, -72, -1,
-<a name="l11645"></a>11645 -64, 64, 18, 8, 10, 52, 68, 21, 21, 0, 0, 65, 1, 0, 58, 16, 58, 95, 58, 3, 58, 0, 47, 93, 53,
-<a name="l11646"></a>11646 1, 43, 43, 43, 93, 53, 0, -1, -1, -1, -11, -1, 84, 1, -42, 5, -20, 2, 54, 3, -114, 0, 0, 1, 23,
-<a name="l11647"></a>11647 5, 53, 0, 0, -7, 92, 0, 31, 64, 21, 1, 35, 64, 13, 15, 52, 0, 35, 23, 6, 17, 65, 1, 0, 60,
-<a name="l11648"></a>11648 16, 60, 95, 60, 3, 60, 0, 47, 93, 53, 1, 43, 43, 53, 0, -1, -1, 0, -109, 1, 10, 2, 94, 5, -20,
-<a name="l11649"></a>11649 2, 54, 3, -115, 0, 0, 1, 23, 5, 57, 0, -16, -2, -44, 0, 43, -76, 1, 112, 32, 1, 32, -72, -1, -64,
-<a name="l11650"></a>11650 64, 11, 14, 20, 52, 117, 32, 32, 16, 16, 65, 0, 0, -72, -1, -64, -75, 9, 49, 52, 0, 1, 50, 0, 47,
-<a name="l11651"></a>11651 53, 1, 47, 43, 53, 43, 43, 113, 53, 0, -1, -1, 0, 19, 1, 37, 2, 54, 5, -20, 2, 54, 3, -114, 0,
-<a name="l11652"></a>11652 0, 1, 23, 5, 57, 0, -56, -2, -44, 0, 41, -79, 1, 34, -72, -1, -64, -77, 26, 32, 52, 34, -72, -1, -64,
-<a name="l11653"></a>11653 64, 16, 13, 20, 52, 0, 34, 16, 34, 2, 101, 34, 34, 17, 17, 65, 1, 52, 0, 47, 53, 1, 43, 93, 43,
-<a name="l11654"></a>11654 43, 53, 0, -1, -1, 0, 50, -1, 99, 4, 22, 4, -58, 2, 54, 3, -19, 0, 0, 1, 23, 5, 57, 2, -88,
-<a name="l11655"></a>11655 -3, -68, 0, 55, 64, 41, 2, 0, 48, 48, 24, 0, 65, 2, 95, 48, 1, 48, 48, 64, 48, 127, 48, 3, 15,
-<a name="l11656"></a>11656 48, 47, 48, -128, 48, 3, 48, -128, 18, 21, 52, 48, 64, 22, 23, 52, 48, 64, 9, 14, 52, 48, 0, 47, 43,
-<a name="l11657"></a>11657 43, 43, 93, 113, 114, 53, 1, 43, 53, 0, -1, -1, 0, 50, -1, 99, 4, 22, 4, -58, 2, 54, 3, -19, 0,
-<a name="l11658"></a>11658 0, 1, 23, 5, 57, 2, -88, -3, -68, 0, 55, 64, 41, 2, 0, 48, 48, 24, 0, 65, 2, 95, 48, 1, 48,
-<a name="l11659"></a>11659 48, 64, 48, 127, 48, 3, 15, 48, 47, 48, -128, 48, 3, 48, -128, 18, 21, 52, 48, 64, 22, 23, 52, 48, 64,
-<a name="l11660"></a>11660 9, 14, 52, 48, 0, 47, 43, 43, 43, 93, 113, 114, 53, 1, 43, 53, 0, -1, -1, 0, 50, -1, 99, 4, 22,
-<a name="l11661"></a>11661 4, -19, 2, 54, 3, -19, 0, 0, 0, 55, 5, 57, 2, -88, -3, -68, 1, 23, 2, -11, 0, -56, -2, 99, 0,
-<a name="l11662"></a>11662 96, 64, 18, 4, 3, 0, 98, 98, 24, 40, 65, 2, 0, 48, 48, 24, 0, 65, 4, 3, 78, -72, -1, -64, 64,
-<a name="l11663"></a>11663 50, 15, 17, 52, 96, 78, 1, 15, 78, -97, 78, -81, 78, -65, 78, 4, 78, 2, 95, 48, 1, 48, 48, 64, 48,
-<a name="l11664"></a>11664 127, 48, 3, 15, 48, 47, 48, -128, 48, 3, 48, -128, 18, 21, 52, 48, 64, 22, 23, 52, 48, 64, 9, 14, 52,
-<a name="l11665"></a>11665 48, 0, 47, 43, 43, 43, 93, 113, 114, 53, 47, 93, 113, 43, 53, 53, 1, 43, 53, 43, 53, 53, -1, -1, 0,
-<a name="l11666"></a>11666 50, -1, 99, 4, 22, 4, -19, 2, 54, 3, -19, 0, 0, 0, 55, 5, 57, 2, -88, -3, -68, 1, 23, 2, -11,
-<a name="l11667"></a>11667 0, -56, -2, 99, 0, 96, 64, 18, 4, 3, 0, 98, 98, 24, 40, 65, 2, 0, 48, 48, 24, 0, 65, 4, 3,
-<a name="l11668"></a>11668 78, -72, -1, -64, 64, 50, 15, 17, 52, 96, 78, 1, 15, 78, -97, 78, -81, 78, -65, 78, 4, 78, 2, 95, 48,
-<a name="l11669"></a>11669 1, 48, 48, 64, 48, 127, 48, 3, 15, 48, 47, 48, -128, 48, 3, 48, -128, 18, 21, 52, 48, 64, 22, 23, 52,
-<a name="l11670"></a>11670 48, 64, 9, 14, 52, 48, 0, 47, 43, 43, 43, 93, 113, 114, 53, 47, 93, 113, 43, 53, 53, 1, 43, 53, 43,
-<a name="l11671"></a>11671 53, 53, -1, -1, 0, 50, -1, -89, 5, 86, 5, 122, 2, 54, 3, 53, 0, 0, 1, 23, 5, 57, 3, -24, -2,
-<a name="l11672"></a>11672 112, 0, 39, 64, 28, 1, -64, 60, -48, 60, -16, 60, 3, 125, 60, 60, 0, 0, 65, 1, 95, 89, -97, 89, -49,
-<a name="l11673"></a>11673 89, 3, 89, 64, 9, 19, 52, 89, 0, 47, 43, 93, 53, 1, 43, 93, 53, 0, -1, -1, 0, 36, -1, 31, 4,
-<a name="l11674"></a>11674 -75, 3, -122, 2, 54, 3, 54, 0, 0, 1, 23, 5, 57, 3, 32, -4, 124, 0, 37, 64, 26, 1, 0, 60, 55,
-<a name="l11675"></a>11675 38, 13, 65, 1, 15, 84, 47, 84, -97, 84, 3, 84, 64, 18, 22, 52, 84, 64, 11, 15, 52, 84, 0, 47, 43,
-<a name="l11676"></a>11676 43, 93, 53, 1, 43, 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, -96, 2, 54, 5, 40, 0, 0, 1, 23,
-<a name="l11677"></a>11677 5, 51, 1, -12, 0, 0, 0, 27, 64, 16, 2, 1, 16, 30, 32, 30, 2, 0, 30, 29, 14, 19, 65, 2, 1,
-<a name="l11678"></a>11678 30, 0, 47, 53, 53, 1, 43, 93, 53, 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, -96, 2, 54, 5, 40,
-<a name="l11679"></a>11679 0, 0, 1, 23, 5, 51, 1, -12, 0, 0, 0, 27, 64, 16, 2, 1, 16, 30, 32, 30, 2, 0, 30, 29, 14,
-<a name="l11680"></a>11680 19, 65, 2, 1, 30, 0, 47, 53, 53, 1, 43, 93, 53, 53, 0, -1, -1, -1, -70, 1, 37, 2, 39, 6, -96,
-<a name="l11681"></a>11681 2, 54, 5, 41, 0, 0, 1, 22, 5, 51, 0, 0, 0, 21, 64, 11, 2, 1, 31, 14, 13, 1, 0, 65, 2,
-<a name="l11682"></a>11682 1, 14, 0, 47, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, 1, 37, 2, 39, 6, -96, 2, 54, 5, 41,
-<a name="l11683"></a>11683 0, 0, 1, 22, 5, 51, 0, 0, 0, 21, 64, 11, 2, 1, 31, 14, 13, 1, 0, 65, 2, 1, 14, 0, 47,
-<a name="l11684"></a>11684 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, 4, 2, 54, 5, 40, 0, 0, 1, 23,
-<a name="l11685"></a>11685 5, 49, 1, -12, 5, 120, 0, 25, 64, 14, 2, 1, 0, 35, 33, 14, 19, 65, 2, 1, 32, 34, 1, 34, 0,
-<a name="l11686"></a>11686 47, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, 4, 2, 54, 5, 40, 0, 0,
-<a name="l11687"></a>11687 1, 23, 5, 49, 1, -12, 5, 120, 0, 25, 64, 14, 2, 1, 0, 35, 33, 14, 19, 65, 2, 1, 32, 34, 1,
-<a name="l11688"></a>11688 34, 0, 47, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, 1, 37, 1, -12, 6, 4, 2, 54, 5, 41,
-<a name="l11689"></a>11689 0, 0, 1, 23, 5, 49, -1, -40, 5, 120, 0, 40, -78, 2, 1, 15, -72, -1, -64, 64, 21, 11, 14, 52, 0,
-<a name="l11690"></a>11690 15, 17, 1, 0, 65, 2, 1, 32, 18, 63, 18, -128, 18, -97, 18, 4, 18, 0, 47, 93, 53, 53, 1, 43, 43,
-<a name="l11691"></a>11691 53, 53, -1, -1, -1, -70, 1, 37, 1, -12, 6, 4, 2, 54, 5, 41, 0, 0, 1, 23, 5, 49, -1, -40, 5,
-<a name="l11692"></a>11692 120, 0, 40, -78, 2, 1, 15, -72, -1, -64, 64, 21, 11, 14, 52, 0, 15, 17, 1, 0, 65, 2, 1, 32, 18,
-<a name="l11693"></a>11693 63, 18, -128, 18, -97, 18, 4, 18, 0, 47, 93, 53, 53, 1, 43, 43, 53, 53, -1, -1, 0, 58, -2, -84, 5,
-<a name="l11694"></a>11694 -75, 3, -64, 2, 54, 5, 40, 0, 0, 1, 23, 5, 49, 2, 48, 0, 0, 0, 33, 64, 21, 2, 1, 0, 31,
-<a name="l11695"></a>11695 29, 14, 19, 65, 2, 1, 32, 64, 12, 21, 52, 0, 32, 16, 32, 2, 32, 0, 47, 93, 43, 53, 53, 1, 43,
-<a name="l11696"></a>11696 53, 53, 0, -1, -1, 0, 58, -2, -84, 5, -75, 3, -64, 2, 54, 5, 40, 0, 0, 1, 23, 5, 49, 2, 48,
-<a name="l11697"></a>11697 0, 0, 0, 33, 64, 21, 2, 1, 0, 31, 29, 14, 19, 65, 2, 1, 32, 64, 12, 21, 52, 0, 32, 16, 32,
-<a name="l11698"></a>11698 2, 32, 0, 47, 93, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, -2, -84, 1, -12, 3, -90, 2, 54,
-<a name="l11699"></a>11699 5, 41, 0, 0, 1, 22, 5, 49, 0, 0, 0, 33, 64, 21, 2, 1, 0, 15, 17, 1, 0, 65, 2, 1, 16,
-<a name="l11700"></a>11700 64, 12, 21, 52, 0, 16, 16, 16, 2, 16, 0, 47, 93, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70,
-<a name="l11701"></a>11701 -2, -84, 1, -12, 3, -90, 2, 54, 5, 41, 0, 0, 1, 22, 5, 49, 0, 0, 0, 33, 64, 21, 2, 1, 0,
-<a name="l11702"></a>11702 15, 17, 1, 0, 65, 2, 1, 16, 64, 12, 21, 52, 0, 16, 16, 16, 2, 16, 0, 47, 93, 43, 53, 53, 1,
-<a name="l11703"></a>11703 43, 53, 53, 0, -1, -1, 0, 58, 0, 64, 5, -75, 5, 6, 2, 54, 3, -107, 0, 0, 1, 23, 2, -8, 2,
-<a name="l11704"></a>11704 88, -5, 105, 0, 24, 64, 11, 4, 3, 0, 43, 37, 22, 27, 65, 4, 3, 52, -72, 2, -21, 0, 63, 53, 53,
-<a name="l11705"></a>11705 1, 43, 53, 53, -1, -1, 0, 58, 0, 64, 5, -75, 5, 6, 2, 54, 3, -107, 0, 0, 1, 23, 2, -8, 2,
-<a name="l11706"></a>11706 88, -5, 105, 0, 24, 64, 11, 4, 3, 0, 43, 37, 22, 27, 65, 4, 3, 52, -72, 2, -21, 0, 63, 53, 53,
-<a name="l11707"></a>11707 1, 43, 53, 53, -1, -1, -1, -70, 0, 64, 1, -12, 5, 86, 2, 54, 3, -105, 0, 0, 1, 23, 2, -8, 0,
-<a name="l11708"></a>11708 40, -5, 105, 0, 24, 64, 11, 4, 3, 0, 27, 21, 9, 8, 65, 4, 3, 36, -72, 2, -21, 0, 63, 53, 53,
-<a name="l11709"></a>11709 1, 43, 53, 53, -1, -1, -1, -70, 0, 64, 1, -12, 5, 86, 2, 54, 3, -105, 0, 0, 1, 23, 2, -8, 0,
-<a name="l11710"></a>11710 40, -5, 105, 0, 24, 64, 11, 4, 3, 0, 27, 21, 9, 8, 65, 4, 3, 36, -72, 2, -21, 0, 63, 53, 53,
-<a name="l11711"></a>11711 1, 43, 53, 53, -1, -1, 0, 58, 1, 37, 5, -75, 6, 4, 2, 54, 5, 40, 0, 0, 1, 23, 5, 48, 1,
-<a name="l11712"></a>11712 -12, 5, 120, 0, 31, 64, 18, 3, 2, 1, 0, 35, 33, 14, 19, 65, 3, 2, 1, 32, 34, 63, 34, 2, 34,
-<a name="l11713"></a>11713 0, 47, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, 4, 2, 54, 5,
-<a name="l11714"></a>11714 40, 0, 0, 1, 23, 5, 48, 1, -12, 5, 120, 0, 31, 64, 18, 3, 2, 1, 0, 35, 33, 14, 19, 65, 3,
-<a name="l11715"></a>11715 2, 1, 32, 34, 63, 34, 2, 34, 0, 47, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, -1, -70, 1,
-<a name="l11716"></a>11716 37, 1, -12, 6, 4, 2, 54, 5, 41, 0, 0, 1, 23, 5, 48, -1, -40, 5, 120, 0, 39, 64, 25, 3, 2,
-<a name="l11717"></a>11717 1, 0, 23, 13, 1, 0, 65, 3, 2, 1, 111, 18, 1, 32, 18, 63, 18, -128, 18, -97, 18, 4, 18, 0, 47,
-<a name="l11718"></a>11718 93, 113, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 1, -12, 6, 4, 2, 54, 5, 41,
-<a name="l11719"></a>11719 0, 0, 1, 23, 5, 48, -1, -40, 5, 120, 0, 39, 64, 25, 3, 2, 1, 0, 23, 13, 1, 0, 65, 3, 2,
-<a name="l11720"></a>11720 1, 111, 18, 1, 32, 18, 63, 18, -128, 18, -97, 18, 4, 18, 0, 47, 93, 113, 53, 53, 53, 1, 43, 53, 53,
-<a name="l11721"></a>11721 53, 0, -1, -1, 0, 58, 1, 37, 5, -75, 6, 4, 2, 54, 5, 40, 0, 0, 1, 23, 5, 50, 1, -12, 5,
-<a name="l11722"></a>11722 120, 0, 39, 64, 23, 4, 3, 2, 1, 16, 39, 1, 0, 39, 33, 14, 19, 65, 4, 3, 2, 1, 15, 38, 31,
-<a name="l11723"></a>11723 38, 2, 38, 0, 47, 93, 53, 53, 53, 53, 1, 43, 93, 53, 53, 53, 53, 0, -1, -1, 0, 58, 1, 37, 5,
-<a name="l11724"></a>11724 -75, 6, 4, 2, 54, 5, 40, 0, 0, 1, 23, 5, 50, 1, -12, 5, 120, 0, 39, 64, 23, 4, 3, 2, 1,
-<a name="l11725"></a>11725 16, 39, 1, 0, 39, 33, 14, 19, 65, 4, 3, 2, 1, 15, 38, 31, 38, 2, 38, 0, 47, 93, 53, 53, 53,
-<a name="l11726"></a>11726 53, 1, 43, 93, 53, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 1, -12, 6, 4, 2, 54, 5, 41, 0, 0,
-<a name="l11727"></a>11727 1, 23, 5, 50, -1, -40, 5, 120, 0, 51, 64, 33, 4, 3, 2, 1, -33, 23, 1, 0, 23, 17, 1, 0, 65,
-<a name="l11728"></a>11728 4, 3, 2, 1, 22, 64, 8, 10, 52, 47, 22, 111, 22, 2, 63, 22, -97, 22, 2, 22, 0, 47, 93, 113, 43,
-<a name="l11729"></a>11729 53, 53, 53, 53, 1, 43, 93, 53, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 1, -12, 6, 4, 2, 54, 5,
-<a name="l11730"></a>11730 41, 0, 0, 1, 23, 5, 50, -1, -40, 5, 120, 0, 51, 64, 33, 4, 3, 2, 1, -33, 23, 1, 0, 23, 17,
-<a name="l11731"></a>11731 1, 0, 65, 4, 3, 2, 1, 22, 64, 8, 10, 52, 47, 22, 111, 22, 2, 63, 22, -97, 22, 2, 22, 0, 47,
-<a name="l11732"></a>11732 93, 113, 43, 53, 53, 53, 53, 1, 43, 93, 53, 53, 53, 53, 0, -1, -1, 0, 58, -2, 81, 5, -75, 3, -64,
-<a name="l11733"></a>11733 2, 54, 5, 40, 0, 0, 1, 23, 5, 50, 2, 28, 0, 0, 0, 39, 64, 23, 4, 3, 2, 1, 0, 39, 33,
-<a name="l11734"></a>11734 14, 19, 65, 4, 3, 2, 1, 32, 64, 17, 21, 52, 47, 32, 1, 32, 0, 47, 93, 43, 53, 53, 53, 53, 1,
-<a name="l11735"></a>11735 43, 53, 53, 53, 53, 0, -1, -1, 0, 58, -2, 81, 5, -75, 3, -64, 2, 54, 5, 40, 0, 0, 1, 23, 5,
-<a name="l11736"></a>11736 50, 2, 28, 0, 0, 0, 39, 64, 23, 4, 3, 2, 1, 0, 39, 33, 14, 19, 65, 4, 3, 2, 1, 32, 64,
-<a name="l11737"></a>11737 17, 21, 52, 47, 32, 1, 32, 0, 47, 93, 43, 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, 0, -1, -1, -1,
-<a name="l11738"></a>11738 -70, -2, 81, 1, -5, 3, -90, 2, 54, 5, 41, 0, 0, 1, 22, 5, 50, 0, 0, 0, 39, 64, 23, 4, 3,
-<a name="l11739"></a>11739 2, 1, 0, 26, 17, 1, 0, 65, 4, 3, 2, 1, 16, 64, 17, 21, 52, 47, 16, 1, 16, 0, 47, 93, 43,
-<a name="l11740"></a>11740 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, 0, -1, -1, -1, -70, -2, 81, 1, -5, 3, -90, 2, 54, 5, 41,
-<a name="l11741"></a>11741 0, 0, 1, 22, 5, 50, 0, 0, 0, 39, 64, 23, 4, 3, 2, 1, 0, 26, 17, 1, 0, 65, 4, 3, 2,
-<a name="l11742"></a>11742 1, 16, 64, 17, 21, 52, 47, 16, 1, 16, 0, 47, 93, 43, 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, 0,
-<a name="l11743"></a>11743 -1, -1, 0, 54, -2, 78, 4, 32, 5, 122, 2, 54, 3, -95, 0, 0, 1, 23, 5, 57, 1, -112, -2, 112, 0,
-<a name="l11744"></a>11744 31, 64, 22, 1, 0, 50, 45, 7, 18, 65, 1, 15, 74, 47, 74, 95, 74, 112, 74, -128, 74, -97, 74, 6, 74,
-<a name="l11745"></a>11745 0, 47, 93, 53, 1, 43, 53, 0, -1, -1, 0, 54, -2, 78, 4, 53, 5, 122, 2, 54, 3, -94, 0, 0, 1,
-<a name="l11746"></a>11746 23, 5, 57, 1, -112, -2, 112, 0, 31, 64, 22, 1, 0, 68, 63, 41, 51, 65, 1, 15, 92, 47, 92, 95, 92,
-<a name="l11747"></a>11747 112, 92, -128, 92, -97, 92, 6, 92, 0, 47, 93, 53, 1, 43, 53, 0, -1, -1, -1, -70, 1, 37, 4, 61, 5,
-<a name="l11748"></a>11748 122, 2, 54, 3, -93, 0, 0, 1, 23, 5, 57, 1, 44, -2, 112, 0, 50, 64, 30, 1, 0, 28, 23, 1, 0,
-<a name="l11749"></a>11749 65, 1, 48, 52, 64, 52, 2, 15, 52, 47, 52, 95, 52, 111, 52, -97, 52, 5, 52, 64, 18, 19, 52, 52, -72,
-<a name="l11750"></a>11750 -1, -64, -77, 15, 17, 52, 52, 0, 47, 43, 43, 93, 113, 53, 1, 43, 53, -1, -1, -1, -70, 1, 37, 4, 61,
-<a name="l11751"></a>11751 5, 122, 2, 54, 3, -93, 0, 0, 1, 23, 5, 57, 1, 44, -2, 112, 0, 50, 64, 30, 1, 0, 28, 23, 1,
-<a name="l11752"></a>11752 0, 65, 1, 48, 52, 64, 52, 2, 15, 52, 47, 52, 95, 52, 111, 52, -97, 52, 5, 52, 64, 18, 19, 52, 52,
-<a name="l11753"></a>11753 -72, -1, -64, -77, 15, 17, 52, 52, 0, 47, 43, 43, 93, 113, 53, 1, 43, 53, -1, -1, 0, 54, -2, 78, 4,
-<a name="l11754"></a>11754 32, 6, 4, 2, 54, 3, -95, 0, 0, 1, 23, 5, 49, 1, 44, 5, 120, 0, 36, 64, 16, 2, 1, 0, 51,
-<a name="l11755"></a>11755 49, 7, 18, 65, 2, 1, 16, 50, 32, 50, 2, 50, -72, -1, -64, -77, 13, 17, 52, 50, 0, 47, 43, 93, 53,
-<a name="l11756"></a>11756 53, 1, 43, 53, 53, -1, -1, 0, 54, -2, 78, 4, 53, 6, 4, 2, 54, 3, -94, 0, 0, 1, 23, 5, 49,
-<a name="l11757"></a>11757 1, 44, 5, 120, 0, 37, 64, 11, 2, 1, 0, 69, 67, 41, 51, 65, 2, 1, 68, -72, -1, -64, 64, 9, 13,
-<a name="l11758"></a>11758 17, 52, 16, 68, 32, 68, 2, 68, 0, 47, 93, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, 1, 37,
-<a name="l11759"></a>11759 4, 61, 6, 4, 2, 54, 3, -93, 0, 0, 1, 23, 5, 49, 0, -56, 5, 120, 0, 44, 64, 23, 2, 1, 0,
-<a name="l11760"></a>11760 29, 27, 1, 0, 65, 2, 1, 16, 28, 32, 28, -128, 28, 3, 28, 64, 18, 19, 52, 28, -72, -1, -64, -77, 13,
-<a name="l11761"></a>11761 17, 52, 28, 0, 47, 43, 43, 93, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, 1, 37, 4, 61, 6, 4, 2,
-<a name="l11762"></a>11762 54, 3, -93, 0, 0, 1, 23, 5, 49, 0, -56, 5, 120, 0, 44, 64, 23, 2, 1, 0, 29, 27, 1, 0, 65,
-<a name="l11763"></a>11763 2, 1, 16, 28, 32, 28, -128, 28, 3, 28, 64, 18, 19, 52, 28, -72, -1, -64, -77, 13, 17, 52, 28, 0, 47,
-<a name="l11764"></a>11764 43, 43, 93, 53, 53, 1, 43, 53, 53, -1, -1, 0, 54, -2, 78, 4, 32, 3, 117, 2, 54, 3, -95, 0, 0,
-<a name="l11765"></a>11765 1, 23, 5, 46, 1, 124, 0, -56, 0, 33, 64, 21, 2, 1, 0, 51, 49, 25, 18, 65, 2, 1, 0, 50, 16,
-<a name="l11766"></a>11766 50, 2, 50, 64, 12, 15, 52, 50, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 54, -2, 78,
-<a name="l11767"></a>11767 4, 53, 3, 105, 2, 54, 3, -94, 0, 0, 1, 23, 5, 46, 0, -16, 0, -76, 0, 59, 64, 29, -101, 2, -85,
-<a name="l11768"></a>11768 2, 2, 2, 1, 15, 69, -81, 69, 2, -97, 69, -81, 69, 2, 0, 69, 63, 14, 4, 65, 2, 1, 64, 68, 1,
-<a name="l11769"></a>11769 68, -72, -1, -64, 64, 9, 7, 11, 52, 68, 64, 12, 16, 52, 68, 0, 47, 43, 43, 93, 53, 53, 1, 43, 93,
-<a name="l11770"></a>11770 113, 53, 53, 93, 0, -1, -1, -1, -70, -1, 76, 4, 61, 3, 107, 2, 54, 3, -93, 0, 0, 1, 23, 5, 46,
-<a name="l11771"></a>11771 1, 4, 0, 0, 0, 33, 64, 21, 2, 1, 0, 29, 23, 1, 0, 65, 2, 1, 0, 28, 16, 28, 2, 28, 64,
-<a name="l11772"></a>11772 12, 21, 52, 28, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, -1, 76, 4, 61, 3, 107,
-<a name="l11773"></a>11773 2, 54, 3, -93, 0, 0, 1, 23, 5, 46, 1, 4, 0, 0, 0, 33, 64, 21, 2, 1, 0, 29, 23, 1, 0,
-<a name="l11774"></a>11774 65, 2, 1, 0, 28, 16, 28, 2, 28, 64, 12, 21, 52, 28, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0,
-<a name="l11775"></a>11775 -1, -1, 0, 54, -2, 78, 4, 32, 3, 117, 2, 54, 3, -95, 0, 0, 1, 23, 5, 49, 1, 124, 1, 4, 0,
-<a name="l11776"></a>11776 37, 64, 25, 2, 1, -97, 51, -81, 51, -33, 51, -17, 51, 4, 51, 64, 9, 10, 52, 0, 51, 49, 25, 18, 65,
-<a name="l11777"></a>11777 2, 1, 50, 0, 47, 53, 53, 1, 43, 43, 93, 53, 53, 0, -1, -1, 0, 54, -2, 78, 4, 53, 3, 105, 2,
-<a name="l11778"></a>11778 54, 3, -94, 0, 0, 1, 23, 5, 49, 1, 24, 0, -16, 0, 38, 64, 18, 2, 1, 0, 65, 63, 14, 4, 65,
-<a name="l11779"></a>11779 2, 1, 63, 68, -65, 68, -49, 68, 3, 68, -72, -1, -64, -77, 9, 10, 52, 68, 0, 47, 43, 93, 53, 53, 1,
-<a name="l11780"></a>11780 43, 53, 53, -1, -1, -1, -70, -2, -84, 4, 61, 3, 107, 2, 54, 3, -93, 0, 0, 1, 23, 5, 49, 1, 4,
-<a name="l11781"></a>11781 0, 0, 0, 33, 64, 21, 2, 1, 0, 29, 23, 1, 0, 65, 2, 1, 0, 28, 16, 28, 2, 28, 64, 12, 21,
-<a name="l11782"></a>11782 52, 28, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, -1, -70, -2, -84, 4, 61, 3, 107, 2, 54,
-<a name="l11783"></a>11783 3, -93, 0, 0, 1, 23, 5, 49, 1, 4, 0, 0, 0, 33, 64, 21, 2, 1, 0, 29, 23, 1, 0, 65, 2,
-<a name="l11784"></a>11784 1, 0, 28, 16, 28, 2, 28, 64, 12, 21, 52, 28, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1,
-<a name="l11785"></a>11785 0, 54, -2, 78, 4, 32, 6, 4, 2, 54, 3, -95, 0, 0, 1, 23, 5, 47, 1, 84, 5, 120, 0, 38, 64,
-<a name="l11786"></a>11786 16, 3, 2, 1, 0, 55, 49, 7, 18, 65, 3, 2, 1, 16, 54, 1, 54, -72, -1, -64, -77, 13, 17, 52, 54,
-<a name="l11787"></a>11787 0, 47, 43, 93, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, 0, 54, -2, 78, 4, 53, 6, 4, 2, 54, 3,
-<a name="l11788"></a>11788 -94, 0, 0, 1, 23, 5, 47, 1, 84, 5, 120, 0, 38, 64, 16, 3, 2, 1, 0, 73, 67, 41, 51, 65, 3,
-<a name="l11789"></a>11789 2, 1, 16, 72, 1, 72, -72, -1, -64, -77, 13, 17, 52, 72, 0, 47, 43, 93, 53, 53, 53, 1, 43, 53, 53,
-<a name="l11790"></a>11790 53, -1, -1, -1, -70, 1, 37, 4, 61, 6, 4, 2, 54, 3, -93, 0, 0, 1, 23, 5, 47, 1, 24, 5, 120,
-<a name="l11791"></a>11791 0, 42, 64, 20, 3, 2, 1, 0, 33, 27, 1, 0, 65, 3, 2, 1, 16, 32, -128, 32, -97, 32, 3, 32, -72,
-<a name="l11792"></a>11792 -1, -64, -77, 13, 17, 52, 32, 0, 47, 43, 93, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, -1, -70, 1, 37,
-<a name="l11793"></a>11793 4, 61, 6, 4, 2, 54, 3, -93, 0, 0, 1, 23, 5, 47, 1, 24, 5, 120, 0, 42, 64, 20, 3, 2, 1,
-<a name="l11794"></a>11794 0, 33, 27, 1, 0, 65, 3, 2, 1, 16, 32, -128, 32, -97, 32, 3, 32, -72, -1, -64, -77, 13, 17, 52, 32,
-<a name="l11795"></a>11795 0, 47, 43, 93, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, 0, 54, -2, 78, 4, 32, 3, 117, 2, 54, 3,
-<a name="l11796"></a>11796 -95, 0, 0, 1, 23, 5, 50, 1, -92, 1, 84, 0, 57, 64, 38, 4, 3, 2, 1, 111, 58, 1, -33, 58, 1,
-<a name="l11797"></a>11797 0, 58, 49, 25, 18, 65, -105, 27, -89, 27, 2, 4, 3, 2, 1, 47, 54, 1, 64, 54, 112, 54, -65, 54, -49,
-<a name="l11798"></a>11798 54, 4, 54, 0, 47, 93, 113, 53, 53, 53, 53, 93, 1, 43, 93, 113, 53, 53, 53, 53, 0, -1, -1, 0, 54,
-<a name="l11799"></a>11799 -2, 78, 4, 53, 3, 105, 2, 54, 3, -94, 0, 0, 1, 23, 5, 50, 1, 14, 1, 34, 0, 116, 64, 83, 4,
-<a name="l11800"></a>11800 3, 2, 1, 76, 64, 56, 57, 52, 76, 64, 41, 45, 52, 76, 64, 17, 22, 52, -112, 76, 1, 15, 76, 31, 76,
-<a name="l11801"></a>11801 95, 76, 111, 76, -17, 76, 5, 0, 76, 67, 14, 4, 65, 4, 3, 2, 1, 95, 72, 111, 72, -97, 72, 3, 0,
-<a name="l11802"></a>11802 72, 47, 72, -65, 72, -49, 72, -33, 72, 5, 15, 72, 31, 72, 48, 72, -17, 72, -1, 72, 5, 72, 64, 52, 67,
-<a name="l11803"></a>11803 52, 72, 64, 30, 32, 52, 72, -72, -1, -64, -77, 13, 16, 52, 72, 0, 47, 43, 43, 43, 93, 113, 114, 53, 53,
-<a name="l11804"></a>11804 53, 53, 1, 43, 113, 114, 43, 43, 43, 53, 53, 53, 53, -1, -1, -1, -70, -2, 81, 4, 61, 3, 107, 2, 54,
-<a name="l11805"></a>11805 3, -93, 0, 0, 1, 23, 5, 50, 1, 24, 0, 0, 0, 39, 64, 23, 4, 3, 2, 1, 0, 36, 27, 1, 0,
-<a name="l11806"></a>11806 65, 4, 3, 2, 1, 47, 32, 1, 32, 64, 17, 21, 52, 32, 0, 47, 43, 93, 53, 53, 53, 53, 1, 43, 53,
-<a name="l11807"></a>11807 53, 53, 53, 0, -1, -1, -1, -70, -2, 81, 4, 61, 3, 107, 2, 54, 3, -93, 0, 0, 1, 23, 5, 50, 1,
-<a name="l11808"></a>11808 24, 0, 0, 0, 39, 64, 23, 4, 3, 2, 1, 0, 36, 27, 1, 0, 65, 4, 3, 2, 1, 47, 32, 1, 32,
-<a name="l11809"></a>11809 64, 17, 21, 52, 32, 0, 47, 43, 93, 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, 0, -1, -1, 0, 50, 1,
-<a name="l11810"></a>11810 37, 2, -77, 7, 33, 2, 54, 3, -87, 0, 0, 1, 23, 5, 51, 0, 100, 0, -127, 0, 78, -79, 2, 1, -72,
-<a name="l11811"></a>11811 -1, -40, 64, 26, 23, 23, 0, 0, 65, 2, 18, 34, 16, 34, 18, 36, 19, 36, 20, -110, 18, 6, 2, 1, 24,
-<a name="l11812"></a>11812 64, 18, 22, 52, 24, -72, -1, -64, 64, 25, 14, 17, 52, 0, 24, -49, 24, 2, 48, 24, -113, 24, -16, 24, 3,
-<a name="l11813"></a>11813 0, 24, 16, 24, -112, 24, -65, 24, 4, 24, 0, 47, 93, 113, 114, 43, 43, 53, 53, 93, 1, 43, 53, 53, -1,
-<a name="l11814"></a>11814 -1, 0, 50, 1, 37, 2, -77, 7, 33, 2, 54, 3, -87, 0, 0, 1, 23, 5, 51, 0, 100, 0, -127, 0, 78,
-<a name="l11815"></a>11815 -79, 2, 1, -72, -1, -40, 64, 26, 23, 23, 0, 0, 65, 2, 18, 34, 16, 34, 18, 36, 19, 36, 20, -110, 18,
-<a name="l11816"></a>11816 6, 2, 1, 24, 64, 18, 22, 52, 24, -72, -1, -64, 64, 25, 14, 17, 52, 0, 24, -49, 24, 2, 48, 24, -113,
-<a name="l11817"></a>11817 24, -16, 24, 3, 0, 24, 16, 24, -112, 24, -65, 24, 4, 24, 0, 47, 93, 113, 114, 43, 43, 53, 53, 93, 1,
-<a name="l11818"></a>11818 43, 53, 53, -1, -1, 0, 95, 0, 64, 2, -77, 4, 106, 2, 54, 3, -87, 0, 0, 1, 23, 2, -8, 0, -36,
-<a name="l11819"></a>11819 -5, 105, 0, 24, 64, 11, 2, 1, 0, 29, 23, 4, 0, 65, 2, 1, 38, -72, 2, -21, 0, 63, 53, 53, 1,
-<a name="l11820"></a>11820 43, 53, 53, -1, -1, 0, 95, 0, 64, 2, -77, 4, 106, 2, 54, 3, -87, 0, 0, 1, 23, 2, -8, 0, -36,
-<a name="l11821"></a>11821 -5, 105, 0, 24, 64, 11, 2, 1, 0, 29, 23, 4, 0, 65, 2, 1, 38, -72, 2, -21, 0, 63, 53, 53, 1,
-<a name="l11822"></a>11822 43, 53, 53, -1, -1, 0, 95, -1, -95, 2, -77, 4, 106, 2, 54, 3, -87, 0, 0, 1, 23, 5, 45, 0, -116,
-<a name="l11823"></a>11823 0, 0, 0, 29, 64, 19, 1, 0, 25, 23, 4, 0, 65, 1, 0, 24, 16, 24, 2, 24, 64, 11, 21, 52, 24,
-<a name="l11824"></a>11824 0, 47, 43, 93, 53, 1, 43, 53, 0, -1, -1, 0, 95, -1, -95, 2, -77, 4, 106, 2, 54, 3, -87, 0, 0,
-<a name="l11825"></a>11825 1, 23, 5, 45, 0, -116, 0, 0, 0, 29, 64, 19, 1, 0, 25, 23, 4, 0, 65, 1, 0, 24, 16, 24, 2,
-<a name="l11826"></a>11826 24, 64, 11, 21, 52, 24, 0, 47, 43, 93, 53, 1, 43, 53, 0, -1, -1, 0, 50, -1, -95, 2, -77, 7, 33,
-<a name="l11827"></a>11827 2, 54, 3, -87, 0, 0, 0, 55, 5, 51, 0, 100, 0, -127, 1, 23, 5, 45, 0, -116, 0, 0, 0, 116, 64,
-<a name="l11828"></a>11828 9, 3, 0, 72, 70, 4, 0, 65, 2, 1, -72, -1, -40, 64, 49, 23, 23, 0, 0, 65, 2, 18, 34, 16, 34,
-<a name="l11829"></a>11829 18, 36, 19, 36, 20, 5, 3, 0, 71, 16, 71, 2, 71, 64, 11, 21, 52, 71, 2, 18, 34, 16, 34, 18, 36,
-<a name="l11830"></a>11830 19, 36, 20, -110, 18, 6, 2, 1, 24, 64, 18, 22, 52, 24, -72, -1, -64, 64, 25, 14, 17, 52, 0, 24, -49,
-<a name="l11831"></a>11831 24, 2, 48, 24, -113, 24, -16, 24, 3, 0, 24, 16, 24, -112, 24, -65, 24, 4, 24, 0, 47, 93, 113, 114, 43,
-<a name="l11832"></a>11832 43, 53, 53, 93, 47, 43, 93, 53, 93, 1, 43, 53, 53, 43, 53, -1, -1, 0, 50, -1, -95, 2, -77, 7, 33,
-<a name="l11833"></a>11833 2, 54, 3, -87, 0, 0, 0, 55, 5, 51, 0, 100, 0, -127, 1, 23, 5, 45, 0, -116, 0, 0, 0, 116, 64,
-<a name="l11834"></a>11834 9, 3, 0, 72, 70, 4, 0, 65, 2, 1, -72, -1, -40, 64, 49, 23, 23, 0, 0, 65, 2, 18, 34, 16, 34,
-<a name="l11835"></a>11835 18, 36, 19, 36, 20, 5, 3, 0, 71, 16, 71, 2, 71, 64, 11, 21, 52, 71, 2, 18, 34, 16, 34, 18, 36,
-<a name="l11836"></a>11836 19, 36, 20, -110, 18, 6, 2, 1, 24, 64, 18, 22, 52, 24, -72, -1, -64, 64, 25, 14, 17, 52, 0, 24, -49,
-<a name="l11837"></a>11837 24, 2, 48, 24, -113, 24, -16, 24, 3, 0, 24, 16, 24, -112, 24, -65, 24, 4, 24, 0, 47, 93, 113, 114, 43,
-<a name="l11838"></a>11838 43, 53, 53, 93, 47, 43, 93, 53, 93, 1, 43, 53, 53, 43, 53, -1, -1, 0, 95, 1, 37, 2, -77, 6, 4,
-<a name="l11839"></a>11839 2, 54, 3, -87, 0, 0, 1, 23, 5, 46, 0, 80, 5, 120, 0, 47, 64, 33, 2, 1, 48, 29, 64, 29, -128,
-<a name="l11840"></a>11840 29, 3, 0, 29, 23, 4, 0, 65, 2, 1, 63, 28, -97, 28, 2, 28, 64, 18, 21, 52, 28, 64, 12, 13, 52,
-<a name="l11841"></a>11841 28, 0, 47, 43, 43, 93, 53, 53, 1, 43, 93, 53, 53, 0, -1, -1, 0, 95, 1, 37, 2, -77, 6, 4, 2,
-<a name="l11842"></a>11842 54, 3, -87, 0, 0, 1, 23, 5, 46, 0, 80, 5, 120, 0, 47, 64, 33, 2, 1, 48, 29, 64, 29, -128, 29,
-<a name="l11843"></a>11843 3, 0, 29, 23, 4, 0, 65, 2, 1, 63, 28, -97, 28, 2, 28, 64, 18, 21, 52, 28, 64, 12, 13, 52, 28,
-<a name="l11844"></a>11844 0, 47, 43, 43, 93, 53, 53, 1, 43, 93, 53, 53, 0, -1, -1, 0, 95, -1, 76, 2, -77, 4, 106, 2, 54,
-<a name="l11845"></a>11845 3, -87, 0, 0, 1, 23, 5, 46, 0, -116, 0, 0, 0, 33, 64, 21, 2, 1, 0, 29, 23, 4, 0, 65, 2,
-<a name="l11846"></a>11846 1, 0, 28, 16, 28, 2, 28, 64, 12, 21, 52, 28, 0, 47, 43, 93, 53, 53, 1, 43, 53, 53, 0, -1, -1,
-<a name="l11847"></a>11847 0, 95, -1, 76, 2, -77, 4, 106, 2, 54, 3, -87, 0, 0, 1, 23, 5, 46, 0, -116, 0, 0, 0, 33, 64,
-<a name="l11848"></a>11848 21, 2, 1, 0, 29, 23, 4, 0, 65, 2, 1, 0, 28, 16, 28, 2, 28, 64, 12, 21, 52, 28, 0, 47, 43,
-<a name="l11849"></a>11849 93, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 95, 1, 37, 2, -77, 6, -52, 2, 54, 3, -87, 0, 0, 1,
-<a name="l11850"></a>11850 23, 5, 47, 0, 100, 6, 64, 0, 59, -77, 3, 2, 1, 29, -72, -1, -64, -78, 11, 16, 52, -72, -1, -33, 64,
-<a name="l11851"></a>11851 9, 29, 29, 18, 18, 65, 3, 2, 1, 32, -72, -1, -64, 64, 14, 13, 17, 52, 16, 32, -97, 32, 2, 32, 64,
-<a name="l11852"></a>11852 11, 13, 52, 32, 0, 47, 43, 93, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, 0, 95, 1, 37,
-<a name="l11853"></a>11853 2, -77, 6, -52, 2, 54, 3, -87, 0, 0, 1, 23, 5, 47, 0, 100, 6, 64, 0, 59, -77, 3, 2, 1, 29,
-<a name="l11854"></a>11854 -72, -1, -64, -78, 11, 16, 52, -72, -1, -33, 64, 9, 29, 29, 18, 18, 65, 3, 2, 1, 32, -72, -1, -64, 64,
-<a name="l11855"></a>11855 14, 13, 17, 52, 16, 32, -97, 32, 2, 32, 64, 11, 13, 52, 32, 0, 47, 43, 93, 43, 53, 53, 53, 1, 43,
-<a name="l11856"></a>11856 43, 53, 53, 53, 0, -1, -1, 0, 56, 1, 37, 2, -77, 6, -52, 2, 54, 3, -87, 0, 0, 1, 23, 5, 48,
-<a name="l11857"></a>11857 0, 40, 6, 64, 0, 47, 64, 18, 3, 2, 1, 28, 28, 28, 18, 18, 65, 3, 2, 1, 16, 28, -97, 28, 2,
-<a name="l11858"></a>11858 28, -72, -1, -64, 64, 9, 14, 17, 52, 28, 64, 12, 12, 52, 28, 0, 47, 43, 43, 93, 53, 53, 53, 1, 43,
-<a name="l11859"></a>11859 53, 53, 53, 0, -1, -1, 0, 56, 1, 37, 2, -77, 6, -52, 2, 54, 3, -87, 0, 0, 1, 23, 5, 48, 0,
-<a name="l11860"></a>11860 40, 6, 64, 0, 47, 64, 18, 3, 2, 1, 28, 28, 28, 18, 18, 65, 3, 2, 1, 16, 28, -97, 28, 2, 28,
-<a name="l11861"></a>11861 -72, -1, -64, 64, 9, 14, 17, 52, 28, 64, 12, 12, 52, 28, 0, 47, 43, 43, 93, 53, 53, 53, 1, 43, 53,
-<a name="l11862"></a>11862 53, 53, 0, -1, -1, 0, 73, 1, 37, 2, -77, 6, -52, 2, 54, 3, -87, 0, 0, 1, 23, 5, 50, 0, 80,
-<a name="l11863"></a>11863 6, 64, 0, 62, -77, 4, 3, 2, 1, -72, -1, -41, 64, 22, 29, 29, 18, 18, 65, 4, 3, 2, 1, 15, 32,
-<a name="l11864"></a>11864 96, 32, 112, 32, 3, 32, 64, 18, 22, 52, 32, -72, -1, -64, 64, 9, 14, 16, 52, 32, 64, 11, 12, 52, 32,
-<a name="l11865"></a>11865 0, 47, 43, 43, 43, 93, 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, -1, -1, 0, 73, 1, 37, 2, -77, 6,
-<a name="l11866"></a>11866 -52, 2, 54, 3, -87, 0, 0, 1, 23, 5, 50, 0, 80, 6, 64, 0, 62, -77, 4, 3, 2, 1, -72, -1, -41,
-<a name="l11867"></a>11867 64, 22, 29, 29, 18, 18, 65, 4, 3, 2, 1, 15, 32, 96, 32, 112, 32, 3, 32, 64, 18, 22, 52, 32, -72,
-<a name="l11868"></a>11868 -1, -64, 64, 9, 14, 16, 52, 32, 64, 11, 12, 52, 32, 0, 47, 43, 43, 43, 93, 53, 53, 53, 53, 1, 43,
-<a name="l11869"></a>11869 53, 53, 53, 53, -1, -1, 0, 74, -1, 70, 3, -23, 6, -96, 2, 54, 3, -83, 0, 0, 1, 23, 5, 51, 1,
-<a name="l11870"></a>11870 -112, 0, 0, 0, 37, 64, 11, 2, 1, 0, 31, 31, 21, 0, 65, 2, 1, 32, -72, -1, -64, 64, 9, 12, 19,
-<a name="l11871"></a>11871 52, 16, 32, 79, 32, 2, 32, 0, 47, 93, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -1, 70, 3,
-<a name="l11872"></a>11872 -23, 6, -96, 2, 54, 3, -83, 0, 0, 1, 23, 5, 51, 1, -112, 0, 0, 0, 37, 64, 11, 2, 1, 0, 31,
-<a name="l11873"></a>11873 31, 21, 0, 65, 2, 1, 32, -72, -1, -64, 64, 9, 12, 19, 52, 16, 32, 79, 32, 2, 32, 0, 47, 93, 43,
-<a name="l11874"></a>11874 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -1, 70, 3, -23, 5, 19, 2, 54, 3, -83, 0, 0, 1, 23,
-<a name="l11875"></a>11875 5, 54, 1, -112, -1, 86, 0, 30, 64, 9, 1, 56, 31, 31, 26, 26, 65, 1, 33, -72, -1, -64, -74, 15, 19,
-<a name="l11876"></a>11876 52, 15, 33, 1, 33, 0, 47, 93, 43, 53, 1, 43, 53, -1, -1, 0, 74, -1, 70, 3, -23, 5, 19, 2, 54,
-<a name="l11877"></a>11877 3, -83, 0, 0, 1, 23, 5, 54, 1, -112, -1, 86, 0, 30, 64, 9, 1, 56, 31, 31, 26, 26, 65, 1, 33,
-<a name="l11878"></a>11878 -72, -1, -64, -74, 15, 19, 52, 15, 33, 1, 33, 0, 47, 93, 43, 53, 1, 43, 53, -1, -1, 0, 74, -2, -5,
-<a name="l11879"></a>11879 3, -23, 3, 112, 2, 54, 3, -83, 0, 0, 1, 23, 2, -8, 2, -108, -6, 36, 0, 47, 64, 17, 2, 1, 0,
-<a name="l11880"></a>11880 31, 31, 0, 0, 65, 2, 1, -81, 34, 1, -64, 34, 1, 34, -72, -1, -64, -77, 17, 19, 52, 34, -72, -1, -64,
-<a name="l11881"></a>11881 -77, 10, 11, 52, 34, 0, 47, 43, 43, 93, 113, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -2, -5, 3,
-<a name="l11882"></a>11882 -23, 3, 112, 2, 54, 3, -83, 0, 0, 1, 23, 2, -8, 2, -108, -6, 36, 0, 47, 64, 17, 2, 1, 0, 31,
-<a name="l11883"></a>11883 31, 0, 0, 65, 2, 1, -81, 34, 1, -64, 34, 1, 34, -72, -1, -64, -77, 17, 19, 52, 34, -72, -1, -64, -77,
-<a name="l11884"></a>11884 10, 11, 52, 34, 0, 47, 43, 43, 93, 113, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -2, -39, 4, 14,
-<a name="l11885"></a>11885 3, 112, 2, 54, 3, -83, 0, 0, 1, 23, 5, 45, 2, -128, -1, 56, 0, 36, -79, 1, 31, -72, -1, -64, 64,
-<a name="l11886"></a>11886 19, 18, 21, 52, 96, 31, 1, 37, 31, 31, 0, 0, 65, 1, 127, 32, -113, 32, 2, 32, 0, 47, 93, 53, 1,
-<a name="l11887"></a>11887 43, 93, 43, 53, -1, -1, 0, 74, -2, -39, 4, 14, 3, 112, 2, 54, 3, -83, 0, 0, 1, 23, 5, 45, 2,
-<a name="l11888"></a>11888 -128, -1, 56, 0, 36, -79, 1, 31, -72, -1, -64, 64, 19, 18, 21, 52, 96, 31, 1, 37, 31, 31, 0, 0, 65,
-<a name="l11889"></a>11889 1, 127, 32, -113, 32, 2, 32, 0, 47, 93, 53, 1, 43, 93, 43, 53, -1, -1, 0, 74, -2, 111, 3, -23, 3,
-<a name="l11890"></a>11890 112, 2, 54, 3, -83, 0, 0, 1, 23, 5, 54, 1, -12, -7, -104, 0, 39, 64, 9, 1, 0, 37, 31, 21, 0,
-<a name="l11891"></a>11891 65, 1, 33, -72, -1, -64, 64, 14, 18, 19, 52, 48, 33, 64, 33, 2, 64, 33, -33, 33, 2, 33, 0, 47, 93,
-<a name="l11892"></a>11892 113, 43, 53, 1, 43, 53, 0, -1, -1, 0, 74, -2, 111, 3, -23, 3, 112, 2, 54, 3, -83, 0, 0, 1, 23,
-<a name="l11893"></a>11893 5, 54, 1, -12, -7, -104, 0, 39, 64, 9, 1, 0, 37, 31, 21, 0, 65, 1, 33, -72, -1, -64, 64, 14, 18,
-<a name="l11894"></a>11894 19, 52, 48, 33, 64, 33, 2, 64, 33, -33, 33, 2, 33, 0, 47, 93, 113, 43, 53, 1, 43, 53, 0, -1, -1,
-<a name="l11895"></a>11895 0, 74, -2, -39, 4, 14, 3, 112, 2, 54, 3, -83, 0, 0, 0, 55, 5, 45, 2, -128, -1, 56, 1, 23, 5,
-<a name="l11896"></a>11896 45, 0, -56, 1, 44, 0, 50, 64, 9, 2, 0, 35, 35, 12, 21, 65, 1, 31, -72, -1, -64, 64, 21, 18, 21,
-<a name="l11897"></a>11897 52, 96, 31, 1, 37, 31, 31, 0, 0, 65, 2, 36, 1, 127, 32, -113, 32, 2, 32, 0, 47, 93, 53, 47, 53,
-<a name="l11898"></a>11898 1, 43, 93, 43, 53, 43, 53, -1, -1, 0, 74, -2, -39, 4, 14, 3, 112, 2, 54, 3, -83, 0, 0, 0, 55,
-<a name="l11899"></a>11899 5, 45, 2, -128, -1, 56, 1, 23, 5, 45, 0, -56, 1, 44, 0, 50, 64, 9, 2, 0, 35, 35, 12, 21, 65,
-<a name="l11900"></a>11900 1, 31, -72, -1, -64, 64, 21, 18, 21, 52, 96, 31, 1, 37, 31, 31, 0, 0, 65, 2, 36, 1, 127, 32, -113,
-<a name="l11901"></a>11901 32, 2, 32, 0, 47, 93, 53, 47, 53, 1, 43, 93, 43, 53, 43, 53, -1, -1, 0, 74, -1, 70, 3, -23, 5,
-<a name="l11902"></a>11902 22, 2, 54, 3, -83, 0, 0, 1, 23, 5, 46, 1, -112, 4, -118, 0, 43, 64, 30, 2, 1, 0, 31, 31, 21,
-<a name="l11903"></a>11903 21, 65, 2, 1, 36, 64, 20, 21, 52, 36, 64, 12, 14, 52, 16, 36, 79, 36, 127, 36, -97, 36, 4, 36, 0,
-<a name="l11904"></a>11904 47, 93, 43, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -1, 70, 3, -23, 5, 22, 2, 54, 3, -83,
-<a name="l11905"></a>11905 0, 0, 1, 23, 5, 46, 1, -112, 4, -118, 0, 43, 64, 30, 2, 1, 0, 31, 31, 21, 21, 65, 2, 1, 36,
-<a name="l11906"></a>11906 64, 20, 21, 52, 36, 64, 12, 14, 52, 16, 36, 79, 36, 127, 36, -97, 36, 4, 36, 0, 47, 93, 43, 43, 53,
-<a name="l11907"></a>11907 53, 1, 43, 53, 53, 0, -1, -1, 0, 74, -1, 70, 3, -23, 6, 17, 2, 54, 3, -83, 0, 0, 1, 23, 5,
-<a name="l11908"></a>11908 50, 1, 124, 5, -123, 0, 44, 64, 20, 4, 3, 2, 1, 0, 35, 35, 21, 21, 65, 4, 3, 2, 1, 15, 40,
-<a name="l11909"></a>11909 -49, 40, 2, 40, -72, -1, -64, -77, 14, 17, 52, 40, 0, 47, 43, 93, 53, 53, 53, 53, 1, 43, 53, 53, 53,
-<a name="l11910"></a>11910 53, -1, -1, 0, 74, -1, 70, 3, -23, 6, 17, 2, 54, 3, -83, 0, 0, 1, 23, 5, 50, 1, 124, 5, -123,
-<a name="l11911"></a>11911 0, 44, 64, 20, 4, 3, 2, 1, 0, 35, 35, 21, 21, 65, 4, 3, 2, 1, 15, 40, -49, 40, 2, 40, -72,
-<a name="l11912"></a>11912 -1, -64, -77, 14, 17, 52, 40, 0, 47, 43, 93, 53, 53, 53, 53, 1, 43, 53, 53, 53, 53, -1, -1, 0, 62,
-<a name="l11913"></a>11913 -1, 108, 6, -110, 4, -65, 2, 54, 3, -79, 0, 0, 0, 55, 5, 45, 3, -24, 4, 56, 1, 23, 5, 45, 4,
-<a name="l11914"></a>11914 -80, 0, 0, 0, 52, 64, 21, 2, 0, 77, 75, 9, 0, 65, 1, 0, 73, 71, 35, 0, 65, 2, 76, 64, 11,
-<a name="l11915"></a>11915 21, 52, 76, -72, -1, -64, 64, 11, 9, 10, 52, 76, 1, 72, 64, 11, 16, 52, 72, 0, 47, 43, 53, 47, 43,
-<a name="l11916"></a>11916 43, 53, 1, 43, 53, 43, 53, -1, -1, 0, 62, -1, 108, 6, -110, 4, -65, 2, 54, 3, -79, 0, 0, 0, 55,
-<a name="l11917"></a>11917 5, 45, 3, -24, 4, 56, 1, 23, 5, 45, 4, -80, 0, 0, 0, 52, 64, 21, 2, 0, 77, 75, 9, 0, 65,
-<a name="l11918"></a>11918 1, 0, 73, 71, 35, 0, 65, 2, 76, 64, 11, 21, 52, 76, -72, -1, -64, 64, 11, 9, 10, 52, 76, 1, 72,
-<a name="l11919"></a>11919 64, 11, 16, 52, 72, 0, 47, 43, 53, 47, 43, 43, 53, 1, 43, 53, 43, 53, -1, -1, -1, -70, -1, -95, 4,
-<a name="l11920"></a>11920 63, 4, -65, 2, 54, 3, -77, 0, 0, 0, 55, 5, 45, 1, -112, 4, 56, 1, 23, 5, 45, 2, 88, 0, 0,
-<a name="l11921"></a>11921 0, 52, 64, 21, 2, 0, 64, 64, 54, 54, 65, 1, 0, 62, 60, 26, 0, 65, 2, 65, 64, 11, 21, 52, 65,
-<a name="l11922"></a>11922 -72, -1, -64, 64, 11, 9, 10, 52, 65, 1, 61, 64, 11, 16, 52, 61, 0, 47, 43, 53, 47, 43, 43, 53, 1,
-<a name="l11923"></a>11923 43, 53, 43, 53, -1, -1, -1, -70, -1, -95, 4, 63, 4, -65, 2, 54, 3, -77, 0, 0, 0, 55, 5, 45, 1,
-<a name="l11924"></a>11924 -112, 4, 56, 1, 23, 5, 45, 2, 88, 0, 0, 0, 52, 64, 21, 2, 0, 64, 64, 54, 54, 65, 1, 0, 62,
-<a name="l11925"></a>11925 60, 26, 0, 65, 2, 65, 64, 11, 21, 52, 65, -72, -1, -64, 64, 11, 9, 10, 52, 65, 1, 61, 64, 11, 16,
-<a name="l11926"></a>11926 52, 61, 0, 47, 43, 53, 47, 43, 43, 53, 1, 43, 53, 43, 53, -1, -1, 0, 62, -2, -103, 6, -108, 3, 87,
-<a name="l11927"></a>11927 2, 54, 3, -79, 0, 0, 1, 23, 5, 48, 4, -80, 0, 0, 0, 49, -77, 3, 2, 1, 71, -72, -1, -64, 64,
-<a name="l11928"></a>11928 18, 9, 17, 52, 0, 71, 71, 0, 0, 65, 3, 2, 1, 76, 64, 12, 21, 52, 76, -72, -1, -64, -77, 9, 10,
-<a name="l11929"></a>11929 52, 76, 0, 47, 43, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, 0, 62, -2, -103, 6, -108, 3,
-<a name="l11930"></a>11930 87, 2, 54, 3, -79, 0, 0, 1, 23, 5, 48, 4, -80, 0, 0, 0, 49, -77, 3, 2, 1, 71, -72, -1, -64,
-<a name="l11931"></a>11931 64, 18, 9, 17, 52, 0, 71, 71, 0, 0, 65, 3, 2, 1, 76, 64, 12, 21, 52, 76, -72, -1, -64, -77, 9,
-<a name="l11932"></a>11932 10, 52, 76, 0, 47, 43, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, -1, -70, -2, -103, 4, 63,
-<a name="l11933"></a>11933 3, 53, 2, 54, 3, -77, 0, 0, 1, 23, 5, 48, 2, 88, 0, 0, 0, 49, -77, 3, 2, 1, 60, -72, -1,
-<a name="l11934"></a>11934 -64, 64, 18, 9, 17, 52, 0, 60, 60, 0, 0, 65, 3, 2, 1, 65, 64, 12, 21, 52, 65, -72, -1, -64, -77,
-<a name="l11935"></a>11935 9, 10, 52, 65, 0, 47, 43, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, -1, -70, -2, -103, 4,
-<a name="l11936"></a>11936 63, 3, 53, 2, 54, 3, -77, 0, 0, 1, 23, 5, 48, 2, 88, 0, 0, 0, 49, -77, 3, 2, 1, 60, -72,
-<a name="l11937"></a>11937 -1, -64, 64, 18, 9, 17, 52, 0, 60, 60, 0, 0, 65, 3, 2, 1, 65, 64, 12, 21, 52, 65, -72, -1, -64,
-<a name="l11938"></a>11938 -77, 9, 10, 52, 65, 0, 47, 43, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, 0, 62, -2, -103,
-<a name="l11939"></a>11939 6, -108, 5, -56, 2, 54, 3, -79, 0, 0, 0, 55, 5, 48, 4, -80, 0, 0, 1, 23, 5, 47, 3, -24, 5,
-<a name="l11940"></a>11940 60, 0, 81, 64, 13, 6, 5, 4, 0, 93, 87, 35, 0, 65, 3, 2, 1, 71, -72, -1, -64, 64, 31, 9, 17,
-<a name="l11941"></a>11941 52, 0, 71, 71, 0, 0, 65, 6, 5, 4, 16, 92, 47, 92, 96, 92, -128, 92, 4, 92, 3, 2, 1, 76, 64,
-<a name="l11942"></a>11942 12, 21, 52, 76, -72, -1, -64, -77, 9, 10, 52, 76, 0, 47, 43, 43, 53, 53, 53, 47, 93, 53, 53, 53, 1,
-<a name="l11943"></a>11943 43, 43, 53, 53, 53, 43, 53, 53, 53, 0, -1, -1, 0, 62, -2, -103, 6, -108, 5, -56, 2, 54, 3, -79, 0,
-<a name="l11944"></a>11944 0, 0, 55, 5, 48, 4, -80, 0, 0, 1, 23, 5, 47, 3, -24, 5, 60, 0, 81, 64, 13, 6, 5, 4, 0,
-<a name="l11945"></a>11945 93, 87, 35, 0, 65, 3, 2, 1, 71, -72, -1, -64, 64, 31, 9, 17, 52, 0, 71, 71, 0, 0, 65, 6, 5,
-<a name="l11946"></a>11946 4, 16, 92, 47, 92, 96, 92, -128, 92, 4, 92, 3, 2, 1, 76, 64, 12, 21, 52, 76, -72, -1, -64, -77, 9,
-<a name="l11947"></a>11947 10, 52, 76, 0, 47, 43, 43, 53, 53, 53, 47, 93, 53, 53, 53, 1, 43, 43, 53, 53, 53, 43, 53, 53, 53,
-<a name="l11948"></a>11948 0, -1, -1, -1, -70, -2, -103, 4, 63, 5, -56, 2, 54, 3, -77, 0, 0, 0, 55, 5, 48, 2, 88, 0, 0,
-<a name="l11949"></a>11949 1, 23, 5, 47, 1, -112, 5, 60, 0, 81, 64, 13, 6, 5, 4, 0, 82, 76, 26, 0, 65, 3, 2, 1, 60,
-<a name="l11950"></a>11950 -72, -1, -64, 64, 31, 9, 17, 52, 0, 60, 60, 0, 0, 65, 6, 5, 4, 16, 81, 47, 81, 96, 81, -128, 81,
-<a name="l11951"></a>11951 4, 81, 3, 2, 1, 65, 64, 12, 21, 52, 65, -72, -1, -64, -77, 9, 10, 52, 65, 0, 47, 43, 43, 53, 53,
-<a name="l11952"></a>11952 53, 47, 93, 53, 53, 53, 1, 43, 43, 53, 53, 53, 43, 53, 53, 53, 0, -1, -1, -1, -70, -2, -103, 4, 63,
-<a name="l11953"></a>11953 5, -56, 2, 54, 3, -77, 0, 0, 0, 55, 5, 48, 2, 88, 0, 0, 1, 23, 5, 47, 1, -112, 5, 60, 0,
-<a name="l11954"></a>11954 81, 64, 13, 6, 5, 4, 0, 82, 76, 26, 0, 65, 3, 2, 1, 60, -72, -1, -64, 64, 31, 9, 17, 52, 0,
-<a name="l11955"></a>11955 60, 60, 0, 0, 65, 6, 5, 4, 16, 81, 47, 81, 96, 81, -128, 81, 4, 81, 3, 2, 1, 65, 64, 12, 21,
-<a name="l11956"></a>11956 52, 65, -72, -1, -64, -77, 9, 10, 52, 65, 0, 47, 43, 43, 53, 53, 53, 47, 93, 53, 53, 53, 1, 43, 43,
-<a name="l11957"></a>11957 53, 53, 53, 43, 53, 53, 53, 0, -1, -1, 0, 62, -1, 76, 8, -55, 3, 87, 2, 54, 3, -71, 0, 0, 1,
-<a name="l11958"></a>11958 23, 5, 46, 5, 120, 0, 0, 0, 36, 64, 16, 3, 2, 0, 69, 63, 25, 0, 65, 3, 2, 68, 64, 12, 21,
-<a name="l11959"></a>11959 52, 68, -72, -1, -64, -77, 9, 10, 52, 68, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, 0, 62, -1,
-<a name="l11960"></a>11960 76, 8, -55, 3, 87, 2, 54, 3, -71, 0, 0, 1, 23, 5, 46, 5, 120, 0, 0, 0, 36, 64, 16, 3, 2,
-<a name="l11961"></a>11961 0, 69, 63, 25, 0, 65, 3, 2, 68, 64, 12, 21, 52, 68, -72, -1, -64, -77, 9, 10, 52, 68, 0, 47, 43,
-<a name="l11962"></a>11962 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -1, 76, 6, -59, 3, 62, 2, 54, 3, -69, 0, 0, 1, 23,
-<a name="l11963"></a>11963 5, 46, 3, -24, 0, 0, 0, 36, 64, 16, 3, 2, 0, 55, 49, 18, 0, 65, 3, 2, 54, 64, 12, 21, 52,
-<a name="l11964"></a>11964 54, -72, -1, -64, -77, 9, 10, 52, 54, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -1, 76,
-<a name="l11965"></a>11965 6, -59, 3, 62, 2, 54, 3, -69, 0, 0, 1, 23, 5, 46, 3, -24, 0, 0, 0, 36, 64, 16, 3, 2, 0,
-<a name="l11966"></a>11966 55, 49, 18, 0, 65, 3, 2, 54, 64, 12, 21, 52, 54, -72, -1, -64, -77, 9, 10, 52, 54, 0, 47, 43, 43,
-<a name="l11967"></a>11967 53, 53, 1, 43, 53, 53, -1, -1, 0, 62, -1, 108, 8, -55, 5, -56, 2, 54, 3, -71, 0, 0, 1, 23, 5,
-<a name="l11968"></a>11968 47, 5, 120, 5, 60, 0, 35, 64, 22, 4, 3, 2, 0, 73, 67, 25, 0, 65, 4, 3, 2, 16, 72, 47, 72,
-<a name="l11969"></a>11969 96, 72, -128, 72, 4, 72, 0, 47, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, 62, -1, 108, 8,
-<a name="l11970"></a>11970 -55, 5, -56, 2, 54, 3, -71, 0, 0, 1, 23, 5, 47, 5, 120, 5, 60, 0, 35, 64, 22, 4, 3, 2, 0,
-<a name="l11971"></a>11971 73, 67, 25, 0, 65, 4, 3, 2, 16, 72, 47, 72, 96, 72, -128, 72, 4, 72, 0, 47, 93, 53, 53, 53, 1,
-<a name="l11972"></a>11972 43, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 6, -59, 5, -56, 2, 54, 3, -69, 0, 0, 1, 23, 5, 47,
-<a name="l11973"></a>11973 3, -24, 5, 60, 0, 41, 64, 13, 4, 3, 2, 0, 59, 53, 18, 0, 65, 4, 3, 2, 58, -72, -1, -64, 64,
-<a name="l11974"></a>11974 9, 13, 17, 52, 16, 58, 47, 58, 2, 58, 0, 47, 93, 43, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1,
-<a name="l11975"></a>11975 -1, -70, 1, 37, 6, -59, 5, -56, 2, 54, 3, -69, 0, 0, 1, 23, 5, 47, 3, -24, 5, 60, 0, 41, 64,
-<a name="l11976"></a>11976 13, 4, 3, 2, 0, 59, 53, 18, 0, 65, 4, 3, 2, 58, -72, -1, -64, 64, 9, 13, 17, 52, 16, 58, 47,
-<a name="l11977"></a>11977 58, 2, 58, 0, 47, 93, 43, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 4, -89, 6,
-<a name="l11978"></a>11978 89, 2, 54, 3, -63, 0, 0, 1, 23, 5, 47, 2, 88, 5, 60, 0, 49, 64, 16, 4, 3, 2, 0, 68, 1,
-<a name="l11979"></a>11979 -111, 68, 68, 33, 33, 65, 4, 3, 2, 67, -72, -1, -64, 64, 13, 13, 17, 52, 16, 67, 47, 67, -97, 67, -81,
-<a name="l11980"></a>11980 67, 4, 67, 0, 47, 93, 43, 53, 53, 53, 1, 43, 93, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 4, -89,
-<a name="l11981"></a>11981 6, 89, 2, 54, 3, -63, 0, 0, 1, 23, 5, 47, 2, 88, 5, 60, 0, 49, 64, 16, 4, 3, 2, 0, 68,
-<a name="l11982"></a>11982 1, -111, 68, 68, 33, 33, 65, 4, 3, 2, 67, -72, -1, -64, 64, 13, 13, 17, 52, 16, 67, 47, 67, -97, 67,
-<a name="l11983"></a>11983 -81, 67, 4, 67, 0, 47, 93, 43, 53, 53, 53, 1, 43, 93, 53, 53, 53, 0, -1, -1, 0, 42, -2, 78, 4,
-<a name="l11984"></a>11984 32, 6, -52, 2, 54, 3, -55, 0, 0, 1, 23, 5, 47, 0, 100, 6, 64, 0, 70, -77, 3, 2, 1, 66, -72,
-<a name="l11985"></a>11985 -1, -64, 64, 44, 30, 67, 52, -112, 66, -32, 66, 2, 0, 66, 60, 17, 25, 65, 3, 2, 1, 65, 64, 35, 91,
-<a name="l11986"></a>11986 52, 65, 64, 18, 22, 52, 95, 65, 111, 65, 127, 65, -97, 65, 4, 47, 65, 63, 65, 112, 65, 3, 65, 0, 47,
-<a name="l11987"></a>11987 93, 113, 43, 43, 53, 53, 53, 1, 43, 93, 43, 53, 53, 53, -1, -1, 0, 54, -2, 78, 3, -29, 5, -56, 2,
-<a name="l11988"></a>11988 54, 3, -54, 0, 0, 1, 23, 5, 47, 0, -96, 5, 60, 0, 50, 64, 27, 3, 2, 1, 0, 63, 57, 7, 27,
-<a name="l11989"></a>11989 65, 3, 2, 1, 31, 62, 1, 16, 62, 47, 62, -128, 62, -97, 62, -81, 62, 5, 62, -72, -1, -64, -77, 13, 17,
-<a name="l11990"></a>11990 52, 62, 0, 47, 43, 93, 114, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, -1, -70, 1, 37, 3, -61, 6, 44,
-<a name="l11991"></a>11991 2, 54, 3, -53, 0, 0, 1, 23, 5, 47, 0, 120, 5, -96, 0, 35, 64, 22, 3, 2, 1, 0, 40, 34, 10,
-<a name="l11992"></a>11992 17, 65, 3, 2, 1, 47, 39, 63, 39, 96, 39, -128, 39, 4, 39, 0, 47, 93, 53, 53, 53, 1, 43, 53, 53,
-<a name="l11993"></a>11993 53, 0, -1, -1, -1, -70, 1, 37, 3, 39, 5, -56, 2, 54, 3, -52, 0, 0, 1, 23, 5, 47, 0, 100, 5,
-<a name="l11994"></a>11994 60, 0, 52, 64, 13, 3, 2, 1, 0, 51, 45, 23, 32, 65, 3, 2, 1, 50, -72, -1, -128, -77, 15, 17, 52,
-<a name="l11995"></a>11995 50, -72, -1, -64, 64, 11, 13, 14, 52, 16, 50, 47, 50, -81, 50, 3, 50, 0, 47, 93, 43, 43, 53, 53, 53,
-<a name="l11996"></a>11996 1, 43, 53, 53, 53, 0, 2, 0, 39, 1, 37, 6, 79, 3, -46, 0, 31, 0, 42, 0, -118, 64, 23, 98, 17,
-<a name="l11997"></a>11997 1, 2, 80, 17, 1, 68, 17, 1, 54, 17, 1, 121, 5, 1, -119, 5, 1, 19, 19, 32, 23, -69, 2, -13, 0,
-<a name="l11998"></a>11998 39, 0, 32, 3, 16, -77, 64, 0, 44, 12, -72, 2, -5, 64, 12, 32, 33, 11, 1, 0, 11, 16, 11, 2, 11,
-<a name="l11999"></a>11999 11, 15, -72, 3, 3, 64, 10, 7, 112, 32, -128, 32, 2, 32, 32, 19, 36, 65, 11, 2, -17, 0, 27, 3, 4,
-<a name="l12000"></a>12000 0, 12, 0, 11, 3, 4, 0, 19, 2, -17, 0, 1, 2, -21, 1, 42, -123, 0, 63, -19, 63, 51, 63, -19, 17,
-<a name="l12001"></a>12001 57, 47, 93, 1, 47, -19, 50, 25, 47, 93, 93, 26, -19, 16, -48, 26, 24, -3, -34, -19, 18, 57, 47, 49, 48,
-<a name="l12002"></a>12002 0, 93, 1, 93, 93, 93, 93, 95, 93, 1, 33, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 23, 6, 6, 21,
-<a name="l12003"></a>12003 20, 4, 33, 33, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 39, 52, 39, 38, 35, 34, 6, 21, 20,
-<a name="l12004"></a>12004 23, 22, 6, 79, -4, 107, -45, -127, -102, 79, 86, 51, 37, 18, 40, 43, 28, 1, 32, 1, 58, 2, -31, 117, 55,
-<a name="l12005"></a>12005 63, 62, 70, 85, 99, 44, 37, 104, 19, 23, 47, 34, 33, 41, 30, 1, 37, 26, 31, 72, 78, -122, 89, 119, 81,
-<a name="l12006"></a>12006 40, 23, 87, 91, 37, -124, 126, 32, 42, 48, 71, 93, 106, 119, 117, 98, -75, 14, 87, 47, 56, 41, 37, 49, 25,
-<a name="l12007"></a>12007 18, 0, -1, -1, 0, 39, -1, -95, 6, 79, 3, -46, 2, 54, 5, -70, 0, 0, 1, 23, 5, 45, 4, -120, 0,
-<a name="l12008"></a>12008 0, 0, 53, -79, 2, 43, -72, -1, -64, -77, 17, 27, 52, 43, -72, -1, -64, -78, 9, 15, 52, -72, -1, -57, 64,
-<a name="l12009"></a>12009 12, 43, 43, 0, 0, 65, 2, 44, 64, 11, 21, 52, 44, -72, -1, -64, -77, 9, 10, 52, 44, 0, 47, 43, 43,
-<a name="l12010"></a>12010 53, 1, 43, 43, 43, 53, 0, -1, -1, 0, 39, -1, -95, 6, 79, 3, -46, 2, 54, 5, -70, 0, 0, 1, 23,
-<a name="l12011"></a>12011 5, 45, 4, -120, 0, 0, 0, 53, -79, 2, 43, -72, -1, -64, -77, 17, 27, 52, 43, -72, -1, -64, -78, 9, 15,
-<a name="l12012"></a>12012 52, -72, -1, -57, 64, 12, 43, 43, 0, 0, 65, 2, 44, 64, 11, 21, 52, 44, -72, -1, -64, -77, 9, 10, 52,
-<a name="l12013"></a>12013 44, 0, 47, 43, 43, 53, 1, 43, 43, 43, 53, 0, -1, -1, -1, -70, -1, -95, 2, 36, 4, 91, 2, 54, 5,
-<a name="l12014"></a>12014 42, 0, 0, 1, 22, 5, 45, 0, 0, 0, 32, 64, 14, 2, 0, 36, 34, 13, 0, 65, 2, 35, 64, 11, 21,
-<a name="l12015"></a>12015 52, 35, -72, -1, -64, -77, 9, 10, 52, 35, 0, 47, 43, 43, 53, 1, 43, 53, -1, -1, -1, -70, -1, -95, 2,
-<a name="l12016"></a>12016 26, 3, -13, 2, 54, 5, 43, 0, 0, 1, 22, 5, 45, 0, 0, 0, 32, 64, 14, 2, 20, 32, 30, 1, 0,
-<a name="l12017"></a>12017 65, 2, 31, 64, 11, 21, 52, 31, -72, -1, -64, -77, 9, 10, 52, 31, 0, 47, 43, 43, 53, 1, 43, 53, -1,
-<a name="l12018"></a>12018 -1, 0, 39, -1, -95, 6, 79, 5, 35, 2, 54, 5, -70, 0, 0, 0, 55, 5, 45, 2, 88, 0, 0, 1, 23,
-<a name="l12019"></a>12019 5, 45, 4, 76, 4, -100, 0, 51, 64, 28, 3, 0, 49, 47, 23, 0, 65, 2, 0, 45, 43, 7, 0, 65, 3,
-<a name="l12020"></a>12020 48, 64, 11, 18, 52, 48, 2, 44, 64, 11, 21, 52, 44, -72, -1, -64, -77, 9, 10, 52, 44, 0, 47, 43, 43,
-<a name="l12021"></a>12021 53, 47, 43, 53, 1, 43, 53, 43, 53, 0, -1, -1, 0, 39, -1, -95, 6, 79, 5, 35, 2, 54, 5, -70, 0,
-<a name="l12022"></a>12022 0, 0, 55, 5, 45, 2, 88, 0, 0, 1, 23, 5, 45, 4, 76, 4, -100, 0, 51, 64, 28, 3, 0, 49, 47,
-<a name="l12023"></a>12023 23, 0, 65, 2, 0, 45, 43, 7, 0, 65, 3, 48, 64, 11, 18, 52, 48, 2, 44, 64, 11, 21, 52, 44, -72,
-<a name="l12024"></a>12024 -1, -64, -77, 9, 10, 52, 44, 0, 47, 43, 43, 53, 47, 43, 53, 1, 43, 53, 43, 53, 0, -1, -1, -1, -70,
-<a name="l12025"></a>12025 -1, -95, 2, 36, 5, -121, 2, 54, 5, 42, 0, 0, 0, 54, 5, 45, 0, 0, 1, 23, 5, 45, -1, -60, 5,
-<a name="l12026"></a>12026 0, 0, 83, 64, 55, 3, 40, 64, 10, 17, 52, 0, 40, 40, 13, 13, 65, 2, 0, 36, 34, 13, 0, 65, 3,
-<a name="l12027"></a>12027 31, 39, -17, 39, 2, -113, 39, -97, 39, 2, 47, 39, -128, 39, -97, 39, 3, 39, 64, 18, 21, 52, 39, 64, 9,
-<a name="l12028"></a>12028 13, 52, 39, 2, 35, 64, 11, 21, 52, 35, -72, -1, -64, -77, 9, 10, 52, 35, 0, 47, 43, 43, 53, 47, 43,
-<a name="l12029"></a>12029 43, 93, 113, 114, 53, 1, 43, 53, 43, 43, 53, 0, -1, -1, -1, -70, -1, -95, 2, 26, 5, -121, 2, 54, 5,
-<a name="l12030"></a>12030 43, 0, 0, 0, 54, 5, 45, 0, 0, 1, 23, 5, 45, -1, -60, 5, 0, 0, 67, 64, 41, 3, 36, 64, 10,
-<a name="l12031"></a>12031 17, 52, 0, 36, 36, 10, 10, 65, 2, 0, 32, 30, 10, 0, 65, 3, -97, 35, 1, 35, 64, 18, 19, 52, 35,
-<a name="l12032"></a>12032 64, 11, 11, 52, 35, 2, 31, 64, 11, 21, 52, 31, -72, -1, -64, -77, 9, 10, 52, 31, 0, 47, 43, 43, 53,
-<a name="l12033"></a>12033 47, 43, 43, 93, 53, 1, 43, 53, 43, 43, 53, 0, -1, -1, 0, 39, 1, 37, 6, 79, 6, 44, 2, 54, 5,
-<a name="l12034"></a>12034 -70, 0, 0, 1, 23, 5, 47, 4, 76, 5, -96, 0, 40, -75, 4, 3, 2, -48, 53, 1, -72, -1, -91, 64, 16,
-<a name="l12035"></a>12035 53, 53, 23, 23, 65, 4, 3, 2, 63, 52, 96, 52, -128, 52, 3, 52, 0, 47, 93, 53, 53, 53, 1, 43, 93,
-<a name="l12036"></a>12036 53, 53, 53, -1, -1, 0, 39, 1, 37, 6, 79, 6, 44, 2, 54, 5, -70, 0, 0, 1, 23, 5, 47, 4, 76,
-<a name="l12037"></a>12037 5, -96, 0, 40, -75, 4, 3, 2, -48, 53, 1, -72, -1, -91, 64, 16, 53, 53, 23, 23, 65, 4, 3, 2, 63,
-<a name="l12038"></a>12038 52, 96, 52, -128, 52, 3, 52, 0, 47, 93, 53, 53, 53, 1, 43, 93, 53, 53, 53, -1, -1, -1, -70, 1, 37,
-<a name="l12039"></a>12039 2, 36, 6, -112, 2, 54, 5, 42, 0, 0, 1, 23, 5, 47, -1, -40, 6, 4, 0, 60, -77, 4, 3, 2, 44,
-<a name="l12040"></a>12040 -72, -1, -64, 64, 22, 10, 13, 52, 0, 44, 38, 1, 0, 65, 4, 3, 2, 15, 43, 47, 43, 80, 43, 96, 43,
-<a name="l12041"></a>12041 4, 43, -72, -1, -128, 64, 9, 16, 17, 52, 43, 64, 11, 12, 52, 43, 0, 47, 43, 43, 93, 53, 53, 53, 1,
-<a name="l12042"></a>12042 43, 43, 53, 53, 53, -1, -1, -1, -70, 1, 37, 2, 26, 6, -112, 2, 54, 5, 43, 0, 0, 1, 23, 5, 47,
-<a name="l12043"></a>12043 -1, -20, 6, 4, 0, 51, 64, 20, 4, 3, 2, 0, 40, 34, 1, 0, 65, 4, 3, 2, 16, 39, 47, 39, 64,
-<a name="l12044"></a>12044 39, 3, 39, -72, -1, -64, -77, 24, 30, 52, 39, -72, -1, -128, -77, 14, 17, 52, 39, 0, 47, 43, 43, 93, 53,
-<a name="l12045"></a>12045 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, 39, -2, -103, 6, -108, 3, -46, 2, 54, 5, -70, 0, 0, 1,
-<a name="l12046"></a>12046 23, 5, 48, 4, -80, 0, 0, 0, 49, -77, 4, 3, 2, 53, -72, -1, -64, 64, 18, 18, 19, 52, 0, 53, 43,
-<a name="l12047"></a>12047 23, 0, 65, 4, 3, 2, 48, 64, 12, 21, 52, 48, -72, -1, -64, -77, 9, 10, 52, 48, 0, 47, 43, 43, 53,
-<a name="l12048"></a>12048 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, 0, 39, -2, -103, 6, -108, 3, -46, 2, 54, 5, -70, 0, 0,
-<a name="l12049"></a>12049 1, 23, 5, 48, 4, -80, 0, 0, 0, 49, -77, 4, 3, 2, 53, -72, -1, -64, 64, 18, 18, 19, 52, 0, 53,
-<a name="l12050"></a>12050 43, 23, 0, 65, 4, 3, 2, 48, 64, 12, 21, 52, 48, -72, -1, -64, -77, 9, 10, 52, 48, 0, 47, 43, 43,
-<a name="l12051"></a>12051 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, -1, -1, -1, -70, -2, -103, 2, 36, 4, 91, 2, 54, 5, 42, 0,
-<a name="l12052"></a>12052 0, 1, 22, 5, 48, 40, 0, 0, 40, 64, 18, 4, 3, 2, 0, 44, 34, 1, 0, 65, 4, 3, 2, 39, 64,
-<a name="l12053"></a>12053 12, 21, 52, 39, -72, -1, -64, -77, 9, 10, 52, 39, 0, 47, 43, 43, 53, 53, 53, 1, 43, 53, 53, 53, -1,
-<a name="l12054"></a>12054 -1, -1, -70, -2, -103, 2, 26, 3, -13, 2, 54, 5, 43, 0, 0, 1, 22, 5, 48, 40, 0, 0, 40, 64, 18,
-<a name="l12055"></a>12055 4, 3, 2, 0, 40, 30, 1, 0, 65, 4, 3, 2, 35, 64, 12, 21, 52, 35, -72, -1, -64, -77, 9, 10, 52,
-<a name="l12056"></a>12056 35, 0, 47, 43, 43, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, 0, 39, 1, 37, 6, 79, 6, 104, 2, 54,
-<a name="l12057"></a>12057 5, -70, 0, 0, 1, 23, 5, 50, 4, 76, 5, -36, 0, 45, 64, 29, 5, 4, 3, 2, -112, 53, 1, 0, 53,
-<a name="l12058"></a>12058 47, 23, 0, 65, 5, 4, 3, 2, 31, 52, 64, 52, 96, 52, 112, 52, -97, 52, 5, 52, 0, 47, 93, 53, 53,
-<a name="l12059"></a>12059 53, 53, 1, 43, 93, 53, 53, 53, 53, 0, -1, -1, 0, 39, 1, 37, 6, 79, 6, 104, 2, 54, 5, -70, 0,
-<a name="l12060"></a>12060 0, 1, 23, 5, 50, 4, 76, 5, -36, 0, 45, 64, 29, 5, 4, 3, 2, -112, 53, 1, 0, 53, 47, 23, 0,
-<a name="l12061"></a>12061 65, 5, 4, 3, 2, 31, 52, 64, 52, 96, 52, 112, 52, -97, 52, 5, 52, 0, 47, 93, 53, 53, 53, 53, 1,
-<a name="l12062"></a>12062 43, 93, 53, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 2, 36, 6, -72, 2, 54, 5, 42, 0, 0, 1, 23,
-<a name="l12063"></a>12063 5, 50, -1, -40, 6, 44, 0, 82, -76, 5, 4, 3, 2, 44, -72, -1, -64, 64, 38, 10, 13, 52, 0, 44, 38,
-<a name="l12064"></a>12064 1, 0, 65, 5, 4, 3, 2, 31, 43, 47, 43, 95, 43, -17, 43, 4, -113, 43, 1, 15, 43, 47, 43, 80, 43,
-<a name="l12065"></a>12065 3, 43, 64, 18, 22, 52, 43, -72, -1, -128, 64, 9, 15, 17, 52, 43, 64, 9, 12, 52, 43, 0, 47, 43, 43,
-<a name="l12066"></a>12066 43, 93, 113, 114, 53, 53, 53, 53, 1, 43, 43, 53, 53, 53, 53, -1, -1, -1, -70, 1, 37, 2, 26, 6, -72,
-<a name="l12067"></a>12067 2, 54, 5, 43, 0, 0, 1, 23, 5, 50, -1, -40, 6, 44, 0, 63, -76, 5, 4, 3, 2, 40, -72, -1, -64,
-<a name="l12068"></a>12068 64, 29, 10, 13, 52, 0, 40, 34, 1, 0, 65, 5, 4, 3, 2, 15, 39, 47, 39, 64, 39, 96, 39, -97, 39,
-<a name="l12069"></a>12069 -81, 39, -16, 39, 7, 39, -72, -1, -128, -77, 14, 17, 52, 39, 0, 47, 43, 93, 53, 53, 53, 53, 1, 43, 43,
-<a name="l12070"></a>12070 53, 53, 53, 53, 0, -1, -1, 0, 70, -1, 103, 4, -89, 5, 5, 2, 54, 5, 44, 0, 0, 1, 23, 5, 45,
-<a name="l12071"></a>12071 2, 68, 4, 126, 0, 29, 64, 19, 2, 48, 59, 1, 30, 59, 59, 41, 41, 65, 2, 15, 60, 47, 60, 112, 60,
-<a name="l12072"></a>12072 3, 60, 0, 47, 93, 53, 1, 43, 93, 53, 0, -1, -1, 0, 70, -1, 103, 4, -89, 5, 5, 2, 54, 5, 44,
-<a name="l12073"></a>12073 0, 0, 1, 23, 5, 45, 2, 68, 4, 126, 0, 29, 64, 19, 2, 48, 59, 1, 30, 59, 59, 41, 41, 65, 2,
-<a name="l12074"></a>12074 15, 60, 47, 60, 112, 60, 3, 60, 0, 47, 93, 53, 1, 43, 93, 53, 0, -1, -1, 0, 70, -1, 103, 4, -89,
-<a name="l12075"></a>12075 5, -56, 2, 54, 5, 44, 0, 0, 1, 23, 5, 47, 2, 48, 5, 60, 0, 37, 64, 24, 4, 3, 2, 107, 63,
-<a name="l12076"></a>12076 63, 41, 41, 65, 4, 3, 2, 15, 68, 47, 68, 64, 68, 96, 68, 112, 68, 5, 68, 0, 47, 93, 53, 53, 53,
-<a name="l12077"></a>12077 1, 43, 53, 53, 53, 0, -1, -1, 0, 70, -1, 103, 4, -89, 5, -56, 2, 54, 5, 44, 0, 0, 1, 23, 5,
-<a name="l12078"></a>12078 47, 2, 48, 5, 60, 0, 37, 64, 24, 4, 3, 2, 107, 63, 63, 41, 41, 65, 4, 3, 2, 15, 68, 47, 68,
-<a name="l12079"></a>12079 64, 68, 96, 68, 112, 68, 5, 68, 0, 47, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, 0, 1, 0, 20, 1,
-<a name="l12080"></a>12080 37, 6, 127, 5, 99, 0, 43, 0, -116, -71, 0, 13, 3, 0, -77, 0, 45, 27, 33, -72, 2, -13, -78, 22, 8,
-<a name="l12081"></a>12081 10, -72, 3, 3, 64, 23, 7, 5, 11, 24, 1, 24, 27, 121, 15, 1, 26, 15, 42, 15, 58, 15, 3, 9, 15,
-<a name="l12082"></a>12082 1, 15, 12, 19, -72, 2, -17, 64, 27, -122, 41, 1, 26, 41, 42, 41, 58, 41, 3, 9, 41, 1, 41, 12, 31,
-<a name="l12083"></a>12083 -97, 37, -81, 37, -65, 37, 3, 37, 37, 12, 28, -72, 2, -17, 64, 10, 47, 27, -97, 27, 2, 27, 8, 7, 43,
-<a name="l12084"></a>12084 12, -70, 2, -17, 0, 1, 2, -21, 0, 63, -3, 50, -52, 50, 47, 93, -19, 17, 57, 47, 93, 57, 18, 57, 93,
-<a name="l12085"></a>12085 93, 93, -19, 17, 57, 93, 93, 93, 17, 57, 93, 1, 47, 51, -3, 50, -34, -3, -52, 16, -48, -19, 49, 48, 1,
-<a name="l12086"></a>12086 33, 34, 39, 38, 53, 52, 55, 23, 6, 21, 20, 33, 33, 38, 39, 38, 37, 36, 37, 38, 38, 53, 52, 55, 54,
-<a name="l12087"></a>12087 55, 55, 21, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 4, 23, 22, 23, 6, 127, -5, 85, -53, 94, -105,
-<a name="l12088"></a>12088 52, 37, 8, 1, 111, 4, 55, 37, 92, 65, -2, -45, -2, -2, -2, -1, 90, -124, 109, 117, -50, -33, -47, -124, 70,
-<a name="l12089"></a>12089 116, 68, 16, 79, -28, -28, 1, 106, 58, 124, 57, 1, 37, 37, 59, -87, 71, 107, 20, 34, 29, -70, 61, 39, 28,
-<a name="l12090"></a>12090 58, 50, 49, 18, 90, 47, 88, 103, 111, 82, 88, -83, 70, 44, 31, 51, 34, 42, 26, 6, 18, 43, 44, 70, 37,
-<a name="l12091"></a>12091 78, -111, 0, 1, 0, 20, 1, 37, 7, 118, 5, 99, 0, 52, 0, -89, -73, 24, 5, 5, 43, 0, 54, 37, 43,
-<a name="l12092"></a>12092 -72, 2, -13, -78, 32, 17, 19, -72, 3, 3, 64, 47, 16, 14, -124, 47, 1, 118, 47, 1, 25, 47, 57, 47, 2,
-<a name="l12093"></a>12093 47, 45, 51, 11, 34, 1, 34, 37, -118, 26, 1, 121, 26, 1, 106, 26, 1, 89, 26, 1, 75, 26, 1, 56, 26,
-<a name="l12094"></a>12094 1, 25, 26, 41, 26, 2, 26, 22, 28, -72, 2, -17, 64, 12, 41, -97, 45, -81, 45, -65, 45, 3, 45, 45, 22,
-<a name="l12095"></a>12095 38, -72, 2, -17, 64, 9, 47, 37, -97, 37, 2, 37, 17, 16, 22, -65, 2, -17, 0, 10, 2, -21, 0, 51, 2,
-<a name="l12096"></a>12096 -17, 0, 5, 0, 0, 2, -21, 0, 63, 50, -19, 63, -3, -50, 50, 47, 93, -19, 17, 57, 47, 93, 57, -19, 17,
-<a name="l12097"></a>12097 57, 93, 93, 93, 93, 93, 93, 93, 17, 57, 93, 17, 18, 57, 93, 93, 93, 1, 47, 51, -3, 50, -34, -3, -52,
-<a name="l12098"></a>12098 16, -64, 17, 57, 47, -51, 49, 48, 1, 35, 34, 39, 38, 39, 20, 7, 6, 35, 33, 34, 39, 38, 53, 52, 55,
-<a name="l12099"></a>12099 23, 6, 21, 20, 33, 33, 32, 53, 52, 39, 38, 37, 38, 39, 38, 53, 52, 55, 54, 55, 55, 21, 7, 6, 7,
-<a name="l12100"></a>12100 6, 21, 20, 23, 4, 23, 22, 23, 22, 51, 51, 7, 118, 123, 94, -113, 57, -76, -112, -128, 118, -2, 57, -53, 94,
-<a name="l12101"></a>12101 -105, 52, 37, 8, 1, 111, 1, -4, 1, 8, 104, -105, -2, 64, 91, 64, 67, 109, 118, -51, -33, -47, -124, 70, 116,
-<a name="l12102"></a>12102 -93, 2, 17, -107, 120, 121, -65, 63, -125, 1, 37, 78, 31, 117, 90, 72, 64, 37, 59, -87, 71, 107, 20, 34, 29,
-<a name="l12103"></a>12103 -70, 61, 41, 34, 49, 100, 20, 43, 45, 47, 88, 103, 112, 81, 88, -83, 70, 44, 31, 51, 34, 54, 38, 123, 66,
-<a name="l12104"></a>12104 64, 64, 100, 0, 1, -1, -70, 1, 37, 3, 39, 4, -24, 0, 29, 0, -117, -76, 88, 8, 1, 16, 3, -72, 3,
-<a name="l12105"></a>12105 0, -78, 0, 31, 21, -72, 2, -13, 64, 24, 10, 2, 60, 12, 1, 11, 12, 27, 12, 43, 12, 3, 12, 15, 57,
-<a name="l12106"></a>12106 5, 89, 5, 105, 5, 3, 5, 3, 7, -72, 2, -17, 64, 33, 117, 25, 1, 104, 25, 1, 25, 3, 57, 19, 1,
-<a name="l12107"></a>12107 19, -97, 23, -81, 23, -65, 23, 3, 61, 23, 1, 15, 23, 31, 23, 47, 23, 3, 23, 23, 3, 16, -72, 2, -17,
-<a name="l12108"></a>12108 -75, -97, 15, 1, 15, 29, 3, -69, 2, -17, 0, 1, 2, -21, 1, 42, -123, 0, 63, -19, 50, 47, 93, -19, 17,
-<a name="l12109"></a>12109 57, 47, 93, 93, 93, 57, 93, 18, 57, 93, 93, -19, 17, 57, 93, 17, 57, 93, 93, 1, 47, -42, -19, 16, -48,
-<a name="l12110"></a>12110 -19, -60, 49, 48, 0, 93, 1, 33, 53, 33, 38, 39, 38, 39, 38, 38, 53, 52, 55, 54, 55, 55, 21, 7, 6,
-<a name="l12111"></a>12111 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 3, 39, -4, -109, 2, -7, 35, 94, 37, -17, 90, -124, 109, 118,
-<a name="l12112"></a>12112 -51, -33, -47, -124, 70, 116, -93, -99, 112, 72, 55, 42, 14, 1, 37, -82, 58, 39, 15, 50, 19, 89, 47, 88, 103,
-<a name="l12113"></a>12113 112, 81, 88, -83, 70, 44, 31, 51, 34, 59, 33, 31, 47, 30, 75, 58, 53, 0, 0, 1, -1, -70, 1, 37, 4,
-<a name="l12114"></a>12114 30, 4, -24, 0, 39, 0, -106, 64, 14, 89, 17, 1, 40, 2, 1, 12, 3, 3, 30, 25, 0, 41, 30, -72, 2,
-<a name="l12115"></a>12115 -13, 64, 29, 19, 9, -128, 34, 1, 116, 34, 1, 53, 34, 1, 36, 34, 1, 34, 32, 38, 11, 21, 43, 21, 59,
-<a name="l12116"></a>12116 21, 3, 21, 24, 14, 10, 16, -72, 2, -17, 64, 23, 28, -66, 32, 1, -97, 32, -81, 32, 2, 62, 32, 1, 15,
-<a name="l12117"></a>12117 32, 31, 32, 47, 32, 3, 32, 32, 10, 25, -72, 2, -17, -76, -97, 24, 1, 24, 10, -65, 2, -17, 0, 8, 2,
-<a name="l12118"></a>12118 -21, 0, 38, 2, -17, 0, 3, 0, 0, 2, -21, 0, 63, 50, -19, 63, -19, 47, 93, -19, 17, 57, 47, 93, 93,
-<a name="l12119"></a>12119 93, 93, 57, -19, 17, 57, 17, 57, 93, 17, 18, 57, 93, 93, 93, 93, 1, 47, -42, -19, 16, -48, -60, 18, 57,
-<a name="l12120"></a>12120 47, -51, 49, 48, 0, 93, 93, 1, 35, 34, 39, 20, 7, 6, 35, 33, 53, 33, 50, 53, 52, 39, 38, 39, 38,
-<a name="l12121"></a>12121 38, 53, 52, 55, 54, 55, 55, 21, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 51, 51, 4, 30, 122,
-<a name="l12122"></a>12122 117, -104, 113, 90, 102, -2, 84, 1, -70, -15, 81, 51, -61, 90, -124, 109, 118, -51, -33, -47, -124, 70, 116, -93, -71,
-<a name="l12123"></a>12123 84, 48, 107, 88, 57, -126, 1, 37, -62, 96, 55, 43, -82, 49, 30, 26, 16, 41, 19, 89, 47, 88, 103, 112, 81,
-<a name="l12124"></a>12124 88, -83, 70, 44, 31, 51, 34, 59, 33, 37, 41, 23, 106, 87, 0, -1, -1, 0, 20, 1, 37, 6, 127, 5, -33,
-<a name="l12125"></a>12125 2, 54, 3, 45, 0, 0, 1, 23, 2, -8, 4, -50, -1, 60, 0, 60, 64, 37, 2, 1, -81, 45, -65, 45, -49,
-<a name="l12126"></a>12126 45, 3, 45, 64, 12, 15, 52, 0, 45, 45, 13, 13, 65, 2, 1, 47, 48, 63, 48, -81, 48, 3, 16, 48, 32,
-<a name="l12127"></a>12127 48, -64, 48, 3, 48, -72, -1, -64, -77, 9, 10, 52, 48, 0, 47, 43, 93, 113, 53, 53, 1, 43, 43, 93, 53,
-<a name="l12128"></a>12128 53, -1, -1, 0, 20, 1, 37, 7, 118, 5, -33, 2, 54, 3, 46, 0, 0, 1, 23, 2, -8, 4, -50, -1, 60,
-<a name="l12129"></a>12129 0, 60, 64, 37, 2, 1, 32, 70, -81, 70, -65, 70, -49, 70, 4, 70, 64, 12, 14, 52, 0, 70, 70, 35, 35,
-<a name="l12130"></a>12130 65, 2, 1, 47, 73, 63, 73, -81, 73, 3, 96, 73, -64, 73, 2, 73, -72, -1, -64, -77, 9, 11, 52, 73, 0,
-<a name="l12131"></a>12131 47, 43, 93, 113, 53, 53, 1, 43, 43, 93, 53, 53, -1, -1, -1, -70, 1, 37, 3, 39, 5, -33, 2, 54, 3,
-<a name="l12132"></a>12132 47, 0, 0, 1, 23, 2, -8, 1, 124, -1, 60, 0, 56, 64, 33, 2, 1, -65, 30, -49, 30, 2, 30, 64, 12,
-<a name="l12133"></a>12133 15, 52, 0, 30, 30, 15, 15, 65, 2, 1, 47, 33, 63, 33, -81, 33, 3, 96, 33, -64, 33, 2, 33, -72, -1,
-<a name="l12134"></a>12134 -64, -77, 9, 11, 52, 33, 0, 47, 43, 93, 113, 53, 53, 1, 43, 43, 93, 53, 53, -1, -1, -1, -70, 1, 37,
-<a name="l12135"></a>12135 4, 30, 5, -33, 2, 54, 3, 48, 0, 0, 1, 23, 2, -8, 1, 124, -1, 60, 0, 58, 64, 35, 2, 1, -81,
-<a name="l12136"></a>12136 55, -65, 55, -49, 55, 3, 55, 64, 12, 14, 52, 0, 55, 55, 39, 39, 65, 2, 1, 47, 58, 63, 58, -81, 58,
-<a name="l12137"></a>12137 3, 96, 58, -64, 58, 2, 58, -72, -1, -64, -77, 9, 11, 52, 58, 0, 47, 43, 93, 113, 53, 53, 1, 43, 43,
-<a name="l12138"></a>12138 93, 53, 53, -1, -1, 0, 45, 1, 37, 4, -49, 6, 51, 2, 54, 3, -39, 0, 0, 1, 23, 5, 45, 1, 104,
-<a name="l12139"></a>12139 5, -84, 0, 73, -76, 2, 16, 74, 1, 74, -72, -1, -64, -78, 11, 14, 52, -72, -1, -59, 64, 42, 74, 74, 27,
-<a name="l12140"></a>12140 27, 65, 0, 26, 0, 27, 16, 26, 16, 27, 4, 2, 15, 75, 127, 75, -81, 75, -65, 75, -17, 75, 5, 75, 64,
-<a name="l12141"></a>12141 33, 47, 52, 75, 64, 11, 13, 52, 75, 64, 11, 17, 52, 75, 0, 47, 43, 43, 43, 93, 53, 93, 1, 43, 43,
-<a name="l12142"></a>12142 113, 53, 0, -1, -1, 0, 45, 1, 37, 4, -49, 6, 51, 2, 54, 3, -39, 0, 0, 1, 23, 5, 45, 1, 104,
-<a name="l12143"></a>12143 5, -84, 0, 73, -76, 2, 16, 74, 1, 74, -72, -1, -64, -78, 11, 14, 52, -72, -1, -59, 64, 42, 74, 74, 27,
-<a name="l12144"></a>12144 27, 65, 0, 26, 0, 27, 16, 26, 16, 27, 4, 2, 15, 75, 127, 75, -81, 75, -65, 75, -17, 75, 5, 75, 64,
-<a name="l12145"></a>12145 33, 47, 52, 75, 64, 11, 13, 52, 75, 64, 11, 17, 52, 75, 0, 47, 43, 43, 43, 93, 53, 93, 1, 43, 43,
-<a name="l12146"></a>12146 113, 53, 0, -1, -1, -1, -70, 1, 37, 3, 39, 6, -65, 2, 54, 3, 47, 0, 0, 1, 23, 5, 45, 0, 80,
-<a name="l12147"></a>12147 6, 56, 0, 59, -73, 1, -32, 30, 1, 16, 30, 1, 30, -72, -1, -64, -77, 31, 35, 52, 30, -72, -1, -64, 64,
-<a name="l12148"></a>12148 25, 9, 15, 52, 50, 30, 30, 14, 14, 65, 1, 16, 31, 63, 31, 79, 31, 127, 31, 4, 31, 64, 54, 62, 52,
-<a name="l12149"></a>12149 31, 0, 47, 43, 93, 53, 1, 43, 43, 43, 93, 113, 53, 0, -1, -1, -1, -70, 1, 37, 3, 39, 6, -65, 2,
-<a name="l12150"></a>12150 54, 3, 47, 0, 0, 1, 23, 5, 45, 0, 80, 6, 56, 0, 59, -73, 1, -32, 30, 1, 16, 30, 1, 30, -72,
-<a name="l12151"></a>12151 -1, -64, -77, 31, 35, 52, 30, -72, -1, -64, 64, 25, 9, 15, 52, 50, 30, 30, 14, 14, 65, 1, 16, 31, 63,
-<a name="l12152"></a>12152 31, 79, 31, 127, 31, 4, 31, 64, 54, 62, 52, 31, 0, 47, 43, 93, 53, 1, 43, 43, 43, 93, 113, 53, 0,
-<a name="l12153"></a>12153 -1, -1, 0, 45, 1, 37, 4, -49, 7, 8, 2, 54, 3, -39, 0, 0, 1, 23, 5, 47, 1, 104, 6, 124, 0,
-<a name="l12154"></a>12154 92, 64, 10, 4, 3, 2, -32, 84, 1, 111, 84, 1, 84, -72, -1, -64, 64, 25, 9, 19, 52, 0, 84, 78, 51,
-<a name="l12155"></a>12155 61, 65, 0, 26, 0, 27, 16, 26, 16, 27, 4, 4, 3, 2, -81, 83, 1, 83, -72, -1, -64, 64, 16, 23, 39,
-<a name="l12156"></a>12156 52, 83, 64, 61, 62, 52, 83, 64, 11, 16, 52, 83, 0, 3, -72, -1, -64, -77, 23, 45, 52, 3, 0, 47, 43,
-<a name="l12157"></a>12157 53, 47, 43, 43, 43, 113, 53, 53, 53, 93, 1, 43, 43, 93, 113, 53, 53, 53, -1, -1, 0, 45, 1, 37, 4,
-<a name="l12158"></a>12158 -49, 7, 8, 2, 54, 3, -39, 0, 0, 1, 23, 5, 47, 1, 104, 6, 124, 0, 92, 64, 10, 4, 3, 2, -32,
-<a name="l12159"></a>12159 84, 1, 111, 84, 1, 84, -72, -1, -64, 64, 25, 9, 19, 52, 0, 84, 78, 51, 61, 65, 0, 26, 0, 27, 16,
-<a name="l12160"></a>12160 26, 16, 27, 4, 4, 3, 2, -81, 83, 1, 83, -72, -1, -64, 64, 16, 23, 39, 52, 83, 64, 61, 62, 52, 83,
-<a name="l12161"></a>12161 64, 11, 16, 52, 83, 0, 3, -72, -1, -64, -77, 23, 45, 52, 3, 0, 47, 43, 53, 47, 43, 43, 43, 113, 53,
-<a name="l12162"></a>12162 53, 53, 93, 1, 43, 43, 93, 113, 53, 53, 53, -1, -1, -1, -70, 1, 37, 3, 39, 6, -47, 2, 54, 3, 47,
-<a name="l12163"></a>12163 0, 0, 1, 23, 6, 110, 0, 40, 6, -7, 0, 39, 64, 25, 3, 2, 1, -17, 40, 1, 0, 40, 40, 10, 10,
-<a name="l12164"></a>12164 65, 3, 2, 1, 63, 39, 79, 39, -128, 39, -65, 39, 4, 39, 0, 47, 93, 53, 53, 53, 1, 43, 93, 53, 53,
-<a name="l12165"></a>12165 53, 0, -1, -1, -1, -70, 1, 37, 3, 39, 6, -47, 2, 54, 3, 47, 0, 0, 1, 23, 6, 110, 0, 40, 6,
-<a name="l12166"></a>12166 -7, 0, 39, 64, 25, 3, 2, 1, -17, 40, 1, 0, 40, 40, 10, 10, 65, 3, 2, 1, 63, 39, 79, 39, -128,
-<a name="l12167"></a>12167 39, -65, 39, 4, 39, 0, 47, 93, 53, 53, 53, 1, 43, 93, 53, 53, 53, 0, -1, -1, 0, 45, -2, -103, 4,
-<a name="l12168"></a>12168 -49, 6, 51, 2, 54, 3, -39, 0, 0, 1, 23, 5, 48, 1, -112, 0, 0, 0, 40, 64, 18, 4, 3, 2, 0,
-<a name="l12169"></a>12169 84, 78, 46, 41, 65, 4, 3, 2, 79, 64, 12, 19, 52, 79, -72, -1, -64, -77, 9, 10, 52, 79, 0, 47, 43,
-<a name="l12170"></a>12170 43, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, 0, 45, -2, -103, 4, -49, 6, 51, 2, 54, 3, -39, 0, 0,
-<a name="l12171"></a>12171 1, 23, 5, 48, 1, -112, 0, 0, 0, 40, 64, 18, 4, 3, 2, 0, 84, 78, 46, 41, 65, 4, 3, 2, 79,
-<a name="l12172"></a>12172 64, 12, 19, 52, 79, -72, -1, -64, -77, 9, 10, 52, 79, 0, 47, 43, 43, 53, 53, 53, 1, 43, 53, 53, 53,
-<a name="l12173"></a>12173 -1, -1, -1, -70, -2, -103, 3, 39, 5, -33, 2, 54, 3, 47, 0, 0, 1, 23, 5, 48, 0, -116, 0, 0, 0,
-<a name="l12174"></a>12174 40, 64, 18, 3, 2, 1, 0, 40, 30, 1, 0, 65, 3, 2, 1, 35, 64, 12, 19, 52, 35, -72, -1, -64, -77,
-<a name="l12175"></a>12175 9, 10, 52, 35, 0, 47, 43, 43, 53, 53, 53, 1, 43, 53, 53, 53, -1, -1, -1, -70, -2, -103, 3, 39, 5,
-<a name="l12176"></a>12176 -33, 2, 54, 3, 47, 0, 0, 1, 23, 5, 48, 0, -116, 0, 0, 0, 40, 64, 18, 3, 2, 1, 0, 40, 30,
-<a name="l12177"></a>12177 1, 0, 65, 3, 2, 1, 35, 64, 12, 19, 52, 35, -72, -1, -64, -77, 9, 10, 52, 35, 0, 47, 43, 43, 53,
-<a name="l12178"></a>12178 53, 53, 1, 43, 53, 53, 53, -1, -1, 0, 20, 1, 37, 6, 127, 6, -16, 2, 54, 3, 49, 0, 0, 1, 23,
-<a name="l12179"></a>12179 2, -8, 4, -50, -1, 60, 0, 60, 64, 37, 3, 2, -81, 56, -65, 56, -49, 56, 3, 56, 64, 12, 15, 52, 0,
-<a name="l12180"></a>12180 56, 56, 13, 13, 65, 3, 2, 47, 59, 63, 59, -81, 59, 3, 16, 59, 32, 59, -64, 59, 3, 59, -72, -1, -64,
-<a name="l12181"></a>12181 -77, 9, 10, 52, 59, 0, 47, 43, 93, 113, 53, 53, 1, 43, 43, 93, 53, 53, -1, -1, 0, 20, 1, 37, 7,
-<a name="l12182"></a>12182 118, 6, -16, 2, 54, 3, 50, 0, 0, 1, 23, 2, -8, 4, -50, -1, 60, 0, 60, 64, 37, 3, 2, 32, 81,
-<a name="l12183"></a>12183 -81, 81, -65, 81, -49, 81, 4, 81, 64, 12, 14, 52, 0, 81, 81, 35, 35, 65, 3, 2, 47, 84, 63, 84, -81,
-<a name="l12184"></a>12184 84, 3, 96, 84, -64, 84, 2, 84, -72, -1, -64, -77, 9, 11, 52, 84, 0, 47, 43, 93, 113, 53, 53, 1, 43,
-<a name="l12185"></a>12185 43, 93, 53, 53, -1, -1, -1, -70, 1, 37, 3, 39, 7, 2, 2, 54, 3, 51, 0, 0, 1, 23, 2, -8, 1,
-<a name="l12186"></a>12186 124, -1, 60, 0, 56, 64, 33, 3, 2, -65, 41, -49, 41, 2, 41, 64, 12, 15, 52, 0, 41, 41, 15, 15, 65,
-<a name="l12187"></a>12187 3, 2, 47, 44, 63, 44, -81, 44, 3, 96, 44, -64, 44, 2, 44, -72, -1, -64, -77, 9, 11, 52, 44, 0, 47,
-<a name="l12188"></a>12188 43, 93, 113, 53, 53, 1, 43, 43, 93, 53, 53, -1, -1, -1, -70, 1, 37, 4, 30, 7, 2, 2, 54, 3, 52,
-<a name="l12189"></a>12189 0, 0, 1, 23, 2, -8, 1, 124, -1, 60, 0, 58, 64, 35, 3, 2, -81, 66, -65, 66, -49, 66, 3, 66, 64,
-<a name="l12190"></a>12190 12, 14, 52, 0, 66, 66, 40, 40, 65, 3, 2, 47, 69, 63, 69, -81, 69, 3, 96, 69, -64, 69, 2, 69, -72,
-<a name="l12191"></a>12191 -1, -64, -77, 9, 11, 52, 69, 0, 47, 43, 93, 113, 53, 53, 1, 43, 43, 93, 53, 53, -1, -1, 0, 20, 1,
-<a name="l12192"></a>12192 37, 6, 127, 7, 33, 2, 54, 3, 49, 0, 0, 1, 23, 6, 109, 3, 112, 6, -67, 0, 110, 64, 9, 3, 2,
-<a name="l12193"></a>12193 16, 62, 1, -96, 62, 1, 62, -72, -1, -64, -77, 49, 92, 52, 62, -72, -1, -64, -77, 18, 21, 52, 62, -72, -1,
-<a name="l12194"></a>12194 -64, 64, 19, 9, 16, 52, 0, 62, 62, 7, 7, 65, 7, 49, -25, 54, -9, 54, 3, 3, 2, 61, -72, -1, -64,
-<a name="l12195"></a>12195 64, 25, 60, -1, 52, -96, 61, -80, 61, -64, 61, 3, 95, 61, 111, 61, 2, 0, 61, 80, 61, 96, 61, 3, 61,
-<a name="l12196"></a>12196 1, 46, -72, -1, -64, -77, 60, -1, 52, 46, 0, 47, 43, 53, 47, 93, 113, 114, 43, 53, 53, 93, 1, 43, 43,
-<a name="l12197"></a>12197 43, 43, 113, 114, 53, 53, -1, -1, 0, 20, 1, 37, 7, 118, 7, 33, 2, 54, 3, 50, 0, 0, 1, 23, 6,
-<a name="l12198"></a>12198 109, 3, 112, 6, -67, 0, 103, -78, 3, 2, 87, -72, -1, -64, 64, 36, 49, 92, 52, 16, 87, -64, 87, 2, 79,
-<a name="l12199"></a>12199 87, 1, 32, 87, 64, 87, -81, 87, -32, 87, 4, 0, 87, 81, 29, 29, 65, 7, 74, -25, 79, -9, 79, 3, 3,
-<a name="l12200"></a>12200 2, 86, -72, -1, -64, 64, 25, 60, -1, 52, -96, 86, -80, 86, -64, 86, 3, 95, 86, 111, 86, 2, 0, 86, 80,
-<a name="l12201"></a>12201 86, 96, 86, 3, 86, 1, 71, -72, -1, -64, -77, 60, -1, 52, 71, 0, 47, 43, 53, 47, 93, 113, 114, 43, 53,
-<a name="l12202"></a>12202 53, 93, 1, 43, 93, 113, 114, 43, 53, 53, 0, -1, -1, -1, -70, 1, 37, 3, 39, 7, 33, 2, 54, 3, 51,
-<a name="l12203"></a>12203 0, 0, 1, 23, 6, 109, 0, 0, 6, -67, 0, -122, -78, 3, 2, 47, -72, -1, -128, 64, 21, 60, -1, 52, 16,
-<a name="l12204"></a>12204 47, 1, -96, 47, 1, 0, 47, 80, 47, 96, 47, -80, 47, -64, 47, 5, 47, -72, -1, -64, -77, 27, 29, 52, 47,
-<a name="l12205"></a>12205 -72, -1, -64, 64, 26, 37, 39, 52, 0, 47, 47, 10, 10, 65, -26, 38, -25, 39, -10, 38, -9, 39, 4, 3, 63,
-<a name="l12206"></a>12206 46, 79, 46, 2, 2, 46, -72, -1, -64, 64, 25, 60, -1, 52, -96, 46, -80, 46, -64, 46, 3, 95, 46, 111, 46,
-<a name="l12207"></a>12207 2, 0, 46, 80, 46, 96, 46, 3, 46, 1, 31, -72, -1, -64, -74, 42, -1, 52, 116, 31, 1, 31, 0, 47, 93,
-<a name="l12208"></a>12208 43, 53, 47, 93, 113, 114, 43, 53, 93, 53, 93, 1, 43, 43, 43, 93, 113, 114, 43, 53, 53, -1, -1, -1, -70,
-<a name="l12209"></a>12209 1, 37, 4, 30, 7, 33, 2, 54, 3, 52, 0, 0, 1, 23, 6, 109, 0, 0, 6, -67, 0, -120, -78, 3, 2,
-<a name="l12210"></a>12210 72, -72, -1, -128, -77, 60, -1, 52, 72, -72, -1, -64, 64, 19, 27, 30, 52, 16, 72, 1, -96, 72, 1, 0, 72,
-<a name="l12211"></a>12211 80, 72, -80, 72, -64, 72, 4, 72, -72, -1, -64, 64, 30, 37, 39, 52, 0, 72, 72, 34, 34, 65, 123, 55, 122,
-<a name="l12212"></a>12212 56, -26, 63, -25, 64, -10, 63, -9, 64, 6, 3, 63, 71, 79, 71, 2, 2, 71, -72, -1, -64, 64, 25, 60, -1,
-<a name="l12213"></a>12213 52, -96, 71, -80, 71, -64, 71, 3, 95, 71, 111, 71, 2, 0, 71, 80, 71, 96, 71, 3, 71, 1, 56, -72, -1,
-<a name="l12214"></a>12214 -64, -74, 42, -1, 52, 116, 56, 1, 56, 0, 47, 93, 43, 53, 47, 93, 113, 114, 43, 53, 93, 53, 93, 1, 43,
-<a name="l12215"></a>12215 43, 93, 113, 114, 43, 43, 53, 53, -1, -1, 0, 20, -1, 76, 6, 127, 6, -16, 2, 54, 3, 49, 0, 0, 1,
-<a name="l12216"></a>12216 23, 5, 46, 2, -108, 0, 0, 0, 36, 64, 16, 3, 2, 0, 62, 56, 32, 27, 65, 3, 2, 61, 64, 12, 21,
-<a name="l12217"></a>12217 52, 61, -72, -1, -64, -77, 9, 10, 52, 61, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, 0, 20, -1,
-<a name="l12218"></a>12218 76, 7, 118, 6, -16, 2, 54, 3, 50, 0, 0, 1, 23, 5, 46, 1, -92, 0, 0, 0, 36, 64, 16, 3, 2,
-<a name="l12219"></a>12219 0, 87, 81, 4, 65, 65, 3, 2, 86, 64, 12, 21, 52, 86, -72, -1, -64, -77, 9, 10, 52, 86, 0, 47, 43,
-<a name="l12220"></a>12220 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -1, 76, 3, 39, 7, 2, 2, 54, 3, 51, 0, 0, 1, 23,
-<a name="l12221"></a>12221 5, 46, 0, -96, 0, 0, 0, 36, 64, 16, 3, 2, 0, 47, 41, 1, 0, 65, 3, 2, 46, 64, 12, 21, 52,
-<a name="l12222"></a>12222 46, -72, -1, -64, -77, 9, 10, 52, 46, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -1, 76,
-<a name="l12223"></a>12223 4, 30, 7, 2, 2, 54, 3, 52, 0, 0, 1, 22, 5, 46, 20, 0, 0, 36, 64, 16, 3, 2, 0, 72, 66,
-<a name="l12224"></a>12224 21, 15, 65, 3, 2, 71, 64, 12, 21, 52, 71, -72, -1, -64, -77, 9, 10, 52, 71, 0, 47, 43, 43, 53, 53,
-<a name="l12225"></a>12225 1, 43, 53, 53, -1, -1, 0, 20, -2, -84, 6, 127, 6, -16, 2, 54, 3, 49, 0, 0, 1, 23, 5, 49, 2,
-<a name="l12226"></a>12226 -108, 0, 0, 0, 36, 64, 16, 3, 2, 0, 62, 56, 32, 27, 65, 3, 2, 61, 64, 12, 21, 52, 61, -72, -1,
-<a name="l12227"></a>12227 -64, -77, 9, 10, 52, 61, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, 0, 20, -2, -84, 7, 118, 6,
-<a name="l12228"></a>12228 -16, 2, 54, 3, 50, 0, 0, 1, 23, 5, 49, 1, -52, 0, 0, 0, 36, 64, 16, 3, 2, 0, 87, 81, 4,
-<a name="l12229"></a>12229 65, 65, 3, 2, 86, 64, 12, 21, 52, 86, -72, -1, -64, -77, 9, 10, 52, 86, 0, 47, 43, 43, 53, 53, 1,
-<a name="l12230"></a>12230 43, 53, 53, -1, -1, -1, -70, -2, -84, 3, 39, 7, 2, 2, 54, 3, 51, 0, 0, 1, 23, 5, 49, 0, -96,
-<a name="l12231"></a>12231 0, 0, 0, 36, 64, 16, 3, 2, 0, 47, 41, 1, 0, 65, 3, 2, 46, 64, 12, 21, 52, 46, -72, -1, -64,
-<a name="l12232"></a>12232 -77, 9, 10, 52, 46, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -2, -84, 4, 30, 7, 2,
-<a name="l12233"></a>12233 2, 54, 3, 52, 0, 0, 1, 22, 5, 49, 0, 0, 0, 36, 64, 16, 3, 2, 0, 72, 66, 21, 15, 65, 3,
-<a name="l12234"></a>12234 2, 71, 64, 12, 21, 52, 71, -72, -1, -64, -77, 9, 10, 52, 71, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53,
-<a name="l12235"></a>12235 -1, -1, 0, 20, 1, 37, 6, 127, 7, 33, 2, 54, 3, 49, 0, 0, 1, 23, 6, 110, 3, 72, 7, 73, 0,
-<a name="l12236"></a>12236 -55, -77, 4, 3, 2, 66, -72, -1, -128, -77, 55, -1, 52, 66, -72, -1, -64, -77, 50, 54, 52, 66, -72, -1, -64,
-<a name="l12237"></a>12237 -77, 38, 43, 52, 66, -72, -1, -64, -77, 33, 36, 52, 66, -72, -1, -64, -77, 18, 20, 52, 66, -72, -1, -64, 64,
-<a name="l12238"></a>12238 16, 13, 15, 52, 0, 66, 1, 0, 66, 1, 0, 66, 66, 7, 7, 65, 54, -72, -1, -24, 64, 22, 18, 28, 52,
-<a name="l12239"></a>12239 7, 49, 119, 52, 2, 4, 3, 2, -33, 65, 1, 95, 65, 111, 65, -32, 65, 3, 65, -72, -1, -64, 64, 9, 14,
-<a name="l12240"></a>12240 16, 52, 65, 64, 18, 22, 52, 65, -72, -1, -64, -77, 24, 28, 52, 65, -72, -1, -64, -77, 60, 61, 52, 65, -72,
-<a name="l12241"></a>12241 -1, -64, 64, 10, 70, -1, 52, 65, 64, 73, 53, 65, 1, 46, -72, -1, -128, -77, 100, -1, 52, 46, -72, -1, -64,
-<a name="l12242"></a>12242 -77, 49, 99, 52, 46, -72, -1, -32, -73, 30, 48, 52, 118, 46, 1, 0, 46, 0, 47, 53, 93, 43, 43, 43, 53,
-<a name="l12243"></a>12243 47, 43, 43, 43, 43, 43, 43, 113, 114, 53, 53, 53, 93, 43, 1, 43, 93, 113, 43, 43, 43, 43, 43, 43, 53,
-<a name="l12244"></a>12244 53, 53, 0, -1, -1, 0, 20, 1, 37, 7, 118, 7, 33, 2, 54, 3, 50, 0, 0, 1, 23, 6, 110, 3, 72,
-<a name="l12245"></a>12245 7, 73, 0, -46, -77, 4, 3, 2, 91, -72, -1, -128, -77, 55, -1, 52, 91, -72, -1, -64, -78, 61, 53, 91, -72,
-<a name="l12246"></a>12246 -1, -64, -77, 50, 54, 52, 91, -72, -1, -64, -77, 38, 45, 52, 91, -72, -1, -64, -77, 33, 36, 52, 91, -72, -1,
-<a name="l12247"></a>12247 -64, 64, 22, 18, 20, 52, 0, 91, 96, 91, 2, 0, 91, 64, 91, 80, 91, 3, 0, 91, 91, 29, 29, 65, 79,
-<a name="l12248"></a>12248 -72, -1, -24, 64, 29, 18, 28, 52, 8, 73, 1, 7, 74, 100, 77, 116, 77, -73, 79, 4, 4, 3, 2, -33, 90,
-<a name="l12249"></a>12249 1, 95, 90, 111, 90, -32, 90, 3, 90, -72, -1, -64, 64, 9, 14, 16, 52, 90, 64, 18, 22, 52, 90, -72, -1,
-<a name="l12250"></a>12250 -64, -77, 24, 28, 52, 90, -72, -1, -64, -77, 60, 61, 52, 90, -72, -1, -64, 64, 10, 70, -1, 52, 90, 64, 73,
-<a name="l12251"></a>12251 53, 90, 1, 71, -72, -1, -128, -77, 100, -1, 52, 71, -72, -1, -64, -77, 49, 99, 52, 71, -72, -1, -32, -76, 30,
-<a name="l12252"></a>12252 48, 52, 0, 71, 0, 47, 53, 43, 43, 43, 53, 47, 43, 43, 43, 43, 43, 43, 113, 114, 53, 53, 53, 93, 113,
-<a name="l12253"></a>12253 43, 1, 43, 93, 113, 43, 43, 43, 43, 43, 43, 53, 53, 53, -1, -1, -1, -70, 1, 37, 3, 39, 7, 33, 2,
-<a name="l12254"></a>12254 54, 3, 51, 0, 0, 1, 23, 6, 110, -1, -15, 7, 73, 0, -5, -77, 4, 3, 2, 51, -72, -1, -128, -77, 58,
-<a name="l12255"></a>12255 -1, 52, 51, -72, -1, -64, -77, 61, 62, 52, 51, -72, -1, -64, -77, 39, 57, 52, 51, -72, -1, -64, -77, 33, 36,
-<a name="l12256"></a>12256 52, 51, -72, -1, -64, 64, 17, 18, 20, 52, 0, 51, 80, 51, 96, 51, 3, 0, 51, 51, 10, 10, 65, 40, -72,
-<a name="l12257"></a>12257 -1, -48, -77, 55, -1, 52, 39, -72, -1, -48, -77, 55, -1, 52, 38, -72, -1, -48, -77, 55, -1, 52, 39, -72, -1,
-<a name="l12258"></a>12258 -8, -77, 29, 39, 52, 39, -72, -1, -32, 64, 38, 18, 28, 52, 20, 39, 36, 39, 2, 25, 34, 1, 6, 34, 115,
-<a name="l12259"></a>12259 35, 115, 36, 115, 37, -26, 38, -10, 38, 6, 4, 3, 2, -33, 50, 1, 95, 50, 111, 50, -32, 50, 3, 50, -72,
-<a name="l12260"></a>12260 -1, -64, 64, 9, 14, 16, 52, 50, 64, 18, 22, 52, 50, -72, -1, -64, -77, 24, 28, 52, 50, -72, -1, -64, -77,
-<a name="l12261"></a>12261 60, 61, 52, 50, -72, -1, -64, 64, 10, 70, -1, 52, 50, 64, 73, 53, 50, 1, 31, -72, -1, -128, -77, 100, -1,
-<a name="l12262"></a>12262 52, 31, -72, -1, -64, -77, 42, 99, 52, 31, -72, -1, -32, -77, 29, 41, 52, 31, -72, -1, -40, -76, 25, 28, 52,
-<a name="l12263"></a>12263 0, 31, 0, 47, 53, 43, 43, 43, 43, 53, 47, 43, 43, 43, 43, 43, 43, 113, 114, 53, 53, 53, 93, 113, 114,
-<a name="l12264"></a>12264 43, 43, 43, 43, 43, 1, 43, 93, 43, 43, 43, 43, 43, 53, 53, 53, 0, -1, -1, -1, -70, 1, 37, 4, 30,
-<a name="l12265"></a>12265 7, 33, 2, 54, 3, 52, 0, 0, 1, 23, 6, 110, -1, -15, 7, 73, 1, 1, 64, 20, 4, 3, 2, 80, 76,
-<a name="l12266"></a>12266 1, 0, 76, 64, 76, 80, 76, -112, 76, -96, 76, -80, 76, 6, 76, -72, -1, -128, -77, 59, -1, 52, 76, -72, -1,
-<a name="l12267"></a>12267 -64, -77, 61, 62, 52, 76, -72, -1, -64, -77, 39, 58, 52, 76, -72, -1, -64, 64, 10, 33, 36, 52, 0, 76, 76,
-<a name="l12268"></a>12268 34, 34, 65, 65, -72, -1, -48, -77, 55, -1, 52, 64, -72, -1, -48, -77, 55, -1, 52, 63, -72, -1, -48, -77, 55,
-<a name="l12269"></a>12269 -1, 52, 64, -72, -1, -8, -77, 29, 39, 52, 64, -72, -1, -32, 64, 43, 18, 28, 52, 20, 64, 36, 64, 2, 6,
-<a name="l12270"></a>12270 59, 100, 60, 100, 61, 100, 62, 116, 60, 116, 61, 116, 62, -74, 64, -26, 63, -10, 63, 10, 4, 3, 2, -33, 75,
-<a name="l12271"></a>12271 1, 95, 75, 111, 75, -32, 75, 3, 75, -72, -1, -64, 64, 9, 14, 16, 52, 75, 64, 18, 22, 52, 75, -72, -1,
-<a name="l12272"></a>12272 -64, -77, 24, 28, 52, 75, -72, -1, -64, -77, 60, 61, 52, 75, -72, -1, -64, 64, 10, 70, -1, 52, 75, 64, 73,
-<a name="l12273"></a>12273 53, 75, 1, 56, -72, -1, -128, -77, 100, -1, 52, 56, -72, -1, -64, -77, 42, 99, 52, 56, -72, -1, -32, -77, 29,
-<a name="l12274"></a>12274 41, 52, 56, -72, -1, -40, -76, 25, 28, 52, 0, 56, 0, 47, 53, 43, 43, 43, 43, 53, 47, 43, 43, 43, 43,
-<a name="l12275"></a>12275 43, 43, 113, 114, 53, 53, 53, 93, 114, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 93, 113, 53, 53, 53,
-<a name="l12276"></a>12276 0, -1, -1, 0, 71, 0, 14, 4, 13, 7, 32, 2, 54, 3, -35, 0, 0, 1, 23, 5, 54, 1, -12, 1, 99,
-<a name="l12277"></a>12277 0, -81, 64, 11, 1, 0, 57, 16, 57, -96, 57, -80, 57, 4, 57, -72, -1, -128, 64, 10, 11, 16, 52, 0, 57,
-<a name="l12278"></a>12278 57, 39, 39, 65, 40, -72, -1, -64, -77, 37, -1, 52, 39, -72, -1, -128, -77, 37, -1, 52, 38, -72, -1, -128, -77,
-<a name="l12279"></a>12279 37, -1, 52, 42, -72, -1, -16, -77, 9, -1, 52, 41, -72, -1, -16, -77, 9, -1, 52, 40, -72, -1, -48, -77, 9,
-<a name="l12280"></a>12280 36, 52, 39, -72, -1, -80, -77, 9, 36, 52, 38, -72, -1, -80, 64, 10, 9, 36, 52, 1, 58, 64, 83, 99, 52,
-<a name="l12281"></a>12281 58, -72, -1, -64, 64, 39, 32, 34, 52, 0, 58, 48, 58, -128, 58, -96, 58, 4, 15, 58, 47, 58, 95, 58, 111,
-<a name="l12282"></a>12282 58, 4, 0, 58, 16, 58, 32, 58, 96, 58, 112, 58, -65, 58, -64, 58, 7, 58, 0, 6, -72, -1, -64, -77, 28,
-<a name="l12283"></a>12283 -1, 52, 6, 0, 47, 43, 53, 47, 93, 113, 114, 43, 43, 53, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43,
-<a name="l12284"></a>12284 93, 53, 0, -1, -1, 0, 71, 0, 14, 4, 13, 7, 32, 2, 54, 3, -35, 0, 0, 1, 23, 5, 54, 1, -12,
-<a name="l12285"></a>12285 1, 99, 0, -81, 64, 11, 1, 0, 57, 16, 57, -96, 57, -80, 57, 4, 57, -72, -1, -128, 64, 10, 11, 16, 52,
-<a name="l12286"></a>12286 0, 57, 57, 39, 39, 65, 40, -72, -1, -64, -77, 37, -1, 52, 39, -72, -1, -128, -77, 37, -1, 52, 38, -72, -1,
-<a name="l12287"></a>12287 -128, -77, 37, -1, 52, 42, -72, -1, -16, -77, 9, -1, 52, 41, -72, -1, -16, -77, 9, -1, 52, 40, -72, -1, -48,
-<a name="l12288"></a>12288 -77, 9, 36, 52, 39, -72, -1, -80, -77, 9, 36, 52, 38, -72, -1, -80, 64, 10, 9, 36, 52, 1, 58, 64, 83,
-<a name="l12289"></a>12289 99, 52, 58, -72, -1, -64, 64, 39, 32, 34, 52, 0, 58, 48, 58, -128, 58, -96, 58, 4, 15, 58, 47, 58, 95,
-<a name="l12290"></a>12290 58, 111, 58, 4, 0, 58, 16, 58, 32, 58, 96, 58, 112, 58, -65, 58, -64, 58, 7, 58, 0, 6, -72, -1, -64,
-<a name="l12291"></a>12291 -77, 28, -1, 52, 6, 0, 47, 43, 53, 47, 93, 113, 114, 43, 43, 53, 43, 43, 43, 43, 43, 43, 43, 43, 1,
-<a name="l12292"></a>12292 43, 43, 93, 53, 0, -1, -1, -1, -70, 1, 37, 1, -88, 7, 32, 2, 54, 3, -33, 0, 0, 1, 23, 5, 54,
-<a name="l12293"></a>12293 -1, -100, 1, 99, 0, -32, -74, 1, 0, 23, 16, 23, 2, 23, -72, -1, -64, 64, 40, 13, 16, 52, 0, 23, 19,
-<a name="l12294"></a>12294 4, 17, 65, 24, 64, 40, 66, 52, 21, 64, 40, 66, 52, 20, 64, 40, 66, 52, 24, -128, 67, -1, 52, 21, -128,
-<a name="l12295"></a>12295 67, -1, 52, 20, -128, 67, -1, 52, 14, -72, -1, -64, -77, 9, -1, 52, 13, -72, -1, -64, -77, 9, -1, 52, 12,
-<a name="l12296"></a>12296 -72, -1, -64, -77, 9, -1, 52, 11, -72, -1, -64, -77, 9, -1, 52, 10, -72, -1, -64, -77, 9, -1, 52, 9, -72,
-<a name="l12297"></a>12297 -1, -128, -77, 23, -1, 52, 8, -72, -1, -128, -77, 23, -1, 52, 7, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1,
-<a name="l12298"></a>12298 -64, -77, 9, 22, 52, 8, -72, -1, -64, -76, 9, 22, 52, 1, 21, -72, -1, -64, -77, 67, 69, 52, 21, -72, -1,
-<a name="l12299"></a>12299 -64, -77, 61, 62, 52, 21, -72, -1, -64, -78, 59, 53, 21, -72, -1, -64, 64, 31, 9, 11, 52, 0, 21, 48, 21,
-<a name="l12300"></a>12300 -128, 21, -96, 21, 4, 16, 21, 112, 21, -128, 21, -112, 21, -49, 21, 5, 96, 21, 112, 21, -65, 21, 3, 21, 0,
-<a name="l12301"></a>12301 47, 93, 113, 114, 43, 43, 43, 43, 53, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l12302"></a>12302 1, 43, 43, 113, 53, -1, -1, -1, -70, 1, 37, 1, -88, 7, 32, 2, 54, 3, -33, 0, 0, 1, 23, 5, 54,
-<a name="l12303"></a>12303 -1, -100, 1, 99, 0, -32, -74, 1, 0, 23, 16, 23, 2, 23, -72, -1, -64, 64, 40, 13, 16, 52, 0, 23, 19,
-<a name="l12304"></a>12304 4, 17, 65, 24, 64, 40, 66, 52, 21, 64, 40, 66, 52, 20, 64, 40, 66, 52, 24, -128, 67, -1, 52, 21, -128,
-<a name="l12305"></a>12305 67, -1, 52, 20, -128, 67, -1, 52, 14, -72, -1, -64, -77, 9, -1, 52, 13, -72, -1, -64, -77, 9, -1, 52, 12,
-<a name="l12306"></a>12306 -72, -1, -64, -77, 9, -1, 52, 11, -72, -1, -64, -77, 9, -1, 52, 10, -72, -1, -64, -77, 9, -1, 52, 9, -72,
-<a name="l12307"></a>12307 -1, -128, -77, 23, -1, 52, 8, -72, -1, -128, -77, 23, -1, 52, 7, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1,
-<a name="l12308"></a>12308 -64, -77, 9, 22, 52, 8, -72, -1, -64, -76, 9, 22, 52, 1, 21, -72, -1, -64, -77, 67, 69, 52, 21, -72, -1,
-<a name="l12309"></a>12309 -64, -77, 61, 62, 52, 21, -72, -1, -64, -78, 59, 53, 21, -72, -1, -64, 64, 31, 9, 11, 52, 0, 21, 48, 21,
-<a name="l12310"></a>12310 -128, 21, -96, 21, 4, 16, 21, 112, 21, -128, 21, -112, 21, -49, 21, 5, 96, 21, 112, 21, -65, 21, 3, 21, 0,
-<a name="l12311"></a>12311 47, 93, 113, 114, 43, 43, 43, 43, 53, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l12312"></a>12312 1, 43, 43, 113, 53, -1, -1, 0, 71, 0, 14, 4, 13, 7, 33, 2, 54, 3, -35, 0, 0, 1, 23, 5, 45,
-<a name="l12313"></a>12313 2, 78, 6, -102, 0, -28, -73, 1, 0, 58, -81, 58, -48, 58, 3, -72, -1, -38, 64, 16, 58, 58, 36, 36, 65,
-<a name="l12314"></a>12314 57, 64, 65, 100, 52, 56, 64, 65, 100, 52, 40, -72, -1, -64, -77, 37, -1, 52, 39, -72, -1, -128, -77, 37, -1,
-<a name="l12315"></a>12315 52, 38, -72, -1, -128, -77, 37, -1, 52, 42, -72, -1, -16, -77, 9, -1, 52, 41, -72, -1, -16, -77, 9, -1, 52,
-<a name="l12316"></a>12316 40, -72, -1, -48, -77, 9, 36, 52, 39, -72, -1, -80, -77, 9, 36, 52, 38, -72, -1, -80, 64, 37, 11, 36, 52,
-<a name="l12317"></a>12317 0, 38, 16, 38, 2, 1, 16, 57, 112, 57, -96, 57, -80, 57, -64, 57, 5, 0, 57, 96, 57, 112, 57, 3, 111,
-<a name="l12318"></a>12318 57, 127, 57, -32, 57, -16, 57, 4, 57, -72, -1, -64, -78, 88, 53, 57, -72, -1, -64, -78, 82, 53, 57, -72, -1,
-<a name="l12319"></a>12319 -64, -77, 74, 75, 52, 57, -72, -1, -64, -77, 68, 71, 52, 57, -72, -1, -64, -78, 65, 53, 57, -72, -1, -64, -78,
-<a name="l12320"></a>12320 60, 53, 57, -72, -1, -64, 64, 11, 91, -1, 52, 57, 64, 11, 13, 52, 57, 0, 6, -72, -1, -64, -77, 28, -1,
-<a name="l12321"></a>12321 52, 6, 0, 47, 43, 53, 47, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 53, 93, 43, 43, 43, 43, 43,
-<a name="l12322"></a>12322 43, 43, 43, 43, 43, 1, 43, 93, 53, -1, -1, 0, 71, 0, 14, 4, 13, 7, 33, 2, 54, 3, -35, 0, 0,
-<a name="l12323"></a>12323 1, 23, 5, 45, 2, 78, 6, -102, 0, -28, -73, 1, 0, 58, -81, 58, -48, 58, 3, -72, -1, -38, 64, 16, 58,
-<a name="l12324"></a>12324 58, 36, 36, 65, 57, 64, 65, 100, 52, 56, 64, 65, 100, 52, 40, -72, -1, -64, -77, 37, -1, 52, 39, -72, -1,
-<a name="l12325"></a>12325 -128, -77, 37, -1, 52, 38, -72, -1, -128, -77, 37, -1, 52, 42, -72, -1, -16, -77, 9, -1, 52, 41, -72, -1, -16,
-<a name="l12326"></a>12326 -77, 9, -1, 52, 40, -72, -1, -48, -77, 9, 36, 52, 39, -72, -1, -80, -77, 9, 36, 52, 38, -72, -1, -80, 64,
-<a name="l12327"></a>12327 37, 11, 36, 52, 0, 38, 16, 38, 2, 1, 16, 57, 112, 57, -96, 57, -80, 57, -64, 57, 5, 0, 57, 96, 57,
-<a name="l12328"></a>12328 112, 57, 3, 111, 57, 127, 57, -32, 57, -16, 57, 4, 57, -72, -1, -64, -78, 88, 53, 57, -72, -1, -64, -78, 82,
-<a name="l12329"></a>12329 53, 57, -72, -1, -64, -77, 74, 75, 52, 57, -72, -1, -64, -77, 68, 71, 52, 57, -72, -1, -64, -78, 65, 53, 57,
-<a name="l12330"></a>12330 -72, -1, -64, -78, 60, 53, 57, -72, -1, -64, 64, 11, 91, -1, 52, 57, 64, 11, 13, 52, 57, 0, 6, -72, -1,
-<a name="l12331"></a>12331 -64, -77, 28, -1, 52, 6, 0, 47, 43, 53, 47, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 53, 93, 43,
-<a name="l12332"></a>12332 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 93, 53, -1, -1, -1, -70, 1, 37, 1, -88, 7, 33, 2, 54,
-<a name="l12333"></a>12333 3, -33, 0, 0, 1, 23, 5, 45, -1, -53, 6, -102, 1, 3, -73, 1, 0, 19, 1, 80, 19, 1, 19, -72, -1,
-<a name="l12334"></a>12334 -64, -77, 44, 46, 52, 19, -72, -1, -64, -78, 14, 16, 52, -72, -1, -32, 64, 21, 19, 19, 13, 13, 65, 20, -128,
-<a name="l12335"></a>12335 82, 99, 52, 20, 64, 39, 81, 52, 19, 64, 39, 99, 52, 14, -72, -1, -64, -77, 9, -1, 52, 13, -72, -1, -64,
-<a name="l12336"></a>12336 -77, 9, -1, 52, 12, -72, -1, -64, -77, 9, -1, 52, 11, -72, -1, -64, -77, 9, -1, 52, 10, -72, -1, -64, -77,
-<a name="l12337"></a>12337 9, -1, 52, 9, -72, -1, -128, -77, 23, -1, 52, 8, -72, -1, -128, -77, 23, -1, 52, 7, -72, -1, -64, -77, 9,
-<a name="l12338"></a>12338 -1, 52, 9, -72, -1, -64, -77, 9, 22, 52, 8, -72, -1, -64, 64, 39, 9, 22, 52, 4, 6, 4, 8, 4, 9,
-<a name="l12339"></a>12339 3, 1, 16, 20, 112, 20, -96, 20, -80, 20, -64, 20, 5, 0, 20, 96, 20, 112, 20, 3, 111, 20, 127, 20, -32,
-<a name="l12340"></a>12340 20, -16, 20, 4, 20, -72, -1, -64, -78, 88, 53, 20, -72, -1, -64, -78, 82, 53, 20, -72, -1, -64, -77, 74, 75,
-<a name="l12341"></a>12341 52, 20, -72, -1, -64, -77, 68, 71, 52, 20, -72, -1, -64, -78, 65, 53, 20, -72, -1, -64, -78, 60, 53, 20, -72,
-<a name="l12342"></a>12342 -1, -64, 64, 9, 91, -1, 52, 20, 64, 11, 13, 52, 20, 0, 47, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113,
-<a name="l12343"></a>12343 114, 53, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 113, 114, 53, 0, -1,
-<a name="l12344"></a>12344 -1, -1, -70, 1, 37, 1, -88, 7, 33, 2, 54, 3, -33, 0, 0, 1, 23, 5, 45, -1, -53, 6, -102, 1, 3,
-<a name="l12345"></a>12345 -73, 1, 0, 19, 1, 80, 19, 1, 19, -72, -1, -64, -77, 44, 46, 52, 19, -72, -1, -64, -78, 14, 16, 52, -72,
-<a name="l12346"></a>12346 -1, -32, 64, 21, 19, 19, 13, 13, 65, 20, -128, 82, 99, 52, 20, 64, 39, 81, 52, 19, 64, 39, 99, 52, 14,
-<a name="l12347"></a>12347 -72, -1, -64, -77, 9, -1, 52, 13, -72, -1, -64, -77, 9, -1, 52, 12, -72, -1, -64, -77, 9, -1, 52, 11, -72,
-<a name="l12348"></a>12348 -1, -64, -77, 9, -1, 52, 10, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -128, -77, 23, -1, 52, 8, -72, -1,
-<a name="l12349"></a>12349 -128, -77, 23, -1, 52, 7, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -64, -77, 9, 22, 52, 8, -72, -1, -64,
-<a name="l12350"></a>12350 64, 39, 9, 22, 52, 4, 6, 4, 8, 4, 9, 3, 1, 16, 20, 112, 20, -96, 20, -80, 20, -64, 20, 5, 0,
-<a name="l12351"></a>12351 20, 96, 20, 112, 20, 3, 111, 20, 127, 20, -32, 20, -16, 20, 4, 20, -72, -1, -64, -78, 88, 53, 20, -72, -1,
-<a name="l12352"></a>12352 -64, -78, 82, 53, 20, -72, -1, -64, -77, 74, 75, 52, 20, -72, -1, -64, -77, 68, 71, 52, 20, -72, -1, -64, -78,
-<a name="l12353"></a>12353 65, 53, 20, -72, -1, -64, -78, 60, 53, 20, -72, -1, -64, 64, 9, 91, -1, 52, 20, 64, 11, 13, 52, 20, 0,
-<a name="l12354"></a>12354 47, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 53, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
-<a name="l12355"></a>12355 43, 43, 1, 43, 43, 43, 113, 114, 53, 0, -1, -1, 0, 71, 0, 14, 4, 13, 7, 33, 2, 54, 3, -35, 0,
-<a name="l12356"></a>12356 0, 1, 23, 6, 110, 2, 48, 7, 73, 1, 11, -77, 3, 2, 1, 62, -72, -1, -64, -78, 70, 53, 62, -72, -1,
-<a name="l12357"></a>12357 -64, -77, 46, 48, 52, 62, -72, -1, -64, -77, 39, 44, 52, 62, -72, -1, -64, -77, 21, 23, 52, 62, -72, -1, -64,
-<a name="l12358"></a>12358 -78, 10, 18, 52, -72, -1, -22, -75, 62, 62, 39, 39, 65, 41, -72, -1, -8, -77, 24, 27, 52, 40, -72, -1, -8,
-<a name="l12359"></a>12359 -77, 24, 27, 52, 39, -72, -1, -8, -77, 24, 27, 52, 38, -72, -1, -8, -77, 24, 27, 52, 40, -72, -1, -64, -77,
-<a name="l12360"></a>12360 37, -1, 52, 39, -72, -1, -128, -77, 37, -1, 52, 38, -72, -1, -128, -77, 37, -1, 52, 42, -72, -1, -16, -77, 9,
-<a name="l12361"></a>12361 -1, 52, 41, -72, -1, -16, -77, 9, -1, 52, 40, -72, -1, -48, -77, 9, 36, 52, 39, -72, -1, -80, -77, 9, 36,
-<a name="l12362"></a>12362 52, 38, -72, -1, -80, 64, 25, 11, 36, 52, 0, 38, 1, 3, 2, -1, 65, 1, 1, -32, 65, 1, 80, 65, 96,
-<a name="l12363"></a>12363 65, 112, 65, -16, 65, 4, 65, -72, -1, -64, -77, 101, -1, 52, 65, -72, -1, -64, -77, 88, 89, 52, 65, -72, -1,
-<a name="l12364"></a>12364 -64, -77, 70, 72, 52, 65, -72, -1, -64, -77, 60, 61, 52, 65, -72, -1, -64, 64, 11, 25, 28, 52, 65, 64, 18,
-<a name="l12365"></a>12365 22, 52, 65, 0, 6, -72, -1, -64, -77, 28, -1, 52, 6, 0, 47, 43, 53, 47, 43, 43, 43, 43, 43, 43, 93,
-<a name="l12366"></a>12366 113, 53, 93, 53, 53, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43,
-<a name="l12367"></a>12367 53, 53, 53, 0, -1, -1, 0, 71, 0, 14, 4, 13, 7, 33, 2, 54, 3, -35, 0, 0, 1, 23, 6, 110, 2,
-<a name="l12368"></a>12368 48, 7, 73, 1, 11, -77, 3, 2, 1, 62, -72, -1, -64, -78, 70, 53, 62, -72, -1, -64, -77, 46, 48, 52, 62,
-<a name="l12369"></a>12369 -72, -1, -64, -77, 39, 44, 52, 62, -72, -1, -64, -77, 21, 23, 52, 62, -72, -1, -64, -78, 10, 18, 52, -72, -1,
-<a name="l12370"></a>12370 -22, -75, 62, 62, 39, 39, 65, 41, -72, -1, -8, -77, 24, 27, 52, 40, -72, -1, -8, -77, 24, 27, 52, 39, -72,
-<a name="l12371"></a>12371 -1, -8, -77, 24, 27, 52, 38, -72, -1, -8, -77, 24, 27, 52, 40, -72, -1, -64, -77, 37, -1, 52, 39, -72, -1,
-<a name="l12372"></a>12372 -128, -77, 37, -1, 52, 38, -72, -1, -128, -77, 37, -1, 52, 42, -72, -1, -16, -77, 9, -1, 52, 41, -72, -1, -16,
-<a name="l12373"></a>12373 -77, 9, -1, 52, 40, -72, -1, -48, -77, 9, 36, 52, 39, -72, -1, -80, -77, 9, 36, 52, 38, -72, -1, -80, 64,
-<a name="l12374"></a>12374 25, 11, 36, 52, 0, 38, 1, 3, 2, -1, 65, 1, 1, -32, 65, 1, 80, 65, 96, 65, 112, 65, -16, 65, 4,
-<a name="l12375"></a>12375 65, -72, -1, -64, -77, 101, -1, 52, 65, -72, -1, -64, -77, 88, 89, 52, 65, -72, -1, -64, -77, 70, 72, 52, 65,
-<a name="l12376"></a>12376 -72, -1, -64, -77, 60, 61, 52, 65, -72, -1, -64, 64, 11, 25, 28, 52, 65, 64, 18, 22, 52, 65, 0, 6, -72,
-<a name="l12377"></a>12377 -1, -64, -77, 28, -1, 52, 6, 0, 47, 43, 53, 47, 43, 43, 43, 43, 43, 43, 93, 113, 53, 93, 53, 53, 93,
-<a name="l12378"></a>12378 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 53, 53, 53, 0, -1, -1,
-<a name="l12379"></a>12379 -1, -70, 1, 37, 1, -88, 7, 33, 2, 54, 3, -33, 0, 0, 1, 23, 6, 110, -1, -60, 7, 73, 0, -24, 64,
-<a name="l12380"></a>12380 10, 3, 2, 1, 32, 27, 1, -64, 27, 1, 27, -72, -1, -64, -77, 54, 59, 52, 27, -72, -1, -64, -77, 23, 29,
-<a name="l12381"></a>12381 52, 27, -72, -1, -64, -78, 13, 17, 52, -72, -1, -14, -75, 27, 27, 8, 8, 65, 14, -72, -1, -64, -77, 9, -1,
-<a name="l12382"></a>12382 52, 13, -72, -1, -64, -77, 9, -1, 52, 12, -72, -1, -64, -77, 9, -1, 52, 11, -72, -1, -64, -77, 9, -1, 52,
-<a name="l12383"></a>12383 10, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -128, -77, 23, -1, 52, 8, -72, -1, -128, -77, 23, -1, 52, 7,
-<a name="l12384"></a>12384 -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -64, -77, 9, 22, 52, 8, -72, -1, -64, 64, 30, 9, 22, 52, 4,
-<a name="l12385"></a>12385 6, 4, 8, 4, 9, 3, 3, 2, 1, 95, 28, 111, 28, -32, 28, 3, 80, 28, 96, 28, 112, 28, -16, 28, 4,
-<a name="l12386"></a>12386 28, -72, -1, -64, -77, 101, -1, 52, 28, -72, -1, -64, -77, 88, 89, 52, 28, -72, -1, -64, -77, 70, 72, 52, 28,
-<a name="l12387"></a>12387 -72, -1, -64, -77, 60, 61, 52, 28, -72, -1, -64, 64, 9, 25, 28, 52, 28, 64, 18, 22, 52, 28, 0, 47, 43,
-<a name="l12388"></a>12388 43, 43, 43, 43, 43, 93, 113, 53, 53, 53, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43,
-<a name="l12389"></a>12389 43, 113, 114, 53, 53, 53, -1, -1, -1, -70, 1, 37, 1, -88, 7, 33, 2, 54, 3, -33, 0, 0, 1, 23, 6,
-<a name="l12390"></a>12390 110, -1, -60, 7, 73, 0, -24, 64, 10, 3, 2, 1, 32, 27, 1, -64, 27, 1, 27, -72, -1, -64, -77, 54, 59,
-<a name="l12391"></a>12391 52, 27, -72, -1, -64, -77, 23, 29, 52, 27, -72, -1, -64, -78, 13, 17, 52, -72, -1, -14, -75, 27, 27, 8, 8,
-<a name="l12392"></a>12392 65, 14, -72, -1, -64, -77, 9, -1, 52, 13, -72, -1, -64, -77, 9, -1, 52, 12, -72, -1, -64, -77, 9, -1, 52,
-<a name="l12393"></a>12393 11, -72, -1, -64, -77, 9, -1, 52, 10, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -128, -77, 23, -1, 52, 8,
-<a name="l12394"></a>12394 -72, -1, -128, -77, 23, -1, 52, 7, -72, -1, -64, -77, 9, -1, 52, 9, -72, -1, -64, -77, 9, 22, 52, 8, -72,
-<a name="l12395"></a>12395 -1, -64, 64, 30, 9, 22, 52, 4, 6, 4, 8, 4, 9, 3, 3, 2, 1, 95, 28, 111, 28, -32, 28, 3, 80,
-<a name="l12396"></a>12396 28, 96, 28, 112, 28, -16, 28, 4, 28, -72, -1, -64, -77, 101, -1, 52, 28, -72, -1, -64, -77, 88, 89, 52, 28,
-<a name="l12397"></a>12397 -72, -1, -64, -77, 70, 72, 52, 28, -72, -1, -64, -77, 60, 61, 52, 28, -72, -1, -64, 64, 9, 25, 28, 52, 28,
-<a name="l12398"></a>12398 64, 18, 22, 52, 28, 0, 47, 43, 43, 43, 43, 43, 43, 93, 113, 53, 53, 53, 93, 43, 43, 43, 43, 43, 43,
-<a name="l12399"></a>12399 43, 43, 43, 43, 1, 43, 43, 43, 43, 113, 114, 53, 53, 53, -1, -1, 0, 71, -2, 93, 4, 13, 6, 51, 2,
-<a name="l12400"></a>12400 54, 3, -35, 0, 0, 1, 23, 6, 111, 1, 44, -1, 116, 0, 120, -73, 3, 2, 1, 0, 62, 16, 62, 2, -72,
-<a name="l12401"></a>12401 -1, -42, 64, 38, 62, 62, 10, 0, 65, 3, 2, 61, 64, 71, 53, 61, 64, 60, 65, 52, 61, 64, 49, 54, 52,
-<a name="l12402"></a>12402 1, -65, 61, -49, 61, -33, 61, 3, -48, 61, 1, 61, 64, 82, 82, 52, 61, -72, -1, -64, -78, 71, 53, 61, -72,
-<a name="l12403"></a>12403 -1, -64, -77, 60, 65, 52, 61, -72, -1, -64, -77, 50, 54, 52, 61, -72, -1, -64, -77, 41, 44, 52, 61, -72, -1,
-<a name="l12404"></a>12404 -64, 64, 9, 31, 36, 52, 61, 64, 9, 11, 52, 61, 0, 47, 43, 43, 43, 43, 43, 43, 43, 93, 114, 53, 43,
-<a name="l12405"></a>12405 43, 43, 53, 53, 1, 43, 93, 53, 53, 53, -1, -1, 0, 71, -2, 93, 4, 13, 6, 51, 2, 54, 3, -35, 0,
-<a name="l12406"></a>12406 0, 1, 23, 6, 111, 1, 44, -1, 116, 0, 120, -73, 3, 2, 1, 0, 62, 16, 62, 2, -72, -1, -42, 64, 38,
-<a name="l12407"></a>12407 62, 62, 10, 0, 65, 3, 2, 61, 64, 71, 53, 61, 64, 60, 65, 52, 61, 64, 49, 54, 52, 1, -65, 61, -49,
-<a name="l12408"></a>12408 61, -33, 61, 3, -48, 61, 1, 61, 64, 82, 82, 52, 61, -72, -1, -64, -78, 71, 53, 61, -72, -1, -64, -77, 60,
-<a name="l12409"></a>12409 65, 52, 61, -72, -1, -64, -77, 50, 54, 52, 61, -72, -1, -64, -77, 41, 44, 52, 61, -72, -1, -64, 64, 9, 31,
-<a name="l12410"></a>12410 36, 52, 61, 64, 9, 11, 52, 61, 0, 47, 43, 43, 43, 43, 43, 43, 43, 93, 114, 53, 43, 43, 43, 53, 53,
-<a name="l12411"></a>12411 1, 43, 93, 53, 53, 53, -1, -1, -1, -70, -2, -103, 1, -68, 6, 51, 2, 54, 3, -33, 0, 0, 1, 22, 5,
-<a name="l12412"></a>12412 48, -40, 0, 0, 37, 64, 23, 3, 2, 1, 33, 29, 19, 1, 0, 65, 3, 2, 1, 0, 24, 16, 24, 2, 24,
-<a name="l12413"></a>12413 64, 12, 21, 52, 24, 0, 47, 43, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, -1, -70, -2, -103, 1,
-<a name="l12414"></a>12414 -68, 6, 51, 2, 54, 3, -33, 0, 0, 1, 22, 5, 48, -40, 0, 0, 37, 64, 23, 3, 2, 1, 33, 29, 19,
-<a name="l12415"></a>12415 1, 0, 65, 3, 2, 1, 0, 24, 16, 24, 2, 24, 64, 12, 21, 52, 24, 0, 47, 43, 93, 53, 53, 53, 1,
-<a name="l12416"></a>12416 43, 53, 53, 53, 0, -1, -1, 0, 69, -2, 82, 4, 53, 4, 118, 2, 54, 3, -27, 0, 0, 1, 23, 5, 45,
-<a name="l12417"></a>12417 1, 60, -2, -79, 0, 63, 64, 19, 2, 0, 39, 37, 12, 4, 65, 2, 38, 64, 77, 78, 52, 38, 64, 59, 59,
-<a name="l12418"></a>12418 52, 38, -72, -1, -64, 64, 25, 50, 52, 52, -33, 38, 1, -97, 38, -81, 38, -1, 38, 3, 0, 38, 47, 38, 63,
-<a name="l12419"></a>12419 38, 127, 38, -113, 38, 5, 38, 0, 47, 93, 113, 114, 43, 43, 43, 53, 1, 43, 53, 0, -1, -1, 0, 69, -2,
-<a name="l12420"></a>12420 82, 4, 53, 4, 118, 2, 54, 3, -27, 0, 0, 1, 23, 5, 45, 1, 60, -2, -79, 0, 63, 64, 19, 2, 0,
-<a name="l12421"></a>12421 39, 37, 12, 4, 65, 2, 38, 64, 77, 78, 52, 38, 64, 59, 59, 52, 38, -72, -1, -64, 64, 25, 50, 52, 52,
-<a name="l12422"></a>12422 -33, 38, 1, -97, 38, -81, 38, -1, 38, 3, 0, 38, 47, 38, 63, 38, 127, 38, -113, 38, 5, 38, 0, 47, 93,
-<a name="l12423"></a>12423 113, 114, 43, 43, 43, 53, 1, 43, 53, 0, -1, -1, -1, -70, -1, -95, 1, -12, 5, 22, 2, 54, 3, -25, 0,
-<a name="l12424"></a>12424 0, 1, 22, 5, 45, 0, 0, 0, 32, 64, 14, 2, 0, 19, 17, 5, 4, 65, 2, 18, 64, 11, 21, 52, 18,
-<a name="l12425"></a>12425 -72, -1, -64, -77, 9, 10, 52, 18, 0, 47, 43, 43, 53, 1, 43, 53, -1, -1, -1, -70, -1, -95, 1, -12, 5,
-<a name="l12426"></a>12426 22, 2, 54, 3, -25, 0, 0, 1, 22, 5, 45, 0, 0, 0, 32, 64, 14, 2, 0, 19, 17, 5, 4, 65, 2,
-<a name="l12427"></a>12427 18, 64, 11, 21, 52, 18, -72, -1, -64, -77, 9, 10, 52, 18, 0, 47, 43, 43, 53, 1, 43, 53, 0, 1, 0,
-<a name="l12428"></a>12428 69, -1, 108, 4, 53, 3, 87, 0, 32, 0, -88, 64, 64, 122, 27, -118, 27, 2, 107, 27, 1, 73, 27, 89, 27,
-<a name="l12429"></a>12429 2, 40, 27, 56, 27, 2, -120, 22, 1, 42, 22, 58, 22, 2, -124, 19, 1, 118, 19, 1, 101, 19, 1, 86, 19,
-<a name="l12430"></a>12430 1, -122, 15, 1, 119, 15, 1, 119, 11, 1, 117, 2, 1, 83, 2, 99, 2, 2, 68, 2, 1, 29, 29, 0, 28,
-<a name="l12431"></a>12431 28, 24, -72, 3, 3, -77, 64, 0, 34, 14, -72, 2, -5, 64, 12, 32, 33, 13, 1, 0, 13, 16, 13, 2, 13,
-<a name="l12432"></a>12432 13, 17, 65, 14, 3, 3, 0, 8, 0, 28, 2, -17, 0, 29, 3, 9, 0, 14, 0, 13, 3, 7, 0, 20, 2,
-<a name="l12433"></a>12433 -17, 0, 4, 3, 17, 1, 42, -123, 0, 63, -19, 63, 51, 63, -19, 1, 47, -19, 50, 25, 47, 93, 93, 26, -19,
-<a name="l12434"></a>12434 16, -48, 26, 24, -19, 50, 47, 18, 57, 25, 47, 49, 48, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
-<a name="l12435"></a>12435 93, 93, 93, 93, 1, 20, 7, 6, 33, 34, 39, 38, 53, 52, 54, 55, 54, 55, 23, 6, 6, 21, 20, 22, 51,
-<a name="l12436"></a>12436 50, 55, 54, 53, 52, 39, 38, 39, 55, 22, 22, 21, 4, 53, -125, -115, -2, -58, -56, 106, 116, 42, 36, 22, 54,
-<a name="l12437"></a>12437 40, 70, 45, -79, -92, -67, -110, -75, 30, 26, 48, 83, 53, 40, 1, 37, -33, 105, 113, 70, 77, -97, 86, -80, 89,
-<a name="l12438"></a>12438 54, 112, 18, -112, -90, 69, 124, -127, 67, 83, -107, 102, 88, 78, 58, -51, 81, -88, -117, -1, -1, 0, 69, -1, 108,
-<a name="l12439"></a>12439 4, 53, 3, 87, 2, 22, 6, 15, 0, 0, -1, -1, 0, 69, -1, 108, 4, 53, 6, 80, 2, 54, 6, 15, 0,
-<a name="l12440"></a>12440 0, 1, 23, 5, 51, 1, 84, -1, -80, 0, 45, 64, 10, 2, 1, 96, 34, 112, 34, -80, 34, 3, 34, -72, -1,
-<a name="l12441"></a>12441 -64, 64, 17, 9, 12, 52, 15, 34, 33, 17, 24, 65, 2, 1, 16, 34, 48, 34, 2, 34, 0, 47, 93, 53, 53,
-<a name="l12442"></a>12442 1, 43, 43, 93, 53, 53, 0, -1, -1, 0, 69, -1, 108, 4, 53, 6, 80, 2, 54, 6, 15, 0, 0, 1, 23,
-<a name="l12443"></a>12443 5, 51, 1, 84, -1, -80, 0, 45, 64, 10, 2, 1, 96, 34, 112, 34, -80, 34, 3, 34, -72, -1, -64, 64, 17,
-<a name="l12444"></a>12444 9, 12, 52, 15, 34, 33, 17, 24, 65, 2, 1, 16, 34, 48, 34, 2, 34, 0, 47, 93, 53, 53, 1, 43, 43,
-<a name="l12445"></a>12445 93, 53, 53, 0, -1, -1, 0, 69, -2, -121, 4, 53, 4, 118, 2, 54, 3, -27, 0, 0, 1, 23, 2, -8, 1,
-<a name="l12446"></a>12446 84, -7, -80, 0, 62, 64, 12, 3, 2, -128, 43, 1, 0, 43, 37, 22, 27, 65, 45, -72, -1, -64, -77, 9, 11,
-<a name="l12447"></a>12447 52, 47, -72, -1, -64, -77, 9, 11, 52, 46, -72, -1, -64, 64, 11, 9, 11, 52, 3, 2, 52, 64, 9, 11, 52,
-<a name="l12448"></a>12448 52, -72, 3, 17, 0, 63, 43, 53, 53, 43, 43, 43, 1, 43, 93, 53, 53, -1, -1, 0, 69, -2, -121, 4, 53,
-<a name="l12449"></a>12449 4, 118, 2, 54, 3, -27, 0, 0, 1, 23, 2, -8, 1, 84, -7, -80, 0, 62, 64, 12, 3, 2, -128, 43, 1,
-<a name="l12450"></a>12450 0, 43, 37, 22, 27, 65, 45, -72, -1, -64, -77, 9, 11, 52, 47, -72, -1, -64, -77, 9, 11, 52, 46, -72, -1,
-<a name="l12451"></a>12451 -64, 64, 11, 9, 11, 52, 3, 2, 52, 64, 9, 11, 52, 52, -72, 3, 17, 0, 63, 43, 53, 53, 43, 43, 43,
-<a name="l12452"></a>12452 1, 43, 93, 53, 53, -1, -1, -1, -70, 0, 64, 1, -12, 5, 22, 2, 54, 3, -25, 0, 0, 1, 23, 2, -8,
-<a name="l12453"></a>12453 0, 40, -5, 105, 0, 24, 64, 11, 3, 2, 0, 23, 17, 5, 4, 65, 3, 2, 32, -72, 2, -21, 0, 63, 53,
-<a name="l12454"></a>12454 53, 1, 43, 53, 53, -1, -1, -1, -70, 0, 64, 1, -12, 5, 22, 2, 54, 3, -25, 0, 0, 1, 23, 2, -8,
-<a name="l12455"></a>12455 0, 40, -5, 105, 0, 24, 64, 11, 3, 2, 0, 23, 17, 5, 4, 65, 3, 2, 32, -72, 2, -21, 0, 63, 53,
-<a name="l12456"></a>12456 53, 1, 43, 53, 53, -1, -1, 0, 69, -1, 108, 4, 53, 5, -56, 2, 54, 6, 15, 0, 0, 1, 23, 5, 47,
-<a name="l12457"></a>12457 1, 44, 5, 60, 0, 40, -75, 3, 2, 1, 0, 43, 1, -72, -1, -10, 64, 16, 43, 37, 8, 0, 65, 3, 2,
-<a name="l12458"></a>12458 1, 0, 42, 16, 42, 47, 42, 3, 42, 0, 47, 93, 53, 53, 53, 1, 43, 93, 53, 53, 53, -1, -1, 0, 69,
-<a name="l12459"></a>12459 -1, 108, 4, 53, 5, -56, 2, 54, 6, 15, 0, 0, 1, 23, 5, 47, 1, 44, 5, 60, 0, 40, -75, 3, 2,
-<a name="l12460"></a>12460 1, 0, 43, 1, -72, -1, -10, 64, 16, 43, 37, 8, 0, 65, 3, 2, 1, 0, 42, 16, 42, 47, 42, 3, 42,
-<a name="l12461"></a>12461 0, 47, 93, 53, 53, 53, 1, 43, 93, 53, 53, 53, -1, -1, 0, 54, -2, 78, 4, 32, 5, 29, 2, 54, 3,
-<a name="l12462"></a>12462 39, 0, 0, 1, 23, 5, 45, 1, 24, 4, -106, 0, 31, 64, 22, 4, 0, 59, 57, 7, 18, 65, 4, 16, 58,
-<a name="l12463"></a>12463 47, 58, 96, 58, -97, 58, -65, 58, -48, 58, 6, 58, 0, 47, 93, 53, 1, 43, 53, 0, -1, -1, 0, 54, -2,
-<a name="l12464"></a>12464 78, 4, 53, 5, 29, 2, 54, 3, 40, 0, 0, 1, 23, 5, 45, 1, 28, 4, -106, 0, 31, 64, 22, 4, 0,
-<a name="l12465"></a>12465 77, 75, 41, 51, 65, 4, 16, 76, 47, 76, 96, 76, -97, 76, -65, 76, -48, 76, 6, 76, 0, 47, 93, 53, 1,
-<a name="l12466"></a>12466 43, 53, 0, -1, -1, -1, -70, -2, -103, 4, 61, 5, 29, 2, 54, 3, 41, 0, 0, 1, 23, 5, 45, 0, -46,
-<a name="l12467"></a>12467 4, -106, 0, 42, -71, 0, 4, -1, -27, 64, 27, 37, 37, 15, 15, 65, 4, 16, 36, 47, 36, -128, 36, -97, 36,
-<a name="l12468"></a>12468 -65, 36, -48, 36, -16, 36, 7, 36, 64, 18, 19, 52, 36, 0, 47, 43, 93, 53, 1, 43, 53, -1, -1, -1, -70,
-<a name="l12469"></a>12469 -2, -103, 4, 61, 5, 29, 2, 54, 3, 41, 0, 0, 1, 23, 5, 45, 0, -46, 4, -106, 0, 42, -71, 0, 4,
-<a name="l12470"></a>12470 -1, -27, 64, 27, 37, 37, 15, 15, 65, 4, 16, 36, 47, 36, -128, 36, -97, 36, -65, 36, -48, 36, -16, 36, 7,
-<a name="l12471"></a>12471 36, 64, 18, 19, 52, 36, 0, 47, 43, 93, 53, 1, 43, 53, -1, -1, 0, 54, 1, 10, 2, 24, 5, 22, 2,
-<a name="l12472"></a>12472 54, 3, 8, 0, 0, 1, 23, 5, 57, 0, 60, -2, 12, 0, 93, -74, 2, 32, 37, -96, 37, 2, 37, -72, -1,
-<a name="l12473"></a>12473 -64, -78, 37, 47, 52, -72, -1, -54, 64, 57, 37, 37, 14, 14, 65, 2, 37, -128, 32, 32, 52, 37, -128, 20, 21,
-<a name="l12474"></a>12474 52, 37, -64, 18, 19, 52, 37, 64, 13, 15, 52, 37, -128, 11, 12, 52, 95, 37, -49, 37, 2, 15, 37, 64, 37,
-<a name="l12475"></a>12475 -113, 37, -17, 37, 4, 15, 37, 47, 37, -128, 37, -33, 37, -17, 37, 5, 37, 0, 47, 93, 113, 114, 43, 43, 43,
-<a name="l12476"></a>12476 43, 43, 53, 1, 43, 43, 93, 53, 0, -1, -1, -1, -9, 1, 37, 3, 0, 5, -34, 2, 54, 3, -22, 0, 0,
-<a name="l12477"></a>12477 1, 23, 5, 57, 0, 60, -2, -44, 0, 95, -73, 2, 32, 40, -112, 40, -96, 40, 3, -72, -1, -15, 64, 64, 40,
-<a name="l12478"></a>12478 40, 21, 21, 65, 2, -113, 45, 1, 15, 45, 47, 45, 63, 45, 95, 45, 111, 45, -128, 45, -97, 45, 7, 45, 64,
-<a name="l12479"></a>12479 67, 53, 45, 64, 53, 55, 52, 45, 64, 46, 47, 52, 45, 64, 42, 43, 52, 45, -128, 32, 32, 52, 45, 64, 30,
-<a name="l12480"></a>12480 35, 52, 45, 64, 18, 21, 52, 45, 64, 11, 27, 52, 45, 0, 47, 43, 43, 43, 43, 43, 43, 43, 43, 93, 113,
-<a name="l12481"></a>12481 53, 1, 43, 93, 53, 0, 0, 1, 0, 26, 0, -111, 3, 26, 2, -97, 0, 20, 0, 71, 64, 32, -122, 16, -106,
-<a name="l12482"></a>12482 16, 2, -103, 14, -87, 14, 2, -117, 14, 1, 89, 4, 1, 56, 4, 72, 4, 2, 121, 3, 1, 104, 3, 1, 0,
-<a name="l12483"></a>12483 22, 12, 13, 8, -69, 2, -17, 0, 15, 0, 19, 2, -17, -78, 13, 12, 0, -72, 2, -21, 0, 63, -58, 50, -3,
-<a name="l12484"></a>12484 -36, -19, 1, 47, -51, 16, -64, 49, 48, 93, 93, 93, 93, 93, 93, 93, 1, 35, 34, 38, 39, 38, 39, 38, 35,
-<a name="l12485"></a>12485 34, 7, 6, 7, 39, 18, 51, 50, 23, 22, 51, 51, 3, 26, 72, 66, 93, 64, 56, 5, 32, 33, 67, 102, 71,
-<a name="l12486"></a>12486 61, 46, -57, -47, 57, 84, 92, 67, 60, 1, 37, 53, 71, 62, 5, 29, -113, 100, 125, 29, 1, -15, 97, 107, 0,
-<a name="l12487"></a>12487 -1, -1, 0, 26, 0, -111, 3, 26, 4, 78, 2, 54, 6, 31, 0, 0, 1, 23, 5, 57, 0, -116, -3, 68, 0,
-<a name="l12488"></a>12488 42, -71, 0, 1, -1, -44, 64, 26, 26, 21, 13, 0, 65, 1, 15, 26, 63, 26, 95, 26, 111, 26, 4, 26, -128,
-<a name="l12489"></a>12489 11, 11, 52, 26, 64, 18, 22, 52, 26, 0, 47, 43, 43, 93, 53, 1, 43, 53, -1, -1, 0, 26, 0, -111, 3,
-<a name="l12490"></a>12490 26, 4, 116, 2, 54, 6, 31, 0, 0, 1, 23, 5, 46, 0, 100, 3, -24, 0, 38, -79, 2, 1, -72, -1, -60,
-<a name="l12491"></a>12491 64, 21, 27, 21, 13, 0, 65, 2, 1, 16, 26, 63, 26, 79, 26, 111, 26, -97, 26, -81, 26, 6, 26, 0, 47,
-<a name="l12492"></a>12492 93, 53, 53, 1, 43, 53, 53, -1, -1, 0, 50, -1, 99, 3, 117, 3, 20, 2, 54, 3, -19, 0, 0, 1, 23,
-<a name="l12493"></a>12493 2, -8, 1, 54, -6, -40, 0, 103, 64, 11, 3, 2, 16, 55, 1, -80, 55, 1, 16, 55, 1, -72, -1, -24, 64,
-<a name="l12494"></a>12494 14, 55, 55, 17, 17, 65, -118, 45, 1, 45, 24, 11, 13, 52, 53, -72, -1, -24, 64, 30, 11, 17, 52, 22, 16,
-<a name="l12495"></a>12495 11, 15, 52, 3, 2, 0, 46, 1, 127, 46, -81, 46, -32, 46, 3, 64, 46, 112, 46, -128, 46, -96, 46, 4, 46,
-<a name="l12496"></a>12496 -72, -1, -128, -77, 24, 24, 52, 46, -72, -1, -64, -77, 10, 11, 52, 46, 0, 47, 43, 43, 93, 113, 114, 53, 53,
-<a name="l12497"></a>12497 43, 43, 43, 93, 1, 43, 93, 114, 113, 53, 53, 0, -1, -1, 0, 50, -1, 99, 3, 117, 3, 20, 2, 54, 3,
-<a name="l12498"></a>12498 -19, 0, 0, 1, 23, 2, -8, 1, 54, -6, -40, 0, 103, 64, 11, 3, 2, 16, 55, 1, -80, 55, 1, 16, 55,
-<a name="l12499"></a>12499 1, -72, -1, -24, 64, 14, 55, 55, 17, 17, 65, -118, 45, 1, 45, 24, 11, 13, 52, 53, -72, -1, -24, 64, 30,
-<a name="l12500"></a>12500 11, 17, 52, 22, 16, 11, 15, 52, 3, 2, 0, 46, 1, 127, 46, -81, 46, -32, 46, 3, 64, 46, 112, 46, -128,
-<a name="l12501"></a>12501 46, -96, 46, 4, 46, -72, -1, -128, -77, 24, 24, 52, 46, -72, -1, -64, -77, 10, 11, 52, 46, 0, 47, 43, 43,
-<a name="l12502"></a>12502 93, 113, 114, 53, 53, 43, 43, 43, 93, 1, 43, 93, 114, 113, 53, 53, 0, 0, 2, 0, 50, -1, 99, 3, 117,
-<a name="l12503"></a>12503 3, 20, 0, 46, 0, 52, 0, -68, 64, 36, 23, 15, 13, 15, 52, 39, 32, 11, 17, 52, 48, 16, 19, 28, 52,
-<a name="l12504"></a>12504 89, 23, 105, 23, 2, 96, 17, 1, 13, 3, 29, 3, 2, 11, 4, 19, 36, 38, 27, 28, 28, -72, -1, -64, -74,
-<a name="l12505"></a>12505 13, 15, 52, 28, 28, 10, 40, -72, 2, -3, -77, 51, 51, 10, 47, -70, 3, 3, 0, 38, 3, 3, -76, 0, 54,
-<a name="l12506"></a>12506 11, 10, 44, -72, 2, -17, -78, 49, 49, 47, -72, 2, -17, 64, 28, 38, 19, 21, 36, 47, 34, 63, 34, 2, 34,
-<a name="l12507"></a>12507 34, 28, 27, 25, 0, 30, 1, -32, 30, -16, 30, 2, 30, 30, 14, 11, 10, 38, -72, 2, -21, -78, 10, 10, 14,
-<a name="l12508"></a>12508 -69, 3, 10, 0, 4, 3, 8, 1, 42, -123, 0, 63, -19, 50, 25, 47, 24, 63, 18, 57, 18, 57, 47, 113, 114,
-<a name="l12509"></a>12509 -51, 50, 50, 57, 47, 93, 51, -51, 50, 16, -19, 50, 47, -19, 1, 47, 51, 16, -48, -19, -19, 17, 57, 47, -19,
-<a name="l12510"></a>12510 17, 57, 47, 43, 1, 17, 51, 18, 57, 57, 49, 48, 0, 95, 94, 93, 93, 93, 43, 43, 43, 1, 20, 7, 6,
-<a name="l12511"></a>12511 35, 34, 39, 38, 39, 38, 39, 55, 23, 22, 51, 50, 55, 54, 55, 55, 6, 35, 34, 39, 38, 35, 34, 7, 39,
-<a name="l12512"></a>12512 54, 51, 50, 23, 22, 51, 50, 55, 54, 55, 32, 53, 52, 55, 54, 51, 50, 17, 7, 38, 35, 34, 21, 20, 3,
-<a name="l12513"></a>12513 117, 122, -120, -78, 66, 70, 58, 75, 43, 87, 17, 118, 66, 44, 123, 108, 82, 78, 11, 17, 16, 46, 92, 121, 11,
-<a name="l12514"></a>12514 21, 30, 11, 48, 59, 21, 120, 91, 30, 31, 31, 29, 26, -2, -22, 48, 56, 86, -101, 63, 38, 81, 69, 1, 97,
-<a name="l12515"></a>12515 -91, -93, -74, 15, 12, 26, 15, 30, 35, 27, 15, 62, 47, 85, 12, 3, 25, 33, 14, 13, 75, 33, 25, 8, 37,
-<a name="l12516"></a>12516 35, -52, 103, 88, 102, -2, -65, 5, -91, 65, 100, -1, -1, 0, 50, -1, 99, 3, 117, 3, 20, 2, 22, 6, 36,
-<a name="l12517"></a>12517 0, 0, -1, -1, 0, 50, -1, 99, 3, 124, 4, -81, 2, 54, 3, -19, 0, 0, 1, 23, 5, 54, 1, -112, -2,
-<a name="l12518"></a>12518 -14, 0, 52, -79, 2, 43, -72, -1, -64, 64, 11, 18, 24, 52, 0, 43, 43, 0, 0, 65, 2, 45, -72, -1, -128,
-<a name="l12519"></a>12519 64, 18, 16, 17, 52, 64, 45, 127, 45, 2, 15, 45, 63, 45, 96, 45, -65, 45, 4, 45, 0, 47, 93, 113, 43,
-<a name="l12520"></a>12520 53, 1, 43, 43, 53, -1, -1, 0, 50, -1, 99, 3, 124, 4, -81, 2, 54, 3, -19, 0, 0, 1, 23, 5, 54,
-<a name="l12521"></a>12521 1, -112, -2, -14, 0, 52, -79, 2, 43, -72, -1, -64, 64, 11, 18, 24, 52, 0, 43, 43, 0, 0, 65, 2, 45,
-<a name="l12522"></a>12522 -72, -1, -128, 64, 18, 16, 17, 52, 64, 45, 127, 45, 2, 15, 45, 63, 45, 96, 45, -65, 45, 4, 45, 0, 47,
-<a name="l12523"></a>12523 93, 113, 43, 53, 1, 43, 43, 53, -1, -1, 0, 50, -1, 99, 3, 117, 5, 81, 2, 54, 3, -19, 0, 0, 1,
-<a name="l12524"></a>12524 23, 2, -11, 1, -92, -2, -57, 0, 33, 64, 21, 3, 2, 0, 60, 66, 24, 0, 65, 3, 2, 51, 64, 18, 20,
-<a name="l12525"></a>12525 52, 51, 64, 9, 12, 52, 51, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, 0, -1, -1, 0, 50, -1, 99, 3,
-<a name="l12526"></a>12526 117, 5, 81, 2, 54, 3, -19, 0, 0, 1, 23, 2, -11, 1, -92, -2, -57, 0, 33, 64, 21, 3, 2, 0, 60,
-<a name="l12527"></a>12527 66, 24, 0, 65, 3, 2, 51, 64, 18, 20, 52, 51, 64, 9, 12, 52, 51, 0, 47, 43, 43, 53, 53, 1, 43,
-<a name="l12528"></a>12528 53, 53, 0, -1, -1, 0, 50, -1, 99, 3, 117, 5, -19, 2, 54, 3, -19, 0, 0, 1, 23, 5, 59, 2, -88,
-<a name="l12529"></a>12529 -1, 116, 0, 44, 64, 25, 2, 0, 43, 43, 28, 28, 65, 2, 47, 45, 112, 45, -128, 45, -81, 45, -65, 45, 5,
-<a name="l12530"></a>12530 45, 64, 8, 9, 52, 45, -72, -1, -64, -77, 14, 17, 52, 45, 0, 47, 43, 43, 93, 53, 1, 43, 53, -1, -1,
-<a name="l12531"></a>12531 0, 50, -1, 99, 3, 117, 5, -19, 2, 54, 3, -19, 0, 0, 1, 23, 5, 59, 2, -88, -1, 116, 0, 44, 64,
-<a name="l12532"></a>12532 25, 2, 0, 43, 43, 28, 28, 65, 2, 47, 45, 112, 45, -128, 45, -81, 45, -65, 45, 5, 45, 64, 8, 9, 52,
-<a name="l12533"></a>12533 45, -72, -1, -64, -77, 14, 17, 52, 45, 0, 47, 43, 43, 93, 53, 1, 43, 53, -1, -1, 0, 50, -1, 99, 3,
-<a name="l12534"></a>12534 124, 4, -81, 2, 54, 3, -19, 0, 0, 1, 23, 5, 55, 1, -112, -2, -14, 0, 52, -79, 2, 43, -72, -1, -64,
-<a name="l12535"></a>12535 64, 11, 18, 24, 52, 0, 43, 43, 0, 0, 65, 2, 47, -72, -1, -128, 64, 18, 16, 17, 52, 64, 47, 127, 47,
-<a name="l12536"></a>12536 2, 15, 47, 63, 47, 96, 47, -65, 47, 4, 47, 0, 47, 93, 113, 43, 53, 1, 43, 43, 53, -1, -1, 0, 50,
-<a name="l12537"></a>12537 -1, 99, 3, 124, 4, -81, 2, 54, 3, -19, 0, 0, 1, 23, 5, 55, 1, -112, -2, -14, 0, 52, -79, 2, 43,
-<a name="l12538"></a>12538 -72, -1, -64, 64, 11, 18, 24, 52, 0, 43, 43, 0, 0, 65, 2, 47, -72, -1, -128, 64, 18, 16, 17, 52, 64,
-<a name="l12539"></a>12539 47, 127, 47, 2, 15, 47, 63, 47, 96, 47, -65, 47, 4, 47, 0, 47, 93, 113, 43, 53, 1, 43, 43, 53, -1,
-<a name="l12540"></a>12540 -1, 0, 50, -1, 99, 3, 117, 4, -4, 2, 54, 3, -19, 0, 0, 1, 23, 5, 46, 1, -112, 4, 112, 0, 54,
-<a name="l12541"></a>12541 -78, 3, 2, 43, -72, -1, -64, 64, 33, 9, 17, 52, 0, 43, 43, 0, 0, 65, 3, 2, 48, 64, 18, 20, 52,
-<a name="l12542"></a>12542 48, 48, 64, 48, 2, 16, 48, 63, 48, 79, 48, 112, 48, -128, 48, 5, 48, 0, 47, 93, 113, 43, 53, 53, 1,
-<a name="l12543"></a>12543 43, 43, 53, 53, -1, -1, 0, 50, -1, 99, 3, 117, 4, -4, 2, 54, 3, -19, 0, 0, 1, 23, 5, 46, 1,
-<a name="l12544"></a>12544 -112, 4, 112, 0, 54, -78, 3, 2, 43, -72, -1, -64, 64, 33, 9, 17, 52, 0, 43, 43, 0, 0, 65, 3, 2,
-<a name="l12545"></a>12545 48, 64, 18, 20, 52, 48, 48, 64, 48, 2, 16, 48, 63, 48, 79, 48, 112, 48, -128, 48, 5, 48, 0, 47, 93,
-<a name="l12546"></a>12546 113, 43, 53, 53, 1, 43, 43, 53, 53, -1, -1, 0, 50, -1, 99, 3, 127, 5, -81, 2, 54, 3, -19, 0, 0,
-<a name="l12547"></a>12547 1, 23, 5, 47, 1, -112, 5, 35, 0, 66, -77, 4, 3, 2, 47, -72, -1, -64, 64, 25, 9, 21, 52, 0, 47,
-<a name="l12548"></a>12548 47, 0, 0, 65, 4, 3, 2, 16, 52, 48, 52, 64, 52, 3, 47, 52, -81, 52, 2, 52, -72, -1, -64, -77, 15,
-<a name="l12549"></a>12549 17, 52, 52, -72, -1, -64, -77, 14, 17, 52, 52, 0, 47, 43, 43, 93, 113, 53, 53, 53, 1, 43, 43, 53, 53,
-<a name="l12550"></a>12550 53, -1, -1, 0, 50, -1, 99, 3, 127, 5, -81, 2, 54, 3, -19, 0, 0, 1, 23, 5, 47, 1, -112, 5, 35,
-<a name="l12551"></a>12551 0, 66, -77, 4, 3, 2, 47, -72, -1, -64, 64, 25, 9, 21, 52, 0, 47, 47, 0, 0, 65, 4, 3, 2, 16,
-<a name="l12552"></a>12552 52, 48, 52, 64, 52, 3, 47, 52, -81, 52, 2, 52, -72, -1, -64, -77, 15, 17, 52, 52, -72, -1, -64, -77, 14,
-<a name="l12553"></a>12553 17, 52, 52, 0, 47, 43, 43, 93, 113, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, 1, -1, -70, -1, -89, 4,
-<a name="l12554"></a>12554 -39, 3, -78, 0, 54, 0, -42, 64, 48, 73, 38, 1, 58, 38, 1, 101, 39, 117, 39, 2, -121, 38, 1, 116, 38,
-<a name="l12555"></a>12555 1, 99, 38, 1, 84, 38, 1, -125, 34, 1, 102, 34, 118, 34, 2, -114, 32, 1, 3, 104, 32, 120, 32, 2, 9,
-<a name="l12556"></a>12556 20, 25, 20, 41, 20, 3, 47, -72, 3, 12, -77, 8, 8, 33, 41, -72, 2, -3, 64, 15, 15, 2, 2, 15, 0,
-<a name="l12557"></a>12557 0, 15, 15, 56, 89, 26, 1, 26, 21, 31, -72, 2, -5, 64, 17, 54, 29, 70, 29, 2, 36, 29, 1, 2, 29,
-<a name="l12558"></a>12558 18, 29, 2, 2, 29, 29, 33, -72, 3, 12, -76, 27, 21, 2, 11, 4, -66, 2, -17, 0, 53, 3, 4, 0, 11,
-<a name="l12559"></a>12559 2, -17, 0, 44, 2, -21, -77, 28, 27, 31, 29, -70, 3, 7, 0, 35, 2, -17, -73, 0, 19, 16, 19, 32, 19,
-<a name="l12560"></a>12560 3, 19, -71, 3, 13, 1, 57, -123, 0, 63, 93, -19, 63, 51, -51, 57, 63, -19, 63, -19, 17, 57, 1, 47, -50,
-<a name="l12561"></a>12561 -19, 50, 25, 47, 95, 93, 93, 93, -19, 18, 57, 93, 17, 51, 24, 47, 51, 47, 18, 57, 61, 47, 24, 16, -19,
-<a name="l12562"></a>12562 17, 57, 47, -19, 49, 48, 0, 93, 93, 95, 93, 93, 93, 93, 93, 93, 93, 93, 1, 93, 93, 1, 20, 7, 38,
-<a name="l12563"></a>12563 35, 34, 7, 6, 21, 20, 51, 51, 50, 23, 22, 21, 16, 5, 6, 33, 32, 17, 52, 55, 54, 55, 55, 7, 53,
-<a name="l12564"></a>12564 37, 22, 23, 6, 21, 20, 33, 50, 55, 54, 55, 54, 53, 52, 35, 35, 34, 38, 53, 52, 55, 54, 55, 54, 51,
-<a name="l12565"></a>12565 50, 4, -39, 14, 75, 107, 87, 96, 88, 96, 80, 123, 66, 48, -2, -3, -59, -2, -51, -2, -118, 34, 31, 41, 18,
-<a name="l12566"></a>12566 -12, 1, 32, 17, 26, -126, 1, 70, 120, -97, 83, 113, -98, 53, -22, 46, 63, 55, 60, 85, 102, 103, -114, 3, 32,
-<a name="l12567"></a>12567 15, 98, 97, 101, 93, 55, 38, 11, 8, 65, -2, -20, -128, 98, 1, 39, 104, 114, 104, 78, 33, 126, 61, -106, 5,
-<a name="l12568"></a>12568 11, -25, -105, -12, 48, 25, 50, 70, 37, 31, 65, 46, 67, 115, 125, 84, 101, 0, 1, -1, -70, -1, 31, 4, -75,
-<a name="l12569"></a>12569 2, 5, 0, 54, 0, -54, 64, 28, 24, 50, 1, 7, 50, 1, 54, 33, 1, -125, 32, 1, 100, 32, 116, 32, 2,
-<a name="l12570"></a>12570 86, 32, 1, 69, 32, 1, 8, 17, 1, 3, 49, -69, 3, 12, 0, 3, 0, 39, 3, 12, 64, 14, 11, 4, 11,
-<a name="l12571"></a>12571 1, 3, 11, 3, 11, 31, 0, 56, 23, 19, 27, -72, 2, -5, 64, 12, 20, 26, 36, 26, 2, 2, 26, 1, 2,
-<a name="l12572"></a>12572 26, 26, 31, -72, 3, 12, 64, 13, 24, 19, 0, 5, 16, 5, 2, 45, 5, 45, 5, 1, 35, -72, 2, -17, 64,
-<a name="l12573"></a>12573 14, 64, 15, 1, 49, 15, 1, 0, 15, 16, 15, 32, 15, 3, 15, -72, 3, 14, 64, 16, 89, 25, 1, 72, 25,
-<a name="l12574"></a>12574 1, 57, 25, 1, 25, 23, 24, 27, 26, 26, 54, -69, 2, -17, 0, 1, 2, -21, 1, 57, -123, 0, 63, -19, 50,
-<a name="l12575"></a>12575 47, 51, -51, 57, 57, 93, 93, 93, 63, 93, 93, 93, -19, 17, 57, 57, 47, 47, 93, 1, 47, -50, -19, 50, 25,
-<a name="l12576"></a>12576 47, 95, 93, 93, -19, 18, 57, 16, -64, 17, 57, 57, 24, 47, 47, 93, 16, -19, 16, -19, 49, 48, 0, 95, 93,
-<a name="l12577"></a>12577 93, 93, 93, 93, 93, 93, 1, 93, 1, 35, 32, 21, 20, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 35, 34,
-<a name="l12578"></a>12578 39, 38, 53, 52, 55, 54, 55, 7, 53, 37, 23, 6, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 39,
-<a name="l12579"></a>12579 38, 39, 38, 39, 38, 35, 34, 53, 52, 55, 54, 51, 51, 4, -75, -81, -2, -53, 93, 58, 112, 47, 19, 29, -72,
-<a name="l12580"></a>12580 127, -1, -71, 124, -88, 64, 18, 46, -22, 1, 35, 40, 26, 49, 57, -84, 116, -81, -113, 109, -122, 15, 8, 42, 17,
-<a name="l12581"></a>12581 67, 54, 22, 117, -22, 75, 85, -81, 1, 37, 40, 33, 13, 6, 9, 15, 37, -34, 84, 59, 56, 76, -93, 116, -126,
-<a name="l12582"></a>12582 36, 75, 121, 61, -106, 20, 43, 86, 106, 74, -112, 62, 42, 22, 27, 47, 18, 8, 5, 3, 3, 4, 3, 66, -29,
-<a name="l12583"></a>12583 71, 23, -1, -1, 0, 50, -1, -89, 4, -39, 4, 45, 2, 54, 3, 53, 0, 0, 1, 23, 5, 54, 0, -56, -2,
-<a name="l12584"></a>12584 112, 0, 29, 64, 19, 1, 0, 63, 16, 63, 2, 0, 63, 60, 36, 10, 65, 1, 15, 62, 95, 62, 2, 62, 0,
-<a name="l12585"></a>12585 47, 93, 53, 1, 43, 93, 53, 0, -1, -1, 0, 36, -1, 31, 4, -75, 3, 101, 2, 54, 3, 54, 0, 0, 1,
-<a name="l12586"></a>12586 23, 5, 54, 0, -56, -3, -88, 0, 31, 64, 21, 1, -112, 55, -96, 55, -48, 55, 3, 56, 55, 55, 47, 47, 65,
-<a name="l12587"></a>12587 1, 15, 57, 63, 57, 2, 57, 0, 47, 93, 53, 1, 43, 93, 53, 0, -1, -1, -1, -70, -1, 114, 1, -12, 4,
-<a name="l12588"></a>12588 -11, 2, 54, 3, -13, 0, 0, 1, 23, 5, 54, 0, 8, -1, 56, 0, 49, 64, 36, 3, 0, 21, 21, 0, 0,
-<a name="l12589"></a>12589 65, 3, 111, 23, 127, 23, 2, 47, 23, 1, 15, 23, 31, 23, 63, 23, 95, 23, 4, 23, 64, 16, 18, 52, 23,
-<a name="l12590"></a>12590 64, 38, 42, 52, 23, 0, 47, 43, 43, 93, 113, 114, 53, 1, 43, 53, 0, -1, -1, -1, -70, -1, 114, 1, -12,
-<a name="l12591"></a>12591 4, -11, 2, 54, 3, -13, 0, 0, 1, 23, 5, 54, 0, 8, -1, 56, 0, 49, 64, 36, 3, 0, 21, 21, 0,
-<a name="l12592"></a>12592 0, 65, 3, 111, 23, 127, 23, 2, 47, 23, 1, 15, 23, 31, 23, 63, 23, 95, 23, 4, 23, 64, 16, 18, 52,
-<a name="l12593"></a>12593 23, 64, 38, 42, 52, 23, 0, 47, 43, 43, 93, 113, 114, 53, 1, 43, 53, 0, -1, -1, 0, 50, -1, 99, 3,
-<a name="l12594"></a>12594 117, 4, -79, 2, 54, 3, -19, 0, 0, 1, 23, 5, 45, 1, 84, 4, 42, 0, 56, -71, 0, 2, -1, -15, 64,
-<a name="l12595"></a>12595 25, 45, 43, 40, 40, 65, 2, 48, 44, 64, 44, -113, 44, 3, 47, 44, 63, 44, -128, 44, -32, 44, -16, 44, 5,
-<a name="l12596"></a>12596 44, -72, -1, -64, 64, 9, 15, 17, 52, 44, 64, 18, 20, 52, 44, 0, 47, 43, 43, 93, 113, 53, 1, 43, 53,
-<a name="l12597"></a>12597 -1, -1, 0, 50, -1, 99, 3, 117, 4, -79, 2, 54, 3, -19, 0, 0, 1, 23, 5, 45, 1, 84, 4, 42, 0,
-<a name="l12598"></a>12598 56, -71, 0, 2, -1, -15, 64, 25, 45, 43, 40, 40, 65, 2, 48, 44, 64, 44, -113, 44, 3, 47, 44, 63, 44,
-<a name="l12599"></a>12599 -128, 44, -32, 44, -16, 44, 5, 44, -72, -1, -64, 64, 9, 15, 17, 52, 44, 64, 18, 20, 52, 44, 0, 47, 43,
-<a name="l12600"></a>12600 43, 93, 113, 53, 1, 43, 53, -1, -1, 0, 50, -2, -116, 4, -39, 3, -78, 2, 54, 3, 53, 0, 0, 1, 23,
-<a name="l12601"></a>12601 6, 112, 1, 44, -1, 16, 0, 56, -74, 2, 1, -64, 62, -48, 62, 2, -72, -1, -64, 64, 15, 62, 64, 26, 18,
-<a name="l12602"></a>12602 65, 2, 1, -80, 65, -64, 65, -48, 65, 3, 65, -72, -1, -64, -77, 18, 21, 52, 65, -72, -1, -64, -77, 9, 12,
-<a name="l12603"></a>12603 52, 65, 0, 47, 43, 43, 113, 53, 53, 1, 43, 93, 53, 53, -1, -1, 0, 36, -2, 78, 4, -75, 2, 5, 2,
-<a name="l12604"></a>12604 54, 3, 54, 0, 0, 1, 23, 6, 112, 1, 64, -2, -46, 0, 59, 64, 14, 2, 1, 0, 57, 1, 0, 57, 59,
-<a name="l12605"></a>12605 21, 13, 65, 2, 1, 58, -72, -1, -64, -77, 74, 76, 52, 58, -72, -1, -64, -77, 64, 71, 52, 58, -72, -1, -64,
-<a name="l12606"></a>12606 -74, 45, 54, 52, -48, 58, 1, 58, -72, 3, 14, 0, 63, 93, 43, 43, 43, 53, 53, 1, 43, 93, 53, 53, 0,
-<a name="l12607"></a>12607 -1, -1, -1, -70, -2, -84, 1, -12, 3, -90, 2, 54, 5, 41, 0, 0, 1, 22, 5, 49, 0, 0, 0, 36, 64,
-<a name="l12608"></a>12608 16, 2, 1, 35, 15, 17, 1, 0, 65, 2, 1, 18, 64, 12, 21, 52, 18, -72, -1, -64, -77, 9, 10, 52, 18,
-<a name="l12609"></a>12609 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, -1, -70, -2, -84, 1, -12, 3, -90, 2, 54, 5, 41, 0,
-<a name="l12610"></a>12610 0, 1, 22, 5, 49, 0, 0, 0, 36, 64, 16, 2, 1, 35, 15, 17, 1, 0, 65, 2, 1, 18, 64, 12, 21,
-<a name="l12611"></a>12611 52, 18, -72, -1, -64, -77, 9, 10, 52, 18, 0, 47, 43, 43, 53, 53, 1, 43, 53, 53, -1, -1, 0, 50, -2,
-<a name="l12612"></a>12612 -88, 4, -39, 3, -78, 2, 54, 3, 53, 0, 0, 1, 23, 6, 113, 1, 84, -1, 56, 0, 59, -77, 3, 2, 1,
-<a name="l12613"></a>12613 70, -72, -1, -64, -78, 9, 24, 52, -72, -1, -20, 64, 12, 70, 60, 26, 18, 65, 3, 2, 1, 31, 65, 1, 65,
-<a name="l12614"></a>12614 -72, -1, -64, -77, 17, 22, 52, 65, -72, -1, -64, -77, 9, 15, 52, 65, 0, 47, 43, 43, 113, 53, 53, 53, 1,
-<a name="l12615"></a>12615 43, 43, 53, 53, 53, 0, -1, -1, 0, 36, -2, 78, 4, -75, 2, 5, 2, 54, 3, 54, 0, 0, 1, 23, 6,
-<a name="l12616"></a>12616 113, 1, 64, -2, -34, 0, 57, -77, 3, 2, 1, 65, -72, -1, -64, 64, 22, 10, 14, 52, 0, 65, 55, 21, 13,
-<a name="l12617"></a>12617 65, 3, 2, 1, 58, 64, 73, 53, -49, 58, -33, 58, 2, 58, -72, -1, -64, -77, 9, 13, 52, 58, -72, 3, 14,
-<a name="l12618"></a>12618 0, 63, 43, 114, 43, 53, 53, 53, 1, 43, 43, 53, 53, 53, 0, 0, 1, 0, 69, -1, -51, 6, 127, 2, -5,
-<a name="l12619"></a>12619 0, 40, 0, -73, 64, 64, 11, 15, 27, 15, 2, 21, 3, 0, 11, 16, 11, 2, 26, 5, 23, 25, 25, 64, 23,
-<a name="l12620"></a>12620 25, 52, 25, 25, 37, 1, 40, 42, 37, 64, 30, 37, 52, 37, 6, 41, 35, 1, 15, 33, 1, -1, 33, 1, 42,
-<a name="l12621"></a>12621 33, 1, 3, 15, 33, 63, 33, 79, 33, -81, 33, -65, 33, 5, 11, 5, 35, 33, 39, 27, -72, 2, -17, 64, 25,
-<a name="l12622"></a>12622 19, 64, 13, 32, 28, 37, 52, 13, 32, 23, 25, 52, 13, 32, 18, 22, 52, 15, 13, 31, 13, 2, 26, 3, 9,
-<a name="l12623"></a>12623 -72, -1, -24, 64, 17, 9, 12, 52, -75, 9, -59, 9, -43, 9, 3, 9, 13, 39, 25, 19, 0, 39, -71, 2, -17,
-<a name="l12624"></a>12624 0, 2, 0, 47, -19, 57, 47, -51, 18, 57, 57, 93, 43, 0, 95, 94, 93, 43, 43, 43, 0, 26, 24, 16, 77,
-<a name="l12625"></a>12625 -19, 17, 57, 57, 95, 94, 93, 95, 113, 93, 113, 113, 1, 47, -51, 43, 1, 16, -64, 50, 17, 57, 25, 47, 43,
-<a name="l12626"></a>12626 1, 17, 51, 49, 48, 0, 95, 94, 93, 95, 94, 93, 37, 7, 33, 34, 39, 38, 39, 38, 54, 55, 54, 55, 54,
-<a name="l12627"></a>12627 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 38, 35, 34, 7, 6, 7, 6, 7, 6, 7, 6, 21,
-<a name="l12628"></a>12628 20, 51, 33, 6, 127, -3, -5, 111, 116, 25, 28, 1, 2, 53, 34, 24, -124, 89, 89, 81, 100, 70, 4, 31, 33,
-<a name="l12629"></a>12629 42, 25, 22, 11, 61, 61, 54, 65, 4, 50, 36, 30, 101, -104, 120, 94, 5, -120, 114, -91, 14, 16, 32, 64, -73,
-<a name="l12630"></a>12630 40, 27, 73, 48, 48, 47, 111, 78, 4, 29, 54, 48, 71, 77, 46, 124, 76, 5, 77, 55, 14, 52, 77, 58, 25,
-<a name="l12631"></a>12631 29, 0, 0, 1, 0, 69, -2, 87, 6, 127, 1, -45, 0, 24, 0, 73, 64, 15, -119, 17, 1, 71, 12, 87, 12,
-<a name="l12632"></a>12632 103, 12, 3, 0, 23, 15, 26, 20, -72, 3, 12, 64, 10, 5, 18, 16, 118, 11, 1, 9, 11, 22, 14, -65, 2,
-<a name="l12633"></a>12633 -17, 0, 16, 2, -21, 0, 24, 0, 22, 2, -17, 0, 1, 3, 6, 0, 63, -19, 57, 63, -19, 17, 57, 57, 93,
-<a name="l12634"></a>12634 18, 57, 1, 47, -19, 16, -48, -64, 50, 49, 48, 0, 93, 93, 1, 33, 34, 39, 38, 39, 38, 55, 54, 55, 54,
-<a name="l12635"></a>12635 55, 0, 33, 51, 21, 35, 32, 1, 6, 21, 20, 51, 33, 21, 5, -126, -5, 111, 116, 25, 28, 1, 2, 30, 29,
-<a name="l12636"></a>12636 28, 49, 112, 1, -76, 2, -94, -20, -14, -3, 87, -2, 42, 117, 94, 5, -120, -2, 87, 14, 16, 32, 60, 98, 117,
-<a name="l12637"></a>12637 44, 72, 100, 1, 83, -82, -2, -108, 106, 45, 29, 9, -1, -1, 0, 69, -1, -51, 6, 127, 3, -22, 2, 54, 6,
-<a name="l12638"></a>12638 64, 0, 0, 1, 23, 5, 57, 1, 44, -4, -32, 0, 51, -79, 1, 41, -72, -1, -64, -75, 11, 27, 52, -48, 41,
-<a name="l12639"></a>12639 1, -72, -1, 113, 64, 22, 41, 41, 19, 19, 65, 1, 111, 46, -97, 46, 2, 46, 64, 21, 23, 52, 46, 64, 9,
-<a name="l12640"></a>12640 12, 52, 46, 0, 47, 43, 43, 93, 53, 1, 43, 113, 43, 53, 0, -1, -1, 0, 69, -2, 87, 6, 127, 3, -102,
-<a name="l12641"></a>12641 2, 54, 6, 65, 0, 0, 1, 23, 5, 57, 3, -24, -4, -112, 0, 37, 64, 26, 1, 0, 30, 35, 5, 14, 65,
-<a name="l12642"></a>12642 1, 16, 30, 47, 30, 95, 30, 3, 30, 64, 18, 21, 52, 30, 64, 9, 13, 52, 30, 0, 47, 43, 43, 93, 53,
-<a name="l12643"></a>12643 1, 43, 53, 0, 0, 1, 0, 40, 1, 37, 1, -128, 1, -45, 0, 3, 0, 30, -71, 0, 0, -1, -64, -74, 9,
-<a name="l12644"></a>12644 25, 52, 0, 5, 1, 3, -70, 2, -17, 0, 1, 2, -21, 0, 63, -19, 1, 47, 16, -58, 43, 49, 48, 1, 33,
-<a name="l12645"></a>12645 53, 33, 1, -128, -2, -88, 1, 88, 1, 37, -82, 0, 0, 2, -2, 41, 4, 38, 1, -38, 7, 22, 0, 49, 0,
-<a name="l12646"></a>12646 58, 0, -21, -71, 0, 42, -1, -16, 64, 40, 33, 36, 52, 20, 16, 9, 15, 52, 9, 20, 25, 20, 41, 20, 3,
-<a name="l12647"></a>12647 22, 56, 50, 12, 12, 50, 42, 40, 37, 3, 15, 39, 1, 38, 3, 39, 35, 64, 33, 34, 26, 27, 24, 31, 31,
-<a name="l12648"></a>12648 -72, -1, -64, 64, 31, 7, 19, 52, 31, 34, 64, 24, 64, 7, 18, 52, 24, 23, 34, 22, 35, 35, 17, 50, 49,
-<a name="l12649"></a>12649 9, 17, 0, 47, 1, 36, 3, 47, 52, 64, 52, -72, -1, -64, 64, 30, 12, 19, 52, 52, 39, 40, 56, 27, 31,
-<a name="l12650"></a>12650 24, 23, 34, 5, 33, 0, 26, 1, 13, 3, 26, 3, 1, 44, 35, 22, 56, 64, 5, 1, 1, -72, -1, -64, 64,
-<a name="l12651"></a>12651 22, 21, 24, 52, 47, 1, 63, 1, 2, 1, 12, 31, 13, 63, 13, 95, 13, 127, 13, -97, 13, 5, 13, -72, 1,
-<a name="l12652"></a>12652 87, -123, 0, 47, 93, -51, -60, 93, 43, 0, 16, -64, 26, 24, -35, -64, -64, -64, 18, 57, 47, 95, 94, 93, -52,
-<a name="l12653"></a>12653 23, 57, 16, -52, 57, -60, 43, 0, 26, 24, 16, -51, 95, 94, 93, 1, 47, -51, 47, -51, 18, 57, 47, -51, -42,
-<a name="l12654"></a>12654 -35, -51, 43, 1, 26, 24, 16, -51, 43, 1, 17, 18, 57, 57, 18, 57, 26, 24, 16, -34, 95, 94, 93, 50, 50,
-<a name="l12655"></a>12655 -51, 50, 17, 57, 47, 17, 57, 49, 48, 94, 93, 43, 43, 1, 33, 34, 39, 6, 35, 35, 34, 6, 21, 20, 51,
-<a name="l12656"></a>12656 33, 21, 33, 34, 38, 39, 38, 55, 54, 51, 51, 3, 39, 52, 55, 23, 20, 23, 22, 23, 20, 7, 39, 19, 50,
-<a name="l12657"></a>12657 53, 52, 39, 55, 22, 23, 22, 51, 50, 54, 51, 50, 21, 7, 52, 35, 34, 7, 6, 7, 51, 50, 1, -38, -2,
-<a name="l12658"></a>12658 101, 34, 27, 35, 69, 99, 91, -119, 45, 2, -108, -3, 105, 56, 24, 1, 3, 41, 105, -115, 31, 47, 25, 23, 7,
-<a name="l12659"></a>12659 31, 5, 43, 13, 23, 47, 86, 7, 19, 22, 2, 21, 45, 43, -75, 58, 109, 78, 54, 38, 44, 72, 16, -98, 66,
-<a name="l12660"></a>12660 5, 28, 30, 30, 98, 52, 13, 83, 14, 15, 74, 63, -93, 1, 38, 12, 62, 55, 5, 28, 13, 2, 17, 59, 33,
-<a name="l12661"></a>12661 8, -2, -18, 51, 23, 35, 29, 86, 4, 48, -83, -121, 1, 49, 29, 49, 8, 0, 0, 4, -2, -94, 4, 38, 1,
-<a name="l12662"></a>12662 -115, 7, 22, 0, 3, 0, 7, 0, 55, 0, 65, 1, -96, 64, 67, 40, 8, 24, 31, 52, 15, 16, 22, 26, 52,
-<a name="l12663"></a>12663 15, 16, 11, 17, 52, 28, 22, 21, 3, 19, 26, 7, 5, 6, 4, 3, 1, 2, 0, 47, 6, 1, 15, 6, 1,
-<a name="l12664"></a>12664 28, 3, 6, 4, 64, 4, 64, 9, 14, 52, 4, 32, 0, 1, 0, 0, 1, 28, 3, 0, 2, 64, 2, 64, 35,
-<a name="l12665"></a>12665 36, 52, 2, 2, 47, 38, 26, -72, -1, -64, -77, 28, 32, 52, 26, -72, -1, -64, 64, 18, 9, 21, 52, 26, 29,
-<a name="l12666"></a>12666 64, 19, 64, 7, 18, 52, 19, 18, 29, 17, 30, 64, 30, -72, -1, -64, 64, 101, 15, 17, 52, 0, 30, 16, 30,
-<a name="l12667"></a>12667 32, 30, 3, 64, -48, 30, -32, 30, -16, 30, 3, 0, 30, 16, 30, -64, 30, -48, 30, 4, 0, 30, 16, 30, -16,
-<a name="l12668"></a>12668 30, 3, 9, 3, 30, 30, 47, 12, 56, 24, 32, 36, 52, 56, 33, 31, 62, -112, 38, 1, 15, 38, 31, 38, 2,
-<a name="l12669"></a>12669 15, 3, 38, 31, 55, 47, 52, 64, 12, 15, 60, 47, 60, 79, 60, 95, 60, 4, 54, 5, 64, 60, 36, 42, 5,
-<a name="l12670"></a>12670 36, 64, 19, 23, 52, 36, 30, 6, 4, 5, 7, 2, 0, 1, 3, 5, 7, 64, 7, -72, -1, -64, 64, 24, 17,
-<a name="l12671"></a>12671 23, 52, 7, 1, 3, 22, 26, 19, 18, 29, 5, 28, 0, 21, 1, 13, 3, 21, 17, 30, 48, 64, 48, -72, -1,
-<a name="l12672"></a>12672 -64, 64, 29, 21, 25, 52, 80, 48, 96, 48, 112, 48, 3, 47, 48, 63, 48, 2, 48, 55, 31, 8, 63, 8, 95,
-<a name="l12673"></a>12673 8, 127, 8, -97, 8, 5, 8, -72, 1, 87, -123, 0, 47, 93, -51, -60, 93, 113, 43, 0, 26, 24, 16, -35, -64,
-<a name="l12674"></a>12674 47, 95, 94, 93, -52, 23, 57, -48, -51, -58, 43, 0, 26, 24, 16, -51, 17, 18, 57, 57, 17, 18, 57, 57, 16,
-<a name="l12675"></a>12675 -58, 43, 0, 24, 16, -58, 17, 57, 57, 95, 94, 93, 1, 47, 26, -51, 47, -58, -51, -36, 95, 94, 93, 93, -51,
-<a name="l12676"></a>12676 17, 57, 57, 43, 1, 17, 18, 57, 24, 47, 95, 94, 93, 113, 114, 94, 93, 43, 1, 26, 24, 16, -51, -42, -35,
-<a name="l12677"></a>12677 -51, 43, 1, 26, 24, 16, -51, 43, 43, 1, 17, 18, 57, 24, 47, 43, 1, 26, 24, 16, -51, 95, 94, 93, 113,
-<a name="l12678"></a>12678 -58, 43, 1, 26, 24, 16, -51, 95, 94, 93, 113, 17, 18, 57, 57, 17, 18, 57, 57, 17, 18, 23, 57, 49, 48,
-<a name="l12679"></a>12679 1, 43, 43, 43, 1, 7, 39, 55, 7, 7, 39, 55, 1, 33, 34, 38, 39, 38, 55, 54, 51, 51, 3, 39, 52,
-<a name="l12680"></a>12680 55, 23, 20, 23, 22, 23, 20, 7, 39, 19, 51, 52, 39, 6, 6, 35, 34, 53, 52, 55, 54, 51, 50, 23, 22,
-<a name="l12681"></a>12681 21, 21, 33, 34, 7, 6, 21, 20, 51, 33, 3, 38, 39, 38, 35, 34, 21, 20, 51, 50, 1, 15, 36, 77, 35,
-<a name="l12682"></a>12682 30, 36, 77, 35, 1, 56, -3, 105, 56, 24, 1, 3, 42, 105, -116, 32, 46, 25, 23, 7, 31, 5, 43, 13, 23,
-<a name="l12683"></a>12683 46, -13, 10, 15, 46, 16, 82, 20, 26, 48, 57, 32, 26, -2, -124, 90, 71, 66, 44, 2, -108, -82, 6, 16, 19,
-<a name="l12684"></a>12684 19, 29, 42, 21, 6, -18, 69, 40, 69, 83, 69, 40, 69, -3, 59, 14, 15, 73, 64, -93, 1, 38, 12, 62, 55,
-<a name="l12685"></a>12685 5, 28, 13, 2, 17, 59, 33, 8, -2, -18, 23, 37, 5, 13, 66, 46, 50, 65, 91, 75, 82, 104, 50, 48, 52,
-<a name="l12686"></a>12686 13, 1, 125, 16, 19, 23, 46, 28, 0, 0, 2, -1, 48, 4, 38, 0, -47, 5, 42, 0, 14, 0, 23, 0, 115,
-<a name="l12687"></a>12687 64, 11, 10, 16, 57, 66, 52, 16, 16, 29, 36, 52, 22, -72, -1, -46, 64, 29, 29, 47, 52, 17, 21, 15, 12,
-<a name="l12688"></a>12688 0, 3, 10, 21, 64, 21, 64, 7, 17, 52, 21, 21, 6, 15, 0, 6, 21, 23, 12, 17, 64, 17, -72, -1, -64,
-<a name="l12689"></a>12689 64, 21, 7, 17, 52, 17, 3, 0, 23, 8, 5, 31, 0, 63, 0, 95, 0, 127, 0, -97, 0, 5, 0, 0, 47,
-<a name="l12690"></a>12690 93, -48, -35, -44, 17, 57, -50, 43, 0, 26, 24, 16, -51, 18, 57, 1, 47, -44, -51, 17, 57, 47, 43, 1, 26,
-<a name="l12691"></a>12691 24, 16, -51, 57, 17, 57, 17, 18, 57, 49, 48, 1, 43, 43, 43, 19, 35, 34, 39, 6, 35, 35, 53, 51, 50,
-<a name="l12692"></a>12692 55, 54, 55, 22, 21, 39, 38, 39, 6, 7, 6, 7, 22, 23, -47, 49, 81, 73, 49, 91, 74, 73, 76, 48, 62,
-<a name="l12693"></a>12693 80, 78, 55, 12, 36, 21, 17, 13, 12, 41, 66, 4, 38, 60, 60, 83, 69, 89, 19, 119, 59, 11, 54, 47, 5,
-<a name="l12694"></a>12694 17, 12, 21, 44, 8, 0, 2, -1, 29, 4, 38, 0, -28, 6, -101, 0, 49, 0, 57, 0, -26, 64, 20, 13, 41,
-<a name="l12695"></a>12695 29, 41, 2, 46, 4, 35, 9, 24, 31, 50, 19, 40, 42, 17, 13, 54, 64, 52, -72, -1, -24, 64, 17, 22, 25,
-<a name="l12696"></a>12696 52, 0, 5, 16, 5, 32, 5, 3, 29, 5, 52, 5, 54, 3, 54, -72, -1, -32, 64, 45, 46, 59, 52, 54, 64,
-<a name="l12697"></a>12697 7, 11, 52, 54, 50, 64, 45, 46, 43, 0, 43, 64, 9, 24, 52, 43, 42, 3, 1, 3, 0, 50, 64, 11, 9,
-<a name="l12698"></a>12698 2, 3, 0, 31, 27, 24, 24, 54, 33, 19, 16, 32, 37, 52, 5, -72, -1, -32, 64, 44, 15, 21, 52, 40, 5,
-<a name="l12699"></a>12699 19, 52, 4, 54, 46, 0, 43, 42, 2, 5, 1, 45, 33, 13, 11, 11, 56, 17, 15, 54, 31, 54, 47, 54, 3,
-<a name="l12700"></a>12700 64, 54, 31, 13, 63, 13, 95, 13, 127, 13, -97, 13, 5, 13, -72, 1, 87, -123, 0, 47, 93, -51, 94, 93, 50,
-<a name="l12701"></a>12701 50, 57, 47, 16, -44, -42, -51, 23, 57, 17, 23, 57, 43, 43, 0, 17, 18, 57, 24, 47, 51, 1, 47, -44, -44,
-<a name="l12702"></a>12702 50, -44, 50, 26, -51, 17, 18, 57, 16, -35, -51, 43, 1, 17, 18, 57, 57, 26, 24, 16, -50, 43, 43, 1, 17,
-<a name="l12703"></a>12703 18, 57, 57, 95, 94, 93, 43, 1, 26, 24, 16, -51, 50, 17, 57, 57, 17, 18, 57, 17, 57, 49, 48, 95, 94,
-<a name="l12704"></a>12704 93, 19, 7, 39, 23, 22, 7, 22, 23, 22, 21, 20, 7, 6, 35, 52, 55, 54, 55, 54, 55, 38, 39, 38, 38,
-<a name="l12705"></a>12705 35, 34, 6, 35, 34, 39, 38, 53, 52, 51, 50, 23, 22, 23, 23, 22, 23, 54, 53, 39, 52, 55, 23, 22, 23,
-<a name="l12706"></a>12706 22, 3, 52, 39, 6, 7, 50, 55, 54, -28, 23, 28, 1, 3, 75, 17, 8, 11, 5, 106, 114, 1, 2, 9, 81,
-<a name="l12707"></a>12707 56, 29, 20, 23, 66, 18, 6, 23, 4, 21, 53, 30, 24, 36, 93, 40, 31, 48, 21, 23, 55, 28, 21, 11, 2,
-<a name="l12708"></a>12708 50, 10, 106, 22, 34, 64, 59, 21, 40, 6, 92, 86, 14, 44, 127, 126, 31, 22, 30, 31, 34, 25, 24, 5, 10,
-<a name="l12709"></a>12709 36, 31, 43, 70, 55, 34, 40, 98, 11, 67, 38, 33, 72, 125, 54, 50, 78, 35, 45, 111, -91, 16, 59, 44, 3,
-<a name="l12710"></a>12710 24, 24, 5, -2, 41, 18, 41, 44, 40, 3, 6, 0, 2, -1, 18, 4, 38, 0, -18, 6, -103, 0, 3, 0, 38,
-<a name="l12711"></a>12711 0, -26, 64, 23, 34, 16, 21, 24, 52, 0, 36, 32, 36, 2, 18, 5, 8, 32, 21, 28, 52, 7, 16, 21, 28,
-<a name="l12712"></a>12712 52, 36, -72, -1, -16, 64, 116, 30, 33, 52, 33, 16, 30, 33, 52, 3, 1, 0, 0, 1, 28, 3, 0, 2, 64,
-<a name="l12713"></a>12713 2, 64, 21, 24, 52, 63, 2, 1, 0, 2, 1, 12, 3, 2, 2, 30, 10, 14, 24, 34, 47, 52, 14, 24, 21,
-<a name="l12714"></a>12714 24, 52, 10, 14, 26, 14, 2, 10, 14, 19, 30, 5, 10, 38, 31, 30, 19, 35, 10, 2, 0, 15, 1, 1, 28,
-<a name="l12715"></a>12715 3, 1, 3, 64, 3, 64, 9, 14, 52, 3, 3, 31, 37, 27, 23, 30, 19, 14, 17, 31, 4, 37, -49, 31, 1,
-<a name="l12716"></a>12716 -128, 31, 1, 16, 31, 80, 31, -96, 31, 3, 31, 31, 5, 63, 5, 95, 5, 127, 5, -97, 5, 5, 5, -72, 1,
-<a name="l12717"></a>12717 107, -123, 0, 47, 93, -60, 93, 113, 93, -51, 57, 16, -60, 50, 50, -35, -60, 51, 17, 18, 57, 47, 43, 0, 26,
-<a name="l12718"></a>12718 24, 16, -51, 95, 94, 93, 57, 57, 1, 47, -51, -60, -44, 50, -58, 17, 57, 17, 18, 57, 94, 93, 43, 43, 1,
-<a name="l12719"></a>12719 17, 18, 57, 24, 47, 95, 94, 93, 93, 43, 1, 26, 24, 16, -51, 95, 94, 93, 57, 57, 49, 48, 0, 43, 43,
-<a name="l12720"></a>12720 43, 43, 1, 95, 94, 93, 43, 19, 7, 39, 55, 19, 7, 35, 34, 39, 38, 53, 52, 55, 54, 55, 34, 38, 35,
-<a name="l12721"></a>12721 34, 7, 54, 55, 54, 51, 50, 23, 22, 51, 50, 54, 51, 7, 6, 7, 6, 21, 20, 33, 51, 102, 40, 73, 37,
-<a name="l12722"></a>12722 -44, 107, 28, -38, 76, 47, 120, 12, 72, 9, 37, 9, 46, 90, 19, 17, 36, 84, 33, 95, 44, 35, 13, 54, 13,
-<a name="l12723"></a>12723 18, 98, 72, -19, 1, 99, 88, 5, 113, 72, 43, 69, -2, -37, 78, 92, 57, 95, -115, 95, 9, 48, 3, 18, 53,
-<a name="l12724"></a>12724 17, 35, 11, 6, 7, 83, 17, 22, 73, -113, -60, 0, 3, -1, -110, 4, 38, 0, 111, 5, 19, 0, 3, 0, 7,
-<a name="l12725"></a>12725 0, 11, 0, -106, -71, 0, 5, -1, -16, -77, 29, 46, 52, 8, -72, -1, -8, 64, 83, 29, 46, 52, 2, 8, 29,
-<a name="l12726"></a>12726 46, 52, 11, 9, 47, 10, 1, 15, 10, 1, 10, 8, 7, 5, 47, 6, 1, 15, 6, 1, 6, 48, 4, 64, 4,
-<a name="l12727"></a>12727 80, 4, 3, 4, 8, 3, 1, 32, 0, 1, 0, 0, 1, 0, 2, 0, 8, 1, 28, 3, 8, 6, 4, 7, 5,
-<a name="l12728"></a>12728 0, 2, 1, 3, 64, 3, 64, 29, 40, 52, 3, 5, 10, 8, 11, 31, 9, 63, 9, 95, 9, 127, 9, -97, 9,
-<a name="l12729"></a>12729 5, 9, 0, 47, 93, -35, 57, 57, -42, -58, 43, 0, 26, 24, 16, -51, 57, 57, 16, -51, 57, 57, 1, 47, 95,
-<a name="l12730"></a>12730 94, 93, -42, -51, 93, 113, 57, 57, 16, -44, 114, -51, 93, 113, 57, 57, 16, -51, 93, 113, 57, 57, 49, 48, 0,
-<a name="l12731"></a>12731 43, 43, 1, 43, 19, 7, 39, 55, 39, 7, 39, 55, 23, 7, 39, 55, 111, 37, 76, 35, 14, 37, 76, 35, 62,
-<a name="l12732"></a>12732 37, 76, 35, 4, -105, 69, 40, 69, 44, 69, 40, 69, -88, 69, 40, 69, 0, 0, 1, -2, 126, 4, 38, 1, -126,
-<a name="l12733"></a>12733 6, 4, 0, 51, 1, 19, -75, 11, 32, 19, 25, 52, 8, -72, -1, -24, -77, 25, 33, 52, 7, -72, -1, -16, 64,
-<a name="l12734"></a>12734 61, 25, 34, 52, 59, 11, 75, 11, 91, 11, 3, 15, 26, 31, 26, 47, 26, 3, 25, 5, 47, 47, 0, 46, 46,
-<a name="l12735"></a>12735 38, 44, 28, 28, 27, 32, 27, 64, 18, 25, 52, 27, 25, 64, 6, 32, 32, 64, 26, 29, 52, 32, 64, 9, 18,
-<a name="l12736"></a>12736 52, 32, 32, 12, 3, 35, 37, 38, 64, 39, 38, 38, -72, -1, -64, 64, 35, 14, 23, 52, 38, 38, 12, 44, 0,
-<a name="l12737"></a>12737 64, 0, 64, 9, 13, 52, 0, 7, 16, 23, 16, 39, 16, 3, 17, 16, 12, 0, 17, 1, 19, 3, 17, 19, 64,
-<a name="l12738"></a>12738 12, 38, -72, -1, -64, 64, 49, 8, 13, 52, 46, 47, 42, 33, 47, 38, 37, 38, 27, -128, 28, 1, 28, 33, 17,
-<a name="l12739"></a>12739 -65, 16, -49, 16, -33, 16, 3, 0, 16, 16, 16, 2, 16, 38, 3, 33, 1, 6, 21, 31, 10, 63, 10, 95, 10,
-<a name="l12740"></a>12740 127, 10, -97, 10, 5, 10, -72, 1, 87, -123, 0, 47, 93, -51, -44, -64, -35, 57, -34, -60, 93, 93, 50, 16, -60,
-<a name="l12741"></a>12741 93, 57, 18, 57, 16, -58, 16, -60, 17, 57, 43, 1, 24, 47, 26, -35, -58, 95, 94, 93, 17, 57, 94, 93, 47,
-<a name="l12742"></a>12742 43, 1, 26, 24, 16, -51, 18, 57, 47, 43, 1, 17, 51, 26, 24, 16, -51, 50, 50, 17, 57, 47, 43, 43, 1,
-<a name="l12743"></a>12743 16, -64, 26, 24, -35, -58, 43, 1, 17, 18, 57, 25, 47, 17, 18, 57, 24, 47, 18, 57, 25, 47, 49, 48, 95,
-<a name="l12744"></a>12744 94, 93, 113, 43, 43, 43, 1, 35, 34, 39, 6, 35, 35, 20, 7, 6, 35, 34, 53, 52, 55, 54, 55, 23, 6,
-<a name="l12745"></a>12745 21, 20, 51, 50, 55, 54, 53, 52, 39, 55, 22, 23, 22, 21, 51, 50, 53, 52, 39, 55, 23, 22, 22, 51, 50,
-<a name="l12746"></a>12746 53, 52, 39, 55, 22, 23, 22, 21, 1, -126, 38, 51, 43, 36, 65, 59, 104, 71, 104, -55, 38, 11, 25, 19, 55,
-<a name="l12747"></a>12747 -94, 92, 72, 89, 57, 40, 23, 9, 12, 59, 81, 7, 19, 8, 7, 41, 35, 23, 44, 32, 22, 5, 11, 4, -8,
-<a name="l12748"></a>12748 33, 33, 111, 59, 40, -110, 73, 94, 27, 52, 9, 113, 67, 120, 32, 39, 71, 85, 70, 98, 38, 31, 42, 74, 50,
-<a name="l12749"></a>12749 24, 35, 29, 47, 43, 47, 25, 42, 49, 52, 36, 14, 31, 57, 0, 8, 0, 50, -2, 127, 8, -54, 7, 22, 0,
-<a name="l12750"></a>12750 51, 0, 63, 0, 68, 0, 80, 0, 110, 0, 122, 0, 127, 0, -117, 0, -60, 64, 103, 89, 58, 41, 64, 46, 117,
-<a name="l12751"></a>12751 105, 11, 123, 111, 109, 4, 6, 85, 52, 48, 63, 46, 1, 46, 46, 1, 15, 46, 31, 46, 2, 46, 81, 0, -115,
-<a name="l12752"></a>12752 90, 69, 37, 68, 32, -128, 104, 15, 124, -122, 100, 22, 20, 94, 75, 30, 48, 32, 1, 33, 32, 1, 0, 32, 16,
-<a name="l12753"></a>12753 32, 2, 32, 98, 26, 85, 61, 48, 87, 94, 78, 30, 92, 90, 68, 55, 41, 43, 72, 37, 35, 35, 39, 68, 66,
-<a name="l12754"></a>12754 39, -125, 100, 22, 102, 114, 109, 4, 107, 105, 123, -119, 15, 17, 120, 11, 9, 9, 13, 123, 126, 13, 0, 47, -35,
-<a name="l12755"></a>12755 -50, 17, 57, 47, 51, -51, -48, 50, -51, 16, -35, -35, 50, 50, -51, -48, 50, 50, -51, 47, -35, -50, 17, 57, 47,
-<a name="l12756"></a>12756 51, -51, -48, 50, -51, 16, -35, -35, 50, -51, 51, -48, 50, -51, 51, 1, 47, -51, -44, 93, 93, 93, 50, -51, 51,
-<a name="l12757"></a>12757 -48, 50, 50, -51, -36, 50, 50, -51, 16, -36, 50, -51, 51, 16, -42, -51, -44, 93, 93, 93, 50, -51, 51, -48, 50,
-<a name="l12758"></a>12758 50, -51, -36, 50, 50, -51, 16, -36, 50, -51, 51, 49, 48, 1, 20, 7, 6, 7, 22, 21, 20, 6, 35, 34, 39,
-<a name="l12759"></a>12759 6, 33, 32, 39, 6, 35, 34, 38, 53, 52, 55, 38, 39, 38, 53, 52, 55, 54, 55, 38, 53, 52, 54, 51, 50,
-<a name="l12760"></a>12760 23, 54, 33, 32, 23, 54, 51, 50, 22, 21, 20, 7, 22, 23, 22, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51,
-<a name="l12761"></a>12761 50, 54, 39, 38, 35, 34, 7, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 52, 39, 38, 39, 6,
-<a name="l12762"></a>12762 35, 34, 39, 33, 6, 35, 34, 39, 6, 7, 6, 21, 16, 1, 54, 51, 50, 23, 33, 54, 51, 50, 23, 0, 1,
-<a name="l12763"></a>12763 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 39, 33, 22, 51, 50, 37, 52, 38, 35, 34, 6, 21, 20, 22,
-<a name="l12764"></a>12764 51, 50, 54, 8, -54, 104, 100, -77, 3, 78, 55, 40, 33, -16, -2, -19, -2, -17, -16, 33, 40, 55, 78, 3, -77,
-<a name="l12765"></a>12765 100, 104, 104, 100, -77, 3, 78, 55, 40, 33, -16, 1, 19, 1, 17, -16, 33, 40, 55, 78, 3, -77, 100, 104, -2,
-<a name="l12766"></a>12766 78, 46, 32, 32, 47, 46, 33, 32, 46, -42, -44, -17, -15, -44, 57, 47, 32, 32, 46, 46, 32, 33, 46, 5, -37,
-<a name="l12767"></a>12767 92, 88, -97, 29, 35, 56, 39, -4, 40, 39, 56, 35, 29, -97, 88, 92, 1, 83, 29, 35, 56, 39, 3, -40, 39,
-<a name="l12768"></a>12768 56, 35, 29, 1, 83, -2, -68, 46, 32, 33, 46, 47, 32, 32, 46, -42, -4, 120, -44, -15, -17, -3, 19, 46, 33,
-<a name="l12769"></a>12769 32, 46, 46, 32, 32, 47, 2, -53, -10, -36, -42, -102, 14, 15, 55, 77, 22, 127, 127, 22, 77, 55, 15, 14, -102,
-<a name="l12770"></a>12770 -42, -36, -10, -10, -36, -43, -102, 14, 15, 55, 77, 22, 127, 127, 22, 77, 55, 15, 14, -102, -43, -36, 2, 103, 33,
-<a name="l12771"></a>12771 46, 47, 32, 32, 46, 46, 51, 109, 109, 19, 32, 47, 46, 33, 32, 46, 46, -4, -62, -37, -58, -66, -117, 16, 41,
-<a name="l12772"></a>12772 41, 16, -117, -66, -58, -37, -2, 63, -2, -40, 16, 41, 41, 16, 1, 40, -2, 100, 32, 46, 46, 32, 32, 47, 46,
-<a name="l12773"></a>12773 14, 109, -128, 32, 46, 46, 32, 33, 46, 47, 0, 12, 0, 50, -2, -55, 8, 123, 7, 19, 0, 15, 0, 18, 0,
-<a name="l12774"></a>12774 21, 0, 24, 0, 27, 0, 30, 0, 33, 0, 36, 0, 44, 0, 47, 0, 59, 0, 71, 1, 34, 64, 69, 12, 27,
-<a name="l12775"></a>12775 28, 27, 44, 27, 3, 12, 24, 28, 24, 44, 24, 3, 39, 12, 1, 37, 1, 1, -55, 16, 1, -55, 26, 1, 20,
-<a name="l12776"></a>12776 26, 36, 26, 2, -58, 22, 1, 27, 22, 43, 22, 2, -58, 21, 1, 8, 29, 1, 7, 35, 1, 9, 45, 16, 0,
-<a name="l12777"></a>12777 1, 0, 15, 2, 47, 64, 25, 22, 44, 0, 44, 32, 44, 2, 16, 3, 44, -72, -1, -64, 64, 54, 7, 14, 52,
-<a name="l12778"></a>12778 44, 48, 29, 4, 12, 35, 4, 60, 66, 32, 15, 8, 1, 17, 3, 8, 9, 6, 33, 64, 21, 17, 41, 41, 64,
-<a name="l12779"></a>12779 7, 13, 52, 41, 54, 66, 35, 16, 12, 1, 12, 13, 10, 36, 64, 24, 20, 39, 0, 39, 32, 39, 2, 16, 3,
-<a name="l12780"></a>12780 39, -72, -1, -64, 64, 51, 7, 14, 52, 39, 57, 45, 0, 32, 8, 4, 63, 69, 29, 15, 4, 1, 17, 3, 4,
-<a name="l12781"></a>12781 5, 2, 30, 64, 25, 18, 43, 43, 64, 7, 13, 52, 43, 51, 0, 69, 1, 70, 32, 69, 1, 16, 69, 1, 48,
-<a name="l12782"></a>12782 69, -96, 69, -32, 69, 3, 69, 0, 47, 93, 113, 114, 94, 93, -35, -50, 43, 0, 16, -64, -64, 26, 24, -35, -64,
-<a name="l12783"></a>12783 -64, -51, 95, 94, 93, 50, 16, -34, 23, 57, -35, -50, 43, 0, 95, 94, 93, 16, -64, -64, 26, 24, -35, -64, -64,
-<a name="l12784"></a>12784 -51, 93, 50, 1, 47, -35, -50, 43, 1, 16, -64, -64, 26, 24, -35, -64, -64, -51, 95, 94, 93, 50, 16, -34, 23,
-<a name="l12785"></a>12785 57, -35, -50, 43, 1, 95, 94, 93, 16, -64, -64, 26, 24, -35, -64, -64, -51, 93, 50, 49, 48, 0, 94, 93, 93,
-<a name="l12786"></a>12786 93, 93, 93, 93, 93, 93, 93, 1, 93, 93, 93, 1, 1, 17, 33, 1, 1, 33, 17, 1, 1, 17, 33, 1, 1,
-<a name="l12787"></a>12787 33, 17, 1, 17, 33, 17, 33, 17, 33, 17, 33, 1, 17, 1, 5, 23, 55, 1, 7, 23, 1, 39, 7, 1, 1,
-<a name="l12788"></a>12788 33, 1, 17, 1, 33, 1, 1, 39, 17, 37, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 7, 52, 38, 35,
-<a name="l12789"></a>12789 34, 6, 21, 20, 22, 51, 50, 54, 8, 123, -2, -54, -2, 72, -2, -54, -2, -55, -2, 73, -2, -55, 1, 55, 1,
-<a name="l12790"></a>12790 -73, 1, 55, 1, 54, 1, -72, -6, 111, 1, 33, -2, -33, 5, 70, -2, -34, 1, 34, -2, -34, -3, -78, -51, -52,
-<a name="l12791"></a>12791 -4, 70, -51, -51, 3, -70, -52, -51, 3, 112, -2, 116, -3, -47, -2, 117, 1, -117, 2, 47, 1, -116, 1, 23, -52,
-<a name="l12792"></a>12792 -3, -21, 127, 90, 90, -128, -128, 90, 90, 127, 75, 84, 59, 59, 83, 83, 59, 59, 84, 2, -18, -2, -55, -2, 73,
-<a name="l12793"></a>12793 -2, -55, 1, 55, 1, -73, 1, 55, 1, 55, 1, -73, 1, 55, -2, -55, -2, 73, -3, 71, -2, -33, 5, 70, -2,
-<a name="l12794"></a>12794 -33, 1, 33, -6, -70, 1, 33, -2, -33, 75, -51, -51, 3, -69, -51, -51, 3, -69, -51, -51, -2, 42, 1, -117, -2,
-<a name="l12795"></a>12795 117, -3, -48, -2, 117, 1, -117, 1, 24, -51, -2, 102, -51, 90, -128, -128, 90, 90, 127, 127, 90, 59, 83, 83, 59,
-<a name="l12796"></a>12796 59, 84, 84, 0, 1, -1, -75, 4, 38, 0, 75, 4, -68, 0, 11, 0, 26, 64, 15, 0, 6, 9, 31, 3, 63,
-<a name="l12797"></a>12797 3, 95, 3, 127, 3, -97, 3, 5, 3, 0, 47, 93, -51, 1, 47, -51, 49, 48, 19, 20, 6, 35, 34, 38, 53,
-<a name="l12798"></a>12798 52, 54, 51, 50, 22, 75, 44, 31, 31, 44, 44, 31, 31, 44, 4, 113, 31, 44, 44, 31, 31, 44, 44, 0, 1,
-<a name="l12799"></a>12799 -1, -74, 4, 38, 0, 74, 4, -70, 0, 3, 0, 26, 64, 15, 3, 1, 3, 31, 1, 63, 1, 95, 1, 127, 1,
-<a name="l12800"></a>12800 -97, 1, 5, 1, 0, 47, 93, -51, 1, 47, -51, 49, 48, 19, 35, 53, 51, 74, -108, -108, 4, 38, -108, 0, 1,
-<a name="l12801"></a>12801 -2, -19, 4, 38, 1, 18, 5, 60, 0, 18, 0, 103, -71, 0, 17, -1, -38, 64, 38, 25, 36, 52, 3, 24, 58,
-<a name="l12802"></a>12802 65, 52, 3, 24, 36, 39, 52, 3, 24, 21, 24, 52, 0, 17, 16, 17, 32, 17, 3, 14, 5, 17, 3, 9, 9,
-<a name="l12803"></a>12803 0, 1, 9, 7, 11, 64, 11, -72, -1, -64, 64, 23, 27, 31, 52, 95, 11, 111, 11, 2, 11, 17, 3, 31, 1,
-<a name="l12804"></a>12804 63, 1, 95, 1, 127, 1, -97, 1, 5, 1, 0, 47, 93, -35, -64, -51, 93, 43, 0, 26, 24, 16, -51, 50, 1,
-<a name="l12805"></a>12805 47, -51, 57, 47, 57, 57, 95, 94, 93, 43, 43, 43, 43, 49, 48, 1, 33, 53, 33, 38, 39, 38, 35, 34, 7,
-<a name="l12806"></a>12806 54, 51, 50, 23, 22, 23, 22, 23, 51, 1, 18, -3, -37, 1, -124, 99, 59, 38, 40, 27, 22, 34, 84, 48, 67,
-<a name="l12807"></a>12807 29, 78, 58, 20, 28, 4, 38, 83, 78, 21, 13, 3, 86, 48, 21, 70, 52, 4, 0, 1, -1, 100, 4, 38, 0,
-<a name="l12808"></a>12808 -99, 6, 81, 0, 31, 0, -64, -71, 0, 30, -1, -16, 64, 9, 36, 43, 52, 15, 32, 17, 22, 52, 5, -72, -1,
-<a name="l12809"></a>12809 -8, 64, 25, 27, 32, 52, 26, 15, 42, 15, 2, 3, 0, 15, 1, 36, 5, 18, 8, 56, 62, 52, 18, 0, 24,
-<a name="l12810"></a>12810 25, 64, 25, -72, -1, -64, 64, 31, 17, 22, 52, 25, 64, 9, 16, 52, 25, 25, 15, 0, 1, 9, 3, 0, 14,
-<a name="l12811"></a>12811 9, 9, 11, 7, 3, 14, 25, 24, 24, 18, 27, 22, 64, 22, -72, -1, -64, 64, 9, 7, 16, 52, 22, 31, 18,
-<a name="l12812"></a>12812 1, 64, 1, -72, -1, -64, 64, 27, 9, 12, 52, 96, 1, 112, 1, -128, 1, -64, 1, -48, 1, 5, 1, 31, 9,
-<a name="l12813"></a>12813 63, 9, 95, 9, 127, 9, -97, 9, 5, 9, -72, 1, 42, -123, 0, 47, 93, -50, 93, 43, 0, 26, 24, 16, -35,
-<a name="l12814"></a>12814 50, -50, 43, 0, 26, 24, 16, -51, 18, 57, 47, 51, 1, 47, -35, -44, -51, 57, 25, 47, 24, 16, -60, 95, 94,
-<a name="l12815"></a>12815 93, 57, 47, 43, 43, 1, 26, 24, 16, -51, 17, 57, 43, 49, 48, 1, 95, 94, 93, 95, 93, 43, 43, 43, 19,
-<a name="l12816"></a>12816 35, 34, 21, 20, 23, 22, 21, 20, 7, 38, 39, 39, 38, 53, 52, 55, 54, 55, 38, 39, 38, 35, 34, 7, 39,
-<a name="l12817"></a>12817 54, 51, 50, 23, 22, 23, -99, 57, -43, 33, 11, 12, 2, 22, 34, 17, 104, 42, 84, 30, 7, 24, 25, 27, 31,
-<a name="l12818"></a>12818 22, 37, 67, 51, 57, 16, 21, 5, -128, 68, 31, 108, 36, 31, 29, 43, 7, 72, 114, 60, 13, 111, 31, 12, 9,
-<a name="l12819"></a>12819 31, 5, 19, 35, 13, 93, 73, 20, 33, 0, -1, -1, -2, 126, -2, -111, 1, -126, 0, 111, 3, 23, 6, 75, 0,
-<a name="l12820"></a>12820 0, -6, 107, 0, 15, -74, 0, 10, 64, 67, 68, 52, 10, -72, 3, 6, 0, 63, 43, 53, 0, 0, 1, -1, -97,
-<a name="l12821"></a>12821 4, 38, 0, 97, 4, 92, 0, 15, 0, 98, 64, 28, 5, 10, 2, 13, 4, 7, 15, 0, 64, 7, 8, 0, 2,
-<a name="l12822"></a>12822 15, 15, 64, 37, 91, 52, 15, 13, 2, 8, 7, 10, 5, 64, 7, -72, -1, -64, 64, 23, 37, -88, 52, 7, 5,
-<a name="l12823"></a>12823 5, 64, 37, 43, 52, 5, 31, 2, 63, 2, 95, 2, 127, 2, -97, 2, 5, 2, 0, 47, 93, -60, 43, 0, 24,
-<a name="l12824"></a>12824 16, -58, 43, 0, 26, 24, 16, -51, 17, 57, 16, -35, -58, 43, 0, 17, 18, 57, 1, 24, 47, 25, -59, 26, 24,
-<a name="l12825"></a>12825 -36, 25, -59, 17, 23, 57, 49, 48, 19, 6, 35, 34, 38, 35, 34, 7, 39, 54, 51, 50, 22, 51, 50, 55, 97,
-<a name="l12826"></a>12826 31, 38, 20, 63, 12, 11, 14, 5, 22, 24, 11, 63, 18, 25, 25, 4, 73, 35, 23, 6, 6, 31, 23, 11, 0,
-<a name="l12827"></a>12827 0, 2, 0, 0, 4, 38, 1, -115, 5, -25, 0, 25, 0, 31, 0, -87, 64, 11, 15, 24, 19, 23, 52, 14, 24,
-<a name="l12828"></a>12828 29, 33, 52, 3, -72, -1, -42, -77, 24, 28, 52, 3, -72, -1, -42, 64, 31, 9, 12, 52, -110, 3, -94, 3, -78,
-<a name="l12829"></a>12829 3, 3, -109, 2, -93, 2, -77, 2, 3, 3, 0, 2, 16, 2, 32, 2, 3, 9, 5, 19, 30, 64, 30, -72, -1,
-<a name="l12830"></a>12830 -64, 64, 19, 20, 25, 52, 30, 64, 9, 11, 52, 30, 0, 17, 26, 0, 10, 9, 23, 28, 64, 28, -72, -1, -64,
-<a name="l12831"></a>12831 64, 30, 13, 19, 52, 28, 26, 25, 17, 64, 17, 64, 12, 14, 52, 17, 4, 10, 9, 13, 31, 4, 63, 4, 95,
-<a name="l12832"></a>12832 4, 127, 4, -97, 4, 5, 4, -72, 1, 87, -123, 0, 47, 93, -51, -35, -59, 16, -60, 43, 0, 26, 24, 16, -35,
-<a name="l12833"></a>12833 -43, -58, 43, 0, 26, 24, 16, -51, 1, 47, 51, -44, -35, -59, 16, -60, 43, 43, 1, 26, 24, 16, -51, 49, 48,
-<a name="l12834"></a>12834 95, 94, 93, 95, 113, 113, 43, 43, 43, 43, 1, 20, 7, 6, 35, 34, 39, 38, 39, 39, 55, 23, 22, 51, 50,
-<a name="l12835"></a>12835 55, 54, 55, 34, 53, 52, 55, 54, 51, 50, 21, 7, 38, 35, 34, 21, 20, 1, -115, 58, 64, 85, 32, 33, 27,
-<a name="l12836"></a>12836 36, 62, 8, 56, 30, 22, 102, 89, 19, 39, -124, 23, 26, 41, 74, 30, 18, 38, 33, 5, 24, 78, 78, 86, 7,
-<a name="l12837"></a>12837 6, 12, 21, 17, 13, 7, 97, 21, 52, 97, 49, 42, 48, -103, 2, 79, 31, 48, 0, 1, -1, -3, 4, 38, 2,
-<a name="l12838"></a>12838 -10, 5, -86, 0, 28, 0, -78, -71, 0, 21, -1, -16, 64, 108, 23, 27, 52, 15, 13, 1, 14, 6, 13, 15, 15,
-<a name="l12839"></a>12839 8, 15, 18, 52, -97, 15, -65, 15, 2, 3, 11, 15, 1, 20, 15, 15, 0, 28, 25, 64, 4, 15, 23, 31, 23,
-<a name="l12840"></a>12840 47, 23, 3, 21, 5, 21, 24, 10, 14, 52, 23, 21, 27, 17, 15, 8, 31, 8, 47, 8, 3, 21, 4, 8, 16,
-<a name="l12841"></a>12841 10, 14, 52, 6, 8, 27, 11, 15, 64, 7, 14, 52, 15, 17, 11, 64, 11, 64, 15, 18, 52, 11, 64, 9, 13,
-<a name="l12842"></a>12842 52, 80, 11, -96, 11, -80, 11, 3, 11, 27, 31, 1, 63, 1, 95, 1, 127, 1, -97, 1, 5, 1, -72, 1, 87,
-<a name="l12843"></a>12843 -123, 0, 47, 93, -51, -60, 113, 43, 43, 0, 26, 24, 16, -35, -50, 43, 0, 17, 18, 57, 57, 43, 0, 95, 94,
-<a name="l12844"></a>12844 93, 17, 18, 57, 57, 43, 0, 95, 94, 93, 1, 24, 47, 26, -51, -51, 50, 57, 25, 47, 94, 93, 95, 93, 43,
-<a name="l12845"></a>12845 1, 17, 51, 49, 48, 1, 95, 94, 93, 43, 1, 33, 34, 38, 39, 38, 55, 54, 55, 54, 54, 51, 50, 21, 20,
-<a name="l12846"></a>12846 7, 38, 35, 34, 7, 6, 7, 6, 7, 6, 21, 20, 51, 33, 2, -110, -3, -65, 55, 25, 1, 3, 44, 5, -102,
-<a name="l12847"></a>12847 39, 94, 18, 43, 6, 29, 29, 25, 31, 16, 41, 49, 72, 57, 45, 2, -94, 4, 38, 15, 15, 85, 51, 6, 88,
-<a name="l12848"></a>12848 22, 106, 84, 33, 25, 59, 36, 30, 41, 25, 37, 27, 12, 14, 0, 0, 1, -2, -126, 4, 38, 1, 123, 5, -86,
-<a name="l12849"></a>12849 0, 28, 0, -78, -71, 0, 21, -1, -16, 64, 108, 23, 27, 52, 15, 13, 1, 14, 6, 13, 15, 15, 8, 15, 18,
-<a name="l12850"></a>12850 52, -97, 15, -65, 15, 2, 3, 11, 15, 1, 20, 15, 15, 0, 28, 25, 64, 4, 15, 23, 31, 23, 47, 23, 3,
-<a name="l12851"></a>12851 21, 5, 21, 24, 10, 14, 52, 23, 21, 27, 17, 15, 8, 31, 8, 47, 8, 3, 21, 4, 8, 16, 10, 14, 52,
-<a name="l12852"></a>12852 6, 8, 27, 11, 15, 64, 7, 14, 52, 15, 17, 11, 64, 11, 64, 15, 18, 52, 11, 64, 9, 13, 52, 80, 11,
-<a name="l12853"></a>12853 -96, 11, -80, 11, 3, 11, 27, 31, 1, 63, 1, 95, 1, 127, 1, -97, 1, 5, 1, -72, 1, 87, -123, 0, 47,
-<a name="l12854"></a>12854 93, -51, -60, 113, 43, 43, 0, 26, 24, 16, -35, -50, 43, 0, 17, 18, 57, 57, 43, 0, 95, 94, 93, 17, 18,
-<a name="l12855"></a>12855 57, 57, 43, 0, 95, 94, 93, 1, 24, 47, 26, -51, -51, 50, 57, 25, 47, 94, 93, 95, 93, 43, 1, 17, 51,
-<a name="l12856"></a>12856 49, 48, 1, 95, 94, 93, 43, 1, 33, 34, 38, 39, 38, 55, 54, 55, 54, 54, 51, 50, 21, 20, 7, 38, 35,
-<a name="l12857"></a>12857 34, 7, 6, 7, 6, 7, 6, 21, 20, 51, 33, 1, 23, -3, -65, 55, 25, 1, 3, 44, 5, -102, 39, 94, 18,
-<a name="l12858"></a>12858 43, 6, 29, 29, 25, 31, 16, 41, 49, 72, 57, 45, 2, -94, 4, 38, 15, 15, 85, 51, 6, 88, 22, 106, 84,
-<a name="l12859"></a>12859 33, 25, 59, 36, 30, 41, 25, 37, 27, 12, 14, 0, 0, 2, -1, 16, 4, 38, 0, -16, 6, -115, 0, 3, 0,
-<a name="l12860"></a>12860 26, 0, -75, -71, 0, 5, -1, -24, 64, 79, 28, 34, 52, 7, 32, 17, 25, 52, 19, 22, 24, 27, 52, 22, 8,
-<a name="l12861"></a>12861 25, 27, 52, 24, 24, 23, 26, 3, 1, 15, 2, 1, 46, 3, 2, 64, 0, 0, 13, 23, 23, 64, 21, 23, 52,
-<a name="l12862"></a>12862 23, 21, 15, 26, 31, 26, 2, 9, 26, 8, 12, 0, 13, 1, 19, 3, 13, 15, 8, 2, 0, 3, 1, 64, 1,
-<a name="l12863"></a>12863 64, 11, 14, 52, 1, 24, 13, 12, 12, 6, 23, 26, 24, 24, -72, -1, -64, 64, 19, 9, 14, 52, 24, 26, 4,
-<a name="l12864"></a>12864 17, 31, 6, 63, 6, 95, 6, 127, 6, -97, 6, 5, 6, -72, 1, 87, -123, 0, 47, 93, -51, -44, -35, -51, 43,
-<a name="l12865"></a>12865 0, 17, 18, 57, 18, 57, 24, 47, 51, 16, -58, 43, 0, 26, 24, 16, -51, 57, 57, 1, 47, -35, -42, 95, 94,
-<a name="l12866"></a>12866 93, -51, 16, -44, 94, 93, -35, -58, 43, 1, 17, 18, 57, 24, 47, 26, -51, 95, 94, 93, 57, 57, 17, 18, 57,
-<a name="l12867"></a>12867 25, 47, 49, 48, 1, 43, 43, 43, 43, 19, 7, 39, 55, 19, 20, 33, 34, 53, 52, 55, 54, 55, 23, 6, 21,
-<a name="l12868"></a>12868 20, 51, 50, 55, 54, 53, 52, 39, 55, 22, 21, 64, 36, 77, 35, -2, -2, -23, -55, 37, 11, 25, 19, 54, -94,
-<a name="l12869"></a>12869 85, 70, 91, 50, 40, 44, 6, 101, 69, 40, 69, -2, 107, -46, -110, 76, 91, 27, 52, 9, 111, 69, 120, 30, 39,
-<a name="l12870"></a>12870 73, 95, 60, 97, 67, 117, 0, 0, 6, 0, 50, 0, 0, 4, -101, 6, -116, 0, 8, 0, 17, 0, 24, 0, 31,
-<a name="l12871"></a>12871 0, 38, 0, 45, 0, -45, 64, 123, 32, 39, 39, 33, 31, 15, 17, 0, 6, 9, 16, 18, 32, 18, 48, 18, 3,
-<a name="l12872"></a>12872 18, 25, 25, 19, 7, 0, 17, 1, 17, 65, 19, 81, 19, 2, 16, 19, 32, 19, 48, 19, 3, 19, 0, 31, 1,
-<a name="l12873"></a>12873 31, 33, 45, 40, 37, 41, 41, 28, 36, 14, 12, 1, 4, 11, 31, 23, 47, 23, 63, 23, 3, 23, 27, 27, 22,
-<a name="l12874"></a>12874 3, 15, 12, 1, 12, 31, 22, 63, 22, 79, 22, 3, 22, 94, 28, 1, 15, 28, 47, 28, 2, 28, 36, 42, 38,
-<a name="l12875"></a>12875 26, 24, 10, 5, 40, 40, 38, 26, 5, 16, 10, 32, 10, 80, 10, 3, 10, 24, 26, 8, 2, 16, 13, 4, 1,
-<a name="l12876"></a>12876 43, 35, 29, 21, 14, 1, -72, 1, 42, -123, 0, 47, -35, -42, -35, -42, -51, 17, 23, 57, 47, -35, -42, 93, -51,
-<a name="l12877"></a>12877 16, -42, -51, 1, 25, 47, 50, 50, 50, 50, 50, -42, 24, -35, -42, 93, 93, -35, 93, -42, 93, -51, 17, 57, 47,
-<a name="l12878"></a>12878 -35, 93, -42, -35, -64, 17, 57, 17, 18, 57, 47, -51, 25, 16, -42, 24, -35, -42, 93, -35, 93, 93, -42, 93, -51,
-<a name="l12879"></a>12879 17, 57, 47, -35, 93, -42, -35, -64, 17, 57, 17, 18, 57, 47, -51, 49, 48, 33, 33, 19, 17, 3, 1, 1, 3,
-<a name="l12880"></a>12880 17, 19, 1, 1, 23, 17, 7, 33, 39, 17, 55, 7, 17, 33, 17, 39, 9, 3, 23, 17, 33, 17, 55, 7, 17,
-<a name="l12881"></a>12881 33, 17, 39, 55, 23, 39, 7, 23, 17, 51, 17, 4, -101, -5, -105, -28, -28, 2, 52, 2, 53, -28, -106, -2, 25,
-<a name="l12882"></a>12882 -2, 26, -46, -96, 3, 105, -96, 104, -106, -2, 51, -106, 1, 124, 1, 52, -2, -52, -2, -51, 126, 1, 107, 37, 88,
-<a name="l12883"></a>12883 -2, -5, 88, -38, -90, -90, -91, 74, -74, 1, 5, 2, 76, 1, 3, 2, 56, -3, -56, -2, -3, -3, -76, 3, 79,
-<a name="l12884"></a>12884 1, -22, -2, 22, -19, -3, -120, -73, -73, 2, 120, -19, -85, -4, -38, 3, 38, -85, 1, 125, -2, -125, 1, 52, -2,
-<a name="l12885"></a>12885 -52, -116, -4, -14, 3, 14, -116, 97, -3, 24, 2, -24, 97, -33, -33, -86, -86, 81, -3, 50, 2, -50, -1, -1, -1,
-<a name="l12886"></a>12886 88, -2, -82, 0, -88, -1, -2, 1, 23, 6, 90, 0, 0, -6, -120, 0, 30, -78, 1, 0, 1, -72, -1, -64, 64,
-<a name="l12887"></a>12887 14, 12, 16, 52, 31, 1, 1, 16, 1, -112, 1, -65, 1, 3, 1, 0, 47, 93, 113, 43, 53, 53, 0, 2, -1,
-<a name="l12888"></a>12888 88, 4, 38, 0, -88, 5, 118, 0, 3, 0, 7, 0, 120, 64, 10, 3, 7, 5, 1, 4, 6, 4, 0, 64, 0,
-<a name="l12889"></a>12889 -72, -1, -64, 64, 17, 34, 39, 52, 15, 0, 31, 0, 47, 0, 3, 13, 3, 0, 6, 2, 64, 2, -72, -1, -1,
-<a name="l12890"></a>12890 64, 14, 22, 27, 52, 2, 0, 4, 2, 6, 4, 7, 5, 3, 64, 3, -72, -1, -64, 64, 24, 34, 39, 52, 79,
-<a name="l12891"></a>12891 3, 95, 3, 111, 3, 3, 3, 7, 31, 1, 63, 1, 95, 1, 127, 1, -97, 1, 5, 1, 0, 47, 93, -51, -60,
-<a name="l12892"></a>12892 93, 43, 0, 26, 24, 16, -51, 17, 23, 57, 1, 47, 43, 1, 26, 24, 16, -51, -60, 95, 94, 93, 43, 1, 26,
-<a name="l12893"></a>12893 24, 16, -51, 17, 23, 57, 49, 48, 19, 7, 39, 55, 23, 39, 7, 23, -88, -88, -88, -88, 104, 104, 104, 104, 4,
-<a name="l12894"></a>12894 -50, -88, -88, -88, -88, 104, 104, 104, 0, -1, -1, -1, 100, -2, -111, 0, -99, 0, -68, 3, 23, 6, 81, 0, 0,
-<a name="l12895"></a>12895 -6, 107, 0, 20, 64, 10, 0, 9, 64, 67, 68, 52, -128, 9, 1, 9, -72, 3, 6, 0, 63, 93, 43, 53, -1,
-<a name="l12896"></a>12896 -1, 0, 62, -1, 108, 6, -110, 5, -56, 2, 54, 3, -79, 0, 0, 0, 55, 5, 45, 4, -80, 0, 0, 1, 23,
-<a name="l12897"></a>12897 5, 47, 3, -24, 5, 60, 0, 63, 64, 36, 4, 3, 2, 0, 85, 79, 35, 0, 65, 1, 0, 73, 71, 9, 0,
-<a name="l12898"></a>12898 65, 4, 3, 2, 16, 84, 47, 84, 96, 84, -128, 84, 4, 84, 1, 72, 64, 11, 19, 52, 72, -72, -1, -64, -77,
-<a name="l12899"></a>12899 9, 10, 52, 72, 0, 47, 43, 43, 53, 47, 93, 53, 53, 53, 1, 43, 53, 43, 53, 53, 53, 0, -1, -1, 0,
-<a name="l12900"></a>12900 62, -1, 108, 6, -110, 5, -56, 2, 54, 3, -79, 0, 0, 0, 55, 5, 45, 4, -80, 0, 0, 1, 23, 5, 47,
-<a name="l12901"></a>12901 3, -24, 5, 60, 0, 63, 64, 36, 4, 3, 2, 0, 85, 79, 35, 0, 65, 1, 0, 73, 71, 9, 0, 65, 4,
-<a name="l12902"></a>12902 3, 2, 16, 84, 47, 84, 96, 84, -128, 84, 4, 84, 1, 72, 64, 11, 19, 52, 72, -72, -1, -64, -77, 9, 10,
-<a name="l12903"></a>12903 52, 72, 0, 47, 43, 43, 53, 47, 93, 53, 53, 53, 1, 43, 53, 43, 53, 53, 53, 0, -1, -1, -1, -70, -1,
-<a name="l12904"></a>12904 -95, 4, 63, 5, -56, 2, 54, 3, -77, 0, 0, 0, 55, 5, 45, 2, 88, 0, 0, 1, 23, 5, 47, 1, -112,
-<a name="l12905"></a>12905 5, 60, 0, 63, 64, 36, 4, 3, 2, 0, 74, 68, 26, 0, 65, 1, 0, 60, 60, 54, 54, 65, 4, 3, 2,
-<a name="l12906"></a>12906 16, 73, 47, 73, 96, 73, -128, 73, 4, 73, 1, 61, 64, 11, 19, 52, 61, -72, -1, -64, -77, 9, 10, 52, 61,
-<a name="l12907"></a>12907 0, 47, 43, 43, 53, 47, 93, 53, 53, 53, 1, 43, 53, 43, 53, 53, 53, 0, -1, -1, -1, -70, -1, -95, 4,
-<a name="l12908"></a>12908 63, 5, -56, 2, 54, 3, -77, 0, 0, 0, 55, 5, 45, 2, 88, 0, 0, 1, 23, 5, 47, 1, -112, 5, 60,
-<a name="l12909"></a>12909 0, 63, 64, 36, 4, 3, 2, 0, 74, 68, 26, 0, 65, 1, 0, 60, 60, 54, 54, 65, 4, 3, 2, 16, 73,
-<a name="l12910"></a>12910 47, 73, 96, 73, -128, 73, 4, 73, 1, 61, 64, 11, 19, 52, 61, -72, -1, -64, -77, 9, 10, 52, 61, 0, 47,
-<a name="l12911"></a>12911 43, 43, 53, 47, 93, 53, 53, 53, 1, 43, 53, 43, 53, 53, 53, 0, -1, -1, 0, 62, -1, 108, 8, -55, 4,
-<a name="l12912"></a>12912 -71, 2, 54, 3, -67, 0, 0, 1, 23, 5, 45, 5, 97, 0, 0, 0, 36, 64, 17, 3, -113, 69, 1, 0, 69,
-<a name="l12913"></a>12913 67, 5, 4, 65, 3, 68, 64, 11, 21, 52, 68, -72, -1, -64, -77, 9, 10, 52, 68, 0, 47, 43, 43, 53, 1,
-<a name="l12914"></a>12914 43, 93, 53, -1, -1, 0, 62, -1, 108, 8, -55, 4, -71, 2, 54, 3, -67, 0, 0, 1, 23, 5, 45, 5, 97,
-<a name="l12915"></a>12915 0, 0, 0, 36, 64, 17, 3, -113, 69, 1, 0, 69, 67, 5, 4, 65, 3, 68, 64, 11, 21, 52, 68, -72, -1,
-<a name="l12916"></a>12916 -64, -77, 9, 10, 52, 68, 0, 47, 43, 43, 53, 1, 43, 93, 53, -1, -1, -1, -70, -1, -95, 6, -59, 4, -71,
-<a name="l12917"></a>12917 2, 54, 3, -65, 0, 0, 1, 23, 5, 45, 2, -8, 0, 0, 0, 32, 64, 14, 3, 0, 55, 53, 23, 4, 65,
-<a name="l12918"></a>12918 3, 54, 64, 11, 21, 52, 54, -72, -1, -64, -77, 9, 10, 52, 54, 0, 47, 43, 43, 53, 1, 43, 53, -1, -1,
-<a name="l12919"></a>12919 -1, -70, -1, -95, 6, -59, 4, -71, 2, 54, 3, -65, 0, 0, 1, 23, 5, 45, 2, -8, 0, 0, 0, 32, 64,
-<a name="l12920"></a>12920 14, 3, 0, 55, 53, 23, 4, 65, 3, 54, 64, 11, 21, 52, 54, -72, -1, -64, -77, 9, 10, 52, 54, 0, 47,
-<a name="l12921"></a>12921 43, 43, 53, 1, 43, 53, -1, -1, 0, 42, -2, 78, 4, 32, 5, -27, 2, 54, 3, -51, 0, 0, 1, 23, 5,
-<a name="l12922"></a>12922 45, 1, -112, 0, 100, 0, 17, 64, 9, 2, 0, 62, 62, 50, 43, 65, 2, 61, 0, 47, 53, 1, 43, 53, 0,
-<a name="l12923"></a>12923 -1, -1, 0, 54, -2, 78, 3, -29, 5, 29, 2, 54, 3, -50, 0, 0, 1, 23, 5, 45, 1, 64, 0, 40, 0,
-<a name="l12924"></a>12924 49, -79, 2, 59, -72, -1, -64, -77, 28, 32, 52, 59, -72, -1, -64, 64, 22, 14, 17, 52, 16, 59, 1, 0, 59,
-<a name="l12925"></a>12925 57, 50, 56, 65, 2, 96, 58, 1, 58, 64, 11, 21, 52, 58, 0, 47, 43, 113, 53, 1, 43, 93, 43, 43, 53,
-<a name="l12926"></a>12926 0, -1, -1, -1, -70, -1, -95, 3, -61, 5, 29, 2, 54, 3, -49, 0, 0, 1, 23, 5, 45, 1, 44, 0, 0,
-<a name="l12927"></a>12927 0, 32, 64, 14, 2, 0, 36, 36, 9, 4, 65, 2, 35, 64, 11, 21, 52, 35, -72, -1, -64, -77, 9, 10, 52,
-<a name="l12928"></a>12928 35, 0, 47, 43, 43, 53, 1, 43, 53, -1, -1, -1, -70, -1, -95, 3, 39, 5, 29, 2, 54, 3, -48, 0, 0,
-<a name="l12929"></a>12929 1, 23, 5, 45, 0, -106, 0, 0, 0, 32, 64, 14, 2, 15, 47, 45, 9, 9, 65, 2, 46, 64, 11, 21, 52,
-<a name="l12930"></a>12930 46, -72, -1, -64, -77, 9, 10, 52, 46, 0, 47, 43, 43, 53, 1, 43, 53, 0, 3, 0, 121, -2, -40, 2, -24,
-<a name="l12931"></a>12931 3, 51, 0, 36, 0, 40, 0, 44, 0, -53, 64, 37, 9, 11, 25, 11, 2, 6, 33, 22, 33, 2, 42, 44, 39,
-<a name="l12932"></a>12932 64, 15, 37, 31, 37, 47, 37, 3, 16, 3, 37, 37, 13, 0, 35, 35, 24, 24, 1, 23, 23, 31, 1, 0, -72,
-<a name="l12933"></a>12933 -1, -64, 64, 17, 9, 21, 52, 0, 1, 46, 2, 6, 18, 6, 2, 9, 3, 6, 5, 5, 31, -72, 2, -13, 64,
-<a name="l12934"></a>12934 14, 64, 13, 23, 28, 19, 24, 64, 14, 21, 52, 24, 24, 35, 19, -72, 2, -17, -78, 28, 35, 0, -72, 2, -17,
-<a name="l12935"></a>12935 -78, 1, 64, 1, -72, -1, -64, -75, 9, 13, 52, 1, 1, 35, -72, 2, -17, 64, 15, 10, 44, 39, 42, 32, 37,
-<a name="l12936"></a>12936 48, 37, 64, 37, 3, 37, 6, 5, 10, -71, 2, -21, 1, 22, -123, 0, 63, -35, 57, -42, 93, -64, -35, -64, 16,
-<a name="l12937"></a>12937 -19, 57, 47, 43, 0, 26, 24, 16, 77, -19, 16, -34, -19, 18, 57, 47, 43, 0, 17, 18, 57, 1, 24, 47, 26,
-<a name="l12938"></a>12938 77, -19, 57, 47, 51, 95, 94, 93, 16, -42, -51, 43, 1, 17, 18, 57, 24, 47, 17, 57, 47, 57, 47, 17, 18,
-<a name="l12939"></a>12939 57, 47, 95, 94, 93, 26, -51, -34, -51, 49, 48, 93, 93, 1, 7, 6, 7, 6, 7, 39, 54, 55, 54, 55, 39,
-<a name="l12940"></a>12940 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 7, 38, 39, 38, 35, 34, 6, 21, 20, 23, 22, 23, 54,
-<a name="l12941"></a>12941 3, 17, 35, 17, 51, 51, 17, 35, 2, -24, 48, -104, 98, 113, 93, 31, 13, 22, 19, 25, 116, 51, 40, 48, 62,
-<a name="l12942"></a>12942 80, 81, 75, 49, 11, 40, 52, 37, 7, 61, 39, 48, 104, 60, 47, 95, -117, -64, 95, -70, 95, 95, 2, 25, -92,
-<a name="l12943"></a>12943 38, 47, 54, 87, 17, 46, 39, 34, 27, 66, 34, 40, 32, 84, 100, 67, 86, 43, 9, 46, -125, 25, 5, 39, 54,
-<a name="l12944"></a>12944 34, 41, 38, 29, 34, 67, -2, -127, -2, 103, 1, -103, -2, 103, 0, 0, 3, 0, 35, -2, 78, 2, -76, 2, -37,
-<a name="l12945"></a>12945 0, 42, 0, 46, 0, 50, 0, -78, 64, 18, -119, 24, 1, 9, 20, 1, -121, 7, 1, 0, 23, 1, 9, 3, 23,
-<a name="l12946"></a>12946 23, 0, 31, -72, 2, -6, 64, 9, 32, 32, 5, 0, 52, 48, 50, 64, 50, -72, -1, -64, 64, 18, 9, 13, 52,
-<a name="l12947"></a>12947 0, 50, 1, 34, 3, 50, 44, 46, 64, 46, 64, 23, 32, 52, 46, -72, -1, -64, 64, 9, 9, 9, 52, 46, 9,
-<a name="l12948"></a>12948 12, 12, 9, 5, -72, 2, -3, -76, 16, 18, 1, 18, 12, -72, 3, 6, 64, 9, 44, 49, 50, 43, 1, 32, 31,
-<a name="l12949"></a>12949 23, 36, -72, 2, -17, -74, 15, 27, 31, 27, 2, 27, 23, -68, 2, -17, 0, 42, 2, -17, 0, 1, 2, -21, 0,
-<a name="l12950"></a>12950 63, -19, -3, -34, 113, -19, 16, -50, 50, 16, -34, -64, -34, -64, 63, 1, 47, 93, -19, -51, 57, 25, 47, 24, 16,
-<a name="l12951"></a>12951 -50, 43, 43, 1, 26, 24, 16, -35, -50, 95, 94, 93, 43, 1, 26, 24, 16, -51, 16, -64, 17, 57, 47, 77, -19,
-<a name="l12952"></a>12952 17, 57, 47, 95, 94, 93, 49, 48, 93, 93, 93, 1, 35, 34, 7, 6, 21, 20, 22, 22, 21, 20, 6, 7, 38,
-<a name="l12953"></a>12953 39, 38, 39, 38, 53, 52, 54, 55, 54, 55, 38, 39, 38, 35, 34, 7, 6, 7, 39, 54, 55, 54, 51, 50, 23,
-<a name="l12954"></a>12954 22, 23, 22, 23, 1, 17, 35, 17, 33, 17, 35, 17, 2, -76, 119, -90, 124, -99, 45, 47, 11, 14, 26, 25, 48,
-<a name="l12955"></a>12955 23, 36, 107, 111, 88, -79, 63, 15, 51, 52, 33, 30, 24, 34, 46, 30, 38, 63, 86, 62, 62, 51, 53, 26, 51,
-<a name="l12956"></a>12956 -2, -28, 95, 1, 25, 95, 1, 37, 31, 39, 73, 66, -106, -102, 64, 38, 62, 50, 83, 83, -98, 81, -128, 26, -128,
-<a name="l12957"></a>12957 -119, 33, 26, 18, 64, 12, 40, 20, 16, 39, 29, 75, 45, 74, 46, 38, 68, 33, 79, -2, -98, -2, 103, 1, -103,
-<a name="l12958"></a>12958 -2, 103, 1, -103, 0, -1, -1, 0, 54, 1, 10, 2, 24, 3, 113, 2, 22, 3, 8, 0, 0, 0, 2, -1, -70,
-<a name="l12959"></a>12959 -2, -15, 1, -12, 3, -90, 0, 12, 0, 27, 0, 96, 64, 30, -39, 18, 1, -116, 6, 1, 125, 6, 1, 90, 6,
-<a name="l12960"></a>12960 106, 6, 2, 22, 23, 20, 13, 25, 25, 1, 0, 8, 8, 0, 31, 7, 1, 7, 3, -72, 3, 3, -77, 0, 29,
-<a name="l12961"></a>12961 1, 7, -70, 2, -17, 0, 8, 3, 4, -77, 23, 16, 22, 3, -69, 2, -17, 0, 1, 2, -21, 1, 44, -123, 0,
-<a name="l12962"></a>12962 63, -19, -34, -52, 51, 63, -19, 1, 47, 16, -48, -3, -50, 114, 17, 57, 25, 47, 17, 18, 57, 24, 47, -52, -51,
-<a name="l12963"></a>12963 -50, 50, 49, 48, 93, 93, 93, 93, 1, 33, 53, 33, 52, 39, 38, 39, 55, 22, 23, 22, 21, 3, 20, 6, 35,
-<a name="l12964"></a>12964 34, 39, 38, 53, 52, 55, 23, 6, 21, 20, 22, 1, -12, -3, -58, 1, -15, 28, 19, 75, 78, 72, 18, 27, -113,
-<a name="l12965"></a>12965 54, 38, 56, 33, 27, -116, 22, 94, -116, 1, 37, -82, 117, 63, 44, 80, -93, 91, 51, 77, -78, -3, 48, 38, 50,
-<a name="l12966"></a>12966 55, 47, 60, -111, 99, 35, 86, 56, 28, 45, 0, 0, 2, -1, -70, -2, 92, 2, -112, 2, -20, 0, 30, 0, 45,
-<a name="l12967"></a>12967 0, -85, 64, 16, 11, 27, 1, 21, 13, 36, 29, 36, 45, 36, 3, 22, 4, 40, 41, 41, -72, -1, -32, 64, 22,
-<a name="l12968"></a>12968 9, 17, 52, 41, 38, 0, 31, 16, 31, 2, 9, 3, 31, 43, 23, 13, 11, 20, 21, 9, 5, 11, -72, 3, 3,
-<a name="l12969"></a>12969 64, 16, 25, 5, 23, 23, 16, 0, 47, 16, 25, 30, 7, 40, 64, 41, 40, 40, -72, -1, -64, 64, 24, 13, 17,
-<a name="l12970"></a>12970 52, 0, 40, 16, 40, -32, 40, -16, 40, 4, 40, 34, 107, 13, 123, 13, 2, 13, 16, 21, 20, 18, -66, 2, -17,
-<a name="l12971"></a>12971 0, 16, 0, 30, 2, -17, 0, 0, 0, 16, 1, 44, -123, 0, 47, -48, -19, 16, -3, -50, 50, 17, 57, 93, 47,
-<a name="l12972"></a>12972 -52, 93, 43, 0, 17, 51, 26, 24, 16, -50, 17, 57, 1, 47, 16, -64, 17, 57, 47, -60, 57, 77, -19, 17, 57,
-<a name="l12973"></a>12973 -42, -51, 17, 57, 16, -44, -52, 95, 94, 93, -51, -50, 43, 1, 17, 51, 49, 48, 95, 94, 93, 94, 93, 1, 35,
-<a name="l12974"></a>12974 34, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 55, 6, 35, 35, 53, 51, 50, 19, 23, 6, 21, 20, 23, 54,
-<a name="l12975"></a>12975 55, 54, 51, 51, 3, 20, 6, 35, 34, 39, 38, 53, 52, 55, 23, 6, 21, 20, 22, 2, -112, 40, 104, 50, 63,
-<a name="l12976"></a>12976 19, 17, 10, 39, 31, 27, 5, 4, 8, 80, -101, 90, 90, -48, 101, 52, 60, 22, 2, 50, 76, -111, 40, -79, 54,
-<a name="l12977"></a>12977 38, 56, 33, 27, -116, 22, 94, -116, 1, 37, 36, 46, 94, 81, 107, 90, 91, 87, 46, -92, -82, 1, 25, 18, -81,
-<a name="l12978"></a>12978 -104, 113, 60, 77, 65, 95, -4, -31, 38, 50, 55, 47, 60, -111, 99, 35, 86, 56, 28, 45, 0, 0, 2, 0, 47,
-<a name="l12979"></a>12979 -1, 116, 1, -58, 0, 100, 0, 3, 0, 7, 0, 52, 64, 25, 7, 5, 6, 4, 3, 1, 0, 2, 2, 4, 6,
-<a name="l12980"></a>12980 4, 112, 5, 1, 5, -97, 7, 1, 7, 7, 2, 0, 3, 1, 0, 47, -51, 57, 57, 50, 47, 113, -51, 114, 57,
-<a name="l12981"></a>12981 57, 1, 47, 51, 47, -51, 57, 57, 16, -51, 57, 57, 49, 48, 37, 7, 39, 55, 7, 7, 39, 55, 1, -58, 54,
-<a name="l12982"></a>12982 -112, 56, 67, 54, -112, 56, 56, 105, 44, 105, -121, 105, 44, 105, 0, 0, 3, 0, 59, -2, -53, 1, -49, -1, -40,
-<a name="l12983"></a>12983 0, 3, 0, 7, 0, 11, 0, -33, 64, 52, 1, 3, 0, 2, 2, 64, 28, 32, 52, 15, 2, 1, 17, 3, 2,
-<a name="l12984"></a>12984 0, 64, 0, 64, 72, 84, 52, 0, 64, 61, 69, 52, 0, 0, 6, 9, 11, 8, 10, 10, 64, 28, 32, 52, 15,
-<a name="l12985"></a>12985 10, 1, 17, 3, 10, 8, 64, 7, 5, 6, 4, 4, -72, -1, -64, 64, 30, 28, 32, 52, 0, 4, 1, 17, 3,
-<a name="l12986"></a>12986 4, 6, 64, 6, 64, 50, 69, 52, 6, 64, 24, 33, 52, 6, 6, 8, 10, 8, 9, 11, 64, 11, -72, -1, -64,
-<a name="l12987"></a>12987 -77, 33, 38, 52, 11, -72, -1, -64, 64, 12, 18, 23, 52, 11, 11, 1, 4, 6, 5, 7, 64, 7, -72, -1, -64,
-<a name="l12988"></a>12988 -77, 62, 69, 52, 7, -72, -1, -64, 64, 12, 18, 23, 52, -48, 7, 1, 7, 7, 2, 0, 3, 1, 0, 47, -51,
-<a name="l12989"></a>12989 57, 57, 51, 47, 113, 43, 43, 0, 26, 24, 16, -51, 57, 57, 17, 51, 47, 43, 43, 0, 26, 24, 16, -51, 57,
-<a name="l12990"></a>12990 57, 1, 47, 51, 47, 43, 43, 1, 26, 24, 16, -51, 95, 94, 93, 43, 1, 17, 18, 57, 57, 26, 24, 16, -51,
-<a name="l12991"></a>12991 95, 94, 93, 43, 1, 17, 18, 57, 57, 17, 51, 24, 47, 43, 43, 1, 26, 24, 16, -51, 95, 94, 93, 43, 1,
-<a name="l12992"></a>12992 17, 18, 57, 57, 49, 48, 5, 7, 39, 55, 5, 7, 39, 55, 7, 7, 39, 55, 1, 32, 57, -126, 54, 1, 52,
-<a name="l12993"></a>12993 57, -126, 54, 84, 57, -126, 54, 76, 96, 36, 96, 85, 96, 36, 96, 124, 96, 36, 96, 0, 0, 3, 0, 18, -2,
-<a name="l12994"></a>12994 -23, 1, -28, 0, 120, 0, 3, 0, 7, 0, 11, 1, 86, 64, 60, 11, 9, 10, 8, 10, 64, 13, 17, 52, -113,
-<a name="l12995"></a>12995 10, -97, 10, 2, 126, 10, 1, 79, 10, 95, 10, 111, 10, 3, 10, 8, 64, 121, 7, -119, 7, -103, 7, 3, 106,
-<a name="l12996"></a>12996 7, 1, 57, 7, 73, 7, 89, 7, 3, 42, 7, 1, 3, 15, 7, 31, 7, 2, 18, 5, 7, 5, 6, 4, 4,
-<a name="l12997"></a>12997 -72, -1, -64, 64, 64, 13, 17, 52, 64, 4, 80, 4, 2, 49, 4, 1, 0, 4, 16, 4, 32, 4, 3, 22, 3,
-<a name="l12998"></a>12998 4, 6, 64, 6, 64, 24, 27, 52, 6, 6, 8, -122, 1, -106, 1, 2, 101, 1, 117, 1, 2, 54, 1, 70, 1,
-<a name="l12999"></a>12999 86, 1, 3, 37, 1, 1, 3, 0, 1, 16, 1, 2, 18, 5, 3, 1, 2, 0, 0, -72, -1, -64, 64, 67, 13,
-<a name="l13000"></a>13000 17, 52, -112, 0, -96, 0, 2, -127, 0, 1, 80, 0, 96, 0, 112, 0, 3, 0, 2, 2, 8, 4, 6, 15, 5,
-<a name="l13001"></a>13001 1, 5, 7, 7, 1, -106, 8, -90, 8, 2, 117, 8, -123, 8, 2, 70, 8, 86, 8, 102, 8, 3, 53, 8, 1,
-<a name="l13002"></a>13002 22, 8, 38, 8, 2, 10, 8, 15, 9, 1, 17, 3, 9, 11, 64, 11, -72, -1, -64, 64, 21, 49, 55, 52, 11,
-<a name="l13003"></a>13003 64, 34, 37, 52, 11, 11, 2, 0, 0, 3, 1, 17, 3, 3, 1, 64, 1, -72, -1, -64, -77, 9, 14, 52, 1,
-<a name="l13004"></a>13004 0, 47, 43, 0, 26, 24, 16, -51, 95, 94, 93, 57, 57, 50, 47, 43, 43, 0, 26, 24, 16, -51, 95, 94, 93,
-<a name="l13005"></a>13005 57, 57, 93, 93, 93, 93, 93, 17, 51, 47, -51, 93, 57, 57, 1, 47, 51, 47, -51, 93, 93, 93, 43, 1, 17,
-<a name="l13006"></a>13006 18, 57, 57, 95, 94, 93, 95, 93, 93, 93, 93, 17, 51, 24, 47, 43, 1, 26, 24, 16, -51, 95, 94, 93, 93,
-<a name="l13007"></a>13007 93, 43, 1, 17, 18, 57, 57, 95, 94, 93, 95, 93, 93, 93, 93, 26, 24, 16, -51, 93, 93, 93, 43, 1, 17,
-<a name="l13008"></a>13008 18, 57, 57, 49, 48, 37, 7, 39, 55, 19, 7, 39, 55, 39, 7, 39, 55, 1, -28, 74, -92, 76, -128, 74, -92,
-<a name="l13009"></a>13009 76, 32, 74, -92, 76, 56, 125, 64, 125, -2, -18, 125, 64, 125, 55, 125, 64, 125, 0, 2, 0, -79, -1, 124, 1,
-<a name="l13010"></a>13010 75, 0, 70, 0, 3, 0, 7, 0, 124, 64, 49, 7, 5, 6, 4, 4, 64, 36, 55, 52, 4, 64, 6, 6, 3,
-<a name="l13011"></a>13011 1, 2, 0, 0, 64, 36, 55, 52, 0, 2, 6, 4, 15, 5, 31, 5, 47, 5, 3, 33, 3, 5, 7, 64, 7,
-<a name="l13012"></a>13012 64, 98, -112, 52, 7, 64, 77, 87, 52, 7, -72, -1, -64, -77, 72, 72, 52, 7, -72, -1, -64, 64, 16, 27, 35,
-<a name="l13013"></a>13013 52, 7, 7, 2, 0, -128, 3, -112, 3, -96, 3, 3, 3, 1, 0, 47, -51, 113, 57, 57, 51, 47, 43, 43, 43,
-<a name="l13014"></a>13014 43, 0, 26, 24, 16, -51, 95, 94, 93, 57, 57, 1, 47, -51, 43, 1, 17, 18, 57, 57, 50, 24, 47, 26, -51,
-<a name="l13015"></a>13015 43, 1, 17, 18, 57, 57, 49, 48, 37, 7, 39, 55, 23, 7, 39, 55, 1, 49, 34, 94, 36, 118, 34, 94, 36,
-<a name="l13016"></a>13016 46, 70, 24, 70, -124, 70, 24, 70, 0, 0, 3, 0, 109, -1, 112, 1, -108, 0, 55, 0, 3, 0, 7, 0, 11,
-<a name="l13017"></a>13017 1, 14, 64, 22, 11, 9, 10, 8, 10, 64, 23, 25, 52, 10, 64, 38, 45, 52, 10, 8, 64, 7, 5, 6, 4,
-<a name="l13018"></a>13018 4, -72, -1, -64, -77, 23, 25, 52, 4, -72, -1, -64, 64, 13, 38, 45, 52, 4, 64, 6, 6, 8, 3, 1, 2,
-<a name="l13019"></a>13019 0, 0, -72, -1, -64, -77, 23, 25, 52, 0, -72, -1, -64, 64, 25, 38, 45, 52, 0, 2, 64, 2, 64, 46, 67,
-<a name="l13020"></a>13020 52, 2, 64, 31, 43, 52, 2, 64, 18, 25, 52, 2, 2, 8, 8, -72, -1, -64, -77, 38, 67, 52, 8, -72, -1,
-<a name="l13021"></a>13021 -64, 64, 17, 21, 25, 52, 8, 4, 6, 7, 5, 5, 64, 31, 35, 52, 5, 7, 64, 7, -72, -1, -64, -77, 46,
-<a name="l13022"></a>13022 51, 52, 7, -72, -1, -64, 64, 35, 26, 35, 52, 15, 7, 1, 52, 3, 7, 7, 1, 10, 8, 9, 11, 9, 64,
-<a name="l13023"></a>13023 31, 35, 52, 9, 11, 64, 11, 64, 21, 25, 52, 11, 11, 2, 0, 1, 3, 3, -72, -1, -64, -76, 31, 35, 52,
-<a name="l13024"></a>13024 3, 1, 0, 47, -51, 43, 0, 17, 18, 57, 57, 51, 24, 47, 43, 0, 26, 24, 16, -51, 43, 0, 17, 18, 57,
-<a name="l13025"></a>13025 57, 17, 51, 24, 47, 95, 94, 93, 43, 43, 0, 26, 24, 16, -51, 43, 0, 17, 18, 57, 57, 1, 24, 47, 43,
-<a name="l13026"></a>13026 43, 1, 17, 51, 24, 47, 43, 43, 43, 1, 26, 24, 16, -51, 43, 43, 1, 17, 18, 57, 57, 17, 51, 24, 47,
-<a name="l13027"></a>13027 26, -51, 43, 43, 1, 17, 18, 57, 57, 26, 24, 16, -51, 43, 43, 1, 17, 18, 57, 57, 49, 48, 37, 7, 39,
-<a name="l13028"></a>13028 55, 23, 7, 39, 55, 39, 7, 39, 55, 1, -108, 34, 102, 34, 68, 34, 102, 34, 23, 34, 102, 34, 26, 70, 29,
-<a name="l13029"></a>13029 70, -127, 70, 29, 70, 20, 70, 29, 70, 0, -1, -1, 0, 20, 1, 37, 6, 127, 6, -47, 2, 54, 3, 45, 0,
-<a name="l13030"></a>13030 0, 1, 23, 6, 110, 3, 112, 6, -7, 0, 35, 64, 22, 3, 2, 1, 8, 55, 55, 7, 7, 65, 3, 2, 1,
-<a name="l13031"></a>13031 63, 54, 79, 54, -128, 54, -65, 54, 4, 54, 0, 47, 93, 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0,
-<a name="l13032"></a>13032 20, 1, 37, 7, 118, 6, -47, 2, 54, 3, 46, 0, 0, 1, 23, 6, 110, 3, 112, 6, -7, 0, 35, 64, 22,
-<a name="l13033"></a>13033 3, 2, 1, 0, 80, 80, 29, 29, 65, 3, 2, 1, 63, 79, 79, 79, -128, 79, -65, 79, 4, 79, 0, 47, 93,
-<a name="l13034"></a>13034 53, 53, 53, 1, 43, 53, 53, 53, 0, -1, -1, 0, -101, 0, -33, 1, 94, 4, 37, 2, 54, 2, -87, 0, 0,
-<a name="l13035"></a>13035 1, 23, 2, -104, -1, -88, -2, -15, 0, 35, 64, 9, 1, 0, 14, 7, 2, 1, 65, 1, 4, -72, -1, -64, -77,
-<a name="l13036"></a>13036 17, 18, 52, 4, -72, -1, -64, -77, 10, 11, 52, 4, 0, 47, 43, 43, 53, 1, 43, 53, 0, 0, 1, -2, -39,
-<a name="l13037"></a>13037 4, -29, 1, 40, 5, -26, 0, 13, 0, 33, -68, 0, 1, 2, -97, 0, 0, 0, 7, 2, -97, -77, 8, 0, 8,
-<a name="l13038"></a>13038 11, -71, 2, -97, 0, 4, 0, 47, -3, -34, -64, 1, 47, -19, -34, -19, 49, 48, 19, 51, 6, 6, 35, 34, 38,
-<a name="l13039"></a>13039 39, 51, 22, 22, 51, 50, 54, -83, 123, 15, -103, 127, -128, -103, 15, 123, 14, 83, 70, 81, 83, 5, -26, 125, -122,
-<a name="l13040"></a>13040 -123, 126, 68, 67, 65, 0, 1, 0, 0, 1, 31, 2, -68, 1, -121, 0, 3, 0, 16, -75, 3, 5, 0, 2, 100,
-<a name="l13041"></a>13041 0, 0, 47, -19, 1, 47, 16, -64, 49, 48, 17, 53, 33, 21, 2, -68, 1, 31, 104, 104, -1, -1, 0, -101, 1,
-<a name="l13042"></a>13042 31, 3, 87, 4, 37, 2, 54, 2, -67, 0, 0, 1, 23, 6, 118, 0, -101, 0, 0, 0, 64, -71, 0, 11, -1,
-<a name="l13043"></a>13043 -64, -77, 14, 17, 52, 10, -72, -1, -64, 64, 26, 14, 17, 52, 80, 8, 80, 9, 2, 16, 8, 16, 9, -112, 8,
-<a name="l13044"></a>13044 -112, 9, 4, 2, 0, 9, 10, 6, 1, 65, 2, 9, -72, -1, -64, -74, 11, 13, 52, 0, 9, 1, 9, 0, 47,
-<a name="l13045"></a>13045 93, 43, 53, 1, 43, 53, 93, 113, 43, 43, -1, -1, -1, -11, 0, -94, 4, 14, 7, 30, 2, 54, 3, -5, 0,
-<a name="l13046"></a>13046 0, 1, 22, 5, 53, 0, 0, 0, 75, 64, 14, 3, 45, 3, 46, 3, 47, 19, 45, 19, 46, 19, 47, 6, 48,
-<a name="l13047"></a>13047 -72, -1, -40, -77, 12, 22, 52, 47, -72, -1, -40, -77, 12, 22, 52, 46, -72, -1, -40, -77, 12, 22, 52, 45, -72,
-<a name="l13048"></a>13048 -1, -40, -77, 12, 22, 52, 44, -72, -1, -40, -77, 12, 22, 52, 2, -72, -1, -11, -76, 91, 91, 118, 118, 65, 1,
-<a name="l13049"></a>13049 43, 53, 0, 43, 43, 43, 43, 43, 113, 0, -1, -1, -1, -11, 0, -14, 4, -50, 7, 30, 2, 54, 3, -4, 0,
-<a name="l13050"></a>13050 0, 1, 22, 5, 53, 0, 0, 0, 48, 64, 11, 0, 32, 10, 48, 10, 80, 10, 96, 10, 4, 10, -72, -1, -64,
-<a name="l13051"></a>13051 64, 10, 9, 26, 52, 10, 0, 47, 16, 1, 16, 2, -72, -1, -11, -76, 75, 75, 102, 102, 65, 1, 43, 53, 46,
-<a name="l13052"></a>13052 93, 53, 0, 46, 43, 93, 53, -1, -1, 0, 83, -1, 36, 4, 14, 5, -53, 2, 54, 3, -5, 0, 0, 1, 23,
-<a name="l13053"></a>13053 5, 53, 0, -56, -7, 44, 0, 72, -71, 0, 2, -1, -69, -74, 100, 100, 19, 19, 65, 2, 104, -72, -1, -64, -77,
-<a name="l13054"></a>13054 18, 22, 52, 104, -72, -1, -128, -78, 31, 53, 104, -72, -1, -64, -78, 58, 53, 104, -72, -1, -64, 64, 19, 65, 66,
-<a name="l13055"></a>13055 52, 64, 104, 1, 80, 104, -48, 104, 2, 48, 104, 64, 104, -16, 104, 3, 104, 0, 46, 93, 113, 114, 43, 43, 43,
-<a name="l13056"></a>13056 43, 53, 1, 43, 53, -1, -1, 0, 74, -1, 36, 4, -50, 5, -34, 2, 54, 3, -4, 0, 0, 1, 23, 5, 53,
-<a name="l13057"></a>13057 0, 100, -7, 44, 0, 70, 64, 9, 2, 15, 75, 75, 38, 38, 65, 2, 88, -72, -1, -64, -77, 18, 22, 52, 88,
-<a name="l13058"></a>13058 -72, -1, -128, -78, 31, 53, 88, -72, -1, -64, -78, 58, 53, 88, -72, -1, -64, 64, 19, 65, 66, 52, 64, 88, 1,
-<a name="l13059"></a>13059 80, 88, -48, 88, 2, 48, 88, 64, 88, -16, 88, 3, 88, 0, 46, 93, 113, 114, 43, 43, 43, 43, 53, 1, 43,
-<a name="l13060"></a>13060 53, -1, -1, 0, 83, 0, -94, 4, 14, 6, 66, 2, 54, 3, -5, 0, 0, 1, 23, 5, 57, 1, 84, -1, 56,
-<a name="l13061"></a>13061 0, 87, -74, -90, 50, -58, 50, 2, 2, 84, -72, -1, -64, -77, 33, 36, 52, 84, -72, -1, -64, 64, 28, 20, 21,
-<a name="l13062"></a>13062 52, 0, 84, 32, 84, 64, 84, 3, 0, 84, 96, 84, 2, 32, 84, 48, 84, 64, 84, 112, 84, -128, 84, -112, 84,
-<a name="l13063"></a>13063 6, -72, -1, -38, 64, 19, 84, 79, 50, 60, 65, -93, 62, -93, 63, -93, 64, 3, 2, 94, 64, 9, 22, 52, 94,
-<a name="l13064"></a>13064 0, 46, 43, 53, 93, 1, 43, 93, 113, 114, 43, 43, 53, 93, 0, -1, -1, 0, 74, 0, -14, 4, -50, 6, 66,
-<a name="l13065"></a>13065 2, 54, 3, -4, 0, 0, 1, 23, 5, 57, 1, -32, -1, 56, 0, 97, -74, 48, 8, 11, 17, 52, 2, 68, -72,
-<a name="l13066"></a>13066 -1, -64, -77, 37, 40, 52, 68, -72, -1, -64, -77, 32, 34, 52, 68, -72, -1, -64, -77, 23, 27, 52, 68, -72, -1,
-<a name="l13067"></a>13067 -64, 64, 10, 11, 19, 52, 112, 68, -128, 68, -112, 68, 3, -72, -1, -15, 64, 12, 68, 63, 21, 48, 65, -106, 21,
-<a name="l13068"></a>13068 -90, 21, 2, 0, 10, -72, -1, -64, 64, 11, 11, 26, 52, 10, 2, 78, 64, 9, 72, 52, 78, 0, 46, 43, 53,
-<a name="l13069"></a>13069 46, 43, 53, 93, 1, 43, 113, 43, 43, 43, 43, 53, 43, 0, -1, -1, 0, 83, 0, -94, 4, 28, 7, 32, 2,
-<a name="l13070"></a>13070 54, 3, -5, 0, 0, 1, 23, 5, 54, 2, 48, 1, 99, 0, 98, -79, 2, 79, -72, -1, -64, 64, 16, 10, 12,
-<a name="l13071"></a>13071 52, 80, 79, 96, 79, 2, 14, 79, 79, 0, 0, 65, 2, 81, -72, -1, -64, -77, 67, 69, 52, 81, -72, -1, -64,
-<a name="l13072"></a>13072 -77, 61, 62, 52, 81, -72, -1, -64, -78, 59, 53, 81, -72, -1, -64, 64, 31, 9, 11, 52, 0, 81, 48, 81, -128,
-<a name="l13073"></a>13073 81, -96, 81, 4, 16, 81, 112, 81, -128, 81, -112, 81, -49, 81, 5, 96, 81, 112, 81, -65, 81, 3, 81, 0, 47,
-<a name="l13074"></a>13074 93, 113, 114, 43, 43, 43, 43, 53, 1, 43, 93, 43, 53, -1, -1, 0, 74, 0, -14, 4, -50, 7, 32, 2, 54,
-<a name="l13075"></a>13075 3, -4, 0, 0, 1, 23, 5, 54, 2, 48, 1, 99, 0, 103, -79, 2, 66, -72, -1, -64, -78, 10, 15, 52, -72,
-<a name="l13076"></a>13076 -1, -30, 64, 14, 66, 63, 48, 51, 65, 3, 49, 3, 50, 3, 51, 3, 2, 65, -72, -1, -64, -77, 67, 69, 52,
-<a name="l13077"></a>13077 65, -72, -1, -64, -77, 61, 62, 52, 65, -72, -1, -64, -78, 59, 53, 65, -72, -1, -64, 64, 31, 9, 11, 52, 0,
-<a name="l13078"></a>13078 65, 48, 65, -128, 65, -96, 65, 4, 16, 65, 112, 65, -128, 65, -112, 65, -49, 65, 5, 96, 65, 112, 65, -65, 65,
-<a name="l13079"></a>13079 3, 65, 0, 47, 93, 113, 114, 43, 43, 43, 43, 53, 93, 1, 43, 43, 53, 0, -1, -1, 0, 83, 0, -94, 4,
-<a name="l13080"></a>13080 14, 7, 33, 2, 54, 3, -5, 0, 0, 1, 23, 5, 45, 2, 78, 6, -102, 0, 113, -71, 0, 2, -1, -56, 64,
-<a name="l13081"></a>13081 38, 81, 81, 60, 60, 65, 2, 16, 82, 112, 82, -96, 82, -80, 82, -64, 82, 5, 0, 82, 96, 82, 112, 82, 3,
-<a name="l13082"></a>13082 47, 82, 63, 82, 111, 82, -80, 82, -32, 82, -16, 82, 6, 82, -72, -1, -64, -78, 88, 53, 82, -72, -1, -64, -78,
-<a name="l13083"></a>13083 82, 53, 82, -72, -1, -64, -77, 74, 75, 52, 82, -72, -1, -64, -77, 68, 71, 52, 82, -72, -1, -64, -78, 65, 53,
-<a name="l13084"></a>13084 82, -72, -1, -64, -78, 60, 53, 82, -72, -1, -64, -77, 91, -1, 52, 82, 0, 46, 43, 43, 43, 43, 43, 43, 43,
-<a name="l13085"></a>13085 93, 113, 114, 53, 1, 43, 53, 0, -1, -1, 0, 74, 0, -14, 4, -50, 7, 33, 2, 54, 3, -4, 0, 0, 1,
-<a name="l13086"></a>13086 23, 5, 45, 2, 78, 6, -102, 0, 114, 64, 43, 2, 111, 63, 1, 34, 63, 63, 51, 51, 65, 2, 16, 66, 112,
-<a name="l13087"></a>13087 66, -96, 66, -80, 66, -64, 66, 5, 0, 66, 96, 66, 112, 66, 3, 47, 66, 63, 66, 111, 66, -80, 66, -32, 66,
-<a name="l13088"></a>13088 -16, 66, 6, 66, -72, -1, -64, -78, 88, 53, 66, -72, -1, -64, -78, 82, 53, 66, -72, -1, -64, -77, 74, 75, 52,
-<a name="l13089"></a>13089 66, -72, -1, -64, -77, 68, 71, 52, 66, -72, -1, -64, -78, 65, 53, 66, -72, -1, -64, -78, 60, 53, 66, -72, -1,
-<a name="l13090"></a>13090 -64, -77, 91, -1, 52, 66, 0, 46, 43, 43, 43, 43, 43, 43, 43, 93, 113, 114, 53, 1, 43, 93, 53, -1, -1,
-<a name="l13091"></a>13091 0, 83, 0, -94, 4, 14, 7, 33, 2, 54, 3, -5, 0, 0, 1, 23, 6, 110, 2, 48, 7, 73, 0, 111, 64,
-<a name="l13092"></a>13092 14, 4, 3, 2, 16, 83, 63, 83, 80, 83, 96, 83, -96, 83, 5, -72, -1, -15, 64, 25, 83, 83, 0, 0, 65,
-<a name="l13093"></a>13093 4, 3, 2, 95, 82, 111, 82, -32, 82, 3, 80, 82, 96, 82, 112, 82, -16, 82, 4, 82, -72, -1, -64, -77, 101,
-<a name="l13094"></a>13094 -1, 52, 82, -72, -1, -64, -77, 88, 89, 52, 82, -72, -1, -64, -77, 70, 72, 52, 82, -72, -1, -64, -77, 60, 61,
-<a name="l13095"></a>13095 52, 82, -72, -1, -64, 64, 9, 25, 28, 52, 82, 64, 18, 22, 52, 82, 0, 47, 43, 43, 43, 43, 43, 43, 93,
-<a name="l13096"></a>13096 113, 53, 53, 53, 1, 43, 93, 53, 53, 53, 0, -1, -1, 0, 74, 0, -14, 4, -50, 7, 33, 2, 54, 3, -4,
-<a name="l13097"></a>13097 0, 0, 1, 23, 6, 110, 2, 88, 7, 73, 0, 102, -75, 4, 3, 2, 15, 73, 1, -72, -1, -58, 64, 25, 73,
-<a name="l13098"></a>13098 67, 48, 51, 65, 4, 3, 2, 95, 66, 111, 66, -32, 66, 3, 80, 66, 96, 66, 112, 66, -16, 66, 4, 66, -72,
-<a name="l13099"></a>13099 -1, -64, -77, 101, -1, 52, 66, -72, -1, -64, -77, 88, 89, 52, 66, -72, -1, -64, -77, 70, 72, 52, 66, -72, -1,
-<a name="l13100"></a>13100 -64, -77, 60, 61, 52, 66, -72, -1, -64, 64, 9, 25, 28, 52, 66, 64, 18, 22, 52, 66, 0, 47, 43, 43, 43,
-<a name="l13101"></a>13101 43, 43, 43, 93, 113, 53, 53, 53, 1, 43, 93, 53, 53, 53, -1, -1, 0, 83, -2, -69, 4, 14, 5, -53, 2,
-<a name="l13102"></a>13102 54, 3, -5, 0, 0, 1, 23, 6, 111, 1, -12, -1, -46, 0, 31, -77, 4, 3, 2, 79, -72, -1, -64, 64, 14,
-<a name="l13103"></a>13103 15, 17, 52, 48, 79, 64, 79, 2, 126, 79, 79, 11, 11, 65, 1, 43, 93, 43, 53, 53, 53, 0, -1, -1, 0,
-<a name="l13104"></a>13104 74, -2, -69, 4, -50, 5, -34, 2, 54, 3, -4, 0, 0, 1, 23, 6, 111, 2, -68, -1, -46, 0, 34, -78, 4,
-<a name="l13105"></a>13105 3, 2, -72, -1, -46, 64, 14, 63, 63, 24, 24, 65, 4, 3, 2, 74, 64, 11, 17, 52, 74, 0, 46, 43, 53,
-<a name="l13106"></a>13106 53, 53, 1, 43, 53, 53, 53, 0, 1, 0, 113, 1, 37, 3, -30, 5, -75, 0, 36, 0, -18, -75, 24, 32, 18,
-<a name="l13107"></a>13107 25, 52, 32, -72, -1, -32, -77, 22, 33, 52, 18, -72, -1, -64, -77, 17, 21, 52, 18, -72, -1, -79, 64, 24, 12,
-<a name="l13108"></a>13108 16, 52, 31, 9, 1, 3, 9, 9, 15, 23, 15, 29, 31, 29, 47, 29, 3, 13, 4, 29, 31, 32, 1, -72, -1,
-<a name="l13109"></a>13109 -32, -74, 9, 31, 52, 1, 0, 3, 3, -72, -1, -64, 64, 17, 24, 27, 52, 3, 35, 15, 15, 31, 15, 2, 16,
-<a name="l13110"></a>13110 3, 15, 31, 33, 33, 7, -72, 2, -5, -78, 11, 64, 11, -72, -1, -64, 64, 11, 12, 17, 52, 0, 11, 1, 19,
-<a name="l13111"></a>13111 3, 11, 22, 17, -72, -1, -64, -77, 22, 64, 52, 17, -72, -1, -38, -77, 18, 21, 52, 17, -72, -1, -64, -75, 12,
-<a name="l13112"></a>13112 17, 52, 17, 29, 23, -72, 2, -5, 64, 13, 64, 0, 22, 16, 22, 64, 22, 3, 17, 3, 22, 29, 1, -72, -1,
-<a name="l13113"></a>13113 -32, -74, 9, 31, 52, 1, 0, 38, 29, 47, 16, -58, 50, 43, 1, 24, 16, -44, 95, 94, 93, 26, 77, -19, 18,
-<a name="l13114"></a>13114 57, 43, 43, 43, 1, 24, 16, -58, 95, 94, 93, 43, 1, 26, 24, 16, 77, -19, 57, 25, 47, 0, 24, 47, -51,
-<a name="l13115"></a>13115 95, 94, 93, -48, -51, 43, 0, 25, 16, -60, 50, 43, 0, 26, 25, 16, -51, 95, 94, 93, 24, 47, 18, 57, 47,
-<a name="l13116"></a>13116 95, 93, 49, 48, 1, 43, 43, 43, 43, 1, 7, 38, 35, 34, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 35,
-<a name="l13117"></a>13117 34, 7, 18, 17, 20, 7, 7, 35, 2, 39, 38, 39, 38, 39, 54, 51, 50, 23, 54, 51, 50, 3, -30, 10, 63,
-<a name="l13118"></a>13118 64, -100, 29, 1, 7, 7, 14, 12, 6, 11, 23, 37, 97, 31, 40, -84, 2, 2, 30, 75, 26, 51, 71, 64, 124,
-<a name="l13119"></a>13119 -97, -56, 126, 40, 25, -107, 88, 5, 38, 16, 47, -44, 9, 92, 12, 14, 117, 43, 67, 20, -2, -4, -3, -2, 30,
-<a name="l13120"></a>13120 71, 77, 1, 62, 90, -79, -127, 115, -100, -73, -123, -123, 0, 0, 1, 0, -83, 0, -36, 3, -79, 5, -75, 0, 28,
-<a name="l13121"></a>13121 0, 107, 64, 11, 13, 16, 14, 20, 52, 14, 16, 17, 31, 52, 21, -72, -1, -24, 64, 16, 12, 17, 52, 2, 21,
-<a name="l13122"></a>13122 1, 22, 4, 4, 64, 9, 12, 52, 4, 9, 25, -72, 2, -1, 64, 10, 64, 6, 8, 15, 0, 23, 1, 21, 5,
-<a name="l13123"></a>13123 23, -72, -1, -64, -75, 12, 60, 52, 23, 9, 15, -72, 2, -5, -78, 16, 9, 4, -72, 2, -5, -78, 0, 30, 9,
-<a name="l13124"></a>13124 47, 16, -42, -19, 16, -44, -19, 18, 57, 43, 1, 95, 94, 93, 0, 24, 47, 47, -42, 26, 77, -19, 50, -58, 43,
-<a name="l13125"></a>13125 49, 48, 1, 95, 94, 93, 43, 43, 43, 1, 20, 6, 21, 7, 38, 35, 34, 7, 39, 54, 55, 54, 55, 54, 19,
-<a name="l13126"></a>13126 51, 20, 22, 21, 20, 7, 6, 7, 54, 51, 50, 23, 22, 3, -79, 6, 36, 48, -66, -14, -73, 67, 122, 65, 72,
-<a name="l13127"></a>13127 51, 26, 75, 30, 4, 48, 51, 82, 90, -120, -118, 46, 98, 1, -85, 33, -119, 33, 4, 114, 41, -50, -103, 109, -125,
-<a name="l13128"></a>13128 -86, 90, 1, 53, 30, 118, 30, -88, -52, -33, -117, 13, 13, 31, 0, -1, -1, 0, 15, 0, -94, 4, 14, 7, 33,
-<a name="l13129"></a>13129 2, 54, 3, -5, 0, 0, 1, 22, 5, 52, 0, 0, 0, 23, -76, 3, 2, 83, 3, 2, -72, -1, -68, -76, 92,
-<a name="l13130"></a>13130 92, 42, 42, 65, 1, 43, 53, 53, 0, 47, 53, 53, 0, -1, -1, 0, 15, 0, -14, 4, -50, 7, 33, 2, 54,
-<a name="l13131"></a>13131 3, -4, 0, 0, 1, 22, 5, 52, 0, 0, 0, 23, -76, 3, 2, 67, 3, 2, -72, -1, -105, -76, 76, 76, 16,
-<a name="l13132"></a>13132 16, 65, 1, 43, 53, 53, 0, 47, 53, 53, 0, 0, 0, 0, 0, 0, 1, 0, 0, 21, 92, 0, 1, 3, -115,
-<a name="l13133"></a>13133 12, 0, 0, 9, 9, 78, 0, 3, 0, 36, -1, -113, 0, 3, 0, 55, -1, -37, 0, 3, 0, 60, -1, -37, 0,
-<a name="l13134"></a>13134 3, 1, -15, -1, -113, 0, 3, 1, -7, -1, -113, 0, 3, 1, -5, -1, -113, 0, 3, 2, 1, -1, -113, 0, 3,
-<a name="l13135"></a>13135 2, 9, -1, -37, 0, 3, 2, 10, -1, -37, 0, 3, 2, 15, -1, -37, 0, 20, 0, 20, -1, 104, 0, 36, 0,
-<a name="l13136"></a>13136 3, -1, -113, 0, 36, 0, 55, -1, 104, 0, 36, 0, 57, -1, 104, 0, 36, 0, 58, -1, -76, 0, 36, 0, 60,
-<a name="l13137"></a>13137 -1, 104, 0, 36, 0, 89, -1, -37, 0, 36, 0, 90, -1, -37, 0, 36, 0, 92, -1, -37, 0, 36, 0, -74, -1,
-<a name="l13138"></a>13138 104, 0, 41, 0, 15, -1, 29, 0, 41, 0, 17, -1, 29, 0, 41, 0, 36, -1, -113, 0, 47, 0, 3, -1, -76,
-<a name="l13139"></a>13139 0, 47, 0, 55, -1, 104, 0, 47, 0, 57, -1, 104, 0, 47, 0, 58, -1, 104, 0, 47, 0, 60, -1, 104, 0,
-<a name="l13140"></a>13140 47, 0, 92, -1, -76, 0, 47, 0, -74, -1, -113, 0, 51, 0, 3, -1, -37, 0, 51, 0, 15, -2, -8, 0, 51,
-<a name="l13141"></a>13141 0, 17, -2, -8, 0, 51, 0, 36, -1, 104, 0, 53, 0, 55, -1, -37, 0, 53, 0, 57, -1, -37, 0, 53, 0,
-<a name="l13142"></a>13142 58, -1, -37, 0, 53, 0, 60, -1, -37, 0, 55, 0, 3, -1, -37, 0, 55, 0, 15, -1, 29, 0, 55, 0, 16,
-<a name="l13143"></a>13143 -1, -113, 0, 55, 0, 17, -1, 29, 0, 55, 0, 29, -1, 29, 0, 55, 0, 30, -1, 29, 0, 55, 0, 36, -1,
-<a name="l13144"></a>13144 104, 0, 55, 0, 50, -1, -37, 0, 55, 0, 68, -1, 29, 0, 55, 0, 70, -1, 29, 0, 55, 0, 72, -1, 29,
-<a name="l13145"></a>13145 0, 55, 0, 76, -1, -76, 0, 55, 0, 82, -1, 29, 0, 55, 0, 85, -1, -76, 0, 55, 0, 86, -1, 29, 0,
-<a name="l13146"></a>13146 55, 0, 88, -1, -76, 0, 55, 0, 90, -1, -113, 0, 55, 0, 92, -1, -113, 0, 57, 0, 15, -1, 68, 0, 57,
-<a name="l13147"></a>13147 0, 16, -1, -113, 0, 57, 0, 17, -1, 68, 0, 57, 0, 29, -1, -76, 0, 57, 0, 30, -1, -76, 0, 57, 0,
-<a name="l13148"></a>13148 36, -1, 104, 0, 57, 0, 68, -1, 104, 0, 57, 0, 72, -1, -113, 0, 57, 0, 76, -1, -37, 0, 57, 0, 82,
-<a name="l13149"></a>13149 -1, -113, 0, 57, 0, 85, -1, -76, 0, 57, 0, 88, -1, -76, 0, 57, 0, 92, -1, -76, 0, 58, 0, 15, -1,
-<a name="l13150"></a>13150 -113, 0, 58, 0, 16, -1, -37, 0, 58, 0, 17, -1, -113, 0, 58, 0, 29, -1, -37, 0, 58, 0, 30, -1, -37,
-<a name="l13151"></a>13151 0, 58, 0, 36, -1, -76, 0, 58, 0, 68, -1, -76, 0, 58, 0, 72, -1, -37, 0, 58, 0, 76, 0, 0, 0,
-<a name="l13152"></a>13152 58, 0, 82, -1, -37, 0, 58, 0, 85, -1, -37, 0, 58, 0, 88, -1, -37, 0, 58, 0, 92, -1, -18, 0, 60,
-<a name="l13153"></a>13153 0, 3, -1, -37, 0, 60, 0, 15, -2, -8, 0, 60, 0, 16, -1, 68, 0, 60, 0, 17, -2, -8, 0, 60, 0,
-<a name="l13154"></a>13154 29, -1, -113, 0, 60, 0, 30, -1, 123, 0, 60, 0, 36, -1, 104, 0, 60, 0, 68, -1, 104, 0, 60, 0, 72,
-<a name="l13155"></a>13155 -1, 68, 0, 60, 0, 76, -1, -76, 0, 60, 0, 82, -1, 68, 0, 60, 0, 83, -1, 104, 0, 60, 0, 84, -1,
-<a name="l13156"></a>13156 68, 0, 60, 0, 88, -1, -113, 0, 60, 0, 89, -1, -113, 0, 73, 0, 73, -1, -37, 0, 73, 0, -74, 0, 37,
-<a name="l13157"></a>13157 0, 85, 0, 15, -1, -113, 0, 85, 0, 17, -1, -113, 0, 85, 0, -74, 0, 76, 0, 89, 0, 15, -1, 104, 0,
-<a name="l13158"></a>13158 89, 0, 17, -1, 104, 0, 90, 0, 15, -1, -113, 0, 90, 0, 17, -1, -113, 0, 92, 0, 15, -1, 104, 0, 92,
-<a name="l13159"></a>13159 0, 17, -1, 104, 0, -75, 0, -75, -1, -37, 0, -74, 0, 3, -1, -76, 0, -74, 0, 86, -1, -37, 0, -74, 0,
-<a name="l13160"></a>13160 -74, -1, -37, 0, -60, 2, 45, -1, 96, 0, -60, 2, 54, -1, 96, 0, -60, 2, 76, -1, 96, 0, -60, 2, 81,
-<a name="l13161"></a>13161 -1, -68, 0, -60, 2, 84, -1, -68, 1, 43, 0, 15, -1, 31, 1, 43, 0, 17, -1, 31, 1, 43, 1, -8, 0,
-<a name="l13162"></a>13162 -92, 1, 43, 1, -7, -1, 68, 1, 43, 1, -5, -1, 68, 1, 43, 2, 1, -1, 68, 1, 43, 2, 26, -1, -88,
-<a name="l13163"></a>13163 1, 43, 2, 39, 0, 88, 1, 44, 1, -7, -1, -37, 1, 44, 1, -5, -1, -37, 1, 44, 2, 1, -1, -37, 1,
-<a name="l13164"></a>13164 44, 2, 10, -1, -66, 1, 44, 2, 15, -1, -66, 1, 45, 1, -7, -1, -59, 1, 45, 2, 10, -1, -66, 1, 45,
-<a name="l13165"></a>13165 2, 15, -1, -66, 1, 47, 1, 50, -1, -29, 1, 47, 2, 28, -1, -39, 1, 47, 2, 36, -1, -55, 1, 47, 2,
-<a name="l13166"></a>13166 -116, -1, -29, 1, 50, 1, 46, -1, -29, 1, 50, 1, 47, -1, -29, 1, 50, 1, 49, -1, -29, 1, 50, 1, 51,
-<a name="l13167"></a>13167 -1, -29, 1, 50, 2, 16, -1, -29, 1, 50, 2, 23, -1, -29, 1, 50, 2, 32, -1, -29, 1, 50, 2, 34, -1,
-<a name="l13168"></a>13168 -29, 1, 50, 2, 38, -1, -29, 1, 50, 2, 43, -1, -29, 1, 51, 1, 50, -1, -29, 1, 51, 2, 28, -1, -39,
-<a name="l13169"></a>13169 1, 51, 2, 36, -1, -55, 1, 51, 2, -116, -1, -29, 1, -15, 1, 44, -1, -43, 1, -15, 1, 45, -1, -59, 1,
-<a name="l13170"></a>13170 -15, 2, 5, -1, -43, 1, -15, 2, 9, -1, 104, 1, -15, 2, 10, -1, 104, 1, -15, 2, 15, -1, 104, 1, -15,
-<a name="l13171"></a>13171 2, 22, -1, -37, 1, -15, 2, 30, -1, -37, 1, -15, 2, 36, -1, -37, 1, -11, 2, 10, -1, -66, 1, -10, 1,
-<a name="l13172"></a>13172 44, -1, -115, 1, -10, 1, 45, -1, -115, 1, -10, 1, 46, -1, 70, 1, -10, 1, 49, -1, 70, 1, -10, 1, 51,
-<a name="l13173"></a>13173 -1, 70, 1, -10, 1, -8, 0, -86, 1, -10, 1, -7, -1, 104, 1, -10, 1, -5, -1, 104, 1, -10, 2, 1, -1,
-<a name="l13174"></a>13174 104, 1, -10, 2, 5, -1, -115, 1, -10, 2, 13, -1, -98, 1, -10, 2, 18, -1, 104, 1, -10, 2, 19, -1, -76,
-<a name="l13175"></a>13175 1, -10, 2, 24, -1, 104, 1, -10, 2, 26, -1, -76, 1, -10, 2, 27, -1, 104, 1, -10, 2, 29, -1, 104, 1,
-<a name="l13176"></a>13176 -10, 2, 32, -1, 70, 1, -10, 2, 39, 0, 98, 1, -10, 2, 41, -1, 70, 1, -9, 2, 10, -1, -47, 1, -9,
-<a name="l13177"></a>13177 2, 15, -1, -47, 1, -7, 0, 3, -1, -113, 1, -7, 0, -74, -1, 104, 1, -7, 1, 44, -1, -43, 1, -7, 1,
-<a name="l13178"></a>13178 45, -1, -59, 1, -7, 2, 5, -1, -43, 1, -7, 2, 9, -1, 104, 1, -7, 2, 10, -1, 104, 1, -7, 2, 15,
-<a name="l13179"></a>13179 -1, 104, 1, -7, 2, 22, -1, -37, 1, -7, 2, 30, -1, -37, 1, -7, 2, 36, -1, -37, 1, -5, 0, 3, -1,
-<a name="l13180"></a>13180 -113, 1, -5, 1, 44, -1, -43, 1, -5, 2, 5, -1, -43, 1, -5, 2, 9, -1, -119, 1, -5, 2, 10, -1, 104,
-<a name="l13181"></a>13181 1, -5, 2, 15, -1, 104, 2, 0, 1, 44, -1, -63, 2, 0, 1, 45, -1, -113, 2, 0, 1, 46, -1, -25, 2,
-<a name="l13182"></a>13182 0, 1, 47, -1, -25, 2, 0, 1, 49, -1, -25, 2, 0, 1, 51, -1, -25, 2, 0, 2, 5, -1, -63, 2, 0,
-<a name="l13183"></a>13183 2, 16, -1, -25, 2, 0, 2, 23, -1, -25, 2, 0, 2, 25, -1, -25, 2, 0, 2, 31, -1, -25, 2, 0, 2,
-<a name="l13184"></a>13184 32, -1, -25, 2, 0, 2, 38, -1, -25, 2, 0, 2, 41, -1, -25, 2, 0, 2, 43, -1, -25, 2, 1, 0, 3,
-<a name="l13185"></a>13185 -1, -113, 2, 1, 1, 44, -1, -43, 2, 1, 2, 5, -1, -43, 2, 1, 2, 9, -1, 104, 2, 1, 2, 10, -1,
-<a name="l13186"></a>13186 104, 2, 1, 2, 15, -1, 104, 2, 5, 1, -7, -1, -37, 2, 5, 1, -5, -1, -43, 2, 5, 2, 1, -1, -37,
-<a name="l13187"></a>13187 2, 5, 2, 10, -1, -66, 2, 5, 2, 15, -1, -66, 2, 7, 0, 3, -1, -37, 2, 7, 0, 15, -2, -6, 2,
-<a name="l13188"></a>13188 7, 0, 17, -2, -6, 2, 7, 1, -7, -1, 104, 2, 7, 1, -5, -1, 104, 2, 7, 2, 1, -1, 104, 2, 8,
-<a name="l13189"></a>13189 1, 50, -1, -98, 2, 8, 2, -116, -1, -98, 2, 9, 0, 3, -1, -37, 2, 9, 0, 15, -1, 31, 2, 9, 0,
-<a name="l13190"></a>13190 17, -1, 31, 2, 9, 0, 29, -1, 31, 2, 9, 0, 30, -1, 31, 2, 9, 1, 44, -1, -37, 2, 9, 1, 45,
-<a name="l13191"></a>13191 -1, -37, 2, 9, 1, 46, -1, 31, 2, 9, 1, 48, -1, 31, 2, 9, 1, 49, -1, 31, 2, 9, 1, 51, -1,
-<a name="l13192"></a>13192 31, 2, 9, 1, -8, 0, -68, 2, 9, 1, -7, -1, 104, 2, 9, 1, -5, -1, 104, 2, 9, 2, 1, -1, 104,
-<a name="l13193"></a>13193 2, 9, 2, 5, -1, -37, 2, 9, 2, 13, -1, -37, 2, 9, 2, 16, -1, 31, 2, 9, 2, 17, -1, 31, 2,
-<a name="l13194"></a>13194 9, 2, 20, -1, 78, 2, 9, 2, 22, -1, 78, 2, 9, 2, 24, -1, 106, 2, 9, 2, 26, -1, -76, 2, 9,
-<a name="l13195"></a>13195 2, 29, -1, 106, 2, 9, 2, 30, -1, -113, 2, 9, 2, 32, -1, 31, 2, 9, 2, 35, -1, 80, 2, 9, 2,
-<a name="l13196"></a>13196 36, -1, -113, 2, 9, 2, 37, -1, 106, 2, 9, 2, 39, 0, -68, 2, 9, 2, 40, -1, 78, 2, 9, 2, 41,
-<a name="l13197"></a>13197 -1, 31, 2, 9, 2, 42, -1, 78, 2, 10, 0, 3, -1, -37, 2, 10, 0, 15, -2, -6, 2, 10, 0, 16, -1,
-<a name="l13198"></a>13198 70, 2, 10, 0, 17, -2, -6, 2, 10, 0, 29, -1, -113, 2, 10, 0, 30, -1, -113, 2, 10, 1, 44, -1, -115,
-<a name="l13199"></a>13199 2, 10, 1, 45, -1, -115, 2, 10, 1, 46, -1, 70, 2, 10, 1, 49, -1, 70, 2, 10, 1, 51, -1, 70, 2,
-<a name="l13200"></a>13200 10, 1, -8, 0, -68, 2, 10, 1, -7, -1, 104, 2, 10, 1, -5, -1, 104, 2, 10, 2, 1, -1, 104, 2, 10,
-<a name="l13201"></a>13201 2, 5, -1, -115, 2, 10, 2, 13, -1, -98, 2, 10, 2, 18, -1, 104, 2, 10, 2, 19, -1, -76, 2, 10, 2,
-<a name="l13202"></a>13202 22, -1, -98, 2, 10, 2, 24, -1, 104, 2, 10, 2, 26, -1, -76, 2, 10, 2, 27, -1, 104, 2, 10, 2, 29,
-<a name="l13203"></a>13203 -1, 104, 2, 10, 2, 32, -1, 70, 2, 10, 2, 39, 0, 121, 2, 10, 2, 41, -1, 70, 2, 12, 1, 46, -1,
-<a name="l13204"></a>13204 -78, 2, 12, 1, 47, -1, -78, 2, 12, 1, 49, -1, -78, 2, 12, 1, 51, -1, -78, 2, 12, 2, 16, -1, -78,
-<a name="l13205"></a>13205 2, 12, 2, 25, -1, -39, 2, 12, 2, 32, -1, -78, 2, 12, 2, 38, -1, -78, 2, 12, 2, 41, -1, -78, 2,
-<a name="l13206"></a>13206 12, 2, 43, -1, -78, 2, 13, 2, 10, -1, -47, 2, 13, 2, 15, -1, -47, 2, 15, 0, 3, -1, -37, 2, 15,
-<a name="l13207"></a>13207 1, 44, -1, -115, 2, 15, 1, 45, -1, -115, 2, 15, 1, 46, -1, 70, 2, 15, 1, 49, -1, 70, 2, 15, 1,
-<a name="l13208"></a>13208 51, -1, 70, 2, 15, 1, -8, 0, -86, 2, 15, 1, -7, -1, 104, 2, 15, 1, -5, -1, 104, 2, 15, 2, 1,
-<a name="l13209"></a>13209 -1, 104, 2, 15, 2, 5, -1, -115, 2, 15, 2, 13, -1, -98, 2, 15, 2, 18, -1, 104, 2, 15, 2, 19, -1,
-<a name="l13210"></a>13210 -76, 2, 15, 2, 24, -1, 104, 2, 15, 2, 26, -1, -76, 2, 15, 2, 27, -1, 104, 2, 15, 2, 29, -1, 104,
-<a name="l13211"></a>13211 2, 15, 2, 32, -1, 70, 2, 15, 2, 39, 0, 98, 2, 15, 2, 41, -1, 70, 2, 23, 1, 46, -1, 119, 2,
-<a name="l13212"></a>13212 23, 1, 47, -1, -76, 2, 23, 1, 49, -1, 119, 2, 23, 1, 50, -1, -86, 2, 23, 1, 51, -1, 119, 2, 23,
-<a name="l13213"></a>13213 2, 16, -1, 119, 2, 23, 2, 18, -1, -37, 2, 23, 2, 22, -1, -86, 2, 23, 2, 24, -1, -37, 2, 23, 2,
-<a name="l13214"></a>13214 25, -1, -98, 2, 23, 2, 26, -1, -37, 2, 23, 2, 27, -1, -37, 2, 23, 2, 30, -1, -86, 2, 23, 2, 32,
-<a name="l13215"></a>13215 -1, 119, 2, 23, 2, 38, -1, 119, 2, 23, 2, 41, -1, 119, 2, 23, 2, 43, -1, 119, 2, 23, 2, -116, -1,
-<a name="l13216"></a>13216 -86, 2, 25, 2, 28, -1, -39, 2, 27, 1, 46, -1, -25, 2, 27, 1, 47, -1, -25, 2, 27, 1, 49, -1, -25,
-<a name="l13217"></a>13217 2, 27, 1, 51, -1, -25, 2, 27, 2, 16, -1, -25, 2, 27, 2, 23, -1, -25, 2, 27, 2, 25, -1, -25, 2,
-<a name="l13218"></a>13218 27, 2, 31, -1, -25, 2, 27, 2, 32, -1, -25, 2, 27, 2, 34, -1, -25, 2, 27, 2, 38, -1, -25, 2, 27,
-<a name="l13219"></a>13219 2, 41, -1, -25, 2, 27, 2, 43, -1, -25, 2, 28, 1, 46, -1, -31, 2, 28, 1, 47, -1, -31, 2, 28, 1,
-<a name="l13220"></a>13220 49, -1, -31, 2, 28, 1, 51, -1, -37, 2, 28, 2, 16, -1, -31, 2, 28, 2, 31, -1, -31, 2, 28, 2, 32,
-<a name="l13221"></a>13221 -1, -31, 2, 28, 2, 34, -1, -47, 2, 28, 2, 35, -1, -49, 2, 28, 2, 38, -1, -31, 2, 28, 2, 41, -1,
-<a name="l13222"></a>13222 -31, 2, 28, 2, 42, -1, -49, 2, 28, 2, 43, -1, -31, 2, 31, 1, 46, -1, -55, 2, 31, 1, 47, -1, -55,
-<a name="l13223"></a>13223 2, 31, 1, 49, -1, -55, 2, 31, 1, 51, -1, -55, 2, 31, 2, 16, -1, -55, 2, 31, 2, 23, -1, -55, 2,
-<a name="l13224"></a>13224 31, 2, 31, -1, -55, 2, 31, 2, 32, -1, -55, 2, 31, 2, 34, -1, -55, 2, 31, 2, 41, -1, -55, 2, 32,
-<a name="l13225"></a>13225 1, 50, -1, -29, 2, 32, 2, 28, -1, -39, 2, 32, 2, 36, -1, -55, 2, 32, 2, -116, -1, -29, 2, 33, 1,
-<a name="l13226"></a>13226 50, -1, -29, 2, 33, 2, 28, -1, -39, 2, 33, 2, -116, -1, -29, 2, 36, 1, 46, -1, -55, 2, 36, 1, 47,
-<a name="l13227"></a>13227 -1, -55, 2, 36, 1, 49, -1, -55, 2, 36, 1, 51, -1, -55, 2, 36, 2, 16, -1, -55, 2, 36, 2, 23, -1,
-<a name="l13228"></a>13228 -55, 2, 36, 2, 32, -1, -55, 2, 36, 2, 34, -1, -55, 2, 36, 2, 38, -1, -55, 2, 36, 2, 41, -1, -55,
-<a name="l13229"></a>13229 2, 36, 2, 43, -1, -55, 2, 38, 1, 50, -1, -29, 2, 38, 2, 28, -1, -39, 2, 38, 2, 36, -1, -55, 2,
-<a name="l13230"></a>13230 38, 2, -116, -1, -29, 2, 41, 1, 50, -1, -29, 2, 41, 2, 28, -1, -39, 2, 41, 2, 36, -1, -55, 2, 41,
-<a name="l13231"></a>13231 2, -116, -1, -29, 2, 43, 1, 50, -1, -29, 2, 43, 2, 28, -1, -39, 2, 43, 2, 36, -1, -55, 2, 43, 2,
-<a name="l13232"></a>13232 -116, -1, -29, 2, 46, 0, 15, -1, 6, 2, 46, 0, 17, -1, 6, 2, 46, 0, -87, -1, 119, 2, 46, 0, -86,
-<a name="l13233"></a>13233 -1, 119, 2, 46, 0, -78, -1, -45, 2, 52, 0, -74, -1, 96, 2, 53, 0, -74, -1, 119, 2, 58, 0, -74, -1,
-<a name="l13234"></a>13234 -115, 2, 58, 2, 62, 0, 68, 2, 58, 2, 65, -1, -23, 2, 58, 2, 69, 0, 45, 2, 58, 2, 72, -1, -45,
-<a name="l13235"></a>13235 2, 58, 2, 73, -1, -23, 2, 58, 2, 75, -1, -45, 2, 58, 2, 76, -1, 96, 2, 58, 2, 77, -1, -90, 2,
-<a name="l13236"></a>13236 58, 2, 78, -1, -68, 2, 58, 2, 81, -1, 96, 2, 58, 2, 87, -1, -45, 2, 58, 2, 90, 0, 23, 2, 58,
-<a name="l13237"></a>13237 2, 108, -1, -45, 2, 58, 2, 109, -1, -23, 2, 58, 2, 110, 0, 23, 2, 58, 2, 119, 0, 45, 2, 59, 2,
-<a name="l13238"></a>13238 58, -1, -45, 2, 59, 2, 65, -1, -23, 2, 59, 2, 72, -1, -23, 2, 59, 2, 75, -1, -23, 2, 59, 2, 76,
-<a name="l13239"></a>13239 -1, -92, 2, 59, 2, 77, -1, -47, 2, 59, 2, 78, -1, -23, 2, 59, 2, 79, -1, -45, 2, 59, 2, 81, -1,
-<a name="l13240"></a>13240 -92, 2, 59, 2, 84, -1, -68, 2, 59, 2, 87, -1, -23, 2, 59, 2, 89, -1, -23, 2, 59, 2, 101, -1, -23,
-<a name="l13241"></a>13241 2, 59, 2, 109, -1, -45, 2, 60, 2, 58, -1, -68, 2, 60, 2, 62, -1, -45, 2, 60, 2, 64, -1, -45, 2,
-<a name="l13242"></a>13242 60, 2, 65, -1, -68, 2, 60, 2, 69, -1, -23, 2, 60, 2, 72, -1, -68, 2, 60, 2, 75, -1, -68, 2, 60,
-<a name="l13243"></a>13243 2, 76, -1, 119, 2, 60, 2, 77, -1, -68, 2, 60, 2, 78, -1, -68, 2, 60, 2, 79, -1, -90, 2, 60, 2,
-<a name="l13244"></a>13244 81, -1, -92, 2, 60, 2, 84, -1, -115, 2, 60, 2, 89, -1, -68, 2, 60, 2, 94, -1, -23, 2, 60, 2, 102,
-<a name="l13245"></a>13245 -1, -23, 2, 60, 2, 108, -1, -68, 2, 60, 2, 109, -1, -23, 2, 60, 2, 111, -1, -23, 2, 60, 2, 113, -1,
-<a name="l13246"></a>13246 -68, 2, 60, 2, 121, -1, -23, 2, 61, 0, 15, -1, 6, 2, 61, 0, 17, -1, 6, 2, 61, 0, -87, -1, 119,
-<a name="l13247"></a>13247 2, 61, 0, -86, -1, 119, 2, 61, 0, -78, -1, -45, 2, 61, 2, 58, -1, 119, 2, 61, 2, 62, -1, 119, 2,
-<a name="l13248"></a>13248 61, 2, 65, -1, -45, 2, 61, 2, 69, -1, -115, 2, 61, 2, 70, -1, -47, 2, 61, 2, 72, -1, -115, 2, 61,
-<a name="l13249"></a>13249 2, 75, -1, -92, 2, 61, 2, 89, -1, -68, 2, 61, 2, 90, -1, -115, 2, 61, 2, 92, -1, -115, 2, 61, 2,
-<a name="l13250"></a>13250 94, -1, 119, 2, 61, 2, 95, -1, 119, 2, 61, 2, 98, -1, -115, 2, 61, 2, 101, -1, -115, 2, 61, 2, 102,
-<a name="l13251"></a>13251 -1, -115, 2, 61, 2, 103, -1, -115, 2, 61, 2, 104, -1, 119, 2, 61, 2, 106, -1, -115, 2, 61, 2, 109, -1,
-<a name="l13252"></a>13252 119, 2, 61, 2, 117, -1, -115, 2, 61, 2, 118, -1, -115, 2, 61, 2, 120, -1, -115, 2, 61, 2, 121, -1, 119,
-<a name="l13253"></a>13253 2, 62, 2, 77, 0, 23, 2, 62, 2, 78, -1, -45, 2, 62, 2, 81, -1, -70, 2, 62, 2, 97, 0, 68, 2,
-<a name="l13254"></a>13254 62, 2, 104, 0, 23, 2, 62, 2, 109, 0, 45, 2, 63, 2, 65, -1, -45, 2, 63, 2, 107, -1, -23, 2, 64,
-<a name="l13255"></a>13255 2, 65, -1, -23, 2, 64, 2, 72, -1, -45, 2, 64, 2, 75, -1, -23, 2, 64, 2, 76, 0, 23, 2, 64, 2,
-<a name="l13256"></a>13256 77, 0, 45, 2, 64, 2, 84, 0, 45, 2, 64, 2, 90, 0, 23, 2, 64, 2, 95, -1, -25, 2, 64, 2, 104,
-<a name="l13257"></a>13257 -1, -23, 2, 64, 2, 109, -1, -23, 2, 65, 2, 69, -1, -23, 2, 65, 2, 72, -1, -23, 2, 65, 2, 75, -1,
-<a name="l13258"></a>13258 -23, 2, 65, 2, 76, -1, -45, 2, 65, 2, 77, -1, -23, 2, 65, 2, 78, -1, -23, 2, 65, 2, 81, -1, -45,
-<a name="l13259"></a>13259 2, 65, 2, 89, -1, -23, 2, 68, 2, 65, -1, -23, 2, 68, 2, 72, -1, -23, 2, 68, 2, 75, -1, -23, 2,
-<a name="l13260"></a>13260 68, 2, 77, 0, 23, 2, 68, 2, 78, -1, -70, 2, 69, 2, 78, -1, -23, 2, 69, 2, 91, 0, 23, 2, 69,
-<a name="l13261"></a>13261 2, 109, 0, 23, 2, 70, 2, 78, -1, -23, 2, 70, 2, 81, -1, -23, 2, 70, 2, 90, 0, 23, 2, 70, 2,
-<a name="l13262"></a>13262 95, 0, 23, 2, 70, 2, 104, 0, 23, 2, 70, 2, 107, 0, 23, 2, 70, 2, 109, 0, 23, 2, 70, 2, 113,
-<a name="l13263"></a>13263 -1, -23, 2, 70, 2, 119, 0, 23, 2, 72, 2, 58, -1, -45, 2, 72, 2, 62, -1, -45, 2, 72, 2, 64, -1,
-<a name="l13264"></a>13264 -45, 2, 72, 2, 69, -1, -23, 2, 72, 2, 77, -1, -45, 2, 72, 2, 79, -1, -92, 2, 72, 2, 81, -1, -45,
-<a name="l13265"></a>13265 2, 72, 2, 89, -1, -45, 2, 72, 2, 94, -1, -45, 2, 72, 2, 101, -1, -23, 2, 72, 2, 111, -1, -23, 2,
-<a name="l13266"></a>13266 74, 0, 15, -2, 125, 2, 74, 0, 17, -2, 125, 2, 74, 0, 29, -1, -45, 2, 74, 0, 30, -1, -45, 2, 74,
-<a name="l13267"></a>13267 0, -86, -1, -115, 2, 74, 2, 58, -1, 119, 2, 74, 2, 62, -1, 119, 2, 74, 2, 64, -1, -23, 2, 74, 2,
-<a name="l13268"></a>13268 65, -1, -45, 2, 74, 2, 69, -1, -115, 2, 74, 2, 70, -1, -23, 2, 74, 2, 72, -1, -45, 2, 74, 2, 75,
-<a name="l13269"></a>13269 -1, -23, 2, 74, 2, 76, -1, -92, 2, 74, 2, 77, -1, -45, 2, 74, 2, 78, -1, -23, 2, 74, 2, 79, -1,
-<a name="l13270"></a>13270 -92, 2, 74, 2, 89, -1, -45, 2, 74, 2, 90, -1, -68, 2, 74, 2, 94, -1, 96, 2, 74, 2, 95, -1, -90,
-<a name="l13271"></a>13271 2, 74, 2, 104, -1, -90, 2, 74, 2, 119, -1, -45, 2, 74, 2, 121, -1, -68, 2, 75, 2, 58, -1, -45, 2,
-<a name="l13272"></a>13272 75, 2, 62, -1, -45, 2, 75, 2, 65, -1, -23, 2, 75, 2, 69, -1, -68, 2, 75, 2, 70, -1, -23, 2, 75,
-<a name="l13273"></a>13273 2, 72, -1, -45, 2, 75, 2, 76, -1, -68, 2, 75, 2, 77, -1, -68, 2, 75, 2, 79, -1, -115, 2, 75, 2,
-<a name="l13274"></a>13274 81, -1, -68, 2, 75, 2, 84, -1, -70, 2, 75, 2, 87, -1, -23, 2, 75, 2, 90, 0, 23, 2, 75, 2, 96,
-<a name="l13275"></a>13275 0, 45, 2, 75, 2, 113, -1, -23, 2, 76, 0, 15, -1, 29, 2, 76, 0, 17, -1, 29, 2, 76, 0, -87, -1,
-<a name="l13276"></a>13276 -90, 2, 76, 0, -86, -1, -90, 2, 76, 0, -78, -1, -45, 2, 76, 2, 58, -1, -68, 2, 76, 2, 62, -1, -68,
-<a name="l13277"></a>13277 2, 76, 2, 64, 0, 23, 2, 76, 2, 65, -1, -23, 2, 76, 2, 69, -1, -45, 2, 76, 2, 72, -1, -92, 2,
-<a name="l13278"></a>13278 76, 2, 78, -1, -68, 2, 76, 2, 89, -1, -45, 2, 76, 2, 90, -1, -92, 2, 76, 2, 92, -1, -90, 2, 76,
-<a name="l13279"></a>13279 2, 95, -1, -115, 2, 76, 2, 98, -1, -90, 2, 76, 2, 100, -1, -90, 2, 76, 2, 101, -1, -92, 2, 76, 2,
-<a name="l13280"></a>13280 102, -1, -90, 2, 76, 2, 104, -1, 96, 2, 76, 2, 105, -1, -90, 2, 76, 2, 106, -1, -115, 2, 76, 2, 107,
-<a name="l13281"></a>13281 -1, -115, 2, 76, 2, 109, -1, -115, 2, 76, 2, 111, -1, -90, 2, 76, 2, 115, -1, -90, 2, 76, 2, 117, -1,
-<a name="l13282"></a>13282 -90, 2, 76, 2, 118, -1, -90, 2, 76, 2, 120, -1, -90, 2, 76, 2, 121, -1, -115, 2, 77, 0, 15, -2, -16,
-<a name="l13283"></a>13283 2, 77, 0, 17, -2, -16, 2, 77, 0, 29, -1, -45, 2, 77, 0, 30, -1, -45, 2, 77, 0, -87, -1, -90, 2,
-<a name="l13284"></a>13284 77, 0, -86, -1, -92, 2, 77, 0, -78, -1, -23, 2, 77, 2, 58, -1, 119, 2, 77, 2, 62, -1, -92, 2, 77,
-<a name="l13285"></a>13285 2, 65, -1, -45, 2, 77, 2, 69, -1, -68, 2, 77, 2, 72, -1, -68, 2, 77, 2, 78, -1, -68, 2, 77, 2,
-<a name="l13286"></a>13286 87, -1, -45, 2, 77, 2, 89, -1, -45, 2, 77, 2, 91, -1, -45, 2, 77, 2, 92, -1, -115, 2, 77, 2, 93,
-<a name="l13287"></a>13287 -1, -92, 2, 77, 2, 94, -1, 96, 2, 77, 2, 95, -1, 119, 2, 77, 2, 96, -1, -68, 2, 77, 2, 97, -1,
-<a name="l13288"></a>13288 -115, 2, 77, 2, 98, -1, -92, 2, 77, 2, 99, -1, -68, 2, 77, 2, 100, -1, -92, 2, 77, 2, 101, -1, 119,
-<a name="l13289"></a>13289 2, 77, 2, 102, -1, -92, 2, 77, 2, 103, -1, -92, 2, 77, 2, 104, -1, 119, 2, 77, 2, 105, -1, -92, 2,
-<a name="l13290"></a>13290 77, 2, 106, -1, -92, 2, 77, 2, 107, -1, 119, 2, 77, 2, 111, -1, -92, 2, 77, 2, 112, -1, -92, 2, 77,
-<a name="l13291"></a>13291 2, 114, -1, -92, 2, 77, 2, 115, -1, -92, 2, 77, 2, 120, -1, -92, 2, 77, 2, 121, -1, 119, 2, 78, 2,
-<a name="l13292"></a>13292 58, -1, -45, 2, 78, 2, 62, -1, -68, 2, 78, 2, 69, -1, -68, 2, 78, 2, 76, -1, -115, 2, 78, 2, 77,
-<a name="l13293"></a>13293 -1, -92, 2, 78, 2, 81, -1, -45, 2, 78, 2, 89, -1, -70, 2, 78, 2, 101, -1, -68, 2, 79, 2, 65, -1,
-<a name="l13294"></a>13294 -45, 2, 79, 2, 72, -1, -68, 2, 79, 2, 75, -1, -68, 2, 79, 2, 78, -1, -68, 2, 79, 2, 87, -1, -70,
-<a name="l13295"></a>13295 2, 79, 2, 104, -1, -23, 2, 79, 2, 109, -1, -45, 2, 80, 2, 72, -1, -45, 2, 80, 2, 90, 0, 45, 2,
-<a name="l13296"></a>13296 83, 2, 90, 0, 23, 2, 83, 2, 109, 0, 45, 2, 84, 0, -74, -1, 119, 2, 84, 2, 89, -1, -68, 2, 86,
-<a name="l13297"></a>13297 0, -74, -1, 96, 2, 86, 2, 58, -1, -45, 2, 86, 2, 62, -1, -45, 2, 86, 2, 64, -1, -68, 2, 86, 2,
-<a name="l13298"></a>13298 65, -1, -23, 2, 86, 2, 69, -1, -70, 2, 86, 2, 70, -1, -45, 2, 86, 2, 72, -1, -45, 2, 86, 2, 75,
-<a name="l13299"></a>13299 -1, -45, 2, 86, 2, 76, -1, 51, 2, 86, 2, 79, -1, -92, 2, 86, 2, 81, -1, 96, 2, 86, 2, 87, -1,
-<a name="l13300"></a>13300 -23, 2, 86, 2, 89, -1, -92, 2, 87, 2, 62, -1, -68, 2, 87, 2, 64, -1, -25, 2, 87, 2, 65, -1, -23,
-<a name="l13301"></a>13301 2, 87, 2, 69, -1, -68, 2, 87, 2, 79, -1, -70, 2, 87, 2, 89, -1, -45, 2, 87, 2, 94, -1, -68, 2,
-<a name="l13302"></a>13302 87, 2, 96, 0, 23, 2, 87, 2, 101, -1, -68, 2, 87, 2, 102, -1, -23, 2, 87, 2, 121, -1, -23, 2, 88,
-<a name="l13303"></a>13303 2, 58, -1, -68, 2, 88, 2, 62, -1, -90, 2, 88, 2, 64, -1, -45, 2, 88, 2, 69, -1, -92, 2, 88, 2,
-<a name="l13304"></a>13304 72, -1, -23, 2, 88, 2, 75, -1, -23, 2, 88, 2, 76, -1, -115, 2, 88, 2, 79, -1, -92, 2, 88, 2, 81,
-<a name="l13305"></a>13305 -1, -68, 2, 88, 2, 94, -1, -92, 2, 88, 2, 101, -1, -92, 2, 88, 2, 102, -1, -23, 2, 90, 2, 97, -1,
-<a name="l13306"></a>13306 -23, 2, 90, 2, 108, -1, -45, 2, 90, 2, 109, -1, -23, 2, 90, 2, 113, -1, -45, 2, 91, 2, 90, -1, -47,
-<a name="l13307"></a>13307 2, 91, 2, 94, -1, -92, 2, 91, 2, 95, -1, -23, 2, 91, 2, 96, -1, -23, 2, 91, 2, 97, -1, -45, 2,
-<a name="l13308"></a>13308 91, 2, 101, -1, -92, 2, 91, 2, 102, -1, -45, 2, 91, 2, 107, -1, -23, 2, 91, 2, 109, -1, -45, 2, 91,
-<a name="l13309"></a>13309 2, 110, -1, -23, 2, 91, 2, 111, -1, -68, 2, 91, 2, 113, -1, -68, 2, 91, 2, 116, -1, -68, 2, 91, 2,
-<a name="l13310"></a>13310 119, -1, -23, 2, 91, 2, 121, -1, -45, 2, 92, 2, 90, -1, -23, 2, 92, 2, 91, -1, -23, 2, 92, 2, 94,
-<a name="l13311"></a>13311 -1, -23, 2, 92, 2, 95, -1, -23, 2, 92, 2, 96, -1, -23, 2, 92, 2, 97, -1, -23, 2, 92, 2, 101, -1,
-<a name="l13312"></a>13312 -47, 2, 92, 2, 102, -1, -23, 2, 92, 2, 104, -1, -23, 2, 92, 2, 107, -1, -23, 2, 92, 2, 108, -1, -45,
-<a name="l13313"></a>13313 2, 92, 2, 109, -1, -45, 2, 92, 2, 110, -1, -23, 2, 92, 2, 113, -1, -92, 2, 92, 2, 116, -1, -68, 2,
-<a name="l13314"></a>13314 92, 2, 121, -1, -23, 2, 93, 0, 15, -1, 6, 2, 93, 0, 17, -1, 6, 2, 93, 2, 90, -1, -45, 2, 93,
-<a name="l13315"></a>13315 2, 94, -1, -92, 2, 93, 2, 95, -1, -45, 2, 93, 2, 97, -1, -23, 2, 93, 2, 101, -1, -45, 2, 93, 2,
-<a name="l13316"></a>13316 104, -1, -45, 2, 93, 2, 107, -1, -45, 2, 93, 2, 121, -1, -23, 2, 94, 2, 116, -1, -45, 2, 94, 2, 119,
-<a name="l13317"></a>13317 0, 23, 2, 95, 2, 91, -1, -23, 2, 95, 2, 94, -1, -45, 2, 95, 2, 96, -1, -23, 2, 95, 2, 97, -1,
-<a name="l13318"></a>13318 -45, 2, 95, 2, 101, -1, -68, 2, 95, 2, 108, -1, -68, 2, 95, 2, 109, -1, -23, 2, 95, 2, 111, -1, -45,
-<a name="l13319"></a>13319 2, 95, 2, 113, -1, -68, 2, 96, 2, 91, 0, 23, 2, 96, 2, 109, 0, 23, 2, 96, 2, 113, -1, -23, 2,
-<a name="l13320"></a>13320 96, 2, 116, 0, 45, 2, 97, 2, 91, -1, -23, 2, 97, 2, 94, -1, -45, 2, 97, 2, 95, -1, -23, 2, 97,
-<a name="l13321"></a>13321 2, 97, -1, -23, 2, 97, 2, 101, -1, -23, 2, 97, 2, 104, -1, -23, 2, 97, 2, 107, -1, -23, 2, 97, 2,
-<a name="l13322"></a>13322 109, -1, -23, 2, 97, 2, 110, -1, -23, 2, 97, 2, 113, -1, -68, 2, 97, 2, 116, -1, -45, 2, 100, 2, 90,
-<a name="l13323"></a>13323 0, 45, 2, 100, 2, 91, 0, 45, 2, 100, 2, 95, 0, 23, 2, 100, 2, 97, 0, 23, 2, 100, 2, 101, 0,
-<a name="l13324"></a>13324 23, 2, 100, 2, 104, 0, 23, 2, 100, 2, 107, 0, 23, 2, 100, 2, 108, 0, 23, 2, 100, 2, 109, 0, 23,
-<a name="l13325"></a>13325 2, 100, 2, 119, 0, 23, 2, 101, 2, 104, 0, 23, 2, 101, 2, 113, -1, -45, 2, 102, 2, 91, -1, -23, 2,
-<a name="l13326"></a>13326 102, 2, 97, -1, -23, 2, 102, 2, 109, 0, 23, 2, 104, 2, 94, -1, -45, 2, 104, 2, 96, -1, -23, 2, 104,
-<a name="l13327"></a>13327 2, 97, -1, -23, 2, 104, 2, 101, -1, -45, 2, 104, 2, 108, -1, -45, 2, 104, 2, 109, -1, -23, 2, 104, 2,
-<a name="l13328"></a>13328 111, -1, -23, 2, 104, 2, 113, -1, -45, 2, 106, 2, 94, -1, -47, 2, 106, 2, 97, -1, -23, 2, 106, 2, 101,
-<a name="l13329"></a>13329 -1, -70, 2, 106, 2, 108, -1, -45, 2, 106, 2, 109, -1, -23, 2, 106, 2, 111, -1, -23, 2, 106, 2, 113, -1,
-<a name="l13330"></a>13330 -45, 2, 106, 2, 121, -1, -23, 2, 107, 2, 96, 0, 23, 2, 107, 2, 104, 0, 23, 2, 107, 2, 113, -1, -23,
-<a name="l13331"></a>13331 2, 107, 2, 119, 0, 23, 2, 108, 0, 15, -1, 29, 2, 108, 0, 17, -1, 29, 2, 108, 2, 90, -1, -23, 2,
-<a name="l13332"></a>13332 108, 2, 94, -1, -68, 2, 108, 2, 95, -1, -23, 2, 108, 2, 96, 0, 68, 2, 108, 2, 101, -1, -45, 2, 108,
-<a name="l13333"></a>13333 2, 104, -1, -23, 2, 108, 2, 107, -1, -23, 2, 108, 2, 109, 0, 23, 2, 109, 0, 15, -1, 51, 2, 109, 0,
-<a name="l13334"></a>13334 17, -1, 51, 2, 109, 0, -86, 0, 23, 2, 109, 2, 90, -1, -23, 2, 109, 2, 91, 0, 23, 2, 109, 2, 94,
-<a name="l13335"></a>13335 -1, -68, 2, 109, 2, 95, -1, -23, 2, 109, 2, 96, 0, 23, 2, 109, 2, 101, -1, -45, 2, 109, 2, 102, -1,
-<a name="l13336"></a>13336 -23, 2, 109, 2, 104, -1, -25, 2, 109, 2, 106, -1, -23, 2, 109, 2, 107, -1, -23, 2, 109, 2, 110, -1, -23,
-<a name="l13337"></a>13337 2, 109, 2, 119, -1, -23, 2, 109, 2, 121, -1, -23, 2, 110, 2, 91, -1, -23, 2, 110, 2, 94, -1, -45, 2,
-<a name="l13338"></a>13338 110, 2, 101, -1, -45, 2, 110, 2, 108, -1, -45, 2, 110, 2, 109, -1, -23, 2, 110, 2, 113, -1, -45, 2, 110,
-<a name="l13339"></a>13339 2, 121, -1, -23, 2, 111, 2, 90, -1, -23, 2, 111, 2, 91, -1, -23, 2, 111, 2, 95, -1, -23, 2, 111, 2,
-<a name="l13340"></a>13340 97, -1, -23, 2, 111, 2, 104, -1, -23, 2, 111, 2, 107, -1, -23, 2, 111, 2, 108, -1, -23, 2, 111, 2, 110,
-<a name="l13341"></a>13341 -1, -23, 2, 111, 2, 113, -1, -45, 2, 112, 2, 95, -1, -23, 2, 112, 2, 97, -1, -23, 2, 112, 2, 104, -1,
-<a name="l13342"></a>13342 -23, 2, 112, 2, 107, -1, -23, 2, 115, 2, 95, -1, -23, 2, 115, 2, 104, -1, -23, 2, 115, 2, 109, 0, 23,
-<a name="l13343"></a>13343 2, 118, 2, 108, -1, 96, 2, 118, 2, 113, -1, 119, 2, 119, 2, 94, -1, -45, 2, 119, 2, 95, 0, 23, 2,
-<a name="l13344"></a>13344 119, 2, 97, -1, -23, 2, 119, 2, 101, -1, -45, 2, 119, 2, 104, 0, 23, 2, 119, 2, 108, -1, -45, 2, 119,
-<a name="l13345"></a>13345 2, 111, -1, -23, 2, 119, 2, 121, -1, -23, 2, 120, 2, 94, -1, -45, 2, 120, 2, 96, -1, -23, 2, 120, 2,
-<a name="l13346"></a>13346 101, -1, -45, 2, 120, 2, 102, -1, -23, 2, 120, 2, 108, -1, -45, 2, 120, 2, 111, -1, -23, 2, 120, 2, 113,
-<a name="l13347"></a>13347 -1, -45, 2, -122, 0, 15, -1, 51, 2, -122, 0, 17, -1, 51, 2, -120, 0, 15, -1, 6, 2, -120, 0, 17, -1,
-<a name="l13348"></a>13348 6, 2, -120, 0, 29, -1, -45, 2, -120, 0, 30, -1, -45, 2, -120, 0, -87, -1, 96, 2, -120, 0, -86, -1, 96,
-<a name="l13349"></a>13349 2, -120, 0, -78, -1, -45, 2, -116, 1, 46, -1, -29, 2, -116, 1, 49, -1, -29, 2, -116, 1, 51, -1, -29, 2,
-<a name="l13350"></a>13350 -116, 2, 16, -1, -29, 2, -116, 2, 23, -1, -29, 2, -116, 2, 32, -1, -29, 2, -116, 2, 34, -1, -29, 2, -116,
-<a name="l13351"></a>13351 2, 38, -1, -29, 2, -116, 2, 43, -1, -29, 0, 0, 0, 70, 3, 78, 0, 0, 0, 3, 0, 0, 0, 0, 0,
-<a name="l13352"></a>13352 -2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 10, 1, 62, 0, 0, 0, 3, 0, 0, 0, 2, 0, 14,
-<a name="l13353"></a>13353 5, -34, 0, 0, 0, 3, 0, 0, 0, 3, 0, 94, 5, -64, 0, 0, 0, 3, 0, 0, 0, 4, 0, 10, 1,
-<a name="l13354"></a>13354 62, 0, 0, 0, 3, 0, 0, 0, 5, 0, 24, 5, -18, 0, 0, 0, 3, 0, 0, 0, 6, 0, 14, 6, 30,
-<a name="l13355"></a>13355 0, 0, 0, 3, 0, 0, 0, 7, 0, -60, 6, 44, 0, 0, 0, 3, 0, 0, 0, 8, 0, 38, 7, 124, 0,
-<a name="l13356"></a>13356 0, 0, 3, 0, 0, 0, 9, 0, -118, 13, -92, 0, 0, 0, 3, 0, 0, 0, 10, 4, -62, 0, -2, 0, 0,
-<a name="l13357"></a>13357 0, 3, 0, 0, 0, 11, 0, 98, 14, 46, 0, 0, 0, 3, 0, 0, 0, 12, 0, 102, 14, -112, 0, 0, 0,
-<a name="l13358"></a>13358 3, 0, 0, 0, 13, 6, -76, 6, -16, 0, 0, 0, 3, 0, 0, 0, 14, 0, 92, 14, -10, 0, 1, 0, 0,
-<a name="l13359"></a>13359 0, 0, 0, 0, 0, 127, 15, 82, 0, 1, 0, 0, 0, 0, 0, 1, 0, 5, 15, -15, 0, 1, 0, 0, 0,
-<a name="l13360"></a>13360 0, 0, 2, 0, 7, 18, 65, 0, 1, 0, 0, 0, 0, 0, 3, 0, 47, 18, 50, 0, 1, 0, 0, 0, 0,
-<a name="l13361"></a>13361 0, 4, 0, 5, 15, -15, 0, 1, 0, 0, 0, 0, 0, 5, 0, 12, 18, 73, 0, 1, 0, 0, 0, 0, 0,
-<a name="l13362"></a>13362 6, 0, 7, 18, 97, 0, 1, 0, 0, 0, 0, 0, 7, 0, 98, 18, 104, 0, 1, 0, 0, 0, 0, 0, 8,
-<a name="l13363"></a>13363 0, 19, 19, 16, 0, 1, 0, 0, 0, 0, 0, 9, 0, 69, 22, 36, 0, 1, 0, 0, 0, 0, 0, 10, 2,
-<a name="l13364"></a>13364 97, 15, -47, 0, 1, 0, 0, 0, 0, 0, 11, 0, 49, 22, 105, 0, 1, 0, 0, 0, 0, 0, 12, 0, 51,
-<a name="l13365"></a>13365 22, -102, 0, 1, 0, 0, 0, 0, 0, 13, 3, 90, 18, -54, 0, 1, 0, 0, 0, 0, 0, 14, 0, 46, 22,
-<a name="l13366"></a>13366 -51, 0, 3, 0, 1, 4, 3, 0, 2, 0, 12, 22, -5, 0, 3, 0, 1, 4, 5, 0, 2, 0, 16, 23, 11,
-<a name="l13367"></a>13367 0, 3, 0, 1, 4, 6, 0, 2, 0, 12, 23, 27, 0, 3, 0, 1, 4, 7, 0, 2, 0, 16, 23, 39, 0,
-<a name="l13368"></a>13368 3, 0, 1, 4, 8, 0, 2, 0, 16, 23, 55, 0, 3, 0, 1, 4, 9, 0, 0, 0, -2, 0, 0, 0, 3,
-<a name="l13369"></a>13369 0, 1, 4, 9, 0, 1, 0, 10, 1, 62, 0, 3, 0, 1, 4, 9, 0, 2, 0, 14, 5, -34, 0, 3, 0,
-<a name="l13370"></a>13370 1, 4, 9, 0, 3, 0, 94, 5, -64, 0, 3, 0, 1, 4, 9, 0, 4, 0, 10, 1, 62, 0, 3, 0, 1,
-<a name="l13371"></a>13371 4, 9, 0, 5, 0, 24, 5, -18, 0, 3, 0, 1, 4, 9, 0, 6, 0, 14, 6, 30, 0, 3, 0, 1, 4,
-<a name="l13372"></a>13372 9, 0, 7, 0, -60, 6, 44, 0, 3, 0, 1, 4, 9, 0, 8, 0, 38, 7, 124, 0, 3, 0, 1, 4, 9,
-<a name="l13373"></a>13373 0, 9, 0, -118, 13, -92, 0, 3, 0, 1, 4, 9, 0, 10, 4, -62, 0, -2, 0, 3, 0, 1, 4, 9, 0,
-<a name="l13374"></a>13374 11, 0, 98, 14, 46, 0, 3, 0, 1, 4, 9, 0, 12, 0, 102, 14, -112, 0, 3, 0, 1, 4, 9, 0, 13,
-<a name="l13375"></a>13375 6, -76, 6, -16, 0, 3, 0, 1, 4, 9, 0, 14, 0, 92, 14, -10, 0, 3, 0, 1, 4, 10, 0, 2, 0,
-<a name="l13376"></a>13376 12, 22, -5, 0, 3, 0, 1, 4, 11, 0, 2, 0, 16, 23, 71, 0, 3, 0, 1, 4, 12, 0, 2, 0, 12,
-<a name="l13377"></a>13377 22, -5, 0, 3, 0, 1, 4, 14, 0, 2, 0, 12, 23, 87, 0, 3, 0, 1, 4, 16, 0, 2, 0, 14, 23,
-<a name="l13378"></a>13378 103, 0, 3, 0, 1, 4, 19, 0, 2, 0, 18, 23, 117, 0, 3, 0, 1, 4, 20, 0, 2, 0, 12, 22, -5,
-<a name="l13379"></a>13379 0, 3, 0, 1, 4, 21, 0, 2, 0, 16, 22, -5, 0, 3, 0, 1, 4, 22, 0, 2, 0, 12, 22, -5, 0,
-<a name="l13380"></a>13380 3, 0, 1, 4, 25, 0, 2, 0, 14, 23, -121, 0, 3, 0, 1, 4, 27, 0, 2, 0, 16, 23, 87, 0, 3,
-<a name="l13381"></a>13381 0, 1, 4, 29, 0, 2, 0, 12, 22, -5, 0, 3, 0, 1, 4, 31, 0, 2, 0, 12, 22, -5, 0, 3, 0,
-<a name="l13382"></a>13382 1, 4, 36, 0, 2, 0, 14, 23, -107, 0, 3, 0, 1, 4, 42, 0, 2, 0, 14, 23, -93, 0, 3, 0, 1,
-<a name="l13383"></a>13383 4, 45, 0, 2, 0, 14, 23, -79, 0, 3, 0, 1, 8, 10, 0, 2, 0, 12, 22, -5, 0, 3, 0, 1, 8,
-<a name="l13384"></a>13384 22, 0, 2, 0, 12, 22, -5, 0, 3, 0, 1, 12, 10, 0, 2, 0, 12, 22, -5, 0, 3, 0, 1, 12, 12,
-<a name="l13385"></a>13385 0, 2, 0, 12, 22, -5, 0, 84, 0, 121, 0, 112, 0, 101, 0, 102, 0, 97, 0, 99, 0, 101, 0, 32, 0,
-<a name="l13386"></a>13386 -87, 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112,
-<a name="l13387"></a>13387 0, 101, 0, 32, 0, 67, 0, 111, 0, 114, 0, 112, 0, 111, 0, 114, 0, 97, 0, 116, 0, 105, 0, 111, 0,
-<a name="l13388"></a>13388 110, 0, 32, 0, 112, 0, 108, 0, 99, 0, 46, 0, 32, 0, 68, 0, 97, 0, 116, 0, 97, 0, 32, 0, -87,
-<a name="l13389"></a>13389 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0,
-<a name="l13390"></a>13390 101, 0, 32, 0, 67, 0, 111, 0, 114, 0, 112, 0, 111, 0, 114, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110,
-<a name="l13391"></a>13391 0, 32, 0, 112, 0, 108, 0, 99, 0, 47, 0, 84, 0, 121, 0, 112, 0, 101, 0, 32, 0, 83, 0, 111, 0,
-<a name="l13392"></a>13392 108, 0, 117, 0, 116, 0, 105, 0, 111, 0, 110, 0, 115, 0, 32, 0, 73, 0, 110, 0, 99, 0, 46, 0, 32,
-<a name="l13393"></a>13393 0, 49, 0, 57, 0, 57, 0, 48, 0, 45, 0, 49, 0, 57, 0, 57, 0, 50, 0, 46, 0, 32, 0, 65, 0,
-<a name="l13394"></a>13394 108, 0, 108, 0, 32, 0, 82, 0, 105, 0, 103, 0, 104, 0, 116, 0, 115, 0, 32, 0, 82, 0, 101, 0, 115,
-<a name="l13395"></a>13395 0, 101, 0, 114, 0, 118, 0, 101, 0, 100, 0, 67, 0, 111, 0, 110, 0, 116, 0, 101, 0, 109, 0, 112, 0,
-<a name="l13396"></a>13396 111, 0, 114, 0, 97, 0, 114, 0, 121, 0, 32, 0, 115, 0, 97, 0, 110, 0, 115, 0, 32, 0, 115, 0, 101,
-<a name="l13397"></a>13397 0, 114, 0, 105, 0, 102, 0, 32, 0, 100, 0, 101, 0, 115, 0, 105, 0, 103, 0, 110, 0, 44, 0, 32, 0,
-<a name="l13398"></a>13398 65, 0, 114, 0, 105, 0, 97, 0, 108, 0, 32, 0, 99, 0, 111, 0, 110, 0, 116, 0, 97, 0, 105, 0, 110,
-<a name="l13399"></a>13399 0, 115, 0, 32, 0, 109, 0, 111, 0, 114, 0, 101, 0, 32, 0, 104, 0, 117, 0, 109, 0, 97, 0, 110, 0,
-<a name="l13400"></a>13400 105, 0, 115, 0, 116, 0, 32, 0, 99, 0, 104, 0, 97, 0, 114, 0, 97, 0, 99, 0, 116, 0, 101, 0, 114,
-<a name="l13401"></a>13401 0, 105, 0, 115, 0, 116, 0, 105, 0, 99, 0, 115, 0, 32, 0, 116, 0, 104, 0, 97, 0, 110, 0, 32, 0,
-<a name="l13402"></a>13402 109, 0, 97, 0, 110, 0, 121, 0, 32, 0, 111, 0, 102, 0, 32, 0, 105, 0, 116, 0, 115, 0, 32, 0, 112,
-<a name="l13403"></a>13403 0, 114, 0, 101, 0, 100, 0, 101, 0, 99, 0, 101, 0, 115, 0, 115, 0, 111, 0, 114, 0, 115, 0, 32, 0,
-<a name="l13404"></a>13404 97, 0, 110, 0, 100, 0, 32, 0, 97, 0, 115, 0, 32, 0, 115, 0, 117, 0, 99, 0, 104, 0, 32, 0, 105,
-<a name="l13405"></a>13405 0, 115, 0, 32, 0, 109, 0, 111, 0, 114, 0, 101, 0, 32, 0, 105, 0, 110, 0, 32, 0, 116, 0, 117, 0,
-<a name="l13406"></a>13406 110, 0, 101, 0, 32, 0, 119, 0, 105, 0, 116, 0, 104, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 109,
-<a name="l13407"></a>13407 0, 111, 0, 111, 0, 100, 0, 32, 0, 111, 0, 102, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 108, 0,
-<a name="l13408"></a>13408 97, 0, 115, 0, 116, 0, 32, 0, 100, 0, 101, 0, 99, 0, 97, 0, 100, 0, 101, 0, 115, 0, 32, 0, 111,
-<a name="l13409"></a>13409 0, 102, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 116, 0, 119, 0, 101, 0, 110, 0, 116, 0, 105, 0,
-<a name="l13410"></a>13410 101, 0, 116, 0, 104, 0, 32, 0, 99, 0, 101, 0, 110, 0, 116, 0, 117, 0, 114, 0, 121, 0, 46, 0, 32,
-<a name="l13411"></a>13411 0, 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 111, 0, 118, 0, 101, 0, 114, 0, 97, 0, 108, 0, 108, 0,
-<a name="l13412"></a>13412 32, 0, 116, 0, 114, 0, 101, 0, 97, 0, 116, 0, 109, 0, 101, 0, 110, 0, 116, 0, 32, 0, 111, 0, 102,
-<a name="l13413"></a>13413 0, 32, 0, 99, 0, 117, 0, 114, 0, 118, 0, 101, 0, 115, 0, 32, 0, 105, 0, 115, 0, 32, 0, 115, 0,
-<a name="l13414"></a>13414 111, 0, 102, 0, 116, 0, 101, 0, 114, 0, 32, 0, 97, 0, 110, 0, 100, 0, 32, 0, 102, 0, 117, 0, 108,
-<a name="l13415"></a>13415 0, 108, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 97, 0, 110, 0, 32, 0, 105, 0, 110, 0, 32, 0,
-<a name="l13416"></a>13416 109, 0, 111, 0, 115, 0, 116, 0, 32, 0, 105, 0, 110, 0, 100, 0, 117, 0, 115, 0, 116, 0, 114, 0, 105,
-<a name="l13417"></a>13417 0, 97, 0, 108, 0, 32, 0, 115, 0, 116, 0, 121, 0, 108, 0, 101, 0, 32, 0, 115, 0, 97, 0, 110, 0,
-<a name="l13418"></a>13418 115, 0, 32, 0, 115, 0, 101, 0, 114, 0, 105, 0, 102, 0, 32, 0, 102, 0, 97, 0, 99, 0, 101, 0, 115,
-<a name="l13419"></a>13419 0, 46, 0, 32, 0, 32, 0, 84, 0, 101, 0, 114, 0, 109, 0, 105, 0, 110, 0, 97, 0, 108, 0, 32, 0,
-<a name="l13420"></a>13420 115, 0, 116, 0, 114, 0, 111, 0, 107, 0, 101, 0, 115, 0, 32, 0, 97, 0, 114, 0, 101, 0, 32, 0, 99,
-<a name="l13421"></a>13421 0, 117, 0, 116, 0, 32, 0, 111, 0, 110, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 100, 0, 105, 0,
-<a name="l13422"></a>13422 97, 0, 103, 0, 111, 0, 110, 0, 97, 0, 108, 0, 32, 0, 119, 0, 104, 0, 105, 0, 99, 0, 104, 0, 32,
-<a name="l13423"></a>13423 0, 104, 0, 101, 0, 108, 0, 112, 0, 115, 0, 32, 0, 116, 0, 111, 0, 32, 0, 103, 0, 105, 0, 118, 0,
-<a name="l13424"></a>13424 101, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 102, 0, 97, 0, 99, 0, 101, 0, 32, 0, 97, 0, 32,
-<a name="l13425"></a>13425 0, 108, 0, 101, 0, 115, 0, 115, 0, 32, 0, 109, 0, 101, 0, 99, 0, 104, 0, 97, 0, 110, 0, 105, 0,
-<a name="l13426"></a>13426 99, 0, 97, 0, 108, 0, 32, 0, 97, 0, 112, 0, 112, 0, 101, 0, 97, 0, 114, 0, 97, 0, 110, 0, 99,
-<a name="l13427"></a>13427 0, 101, 0, 46, 0, 32, 0, 32, 0, 65, 0, 114, 0, 105, 0, 97, 0, 108, 0, 32, 0, 105, 0, 115, 0,
-<a name="l13428"></a>13428 32, 0, 97, 0, 110, 0, 32, 0, 101, 0, 120, 0, 116, 0, 114, 0, 101, 0, 109, 0, 101, 0, 108, 0, 121,
-<a name="l13429"></a>13429 0, 32, 0, 118, 0, 101, 0, 114, 0, 115, 0, 97, 0, 116, 0, 105, 0, 108, 0, 101, 0, 32, 0, 102, 0,
-<a name="l13430"></a>13430 97, 0, 109, 0, 105, 0, 108, 0, 121, 0, 32, 0, 111, 0, 102, 0, 32, 0, 116, 0, 121, 0, 112, 0, 101,
-<a name="l13431"></a>13431 0, 102, 0, 97, 0, 99, 0, 101, 0, 115, 0, 32, 0, 119, 0, 104, 0, 105, 0, 99, 0, 104, 0, 32, 0,
-<a name="l13432"></a>13432 99, 0, 97, 0, 110, 0, 32, 0, 98, 0, 101, 0, 32, 0, 117, 0, 115, 0, 101, 0, 100, 0, 32, 0, 119,
-<a name="l13433"></a>13433 0, 105, 0, 116, 0, 104, 0, 32, 0, 101, 0, 113, 0, 117, 0, 97, 0, 108, 0, 32, 0, 115, 0, 117, 0,
-<a name="l13434"></a>13434 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 102, 0, 111, 0, 114, 0, 32, 0, 116, 0, 101, 0, 120,
-<a name="l13435"></a>13435 0, 116, 0, 32, 0, 115, 0, 101, 0, 116, 0, 116, 0, 105, 0, 110, 0, 103, 0, 32, 0, 105, 0, 110, 0,
-<a name="l13436"></a>13436 32, 0, 114, 0, 101, 0, 112, 0, 111, 0, 114, 0, 116, 0, 115, 0, 44, 0, 32, 0, 112, 0, 114, 0, 101,
-<a name="l13437"></a>13437 0, 115, 0, 101, 0, 110, 0, 116, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 115, 0, 44, 0, 32, 0,
-<a name="l13438"></a>13438 109, 0, 97, 0, 103, 0, 97, 0, 122, 0, 105, 0, 110, 0, 101, 0, 115, 0, 32, 0, 101, 0, 116, 0, 99,
-<a name="l13439"></a>13439 0, 44, 0, 32, 0, 97, 0, 110, 0, 100, 0, 32, 0, 102, 0, 111, 0, 114, 0, 32, 0, 100, 0, 105, 0,
-<a name="l13440"></a>13440 115, 0, 112, 0, 108, 0, 97, 0, 121, 0, 32, 0, 117, 0, 115, 0, 101, 0, 32, 0, 105, 0, 110, 0, 32,
-<a name="l13441"></a>13441 0, 110, 0, 101, 0, 119, 0, 115, 0, 112, 0, 97, 0, 112, 0, 101, 0, 114, 0, 115, 0, 44, 0, 32, 0,
-<a name="l13442"></a>13442 97, 0, 100, 0, 118, 0, 101, 0, 114, 0, 116, 0, 105, 0, 115, 0, 105, 0, 110, 0, 103, 0, 32, 0, 97,
-<a name="l13443"></a>13443 0, 110, 0, 100, 0, 32, 0, 112, 0, 114, 0, 111, 0, 109, 0, 111, 0, 116, 0, 105, 0, 111, 0, 110, 0,
-<a name="l13444"></a>13444 115, 0, 46, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 58, 0, 65, 0, 114,
-<a name="l13445"></a>13445 0, 105, 0, 97, 0, 108, 0, 32, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, 0, 58, 0,
-<a name="l13446"></a>13446 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46, 0, 48, 0, 48, 0, 32,
-<a name="l13447"></a>13447 0, 40, 0, 77, 0, 105, 0, 99, 0, 114, 0, 111, 0, 115, 0, 111, 0, 102, 0, 116, 0, 41, 0, 65, 0,
-<a name="l13448"></a>13448 114, 0, 105, 0, 97, 0, 108, 0, 77, 0, 84, 0, 65, 0, 114, 0, 105, 0, 97, 0, 108, 0, -82, 0, 32,
-<a name="l13449"></a>13449 0, 84, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, 0, 97, 0, 114, 0, 107, 0, 32, 0, 111, 0, 102, 0,
-<a name="l13450"></a>13450 32, 0, 84, 0, 104, 0, 101, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101,
-<a name="l13451"></a>13451 0, 32, 0, 67, 0, 111, 0, 114, 0, 112, 0, 111, 0, 114, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0,
-<a name="l13452"></a>13452 32, 0, 112, 0, 108, 0, 99, 0, 32, 0, 114, 0, 101, 0, 103, 0, 105, 0, 115, 0, 116, 0, 101, 0, 114,
-<a name="l13453"></a>13453 0, 101, 0, 100, 0, 32, 0, 105, 0, 110, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 85, 0, 83, 0,
-<a name="l13454"></a>13454 32, 0, 80, 0, 97, 0, 116, 0, 32, 0, 38, 0, 32, 0, 84, 0, 77, 0, 32, 0, 79, 0, 102, 0, 102,
-<a name="l13455"></a>13455 0, 46, 0, 32, 0, 97, 0, 110, 0, 100, 0, 32, 0, 101, 0, 108, 0, 115, 0, 101, 0, 119, 0, 104, 0,
-<a name="l13456"></a>13456 101, 0, 114, 0, 101, 0, 46, 0, 78, 0, 79, 0, 84, 0, 73, 0, 70, 0, 73, 0, 67, 0, 65, 0, 84,
-<a name="l13457"></a>13457 0, 73, 0, 79, 0, 78, 0, 32, 0, 79, 0, 70, 0, 32, 0, 76, 0, 73, 0, 67, 0, 69, 0, 78, 0,
-<a name="l13458"></a>13458 83, 0, 69, 0, 32, 0, 65, 0, 71, 0, 82, 0, 69, 0, 69, 0, 77, 0, 69, 0, 78, 0, 84, 0, 13,
-<a name="l13459"></a>13459 0, 10, 0, 13, 0, 10, 0, 84, 0, 104, 0, 105, 0, 115, 0, 32, 0, 116, 0, 121, 0, 112, 0, 101, 0,
-<a name="l13460"></a>13460 102, 0, 97, 0, 99, 0, 101, 0, 32, 0, 105, 0, 115, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 112,
-<a name="l13461"></a>13461 0, 114, 0, 111, 0, 112, 0, 101, 0, 114, 0, 116, 0, 121, 0, 32, 0, 111, 0, 102, 0, 32, 0, 77, 0,
-<a name="l13462"></a>13462 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 32, 0, 84, 0, 121, 0, 112, 0, 111, 0, 103,
-<a name="l13463"></a>13463 0, 114, 0, 97, 0, 112, 0, 104, 0, 121, 0, 32, 0, 97, 0, 110, 0, 100, 0, 32, 0, 105, 0, 116, 0,
-<a name="l13464"></a>13464 115, 0, 32, 0, 117, 0, 115, 0, 101, 0, 32, 0, 98, 0, 121, 0, 32, 0, 121, 0, 111, 0, 117, 0, 32,
-<a name="l13465"></a>13465 0, 105, 0, 115, 0, 32, 0, 99, 0, 111, 0, 118, 0, 101, 0, 114, 0, 101, 0, 100, 0, 32, 0, 117, 0,
-<a name="l13466"></a>13466 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 116, 0, 101, 0, 114, 0, 109,
-<a name="l13467"></a>13467 0, 115, 0, 32, 0, 111, 0, 102, 0, 32, 0, 97, 0, 32, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0,
-<a name="l13468"></a>13468 115, 0, 101, 0, 32, 0, 97, 0, 103, 0, 114, 0, 101, 0, 101, 0, 109, 0, 101, 0, 110, 0, 116, 0, 46,
-<a name="l13469"></a>13469 0, 32, 0, 89, 0, 111, 0, 117, 0, 32, 0, 104, 0, 97, 0, 118, 0, 101, 0, 32, 0, 111, 0, 98, 0,
-<a name="l13470"></a>13470 116, 0, 97, 0, 105, 0, 110, 0, 101, 0, 100, 0, 32, 0, 116, 0, 104, 0, 105, 0, 115, 0, 32, 0, 116,
-<a name="l13471"></a>13471 0, 121, 0, 112, 0, 101, 0, 102, 0, 97, 0, 99, 0, 101, 0, 32, 0, 115, 0, 111, 0, 102, 0, 116, 0,
-<a name="l13472"></a>13472 119, 0, 97, 0, 114, 0, 101, 0, 32, 0, 101, 0, 105, 0, 116, 0, 104, 0, 101, 0, 114, 0, 32, 0, 100,
-<a name="l13473"></a>13473 0, 105, 0, 114, 0, 101, 0, 99, 0, 116, 0, 108, 0, 121, 0, 32, 0, 102, 0, 114, 0, 111, 0, 109, 0,
-<a name="l13474"></a>13474 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 32, 0, 111, 0, 114, 0, 32,
-<a name="l13475"></a>13475 0, 116, 0, 111, 0, 103, 0, 101, 0, 116, 0, 104, 0, 101, 0, 114, 0, 32, 0, 119, 0, 105, 0, 116, 0,
-<a name="l13476"></a>13476 104, 0, 32, 0, 115, 0, 111, 0, 102, 0, 116, 0, 119, 0, 97, 0, 114, 0, 101, 0, 32, 0, 100, 0, 105,
-<a name="l13477"></a>13477 0, 115, 0, 116, 0, 114, 0, 105, 0, 98, 0, 117, 0, 116, 0, 101, 0, 100, 0, 32, 0, 98, 0, 121, 0,
-<a name="l13478"></a>13478 32, 0, 111, 0, 110, 0, 101, 0, 32, 0, 111, 0, 102, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116,
-<a name="l13479"></a>13479 0, 121, 0, 112, 0, 101, 0, 39, 0, 115, 0, 32, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0,
-<a name="l13480"></a>13480 101, 0, 101, 0, 115, 0, 46, 0, 13, 0, 10, 0, 13, 0, 10, 0, 84, 0, 104, 0, 105, 0, 115, 0, 32,
-<a name="l13481"></a>13481 0, 115, 0, 111, 0, 102, 0, 116, 0, 119, 0, 97, 0, 114, 0, 101, 0, 32, 0, 105, 0, 115, 0, 32, 0,
-<a name="l13482"></a>13482 97, 0, 32, 0, 118, 0, 97, 0, 108, 0, 117, 0, 97, 0, 98, 0, 108, 0, 101, 0, 32, 0, 97, 0, 115,
-<a name="l13483"></a>13483 0, 115, 0, 101, 0, 116, 0, 32, 0, 111, 0, 102, 0, 32, 0, 77, 0, 111, 0, 110, 0, 111, 0, 116, 0,
-<a name="l13484"></a>13484 121, 0, 112, 0, 101, 0, 46, 0, 32, 0, 85, 0, 110, 0, 108, 0, 101, 0, 115, 0, 115, 0, 32, 0, 121,
-<a name="l13485"></a>13485 0, 111, 0, 117, 0, 32, 0, 104, 0, 97, 0, 118, 0, 101, 0, 32, 0, 101, 0, 110, 0, 116, 0, 101, 0,
-<a name="l13486"></a>13486 114, 0, 101, 0, 100, 0, 32, 0, 105, 0, 110, 0, 116, 0, 111, 0, 32, 0, 97, 0, 32, 0, 115, 0, 112,
-<a name="l13487"></a>13487 0, 101, 0, 99, 0, 105, 0, 102, 0, 105, 0, 99, 0, 32, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0,
-<a name="l13488"></a>13488 115, 0, 101, 0, 32, 0, 97, 0, 103, 0, 114, 0, 101, 0, 101, 0, 109, 0, 101, 0, 110, 0, 116, 0, 32,
-<a name="l13489"></a>13489 0, 103, 0, 114, 0, 97, 0, 110, 0, 116, 0, 105, 0, 110, 0, 103, 0, 32, 0, 121, 0, 111, 0, 117, 0,
-<a name="l13490"></a>13490 32, 0, 97, 0, 100, 0, 100, 0, 105, 0, 116, 0, 105, 0, 111, 0, 110, 0, 97, 0, 108, 0, 32, 0, 114,
-<a name="l13491"></a>13491 0, 105, 0, 103, 0, 104, 0, 116, 0, 115, 0, 44, 0, 32, 0, 121, 0, 111, 0, 117, 0, 114, 0, 32, 0,
-<a name="l13492"></a>13492 117, 0, 115, 0, 101, 0, 32, 0, 111, 0, 102, 0, 32, 0, 116, 0, 104, 0, 105, 0, 115, 0, 32, 0, 115,
-<a name="l13493"></a>13493 0, 111, 0, 102, 0, 116, 0, 119, 0, 97, 0, 114, 0, 101, 0, 32, 0, 105, 0, 115, 0, 32, 0, 108, 0,
-<a name="l13494"></a>13494 105, 0, 109, 0, 105, 0, 116, 0, 101, 0, 100, 0, 32, 0, 116, 0, 111, 0, 32, 0, 121, 0, 111, 0, 117,
-<a name="l13495"></a>13495 0, 114, 0, 32, 0, 119, 0, 111, 0, 114, 0, 107, 0, 115, 0, 116, 0, 97, 0, 116, 0, 105, 0, 111, 0,
-<a name="l13496"></a>13496 110, 0, 32, 0, 102, 0, 111, 0, 114, 0, 32, 0, 121, 0, 111, 0, 117, 0, 114, 0, 32, 0, 111, 0, 119,
-<a name="l13497"></a>13497 0, 110, 0, 32, 0, 112, 0, 117, 0, 98, 0, 108, 0, 105, 0, 115, 0, 104, 0, 105, 0, 110, 0, 103, 0,
-<a name="l13498"></a>13498 32, 0, 117, 0, 115, 0, 101, 0, 46, 0, 32, 0, 89, 0, 111, 0, 117, 0, 32, 0, 109, 0, 97, 0, 121,
-<a name="l13499"></a>13499 0, 32, 0, 110, 0, 111, 0, 116, 0, 32, 0, 99, 0, 111, 0, 112, 0, 121, 0, 32, 0, 111, 0, 114, 0,
-<a name="l13500"></a>13500 32, 0, 100, 0, 105, 0, 115, 0, 116, 0, 114, 0, 105, 0, 98, 0, 117, 0, 116, 0, 101, 0, 32, 0, 116,
-<a name="l13501"></a>13501 0, 104, 0, 105, 0, 115, 0, 32, 0, 115, 0, 111, 0, 102, 0, 116, 0, 119, 0, 97, 0, 114, 0, 101, 0,
-<a name="l13502"></a>13502 46, 0, 13, 0, 10, 0, 13, 0, 10, 0, 73, 0, 102, 0, 32, 0, 121, 0, 111, 0, 117, 0, 32, 0, 104,
-<a name="l13503"></a>13503 0, 97, 0, 118, 0, 101, 0, 32, 0, 97, 0, 110, 0, 121, 0, 32, 0, 113, 0, 117, 0, 101, 0, 115, 0,
-<a name="l13504"></a>13504 116, 0, 105, 0, 111, 0, 110, 0, 32, 0, 99, 0, 111, 0, 110, 0, 99, 0, 101, 0, 114, 0, 110, 0, 105,
-<a name="l13505"></a>13505 0, 110, 0, 103, 0, 32, 0, 121, 0, 111, 0, 117, 0, 114, 0, 32, 0, 114, 0, 105, 0, 103, 0, 104, 0,
-<a name="l13506"></a>13506 116, 0, 115, 0, 32, 0, 121, 0, 111, 0, 117, 0, 32, 0, 115, 0, 104, 0, 111, 0, 117, 0, 108, 0, 100,
-<a name="l13507"></a>13507 0, 32, 0, 114, 0, 101, 0, 118, 0, 105, 0, 101, 0, 119, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0,
-<a name="l13508"></a>13508 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 32, 0, 97, 0, 103, 0, 114, 0, 101, 0, 101,
-<a name="l13509"></a>13509 0, 109, 0, 101, 0, 110, 0, 116, 0, 32, 0, 121, 0, 111, 0, 117, 0, 32, 0, 114, 0, 101, 0, 99, 0,
-<a name="l13510"></a>13510 101, 0, 105, 0, 118, 0, 101, 0, 100, 0, 32, 0, 119, 0, 105, 0, 116, 0, 104, 0, 32, 0, 116, 0, 104,
-<a name="l13511"></a>13511 0, 101, 0, 32, 0, 115, 0, 111, 0, 102, 0, 116, 0, 119, 0, 97, 0, 114, 0, 101, 0, 32, 0, 111, 0,
-<a name="l13512"></a>13512 114, 0, 32, 0, 99, 0, 111, 0, 110, 0, 116, 0, 97, 0, 99, 0, 116, 0, 32, 0, 77, 0, 111, 0, 110,
-<a name="l13513"></a>13513 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 32, 0, 102, 0, 111, 0, 114, 0, 32, 0, 97, 0, 32, 0,
-<a name="l13514"></a>13514 99, 0, 111, 0, 112, 0, 121, 0, 32, 0, 111, 0, 102, 0, 32, 0, 116, 0, 104, 0, 101, 0, 32, 0, 108,
-<a name="l13515"></a>13515 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 32, 0, 97, 0, 103, 0, 114, 0, 101, 0, 101, 0,
-<a name="l13516"></a>13516 109, 0, 101, 0, 110, 0, 116, 0, 46, 0, 13, 0, 10, 0, 13, 0, 10, 0, 77, 0, 111, 0, 110, 0, 111,
-<a name="l13517"></a>13517 0, 116, 0, 121, 0, 112, 0, 101, 0, 32, 0, 99, 0, 97, 0, 110, 0, 32, 0, 98, 0, 101, 0, 32, 0,
-<a name="l13518"></a>13518 99, 0, 111, 0, 110, 0, 116, 0, 97, 0, 99, 0, 116, 0, 101, 0, 100, 0, 32, 0, 97, 0, 116, 0, 58,
-<a name="l13519"></a>13519 0, 13, 0, 10, 0, 13, 0, 10, 0, 85, 0, 83, 0, 65, 0, 32, 0, 45, 0, 32, 0, 40, 0, 56, 0,
-<a name="l13520"></a>13520 52, 0, 55, 0, 41, 0, 32, 0, 55, 0, 49, 0, 56, 0, 45, 0, 48, 0, 52, 0, 48, 0, 48, 0, 9,
-<a name="l13521"></a>13521 0, 9, 0, 85, 0, 75, 0, 32, 0, 45, 0, 32, 0, 48, 0, 49, 0, 49, 0, 52, 0, 52, 0, 32, 0,
-<a name="l13522"></a>13522 48, 0, 49, 0, 55, 0, 51, 0, 55, 0, 32, 0, 55, 0, 54, 0, 53, 0, 57, 0, 53, 0, 57, 0, 13,
-<a name="l13523"></a>13523 0, 10, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0,
-<a name="l13524"></a>13524 109, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 46, 0, 99, 0, 111, 0, 109, 0, 77,
-<a name="l13525"></a>13525 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 32, 0, 84, 0, 121, 0, 112, 0, 101, 0,
-<a name="l13526"></a>13526 32, 0, 68, 0, 114, 0, 97, 0, 119, 0, 105, 0, 110, 0, 103, 0, 32, 0, 79, 0, 102, 0, 102, 0, 105,
-<a name="l13527"></a>13527 0, 99, 0, 101, 0, 32, 0, 45, 0, 32, 0, 82, 0, 111, 0, 98, 0, 105, 0, 110, 0, 32, 0, 78, 0,
-<a name="l13528"></a>13528 105, 0, 99, 0, 104, 0, 111, 0, 108, 0, 97, 0, 115, 0, 44, 0, 32, 0, 80, 0, 97, 0, 116, 0, 114,
-<a name="l13529"></a>13529 0, 105, 0, 99, 0, 105, 0, 97, 0, 32, 0, 83, 0, 97, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0,
-<a name="l13530"></a>13530 115, 0, 32, 0, 49, 0, 57, 0, 56, 0, 50, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47,
-<a name="l13531"></a>13531 0, 119, 0, 119, 0, 119, 0, 46, 0, 109, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0,
-<a name="l13532"></a>13532 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 104, 0, 116, 0, 109, 0, 108, 0, 47, 0, 109, 0, 116, 0, 110,
-<a name="l13533"></a>13533 0, 97, 0, 109, 0, 101, 0, 47, 0, 109, 0, 115, 0, 95, 0, 97, 0, 114, 0, 105, 0, 97, 0, 108, 0,
-<a name="l13534"></a>13534 46, 0, 104, 0, 116, 0, 109, 0, 108, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 119,
-<a name="l13535"></a>13535 0, 119, 0, 119, 0, 46, 0, 109, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0, 46, 0,
-<a name="l13536"></a>13536 99, 0, 111, 0, 109, 0, 47, 0, 104, 0, 116, 0, 109, 0, 108, 0, 47, 0, 109, 0, 116, 0, 110, 0, 97,
-<a name="l13537"></a>13537 0, 109, 0, 101, 0, 47, 0, 109, 0, 115, 0, 95, 0, 119, 0, 101, 0, 108, 0, 99, 0, 111, 0, 109, 0,
-<a name="l13538"></a>13538 101, 0, 46, 0, 104, 0, 116, 0, 109, 0, 108, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47,
-<a name="l13539"></a>13539 0, 119, 0, 119, 0, 119, 0, 46, 0, 109, 0, 111, 0, 110, 0, 111, 0, 116, 0, 121, 0, 112, 0, 101, 0,
-<a name="l13540"></a>13540 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 104, 0, 116, 0, 109, 0, 108, 0, 47, 0, 116, 0, 121, 0, 112,
-<a name="l13541"></a>13541 0, 101, 0, 47, 0, 108, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, 0, 46, 0, 104, 0, 116, 0,
-<a name="l13542"></a>13542 109, 0, 108, 84, 121, 112, 101, 102, 97, 99, 101, 32, -87, 32, 84, 104, 101, 32, 77, 111, 110, 111, 116, 121, 112,
-<a name="l13543"></a>13543 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 32, 112, 108, 99, 46, 32, 68, 97, 116, 97, 32, -87,
-<a name="l13544"></a>13544 32, 84, 104, 101, 32, 77, 111, 110, 111, 116, 121, 112, 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110,
-<a name="l13545"></a>13545 32, 112, 108, 99, 47, 84, 121, 112, 101, 32, 83, 111, 108, 117, 116, 105, 111, 110, 115, 32, 73, 110, 99, 46, 32,
-<a name="l13546"></a>13546 49, 57, 57, 48, 45, 49, 57, 57, 50, 46, 32, 65, 108, 108, 32, 82, 105, 103, 104, 116, 115, 32, 82, 101, 115,
-<a name="l13547"></a>13547 101, 114, 118, 101, 100, 67, 111, 110, 116, 101, 109, 112, 111, 114, 97, 114, 121, 32, 115, 97, 110, 115, 32, 115, 101,
-<a name="l13548"></a>13548 114, 105, 102, 32, 100, 101, 115, 105, 103, 110, 44, 32, 65, 114, 105, 97, 108, 32, 99, 111, 110, 116, 97, 105, 110,
-<a name="l13549"></a>13549 115, 32, 109, 111, 114, 101, 32, 104, 117, 109, 97, 110, 105, 115, 116, 32, 99, 104, 97, 114, 97, 99, 116, 101, 114,
-<a name="l13550"></a>13550 105, 115, 116, 105, 99, 115, 32, 116, 104, 97, 110, 32, 109, 97, 110, 121, 32, 111, 102, 32, 105, 116, 115, 32, 112,
-<a name="l13551"></a>13551 114, 101, 100, 101, 99, 101, 115, 115, 111, 114, 115, 32, 97, 110, 100, 32, 97, 115, 32, 115, 117, 99, 104, 32, 105,
-<a name="l13552"></a>13552 115, 32, 109, 111, 114, 101, 32, 105, 110, 32, 116, 117, 110, 101, 32, 119, 105, 116, 104, 32, 116, 104, 101, 32, 109,
-<a name="l13553"></a>13553 111, 111, 100, 32, 111, 102, 32, 116, 104, 101, 32, 108, 97, 115, 116, 32, 100, 101, 99, 97, 100, 101, 115, 32, 111,
-<a name="l13554"></a>13554 102, 32, 116, 104, 101, 32, 116, 119, 101, 110, 116, 105, 101, 116, 104, 32, 99, 101, 110, 116, 117, 114, 121, 46, 32,
-<a name="l13555"></a>13555 32, 84, 104, 101, 32, 111, 118, 101, 114, 97, 108, 108, 32, 116, 114, 101, 97, 116, 109, 101, 110, 116, 32, 111, 102,
-<a name="l13556"></a>13556 32, 99, 117, 114, 118, 101, 115, 32, 105, 115, 32, 115, 111, 102, 116, 101, 114, 32, 97, 110, 100, 32, 102, 117, 108,
-<a name="l13557"></a>13557 108, 101, 114, 32, 116, 104, 97, 110, 32, 105, 110, 32, 109, 111, 115, 116, 32, 105, 110, 100, 117, 115, 116, 114, 105,
-<a name="l13558"></a>13558 97, 108, 32, 115, 116, 121, 108, 101, 32, 115, 97, 110, 115, 32, 115, 101, 114, 105, 102, 32, 102, 97, 99, 101, 115,
-<a name="l13559"></a>13559 46, 32, 32, 84, 101, 114, 109, 105, 110, 97, 108, 32, 115, 116, 114, 111, 107, 101, 115, 32, 97, 114, 101, 32, 99,
-<a name="l13560"></a>13560 117, 116, 32, 111, 110, 32, 116, 104, 101, 32, 100, 105, 97, 103, 111, 110, 97, 108, 32, 119, 104, 105, 99, 104, 32,
-<a name="l13561"></a>13561 104, 101, 108, 112, 115, 32, 116, 111, 32, 103, 105, 118, 101, 32, 116, 104, 101, 32, 102, 97, 99, 101, 32, 97, 32,
-<a name="l13562"></a>13562 108, 101, 115, 115, 32, 109, 101, 99, 104, 97, 110, 105, 99, 97, 108, 32, 97, 112, 112, 101, 97, 114, 97, 110, 99,
-<a name="l13563"></a>13563 101, 46, 32, 32, 65, 114, 105, 97, 108, 32, 105, 115, 32, 97, 110, 32, 101, 120, 116, 114, 101, 109, 101, 108, 121,
-<a name="l13564"></a>13564 32, 118, 101, 114, 115, 97, 116, 105, 108, 101, 32, 102, 97, 109, 105, 108, 121, 32, 111, 102, 32, 116, 121, 112, 101,
-<a name="l13565"></a>13565 102, 97, 99, 101, 115, 32, 119, 104, 105, 99, 104, 32, 99, 97, 110, 32, 98, 101, 32, 117, 115, 101, 100, 32, 119,
-<a name="l13566"></a>13566 105, 116, 104, 32, 101, 113, 117, 97, 108, 32, 115, 117, 99, 99, 101, 115, 115, 32, 102, 111, 114, 32, 116, 101, 120,
-<a name="l13567"></a>13567 116, 32, 115, 101, 116, 116, 105, 110, 103, 32, 105, 110, 32, 114, 101, 112, 111, 114, 116, 115, 44, 32, 112, 114, 101,
-<a name="l13568"></a>13568 115, 101, 110, 116, 97, 116, 105, 111, 110, 115, 44, 32, 109, 97, 103, 97, 122, 105, 110, 101, 115, 32, 101, 116, 99,
-<a name="l13569"></a>13569 44, 32, 97, 110, 100, 32, 102, 111, 114, 32, 100, 105, 115, 112, 108, 97, 121, 32, 117, 115, 101, 32, 105, 110, 32,
-<a name="l13570"></a>13570 110, 101, 119, 115, 112, 97, 112, 101, 114, 115, 44, 32, 97, 100, 118, 101, 114, 116, 105, 115, 105, 110, 103, 32, 97,
-<a name="l13571"></a>13571 110, 100, 32, 112, 114, 111, 109, 111, 116, 105, 111, 110, 115, 46, 77, 111, 110, 111, 116, 121, 112, 101, 58, 65, 114,
-<a name="l13572"></a>13572 105, 97, 108, 32, 82, 101, 103, 117, 108, 97, 114, 58, 86, 101, 114, 115, 105, 111, 110, 32, 51, 46, 48, 48, 32,
-<a name="l13573"></a>13573 40, 77, 105, 99, 114, 111, 115, 111, 102, 116, 41, 65, 114, 105, 97, 108, 77, 84, 65, 114, 105, 97, 108, -88, 32,
-<a name="l13574"></a>13574 84, 114, 97, 100, 101, 109, 97, 114, 107, 32, 111, 102, 32, 84, 104, 101, 32, 77, 111, 110, 111, 116, 121, 112, 101,
-<a name="l13575"></a>13575 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 32, 112, 108, 99, 32, 114, 101, 103, 105, 115, 116, 101, 114,
-<a name="l13576"></a>13576 101, 100, 32, 105, 110, 32, 116, 104, 101, 32, 85, 83, 32, 80, 97, 116, 32, 38, 32, 84, 77, 32, 79, 102, 102,
-<a name="l13577"></a>13577 46, 32, 97, 110, 100, 32, 101, 108, 115, 101, 119, 104, 101, 114, 101, 46, 78, 79, 84, 73, 70, 73, 67, 65, 84,
-<a name="l13578"></a>13578 73, 79, 78, 32, 79, 70, 32, 76, 73, 67, 69, 78, 83, 69, 32, 65, 71, 82, 69, 69, 77, 69, 78, 84, 13,
-<a name="l13579"></a>13579 10, 13, 10, 84, 104, 105, 115, 32, 116, 121, 112, 101, 102, 97, 99, 101, 32, 105, 115, 32, 116, 104, 101, 32, 112,
-<a name="l13580"></a>13580 114, 111, 112, 101, 114, 116, 121, 32, 111, 102, 32, 77, 111, 110, 111, 116, 121, 112, 101, 32, 84, 121, 112, 111, 103,
-<a name="l13581"></a>13581 114, 97, 112, 104, 121, 32, 97, 110, 100, 32, 105, 116, 115, 32, 117, 115, 101, 32, 98, 121, 32, 121, 111, 117, 32,
-<a name="l13582"></a>13582 105, 115, 32, 99, 111, 118, 101, 114, 101, 100, 32, 117, 110, 100, 101, 114, 32, 116, 104, 101, 32, 116, 101, 114, 109,
-<a name="l13583"></a>13583 115, 32, 111, 102, 32, 97, 32, 108, 105, 99, 101, 110, 115, 101, 32, 97, 103, 114, 101, 101, 109, 101, 110, 116, 46,
-<a name="l13584"></a>13584 32, 89, 111, 117, 32, 104, 97, 118, 101, 32, 111, 98, 116, 97, 105, 110, 101, 100, 32, 116, 104, 105, 115, 32, 116,
-<a name="l13585"></a>13585 121, 112, 101, 102, 97, 99, 101, 32, 115, 111, 102, 116, 119, 97, 114, 101, 32, 101, 105, 116, 104, 101, 114, 32, 100,
-<a name="l13586"></a>13586 105, 114, 101, 99, 116, 108, 121, 32, 102, 114, 111, 109, 32, 77, 111, 110, 111, 116, 121, 112, 101, 32, 111, 114, 32,
-<a name="l13587"></a>13587 116, 111, 103, 101, 116, 104, 101, 114, 32, 119, 105, 116, 104, 32, 115, 111, 102, 116, 119, 97, 114, 101, 32, 100, 105,
-<a name="l13588"></a>13588 115, 116, 114, 105, 98, 117, 116, 101, 100, 32, 98, 121, 32, 111, 110, 101, 32, 111, 102, 32, 77, 111, 110, 111, 116,
-<a name="l13589"></a>13589 121, 112, 101, 39, 115, 32, 108, 105, 99, 101, 110, 115, 101, 101, 115, 46, 13, 10, 13, 10, 84, 104, 105, 115, 32,
-<a name="l13590"></a>13590 115, 111, 102, 116, 119, 97, 114, 101, 32, 105, 115, 32, 97, 32, 118, 97, 108, 117, 97, 98, 108, 101, 32, 97, 115,
-<a name="l13591"></a>13591 115, 101, 116, 32, 111, 102, 32, 77, 111, 110, 111, 116, 121, 112, 101, 46, 32, 85, 110, 108, 101, 115, 115, 32, 121,
-<a name="l13592"></a>13592 111, 117, 32, 104, 97, 118, 101, 32, 101, 110, 116, 101, 114, 101, 100, 32, 105, 110, 116, 111, 32, 97, 32, 115, 112,
-<a name="l13593"></a>13593 101, 99, 105, 102, 105, 99, 32, 108, 105, 99, 101, 110, 115, 101, 32, 97, 103, 114, 101, 101, 109, 101, 110, 116, 32,
-<a name="l13594"></a>13594 103, 114, 97, 110, 116, 105, 110, 103, 32, 121, 111, 117, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 32, 114,
-<a name="l13595"></a>13595 105, 103, 104, 116, 115, 44, 32, 121, 111, 117, 114, 32, 117, 115, 101, 32, 111, 102, 32, 116, 104, 105, 115, 32, 115,
-<a name="l13596"></a>13596 111, 102, 116, 119, 97, 114, 101, 32, 105, 115, 32, 108, 105, 109, 105, 116, 101, 100, 32, 116, 111, 32, 121, 111, 117,
-<a name="l13597"></a>13597 114, 32, 119, 111, 114, 107, 115, 116, 97, 116, 105, 111, 110, 32, 102, 111, 114, 32, 121, 111, 117, 114, 32, 111, 119,
-<a name="l13598"></a>13598 110, 32, 112, 117, 98, 108, 105, 115, 104, 105, 110, 103, 32, 117, 115, 101, 46, 32, 89, 111, 117, 32, 109, 97, 121,
-<a name="l13599"></a>13599 32, 110, 111, 116, 32, 99, 111, 112, 121, 32, 111, 114, 32, 100, 105, 115, 116, 114, 105, 98, 117, 116, 101, 32, 116,
-<a name="l13600"></a>13600 104, 105, 115, 32, 115, 111, 102, 116, 119, 97, 114, 101, 46, 13, 10, 13, 10, 73, 102, 32, 121, 111, 117, 32, 104,
-<a name="l13601"></a>13601 97, 118, 101, 32, 97, 110, 121, 32, 113, 117, 101, 115, 116, 105, 111, 110, 32, 99, 111, 110, 99, 101, 114, 110, 105,
-<a name="l13602"></a>13602 110, 103, 32, 121, 111, 117, 114, 32, 114, 105, 103, 104, 116, 115, 32, 121, 111, 117, 32, 115, 104, 111, 117, 108, 100,
-<a name="l13603"></a>13603 32, 114, 101, 118, 105, 101, 119, 32, 116, 104, 101, 32, 108, 105, 99, 101, 110, 115, 101, 32, 97, 103, 114, 101, 101,
-<a name="l13604"></a>13604 109, 101, 110, 116, 32, 121, 111, 117, 32, 114, 101, 99, 101, 105, 118, 101, 100, 32, 119, 105, 116, 104, 32, 116, 104,
-<a name="l13605"></a>13605 101, 32, 115, 111, 102, 116, 119, 97, 114, 101, 32, 111, 114, 32, 99, 111, 110, 116, 97, 99, 116, 32, 77, 111, 110,
-<a name="l13606"></a>13606 111, 116, 121, 112, 101, 32, 102, 111, 114, 32, 97, 32, 99, 111, 112, 121, 32, 111, 102, 32, 116, 104, 101, 32, 108,
-<a name="l13607"></a>13607 105, 99, 101, 110, 115, 101, 32, 97, 103, 114, 101, 101, 109, 101, 110, 116, 46, 13, 10, 13, 10, 77, 111, 110, 111,
-<a name="l13608"></a>13608 116, 121, 112, 101, 32, 99, 97, 110, 32, 98, 101, 32, 99, 111, 110, 116, 97, 99, 116, 101, 100, 32, 97, 116, 58,
-<a name="l13609"></a>13609 13, 10, 13, 10, 85, 83, 65, 32, 45, 32, 40, 56, 52, 55, 41, 32, 55, 49, 56, 45, 48, 52, 48, 48, 9,
-<a name="l13610"></a>13610 9, 85, 75, 32, 45, 32, 48, 49, 49, 52, 52, 32, 48, 49, 55, 51, 55, 32, 55, 54, 53, 57, 53, 57, 13,
-<a name="l13611"></a>13611 10, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 109, 111, 110, 111, 116, 121, 112, 101, 46, 99, 111, 109, 77,
-<a name="l13612"></a>13612 111, 110, 111, 116, 121, 112, 101, 32, 84, 121, 112, 101, 32, 68, 114, 97, 119, 105, 110, 103, 32, 79, 102, 102, 105,
-<a name="l13613"></a>13613 99, 101, 32, 45, 32, 82, 111, 98, 105, 110, 32, 78, 105, 99, 104, 111, 108, 97, 115, 44, 32, 80, 97, 116, 114,
-<a name="l13614"></a>13614 105, 99, 105, 97, 32, 83, 97, 117, 110, 100, 101, 114, 115, 32, 49, 57, 56, 50, 104, 116, 116, 112, 58, 47, 47,
-<a name="l13615"></a>13615 119, 119, 119, 46, 109, 111, 110, 111, 116, 121, 112, 101, 46, 99, 111, 109, 47, 104, 116, 109, 108, 47, 109, 116, 110,
-<a name="l13616"></a>13616 97, 109, 101, 47, 109, 115, 95, 97, 114, 105, 97, 108, 46, 104, 116, 109, 108, 104, 116, 116, 112, 58, 47, 47, 119,
-<a name="l13617"></a>13617 119, 119, 46, 109, 111, 110, 111, 116, 121, 112, 101, 46, 99, 111, 109, 47, 104, 116, 109, 108, 47, 109, 116, 110, 97,
-<a name="l13618"></a>13618 109, 101, 47, 109, 115, 95, 119, 101, 108, 99, 111, 109, 101, 46, 104, 116, 109, 108, 104, 116, 116, 112, 58, 47, 47,
-<a name="l13619"></a>13619 119, 119, 119, 46, 109, 111, 110, 111, 116, 121, 112, 101, 46, 99, 111, 109, 47, 104, 116, 109, 108, 47, 116, 121, 112,
-<a name="l13620"></a>13620 101, 47, 108, 105, 99, 101, 110, 115, 101, 46, 104, 116, 109, 108, 0, 78, 0, 111, 0, 114, 0, 109, 0, 97, 0,
-<a name="l13621"></a>13621 108, 0, 110, 0, 121, 0, 111, 0, 98, 0, 121, 1, 13, 0, 101, 0, 106, 0, 110, 0, -23, 0, 110, 0, 111,
-<a name="l13622"></a>13622 0, 114, 0, 109, 0, 97, 0, 108, 0, 83, 0, 116, 0, 97, 0, 110, 0, 100, 0, 97, 0, 114, 0, 100, 3,
-<a name="l13623"></a>13623 -102, 3, -79, 3, -67, 3, -65, 3, -67, 3, -71, 3, -70, 3, -84, 0, 78, 0, 111, 0, 114, 0, 109, 0, 97,
-<a name="l13624"></a>13624 0, 97, 0, 108, 0, 105, 0, 78, 0, 111, 0, 114, 0, 109, 0, -31, 0, 108, 0, 110, 0, 101, 0, 78, 0,
-<a name="l13625"></a>13625 111, 0, 114, 0, 109, 0, 97, 0, 108, 0, 101, 0, 83, 0, 116, 0, 97, 0, 110, 0, 100, 0, 97, 0, 97,
-<a name="l13626"></a>13626 0, 114, 0, 100, 4, 30, 4, 49, 4, 75, 4, 71, 4, 61, 4, 75, 4, 57, 0, 78, 0, 97, 0, 118, 0,
-<a name="l13627"></a>13627 97, 0, 100, 0, 110, 0, 111, 0, 116, 0, 104, 1, -80, 1, -95, 3, 0, 0, 110, 0, 103, 0, 65, 0, 114,
-<a name="l13628"></a>13628 0, 114, 0, 117, 0, 110, 0, 116, 0, 97, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -1, 39, 0, -106,
-<a name="l13629"></a>13629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -118, 0, 0, 1,
-<a name="l13630"></a>13630 2, 1, 3, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13,
-<a name="l13631"></a>13631 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0,
-<a name="l13632"></a>13632 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32, 0, 33, 0, 34, 0, 35, 0, 36, 0, 37, 0, 38,
-<a name="l13633"></a>13633 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0,
-<a name="l13634"></a>13634 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 62, 0, 63,
-<a name="l13635"></a>13635 0, 64, 0, 65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0,
-<a name="l13636"></a>13636 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88,
-<a name="l13637"></a>13637 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 94, 0, 95, 0, 96, 0, 97, 0, 98, 0, 99, 0, 100, 0,
-<a name="l13638"></a>13638 101, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 111, 0, 112, 0, 113,
-<a name="l13639"></a>13639 0, 114, 0, 115, 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, 0, 121, 0, 122, 0, 123, 0, 124, 0, 125, 0,
-<a name="l13640"></a>13640 126, 0, 127, 0, -128, 0, -127, 0, -126, 0, -125, 0, -124, 0, -123, 0, -122, 0, -121, 0, -120, 0, -119, 0, -118,
-<a name="l13641"></a>13641 0, -117, 0, -116, 0, -115, 0, -114, 0, -113, 0, -112, 0, -111, 0, -110, 0, -109, 0, -108, 0, -107, 0, -106, 1,
-<a name="l13642"></a>13642 4, 0, -104, 0, -103, 0, -102, 1, 5, 0, -100, 0, -99, 0, -98, 1, 6, 0, -96, 0, -95, 0, -94, 0, -93,
-<a name="l13643"></a>13643 0, -92, 0, -91, 0, -90, 0, -89, 0, -88, 0, -87, 0, -86, 0, -85, 0, -83, 0, -82, 0, -81, 0, -80, 0,
-<a name="l13644"></a>13644 -79, 0, -78, 0, -77, 0, -76, 0, -75, 0, -74, 0, -73, 0, -72, 0, -71, 0, -70, 0, -69, 0, -68, 1, 7,
-<a name="l13645"></a>13645 0, -66, 0, -65, 0, -64, 0, -63, 0, -62, 0, -61, 0, -60, 0, -59, 0, -58, 0, -57, 0, -56, 0, -55, 0,
-<a name="l13646"></a>13646 -54, 0, -53, 0, -52, 0, -51, 0, -50, 0, -49, 0, -48, 0, -47, 0, -45, 0, -44, 0, -43, 0, -42, 0, -41,
-<a name="l13647"></a>13647 0, -40, 0, -39, 0, -38, 0, -37, 0, -36, 0, -35, 0, -34, 0, -33, 0, -32, 0, -31, 0, -30, 0, -29, 0,
-<a name="l13648"></a>13648 -28, 0, -27, 0, -26, 0, -25, 0, -24, 0, -23, 0, -22, 0, -21, 0, -20, 0, -19, 0, -18, 0, -17, 0, -16,
-<a name="l13649"></a>13649 0, -15, 0, -14, 0, -13, 0, -12, 0, -11, 0, -10, 0, -9, 0, -8, 0, -7, 0, -6, 0, -5, 0, -4, 0,
-<a name="l13650"></a>13650 -3, 0, -2, 0, -1, 1, 0, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16,
-<a name="l13651"></a>13651 1, 17, 1, 18, 1, 19, 1, 20, 1, 21, 1, 22, 1, 23, 1, 24, 1, 25, 1, 26, 1, 27, 1, 28, 1,
-<a name="l13652"></a>13652 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 1, 36, 1, 37, 1, 38, 1, 39, 1, 40, 1, 41,
-<a name="l13653"></a>13653 1, 42, 1, 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52, 1, 53, 1,
-<a name="l13654"></a>13654 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 1, 62, 1, 63, 1, 64, 1, 65, 1, 66,
-<a name="l13655"></a>13655 1, 67, 1, 68, 1, 69, 1, 70, 1, 71, 1, 72, 1, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1,
-<a name="l13656"></a>13656 79, 1, 80, 1, 81, 1, 82, 1, 83, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91,
-<a name="l13657"></a>13657 1, 92, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 1, 99, 1, 100, 1, 101, 1, 102, 1, 103, 1,
-<a name="l13658"></a>13658 104, 1, 105, 1, 106, 1, 107, 1, 108, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116,
-<a name="l13659"></a>13659 1, 117, 1, 118, 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, -128, 1,
-<a name="l13660"></a>13660 -127, 1, -126, 1, -125, 1, -124, 1, -123, 1, -122, 1, -121, 1, -120, 1, -119, 1, -118, 1, -117, 1, -116, 1, -115,
-<a name="l13661"></a>13661 1, -114, 1, -113, 1, -112, 1, -111, 1, -110, 1, -109, 1, -108, 1, -107, 1, -106, 1, -105, 1, -104, 1, -103, 1,
-<a name="l13662"></a>13662 -102, 1, -101, 1, -100, 1, -99, 1, -98, 1, -97, 1, -96, 1, -95, 1, -94, 1, -93, 1, -92, 1, -91, 1, -90,
-<a name="l13663"></a>13663 1, -89, 1, -88, 1, -87, 1, -86, 1, -85, 1, -84, 1, -83, 1, -82, 1, -81, 1, -80, 1, -79, 1, -78, 1,
-<a name="l13664"></a>13664 -77, 1, -76, 1, -75, 1, -74, 1, -73, 1, -72, 1, -71, 1, -70, 1, -69, 1, -68, 1, -67, 1, -66, 1, -65,
-<a name="l13665"></a>13665 1, -64, 1, -63, 1, -62, 1, -61, 1, -60, 1, -59, 1, -58, 1, -57, 1, -56, 1, -55, 1, -54, 1, -53, 1,
-<a name="l13666"></a>13666 -52, 1, -51, 1, -50, 1, -49, 1, -48, 1, -47, 1, -46, 1, -45, 1, -44, 1, -43, 1, -42, 1, -41, 1, -40,
-<a name="l13667"></a>13667 1, -39, 1, -38, 1, -37, 1, -36, 1, -35, 1, -34, 1, -33, 1, -32, 1, -31, 1, -30, 1, -29, 1, -28, 1,
-<a name="l13668"></a>13668 -27, 1, -26, 1, -25, 1, -24, 1, -23, 1, -22, 1, -21, 1, -20, 1, -19, 1, -18, 1, -17, 1, -16, 1, -15,
-<a name="l13669"></a>13669 1, -14, 1, -13, 1, -12, 1, -11, 1, -10, 1, -9, 1, -8, 1, -7, 1, -6, 1, -5, 1, -4, 1, -3, 1,
-<a name="l13670"></a>13670 -2, 1, -1, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10,
-<a name="l13671"></a>13671 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 0, -97, 2,
-<a name="l13672"></a>13672 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34,
-<a name="l13673"></a>13673 2, 35, 2, 36, 0, -105, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2,
-<a name="l13674"></a>13674 46, 2, 47, 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58,
-<a name="l13675"></a>13675 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, 2, 68, 2, 69, 2, 70, 2,
-<a name="l13676"></a>13676 71, 2, 72, 2, 73, 2, 74, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83,
-<a name="l13677"></a>13677 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2,
-<a name="l13678"></a>13678 96, 2, 97, 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, 2, 108,
-<a name="l13679"></a>13679 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, 2, 118, 2, 119, 2, 120, 2,
-<a name="l13680"></a>13680 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, 2, -128, 2, -127, 2, -126, 2, -125, 2, -124, 2, -123,
-<a name="l13681"></a>13681 2, -122, 2, -121, 2, -120, 2, -119, 2, -118, 2, -117, 2, -116, 2, -115, 2, -114, 2, -113, 2, -112, 2, -111, 2,
-<a name="l13682"></a>13682 -110, 0, -101, 2, -109, 2, -108, 2, -107, 2, -106, 2, -105, 2, -104, 2, -103, 2, -102, 2, -101, 2, -100, 2, -99,
-<a name="l13683"></a>13683 2, -98, 2, -97, 2, -96, 2, -95, 2, -94, 2, -93, 2, -92, 2, -91, 2, -90, 2, -89, 2, -88, 2, -87, 2,
-<a name="l13684"></a>13684 -86, 2, -85, 2, -84, 2, -83, 2, -82, 2, -81, 2, -80, 2, -79, 2, -78, 2, -77, 2, -76, 2, -75, 2, -74,
-<a name="l13685"></a>13685 2, -73, 2, -72, 2, -71, 2, -70, 2, -69, 2, -68, 2, -67, 2, -66, 2, -65, 2, -64, 2, -63, 2, -62, 2,
-<a name="l13686"></a>13686 -61, 2, -60, 2, -59, 2, -58, 2, -57, 2, -56, 2, -55, 2, -54, 2, -53, 2, -52, 2, -51, 2, -50, 2, -49,
-<a name="l13687"></a>13687 2, -48, 2, -47, 2, -46, 2, -45, 2, -44, 2, -43, 2, -42, 2, -41, 2, -40, 2, -39, 2, -38, 2, -37, 2,
-<a name="l13688"></a>13688 -36, 2, -35, 2, -34, 2, -33, 2, -32, 2, -31, 2, -30, 2, -29, 2, -28, 2, -27, 2, -26, 2, -25, 2, -24,
-<a name="l13689"></a>13689 2, -23, 2, -22, 2, -21, 2, -20, 2, -19, 2, -18, 2, -17, 2, -16, 2, -15, 2, -14, 2, -13, 2, -12, 2,
-<a name="l13690"></a>13690 -11, 2, -10, 2, -9, 2, -8, 2, -7, 2, -6, 2, -5, 2, -4, 2, -3, 2, -2, 2, -1, 3, 0, 3, 1,
-<a name="l13691"></a>13691 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3,
-<a name="l13692"></a>13692 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26,
-<a name="l13693"></a>13693 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3,
-<a name="l13694"></a>13694 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51,
-<a name="l13695"></a>13695 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3,
-<a name="l13696"></a>13696 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76,
-<a name="l13697"></a>13697 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3,
-<a name="l13698"></a>13698 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 0, -67, 3, 100,
-<a name="l13699"></a>13699 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3,
-<a name="l13700"></a>13700 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125,
-<a name="l13701"></a>13701 3, 126, 3, 127, 3, -128, 3, -127, 3, -126, 3, -125, 3, -124, 3, -123, 3, -122, 3, -121, 3, -120, 3, -119, 3,
-<a name="l13702"></a>13702 -118, 3, -117, 3, -116, 3, -115, 3, -114, 3, -113, 3, -112, 3, -111, 3, -110, 3, -109, 3, -108, 3, -107, 3, -106,
-<a name="l13703"></a>13703 3, -105, 3, -104, 3, -103, 3, -102, 3, -101, 3, -100, 3, -99, 3, -98, 3, -97, 3, -96, 3, -95, 3, -94, 3,
-<a name="l13704"></a>13704 -93, 3, -92, 3, -91, 3, -90, 3, -89, 3, -88, 3, -87, 3, -86, 3, -85, 3, -84, 3, -83, 3, -82, 3, -81,
-<a name="l13705"></a>13705 3, -80, 3, -79, 3, -78, 3, -77, 3, -76, 3, -75, 3, -74, 3, -73, 3, -72, 3, -71, 3, -70, 3, -69, 3,
-<a name="l13706"></a>13706 -68, 3, -67, 3, -66, 3, -65, 3, -64, 3, -63, 3, -62, 3, -61, 3, -60, 3, -59, 3, -58, 3, -57, 3, -56,
-<a name="l13707"></a>13707 3, -55, 3, -54, 3, -53, 3, -52, 3, -51, 3, -50, 3, -49, 3, -48, 3, -47, 3, -46, 3, -45, 3, -44, 3,
-<a name="l13708"></a>13708 -43, 3, -42, 3, -41, 3, -40, 3, -39, 3, -38, 3, -37, 3, -36, 3, -35, 3, -34, 3, -33, 3, -32, 3, -31,
-<a name="l13709"></a>13709 3, -30, 3, -29, 3, -28, 3, -27, 3, -26, 3, -25, 3, -24, 3, -23, 3, -22, 3, -21, 3, -20, 3, -19, 3,
-<a name="l13710"></a>13710 -18, 3, -17, 3, -16, 3, -15, 3, -14, 3, -13, 3, -12, 3, -11, 3, -10, 3, -9, 3, -8, 3, -7, 3, -6,
-<a name="l13711"></a>13711 3, -5, 3, -4, 3, -3, 3, -2, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4,
-<a name="l13712"></a>13712 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19,
-<a name="l13713"></a>13713 4, 20, 4, 21, 4, 22, 4, 23, 4, 24, 4, 25, 4, 26, 4, 27, 4, 28, 4, 29, 4, 30, 4, 31, 4,
-<a name="l13714"></a>13714 32, 4, 33, 4, 34, 4, 35, 4, 36, 4, 37, 4, 38, 4, 39, 4, 40, 4, 41, 4, 42, 4, 43, 4, 44,
-<a name="l13715"></a>13715 4, 45, 4, 46, 4, 47, 4, 48, 4, 49, 4, 50, 4, 51, 4, 52, 4, 53, 4, 54, 4, 55, 4, 56, 4,
-<a name="l13716"></a>13716 57, 4, 58, 4, 59, 4, 60, 4, 61, 4, 62, 4, 63, 4, 64, 4, 65, 4, 66, 4, 67, 4, 68, 4, 69,
-<a name="l13717"></a>13717 4, 70, 4, 71, 4, 72, 4, 73, 4, 74, 4, 75, 4, 76, 4, 77, 4, 78, 4, 79, 4, 80, 4, 81, 4,
-<a name="l13718"></a>13718 82, 4, 83, 4, 84, 4, 85, 4, 86, 4, 87, 4, 88, 4, 89, 4, 90, 4, 91, 4, 92, 4, 93, 4, 94,
-<a name="l13719"></a>13719 4, 95, 4, 96, 4, 97, 4, 98, 4, 99, 4, 100, 4, 101, 4, 102, 4, 103, 4, 104, 4, 105, 4, 106, 4,
-<a name="l13720"></a>13720 107, 4, 108, 4, 109, 4, 110, 4, 111, 4, 112, 4, 113, 4, 114, 4, 115, 4, 116, 4, 117, 4, 118, 4, 119,
-<a name="l13721"></a>13721 4, 120, 4, 121, 4, 122, 4, 123, 4, 124, 4, 125, 4, 126, 4, 127, 4, -128, 4, -127, 4, -126, 4, -125, 4,
-<a name="l13722"></a>13722 -124, 4, -123, 4, -122, 4, -121, 4, -120, 4, -119, 4, -118, 4, -117, 4, -116, 4, -115, 4, -114, 4, -113, 4, -112,
-<a name="l13723"></a>13723 4, -111, 4, -110, 4, -109, 4, -108, 4, -107, 4, -106, 4, -105, 4, -104, 4, -103, 4, -102, 4, -101, 4, -100, 4,
-<a name="l13724"></a>13724 -99, 4, -98, 4, -97, 4, -96, 4, -95, 4, -94, 4, -93, 4, -92, 4, -91, 4, -90, 4, -89, 4, -88, 4, -87,
-<a name="l13725"></a>13725 4, -86, 4, -85, 4, -84, 4, -83, 4, -82, 4, -81, 4, -80, 4, -79, 4, -78, 4, -77, 4, -76, 4, -75, 4,
-<a name="l13726"></a>13726 -74, 4, -73, 4, -72, 4, -71, 4, -70, 4, -69, 4, -68, 4, -67, 4, -66, 4, -65, 4, -64, 4, -63, 4, -62,
-<a name="l13727"></a>13727 4, -61, 4, -60, 4, -59, 4, -58, 4, -57, 4, -56, 4, -55, 4, -54, 4, -53, 4, -52, 4, -51, 4, -50, 4,
-<a name="l13728"></a>13728 -49, 4, -48, 4, -47, 4, -46, 4, -45, 4, -44, 4, -43, 4, -42, 4, -41, 4, -40, 4, -39, 4, -38, 4, -37,
-<a name="l13729"></a>13729 4, -36, 4, -35, 4, -34, 4, -33, 4, -32, 4, -31, 4, -30, 4, -29, 4, -28, 4, -27, 4, -26, 4, -25, 4,
-<a name="l13730"></a>13730 -24, 4, -23, 4, -22, 4, -21, 4, -20, 4, -19, 4, -18, 4, -17, 4, -16, 4, -15, 4, -14, 4, -13, 4, -12,
-<a name="l13731"></a>13731 4, -11, 4, -10, 4, -9, 4, -8, 4, -7, 4, -6, 4, -5, 4, -4, 4, -3, 4, -2, 4, -1, 5, 0, 5,
-<a name="l13732"></a>13732 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 5, 12, 5, 13,
-<a name="l13733"></a>13733 5, 14, 5, 15, 5, 16, 5, 17, 5, 18, 5, 19, 5, 20, 5, 21, 5, 22, 5, 23, 5, 24, 5, 25, 5,
-<a name="l13734"></a>13734 26, 5, 27, 5, 28, 5, 29, 5, 30, 5, 31, 5, 32, 5, 33, 5, 34, 5, 35, 5, 36, 5, 37, 5, 38,
-<a name="l13735"></a>13735 5, 39, 5, 40, 5, 41, 5, 42, 5, 43, 5, 44, 5, 45, 5, 46, 5, 47, 5, 48, 5, 49, 5, 50, 5,
-<a name="l13736"></a>13736 51, 5, 52, 5, 53, 5, 54, 5, 55, 5, 56, 5, 57, 5, 58, 5, 59, 5, 60, 5, 61, 5, 62, 5, 63,
-<a name="l13737"></a>13737 5, 64, 5, 65, 5, 66, 5, 67, 5, 68, 5, 69, 5, 70, 5, 71, 5, 72, 5, 73, 5, 74, 5, 75, 5,
-<a name="l13738"></a>13738 76, 5, 77, 5, 78, 5, 79, 5, 80, 5, 81, 5, 82, 5, 83, 5, 84, 5, 85, 5, 86, 5, 87, 5, 88,
-<a name="l13739"></a>13739 5, 89, 5, 90, 5, 91, 5, 92, 5, 93, 5, 94, 5, 95, 5, 96, 5, 97, 5, 98, 5, 99, 5, 100, 5,
-<a name="l13740"></a>13740 101, 5, 102, 5, 103, 5, 104, 5, 105, 5, 106, 5, 107, 5, 108, 5, 109, 5, 110, 5, 111, 5, 112, 5, 113,
-<a name="l13741"></a>13741 5, 114, 5, 115, 5, 116, 5, 117, 5, 118, 5, 119, 5, 120, 5, 121, 5, 122, 5, 123, 5, 124, 5, 125, 5,
-<a name="l13742"></a>13742 126, 5, 127, 5, -128, 5, -127, 5, -126, 5, -125, 5, -124, 5, -123, 5, -122, 5, -121, 5, -120, 5, -119, 5, -118,
-<a name="l13743"></a>13743 5, -117, 5, -116, 5, -115, 5, -114, 5, -113, 5, -112, 5, -111, 5, -110, 5, -109, 5, -108, 5, -107, 5, -106, 5,
-<a name="l13744"></a>13744 -105, 5, -104, 5, -103, 5, -102, 5, -101, 5, -100, 5, -99, 5, -98, 5, -97, 5, -96, 5, -95, 5, -94, 5, -93,
-<a name="l13745"></a>13745 5, -92, 5, -91, 5, -90, 5, -89, 5, -88, 5, -87, 5, -86, 5, -85, 5, -84, 5, -83, 5, -82, 5, -81, 5,
-<a name="l13746"></a>13746 -80, 5, -79, 5, -78, 5, -77, 5, -76, 5, -75, 5, -74, 5, -73, 5, -72, 5, -71, 5, -70, 5, -69, 5, -68,
-<a name="l13747"></a>13747 5, -67, 5, -66, 5, -65, 5, -64, 5, -63, 5, -62, 5, -61, 5, -60, 5, -59, 5, -58, 5, -57, 5, -56, 5,
-<a name="l13748"></a>13748 -55, 5, -54, 5, -53, 5, -52, 5, -51, 5, -50, 5, -49, 5, -48, 5, -47, 5, -46, 5, -45, 5, -44, 5, -43,
-<a name="l13749"></a>13749 5, -42, 5, -41, 5, -40, 5, -39, 5, -38, 5, -37, 5, -36, 5, -35, 5, -34, 5, -33, 5, -32, 5, -31, 5,
-<a name="l13750"></a>13750 -30, 5, -29, 5, -28, 5, -27, 5, -26, 5, -25, 5, -24, 5, -23, 5, -22, 5, -21, 5, -20, 5, -19, 5, -18,
-<a name="l13751"></a>13751 5, -17, 5, -16, 5, -15, 5, -14, 5, -13, 5, -12, 5, -11, 5, -10, 5, -9, 5, -8, 5, -7, 5, -6, 5,
-<a name="l13752"></a>13752 -5, 5, -4, 5, -3, 5, -2, 5, -1, 6, 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7,
-<a name="l13753"></a>13753 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 6, 17, 6, 18, 6, 19, 6,
-<a name="l13754"></a>13754 20, 6, 21, 6, 22, 6, 23, 6, 24, 6, 25, 6, 26, 6, 27, 6, 28, 6, 29, 6, 30, 6, 31, 6, 32,
-<a name="l13755"></a>13755 6, 33, 6, 34, 6, 35, 6, 36, 6, 37, 6, 38, 6, 39, 6, 40, 6, 41, 6, 42, 6, 43, 6, 44, 6,
-<a name="l13756"></a>13756 45, 6, 46, 6, 47, 6, 48, 6, 49, 6, 50, 6, 51, 6, 52, 6, 53, 6, 54, 6, 55, 6, 56, 6, 57,
-<a name="l13757"></a>13757 6, 58, 6, 59, 6, 60, 6, 61, 6, 62, 6, 63, 6, 64, 6, 65, 6, 66, 6, 67, 6, 68, 6, 69, 6,
-<a name="l13758"></a>13758 70, 6, 71, 6, 72, 6, 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78, 6, 79, 6, 80, 6, 81, 6, 82,
-<a name="l13759"></a>13759 6, 83, 6, 84, 6, 85, 6, 86, 6, 87, 6, 88, 6, 89, 6, 90, 6, 91, 6, 92, 6, 93, 6, 94, 6,
-<a name="l13760"></a>13760 95, 6, 96, 6, 97, 6, 98, 6, 99, 6, 100, 6, 101, 6, 102, 6, 103, 6, 104, 6, 105, 6, 106, 6, 107,
-<a name="l13761"></a>13761 6, 108, 6, 109, 6, 110, 6, 111, 6, 112, 6, 113, 6, 114, 6, 115, 6, 116, 6, 117, 6, 118, 6, 119, 6,
-<a name="l13762"></a>13762 120, 6, 121, 6, 122, 6, 123, 6, 124, 6, 125, 6, 126, 6, 127, 6, -128, 6, -127, 6, -126, 6, -125, 6, -124,
-<a name="l13763"></a>13763 6, -123, 6, -122, 6, -121, 6, -120, 6, -119, 6, -118, 6, -117, 6, -116, 6, -115, 6, -114, 5, 46, 110, 117, 108,
-<a name="l13764"></a>13764 108, 16, 110, 111, 110, 109, 97, 114, 107, 105, 110, 103, 114, 101, 116, 117, 114, 110, 3, 109, 117, 49, 3, 112, 105,
-<a name="l13765"></a>13765 49, 3, 79, 104, 109, 4, 69, 117, 114, 111, 7, 100, 109, 97, 99, 114, 111, 110, 9, 111, 118, 101, 114, 115, 99,
-<a name="l13766"></a>13766 111, 114, 101, 6, 109, 105, 100, 100, 111, 116, 6, 65, 98, 114, 101, 118, 101, 6, 97, 98, 114, 101, 118, 101, 7,
-<a name="l13767"></a>13767 65, 111, 103, 111, 110, 101, 107, 7, 97, 111, 103, 111, 110, 101, 107, 6, 68, 99, 97, 114, 111, 110, 6, 100, 99,
-<a name="l13768"></a>13768 97, 114, 111, 110, 6, 68, 115, 108, 97, 115, 104, 7, 69, 111, 103, 111, 110, 101, 107, 7, 101, 111, 103, 111, 110,
-<a name="l13769"></a>13769 101, 107, 6, 69, 99, 97, 114, 111, 110, 6, 101, 99, 97, 114, 111, 110, 6, 76, 97, 99, 117, 116, 101, 6, 108,
-<a name="l13770"></a>13770 97, 99, 117, 116, 101, 6, 76, 99, 97, 114, 111, 110, 6, 108, 99, 97, 114, 111, 110, 4, 76, 100, 111, 116, 4,
-<a name="l13771"></a>13771 108, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 110, 97, 99, 117, 116, 101, 6, 78, 99, 97, 114, 111, 110,
-<a name="l13772"></a>13772 6, 110, 99, 97, 114, 111, 110, 9, 79, 100, 98, 108, 97, 99, 117, 116, 101, 9, 111, 100, 98, 108, 97, 99, 117,
-<a name="l13773"></a>13773 116, 101, 6, 82, 97, 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 6, 82, 99, 97, 114, 111, 110, 6, 114,
-<a name="l13774"></a>13774 99, 97, 114, 111, 110, 6, 83, 97, 99, 117, 116, 101, 6, 115, 97, 99, 117, 116, 101, 8, 84, 99, 101, 100, 105,
-<a name="l13775"></a>13775 108, 108, 97, 8, 116, 99, 101, 100, 105, 108, 108, 97, 6, 84, 99, 97, 114, 111, 110, 6, 116, 99, 97, 114, 111,
-<a name="l13776"></a>13776 110, 5, 85, 114, 105, 110, 103, 5, 117, 114, 105, 110, 103, 9, 85, 100, 98, 108, 97, 99, 117, 116, 101, 9, 117,
-<a name="l13777"></a>13777 100, 98, 108, 97, 99, 117, 116, 101, 6, 90, 97, 99, 117, 116, 101, 6, 122, 97, 99, 117, 116, 101, 4, 90, 100,
-<a name="l13778"></a>13778 111, 116, 4, 122, 100, 111, 116, 5, 71, 97, 109, 109, 97, 5, 84, 104, 101, 116, 97, 3, 80, 104, 105, 5, 97,
-<a name="l13779"></a>13779 108, 112, 104, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, 110, 5, 115, 105, 103, 109, 97, 3,
-<a name="l13780"></a>13780 116, 97, 117, 3, 112, 104, 105, 13, 117, 110, 100, 101, 114, 115, 99, 111, 114, 101, 100, 98, 108, 9, 101, 120, 99,
-<a name="l13781"></a>13781 108, 97, 109, 100, 98, 108, 9, 110, 115, 117, 112, 101, 114, 105, 111, 114, 6, 112, 101, 115, 101, 116, 97, 9, 97,
-<a name="l13782"></a>13782 114, 114, 111, 119, 108, 101, 102, 116, 7, 97, 114, 114, 111, 119, 117, 112, 10, 97, 114, 114, 111, 119, 114, 105, 103,
-<a name="l13783"></a>13783 104, 116, 9, 97, 114, 114, 111, 119, 100, 111, 119, 110, 9, 97, 114, 114, 111, 119, 98, 111, 116, 104, 9, 97, 114,
-<a name="l13784"></a>13784 114, 111, 119, 117, 112, 100, 110, 12, 97, 114, 114, 111, 119, 117, 112, 100, 110, 98, 115, 101, 10, 111, 114, 116, 104,
-<a name="l13785"></a>13785 111, 103, 111, 110, 97, 108, 12, 105, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 11, 101, 113, 117, 105, 118,
-<a name="l13786"></a>13786 97, 108, 101, 110, 99, 101, 5, 104, 111, 117, 115, 101, 13, 114, 101, 118, 108, 111, 103, 105, 99, 97, 108, 110, 111,
-<a name="l13787"></a>13787 116, 10, 105, 110, 116, 101, 103, 114, 97, 108, 116, 112, 10, 105, 110, 116, 101, 103, 114, 97, 108, 98, 116, 8, 83,
-<a name="l13788"></a>13788 70, 49, 48, 48, 48, 48, 48, 8, 83, 70, 49, 49, 48, 48, 48, 48, 8, 83, 70, 48, 49, 48, 48, 48, 48,
-<a name="l13789"></a>13789 8, 83, 70, 48, 51, 48, 48, 48, 48, 8, 83, 70, 48, 50, 48, 48, 48, 48, 8, 83, 70, 48, 52, 48, 48,
-<a name="l13790"></a>13790 48, 48, 8, 83, 70, 48, 56, 48, 48, 48, 48, 8, 83, 70, 48, 57, 48, 48, 48, 48, 8, 83, 70, 48, 54,
-<a name="l13791"></a>13791 48, 48, 48, 48, 8, 83, 70, 48, 55, 48, 48, 48, 48, 8, 83, 70, 48, 53, 48, 48, 48, 48, 8, 83, 70,
-<a name="l13792"></a>13792 52, 51, 48, 48, 48, 48, 8, 83, 70, 50, 52, 48, 48, 48, 48, 8, 83, 70, 53, 49, 48, 48, 48, 48, 8,
-<a name="l13793"></a>13793 83, 70, 53, 50, 48, 48, 48, 48, 8, 83, 70, 51, 57, 48, 48, 48, 48, 8, 83, 70, 50, 50, 48, 48, 48,
-<a name="l13794"></a>13794 48, 8, 83, 70, 50, 49, 48, 48, 48, 48, 8, 83, 70, 50, 53, 48, 48, 48, 48, 8, 83, 70, 53, 48, 48,
-<a name="l13795"></a>13795 48, 48, 48, 8, 83, 70, 52, 57, 48, 48, 48, 48, 8, 83, 70, 51, 56, 48, 48, 48, 48, 8, 83, 70, 50,
-<a name="l13796"></a>13796 56, 48, 48, 48, 48, 8, 83, 70, 50, 55, 48, 48, 48, 48, 8, 83, 70, 50, 54, 48, 48, 48, 48, 8, 83,
-<a name="l13797"></a>13797 70, 51, 54, 48, 48, 48, 48, 8, 83, 70, 51, 55, 48, 48, 48, 48, 8, 83, 70, 52, 50, 48, 48, 48, 48,
-<a name="l13798"></a>13798 8, 83, 70, 49, 57, 48, 48, 48, 48, 8, 83, 70, 50, 48, 48, 48, 48, 48, 8, 83, 70, 50, 51, 48, 48,
-<a name="l13799"></a>13799 48, 48, 8, 83, 70, 52, 55, 48, 48, 48, 48, 8, 83, 70, 52, 56, 48, 48, 48, 48, 8, 83, 70, 52, 49,
-<a name="l13800"></a>13800 48, 48, 48, 48, 8, 83, 70, 52, 53, 48, 48, 48, 48, 8, 83, 70, 52, 54, 48, 48, 48, 48, 8, 83, 70,
-<a name="l13801"></a>13801 52, 48, 48, 48, 48, 48, 8, 83, 70, 53, 52, 48, 48, 48, 48, 8, 83, 70, 53, 51, 48, 48, 48, 48, 8,
-<a name="l13802"></a>13802 83, 70, 52, 52, 48, 48, 48, 48, 7, 117, 112, 98, 108, 111, 99, 107, 7, 100, 110, 98, 108, 111, 99, 107, 5,
-<a name="l13803"></a>13803 98, 108, 111, 99, 107, 7, 108, 102, 98, 108, 111, 99, 107, 7, 114, 116, 98, 108, 111, 99, 107, 7, 108, 116, 115,
-<a name="l13804"></a>13804 104, 97, 100, 101, 5, 115, 104, 97, 100, 101, 7, 100, 107, 115, 104, 97, 100, 101, 9, 102, 105, 108, 108, 101, 100,
-<a name="l13805"></a>13805 98, 111, 120, 10, 102, 105, 108, 108, 101, 100, 114, 101, 99, 116, 7, 116, 114, 105, 97, 103, 117, 112, 7, 116, 114,
-<a name="l13806"></a>13806 105, 97, 103, 114, 116, 7, 116, 114, 105, 97, 103, 100, 110, 7, 116, 114, 105, 97, 103, 108, 102, 6, 99, 105, 114,
-<a name="l13807"></a>13807 99, 108, 101, 9, 105, 110, 118, 98, 117, 108, 108, 101, 116, 9, 105, 110, 118, 99, 105, 114, 99, 108, 101, 9, 115,
-<a name="l13808"></a>13808 109, 105, 108, 101, 102, 97, 99, 101, 12, 105, 110, 118, 115, 109, 105, 108, 101, 102, 97, 99, 101, 3, 115, 117, 110,
-<a name="l13809"></a>13809 6, 102, 101, 109, 97, 108, 101, 4, 109, 97, 108, 101, 5, 115, 112, 97, 100, 101, 4, 99, 108, 117, 98, 5, 104,
-<a name="l13810"></a>13810 101, 97, 114, 116, 7, 100, 105, 97, 109, 111, 110, 100, 11, 109, 117, 115, 105, 99, 97, 108, 110, 111, 116, 101, 14,
-<a name="l13811"></a>13811 109, 117, 115, 105, 99, 97, 108, 110, 111, 116, 101, 100, 98, 108, 2, 73, 74, 2, 105, 106, 11, 110, 97, 112, 111,
-<a name="l13812"></a>13812 115, 116, 114, 111, 112, 104, 101, 6, 109, 105, 110, 117, 116, 101, 6, 115, 101, 99, 111, 110, 100, 9, 97, 102, 105,
-<a name="l13813"></a>13813 105, 54, 49, 50, 52, 56, 9, 97, 102, 105, 105, 54, 49, 50, 56, 57, 6, 72, 50, 50, 48, 55, 51, 6, 72,
-<a name="l13814"></a>13814 49, 56, 53, 52, 51, 6, 72, 49, 56, 53, 53, 49, 6, 72, 49, 56, 53, 51, 51, 10, 111, 112, 101, 110, 98,
-<a name="l13815"></a>13815 117, 108, 108, 101, 116, 7, 65, 109, 97, 99, 114, 111, 110, 7, 97, 109, 97, 99, 114, 111, 110, 11, 67, 99, 105,
-<a name="l13816"></a>13816 114, 99, 117, 109, 102, 108, 101, 120, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 67, 100, 111, 116,
-<a name="l13817"></a>13817 4, 99, 100, 111, 116, 7, 69, 109, 97, 99, 114, 111, 110, 7, 101, 109, 97, 99, 114, 111, 110, 6, 69, 98, 114,
-<a name="l13818"></a>13818 101, 118, 101, 6, 101, 98, 114, 101, 118, 101, 4, 69, 100, 111, 116, 4, 101, 100, 111, 116, 11, 71, 99, 105, 114,
-<a name="l13819"></a>13819 99, 117, 109, 102, 108, 101, 120, 11, 103, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 71, 100, 111, 116, 4,
-<a name="l13820"></a>13820 103, 100, 111, 116, 8, 71, 99, 101, 100, 105, 108, 108, 97, 8, 103, 99, 101, 100, 105, 108, 108, 97, 11, 72, 99,
-<a name="l13821"></a>13821 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 72, 98, 97,
-<a name="l13822"></a>13822 114, 4, 104, 98, 97, 114, 6, 73, 116, 105, 108, 100, 101, 6, 105, 116, 105, 108, 100, 101, 7, 73, 109, 97, 99,
-<a name="l13823"></a>13823 114, 111, 110, 7, 105, 109, 97, 99, 114, 111, 110, 6, 73, 98, 114, 101, 118, 101, 6, 105, 98, 114, 101, 118, 101,
-<a name="l13824"></a>13824 7, 73, 111, 103, 111, 110, 101, 107, 7, 105, 111, 103, 111, 110, 101, 107, 11, 74, 99, 105, 114, 99, 117, 109, 102,
-<a name="l13825"></a>13825 108, 101, 120, 11, 106, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 8, 75, 99, 101, 100, 105, 108, 108, 97, 8,
-<a name="l13826"></a>13826 107, 99, 101, 100, 105, 108, 108, 97, 12, 107, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 8, 76, 99, 101,
-<a name="l13827"></a>13827 100, 105, 108, 108, 97, 8, 108, 99, 101, 100, 105, 108, 108, 97, 8, 78, 99, 101, 100, 105, 108, 108, 97, 8, 110,
-<a name="l13828"></a>13828 99, 101, 100, 105, 108, 108, 97, 3, 69, 110, 103, 3, 101, 110, 103, 7, 79, 109, 97, 99, 114, 111, 110, 7, 111,
-<a name="l13829"></a>13829 109, 97, 99, 114, 111, 110, 6, 79, 98, 114, 101, 118, 101, 6, 111, 98, 114, 101, 118, 101, 8, 82, 99, 101, 100,
-<a name="l13830"></a>13830 105, 108, 108, 97, 8, 114, 99, 101, 100, 105, 108, 108, 97, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120,
-<a name="l13831"></a>13831 11, 115, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 4, 84, 98, 97, 114, 4, 116, 98, 97, 114, 6, 85, 116,
-<a name="l13832"></a>13832 105, 108, 100, 101, 6, 117, 116, 105, 108, 100, 101, 7, 85, 109, 97, 99, 114, 111, 110, 7, 117, 109, 97, 99, 114,
-<a name="l13833"></a>13833 111, 110, 6, 85, 98, 114, 101, 118, 101, 6, 117, 98, 114, 101, 118, 101, 7, 85, 111, 103, 111, 110, 101, 107, 7,
-<a name="l13834"></a>13834 117, 111, 103, 111, 110, 101, 107, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 119, 99, 105, 114, 99,
-<a name="l13835"></a>13835 117, 109, 102, 108, 101, 120, 11, 89, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 121, 99, 105, 114, 99, 117,
-<a name="l13836"></a>13836 109, 102, 108, 101, 120, 5, 108, 111, 110, 103, 115, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 10, 97, 114,
-<a name="l13837"></a>13837 105, 110, 103, 97, 99, 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11,
-<a name="l13838"></a>13838 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 11, 111, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 9, 97,
-<a name="l13839"></a>13839 110, 111, 116, 101, 108, 101, 105, 97, 6, 87, 103, 114, 97, 118, 101, 6, 119, 103, 114, 97, 118, 101, 6, 87, 97,
-<a name="l13840"></a>13840 99, 117, 116, 101, 6, 119, 97, 99, 117, 116, 101, 9, 87, 100, 105, 101, 114, 101, 115, 105, 115, 9, 119, 100, 105,
-<a name="l13841"></a>13841 101, 114, 101, 115, 105, 115, 6, 89, 103, 114, 97, 118, 101, 6, 121, 103, 114, 97, 118, 101, 13, 113, 117, 111, 116,
-<a name="l13842"></a>13842 101, 114, 101, 118, 101, 114, 115, 101, 100, 9, 114, 97, 100, 105, 99, 97, 108, 101, 120, 9, 97, 102, 105, 105, 48,
-<a name="l13843"></a>13843 56, 57, 52, 49, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 9, 111, 110, 101, 101, 105, 103, 104, 116, 104, 12,
-<a name="l13844"></a>13844 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, 101, 105, 103, 104, 116, 104, 115, 12,
-<a name="l13845"></a>13845 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 16,
-<a name="l13846"></a>13846 117, 110, 100, 101, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 5, 116, 111, 110, 111, 115, 13, 100, 105,
-<a name="l13847"></a>13847 101, 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112,
-<a name="l13848"></a>13848 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, 97, 116,
-<a name="l13849"></a>13849 111, 110, 111, 115, 12, 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110,
-<a name="l13850"></a>13850 116, 111, 110, 111, 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114,
-<a name="l13851"></a>13851 101, 115, 105, 115, 116, 111, 110, 111, 115, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, 97, 5, 68, 101, 108, 116,
-<a name="l13852"></a>13852 97, 7, 69, 112, 115, 105, 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 4, 73, 111, 116, 97, 5, 75,
-<a name="l13853"></a>13853 97, 112, 112, 97, 6, 76, 97, 109, 98, 100, 97, 2, 77, 117, 2, 78, 117, 2, 88, 105, 7, 79, 109, 105, 99,
-<a name="l13854"></a>13854 114, 111, 110, 2, 80, 105, 3, 82, 104, 111, 5, 83, 105, 103, 109, 97, 3, 84, 97, 117, 7, 85, 112, 115, 105,
-<a name="l13855"></a>13855 108, 111, 110, 3, 67, 104, 105, 3, 80, 115, 105, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 15,
-<a name="l13856"></a>13856 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 10, 97, 108, 112, 104, 97, 116, 111, 110, 111,
-<a name="l13857"></a>13857 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, 116, 111, 110, 111, 115, 9, 105,
-<a name="l13858"></a>13858 111, 116, 97, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 116,
-<a name="l13859"></a>13859 111, 110, 111, 115, 4, 98, 101, 116, 97, 5, 103, 97, 109, 109, 97, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5,
-<a name="l13860"></a>13860 116, 104, 101, 116, 97, 4, 105, 111, 116, 97, 5, 107, 97, 112, 112, 97, 6, 108, 97, 109, 98, 100, 97, 2, 110,
-<a name="l13861"></a>13861 117, 2, 120, 105, 7, 111, 109, 105, 99, 114, 111, 110, 3, 114, 104, 111, 6, 115, 105, 103, 109, 97, 49, 7, 117,
-<a name="l13862"></a>13862 112, 115, 105, 108, 111, 110, 3, 99, 104, 105, 3, 112, 115, 105, 5, 111, 109, 101, 103, 97, 12, 105, 111, 116, 97,
-<a name="l13863"></a>13863 100, 105, 101, 114, 101, 115, 105, 115, 15, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12,
-<a name="l13864"></a>13864 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 117, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115,
-<a name="l13865"></a>13865 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, 9, 97, 102, 105, 105, 49, 48, 48, 50, 51, 9, 97, 102, 105,
-<a name="l13866"></a>13866 105, 49, 48, 48, 53, 49, 9, 97, 102, 105, 105, 49, 48, 48, 53, 50, 9, 97, 102, 105, 105, 49, 48, 48, 53,
-<a name="l13867"></a>13867 51, 9, 97, 102, 105, 105, 49, 48, 48, 53, 52, 9, 97, 102, 105, 105, 49, 48, 48, 53, 53, 9, 97, 102, 105,
-<a name="l13868"></a>13868 105, 49, 48, 48, 53, 54, 9, 97, 102, 105, 105, 49, 48, 48, 53, 55, 9, 97, 102, 105, 105, 49, 48, 48, 53,
-<a name="l13869"></a>13869 56, 9, 97, 102, 105, 105, 49, 48, 48, 53, 57, 9, 97, 102, 105, 105, 49, 48, 48, 54, 48, 9, 97, 102, 105,
-<a name="l13870"></a>13870 105, 49, 48, 48, 54, 49, 9, 97, 102, 105, 105, 49, 48, 48, 54, 50, 9, 97, 102, 105, 105, 49, 48, 49, 52,
-<a name="l13871"></a>13871 53, 9, 97, 102, 105, 105, 49, 48, 48, 49, 55, 9, 97, 102, 105, 105, 49, 48, 48, 49, 56, 9, 97, 102, 105,
-<a name="l13872"></a>13872 105, 49, 48, 48, 49, 57, 9, 97, 102, 105, 105, 49, 48, 48, 50, 48, 9, 97, 102, 105, 105, 49, 48, 48, 50,
-<a name="l13873"></a>13873 49, 9, 97, 102, 105, 105, 49, 48, 48, 50, 50, 9, 97, 102, 105, 105, 49, 48, 48, 50, 52, 9, 97, 102, 105,
-<a name="l13874"></a>13874 105, 49, 48, 48, 50, 53, 9, 97, 102, 105, 105, 49, 48, 48, 50, 54, 9, 97, 102, 105, 105, 49, 48, 48, 50,
-<a name="l13875"></a>13875 55, 9, 97, 102, 105, 105, 49, 48, 48, 50, 56, 9, 97, 102, 105, 105, 49, 48, 48, 50, 57, 9, 97, 102, 105,
-<a name="l13876"></a>13876 105, 49, 48, 48, 51, 48, 9, 97, 102, 105, 105, 49, 48, 48, 51, 49, 9, 97, 102, 105, 105, 49, 48, 48, 51,
-<a name="l13877"></a>13877 50, 9, 97, 102, 105, 105, 49, 48, 48, 51, 51, 9, 97, 102, 105, 105, 49, 48, 48, 51, 52, 9, 97, 102, 105,
-<a name="l13878"></a>13878 105, 49, 48, 48, 51, 53, 9, 97, 102, 105, 105, 49, 48, 48, 51, 54, 9, 97, 102, 105, 105, 49, 48, 48, 51,
-<a name="l13879"></a>13879 55, 9, 97, 102, 105, 105, 49, 48, 48, 51, 56, 9, 97, 102, 105, 105, 49, 48, 48, 51, 57, 9, 97, 102, 105,
-<a name="l13880"></a>13880 105, 49, 48, 48, 52, 48, 9, 97, 102, 105, 105, 49, 48, 48, 52, 49, 9, 97, 102, 105, 105, 49, 48, 48, 52,
-<a name="l13881"></a>13881 50, 9, 97, 102, 105, 105, 49, 48, 48, 52, 51, 9, 97, 102, 105, 105, 49, 48, 48, 52, 52, 9, 97, 102, 105,
-<a name="l13882"></a>13882 105, 49, 48, 48, 52, 53, 9, 97, 102, 105, 105, 49, 48, 48, 52, 54, 9, 97, 102, 105, 105, 49, 48, 48, 52,
-<a name="l13883"></a>13883 55, 9, 97, 102, 105, 105, 49, 48, 48, 52, 56, 9, 97, 102, 105, 105, 49, 48, 48, 52, 57, 9, 97, 102, 105,
-<a name="l13884"></a>13884 105, 49, 48, 48, 54, 53, 9, 97, 102, 105, 105, 49, 48, 48, 54, 54, 9, 97, 102, 105, 105, 49, 48, 48, 54,
-<a name="l13885"></a>13885 55, 9, 97, 102, 105, 105, 49, 48, 48, 54, 56, 9, 97, 102, 105, 105, 49, 48, 48, 54, 57, 9, 97, 102, 105,
-<a name="l13886"></a>13886 105, 49, 48, 48, 55, 48, 9, 97, 102, 105, 105, 49, 48, 48, 55, 50, 9, 97, 102, 105, 105, 49, 48, 48, 55,
-<a name="l13887"></a>13887 51, 9, 97, 102, 105, 105, 49, 48, 48, 55, 52, 9, 97, 102, 105, 105, 49, 48, 48, 55, 53, 9, 97, 102, 105,
-<a name="l13888"></a>13888 105, 49, 48, 48, 55, 54, 9, 97, 102, 105, 105, 49, 48, 48, 55, 55, 9, 97, 102, 105, 105, 49, 48, 48, 55,
-<a name="l13889"></a>13889 56, 9, 97, 102, 105, 105, 49, 48, 48, 55, 57, 9, 97, 102, 105, 105, 49, 48, 48, 56, 48, 9, 97, 102, 105,
-<a name="l13890"></a>13890 105, 49, 48, 48, 56, 49, 9, 97, 102, 105, 105, 49, 48, 48, 56, 50, 9, 97, 102, 105, 105, 49, 48, 48, 56,
-<a name="l13891"></a>13891 51, 9, 97, 102, 105, 105, 49, 48, 48, 56, 52, 9, 97, 102, 105, 105, 49, 48, 48, 56, 53, 9, 97, 102, 105,
-<a name="l13892"></a>13892 105, 49, 48, 48, 56, 54, 9, 97, 102, 105, 105, 49, 48, 48, 56, 55, 9, 97, 102, 105, 105, 49, 48, 48, 56,
-<a name="l13893"></a>13893 56, 9, 97, 102, 105, 105, 49, 48, 48, 56, 57, 9, 97, 102, 105, 105, 49, 48, 48, 57, 48, 9, 97, 102, 105,
-<a name="l13894"></a>13894 105, 49, 48, 48, 57, 49, 9, 97, 102, 105, 105, 49, 48, 48, 57, 50, 9, 97, 102, 105, 105, 49, 48, 48, 57,
-<a name="l13895"></a>13895 51, 9, 97, 102, 105, 105, 49, 48, 48, 57, 52, 9, 97, 102, 105, 105, 49, 48, 48, 57, 53, 9, 97, 102, 105,
-<a name="l13896"></a>13896 105, 49, 48, 48, 57, 54, 9, 97, 102, 105, 105, 49, 48, 48, 57, 55, 9, 97, 102, 105, 105, 49, 48, 48, 55,
-<a name="l13897"></a>13897 49, 9, 97, 102, 105, 105, 49, 48, 48, 57, 57, 9, 97, 102, 105, 105, 49, 48, 49, 48, 48, 9, 97, 102, 105,
-<a name="l13898"></a>13898 105, 49, 48, 49, 48, 49, 9, 97, 102, 105, 105, 49, 48, 49, 48, 50, 9, 97, 102, 105, 105, 49, 48, 49, 48,
-<a name="l13899"></a>13899 51, 9, 97, 102, 105, 105, 49, 48, 49, 48, 52, 9, 97, 102, 105, 105, 49, 48, 49, 48, 53, 9, 97, 102, 105,
-<a name="l13900"></a>13900 105, 49, 48, 49, 48, 54, 9, 97, 102, 105, 105, 49, 48, 49, 48, 55, 9, 97, 102, 105, 105, 49, 48, 49, 48,
-<a name="l13901"></a>13901 56, 9, 97, 102, 105, 105, 49, 48, 49, 48, 57, 9, 97, 102, 105, 105, 49, 48, 49, 49, 48, 9, 97, 102, 105,
-<a name="l13902"></a>13902 105, 49, 48, 49, 57, 51, 9, 97, 102, 105, 105, 49, 48, 48, 53, 48, 9, 97, 102, 105, 105, 49, 48, 48, 57,
-<a name="l13903"></a>13903 56, 9, 97, 102, 105, 105, 48, 48, 50, 48, 56, 9, 97, 102, 105, 105, 54, 49, 51, 53, 50, 5, 115, 104, 101,
-<a name="l13904"></a>13904 118, 97, 10, 104, 97, 116, 97, 102, 115, 101, 103, 111, 108, 10, 104, 97, 116, 97, 102, 112, 97, 116, 97, 104, 11,
-<a name="l13905"></a>13905 104, 97, 116, 97, 102, 113, 97, 109, 97, 116, 115, 5, 104, 105, 114, 105, 113, 5, 116, 115, 101, 114, 101, 5, 115,
-<a name="l13906"></a>13906 101, 103, 111, 108, 5, 112, 97, 116, 97, 104, 6, 113, 97, 109, 97, 116, 115, 5, 104, 111, 108, 97, 109, 6, 113,
-<a name="l13907"></a>13907 117, 98, 117, 116, 115, 6, 100, 97, 103, 101, 115, 104, 5, 109, 101, 116, 101, 103, 5, 109, 97, 113, 97, 102, 4,
-<a name="l13908"></a>13908 114, 97, 102, 101, 5, 112, 97, 115, 101, 113, 7, 115, 104, 105, 110, 100, 111, 116, 6, 115, 105, 110, 100, 111, 116,
-<a name="l13909"></a>13909 8, 115, 111, 102, 112, 97, 115, 117, 113, 4, 97, 108, 101, 102, 3, 98, 101, 116, 5, 103, 105, 109, 101, 108, 5,
-<a name="l13910"></a>13910 100, 97, 108, 101, 116, 2, 104, 101, 3, 118, 97, 118, 5, 122, 97, 121, 105, 110, 3, 104, 101, 116, 3, 116, 101,
-<a name="l13911"></a>13911 116, 3, 121, 111, 100, 8, 102, 105, 110, 97, 108, 107, 97, 102, 3, 107, 97, 102, 5, 108, 97, 109, 101, 100, 8,
-<a name="l13912"></a>13912 102, 105, 110, 97, 108, 109, 101, 109, 3, 109, 101, 109, 8, 102, 105, 110, 97, 108, 110, 117, 110, 3, 110, 117, 110,
-<a name="l13913"></a>13913 6, 115, 97, 109, 101, 107, 104, 4, 97, 121, 105, 110, 7, 102, 105, 110, 97, 108, 112, 101, 2, 112, 101, 10, 102,
-<a name="l13914"></a>13914 105, 110, 97, 108, 116, 115, 97, 100, 105, 5, 116, 115, 97, 100, 105, 3, 113, 111, 102, 4, 114, 101, 115, 104, 4,
-<a name="l13915"></a>13915 115, 104, 105, 110, 3, 116, 97, 118, 9, 100, 111, 117, 98, 108, 101, 118, 97, 118, 6, 118, 97, 118, 121, 111, 100,
-<a name="l13916"></a>13916 9, 100, 111, 117, 98, 108, 101, 121, 111, 100, 6, 103, 101, 114, 101, 115, 104, 9, 103, 101, 114, 115, 104, 97, 121,
-<a name="l13917"></a>13917 105, 109, 13, 110, 101, 119, 115, 104, 101, 113, 101, 108, 115, 105, 103, 110, 10, 118, 97, 118, 115, 104, 105, 110, 100,
-<a name="l13918"></a>13918 111, 116, 13, 102, 105, 110, 97, 108, 107, 97, 102, 115, 104, 101, 118, 97, 14, 102, 105, 110, 97, 108, 107, 97, 102,
-<a name="l13919"></a>13919 113, 97, 109, 97, 116, 115, 10, 108, 97, 109, 101, 100, 104, 111, 108, 97, 109, 16, 108, 97, 109, 101, 100, 104, 111,
-<a name="l13920"></a>13920 108, 97, 109, 100, 97, 103, 101, 115, 104, 7, 97, 108, 116, 97, 121, 105, 110, 11, 115, 104, 105, 110, 115, 104, 105,
-<a name="l13921"></a>13921 110, 100, 111, 116, 10, 115, 104, 105, 110, 115, 105, 110, 100, 111, 116, 17, 115, 104, 105, 110, 100, 97, 103, 101, 115,
-<a name="l13922"></a>13922 104, 115, 104, 105, 110, 100, 111, 116, 16, 115, 104, 105, 110, 100, 97, 103, 101, 115, 104, 115, 105, 110, 100, 111, 116,
-<a name="l13923"></a>13923 9, 97, 108, 101, 102, 112, 97, 116, 97, 104, 10, 97, 108, 101, 102, 113, 97, 109, 97, 116, 115, 9, 97, 108, 101,
-<a name="l13924"></a>13924 102, 109, 97, 112, 105, 113, 9, 98, 101, 116, 100, 97, 103, 101, 115, 104, 11, 103, 105, 109, 101, 108, 100, 97, 103,
-<a name="l13925"></a>13925 101, 115, 104, 11, 100, 97, 108, 101, 116, 100, 97, 103, 101, 115, 104, 8, 104, 101, 100, 97, 103, 101, 115, 104, 9,
-<a name="l13926"></a>13926 118, 97, 118, 100, 97, 103, 101, 115, 104, 11, 122, 97, 121, 105, 110, 100, 97, 103, 101, 115, 104, 9, 116, 101, 116,
-<a name="l13927"></a>13927 100, 97, 103, 101, 115, 104, 9, 121, 111, 100, 100, 97, 103, 101, 115, 104, 14, 102, 105, 110, 97, 108, 107, 97, 102,
-<a name="l13928"></a>13928 100, 97, 103, 101, 115, 104, 9, 107, 97, 102, 100, 97, 103, 101, 115, 104, 11, 108, 97, 109, 101, 100, 100, 97, 103,
-<a name="l13929"></a>13929 101, 115, 104, 9, 109, 101, 109, 100, 97, 103, 101, 115, 104, 9, 110, 117, 110, 100, 97, 103, 101, 115, 104, 12, 115,
-<a name="l13930"></a>13930 97, 109, 101, 107, 104, 100, 97, 103, 101, 115, 104, 13, 102, 105, 110, 97, 108, 112, 101, 100, 97, 103, 101, 115, 104,
-<a name="l13931"></a>13931 8, 112, 101, 100, 97, 103, 101, 115, 104, 11, 116, 115, 97, 100, 105, 100, 97, 103, 101, 115, 104, 9, 113, 111, 102,
-<a name="l13932"></a>13932 100, 97, 103, 101, 115, 104, 10, 114, 101, 115, 104, 100, 97, 103, 101, 115, 104, 10, 115, 104, 105, 110, 100, 97, 103,
-<a name="l13933"></a>13933 101, 115, 104, 8, 116, 97, 118, 100, 97, 103, 101, 115, 8, 118, 97, 118, 104, 111, 108, 97, 109, 7, 98, 101, 116,
-<a name="l13934"></a>13934 114, 97, 102, 101, 7, 107, 97, 102, 114, 97, 102, 101, 6, 112, 101, 114, 97, 102, 101, 9, 97, 108, 101, 102, 108,
-<a name="l13935"></a>13935 97, 109, 101, 100, 18, 122, 101, 114, 111, 119, 105, 100, 116, 104, 110, 111, 110, 106, 111, 105, 110, 101, 114, 15, 122,
-<a name="l13936"></a>13936 101, 114, 111, 119, 105, 100, 116, 104, 106, 111, 105, 110, 101, 114, 15, 108, 101, 102, 116, 116, 111, 114, 105, 103, 104,
-<a name="l13937"></a>13937 116, 109, 97, 114, 107, 15, 114, 105, 103, 104, 116, 116, 111, 108, 101, 102, 116, 109, 97, 114, 107, 9, 97, 102, 105,
-<a name="l13938"></a>13938 105, 53, 55, 51, 56, 56, 9, 97, 102, 105, 105, 53, 55, 52, 48, 51, 9, 97, 102, 105, 105, 53, 55, 52, 48,
-<a name="l13939"></a>13939 55, 9, 97, 102, 105, 105, 53, 55, 52, 48, 57, 9, 97, 102, 105, 105, 53, 55, 52, 52, 48, 9, 97, 102, 105,
-<a name="l13940"></a>13940 105, 53, 55, 52, 53, 49, 9, 97, 102, 105, 105, 53, 55, 52, 53, 50, 9, 97, 102, 105, 105, 53, 55, 52, 53,
-<a name="l13941"></a>13941 51, 9, 97, 102, 105, 105, 53, 55, 52, 53, 52, 9, 97, 102, 105, 105, 53, 55, 52, 53, 53, 9, 97, 102, 105,
-<a name="l13942"></a>13942 105, 53, 55, 52, 53, 54, 9, 97, 102, 105, 105, 53, 55, 52, 53, 55, 9, 97, 102, 105, 105, 53, 55, 52, 53,
-<a name="l13943"></a>13943 56, 9, 97, 102, 105, 105, 53, 55, 51, 57, 50, 9, 97, 102, 105, 105, 53, 55, 51, 57, 51, 9, 97, 102, 105,
-<a name="l13944"></a>13944 105, 53, 55, 51, 57, 52, 9, 97, 102, 105, 105, 53, 55, 51, 57, 53, 9, 97, 102, 105, 105, 53, 55, 51, 57,
-<a name="l13945"></a>13945 54, 9, 97, 102, 105, 105, 53, 55, 51, 57, 55, 9, 97, 102, 105, 105, 53, 55, 51, 57, 56, 9, 97, 102, 105,
-<a name="l13946"></a>13946 105, 53, 55, 51, 57, 57, 9, 97, 102, 105, 105, 53, 55, 52, 48, 48, 9, 97, 102, 105, 105, 53, 55, 52, 48,
-<a name="l13947"></a>13947 49, 9, 97, 102, 105, 105, 53, 55, 51, 56, 49, 9, 97, 102, 105, 105, 53, 55, 52, 54, 49, 9, 97, 102, 105,
-<a name="l13948"></a>13948 105, 54, 51, 49, 54, 55, 9, 97, 102, 105, 105, 53, 55, 52, 53, 57, 9, 97, 102, 105, 105, 53, 55, 53, 52,
-<a name="l13949"></a>13949 51, 9, 97, 102, 105, 105, 53, 55, 53, 51, 52, 9, 97, 102, 105, 105, 53, 55, 52, 57, 52, 9, 97, 102, 105,
-<a name="l13950"></a>13950 105, 54, 50, 56, 52, 51, 9, 97, 102, 105, 105, 54, 50, 56, 52, 52, 9, 97, 102, 105, 105, 54, 50, 56, 52,
-<a name="l13951"></a>13951 53, 9, 97, 102, 105, 105, 54, 52, 50, 52, 48, 9, 97, 102, 105, 105, 54, 52, 50, 52, 49, 9, 97, 102, 105,
-<a name="l13952"></a>13952 105, 54, 51, 57, 53, 52, 9, 97, 102, 105, 105, 53, 55, 51, 56, 50, 9, 97, 102, 105, 105, 54, 52, 50, 52,
-<a name="l13953"></a>13953 50, 9, 97, 102, 105, 105, 54, 50, 56, 56, 49, 9, 97, 102, 105, 105, 53, 55, 53, 48, 52, 9, 97, 102, 105,
-<a name="l13954"></a>13954 105, 53, 55, 51, 54, 57, 9, 97, 102, 105, 105, 53, 55, 51, 55, 48, 9, 97, 102, 105, 105, 53, 55, 51, 55,
-<a name="l13955"></a>13955 49, 9, 97, 102, 105, 105, 53, 55, 51, 55, 50, 9, 97, 102, 105, 105, 53, 55, 51, 55, 51, 9, 97, 102, 105,
-<a name="l13956"></a>13956 105, 53, 55, 51, 55, 52, 9, 97, 102, 105, 105, 53, 55, 51, 55, 53, 9, 97, 102, 105, 105, 53, 55, 51, 57,
-<a name="l13957"></a>13957 49, 9, 97, 102, 105, 105, 53, 55, 52, 55, 49, 9, 97, 102, 105, 105, 53, 55, 52, 54, 48, 9, 97, 102, 105,
-<a name="l13958"></a>13958 105, 53, 50, 50, 53, 56, 9, 97, 102, 105, 105, 53, 55, 53, 48, 54, 9, 97, 102, 105, 105, 54, 50, 57, 53,
-<a name="l13959"></a>13959 56, 9, 97, 102, 105, 105, 54, 50, 57, 53, 54, 9, 97, 102, 105, 105, 53, 50, 57, 53, 55, 9, 97, 102, 105,
-<a name="l13960"></a>13960 105, 53, 55, 53, 48, 53, 9, 97, 102, 105, 105, 54, 50, 56, 56, 57, 9, 97, 102, 105, 105, 54, 50, 56, 56,
-<a name="l13961"></a>13961 55, 9, 97, 102, 105, 105, 54, 50, 56, 56, 56, 9, 97, 102, 105, 105, 53, 55, 53, 48, 55, 9, 97, 102, 105,
-<a name="l13962"></a>13962 105, 54, 50, 57, 54, 49, 9, 97, 102, 105, 105, 54, 50, 57, 53, 57, 9, 97, 102, 105, 105, 54, 50, 57, 54,
-<a name="l13963"></a>13963 48, 9, 97, 102, 105, 105, 53, 55, 53, 48, 56, 9, 97, 102, 105, 105, 54, 50, 57, 54, 50, 9, 97, 102, 105,
-<a name="l13964"></a>13964 105, 53, 55, 53, 54, 55, 9, 97, 102, 105, 105, 54, 50, 57, 54, 52, 9, 97, 102, 105, 105, 53, 50, 51, 48,
-<a name="l13965"></a>13965 53, 9, 97, 102, 105, 105, 53, 50, 51, 48, 54, 9, 97, 102, 105, 105, 53, 55, 53, 48, 57, 9, 97, 102, 105,
-<a name="l13966"></a>13966 105, 54, 50, 57, 54, 55, 9, 97, 102, 105, 105, 54, 50, 57, 54, 53, 9, 97, 102, 105, 105, 54, 50, 57, 54,
-<a name="l13967"></a>13967 54, 9, 97, 102, 105, 105, 53, 55, 53, 53, 53, 9, 97, 102, 105, 105, 53, 50, 51, 54, 52, 9, 97, 102, 105,
-<a name="l13968"></a>13968 105, 54, 51, 55, 53, 51, 9, 97, 102, 105, 105, 54, 51, 55, 53, 52, 9, 97, 102, 105, 105, 54, 51, 55, 53,
-<a name="l13969"></a>13969 57, 9, 97, 102, 105, 105, 54, 51, 55, 54, 51, 9, 97, 102, 105, 105, 54, 51, 55, 57, 53, 9, 97, 102, 105,
-<a name="l13970"></a>13970 105, 54, 50, 56, 57, 49, 9, 97, 102, 105, 105, 54, 51, 56, 48, 56, 9, 97, 102, 105, 105, 54, 50, 57, 51,
-<a name="l13971"></a>13971 56, 9, 97, 102, 105, 105, 54, 51, 56, 49, 48, 9, 97, 102, 105, 105, 54, 50, 57, 52, 50, 9, 97, 102, 105,
-<a name="l13972"></a>13972 105, 54, 50, 57, 52, 55, 9, 97, 102, 105, 105, 54, 51, 56, 49, 51, 9, 97, 102, 105, 105, 54, 51, 56, 50,
-<a name="l13973"></a>13973 51, 9, 97, 102, 105, 105, 54, 51, 56, 50, 52, 9, 97, 102, 105, 105, 54, 51, 56, 51, 51, 9, 97, 102, 105,
-<a name="l13974"></a>13974 105, 54, 51, 56, 52, 52, 9, 97, 102, 105, 105, 54, 50, 56, 56, 50, 9, 97, 102, 105, 105, 54, 50, 56, 56,
-<a name="l13975"></a>13975 51, 9, 97, 102, 105, 105, 54, 50, 56, 56, 52, 9, 97, 102, 105, 105, 54, 50, 56, 56, 53, 9, 97, 102, 105,
-<a name="l13976"></a>13976 105, 54, 50, 56, 56, 54, 9, 97, 102, 105, 105, 54, 51, 56, 52, 54, 9, 97, 102, 105, 105, 54, 51, 56, 52,
-<a name="l13977"></a>13977 57, 7, 117, 110, 105, 50, 48, 50, 65, 7, 117, 110, 105, 50, 48, 50, 66, 7, 117, 110, 105, 50, 48, 50, 68,
-<a name="l13978"></a>13978 7, 117, 110, 105, 50, 48, 50, 69, 7, 117, 110, 105, 50, 48, 50, 67, 7, 117, 110, 105, 50, 48, 54, 69, 8,
-<a name="l13979"></a>13979 117, 110, 105, 50, 48, 54, 70, 59, 7, 117, 110, 105, 50, 48, 54, 65, 7, 117, 110, 105, 50, 48, 54, 66, 8,
-<a name="l13980"></a>13980 117, 110, 105, 50, 48, 54, 67, 59, 7, 117, 110, 105, 50, 48, 54, 68, 7, 117, 110, 105, 70, 48, 48, 65, 7,
-<a name="l13981"></a>13981 117, 110, 105, 70, 48, 48, 66, 7, 117, 110, 105, 70, 48, 48, 67, 7, 117, 110, 105, 70, 48, 48, 68, 7, 117,
-<a name="l13982"></a>13982 110, 105, 70, 48, 48, 69, 7, 117, 110, 105, 70, 70, 70, 67, 9, 97, 102, 105, 105, 54, 51, 57, 48, 52, 9,
-<a name="l13983"></a>13983 97, 102, 105, 105, 54, 51, 57, 48, 53, 9, 97, 102, 105, 105, 54, 51, 57, 48, 54, 9, 97, 102, 105, 105, 54,
-<a name="l13984"></a>13984 51, 57, 48, 56, 9, 97, 102, 105, 105, 54, 51, 57, 49, 48, 9, 97, 102, 105, 105, 54, 51, 57, 49, 50, 9,
-<a name="l13985"></a>13985 97, 102, 105, 105, 54, 50, 57, 50, 55, 9, 97, 102, 105, 105, 54, 51, 57, 52, 49, 9, 97, 102, 105, 105, 54,
-<a name="l13986"></a>13986 50, 57, 51, 57, 9, 97, 102, 105, 105, 54, 51, 57, 52, 51, 9, 97, 102, 105, 105, 54, 50, 57, 52, 51, 9,
-<a name="l13987"></a>13987 97, 102, 105, 105, 54, 50, 57, 52, 54, 9, 97, 102, 105, 105, 54, 51, 57, 52, 54, 9, 97, 102, 105, 105, 54,
-<a name="l13988"></a>13988 50, 57, 53, 49, 9, 97, 102, 105, 105, 54, 51, 57, 52, 56, 9, 97, 102, 105, 105, 54, 50, 57, 53, 51, 9,
-<a name="l13989"></a>13989 97, 102, 105, 105, 54, 51, 57, 53, 48, 9, 97, 102, 105, 105, 54, 51, 57, 53, 49, 9, 97, 102, 105, 105, 54,
-<a name="l13990"></a>13990 51, 57, 53, 50, 9, 97, 102, 105, 105, 54, 51, 57, 53, 51, 9, 97, 102, 105, 105, 54, 51, 57, 53, 54, 9,
-<a name="l13991"></a>13991 97, 102, 105, 105, 54, 51, 57, 53, 56, 9, 97, 102, 105, 105, 54, 51, 57, 53, 57, 9, 97, 102, 105, 105, 54,
-<a name="l13992"></a>13992 51, 57, 54, 48, 9, 97, 102, 105, 105, 54, 51, 57, 54, 49, 9, 97, 102, 105, 105, 54, 52, 48, 52, 54, 9,
-<a name="l13993"></a>13993 97, 102, 105, 105, 54, 52, 48, 53, 56, 9, 97, 102, 105, 105, 54, 52, 48, 53, 57, 9, 97, 102, 105, 105, 54,
-<a name="l13994"></a>13994 52, 48, 54, 48, 9, 97, 102, 105, 105, 54, 52, 48, 54, 49, 9, 97, 102, 105, 105, 54, 50, 57, 52, 53, 9,
-<a name="l13995"></a>13995 97, 102, 105, 105, 54, 52, 49, 56, 52, 9, 97, 102, 105, 105, 53, 50, 51, 57, 57, 9, 97, 102, 105, 105, 53,
-<a name="l13996"></a>13996 50, 52, 48, 48, 9, 97, 102, 105, 105, 54, 50, 55, 53, 51, 9, 97, 102, 105, 105, 53, 55, 52, 49, 49, 9,
-<a name="l13997"></a>13997 97, 102, 105, 105, 54, 50, 55, 53, 52, 9, 97, 102, 105, 105, 53, 55, 52, 49, 50, 9, 97, 102, 105, 105, 54,
-<a name="l13998"></a>13998 50, 55, 53, 53, 9, 97, 102, 105, 105, 53, 55, 52, 49, 51, 9, 97, 102, 105, 105, 54, 50, 55, 53, 54, 9,
-<a name="l13999"></a>13999 97, 102, 105, 105, 53, 55, 52, 49, 52, 9, 97, 102, 105, 105, 54, 50, 55, 53, 57, 9, 97, 102, 105, 105, 54,
-<a name="l14000"></a>14000 50, 55, 53, 55, 9, 97, 102, 105, 105, 54, 50, 55, 53, 56, 9, 97, 102, 105, 105, 53, 55, 52, 49, 53, 9,
-<a name="l14001"></a>14001 97, 102, 105, 105, 54, 50, 55, 54, 48, 9, 97, 102, 105, 105, 53, 55, 52, 49, 54, 9, 97, 102, 105, 105, 54,
-<a name="l14002"></a>14002 50, 55, 54, 51, 9, 97, 102, 105, 105, 54, 50, 55, 54, 49, 9, 97, 102, 105, 105, 54, 50, 55, 54, 50, 9,
-<a name="l14003"></a>14003 97, 102, 105, 105, 53, 55, 52, 49, 55, 9, 97, 102, 105, 105, 54, 50, 55, 54, 52, 9, 97, 102, 105, 105, 53,
-<a name="l14004"></a>14004 55, 52, 49, 56, 9, 97, 102, 105, 105, 54, 50, 55, 54, 55, 9, 97, 102, 105, 105, 54, 50, 55, 54, 53, 9,
-<a name="l14005"></a>14005 97, 102, 105, 105, 54, 50, 55, 54, 54, 9, 97, 102, 105, 105, 53, 55, 52, 49, 57, 9, 97, 102, 105, 105, 54,
-<a name="l14006"></a>14006 50, 55, 55, 48, 9, 97, 102, 105, 105, 54, 50, 55, 54, 56, 9, 97, 102, 105, 105, 54, 50, 55, 54, 57, 9,
-<a name="l14007"></a>14007 97, 102, 105, 105, 53, 55, 52, 50, 48, 9, 97, 102, 105, 105, 54, 50, 55, 55, 51, 9, 97, 102, 105, 105, 54,
-<a name="l14008"></a>14008 50, 55, 55, 49, 9, 97, 102, 105, 105, 54, 50, 55, 55, 50, 9, 97, 102, 105, 105, 53, 55, 52, 50, 49, 9,
-<a name="l14009"></a>14009 97, 102, 105, 105, 54, 50, 55, 55, 54, 9, 97, 102, 105, 105, 54, 50, 55, 55, 52, 9, 97, 102, 105, 105, 54,
-<a name="l14010"></a>14010 50, 55, 55, 53, 9, 97, 102, 105, 105, 53, 55, 52, 50, 50, 9, 97, 102, 105, 105, 54, 50, 55, 55, 57, 9,
-<a name="l14011"></a>14011 97, 102, 105, 105, 54, 50, 55, 55, 55, 9, 97, 102, 105, 105, 54, 50, 55, 55, 56, 9, 97, 102, 105, 105, 53,
-<a name="l14012"></a>14012 55, 52, 50, 51, 9, 97, 102, 105, 105, 54, 50, 55, 56, 48, 9, 97, 102, 105, 105, 53, 55, 52, 50, 52, 9,
-<a name="l14013"></a>14013 97, 102, 105, 105, 54, 50, 55, 56, 49, 9, 97, 102, 105, 105, 53, 55, 52, 50, 53, 9, 97, 102, 105, 105, 54,
-<a name="l14014"></a>14014 50, 55, 56, 50, 9, 97, 102, 105, 105, 53, 55, 52, 50, 54, 9, 97, 102, 105, 105, 54, 50, 55, 56, 51, 9,
-<a name="l14015"></a>14015 97, 102, 105, 105, 53, 55, 52, 50, 55, 9, 97, 102, 105, 105, 54, 50, 55, 56, 54, 9, 97, 102, 105, 105, 54,
-<a name="l14016"></a>14016 50, 55, 56, 52, 9, 97, 102, 105, 105, 54, 50, 55, 56, 53, 9, 97, 102, 105, 105, 53, 55, 52, 50, 56, 9,
-<a name="l14017"></a>14017 97, 102, 105, 105, 54, 50, 55, 56, 57, 9, 97, 102, 105, 105, 54, 50, 55, 56, 55, 9, 97, 102, 105, 105, 54,
-<a name="l14018"></a>14018 50, 55, 56, 56, 9, 97, 102, 105, 105, 53, 55, 52, 50, 57, 9, 97, 102, 105, 105, 54, 50, 55, 57, 50, 9,
-<a name="l14019"></a>14019 97, 102, 105, 105, 54, 50, 55, 57, 48, 9, 97, 102, 105, 105, 54, 50, 55, 57, 49, 9, 97, 102, 105, 105, 53,
-<a name="l14020"></a>14020 55, 52, 51, 48, 9, 97, 102, 105, 105, 54, 50, 55, 57, 53, 9, 97, 102, 105, 105, 54, 50, 55, 57, 51, 9,
-<a name="l14021"></a>14021 97, 102, 105, 105, 54, 50, 55, 57, 52, 9, 97, 102, 105, 105, 53, 55, 52, 51, 49, 9, 97, 102, 105, 105, 54,
-<a name="l14022"></a>14022 50, 55, 57, 56, 9, 97, 102, 105, 105, 54, 50, 55, 57, 54, 9, 97, 102, 105, 105, 54, 50, 55, 57, 55, 9,
-<a name="l14023"></a>14023 97, 102, 105, 105, 53, 55, 52, 51, 50, 9, 97, 102, 105, 105, 54, 50, 56, 48, 49, 9, 97, 102, 105, 105, 54,
-<a name="l14024"></a>14024 50, 55, 57, 57, 9, 97, 102, 105, 105, 54, 50, 56, 48, 48, 9, 97, 102, 105, 105, 53, 55, 52, 51, 51, 9,
-<a name="l14025"></a>14025 97, 102, 105, 105, 54, 50, 56, 48, 52, 9, 97, 102, 105, 105, 54, 50, 56, 48, 50, 9, 97, 102, 105, 105, 54,
-<a name="l14026"></a>14026 50, 56, 48, 51, 9, 97, 102, 105, 105, 53, 55, 52, 51, 52, 9, 97, 102, 105, 105, 54, 50, 56, 48, 55, 9,
-<a name="l14027"></a>14027 97, 102, 105, 105, 54, 50, 56, 48, 53, 9, 97, 102, 105, 105, 54, 50, 56, 48, 54, 9, 97, 102, 105, 105, 53,
-<a name="l14028"></a>14028 55, 52, 52, 49, 9, 97, 102, 105, 105, 54, 50, 56, 49, 48, 9, 97, 102, 105, 105, 54, 50, 56, 48, 56, 9,
-<a name="l14029"></a>14029 97, 102, 105, 105, 54, 50, 56, 48, 57, 9, 97, 102, 105, 105, 53, 55, 52, 52, 50, 9, 97, 102, 105, 105, 54,
-<a name="l14030"></a>14030 50, 56, 49, 51, 9, 97, 102, 105, 105, 54, 50, 56, 49, 49, 9, 97, 102, 105, 105, 54, 50, 56, 49, 50, 9,
-<a name="l14031"></a>14031 97, 102, 105, 105, 53, 55, 52, 52, 51, 9, 97, 102, 105, 105, 54, 50, 56, 49, 54, 9, 97, 102, 105, 105, 53,
-<a name="l14032"></a>14032 55, 52, 49, 48, 9, 97, 102, 105, 105, 54, 50, 56, 49, 53, 9, 97, 102, 105, 105, 53, 55, 52, 52, 52, 9,
-<a name="l14033"></a>14033 97, 102, 105, 105, 54, 50, 56, 49, 57, 9, 97, 102, 105, 105, 54, 50, 56, 49, 55, 9, 97, 102, 105, 105, 54,
-<a name="l14034"></a>14034 50, 56, 49, 56, 9, 97, 102, 105, 105, 53, 55, 52, 52, 53, 9, 97, 102, 105, 105, 54, 50, 56, 50, 50, 9,
-<a name="l14035"></a>14035 97, 102, 105, 105, 54, 50, 56, 50, 48, 9, 97, 102, 105, 105, 54, 50, 56, 50, 49, 9, 97, 102, 105, 105, 53,
-<a name="l14036"></a>14036 55, 52, 52, 54, 9, 97, 102, 105, 105, 54, 50, 56, 50, 53, 9, 97, 102, 105, 105, 54, 50, 56, 50, 51, 9,
-<a name="l14037"></a>14037 97, 102, 105, 105, 54, 50, 56, 50, 52, 9, 97, 102, 105, 105, 53, 55, 52, 52, 55, 9, 97, 102, 105, 105, 54,
-<a name="l14038"></a>14038 50, 56, 50, 56, 9, 97, 102, 105, 105, 53, 55, 52, 55, 48, 9, 97, 102, 105, 105, 54, 50, 56, 50, 55, 9,
-<a name="l14039"></a>14039 97, 102, 105, 105, 53, 55, 52, 52, 56, 9, 97, 102, 105, 105, 54, 50, 56, 50, 57, 9, 97, 102, 105, 105, 53,
-<a name="l14040"></a>14040 55, 52, 52, 57, 9, 97, 102, 105, 105, 54, 50, 56, 51, 48, 9, 97, 102, 105, 105, 53, 55, 52, 53, 48, 9,
-<a name="l14041"></a>14041 97, 102, 105, 105, 54, 50, 56, 51, 51, 9, 97, 102, 105, 105, 54, 50, 56, 51, 49, 9, 97, 102, 105, 105, 54,
-<a name="l14042"></a>14042 50, 56, 51, 50, 9, 97, 102, 105, 105, 54, 50, 56, 51, 52, 9, 97, 102, 105, 105, 54, 50, 56, 51, 53, 9,
-<a name="l14043"></a>14043 97, 102, 105, 105, 54, 50, 56, 51, 54, 9, 97, 102, 105, 105, 54, 50, 56, 51, 55, 9, 97, 102, 105, 105, 54,
-<a name="l14044"></a>14044 50, 56, 51, 56, 9, 97, 102, 105, 105, 54, 50, 56, 51, 57, 9, 97, 102, 105, 105, 54, 50, 56, 52, 48, 9,
-<a name="l14045"></a>14045 97, 102, 105, 105, 54, 50, 56, 52, 49, 9, 103, 108, 121, 112, 104, 49, 48, 50, 49, 11, 97, 102, 105, 105, 53,
-<a name="l14046"></a>14046 55, 53, 52, 51, 45, 50, 11, 97, 102, 105, 105, 53, 55, 52, 53, 52, 45, 50, 11, 97, 102, 105, 105, 53, 55,
-<a name="l14047"></a>14047 52, 53, 49, 45, 50, 9, 103, 108, 121, 112, 104, 49, 48, 50, 53, 9, 103, 108, 121, 112, 104, 49, 48, 50, 54,
-<a name="l14048"></a>14048 11, 97, 102, 105, 105, 53, 55, 52, 55, 49, 45, 50, 11, 97, 102, 105, 105, 53, 55, 52, 53, 56, 45, 50, 11,
-<a name="l14049"></a>14049 97, 102, 105, 105, 53, 55, 52, 53, 55, 45, 50, 11, 97, 102, 105, 105, 53, 55, 52, 57, 52, 45, 50, 11, 97,
-<a name="l14050"></a>14050 102, 105, 105, 53, 55, 52, 53, 57, 45, 50, 11, 97, 102, 105, 105, 53, 55, 52, 53, 53, 45, 50, 11, 97, 102,
-<a name="l14051"></a>14051 105, 105, 53, 55, 52, 53, 50, 45, 50, 9, 103, 108, 121, 112, 104, 49, 48, 51, 52, 9, 103, 108, 121, 112, 104,
-<a name="l14052"></a>14052 49, 48, 51, 53, 9, 103, 108, 121, 112, 104, 49, 48, 51, 54, 11, 97, 102, 105, 105, 54, 50, 56, 56, 52, 45,
-<a name="l14053"></a>14053 50, 11, 97, 102, 105, 105, 54, 50, 56, 56, 49, 45, 50, 11, 97, 102, 105, 105, 54, 50, 56, 56, 54, 45, 50,
-<a name="l14054"></a>14054 11, 97, 102, 105, 105, 54, 50, 56, 56, 51, 45, 50, 11, 97, 102, 105, 105, 54, 50, 56, 56, 53, 45, 50, 11,
-<a name="l14055"></a>14055 97, 102, 105, 105, 54, 50, 56, 56, 50, 45, 50, 11, 97, 102, 105, 105, 53, 55, 53, 48, 52, 45, 50, 11, 97,
-<a name="l14056"></a>14056 102, 105, 105, 53, 55, 52, 53, 54, 45, 50, 11, 97, 102, 105, 105, 53, 55, 52, 53, 51, 45, 50, 9, 103, 108,
-<a name="l14057"></a>14057 121, 112, 104, 49, 48, 52, 54, 9, 103, 108, 121, 112, 104, 49, 48, 52, 55, 11, 97, 102, 105, 105, 53, 55, 53,
-<a name="l14058"></a>14058 52, 51, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 53, 52, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 53,
-<a name="l14059"></a>14059 49, 45, 51, 9, 103, 108, 121, 112, 104, 49, 48, 53, 49, 9, 103, 108, 121, 112, 104, 49, 48, 53, 50, 11, 97,
-<a name="l14060"></a>14060 102, 105, 105, 53, 55, 52, 55, 49, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 53, 56, 45, 51, 11, 97, 102,
-<a name="l14061"></a>14061 105, 105, 53, 55, 52, 53, 55, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 57, 52, 45, 51, 11, 97, 102, 105,
-<a name="l14062"></a>14062 105, 53, 55, 52, 53, 57, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 53, 53, 45, 51, 11, 97, 102, 105, 105,
-<a name="l14063"></a>14063 53, 55, 52, 53, 50, 45, 51, 9, 103, 108, 121, 112, 104, 49, 48, 54, 48, 9, 103, 108, 121, 112, 104, 49, 48,
-<a name="l14064"></a>14064 54, 49, 9, 103, 108, 121, 112, 104, 49, 48, 54, 50, 11, 97, 102, 105, 105, 54, 50, 56, 56, 52, 45, 51, 11,
-<a name="l14065"></a>14065 97, 102, 105, 105, 54, 50, 56, 56, 49, 45, 51, 11, 97, 102, 105, 105, 54, 50, 56, 56, 54, 45, 51, 11, 97,
-<a name="l14066"></a>14066 102, 105, 105, 54, 50, 56, 56, 51, 45, 51, 11, 97, 102, 105, 105, 54, 50, 56, 56, 53, 45, 51, 11, 97, 102,
-<a name="l14067"></a>14067 105, 105, 54, 50, 56, 56, 50, 45, 51, 11, 97, 102, 105, 105, 53, 55, 53, 48, 52, 45, 51, 11, 97, 102, 105,
-<a name="l14068"></a>14068 105, 53, 55, 52, 53, 54, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 53, 51, 45, 51, 9, 103, 108, 121, 112,
-<a name="l14069"></a>14069 104, 49, 48, 55, 50, 9, 103, 108, 121, 112, 104, 49, 48, 55, 51, 11, 97, 102, 105, 105, 53, 55, 53, 52, 51,
-<a name="l14070"></a>14070 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 53, 52, 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 53, 49, 45,
-<a name="l14071"></a>14071 52, 9, 103, 108, 121, 112, 104, 49, 48, 55, 55, 9, 103, 108, 121, 112, 104, 49, 48, 55, 56, 11, 97, 102, 105,
-<a name="l14072"></a>14072 105, 53, 55, 52, 55, 49, 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 53, 56, 45, 52, 11, 97, 102, 105, 105,
-<a name="l14073"></a>14073 53, 55, 52, 53, 55, 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 57, 52, 45, 52, 11, 97, 102, 105, 105, 53,
-<a name="l14074"></a>14074 55, 52, 53, 57, 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 53, 53, 45, 52, 11, 97, 102, 105, 105, 53, 55,
-<a name="l14075"></a>14075 52, 53, 50, 45, 52, 9, 103, 108, 121, 112, 104, 49, 48, 56, 54, 9, 103, 108, 121, 112, 104, 49, 48, 56, 55,
-<a name="l14076"></a>14076 9, 103, 108, 121, 112, 104, 49, 48, 56, 56, 11, 97, 102, 105, 105, 54, 50, 56, 56, 52, 45, 52, 11, 97, 102,
-<a name="l14077"></a>14077 105, 105, 54, 50, 56, 56, 49, 45, 52, 11, 97, 102, 105, 105, 54, 50, 56, 56, 54, 45, 52, 11, 97, 102, 105,
-<a name="l14078"></a>14078 105, 54, 50, 56, 56, 51, 45, 52, 11, 97, 102, 105, 105, 54, 50, 56, 56, 53, 45, 52, 11, 97, 102, 105, 105,
-<a name="l14079"></a>14079 54, 50, 56, 56, 50, 45, 52, 11, 97, 102, 105, 105, 53, 55, 53, 48, 52, 45, 52, 11, 97, 102, 105, 105, 53,
-<a name="l14080"></a>14080 55, 52, 53, 54, 45, 52, 11, 97, 102, 105, 105, 53, 55, 52, 53, 51, 45, 52, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14081"></a>14081 48, 57, 56, 9, 103, 108, 121, 112, 104, 49, 48, 57, 57, 9, 103, 108, 121, 112, 104, 49, 49, 48, 48, 9, 103,
-<a name="l14082"></a>14082 108, 121, 112, 104, 49, 49, 48, 49, 9, 103, 108, 121, 112, 104, 49, 49, 48, 50, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14083"></a>14083 49, 48, 51, 9, 103, 108, 121, 112, 104, 49, 49, 48, 52, 9, 103, 108, 121, 112, 104, 49, 49, 48, 53, 9, 103,
-<a name="l14084"></a>14084 108, 121, 112, 104, 49, 49, 48, 54, 9, 103, 108, 121, 112, 104, 49, 49, 48, 55, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14085"></a>14085 49, 48, 56, 9, 103, 108, 121, 112, 104, 49, 49, 48, 57, 9, 103, 108, 121, 112, 104, 49, 49, 49, 48, 9, 103,
-<a name="l14086"></a>14086 108, 121, 112, 104, 49, 49, 49, 49, 9, 103, 108, 121, 112, 104, 49, 49, 49, 50, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14087"></a>14087 49, 49, 51, 9, 103, 108, 121, 112, 104, 49, 49, 49, 52, 9, 103, 108, 121, 112, 104, 49, 49, 49, 53, 9, 103,
-<a name="l14088"></a>14088 108, 121, 112, 104, 49, 49, 49, 54, 9, 103, 108, 121, 112, 104, 49, 49, 49, 55, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14089"></a>14089 49, 49, 56, 9, 103, 108, 121, 112, 104, 49, 49, 49, 57, 9, 103, 108, 121, 112, 104, 49, 49, 50, 48, 9, 103,
-<a name="l14090"></a>14090 108, 121, 112, 104, 49, 49, 50, 49, 9, 103, 108, 121, 112, 104, 49, 49, 50, 50, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14091"></a>14091 49, 50, 51, 9, 103, 108, 121, 112, 104, 49, 49, 50, 52, 9, 103, 108, 121, 112, 104, 49, 49, 50, 53, 9, 103,
-<a name="l14092"></a>14092 108, 121, 112, 104, 49, 49, 50, 54, 11, 97, 102, 105, 105, 53, 55, 52, 52, 48, 45, 50, 11, 97, 102, 105, 105,
-<a name="l14093"></a>14093 53, 55, 52, 52, 48, 45, 51, 11, 97, 102, 105, 105, 53, 55, 52, 52, 48, 45, 52, 5, 79, 104, 111, 114, 110,
-<a name="l14094"></a>14094 5, 111, 104, 111, 114, 110, 5, 85, 104, 111, 114, 110, 5, 117, 104, 111, 114, 110, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14095"></a>14095 49, 51, 52, 9, 103, 108, 121, 112, 104, 49, 49, 51, 53, 9, 103, 108, 121, 112, 104, 49, 49, 51, 54, 7, 117,
-<a name="l14096"></a>14096 110, 105, 70, 48, 48, 54, 7, 117, 110, 105, 70, 48, 48, 55, 7, 117, 110, 105, 70, 48, 48, 57, 18, 99, 111,
-<a name="l14097"></a>14097 109, 98, 105, 110, 105, 110, 103, 104, 111, 111, 107, 97, 98, 111, 118, 101, 7, 117, 110, 105, 70, 48, 49, 48, 7,
-<a name="l14098"></a>14098 117, 110, 105, 70, 48, 49, 51, 7, 117, 110, 105, 70, 48, 49, 49, 7, 117, 110, 105, 70, 48, 49, 67, 7, 117,
-<a name="l14099"></a>14099 110, 105, 70, 48, 49, 53, 20, 99, 111, 109, 98, 105, 110, 105, 110, 103, 116, 105, 108, 100, 101, 97, 99, 99, 101,
-<a name="l14100"></a>14100 110, 116, 9, 103, 108, 121, 112, 104, 49, 49, 52, 55, 9, 103, 108, 121, 112, 104, 49, 49, 52, 56, 7, 117, 110,
-<a name="l14101"></a>14101 105, 70, 48, 50, 67, 8, 100, 111, 110, 103, 115, 105, 103, 110, 8, 111, 110, 101, 116, 104, 105, 114, 100, 9, 116,
-<a name="l14102"></a>14102 119, 111, 116, 104, 105, 114, 100, 115, 7, 117, 110, 105, 70, 48, 48, 56, 9, 103, 108, 121, 112, 104, 49, 49, 53,
-<a name="l14103"></a>14103 52, 9, 103, 108, 121, 112, 104, 49, 49, 53, 53, 7, 117, 110, 105, 70, 48, 48, 70, 7, 117, 110, 105, 70, 48,
-<a name="l14104"></a>14104 49, 50, 7, 117, 110, 105, 70, 48, 49, 52, 7, 117, 110, 105, 70, 48, 49, 54, 7, 117, 110, 105, 70, 48, 49,
-<a name="l14105"></a>14105 55, 7, 117, 110, 105, 70, 48, 49, 56, 7, 117, 110, 105, 70, 48, 49, 57, 7, 117, 110, 105, 70, 48, 49, 65,
-<a name="l14106"></a>14106 7, 117, 110, 105, 70, 48, 49, 66, 7, 117, 110, 105, 70, 48, 49, 69, 7, 117, 110, 105, 70, 48, 49, 70, 7,
-<a name="l14107"></a>14107 117, 110, 105, 70, 48, 50, 48, 7, 117, 110, 105, 70, 48, 50, 49, 7, 117, 110, 105, 70, 48, 50, 50, 20, 99,
-<a name="l14108"></a>14108 111, 109, 98, 105, 110, 105, 110, 103, 103, 114, 97, 118, 101, 97, 99, 99, 101, 110, 116, 20, 99, 111, 109, 98, 105,
-<a name="l14109"></a>14109 110, 105, 110, 103, 97, 99, 117, 116, 101, 97, 99, 99, 101, 110, 116, 7, 117, 110, 105, 70, 48, 49, 68, 17, 99,
-<a name="l14110"></a>14110 111, 109, 98, 105, 110, 105, 110, 103, 100, 111, 116, 98, 101, 108, 111, 119, 7, 117, 110, 105, 70, 48, 50, 51, 7,
-<a name="l14111"></a>14111 117, 110, 105, 70, 48, 50, 57, 7, 117, 110, 105, 70, 48, 50, 65, 7, 117, 110, 105, 70, 48, 50, 66, 7, 117,
-<a name="l14112"></a>14112 110, 105, 70, 48, 50, 52, 7, 117, 110, 105, 70, 48, 50, 53, 7, 117, 110, 105, 70, 48, 50, 54, 7, 117, 110,
-<a name="l14113"></a>14113 105, 70, 48, 50, 55, 7, 117, 110, 105, 70, 48, 50, 56, 7, 117, 110, 105, 70, 48, 50, 68, 7, 117, 110, 105,
-<a name="l14114"></a>14114 70, 48, 50, 69, 7, 117, 110, 105, 70, 48, 50, 70, 7, 117, 110, 105, 70, 48, 51, 48, 7, 117, 110, 105, 70,
-<a name="l14115"></a>14115 48, 51, 49, 9, 65, 100, 111, 116, 98, 101, 108, 111, 119, 9, 97, 100, 111, 116, 98, 101, 108, 111, 119, 10, 65,
-<a name="l14116"></a>14116 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 97, 104, 111, 111, 107, 97, 98, 111, 118, 101, 16, 65, 99, 105, 114,
-<a name="l14117"></a>14117 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 16, 97, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97,
-<a name="l14118"></a>14118 99, 117, 116, 101, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 16, 97, 99, 105,
-<a name="l14119"></a>14119 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 20, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120,
-<a name="l14120"></a>14120 104, 111, 111, 107, 97, 98, 111, 118, 101, 20, 97, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107,
-<a name="l14121"></a>14121 97, 98, 111, 118, 101, 16, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 16, 97, 99,
-<a name="l14122"></a>14122 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 19, 65, 99, 105, 114, 99, 117, 109, 102, 108, 101,
-<a name="l14123"></a>14123 120, 100, 111, 116, 98, 101, 108, 111, 119, 19, 97, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 100, 111, 116, 98,
-<a name="l14124"></a>14124 101, 108, 111, 119, 11, 65, 98, 114, 101, 118, 101, 97, 99, 117, 116, 101, 11, 97, 98, 114, 101, 118, 101, 97, 99,
-<a name="l14125"></a>14125 117, 116, 101, 11, 65, 98, 114, 101, 118, 101, 103, 114, 97, 118, 101, 11, 97, 98, 114, 101, 118, 101, 103, 114, 97,
-<a name="l14126"></a>14126 118, 101, 15, 65, 98, 114, 101, 118, 101, 104, 111, 111, 107, 97, 98, 111, 118, 101, 15, 97, 98, 114, 101, 118, 101,
-<a name="l14127"></a>14127 104, 111, 111, 107, 97, 98, 111, 118, 101, 11, 65, 98, 114, 101, 118, 101, 116, 105, 108, 100, 101, 11, 97, 98, 114,
-<a name="l14128"></a>14128 101, 118, 101, 116, 105, 108, 100, 101, 14, 65, 98, 114, 101, 118, 101, 100, 111, 116, 98, 101, 108, 111, 119, 14, 97,
-<a name="l14129"></a>14129 98, 114, 101, 118, 101, 100, 111, 116, 98, 101, 108, 111, 119, 9, 69, 100, 111, 116, 98, 101, 108, 111, 119, 9, 101,
-<a name="l14130"></a>14130 100, 111, 116, 98, 101, 108, 111, 119, 10, 69, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 101, 104, 111, 111, 107,
-<a name="l14131"></a>14131 97, 98, 111, 118, 101, 6, 69, 116, 105, 108, 100, 101, 6, 101, 116, 105, 108, 100, 101, 16, 69, 99, 105, 114, 99,
-<a name="l14132"></a>14132 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 16, 101, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99,
-<a name="l14133"></a>14133 117, 116, 101, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 16, 101, 99, 105, 114,
-<a name="l14134"></a>14134 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 20, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104,
-<a name="l14135"></a>14135 111, 111, 107, 97, 98, 111, 118, 101, 20, 101, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 97,
-<a name="l14136"></a>14136 98, 111, 118, 101, 16, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 16, 101, 99, 105,
-<a name="l14137"></a>14137 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 19, 69, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120,
-<a name="l14138"></a>14138 100, 111, 116, 98, 101, 108, 111, 119, 19, 101, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 100, 111, 116, 98, 101,
-<a name="l14139"></a>14139 108, 111, 119, 10, 73, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 105, 104, 111, 111, 107, 97, 98, 111, 118, 101,
-<a name="l14140"></a>14140 9, 73, 100, 111, 116, 98, 101, 108, 111, 119, 9, 105, 100, 111, 116, 98, 101, 108, 111, 119, 9, 79, 100, 111, 116,
-<a name="l14141"></a>14141 98, 101, 108, 111, 119, 9, 111, 100, 111, 116, 98, 101, 108, 111, 119, 10, 79, 104, 111, 111, 107, 97, 98, 111, 118,
-<a name="l14142"></a>14142 101, 10, 111, 104, 111, 111, 107, 97, 98, 111, 118, 101, 16, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97,
-<a name="l14143"></a>14143 99, 117, 116, 101, 16, 111, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 97, 99, 117, 116, 101, 16, 79, 99, 105,
-<a name="l14144"></a>14144 114, 99, 117, 109, 102, 108, 101, 120, 103, 114, 97, 118, 101, 16, 111, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120,
-<a name="l14145"></a>14145 103, 114, 97, 118, 101, 20, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 97, 98, 111, 118,
-<a name="l14146"></a>14146 101, 20, 111, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 104, 111, 111, 107, 97, 98, 111, 118, 101, 16, 79, 99,
-<a name="l14147"></a>14147 105, 114, 99, 117, 109, 102, 108, 101, 120, 116, 105, 108, 100, 101, 16, 111, 99, 105, 114, 99, 117, 109, 102, 108, 101,
-<a name="l14148"></a>14148 120, 116, 105, 108, 100, 101, 19, 79, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 100, 111, 116, 98, 101, 108, 111,
-<a name="l14149"></a>14149 119, 19, 111, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 100, 111, 116, 98, 101, 108, 111, 119, 10, 79, 104, 111,
-<a name="l14150"></a>14150 114, 110, 97, 99, 117, 116, 101, 10, 111, 104, 111, 114, 110, 97, 99, 117, 116, 101, 10, 79, 104, 111, 114, 110, 103,
-<a name="l14151"></a>14151 114, 97, 118, 101, 10, 111, 104, 111, 114, 110, 103, 114, 97, 118, 101, 14, 79, 104, 111, 114, 110, 104, 111, 111, 107,
-<a name="l14152"></a>14152 97, 98, 111, 118, 101, 14, 111, 104, 111, 114, 110, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 79, 104, 111, 114,
-<a name="l14153"></a>14153 110, 116, 105, 108, 100, 101, 10, 111, 104, 111, 114, 110, 116, 105, 108, 100, 101, 13, 79, 104, 111, 114, 110, 100, 111,
-<a name="l14154"></a>14154 116, 98, 101, 108, 111, 119, 13, 111, 104, 111, 114, 110, 100, 111, 116, 98, 101, 108, 111, 119, 9, 85, 100, 111, 116,
-<a name="l14155"></a>14155 98, 101, 108, 111, 119, 9, 117, 100, 111, 116, 98, 101, 108, 111, 119, 10, 85, 104, 111, 111, 107, 97, 98, 111, 118,
-<a name="l14156"></a>14156 101, 10, 117, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 85, 104, 111, 114, 110, 97, 99, 117, 116, 101, 10, 117,
-<a name="l14157"></a>14157 104, 111, 114, 110, 97, 99, 117, 116, 101, 10, 85, 104, 111, 114, 110, 103, 114, 97, 118, 101, 10, 117, 104, 111, 114,
-<a name="l14158"></a>14158 110, 103, 114, 97, 118, 101, 14, 85, 104, 111, 114, 110, 104, 111, 111, 107, 97, 98, 111, 118, 101, 14, 117, 104, 111,
-<a name="l14159"></a>14159 114, 110, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 85, 104, 111, 114, 110, 116, 105, 108, 100, 101, 10, 117, 104,
-<a name="l14160"></a>14160 111, 114, 110, 116, 105, 108, 100, 101, 13, 85, 104, 111, 114, 110, 100, 111, 116, 98, 101, 108, 111, 119, 13, 117, 104,
-<a name="l14161"></a>14161 111, 114, 110, 100, 111, 116, 98, 101, 108, 111, 119, 9, 89, 100, 111, 116, 98, 101, 108, 111, 119, 9, 121, 100, 111,
-<a name="l14162"></a>14162 116, 98, 101, 108, 111, 119, 10, 89, 104, 111, 111, 107, 97, 98, 111, 118, 101, 10, 121, 104, 111, 111, 107, 97, 98,
-<a name="l14163"></a>14163 111, 118, 101, 6, 89, 116, 105, 108, 100, 101, 6, 121, 116, 105, 108, 100, 101, 7, 117, 110, 105, 48, 49, 67, 68,
-<a name="l14164"></a>14164 7, 117, 110, 105, 48, 49, 67, 69, 7, 117, 110, 105, 48, 49, 67, 70, 7, 117, 110, 105, 48, 49, 68, 48, 7,
-<a name="l14165"></a>14165 117, 110, 105, 48, 49, 68, 49, 7, 117, 110, 105, 48, 49, 68, 50, 7, 117, 110, 105, 48, 49, 68, 51, 7, 117,
-<a name="l14166"></a>14166 110, 105, 48, 49, 68, 52, 7, 117, 110, 105, 48, 49, 68, 53, 7, 117, 110, 105, 48, 49, 68, 54, 7, 117, 110,
-<a name="l14167"></a>14167 105, 48, 49, 68, 55, 7, 117, 110, 105, 48, 49, 68, 56, 7, 117, 110, 105, 48, 49, 68, 57, 7, 117, 110, 105,
-<a name="l14168"></a>14168 48, 49, 68, 65, 7, 117, 110, 105, 48, 49, 68, 66, 7, 117, 110, 105, 48, 49, 68, 67, 9, 103, 108, 121, 112,
-<a name="l14169"></a>14169 104, 49, 50, 57, 50, 9, 103, 108, 121, 112, 104, 49, 50, 57, 51, 9, 103, 108, 121, 112, 104, 49, 50, 57, 52,
-<a name="l14170"></a>14170 9, 103, 108, 121, 112, 104, 49, 50, 57, 53, 7, 117, 110, 105, 48, 52, 57, 50, 7, 117, 110, 105, 48, 52, 57,
-<a name="l14171"></a>14171 51, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, 52, 57, 55, 7, 117, 110, 105, 48, 52, 57, 65,
-<a name="l14172"></a>14172 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7,
-<a name="l14173"></a>14173 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, 117, 110, 105, 48, 52, 65, 69, 7, 117,
-<a name="l14174"></a>14174 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110,
-<a name="l14175"></a>14175 105, 48, 52, 66, 50, 7, 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105,
-<a name="l14176"></a>14176 48, 52, 66, 57, 7, 117, 110, 105, 48, 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48,
-<a name="l14177"></a>14177 49, 56, 70, 7, 117, 110, 105, 48, 50, 53, 57, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52,
-<a name="l14178"></a>14178 69, 57, 9, 103, 108, 121, 112, 104, 49, 51, 50, 48, 9, 103, 108, 121, 112, 104, 49, 51, 50, 49, 9, 103, 108,
-<a name="l14179"></a>14179 121, 112, 104, 49, 51, 50, 50, 9, 103, 108, 121, 112, 104, 49, 51, 50, 51, 9, 103, 108, 121, 112, 104, 49, 51,
-<a name="l14180"></a>14180 50, 52, 9, 103, 108, 121, 112, 104, 49, 51, 50, 53, 9, 103, 108, 121, 112, 104, 49, 51, 50, 54, 9, 103, 108,
-<a name="l14181"></a>14181 121, 112, 104, 49, 51, 50, 55, 9, 103, 108, 121, 112, 104, 49, 51, 50, 56, 9, 103, 108, 121, 112, 104, 49, 51,
-<a name="l14182"></a>14182 50, 57, 9, 103, 108, 121, 112, 104, 49, 51, 51, 48, 9, 103, 108, 121, 112, 104, 49, 51, 51, 49, 9, 103, 108,
-<a name="l14183"></a>14183 121, 112, 104, 49, 51, 51, 50, 9, 103, 108, 121, 112, 104, 49, 51, 51, 51, 9, 103, 108, 121, 112, 104, 49, 51,
-<a name="l14184"></a>14184 51, 52, 9, 103, 108, 121, 112, 104, 49, 51, 51, 53, 7, 117, 110, 105, 48, 54, 53, 51, 7, 117, 110, 105, 48,
-<a name="l14185"></a>14185 54, 53, 52, 7, 117, 110, 105, 48, 54, 53, 53, 7, 117, 110, 105, 48, 54, 55, 48, 7, 117, 110, 105, 48, 54,
-<a name="l14186"></a>14186 55, 49, 7, 117, 110, 105, 70, 66, 53, 49, 7, 117, 110, 105, 48, 54, 55, 50, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14187"></a>14187 51, 52, 51, 7, 117, 110, 105, 48, 54, 55, 51, 9, 103, 108, 121, 112, 104, 49, 51, 52, 53, 7, 117, 110, 105,
-<a name="l14188"></a>14188 48, 54, 55, 53, 7, 103, 108, 121, 112, 104, 52, 55, 7, 117, 110, 105, 48, 54, 55, 54, 9, 103, 108, 121, 112,
-<a name="l14189"></a>14189 104, 49, 51, 52, 57, 7, 117, 110, 105, 48, 54, 55, 55, 9, 103, 108, 121, 112, 104, 49, 51, 53, 49, 7, 117,
-<a name="l14190"></a>14190 110, 105, 48, 54, 55, 56, 5, 103, 108, 121, 112, 104, 7, 117, 110, 105, 48, 54, 55, 57, 7, 117, 110, 105, 70,
-<a name="l14191"></a>14191 66, 54, 55, 7, 117, 110, 105, 70, 66, 54, 56, 7, 117, 110, 105, 70, 66, 54, 57, 7, 117, 110, 105, 48, 54,
-<a name="l14192"></a>14192 55, 65, 7, 117, 110, 105, 70, 66, 53, 70, 7, 117, 110, 105, 70, 66, 54, 48, 7, 117, 110, 105, 70, 66, 54,
-<a name="l14193"></a>14193 49, 7, 117, 110, 105, 48, 54, 55, 66, 7, 117, 110, 105, 70, 66, 53, 51, 7, 117, 110, 105, 70, 66, 53, 52,
-<a name="l14194"></a>14194 7, 117, 110, 105, 70, 66, 53, 53, 7, 117, 110, 105, 48, 54, 55, 67, 9, 103, 108, 121, 112, 104, 49, 51, 54,
-<a name="l14195"></a>14195 55, 9, 103, 108, 121, 112, 104, 49, 51, 54, 56, 9, 103, 108, 121, 112, 104, 49, 51, 54, 57, 7, 117, 110, 105,
-<a name="l14196"></a>14196 48, 54, 55, 68, 9, 103, 108, 121, 112, 104, 49, 51, 55, 49, 9, 103, 108, 121, 112, 104, 49, 51, 55, 50, 9,
-<a name="l14197"></a>14197 103, 108, 121, 112, 104, 49, 51, 55, 51, 7, 117, 110, 105, 48, 54, 55, 70, 7, 117, 110, 105, 70, 66, 54, 51,
-<a name="l14198"></a>14198 7, 117, 110, 105, 70, 66, 54, 52, 7, 117, 110, 105, 70, 66, 54, 53, 7, 117, 110, 105, 48, 54, 56, 48, 7,
-<a name="l14199"></a>14199 117, 110, 105, 70, 66, 53, 66, 7, 117, 110, 105, 70, 66, 53, 67, 7, 117, 110, 105, 70, 66, 53, 68, 7, 117,
-<a name="l14200"></a>14200 110, 105, 48, 54, 56, 49, 9, 103, 108, 121, 112, 104, 49, 51, 56, 51, 9, 103, 108, 121, 112, 104, 49, 51, 56,
-<a name="l14201"></a>14201 52, 9, 103, 108, 121, 112, 104, 49, 51, 56, 53, 7, 117, 110, 105, 48, 54, 56, 50, 9, 103, 108, 121, 112, 104,
-<a name="l14202"></a>14202 49, 51, 56, 55, 9, 103, 108, 121, 112, 104, 49, 51, 56, 56, 9, 103, 108, 121, 112, 104, 49, 51, 56, 57, 7,
-<a name="l14203"></a>14203 117, 110, 105, 48, 54, 56, 51, 7, 117, 110, 105, 70, 66, 55, 55, 7, 117, 110, 105, 70, 66, 55, 56, 7, 117,
-<a name="l14204"></a>14204 110, 105, 70, 66, 55, 57, 7, 117, 110, 105, 48, 54, 56, 52, 7, 117, 110, 105, 70, 66, 55, 51, 7, 117, 110,
-<a name="l14205"></a>14205 105, 70, 66, 55, 52, 7, 117, 110, 105, 70, 66, 55, 53, 7, 117, 110, 105, 48, 54, 56, 53, 9, 103, 108, 121,
-<a name="l14206"></a>14206 112, 104, 49, 51, 57, 57, 9, 103, 108, 121, 112, 104, 49, 52, 48, 48, 9, 103, 108, 121, 112, 104, 49, 52, 48,
-<a name="l14207"></a>14207 49, 7, 117, 110, 105, 48, 54, 56, 55, 7, 117, 110, 105, 70, 66, 55, 102, 7, 117, 110, 105, 70, 66, 56, 48,
-<a name="l14208"></a>14208 7, 117, 110, 105, 70, 66, 56, 49, 7, 117, 110, 105, 48, 54, 56, 56, 7, 117, 110, 105, 70, 66, 56, 57, 7,
-<a name="l14209"></a>14209 117, 110, 105, 48, 54, 56, 57, 9, 103, 108, 121, 112, 104, 49, 52, 48, 57, 7, 117, 110, 105, 48, 54, 56, 65,
-<a name="l14210"></a>14210 9, 103, 108, 121, 112, 104, 49, 52, 49, 49, 7, 117, 110, 105, 48, 54, 56, 66, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14211"></a>14211 52, 49, 51, 7, 117, 110, 105, 48, 54, 56, 67, 7, 117, 110, 105, 70, 66, 56, 53, 7, 117, 110, 105, 48, 54,
-<a name="l14212"></a>14212 56, 68, 7, 117, 110, 105, 70, 66, 56, 51, 7, 117, 110, 105, 48, 54, 56, 69, 7, 117, 110, 105, 70, 66, 56,
-<a name="l14213"></a>14213 55, 7, 117, 110, 105, 48, 54, 56, 70, 9, 103, 108, 121, 112, 104, 49, 52, 50, 49, 7, 117, 110, 105, 48, 54,
-<a name="l14214"></a>14214 57, 48, 9, 103, 108, 121, 112, 104, 49, 52, 50, 51, 7, 117, 110, 105, 48, 54, 57, 49, 7, 117, 110, 105, 70,
-<a name="l14215"></a>14215 66, 56, 68, 7, 117, 110, 105, 48, 54, 57, 50, 9, 103, 108, 121, 112, 104, 49, 52, 50, 54, 7, 117, 110, 105,
-<a name="l14216"></a>14216 48, 54, 57, 51, 9, 103, 108, 121, 112, 104, 49, 52, 50, 57, 7, 117, 110, 105, 48, 54, 57, 52, 9, 103, 108,
-<a name="l14217"></a>14217 121, 112, 104, 49, 52, 51, 49, 7, 117, 110, 105, 48, 54, 57, 53, 9, 103, 108, 121, 112, 104, 49, 52, 51, 51,
-<a name="l14218"></a>14218 7, 117, 110, 105, 48, 54, 57, 54, 9, 103, 108, 121, 112, 104, 49, 52, 51, 53, 7, 117, 110, 105, 48, 54, 57,
-<a name="l14219"></a>14219 55, 9, 103, 108, 121, 112, 104, 49, 52, 51, 55, 7, 117, 110, 105, 48, 54, 57, 57, 9, 103, 108, 121, 112, 104,
-<a name="l14220"></a>14220 49, 52, 51, 57, 7, 117, 110, 105, 48, 54, 57, 65, 9, 103, 108, 121, 112, 104, 49, 52, 52, 49, 9, 103, 108,
-<a name="l14221"></a>14221 121, 112, 104, 49, 52, 52, 50, 9, 103, 108, 121, 112, 104, 49, 52, 52, 51, 7, 117, 110, 105, 48, 54, 57, 66,
-<a name="l14222"></a>14222 9, 103, 108, 121, 112, 104, 49, 52, 52, 53, 9, 103, 108, 121, 112, 104, 49, 52, 52, 54, 9, 103, 108, 121, 112,
-<a name="l14223"></a>14223 104, 49, 52, 52, 55, 7, 117, 110, 105, 48, 54, 57, 67, 9, 103, 108, 121, 112, 104, 49, 52, 52, 57, 9, 103,
-<a name="l14224"></a>14224 108, 121, 112, 104, 49, 52, 53, 48, 9, 103, 108, 121, 112, 104, 49, 52, 53, 49, 7, 117, 110, 105, 48, 54, 57,
-<a name="l14225"></a>14225 68, 9, 103, 108, 121, 112, 104, 49, 52, 53, 51, 9, 103, 108, 121, 112, 104, 49, 52, 53, 52, 9, 103, 108, 121,
-<a name="l14226"></a>14226 112, 104, 49, 52, 53, 53, 7, 117, 110, 105, 48, 54, 57, 69, 9, 103, 108, 121, 112, 104, 49, 52, 53, 55, 9,
-<a name="l14227"></a>14227 103, 108, 121, 112, 104, 49, 52, 53, 56, 9, 103, 108, 121, 112, 104, 49, 52, 53, 57, 7, 117, 110, 105, 48, 54,
-<a name="l14228"></a>14228 57, 70, 9, 103, 108, 121, 112, 104, 49, 52, 54, 49, 7, 117, 110, 105, 48, 54, 65, 48, 9, 103, 108, 121, 112,
-<a name="l14229"></a>14229 104, 49, 52, 54, 51, 9, 103, 108, 121, 112, 104, 49, 52, 54, 52, 9, 103, 108, 121, 112, 104, 49, 52, 54, 53,
-<a name="l14230"></a>14230 7, 117, 110, 105, 48, 54, 65, 49, 7, 117, 110, 105, 48, 54, 65, 50, 9, 103, 108, 121, 112, 104, 49, 52, 54,
-<a name="l14231"></a>14231 56, 9, 103, 108, 121, 112, 104, 49, 52, 54, 57, 9, 103, 108, 121, 112, 104, 49, 52, 55, 48, 7, 117, 110, 105,
-<a name="l14232"></a>14232 48, 54, 65, 51, 9, 103, 108, 121, 112, 104, 49, 52, 55, 50, 9, 103, 108, 121, 112, 104, 49, 52, 55, 51, 9,
-<a name="l14233"></a>14233 103, 108, 121, 112, 104, 49, 52, 55, 52, 7, 117, 110, 105, 48, 54, 65, 52, 7, 117, 110, 105, 70, 66, 54, 66,
-<a name="l14234"></a>14234 7, 117, 110, 105, 70, 66, 54, 67, 7, 117, 110, 105, 70, 66, 54, 68, 7, 117, 110, 105, 48, 54, 65, 53, 9,
-<a name="l14235"></a>14235 103, 108, 121, 112, 104, 49, 52, 56, 48, 9, 103, 108, 121, 112, 104, 49, 52, 56, 49, 9, 103, 108, 121, 112, 104,
-<a name="l14236"></a>14236 49, 52, 56, 50, 7, 117, 110, 105, 48, 54, 65, 54, 7, 117, 110, 105, 70, 66, 54, 70, 7, 117, 110, 105, 70,
-<a name="l14237"></a>14237 66, 55, 48, 7, 117, 110, 105, 70, 66, 55, 49, 7, 117, 110, 105, 48, 54, 65, 55, 9, 103, 108, 121, 112, 104,
-<a name="l14238"></a>14238 49, 52, 56, 56, 7, 117, 110, 105, 48, 54, 65, 56, 9, 103, 108, 121, 112, 104, 49, 52, 57, 48, 7, 117, 110,
-<a name="l14239"></a>14239 105, 48, 54, 65, 65, 9, 103, 108, 121, 112, 104, 49, 52, 57, 50, 9, 103, 108, 121, 112, 104, 49, 52, 57, 51,
-<a name="l14240"></a>14240 9, 103, 108, 121, 112, 104, 49, 52, 57, 52, 7, 117, 110, 105, 48, 54, 65, 66, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14241"></a>14241 52, 57, 54, 9, 103, 108, 121, 112, 104, 49, 52, 57, 55, 9, 103, 108, 121, 112, 104, 49, 52, 57, 56, 7, 117,
-<a name="l14242"></a>14242 110, 105, 48, 54, 65, 67, 9, 103, 108, 121, 112, 104, 49, 53, 48, 48, 9, 103, 108, 121, 112, 104, 49, 53, 48,
-<a name="l14243"></a>14243 49, 9, 103, 108, 121, 112, 104, 49, 53, 48, 50, 7, 117, 110, 105, 48, 54, 65, 68, 7, 117, 110, 105, 70, 66,
-<a name="l14244"></a>14244 68, 52, 7, 117, 110, 105, 70, 66, 68, 53, 7, 117, 110, 105, 70, 66, 68, 54, 7, 117, 110, 105, 48, 54, 65,
-<a name="l14245"></a>14245 69, 9, 103, 108, 121, 112, 104, 49, 53, 48, 56, 9, 103, 108, 121, 112, 104, 49, 53, 48, 57, 9, 103, 108, 121,
-<a name="l14246"></a>14246 112, 104, 49, 53, 49, 48, 7, 117, 110, 105, 48, 54, 66, 48, 9, 103, 108, 121, 112, 104, 49, 53, 49, 50, 9,
-<a name="l14247"></a>14247 103, 108, 121, 112, 104, 49, 53, 49, 51, 9, 103, 108, 121, 112, 104, 49, 53, 49, 52, 7, 117, 110, 105, 48, 54,
-<a name="l14248"></a>14248 66, 49, 7, 117, 110, 105, 70, 66, 57, 66, 7, 117, 110, 105, 70, 66, 57, 67, 7, 117, 110, 105, 70, 66, 57,
-<a name="l14249"></a>14249 68, 7, 117, 110, 105, 48, 54, 66, 50, 9, 103, 108, 121, 112, 104, 49, 53, 50, 48, 9, 103, 108, 121, 112, 104,
-<a name="l14250"></a>14250 49, 53, 50, 49, 9, 103, 108, 121, 112, 104, 49, 53, 50, 50, 7, 117, 110, 105, 48, 54, 66, 51, 7, 117, 110,
-<a name="l14251"></a>14251 105, 70, 66, 57, 55, 7, 117, 110, 105, 70, 66, 57, 56, 7, 117, 110, 105, 70, 66, 57, 57, 7, 117, 110, 105,
-<a name="l14252"></a>14252 48, 54, 66, 52, 9, 103, 108, 121, 112, 104, 49, 53, 50, 56, 9, 103, 108, 121, 112, 104, 49, 53, 50, 57, 9,
-<a name="l14253"></a>14253 103, 108, 121, 112, 104, 49, 53, 51, 48, 7, 117, 110, 105, 48, 54, 66, 53, 9, 103, 108, 121, 112, 104, 49, 53,
-<a name="l14254"></a>14254 51, 50, 9, 103, 108, 121, 112, 104, 49, 53, 51, 51, 9, 103, 108, 121, 112, 104, 49, 53, 51, 52, 7, 117, 110,
-<a name="l14255"></a>14255 105, 48, 54, 66, 54, 9, 103, 108, 121, 112, 104, 49, 53, 51, 54, 9, 103, 108, 121, 112, 104, 49, 53, 51, 55,
-<a name="l14256"></a>14256 9, 103, 108, 121, 112, 104, 49, 53, 51, 56, 7, 117, 110, 105, 48, 54, 66, 55, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14257"></a>14257 53, 52, 48, 9, 103, 108, 121, 112, 104, 49, 53, 52, 49, 9, 103, 108, 121, 112, 104, 49, 53, 52, 50, 7, 117,
-<a name="l14258"></a>14258 110, 105, 48, 54, 66, 56, 9, 103, 108, 121, 112, 104, 49, 53, 52, 52, 9, 103, 108, 121, 112, 104, 49, 53, 52,
-<a name="l14259"></a>14259 53, 9, 103, 108, 121, 112, 104, 49, 53, 52, 54, 7, 117, 110, 105, 48, 54, 66, 57, 9, 103, 108, 121, 112, 104,
-<a name="l14260"></a>14260 49, 53, 52, 56, 9, 103, 108, 121, 112, 104, 49, 53, 52, 57, 9, 103, 108, 121, 112, 104, 49, 53, 53, 48, 7,
-<a name="l14261"></a>14261 117, 110, 105, 48, 54, 66, 65, 7, 117, 110, 105, 70, 66, 57, 70, 7, 117, 110, 105, 48, 54, 66, 66, 7, 117,
-<a name="l14262"></a>14262 110, 105, 70, 66, 65, 49, 7, 117, 110, 105, 48, 54, 66, 67, 9, 103, 108, 121, 112, 104, 49, 53, 53, 54, 9,
-<a name="l14263"></a>14263 103, 108, 121, 112, 104, 49, 53, 53, 55, 9, 103, 108, 121, 112, 104, 49, 53, 53, 56, 7, 117, 110, 105, 48, 54,
-<a name="l14264"></a>14264 66, 68, 9, 103, 108, 121, 112, 104, 49, 53, 54, 48, 7, 117, 110, 105, 48, 54, 66, 70, 9, 103, 108, 121, 112,
-<a name="l14265"></a>14265 104, 49, 53, 54, 50, 9, 103, 108, 121, 112, 104, 49, 53, 54, 51, 9, 103, 108, 121, 112, 104, 49, 53, 54, 52,
-<a name="l14266"></a>14266 7, 117, 110, 105, 48, 54, 67, 48, 7, 117, 110, 105, 70, 66, 65, 53, 7, 117, 110, 105, 48, 54, 67, 49, 7,
-<a name="l14267"></a>14267 117, 110, 105, 48, 54, 67, 50, 7, 117, 110, 105, 48, 54, 67, 51, 7, 117, 110, 105, 48, 54, 67, 52, 9, 103,
-<a name="l14268"></a>14268 108, 121, 112, 104, 49, 53, 55, 49, 7, 117, 110, 105, 48, 54, 67, 53, 7, 117, 110, 105, 70, 66, 69, 49, 7,
-<a name="l14269"></a>14269 117, 110, 105, 48, 54, 67, 54, 7, 117, 110, 105, 70, 66, 68, 65, 7, 117, 110, 105, 48, 54, 67, 55, 7, 117,
-<a name="l14270"></a>14270 110, 105, 70, 66, 68, 56, 7, 117, 110, 105, 48, 54, 67, 56, 7, 117, 110, 105, 70, 66, 68, 67, 7, 117, 110,
-<a name="l14271"></a>14271 105, 48, 54, 67, 57, 7, 117, 110, 105, 70, 66, 69, 51, 7, 117, 110, 105, 48, 54, 67, 65, 9, 103, 108, 121,
-<a name="l14272"></a>14272 112, 104, 49, 53, 56, 51, 7, 117, 110, 105, 48, 54, 67, 66, 7, 117, 110, 105, 70, 66, 68, 70, 7, 117, 110,
-<a name="l14273"></a>14273 105, 48, 54, 67, 68, 9, 103, 108, 121, 112, 104, 49, 53, 56, 55, 7, 117, 110, 105, 48, 54, 67, 69, 9, 103,
-<a name="l14274"></a>14274 108, 121, 112, 104, 49, 53, 56, 57, 9, 103, 108, 121, 112, 104, 49, 53, 57, 48, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14275"></a>14275 53, 57, 49, 7, 117, 110, 105, 48, 54, 67, 70, 9, 103, 108, 121, 112, 104, 49, 53, 57, 51, 7, 117, 110, 105,
-<a name="l14276"></a>14276 48, 54, 68, 48, 7, 117, 110, 105, 70, 66, 69, 53, 7, 117, 110, 105, 70, 66, 69, 54, 7, 117, 110, 105, 70,
-<a name="l14277"></a>14277 66, 69, 55, 7, 117, 110, 105, 48, 54, 68, 49, 9, 103, 108, 121, 112, 104, 49, 53, 57, 57, 7, 117, 110, 105,
-<a name="l14278"></a>14278 48, 54, 68, 50, 7, 117, 110, 105, 70, 66, 65, 70, 7, 117, 110, 105, 48, 54, 68, 51, 7, 117, 110, 105, 70,
-<a name="l14279"></a>14279 66, 66, 49, 7, 117, 110, 105, 48, 54, 68, 52, 7, 117, 110, 105, 48, 54, 68, 54, 7, 117, 110, 105, 48, 54,
-<a name="l14280"></a>14280 68, 55, 7, 117, 110, 105, 48, 54, 68, 56, 7, 117, 110, 105, 48, 54, 68, 57, 7, 117, 110, 105, 48, 54, 68,
-<a name="l14281"></a>14281 65, 7, 117, 110, 105, 48, 54, 68, 66, 7, 117, 110, 105, 48, 54, 68, 67, 7, 117, 110, 105, 48, 54, 68, 68,
-<a name="l14282"></a>14282 7, 117, 110, 105, 48, 54, 68, 69, 7, 117, 110, 105, 48, 54, 68, 70, 7, 117, 110, 105, 48, 54, 69, 48, 7,
-<a name="l14283"></a>14283 117, 110, 105, 48, 54, 69, 49, 7, 117, 110, 105, 48, 54, 69, 50, 7, 117, 110, 105, 48, 54, 69, 51, 7, 117,
-<a name="l14284"></a>14284 110, 105, 48, 54, 69, 52, 7, 117, 110, 105, 48, 54, 69, 53, 7, 117, 110, 105, 48, 54, 69, 54, 7, 117, 110,
-<a name="l14285"></a>14285 105, 48, 54, 69, 55, 7, 117, 110, 105, 48, 54, 69, 56, 7, 117, 110, 105, 48, 54, 69, 57, 7, 117, 110, 105,
-<a name="l14286"></a>14286 48, 54, 69, 65, 7, 117, 110, 105, 48, 54, 69, 66, 7, 117, 110, 105, 48, 54, 69, 68, 7, 117, 110, 105, 48,
-<a name="l14287"></a>14287 54, 70, 65, 9, 103, 108, 121, 112, 104, 49, 54, 50, 57, 9, 103, 108, 121, 112, 104, 49, 54, 51, 48, 9, 103,
-<a name="l14288"></a>14288 108, 121, 112, 104, 49, 54, 51, 49, 7, 117, 110, 105, 48, 54, 70, 66, 9, 103, 108, 121, 112, 104, 49, 54, 51,
-<a name="l14289"></a>14289 51, 9, 103, 108, 121, 112, 104, 49, 54, 51, 52, 9, 103, 108, 121, 112, 104, 49, 54, 51, 53, 7, 117, 110, 105,
-<a name="l14290"></a>14290 48, 54, 70, 67, 9, 103, 108, 121, 112, 104, 49, 54, 51, 55, 9, 103, 108, 121, 112, 104, 49, 54, 51, 56, 9,
-<a name="l14291"></a>14291 103, 108, 121, 112, 104, 49, 54, 51, 57, 7, 117, 110, 105, 48, 54, 70, 68, 7, 117, 110, 105, 48, 54, 70, 69,
-<a name="l14292"></a>14292 7, 117, 110, 105, 70, 66, 65, 54, 7, 117, 110, 105, 70, 66, 65, 56, 7, 117, 110, 105, 70, 66, 65, 57, 9,
-<a name="l14293"></a>14293 103, 108, 121, 112, 104, 49, 54, 52, 53, 9, 103, 108, 121, 112, 104, 49, 54, 52, 54, 9, 103, 108, 121, 112, 104,
-<a name="l14294"></a>14294 49, 54, 52, 55, 9, 103, 108, 121, 112, 104, 49, 54, 52, 56, 9, 103, 108, 121, 112, 104, 49, 54, 52, 57, 9,
-<a name="l14295"></a>14295 103, 108, 121, 112, 104, 49, 54, 53, 48, 9, 103, 108, 121, 112, 104, 49, 54, 53, 49, 7, 117, 110, 105, 70, 66,
-<a name="l14296"></a>14296 49, 68, 7, 117, 110, 105, 70, 66, 49, 69, 9, 103, 108, 121, 112, 104, 49, 54, 53, 52, 7, 117, 110, 105, 70,
-<a name="l14297"></a>14297 66, 49, 70, 9, 103, 108, 121, 112, 104, 49, 54, 53, 54, 9, 103, 108, 121, 112, 104, 49, 54, 53, 55, 9, 103,
-<a name="l14298"></a>14298 108, 121, 112, 104, 49, 54, 53, 56, 9, 103, 108, 121, 112, 104, 49, 54, 53, 57, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14299"></a>14299 54, 54, 48, 9, 103, 108, 121, 112, 104, 49, 54, 54, 49, 9, 103, 108, 121, 112, 104, 49, 54, 54, 50, 9, 103,
-<a name="l14300"></a>14300 108, 121, 112, 104, 49, 54, 54, 51, 9, 103, 108, 121, 112, 104, 49, 54, 54, 52, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14301"></a>14301 54, 54, 53, 9, 103, 108, 121, 112, 104, 49, 54, 54, 54, 9, 103, 108, 121, 112, 104, 49, 54, 54, 55, 9, 103,
-<a name="l14302"></a>14302 108, 121, 112, 104, 49, 54, 54, 56, 9, 103, 108, 121, 112, 104, 49, 54, 54, 57, 9, 103, 108, 121, 112, 104, 49,
-<a name="l14303"></a>14303 54, 55, 48, 9, 103, 108, 121, 112, 104, 49, 54, 55, 49, 9, 103, 108, 121, 112, 104, 49, 54, 55, 50, 9, 103,
-<a name="l14304"></a>14304 108, 121, 112, 104, 49, 54, 55, 51, 0, 0, 0, 0, 3, 0, 8, 0, 2, 0, 17, 0, 1, -1, -1, 0, 3,
-<a name="l14305"></a>14305 0, 1, 0, 0, 77, 2, -65, 34, 2, 57, 4, 38, 0, 0, 64, -38, 5, -70, 0, 0, 77, 32, 65, 114, 105,
-<a name="l14306"></a>14306 97, 108, 32, 32, 32, 32, 32, 32, 32, 32, 32, -1, -1, -1, -1, 0, 63, -1, -2, 65, 82, 76, 82, 48, 48,
-<a name="l14307"></a>14307 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 2, 0, 25, 2, -24, 2,
-<a name="l14308"></a>14308 -16, 0, 1, 2, -15, 2, -8, 0, 3, 2, -7, 3, 5, 0, 1, 3, 8, 3, 8, 0, 1, 3, 10, 3, 12,
-<a name="l14309"></a>14309 0, 1, 3, 18, 3, 18, 0, 3, 3, 27, 3, 27, 0, 1, 3, 31, 3, 34, 0, 1, 3, 39, 3, 54, 0,
-<a name="l14310"></a>14310 1, 3, 71, 3, 75, 0, 3, 3, 124, 3, 125, 0, 1, 3, 127, 3, 127, 0, 2, 3, -128, 3, -128, 0, 1,
-<a name="l14311"></a>14311 3, -127, 3, -116, 0, 2, 3, -115, 3, -12, 0, 1, 3, -11, 3, -4, 0, 2, 3, -1, 4, 0, 0, 3, 4,
-<a name="l14312"></a>14312 4, 4, 5, 0, 3, 4, 8, 4, 9, 0, 3, 4, 13, 4, 18, 0, 3, 4, 20, 4, 21, 0, 3, 4, 76,
-<a name="l14313"></a>14313 4, 78, 0, 1, 4, 103, 4, 105, 0, 1, 5, 42, 6, 108, 0, 1, 6, 114, 6, -119, 0, 1, 0, 0, 0,
-<a name="l14314"></a>14314 1, 0, 0, 0, 10, 0, 62, 0, -94, 0, 1, 97, 114, 97, 98, 0, 8, 0, 10, 0, 1, 77, 65, 82, 32,
-<a name="l14315"></a>14315 0, 26, 0, 0, 0, 7, 0, 5, 0, 1, 0, 2, 0, 3, 0, 5, 0, 6, 0, 0, 0, 7, 0, 6, 0,
-<a name="l14316"></a>14316 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 6, 0, 8, 105, 115, 111, 108, 0, 50, 105, 115, 111, 108, 0, 56,
-<a name="l14317"></a>14317 105, 110, 105, 116, 0, 62, 109, 101, 100, 105, 0, 68, 102, 105, 110, 97, 0, 74, 102, 105, 110, 97, 0, 80, 108,
-<a name="l14318"></a>14318 105, 103, 97, 0, 86, 114, 108, 105, 103, 0, 94, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,
-<a name="l14319"></a>14319 0, 1, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 4, 0, 0, 0, 1, 0, 5, 0, 0, 0,
-<a name="l14320"></a>14320 2, 0, 6, 0, 7, 0, 0, 0, 1, 0, 6, 0, 8, 0, 18, 0, 40, 0, 70, 1, -88, 3, 10, 5, 84,
-<a name="l14321"></a>14321 7, -98, 8, -64, 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 0, 8, 0, 1, 6, 114, 0, 1, 0, 1, 5,
-<a name="l14322"></a>14322 -33, 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 0, 12, 0, 3, 6, 106, 6, 29, 3, -109, 0, 1, 0, 3,
-<a name="l14323"></a>14323 6, 31, 6, 32, 6, 33, 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 0, -82, 0, 84, 3, 33, 3, 41, 3,
-<a name="l14324"></a>14324 47, 3, 51, 3, -13, 3, -117, 3, -111, 3, -105, 3, -101, 3, -97, 3, -93, 3, -89, 3, -77, 3, -73, 3, -69,
-<a name="l14325"></a>14325 3, -65, 3, -61, 3, -57, 3, -53, 3, -49, 3, -45, 3, -41, 3, -37, 3, -33, 3, -29, 3, -25, 3, -21, 3,
-<a name="l14326"></a>14326 -21, 3, -13, 5, 41, 5, 42, 5, 76, 5, 80, 5, 84, 5, 88, 5, 92, 5, 96, 5, 100, 5, 104, 5, 108,
-<a name="l14327"></a>14327 5, 112, 5, 116, 5, 120, 5, 124, 5, -94, 5, -90, 5, -86, 5, -82, 5, -78, 5, -76, 5, -72, 5, 42, 5,
-<a name="l14328"></a>14328 -67, 5, -63, 5, -59, 5, -55, 5, -51, 3, -45, 5, -59, 5, -43, 5, -39, 5, -35, 5, -31, 5, -27, 5, -23,
-<a name="l14329"></a>14329 5, -19, 5, -15, 5, -11, 5, -7, 5, -3, 6, 1, 6, 5, 6, 9, 6, 13, 5, 76, 6, 21, 3, 33, 6,
-<a name="l14330"></a>14330 27, 6, 107, 6, 54, 6, 60, 6, 94, 6, 98, 6, 102, 0, 1, 0, 84, 3, 31, 3, 39, 3, 45, 3, 49,
-<a name="l14331"></a>14331 3, 53, 3, -119, 3, -113, 3, -107, 3, -103, 3, -99, 3, -95, 3, -91, 3, -79, 3, -75, 3, -71, 3, -67, 3,
-<a name="l14332"></a>14332 -63, 3, -59, 3, -55, 3, -51, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3, -27, 3, -23, 3, -21, 3, -15,
-<a name="l14333"></a>14333 5, 40, 5, 44, 5, 74, 5, 78, 5, 82, 5, 86, 5, 90, 5, 94, 5, 98, 5, 102, 5, 106, 5, 110, 5,
-<a name="l14334"></a>14334 114, 5, 118, 5, 122, 5, -96, 5, -92, 5, -88, 5, -84, 5, -80, 5, -76, 5, -74, 5, -70, 5, -69, 5, -65,
-<a name="l14335"></a>14335 5, -61, 5, -57, 5, -53, 5, -49, 5, -47, 5, -45, 5, -41, 5, -37, 5, -33, 5, -29, 5, -25, 5, -21, 5,
-<a name="l14336"></a>14336 -17, 5, -13, 5, -9, 5, -5, 5, -1, 6, 3, 6, 7, 6, 11, 6, 17, 6, 19, 6, 23, 6, 25, 6, 31,
-<a name="l14337"></a>14337 6, 52, 6, 58, 6, 92, 6, 96, 6, 100, 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 0, -82, 0, 84, 3,
-<a name="l14338"></a>14338 34, 3, 42, 3, 48, 3, 52, 3, -12, 3, -116, 3, -110, 3, -104, 3, -100, 3, -96, 3, -92, 3, -88, 3, -76,
-<a name="l14339"></a>14339 3, -72, 3, -68, 3, -64, 3, -60, 3, -56, 3, -52, 3, -48, 3, -44, 3, -40, 3, -36, 3, -32, 3, -28, 3,
-<a name="l14340"></a>14340 -24, 3, -20, 3, -20, 3, -12, 5, 41, 5, 43, 5, 77, 5, 81, 5, 85, 5, 89, 5, 93, 5, 97, 5, 101,
-<a name="l14341"></a>14341 5, 105, 5, 109, 5, 113, 5, 117, 5, 121, 5, 125, 5, -93, 5, -89, 5, -85, 5, -81, 5, -77, 5, -75, 5,
-<a name="l14342"></a>14342 -71, 5, 43, 5, -66, 5, -62, 5, -58, 5, -54, 5, -50, 3, -44, 5, -58, 5, -42, 5, -38, 5, -34, 5, -30,
-<a name="l14343"></a>14343 5, -26, 5, -22, 5, -18, 5, -14, 5, -10, 5, -6, 5, -2, 6, 2, 6, 6, 6, 10, 6, 14, 5, 76, 6,
-<a name="l14344"></a>14344 22, 3, 34, 6, 28, 6, 108, 6, 55, 6, 61, 6, 95, 6, 99, 6, 103, 0, 1, 0, 84, 3, 31, 3, 39,
-<a name="l14345"></a>14345 3, 45, 3, 49, 3, 53, 3, -119, 3, -113, 3, -107, 3, -103, 3, -99, 3, -95, 3, -91, 3, -79, 3, -75, 3,
-<a name="l14346"></a>14346 -71, 3, -67, 3, -63, 3, -59, 3, -55, 3, -51, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3, -27, 3, -23,
-<a name="l14347"></a>14347 3, -21, 3, -15, 5, 40, 5, 44, 5, 74, 5, 78, 5, 82, 5, 86, 5, 90, 5, 94, 5, 98, 5, 102, 5,
-<a name="l14348"></a>14348 106, 5, 110, 5, 114, 5, 118, 5, 122, 5, -96, 5, -92, 5, -88, 5, -84, 5, -80, 5, -76, 5, -74, 5, -70,
-<a name="l14349"></a>14349 5, -69, 5, -65, 5, -61, 5, -57, 5, -53, 5, -49, 5, -47, 5, -45, 5, -41, 5, -37, 5, -33, 5, -29, 5,
-<a name="l14350"></a>14350 -25, 5, -21, 5, -17, 5, -13, 5, -9, 5, -5, 5, -1, 6, 3, 6, 7, 6, 11, 6, 17, 6, 19, 6, 23,
-<a name="l14351"></a>14351 6, 25, 6, 31, 6, 52, 6, 58, 6, 92, 6, 96, 6, 100, 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 1,
-<a name="l14352"></a>14352 34, 0, -114, 3, 32, 3, 40, 3, 44, 3, 46, 3, 50, 3, 54, 3, -126, 3, -124, 3, -122, 3, -120, 3, -118,
-<a name="l14353"></a>14353 3, -114, 3, -112, 3, -108, 3, -106, 3, -102, 3, -98, 3, -94, 3, -90, 3, -86, 3, -84, 3, -82, 3, -80, 3,
-<a name="l14354"></a>14354 -78, 3, -74, 3, -70, 3, -66, 3, -62, 3, -58, 3, -54, 3, -50, 3, -46, 3, -42, 3, -38, 3, -34, 3, -30,
-<a name="l14355"></a>14355 3, -26, 3, -22, 3, -22, 3, -18, 3, -16, 3, -14, 3, -10, 3, -8, 3, -6, 3, -4, 5, 40, 5, 44, 5,
-<a name="l14356"></a>14356 61, 5, 63, 5, 65, 5, 67, 5, 69, 5, 71, 5, 73, 5, 75, 5, 79, 5, 83, 5, 87, 5, 91, 5, 95,
-<a name="l14357"></a>14357 5, 99, 5, 103, 5, 107, 5, 111, 5, 115, 5, 119, 5, 123, 5, 127, 5, -127, 5, -125, 5, -123, 5, -121, 5,
-<a name="l14358"></a>14358 -119, 5, -117, 5, -115, 5, -113, 5, -111, 5, -109, 5, -107, 5, -105, 5, -103, 5, -101, 5, -99, 5, -97, 5, -95,
-<a name="l14359"></a>14359 5, -91, 5, -87, 5, -83, 5, -79, 5, -75, 5, -73, 5, -70, 5, -68, 5, -64, 5, -60, 5, -56, 5, -52, 5,
-<a name="l14360"></a>14360 -48, 5, -46, 5, -44, 5, -40, 5, -36, 6, 115, 5, -28, 5, -24, 5, -20, 5, -16, 5, -12, 5, -8, 5, -4,
-<a name="l14361"></a>14361 6, 0, 6, 4, 6, 8, 6, 12, 6, 16, 6, 18, 6, 20, 6, 24, 6, 26, 6, 30, 6, 31, 6, 32, 6,
-<a name="l14362"></a>14362 33, 6, 35, 6, 37, 6, 39, 6, 41, 6, 43, 6, 45, 6, 47, 6, 49, 6, 51, 6, 53, 6, 57, 6, 59,
-<a name="l14363"></a>14363 6, 63, 6, 65, 6, 67, 6, 93, 6, 97, 6, 101, 0, 1, 0, -114, 3, 31, 3, 39, 3, 43, 3, 45, 3,
-<a name="l14364"></a>14364 49, 3, 53, 3, -127, 3, -125, 3, -123, 3, -121, 3, -119, 3, -115, 3, -113, 3, -109, 3, -107, 3, -103, 3, -99,
-<a name="l14365"></a>14365 3, -95, 3, -91, 3, -87, 3, -85, 3, -83, 3, -81, 3, -79, 3, -75, 3, -71, 3, -67, 3, -63, 3, -59, 3,
-<a name="l14366"></a>14366 -55, 3, -51, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3, -27, 3, -23, 3, -21, 3, -19, 3, -17, 3, -15,
-<a name="l14367"></a>14367 3, -11, 3, -9, 3, -7, 3, -5, 5, 40, 5, 44, 5, 60, 5, 62, 5, 64, 5, 66, 5, 68, 5, 70, 5,
-<a name="l14368"></a>14368 72, 5, 74, 5, 78, 5, 82, 5, 86, 5, 90, 5, 94, 5, 98, 5, 102, 5, 106, 5, 110, 5, 114, 5, 118,
-<a name="l14369"></a>14369 5, 122, 5, 126, 5, -128, 5, -126, 5, -124, 5, -122, 5, -120, 5, -118, 5, -116, 5, -114, 5, -112, 5, -110, 5,
-<a name="l14370"></a>14370 -108, 5, -106, 5, -104, 5, -102, 5, -100, 5, -98, 5, -96, 5, -92, 5, -88, 5, -84, 5, -80, 5, -76, 5, -74,
-<a name="l14371"></a>14371 5, -70, 5, -69, 5, -65, 5, -61, 5, -57, 5, -53, 5, -49, 5, -47, 5, -45, 5, -41, 5, -37, 5, -33, 5,
-<a name="l14372"></a>14372 -29, 5, -25, 5, -21, 5, -17, 5, -13, 5, -9, 5, -5, 5, -1, 6, 3, 6, 7, 6, 11, 6, 15, 6, 17,
-<a name="l14373"></a>14373 6, 19, 6, 23, 6, 25, 6, 29, 6, 31, 6, 32, 6, 33, 6, 34, 6, 36, 6, 38, 6, 40, 6, 42, 6,
-<a name="l14374"></a>14374 44, 6, 46, 6, 48, 6, 50, 6, 52, 6, 56, 6, 58, 6, 62, 6, 64, 6, 66, 6, 92, 6, 96, 6, 100,
-<a name="l14375"></a>14375 0, 1, 0, 1, 0, 1, 0, 8, 0, 2, 1, 34, 0, -114, 3, 32, 3, 40, 3, 44, 3, 46, 3, 50, 3,
-<a name="l14376"></a>14376 54, 3, -126, 3, -124, 3, -122, 3, -120, 3, -118, 3, -114, 3, -112, 3, -108, 3, -106, 3, -102, 3, -98, 3, -94,
-<a name="l14377"></a>14377 3, -90, 3, -86, 3, -84, 3, -82, 3, -80, 3, -78, 3, -74, 3, -70, 3, -66, 3, -62, 3, -58, 3, -54, 3,
-<a name="l14378"></a>14378 -50, 3, -46, 3, -42, 3, -38, 3, -34, 3, -30, 3, -26, 3, -22, 3, -22, 3, -18, 3, -16, 3, -14, 3, -10,
-<a name="l14379"></a>14379 3, -8, 3, -6, 3, -4, 5, 40, 5, 44, 5, 61, 5, 63, 5, 65, 5, 67, 5, 69, 5, 71, 5, 73, 5,
-<a name="l14380"></a>14380 75, 5, 79, 5, 83, 5, 87, 5, 91, 5, 95, 5, 99, 5, 103, 5, 107, 5, 111, 5, 115, 5, 119, 5, 123,
-<a name="l14381"></a>14381 5, 127, 5, -127, 5, -125, 5, -123, 5, -121, 5, -119, 5, -117, 5, -115, 5, -113, 5, -111, 5, -109, 5, -107, 5,
-<a name="l14382"></a>14382 -105, 5, -103, 5, -101, 5, -99, 5, -97, 5, -95, 5, -91, 5, -87, 5, -83, 5, -79, 5, -75, 5, -73, 5, -70,
-<a name="l14383"></a>14383 5, -68, 5, -64, 5, -60, 5, -56, 5, -52, 5, -48, 5, -46, 5, -44, 5, -40, 5, -36, 5, -32, 5, -28, 5,
-<a name="l14384"></a>14384 -24, 5, -20, 5, -16, 5, -12, 5, -8, 5, -4, 6, 0, 6, 4, 6, 8, 6, 12, 6, 16, 6, 18, 6, 20,
-<a name="l14385"></a>14385 6, 24, 6, 26, 6, 30, 6, 31, 6, 32, 6, 33, 6, 35, 6, 37, 6, 39, 6, 41, 6, 43, 6, 45, 6,
-<a name="l14386"></a>14386 47, 6, 49, 6, 51, 6, 53, 6, 57, 6, 59, 6, 63, 6, 65, 6, 67, 6, 93, 6, 97, 6, 101, 0, 1,
-<a name="l14387"></a>14387 0, -114, 3, 31, 3, 39, 3, 43, 3, 45, 3, 49, 3, 53, 3, -127, 3, -125, 3, -123, 3, -121, 3, -119, 3,
-<a name="l14388"></a>14388 -115, 3, -113, 3, -109, 3, -107, 3, -103, 3, -99, 3, -95, 3, -91, 3, -87, 3, -85, 3, -83, 3, -81, 3, -79,
-<a name="l14389"></a>14389 3, -75, 3, -71, 3, -67, 3, -63, 3, -59, 3, -55, 3, -51, 3, -47, 3, -43, 3, -39, 3, -35, 3, -31, 3,
-<a name="l14390"></a>14390 -27, 3, -23, 3, -21, 3, -19, 3, -17, 3, -15, 3, -11, 3, -9, 3, -7, 3, -5, 5, 40, 5, 44, 5, 60,
-<a name="l14391"></a>14391 5, 62, 5, 64, 5, 66, 5, 68, 5, 70, 5, 72, 5, 74, 5, 78, 5, 82, 5, 86, 5, 90, 5, 94, 5,
-<a name="l14392"></a>14392 98, 5, 102, 5, 106, 5, 110, 5, 114, 5, 118, 5, 122, 5, 126, 5, -128, 5, -126, 5, -124, 5, -122, 5, -120,
-<a name="l14393"></a>14393 5, -118, 5, -116, 5, -114, 5, -112, 5, -110, 5, -108, 5, -106, 5, -104, 5, -102, 5, -100, 5, -98, 5, -96, 5,
-<a name="l14394"></a>14394 -92, 5, -88, 5, -84, 5, -80, 5, -76, 5, -74, 5, -70, 5, -69, 5, -65, 5, -61, 5, -57, 5, -53, 5, -49,
-<a name="l14395"></a>14395 5, -47, 5, -45, 5, -41, 5, -37, 5, -33, 5, -29, 5, -25, 5, -21, 5, -17, 5, -13, 5, -9, 5, -5, 5,
-<a name="l14396"></a>14396 -1, 6, 3, 6, 7, 6, 11, 6, 15, 6, 17, 6, 19, 6, 23, 6, 25, 6, 29, 6, 31, 6, 32, 6, 33,
-<a name="l14397"></a>14397 6, 34, 6, 36, 6, 38, 6, 40, 6, 42, 6, 44, 6, 46, 6, 48, 6, 50, 6, 52, 6, 56, 6, 58, 6,
-<a name="l14398"></a>14398 62, 6, 64, 6, 66, 6, 92, 6, 96, 6, 100, 0, 4, 0, 9, 0, 1, 0, 8, 0, 1, 1, 2, 0, 10,
-<a name="l14399"></a>14399 0, 26, 0, 112, 0, -78, 0, -68, 0, -58, 0, -48, 0, -38, 0, -28, 0, -18, 0, -8, 0, 10, 0, 22, 0,
-<a name="l14400"></a>14400 30, 0, 38, 0, 44, 0, 50, 0, 56, 0, 62, 0, 68, 0, 74, 0, 80, 3, 127, 0, 3, 3, -32, 3, -22,
-<a name="l14401"></a>14401 3, 127, 0, 3, 3, -32, 6, 31, 3, -11, 0, 2, 3, -126, 3, -9, 0, 2, 3, -124, 3, -7, 0, 2, 3,
-<a name="l14402"></a>14402 -120, 3, -5, 0, 2, 3, -114, 6, 120, 0, 2, 5, 63, 6, 122, 0, 2, 5, 65, 6, 124, 0, 2, 5, 67,
-<a name="l14403"></a>14403 6, -120, 0, 2, 5, 61, 0, 8, 0, 18, 0, 24, 0, 30, 0, 36, 0, 42, 0, 48, 0, 54, 0, 60, 3,
-<a name="l14404"></a>14404 -10, 0, 2, 3, -126, 3, -8, 0, 2, 3, -124, 3, -6, 0, 2, 3, -120, 3, -4, 0, 2, 3, -114, 6, 121,
-<a name="l14405"></a>14405 0, 2, 5, 63, 6, 123, 0, 2, 5, 65, 6, 125, 0, 2, 5, 67, 6, -119, 0, 2, 5, 61, 0, 1, 0,
-<a name="l14406"></a>14406 4, 6, 126, 0, 2, 3, -114, 0, 1, 0, 4, 6, 127, 0, 2, 3, -114, 0, 1, 0, 4, 6, -128, 0, 2,
-<a name="l14407"></a>14407 3, -114, 0, 1, 0, 4, 6, -127, 0, 2, 3, -114, 0, 1, 0, 4, 6, -126, 0, 2, 3, -114, 0, 1, 0,
-<a name="l14408"></a>14408 4, 6, -125, 0, 2, 3, -114, 0, 1, 0, 4, 6, -124, 0, 2, 3, -114, 0, 1, 0, 4, 6, -123, 0, 2,
-<a name="l14409"></a>14409 3, -114, 0, 1, 0, 10, 3, -33, 3, -32, 5, -3, 5, -2, 6, 1, 6, 2, 6, 5, 6, 6, 6, 9, 6,
-<a name="l14410"></a>14410 10, 0, 4, 0, 7, 0, 1, 0, 8, 0, 1, 0, 58, 0, 1, 0, 8, 0, 6, 0, 14, 0, 20, 0, 26,
-<a name="l14411"></a>14411 0, 32, 0, 38, 0, 44, 3, 18, 0, 2, 2, -15, 3, 71, 0, 2, 2, -14, 3, 72, 0, 2, 2, -13, 3,
-<a name="l14412"></a>14412 73, 0, 2, 2, -12, 3, 74, 0, 2, 2, -11, 3, 75, 0, 2, 2, -10, 0, 1, 0, 1, 2, -9, 0, 0,
-<a name="l14413"></a>14413 0, 1, 0, 0, 0, 1, 97, 114, 97, 98, 0, 12, 0, 6, 0, 0, 0, 0, 0, 5, 2, -16, 3, 27, 4,
-<a name="l14414"></a>14414 103, 4, 104, 4, 105, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 26, 103, 0, 0,
-<a name="l14415"></a>14415 0, 20, 0, 0, 0, 0, 0, 0, 26, 95, 48, -126, 26, 91, 6, 9, 42, -122, 72, -122, -9, 13, 1, 7, 2,
-<a name="l14416"></a>14416 -96, -126, 26, 76, 48, -126, 26, 72, 2, 1, 1, 49, 14, 48, 12, 6, 8, 42, -122, 72, -122, -9, 13, 2, 5,
-<a name="l14417"></a>14417 5, 0, 48, 96, 6, 10, 43, 6, 1, 4, 1, -126, 55, 2, 1, 4, -96, 82, 48, 80, 48, 44, 6, 10, 43,
-<a name="l14418"></a>14418 6, 1, 4, 1, -126, 55, 2, 1, 28, -94, 30, -128, 28, 0, 60, 0, 60, 0, 60, 0, 79, 0, 98, 0, 115,
-<a name="l14419"></a>14419 0, 111, 0, 108, 0, 101, 0, 116, 0, 101, 0, 62, 0, 62, 0, 62, 48, 32, 48, 12, 6, 8, 42, -122, 72,
-<a name="l14420"></a>14420 -122, -9, 13, 2, 5, 5, 0, 4, 16, -92, 69, -51, -68, -104, -28, -120, 70, -6, -83, -17, -8, 84, -30, 96, 35,
-<a name="l14421"></a>14421 -96, -126, 20, -68, 48, -126, 2, -68, 48, -126, 2, 37, 2, 16, 74, 25, -46, 56, -116, -126, 89, 28, -91, 93, 115,
-<a name="l14422"></a>14422 95, 21, 93, -36, -93, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 4, 5, 0, 48, -127, -98, 49, 31,
-<a name="l14423"></a>14423 48, 29, 6, 3, 85, 4, 10, 19, 22, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 114, 117, 115, 116, 32, 78,
-<a name="l14424"></a>14424 101, 116, 119, 111, 114, 107, 49, 23, 48, 21, 6, 3, 85, 4, 11, 19, 14, 86, 101, 114, 105, 83, 105, 103, 110,
-<a name="l14425"></a>14425 44, 32, 73, 110, 99, 46, 49, 44, 48, 42, 6, 3, 85, 4, 11, 19, 35, 86, 101, 114, 105, 83, 105, 103, 110,
-<a name="l14426"></a>14426 32, 84, 105, 109, 101, 32, 83, 116, 97, 109, 112, 105, 110, 103, 32, 83, 101, 114, 118, 105, 99, 101, 32, 82, 111,
-<a name="l14427"></a>14427 111, 116, 49, 52, 48, 50, 6, 3, 85, 4, 11, 19, 43, 78, 79, 32, 76, 73, 65, 66, 73, 76, 73, 84, 89,
-<a name="l14428"></a>14428 32, 65, 67, 67, 69, 80, 84, 69, 68, 44, 32, 40, 99, 41, 57, 55, 32, 86, 101, 114, 105, 83, 105, 103, 110,
-<a name="l14429"></a>14429 44, 32, 73, 110, 99, 46, 48, 30, 23, 13, 57, 55, 48, 53, 49, 50, 48, 48, 48, 48, 48, 48, 90, 23, 13,
-<a name="l14430"></a>14430 48, 52, 48, 49, 48, 55, 50, 51, 53, 57, 53, 57, 90, 48, -127, -98, 49, 31, 48, 29, 6, 3, 85, 4, 10,
-<a name="l14431"></a>14431 19, 22, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 114, 117, 115, 116, 32, 78, 101, 116, 119, 111, 114, 107, 49,
-<a name="l14432"></a>14432 23, 48, 21, 6, 3, 85, 4, 11, 19, 14, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 49,
-<a name="l14433"></a>14433 44, 48, 42, 6, 3, 85, 4, 11, 19, 35, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 105, 109, 101, 32, 83,
-<a name="l14434"></a>14434 116, 97, 109, 112, 105, 110, 103, 32, 83, 101, 114, 118, 105, 99, 101, 32, 82, 111, 111, 116, 49, 52, 48, 50, 6,
-<a name="l14435"></a>14435 3, 85, 4, 11, 19, 43, 78, 79, 32, 76, 73, 65, 66, 73, 76, 73, 84, 89, 32, 65, 67, 67, 69, 80, 84,
-<a name="l14436"></a>14436 69, 68, 44, 32, 40, 99, 41, 57, 55, 32, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 48,
-<a name="l14437"></a>14437 -127, -97, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -127, -115, 0, 48, -127, -119, 2,
-<a name="l14438"></a>14438 -127, -127, 0, -45, 46, 32, -16, 104, 124, 44, 45, 46, -127, 28, -79, 6, -78, -89, 11, -73, 17, 13, 87, -38, 83,
-<a name="l14439"></a>14439 -40, 117, -29, -55, 51, 42, -78, -44, -10, 9, 91, 52, -13, -23, -112, -2, 9, 12, -48, -37, 27, 90, -71, -51, -25,
-<a name="l14440"></a>14440 -10, -120, -79, -99, -64, -121, 37, -21, 125, 88, 16, 115, 106, 120, -53, 113, 21, -3, -58, 88, -10, 41, -85, 88, 94,
-<a name="l14441"></a>14441 -106, 4, -3, 45, 98, 17, 88, -127, 28, -54, 113, -108, -43, 34, 88, 47, -43, -52, 20, 5, -124, 54, -70, -108, -86,
-<a name="l14442"></a>14442 -76, 77, 74, -23, -18, 59, 34, -83, 86, -103, 126, 33, -100, 108, -122, -64, 74, 71, -105, 106, -76, -90, 54, -43, -4,
-<a name="l14443"></a>14443 9, 45, -45, -76, 57, -101, 2, 3, 1, 0, 1, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 4, 5,
-<a name="l14444"></a>14444 0, 3, -127, -127, 0, 97, 85, 14, 62, 123, -57, -110, 18, 126, 17, 16, -114, 34, -52, -44, -77, 19, 43, 91, -24,
-<a name="l14445"></a>14445 68, -28, 11, 120, -98, -92, 126, -13, -89, 7, 114, 30, -30, 89, -17, -52, -124, -29, -119, -108, 76, -37, 78, 97, -17,
-<a name="l14446"></a>14446 -77, -92, -5, 70, 61, 80, 52, 11, -97, 112, 86, -10, -114, 42, 127, 23, -50, -27, 99, -65, 121, 105, 7, 115, 46,
-<a name="l14447"></a>14447 -80, -107, 40, -118, -11, -19, -86, -87, -46, 93, -51, 10, -54, 16, 9, -113, -50, -77, -81, 40, -106, -60, 121, 41, -124,
-<a name="l14448"></a>14448 -110, -36, -1, -70, 103, 66, 72, -90, -112, 16, -28, -65, 97, -8, -100, 83, -27, -109, -47, 115, 63, -8, -3, -99, 79,
-<a name="l14449"></a>14449 -124, -84, 85, -47, -3, 17, 99, 99, 48, -126, 4, 2, 48, -126, 3, 107, -96, 3, 2, 1, 2, 2, 16, 8, 122,
-<a name="l14450"></a>14450 109, 92, 111, 98, -109, 79, -70, -60, -3, 67, -31, 20, 24, -99, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1,
-<a name="l14451"></a>14451 1, 4, 5, 0, 48, -127, -98, 49, 31, 48, 29, 6, 3, 85, 4, 10, 19, 22, 86, 101, 114, 105, 83, 105, 103,
-<a name="l14452"></a>14452 110, 32, 84, 114, 117, 115, 116, 32, 78, 101, 116, 119, 111, 114, 107, 49, 23, 48, 21, 6, 3, 85, 4, 11, 19,
-<a name="l14453"></a>14453 14, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 49, 44, 48, 42, 6, 3, 85, 4, 11, 19,
-<a name="l14454"></a>14454 35, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 105, 109, 101, 32, 83, 116, 97, 109, 112, 105, 110, 103, 32, 83,
-<a name="l14455"></a>14455 101, 114, 118, 105, 99, 101, 32, 82, 111, 111, 116, 49, 52, 48, 50, 6, 3, 85, 4, 11, 19, 43, 78, 79, 32,
-<a name="l14456"></a>14456 76, 73, 65, 66, 73, 76, 73, 84, 89, 32, 65, 67, 67, 69, 80, 84, 69, 68, 44, 32, 40, 99, 41, 57, 55,
-<a name="l14457"></a>14457 32, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 48, 30, 23, 13, 48, 49, 48, 50, 50, 56,
-<a name="l14458"></a>14458 48, 48, 48, 48, 48, 48, 90, 23, 13, 48, 52, 48, 49, 48, 54, 50, 51, 53, 57, 53, 57, 90, 48, -127, -96,
-<a name="l14459"></a>14459 49, 23, 48, 21, 6, 3, 85, 4, 10, 19, 14, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46,
-<a name="l14460"></a>14460 49, 31, 48, 29, 6, 3, 85, 4, 11, 19, 22, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 114, 117, 115, 116,
-<a name="l14461"></a>14461 32, 78, 101, 116, 119, 111, 114, 107, 49, 59, 48, 57, 6, 3, 85, 4, 11, 19, 50, 84, 101, 114, 109, 115, 32,
-<a name="l14462"></a>14462 111, 102, 32, 117, 115, 101, 32, 97, 116, 32, 104, 116, 116, 112, 115, 58, 47, 47, 119, 119, 119, 46, 118, 101, 114,
-<a name="l14463"></a>14463 105, 115, 105, 103, 110, 46, 99, 111, 109, 47, 114, 112, 97, 32, 40, 99, 41, 48, 49, 49, 39, 48, 37, 6, 3,
-<a name="l14464"></a>14464 85, 4, 3, 19, 30, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, 105, 109, 101, 32, 83, 116, 97, 109, 112, 105,
-<a name="l14465"></a>14465 110, 103, 32, 83, 101, 114, 118, 105, 99, 101, 48, -126, 1, 34, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1,
-<a name="l14466"></a>14466 1, 1, 5, 0, 3, -126, 1, 15, 0, 48, -126, 1, 10, 2, -126, 1, 1, 0, -64, 122, 97, -121, -21, -78, -89,
-<a name="l14467"></a>14467 3, 99, 27, 43, 26, 97, -34, -128, -73, 21, 29, -96, -117, -112, 61, -69, 39, -110, -124, 20, 57, -21, -123, -50, 41,
-<a name="l14468"></a>14468 -110, 6, 102, 72, -92, 3, 79, -115, -24, 79, -89, -16, -81, 94, -47, 47, 25, -57, -111, -15, -75, -98, 123, -111, 33,
-<a name="l14469"></a>14469 -50, -23, -1, -29, 78, -16, -4, -81, -107, 88, -72, 99, 45, -26, -114, -10, 41, 24, -51, 112, -114, 80, -61, -19, -106,
-<a name="l14470"></a>14470 -69, 64, -37, -66, 37, -24, 66, 85, -42, -10, -123, -14, 6, -25, -117, -103, 28, 49, -13, 3, 15, -44, 76, -100, 36,
-<a name="l14471"></a>14471 42, -36, 27, 27, -113, -126, -13, -80, -17, -89, 77, -29, 20, -89, -32, -113, -42, -57, 104, -62, 97, 88, -87, 114, -44,
-<a name="l14472"></a>14472 -8, 48, 72, 79, -39, 47, 111, 99, 32, -39, -119, -54, -126, 123, -62, 75, -68, 40, -59, -127, 104, -25, -26, -126, 64,
-<a name="l14473"></a>14473 -84, 70, 58, -96, -7, 63, 54, -51, 76, -69, 84, 66, 90, 122, 101, 123, -2, -124, -28, -57, 71, 84, -84, -71, 61,
-<a name="l14474"></a>14474 -20, -128, -57, 26, -9, -60, 51, -127, -127, -55, 42, -107, -5, 127, 94, 58, -121, -112, 20, -37, -52, 46, 117, -14, -17,
-<a name="l14475"></a>14475 107, -26, 61, -87, 96, -66, 66, 1, -86, 79, -86, 91, -88, 63, 34, 49, -97, 18, 21, -7, 115, -95, 30, -126, -117,
-<a name="l14476"></a>14476 4, 43, -22, 70, 2, 76, 109, -113, 31, 80, 46, -107, 75, 42, 120, 6, -124, 116, 61, -111, -113, 44, 71, 49, 2,
-<a name="l14477"></a>14477 3, 1, 0, 1, -93, -127, -72, 48, -127, -75, 48, 64, 6, 8, 43, 6, 1, 5, 5, 7, 1, 1, 4, 52, 48,
-<a name="l14478"></a>14478 50, 48, 48, 6, 8, 43, 6, 1, 5, 5, 7, 48, 1, -122, 36, 104, 116, 116, 112, 58, 47, 47, 111, 99, 115,
-<a name="l14479"></a>14479 112, 46, 118, 101, 114, 105, 115, 105, 103, 110, 46, 99, 111, 109, 47, 111, 99, 115, 112, 47, 115, 116, 97, 116, 117,
-<a name="l14480"></a>14480 115, 48, 9, 6, 3, 85, 29, 19, 4, 2, 48, 0, 48, 68, 6, 3, 85, 29, 32, 4, 61, 48, 59, 48, 57,
-<a name="l14481"></a>14481 6, 11, 96, -122, 72, 1, -122, -8, 69, 1, 7, 1, 1, 48, 42, 48, 40, 6, 8, 43, 6, 1, 5, 5, 7,
-<a name="l14482"></a>14482 2, 1, 22, 28, 104, 116, 116, 112, 115, 58, 47, 47, 119, 119, 119, 46, 118, 101, 114, 105, 115, 105, 103, 110, 46,
-<a name="l14483"></a>14483 99, 111, 109, 47, 114, 112, 97, 48, 19, 6, 3, 85, 29, 37, 4, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5,
-<a name="l14484"></a>14484 7, 3, 8, 48, 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 6, -64, 48, 13, 6, 9, 42, -122, 72, -122, -9,
-<a name="l14485"></a>14485 13, 1, 1, 4, 5, 0, 3, -127, -127, 0, 45, -13, 79, 99, 96, 44, 24, -38, -11, 36, 15, 82, -77, 12, -21,
-<a name="l14486"></a>14486 -77, -68, 103, -123, -62, 35, -19, -113, 70, 13, -49, 26, 77, -66, -13, 124, 122, 32, 48, 50, 24, 104, -117, -110, -69,
-<a name="l14487"></a>14487 50, -103, -16, -109, -72, 59, 21, 6, 39, 123, 62, 2, 6, 0, -92, 33, -110, -124, 19, 10, -59, -104, -27, 64, 87,
-<a name="l14488"></a>14488 -59, 5, 37, -24, -81, -81, 17, 106, -87, -27, 59, -53, -23, 35, -10, -108, 41, 93, 64, 85, -13, -91, 83, -99, -56,
-<a name="l14489"></a>14489 54, 58, 57, 101, 8, 115, 115, -92, 50, -46, -81, -84, -65, -57, 5, 60, -1, 69, -20, -61, -24, -38, 36, -47, -50,
-<a name="l14490"></a>14490 99, -82, 9, -89, -5, -30, 27, -29, -3, 65, 10, 106, -106, 48, -126, 4, 18, 48, -126, 2, -6, -96, 3, 2, 1,
-<a name="l14491"></a>14491 2, 2, 15, 0, -63, 0, -117, 60, 60, -120, 17, -47, 62, -10, 99, -20, -33, 64, 48, 13, 6, 9, 42, -122, 72,
-<a name="l14492"></a>14492 -122, -9, 13, 1, 1, 4, 5, 0, 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121,
-<a name="l14493"></a>14493 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32,
-<a name="l14494"></a>14494 67, 111, 114, 112, 46, 49, 30, 48, 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116,
-<a name="l14495"></a>14495 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105,
-<a name="l14496"></a>14496 99, 114, 111, 115, 111, 102, 116, 32, 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 48, 30, 23,
-<a name="l14497"></a>14497 13, 57, 55, 48, 49, 49, 48, 48, 55, 48, 48, 48, 48, 90, 23, 13, 50, 48, 49, 50, 51, 49, 48, 55, 48,
-<a name="l14498"></a>14498 48, 48, 48, 90, 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121, 114, 105, 103, 104,
-<a name="l14499"></a>14499 116, 32, 40, 99, 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112,
-<a name="l14500"></a>14500 46, 49, 30, 48, 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114,
-<a name="l14501"></a>14501 112, 111, 114, 97, 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105, 99, 114, 111, 115,
-<a name="l14502"></a>14502 111, 102, 116, 32, 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 48, -126, 1, 34, 48, 13, 6,
-<a name="l14503"></a>14503 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, 48, -126, 1, 10, 2, -126, 1, 1,
-<a name="l14504"></a>14504 0, -87, 2, -67, -63, 112, -26, 59, -14, 78, 27, 40, -97, -105, 120, 94, 48, -22, -94, -87, -115, 37, 95, -8, -2,
-<a name="l14505"></a>14505 -107, 76, -93, -73, -2, -99, -94, 32, 62, 124, 81, -94, -101, -94, -113, 96, 50, 107, -47, 66, 100, 121, -18, -84, 118,
-<a name="l14506"></a>14506 -55, 84, -38, -14, -21, -100, -122, 28, -113, -97, -124, 102, -77, -59, 107, 122, 98, 35, -42, 29, 60, -34, 15, 1, -110,
-<a name="l14507"></a>14507 -24, -106, -60, -65, 45, 102, -102, -102, 104, 38, -103, -48, 58, 44, -65, 12, -75, 88, 38, -63, 70, -25, 10, 62, 56,
-<a name="l14508"></a>14508 -106, 44, -87, 40, 57, -88, -20, 73, -125, 66, -29, -124, 15, -69, -102, 108, 85, 97, -84, -126, 124, -95, 96, 45, 119,
-<a name="l14509"></a>14509 76, -23, -103, -76, 100, 59, -102, 80, 28, 49, 8, 36, 20, -97, -87, -25, -111, 43, 24, -26, 61, -104, 99, 20, 96,
-<a name="l14510"></a>14510 88, 5, 101, -97, 29, 55, 82, -121, -9, -89, -17, -108, 2, -58, 27, -45, -65, 85, 69, -77, -119, -128, -65, 58, -20,
-<a name="l14511"></a>14511 84, -108, 78, -82, -3, -89, 122, 109, 116, 78, -81, 24, -52, -106, 9, 40, 33, 0, 87, -112, 96, 105, 55, -69, 75,
-<a name="l14512"></a>14512 18, 7, 60, 86, -1, 91, -5, -92, 102, 10, 8, -90, -46, -127, 86, 87, -17, -74, 59, 94, 22, -127, 119, 4, -38,
-<a name="l14513"></a>14513 -10, -66, -82, -128, -107, -2, -80, -51, 127, -42, -89, 26, 114, 92, 60, -54, -68, -16, 8, -93, 34, 48, -77, 6, -123,
-<a name="l14514"></a>14514 -55, -77, 32, 119, 19, -123, -33, 2, 3, 1, 0, 1, -93, -127, -88, 48, -127, -91, 48, -127, -94, 6, 3, 85, 29,
-<a name="l14515"></a>14515 1, 4, -127, -102, 48, -127, -105, -128, 16, 91, -48, 112, -17, 105, 114, -98, 35, 81, 126, 20, -78, 77, -114, -1, -53,
-<a name="l14516"></a>14516 -95, 114, 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121, 114, 105, 103, 104, 116, 32,
-<a name="l14517"></a>14517 40, 99, 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 46, 49,
-<a name="l14518"></a>14518 30, 48, 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 111,
-<a name="l14519"></a>14519 114, 97, 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105, 99, 114, 111, 115, 111, 102,
-<a name="l14520"></a>14520 116, 32, 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, -126, 15, 0, -63, 0, -117, 60, 60, -120,
-<a name="l14521"></a>14521 17, -47, 62, -10, 99, -20, -33, 64, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 4, 5, 0, 3, -126,
-<a name="l14522"></a>14522 1, 1, 0, -107, -24, 11, -64, -115, -13, -105, 24, 53, -19, -72, 1, 36, -40, 119, 17, -13, 92, 96, 50, -97, -98,
-<a name="l14523"></a>14523 11, -53, 62, 5, -111, -120, -113, -55, 58, -26, 33, -14, -16, 87, -109, 44, -75, -96, 71, -56, 98, -17, -4, -41, -52,
-<a name="l14524"></a>14524 59, 59, 90, -87, 54, 84, 105, -2, 36, 109, 63, -55, -52, -86, -34, 5, 124, -35, 49, -115, 61, -97, 16, 112, 106,
-<a name="l14525"></a>14525 -69, -2, 18, 79, 24, 105, -64, -4, -48, 67, -29, 17, 90, 32, 79, -22, 98, 123, -81, -86, 25, -56, 43, 55, 37,
-<a name="l14526"></a>14526 45, -66, 101, -95, 18, -118, 37, 15, 99, -93, -9, 84, 28, -7, 33, -55, -42, 21, -13, 82, -84, 110, 67, 50, 7,
-<a name="l14527"></a>14527 -3, -126, 23, -8, -27, 103, 108, 13, 81, -10, -67, -15, 82, -57, -67, -25, -60, 48, -4, 32, 49, 9, -120, 29, -107,
-<a name="l14528"></a>14528 41, 26, 77, -43, 29, 2, -91, -15, -128, -32, 3, -76, 91, -12, -79, -35, -56, 87, -18, 101, 73, -57, 82, 84, -74,
-<a name="l14529"></a>14529 -76, 3, 40, 18, -1, -112, -42, -16, 8, -113, 126, -72, -105, -59, -85, 55, 44, -28, 122, -28, -88, 119, -29, 118, -96,
-<a name="l14530"></a>14530 0, -48, 106, 63, -63, -46, 54, -118, -32, 65, 18, -88, 53, 106, 27, 106, -37, 53, -31, -44, 28, 4, -28, -88, 69,
-<a name="l14531"></a>14531 4, -56, 90, 51, 56, 110, 77, 28, 13, 98, -73, 10, -94, -116, -45, -43, 84, 63, 70, -51, 28, 85, -90, 112, -37,
-<a name="l14532"></a>14532 18, 58, -121, -109, 117, -97, -89, -46, -96, 48, -126, 4, -55, 48, -126, 3, -79, -96, 3, 2, 1, 2, 2, 16, 106,
-<a name="l14533"></a>14533 11, -103, 79, -64, 0, -34, -86, 17, -44, -40, 64, -102, -88, -66, -26, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13,
-<a name="l14534"></a>14534 1, 1, 4, 5, 0, 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121, 114, 105, 103,
-<a name="l14535"></a>14535 104, 116, 32, 40, 99, 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114,
-<a name="l14536"></a>14536 112, 46, 49, 30, 48, 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111,
-<a name="l14537"></a>14537 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105, 99, 114, 111,
-<a name="l14538"></a>14538 115, 111, 102, 116, 32, 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 48, 30, 23, 13, 48, 48,
-<a name="l14539"></a>14539 49, 50, 49, 48, 48, 56, 48, 48, 48, 48, 90, 23, 13, 48, 53, 49, 49, 49, 50, 48, 56, 48, 48, 48, 48,
-<a name="l14540"></a>14540 90, 48, -127, -90, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 19, 48, 17, 6, 3, 85, 4,
-<a name="l14541"></a>14541 8, 19, 10, 87, 97, 115, 104, 105, 110, 103, 116, 111, 110, 49, 16, 48, 14, 6, 3, 85, 4, 7, 19, 7, 82,
-<a name="l14542"></a>14542 101, 100, 109, 111, 110, 100, 49, 30, 48, 28, 6, 3, 85, 4, 10, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102,
-<a name="l14543"></a>14543 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67,
-<a name="l14544"></a>14544 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 50, 48, 48, 48, 32, 77, 105, 99, 114, 111, 115, 111,
-<a name="l14545"></a>14545 102, 116, 32, 67, 111, 114, 112, 46, 49, 35, 48, 33, 6, 3, 85, 4, 3, 19, 26, 77, 105, 99, 114, 111, 115,
-<a name="l14546"></a>14546 111, 102, 116, 32, 67, 111, 100, 101, 32, 83, 105, 103, 110, 105, 110, 103, 32, 80, 67, 65, 48, -126, 1, 32, 48,
-<a name="l14547"></a>14547 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 13, 0, 48, -126, 1, 8, 2, -126,
-<a name="l14548"></a>14548 1, 1, 0, -94, -124, 21, 83, -40, 11, 48, 14, 52, -107, -1, 58, 27, -62, -13, 47, 123, 109, 55, 35, 77, -13,
-<a name="l14549"></a>14549 -46, -116, -27, -3, -81, -3, -59, 2, 52, 31, 36, -57, -27, -95, -36, 84, -20, 126, 2, 116, 71, -85, -37, 50, 88,
-<a name="l14550"></a>14550 22, 20, 81, 41, 56, -15, 126, -78, -76, -116, 58, 71, -75, 57, 78, 110, 84, -62, 49, 12, 58, 109, -5, -51, -51,
-<a name="l14551"></a>14551 -53, 80, -100, 27, -82, -89, -40, -39, 74, 38, 63, -75, -59, -53, -113, -106, -30, 73, -14, 109, -40, -23, -106, 62, -34,
-<a name="l14552"></a>14552 5, -49, -16, -90, 85, 55, -83, 47, 96, -51, -128, 97, 66, -95, 73, 84, 74, 15, 24, -73, 75, -39, -109, -103, 48,
-<a name="l14553"></a>14553 90, 71, 117, 100, -76, -45, -69, -35, -74, -85, 12, -99, 79, -72, 115, 59, 24, 58, -86, -76, -121, -116, -80, -120, -80,
-<a name="l14554"></a>14554 77, 79, 31, 78, 17, -75, 51, -128, -33, 13, 58, 100, 111, 68, -57, 52, -67, 74, -109, -101, -68, -90, 29, -7, 5,
-<a name="l14555"></a>14555 35, 78, 96, 41, -113, -52, 42, -14, -124, -102, -103, -83, -88, -37, 10, 112, 123, -42, 52, 65, -112, -91, -73, 102, -57,
-<a name="l14556"></a>14556 92, 27, 29, -93, 51, 14, -101, 84, 3, 26, 63, -104, -112, -72, -52, -25, 61, 4, 116, 67, 28, -113, -9, 57, -26,
-<a name="l14557"></a>14557 -77, -84, 72, 122, 107, 42, 14, 98, 1, 97, 57, 118, 110, -3, 62, -104, 7, 75, 20, -15, 1, 70, -3, 21, 0,
-<a name="l14558"></a>14558 -32, 71, -38, 79, -28, 5, -28, -128, 37, 2, 1, 3, -93, -126, 1, 40, 48, -126, 1, 36, 48, 19, 6, 3, 85,
-<a name="l14559"></a>14559 29, 37, 4, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 3, 48, -127, -94, 6, 3, 85, 29, 1, 4,
-<a name="l14560"></a>14560 -127, -102, 48, -127, -105, -128, 16, 91, -48, 112, -17, 105, 114, -98, 35, 81, 126, 20, -78, 77, -114, -1, -53, -95, 114,
-<a name="l14561"></a>14561 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99,
-<a name="l14562"></a>14562 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 46, 49, 30, 48,
-<a name="l14563"></a>14563 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 111, 114, 97,
-<a name="l14564"></a>14564 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32,
-<a name="l14565"></a>14565 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, -126, 15, 0, -63, 0, -117, 60, 60, -120, 17, -47,
-<a name="l14566"></a>14566 62, -10, 99, -20, -33, 64, 48, 16, 6, 9, 43, 6, 1, 4, 1, -126, 55, 21, 1, 4, 3, 2, 1, 0, 48,
-<a name="l14567"></a>14567 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 41, 92, -71, 27, -74, -51, 51, -18, -69, -98, 89, 125, -9, -27, -54,
-<a name="l14568"></a>14568 46, -60, 13, 52, 40, 48, 25, 6, 9, 43, 6, 1, 4, 1, -126, 55, 20, 2, 4, 12, 30, 10, 0, 83, 0,
-<a name="l14569"></a>14569 117, 0, 98, 0, 67, 0, 65, 48, 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 1, 70, 48, 15, 6, 3, 85,
-<a name="l14570"></a>14570 29, 19, 1, 1, -1, 4, 5, 48, 3, 1, 1, -1, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 4,
-<a name="l14571"></a>14571 5, 0, 3, -126, 1, 1, 0, 69, 88, -30, -102, 65, 127, -4, -99, -65, 72, 119, 119, -82, -116, -39, -26, 25, -59,
-<a name="l14572"></a>14572 87, -76, 26, -67, -76, -71, 95, 2, -95, 69, 106, 57, 89, -7, -71, 39, -100, 45, 77, -98, -4, -94, -28, 56, -118,
-<a name="l14573"></a>14573 56, 100, 34, 66, -33, -71, 47, 42, -49, -73, -42, 6, -54, -21, 42, -65, -32, 26, -123, 124, -37, 81, 8, 61, -12,
-<a name="l14574"></a>14574 34, -45, -44, -64, 109, -120, -127, 21, 68, 95, 100, -125, 100, -60, -87, -108, 44, -118, -37, -112, 55, 74, 15, -73, -24,
-<a name="l14575"></a>14575 -44, 97, -113, 118, 118, -31, -39, 37, -1, 36, -124, -107, -115, 4, 86, 84, -108, -95, 28, 58, 62, -126, -68, -18, -91,
-<a name="l14576"></a>14576 -121, -116, 28, -116, 75, 121, 95, -75, 73, -6, 94, 50, 105, 58, 31, 84, -83, 117, 77, -33, 100, -25, 48, 60, -37,
-<a name="l14577"></a>14577 100, 73, 68, -5, -5, -60, 28, 66, 113, -26, -96, 61, 69, -18, 107, 0, -97, -84, 66, -67, -70, 17, -77, 86, -28,
-<a name="l14578"></a>14578 -5, -43, -94, 42, -127, -40, 31, 78, -94, 85, -66, 39, -113, 112, -90, -94, 108, 27, -1, 84, -118, -126, -68, -127, 75,
-<a name="l14579"></a>14579 -90, -95, -79, 102, 122, -87, 23, -89, -53, 6, -64, 71, -21, -90, -77, -23, 49, 21, 83, 61, 42, 4, -65, -1, 115,
-<a name="l14580"></a>14580 72, -36, -117, 39, 67, -4, 99, -24, -18, 36, -121, 91, -66, 54, -47, -24, 49, -11, 50, -39, 94, -33, 121, 122, -70,
-<a name="l14581"></a>14581 48, -84, 105, -122, 74, -5, -116, 17, -65, 27, -115, 84, 89, 48, -126, 5, 15, 48, -126, 3, -9, -96, 3, 2, 1,
-<a name="l14582"></a>14582 2, 2, 10, 97, 7, 17, 67, 0, 0, 0, 0, 0, 52, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1,
-<a name="l14583"></a>14583 5, 5, 0, 48, -127, -90, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 19, 48, 17, 6, 3,
-<a name="l14584"></a>14584 85, 4, 8, 19, 10, 87, 97, 115, 104, 105, 110, 103, 116, 111, 110, 49, 16, 48, 14, 6, 3, 85, 4, 7, 19,
-<a name="l14585"></a>14585 7, 82, 101, 100, 109, 111, 110, 100, 49, 30, 48, 28, 6, 3, 85, 4, 10, 19, 21, 77, 105, 99, 114, 111, 115,
-<a name="l14586"></a>14586 111, 102, 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19,
-<a name="l14587"></a>14587 34, 67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 50, 48, 48, 48, 32, 77, 105, 99, 114, 111,
-<a name="l14588"></a>14588 115, 111, 102, 116, 32, 67, 111, 114, 112, 46, 49, 35, 48, 33, 6, 3, 85, 4, 3, 19, 26, 77, 105, 99, 114,
-<a name="l14589"></a>14589 111, 115, 111, 102, 116, 32, 67, 111, 100, 101, 32, 83, 105, 103, 110, 105, 110, 103, 32, 80, 67, 65, 48, 30, 23,
-<a name="l14590"></a>14590 13, 48, 50, 48, 53, 50, 53, 48, 48, 53, 53, 52, 56, 90, 23, 13, 48, 51, 49, 49, 50, 53, 48, 49, 48,
-<a name="l14591"></a>14591 53, 52, 56, 90, 48, -127, -95, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 19, 48, 17, 6,
-<a name="l14592"></a>14592 3, 85, 4, 8, 19, 10, 87, 97, 115, 104, 105, 110, 103, 116, 111, 110, 49, 16, 48, 14, 6, 3, 85, 4, 7,
-<a name="l14593"></a>14593 19, 7, 82, 101, 100, 109, 111, 110, 100, 49, 30, 48, 28, 6, 3, 85, 4, 10, 19, 21, 77, 105, 99, 114, 111,
-<a name="l14594"></a>14594 115, 111, 102, 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 43, 48, 41, 6, 3, 85, 4, 11,
-<a name="l14595"></a>14595 19, 34, 67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 50, 48, 48, 50, 32, 77, 105, 99, 114,
-<a name="l14596"></a>14596 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 46, 49, 30, 48, 28, 6, 3, 85, 4, 3, 19, 21, 77, 105, 99,
-<a name="l14597"></a>14597 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 48, -126, 1, 34, 48, 13, 6,
-<a name="l14598"></a>14598 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, 48, -126, 1, 10, 2, -126, 1, 1,
-<a name="l14599"></a>14599 0, -86, -103, -67, 57, -88, 24, 39, -12, 43, 61, 11, 76, 63, 124, 119, 46, -89, -53, -75, -47, -116, 13, -62, 58,
-<a name="l14600"></a>14600 116, -41, -109, -75, -32, -96, 75, 63, 89, 94, -50, 69, 79, -102, 121, 41, -15, 73, -52, 26, 71, -18, 85, -62, 8,
-<a name="l14601"></a>14601 62, 18, 32, -8, 85, -14, -18, 95, -45, -32, -54, -106, -68, 48, -34, -2, 88, -56, 39, 50, -48, -123, 84, -24, -16,
-<a name="l14602"></a>14602 -111, 16, -69, -13, 43, -66, 25, -27, 3, -101, 11, -122, 29, -13, -80, 57, -116, -72, -3, 11, 29, 60, 115, 38, -84,
-<a name="l14603"></a>14603 87, 43, -54, 41, -94, 21, -112, -126, 21, -30, 119, -93, 64, 82, 3, -117, -99, -62, 112, -70, 31, -23, 52, -10, -13,
-<a name="l14604"></a>14604 53, -110, 78, 85, -125, -8, -38, 48, -74, 32, -34, 87, 6, -75, 90, 66, 6, -34, 89, -53, -14, -33, -90, -67, 21,
-<a name="l14605"></a>14605 71, 113, 25, 37, 35, -46, -53, 111, -101, 25, 121, -33, 106, 91, -15, 118, 5, 121, 41, -4, -61, 86, -54, -113, 68,
-<a name="l14606"></a>14606 8, -123, 85, -118, -53, -56, 15, 70, 75, 85, -53, -116, -106, 119, 74, -121, -24, -87, 65, 6, -57, -1, 13, -23, 104,
-<a name="l14607"></a>14607 87, 99, 114, -61, 105, 87, -76, 67, -49, 50, 58, 48, -36, 27, -23, -43, 67, 38, 42, 121, -2, -107, -37, 34, 103,
-<a name="l14608"></a>14608 36, -55, 47, -48, 52, -29, -26, -5, 81, 73, -122, -72, 60, -48, 37, 95, -42, -20, -98, 3, 97, -121, -87, 104, 64,
-<a name="l14609"></a>14609 -57, -8, -30, 3, -26, -49, 5, 2, 3, 1, 0, 1, -93, -126, 1, 64, 48, -126, 1, 60, 48, 14, 6, 3, 85,
-<a name="l14610"></a>14610 29, 15, 1, 1, -1, 4, 4, 3, 2, 6, -64, 48, 19, 6, 3, 85, 29, 37, 4, 12, 48, 10, 6, 8, 43,
-<a name="l14611"></a>14611 6, 1, 5, 5, 7, 3, 3, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 107, -56, -58, 81, 32, -16, -76,
-<a name="l14612"></a>14612 47, -45, -96, -74, -82, 127, 94, 38, -78, -72, -121, 82, 41, 48, -127, -87, 6, 3, 85, 29, 35, 4, -127, -95, 48,
-<a name="l14613"></a>14613 -127, -98, -128, 20, 41, 92, -71, 27, -74, -51, 51, -18, -69, -98, 89, 125, -9, -27, -54, 46, -60, 13, 52, 40, -95,
-<a name="l14614"></a>14614 116, -92, 114, 48, 112, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67, 111, 112, 121, 114, 105, 103, 104, 116,
-<a name="l14615"></a>14615 32, 40, 99, 41, 32, 49, 57, 57, 55, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 46,
-<a name="l14616"></a>14616 49, 30, 48, 28, 6, 3, 85, 4, 11, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112,
-<a name="l14617"></a>14617 111, 114, 97, 116, 105, 111, 110, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 77, 105, 99, 114, 111, 115, 111,
-<a name="l14618"></a>14618 102, 116, 32, 82, 111, 111, 116, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, -126, 16, 106, 11, -103, 79, -64, 0,
-<a name="l14619"></a>14619 -34, -86, 17, -44, -40, 64, -102, -88, -66, -26, 48, 74, 6, 3, 85, 29, 31, 4, 67, 48, 65, 48, 63, -96, 61,
-<a name="l14620"></a>14620 -96, 59, -122, 57, 104, 116, 116, 112, 58, 47, 47, 99, 114, 108, 46, 109, 105, 99, 114, 111, 115, 111, 102, 116, 46,
-<a name="l14621"></a>14621 99, 111, 109, 47, 112, 107, 105, 47, 99, 114, 108, 47, 112, 114, 111, 100, 117, 99, 116, 115, 47, 67, 111, 100, 101,
-<a name="l14622"></a>14622 83, 105, 103, 110, 80, 67, 65, 46, 99, 114, 108, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 5, 5,
-<a name="l14623"></a>14623 0, 3, -126, 1, 1, 0, 53, 35, -3, 19, 84, -4, -23, -36, -16, -35, 12, 20, 122, -6, -89, -77, -50, -3, -89,
-<a name="l14624"></a>14624 58, -56, -70, -27, -25, -10, 3, -5, 83, -37, -89, -103, -87, -96, -101, 54, -100, 3, -21, -126, 71, 28, 33, -67, 20,
-<a name="l14625"></a>14625 -53, -25, 103, 64, 9, -57, 22, -111, 2, 85, -50, 67, 66, -76, -51, 27, 93, -80, -13, 50, 4, 61, 18, -27, 29,
-<a name="l14626"></a>14626 -89, 7, -89, -113, -93, 126, 69, 85, 118, 27, -106, -107, -111, 105, -16, -35, 56, -13, 72, -119, -17, 112, 64, -73, -37,
-<a name="l14627"></a>14627 -75, 85, -128, -64, 3, -60, 46, -74, 40, -36, 10, -126, 14, -57, 67, -29, 122, 72, 93, -72, 6, -119, -110, 64, 108,
-<a name="l14628"></a>14628 110, -59, -36, -8, -102, -17, 11, -66, 33, 10, -116, 47, 58, -75, -19, -89, -50, 113, -121, 104, 35, -31, -77, -28, 24,
-<a name="l14629"></a>14629 125, -72, 71, 1, -91, 43, -60, 88, -53, -78, -119, 108, 95, -3, -45, 44, -60, 111, -72, 35, -78, 13, -1, 60, -14,
-<a name="l14630"></a>14630 17, 69, 116, -14, 9, 6, -103, 24, -35, 111, -64, -122, 1, 24, 18, 29, 43, 22, -81, 86, -17, 101, 51, -95, -22,
-<a name="l14631"></a>14631 103, 78, -12, 75, -126, -85, -23, 15, -36, 1, -6, -33, 96, 127, 102, 71, 93, -53, 44, 112, -52, 123, 78, -39, 6,
-<a name="l14632"></a>14632 -72, 110, -116, 12, -2, 98, 30, 66, -7, -109, 124, -94, -85, 10, -98, -48, 35, 16, -82, 77, 123, 39, -111, 111, 38,
-<a name="l14633"></a>14633 -66, 104, -6, -90, 63, -97, 35, -21, -56, -99, -69, -121, 49, -126, 5, 15, 48, -126, 5, 11, 2, 1, 1, 48, -127,
-<a name="l14634"></a>14634 -75, 48, -127, -90, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 19, 48, 17, 6, 3, 85, 4,
-<a name="l14635"></a>14635 8, 19, 10, 87, 97, 115, 104, 105, 110, 103, 116, 111, 110, 49, 16, 48, 14, 6, 3, 85, 4, 7, 19, 7, 82,
-<a name="l14636"></a>14636 101, 100, 109, 111, 110, 100, 49, 30, 48, 28, 6, 3, 85, 4, 10, 19, 21, 77, 105, 99, 114, 111, 115, 111, 102,
-<a name="l14637"></a>14637 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 43, 48, 41, 6, 3, 85, 4, 11, 19, 34, 67,
-<a name="l14638"></a>14638 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 50, 48, 48, 48, 32, 77, 105, 99, 114, 111, 115, 111,
-<a name="l14639"></a>14639 102, 116, 32, 67, 111, 114, 112, 46, 49, 35, 48, 33, 6, 3, 85, 4, 3, 19, 26, 77, 105, 99, 114, 111, 115,
-<a name="l14640"></a>14640 111, 102, 116, 32, 67, 111, 100, 101, 32, 83, 105, 103, 110, 105, 110, 103, 32, 80, 67, 65, 2, 10, 97, 7, 17,
-<a name="l14641"></a>14641 67, 0, 0, 0, 0, 0, 52, 48, 12, 6, 8, 42, -122, 72, -122, -9, 13, 2, 5, 5, 0, -96, -127, -36, 48,
-<a name="l14642"></a>14642 20, 6, 9, 43, 6, 1, 4, 1, -126, 55, 40, 1, 49, 7, 3, 5, 0, 3, 0, 0, 0, 48, 25, 6, 9,
-<a name="l14643"></a>14643 42, -122, 72, -122, -9, 13, 1, 9, 3, 49, 12, 6, 10, 43, 6, 1, 4, 1, -126, 55, 2, 1, 4, 48, 28,
-<a name="l14644"></a>14644 6, 10, 43, 6, 1, 4, 1, -126, 55, 2, 1, 11, 49, 14, 48, 12, 6, 10, 43, 6, 1, 4, 1, -126, 55,
-<a name="l14645"></a>14645 2, 1, 21, 48, 31, 6, 9, 42, -122, 72, -122, -9, 13, 1, 9, 4, 49, 18, 4, 16, 90, 7, 4, -83, -45,
-<a name="l14646"></a>14646 91, -18, 73, 48, 65, -96, -43, -40, -66, -122, -48, 48, 106, 6, 10, 43, 6, 1, 4, 1, -126, 55, 2, 1, 12,
-<a name="l14647"></a>14647 49, 92, 48, 90, -96, 48, -128, 46, 0, 65, 0, 114, 0, 105, 0, 97, 0, 108, 0, 32, 0, 70, 0, 111, 0,
-<a name="l14648"></a>14648 110, 0, 116, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 51, 0, 46,
-<a name="l14649"></a>14649 0, 48, 0, 48, -95, 38, -128, 36, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 109, 105, 99, 114, 111, 115,
-<a name="l14650"></a>14650 111, 102, 116, 46, 99, 111, 109, 47, 116, 121, 112, 111, 103, 114, 97, 112, 104, 121, 32, 48, 13, 6, 9, 42, -122,
-<a name="l14651"></a>14651 72, -122, -9, 13, 1, 1, 1, 5, 0, 4, -126, 1, 0, 78, 55, 23, -30, 26, 55, -103, 89, 39, 11, -55, -105,
-<a name="l14652"></a>14652 42, -21, 80, -32, 97, 2, -42, 35, -122, 72, -99, -16, -108, -67, -103, 29, 96, -63, 42, 71, -81, -73, -113, 89, 56,
-<a name="l14653"></a>14653 5, -13, -92, -125, -105, -107, 123, -15, 4, 36, 8, 83, -52, 109, -54, -57, -57, 25, 64, -111, 43, 79, -57, -68, -105,
-<a name="l14654"></a>14654 -82, 28, 58, -38, 124, 119, -44, -127, 117, -114, 92, 34, 60, -103, 7, 82, -118, -2, -29, -80, 103, -25, 14, 30, -12,
-<a name="l14655"></a>14655 -19, 46, 116, -109, 70, -118, 18, -106, 76, 72, 11, 13, -1, 95, -61, -118, 59, -22, -69, -33, 91, 8, 10, 92, -1,
-<a name="l14656"></a>14656 -93, 12, 77, -23, 81, 71, 84, -68, -126, -43, 36, -27, -127, -22, -67, -63, -73, -79, -62, 10, 121, 114, -106, 100, -83,
-<a name="l14657"></a>14657 -14, 102, -126, -6, -11, 0, -122, 28, -17, -43, -91, -90, 35, -107, 19, 61, 33, -86, -102, -13, -78, 76, -23, 60, -31,
-<a name="l14658"></a>14658 80, -106, -105, -123, -9, 80, -103, -41, -120, 21, 63, -104, -111, 88, 18, 66, -38, 84, 122, -124, -101, -92, 50, 54, 68,
-<a name="l14659"></a>14659 -64, -85, -9, -93, -98, 8, 21, 23, -4, 104, 85, -96, 83, 60, 88, -19, -58, 42, -12, -102, 125, -51, 48, 66, -116,
-<a name="l14660"></a>14660 -122, 5, 6, -46, -58, -27, 27, -102, -17, -11, 50, -48, -45, -119, -33, -68, -97, 117, -115, -50, -101, 121, 98, 43, -6,
-<a name="l14661"></a>14661 20, 43, 19, -77, -92, 30, 8, -92, 87, 63, -116, 89, -6, -5, -59, -6, -80, -45, -4, -95, -126, 2, 76, 48, -126,
-<a name="l14662"></a>14662 2, 72, 6, 9, 42, -122, 72, -122, -9, 13, 1, 9, 6, 49, -126, 2, 57, 48, -126, 2, 53, 2, 1, 1, 48,
-<a name="l14663"></a>14663 -127, -77, 48, -127, -98, 49, 31, 48, 29, 6, 3, 85, 4, 10, 19, 22, 86, 101, 114, 105, 83, 105, 103, 110, 32,
-<a name="l14664"></a>14664 84, 114, 117, 115, 116, 32, 78, 101, 116, 119, 111, 114, 107, 49, 23, 48, 21, 6, 3, 85, 4, 11, 19, 14, 86,
-<a name="l14665"></a>14665 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 49, 44, 48, 42, 6, 3, 85, 4, 11, 19, 35, 86,
-<a name="l14666"></a>14666 101, 114, 105, 83, 105, 103, 110, 32, 84, 105, 109, 101, 32, 83, 116, 97, 109, 112, 105, 110, 103, 32, 83, 101, 114,
-<a name="l14667"></a>14667 118, 105, 99, 101, 32, 82, 111, 111, 116, 49, 52, 48, 50, 6, 3, 85, 4, 11, 19, 43, 78, 79, 32, 76, 73,
-<a name="l14668"></a>14668 65, 66, 73, 76, 73, 84, 89, 32, 65, 67, 67, 69, 80, 84, 69, 68, 44, 32, 40, 99, 41, 57, 55, 32, 86,
-<a name="l14669"></a>14669 101, 114, 105, 83, 105, 103, 110, 44, 32, 73, 110, 99, 46, 2, 16, 8, 122, 109, 92, 111, 98, -109, 79, -70, -60,
-<a name="l14670"></a>14670 -3, 67, -31, 20, 24, -99, 48, 12, 6, 8, 42, -122, 72, -122, -9, 13, 2, 5, 5, 0, -96, 89, 48, 24, 6,
-<a name="l14671"></a>14671 9, 42, -122, 72, -122, -9, 13, 1, 9, 3, 49, 11, 6, 9, 42, -122, 72, -122, -9, 13, 1, 7, 1, 48, 28,
-<a name="l14672"></a>14672 6, 9, 42, -122, 72, -122, -9, 13, 1, 9, 5, 49, 15, 23, 13, 48, 50, 49, 48, 49, 56, 50, 49, 49, 55,
-<a name="l14673"></a>14673 51, 52, 90, 48, 31, 6, 9, 42, -122, 72, -122, -9, 13, 1, 9, 4, 49, 18, 4, 16, 12, 105, -5, 26, 94,
-<a name="l14674"></a>14674 53, 104, 20, -112, -111, 115, 35, 117, -35, -128, 95, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5,
-<a name="l14675"></a>14675 0, 4, -126, 1, 0, -90, 107, 37, 59, -30, 84, -46, -81, -9, -25, 55, -113, -111, 79, -41, 0, 87, 17, 54, -96,
-<a name="l14676"></a>14676 -93, 84, -24, -86, 9, 21, 10, -79, -30, 15, 4, 120, 56, -48, -23, -66, -34, 10, 63, -116, 65, -104, -80, 44, 88,
-<a name="l14677"></a>14677 59, 86, -11, -48, 67, 68, -45, -34, 28, 38, -86, 122, -25, -17, 41, -34, 30, -120, 64, 111, 106, -112, 66, -33, 18,
-<a name="l14678"></a>14678 123, 18, -79, -70, 113, 20, -88, -21, -89, -93, 14, -119, 115, -23, 3, -128, -76, -106, -61, 16, -27, -26, -29, 51, 118,
-<a name="l14679"></a>14679 -101, -38, -25, 126, 109, -20, 56, 21, 49, -63, -3, -20, 33, 106, -119, 84, -4, 80, -45, -2, 98, -115, 56, 5, 102,
-<a name="l14680"></a>14680 -16, 120, 56, -29, -127, 31, 107, -114, 43, 44, 50, -111, -72, -40, -1, 7, 10, -124, -119, 76, -106, 63, 109, -40, -99,
-<a name="l14681"></a>14681 -123, 97, 59, 38, -103, 62, -69, 115, -105, -95, 10, -78, -98, -87, 46, 56, -93, 14, 95, -77, 83, -23, -37, -97, 3,
-<a name="l14682"></a>14682 -90, 28, 29, -85, 74, 71, 99, 14, 21, -102, -112, 2, -3, 32, -11, 80, -48, -108, 34, 120, 9, -123, 116, -101, 77,
-<a name="l14683"></a>14683 -17, -21, 34, 64, -84, -72, -82, 117, 93, -84, -64, -114, 58, -7, -9, -73, 52, 91, 92, -31, -101, -6, -17, -60, 36,
-<a name="l14684"></a>14684 52, 74, 94, -107, -5, -31, 116, 28, -102, 78, -84, 118, -82, 127, 22, 6, 66, -14, -11, 113, 77, -70, -44, -14, 52,
-<a name="l14685"></a>14685 -9, 24, -43, -104, 68, 80, -14, 99, -5, 114, 75, 0
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/AudioDevice_8cpp-source.htm b/doc/html/AudioDevice_8cpp-source.htm
deleted file mode 100755
index 68dabd2..0000000
--- a/doc/html/AudioDevice_8cpp-source.htm
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>AudioDevice.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/AudioDevice.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/AudioResource.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/Listener.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00040"></a>00040 <span class="comment">// Static member data</span>
-<a name="l00042"></a>00042 <span class="comment"></span>AudioDevice* AudioDevice::ourInstance;
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00048"></a>00048 AudioDevice::AudioDevice() :
-<a name="l00049"></a>00049 myRefCount(0)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="comment">// Create the device</span>
-<a name="l00052"></a>00052 myDevice = alcOpenDevice(NULL);
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (myDevice)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="comment">// Create the context</span>
-<a name="l00057"></a>00057 myContext = alcCreateContext(myDevice, NULL);
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (myContext)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">// Set the context as the current one (we'll only need one)</span>
-<a name="l00062"></a>00062 alcMakeContextCurrent(myContext);
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="comment">// Initialize the listener, located at the origin and looking along the Z axis</span>
-<a name="l00065"></a>00065 Listener::SetPosition(0.f, 0.f, 0.f);
-<a name="l00066"></a>00066 Listener::SetTarget(0.f, 0.f, -1.f);
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068 <span class="keywordflow">else</span>
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create the audio context"</span> &lt;&lt; std::endl;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open the audio device"</span> &lt;&lt; std::endl;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00083"></a>00083 AudioDevice::~AudioDevice()
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="comment">// Destroy the context</span>
-<a name="l00086"></a>00086 alcMakeContextCurrent(NULL);
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (myContext)
-<a name="l00088"></a>00088 alcDestroyContext(myContext);
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">// Destroy the device</span>
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (myDevice)
-<a name="l00092"></a>00092 alcCloseDevice(myDevice);
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00099"></a>00099 AudioDevice&amp; AudioDevice::GetInstance()
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="comment">// Create the audio device if it doesn't exist</span>
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (!ourInstance)
-<a name="l00103"></a>00103 ourInstance = <span class="keyword">new</span> AudioDevice;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> *ourInstance;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00112"></a>00112 <span class="keywordtype">void</span> AudioDevice::AddReference()
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="comment">// Create the audio device if it doesn't exist</span>
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (!ourInstance)
-<a name="l00116"></a>00116 ourInstance = <span class="keyword">new</span> AudioDevice;
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="comment">// Increase the references count</span>
-<a name="l00119"></a>00119 ourInstance-&gt;myRefCount++;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00126"></a>00126 <span class="keywordtype">void</span> AudioDevice::RemoveReference()
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="comment">// Decrease the references count</span>
-<a name="l00129"></a>00129 ourInstance-&gt;myRefCount--;
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="comment">// Destroy the audio device if the references count reaches 0</span>
-<a name="l00132"></a>00132 <span class="keywordflow">if</span> (ourInstance-&gt;myRefCount == 0)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keyword">delete</span> ourInstance;
-<a name="l00135"></a>00135 ourInstance = NULL;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139
-<a name="l00143"></a>00143 ALCdevice* AudioDevice::GetDevice()<span class="keyword"> const</span>
-<a name="l00144"></a>00144 <span class="keyword"></span>{
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> myDevice;
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148
-<a name="l00152"></a>00152 ALenum AudioDevice::GetFormatFromChannelsCount(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount)<span class="keyword"> const</span>
-<a name="l00153"></a>00153 <span class="keyword"></span>{
-<a name="l00154"></a>00154 <span class="comment">// Find the good format according to the number of channels</span>
-<a name="l00155"></a>00155 <span class="keywordflow">switch</span> (ChannelsCount)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="keywordflow">case</span> 1 : <span class="keywordflow">return</span> AL_FORMAT_MONO16;
-<a name="l00158"></a>00158 <span class="keywordflow">case</span> 2 : <span class="keywordflow">return</span> AL_FORMAT_STEREO16;
-<a name="l00159"></a>00159 <span class="keywordflow">case</span> 4 : <span class="keywordflow">return</span> alGetEnumValue(<span class="stringliteral">"AL_FORMAT_QUAD16"</span>);
-<a name="l00160"></a>00160 <span class="keywordflow">case</span> 6 : <span class="keywordflow">return</span> alGetEnumValue(<span class="stringliteral">"AL_FORMAT_51CHN16"</span>);
-<a name="l00161"></a>00161 <span class="keywordflow">case</span> 7 : <span class="keywordflow">return</span> alGetEnumValue(<span class="stringliteral">"AL_FORMAT_61CHN16"</span>);
-<a name="l00162"></a>00162 <span class="keywordflow">case</span> 8 : <span class="keywordflow">return</span> alGetEnumValue(<span class="stringliteral">"AL_FORMAT_71CHN16"</span>);
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keywordflow">return</span> 0;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 } <span class="comment">// namespace priv</span>
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/AudioDevice_8hpp-source.htm b/doc/html/AudioDevice_8hpp-source.htm
deleted file mode 100755
index 68c3a8c..0000000
--- a/doc/html/AudioDevice_8hpp-source.htm
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>AudioDevice.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_AUDIODEVICE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_AUDIODEVICE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;set&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">class </span>AudioResource;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">namespace </span>priv
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042
-<a name="l00048"></a>00048 <span class="keyword">class </span>AudioDevice
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keyword">public</span> :
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 <span class="keyword">static</span> AudioDevice&amp; GetInstance();
-<a name="l00059"></a>00059
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keywordtype">void</span> AddReference();
-<a name="l00065"></a>00065
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keywordtype">void</span> RemoveReference();
-<a name="l00071"></a>00071
-<a name="l00078"></a>00078 ALCdevice* GetDevice() <span class="keyword">const</span>;
-<a name="l00079"></a>00079
-<a name="l00088"></a>00088 ALenum GetFormatFromChannelsCount(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount) <span class="keyword">const</span>;
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keyword">private</span> :
-<a name="l00091"></a>00091
-<a name="l00096"></a>00096 AudioDevice();
-<a name="l00097"></a>00097
-<a name="l00102"></a>00102 ~AudioDevice();
-<a name="l00103"></a>00103
-<a name="l00105"></a>00105 <span class="comment">// Static member data</span>
-<a name="l00107"></a>00107 <span class="comment"></span> <span class="keyword">static</span> AudioDevice* ourInstance;
-<a name="l00108"></a>00108
-<a name="l00110"></a>00110 <span class="comment">// Member data</span>
-<a name="l00112"></a>00112 <span class="comment"></span> ALCdevice* myDevice;
-<a name="l00113"></a>00113 ALCcontext* myContext;
-<a name="l00114"></a>00114 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myRefCount;
-<a name="l00115"></a>00115 };
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 } <span class="comment">// namespace priv</span>
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 } <span class="comment">// namespace sf</span>
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="preprocessor">#endif // SFML_AUDIODEVICE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/AudioResource_8cpp-source.htm b/doc/html/AudioResource_8cpp-source.htm
deleted file mode 100755
index bf6eb5b..0000000
--- a/doc/html/AudioResource_8cpp-source.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>AudioResource.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/AudioResource.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/AudioDevice.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a><a class="code" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">00037</a> <a class="code" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705" title="Default constructor.">AudioResource::AudioResource</a>()
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 priv::AudioDevice::AddReference();
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00046"></a><a class="code" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">00046</a> <a class="code" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705" title="Default constructor.">AudioResource::AudioResource</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>&amp;)
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 priv::AudioDevice::AddReference();
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00055"></a><a class="code" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">00055</a> <a class="code" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702" title="Destructor.">AudioResource::~AudioResource</a>()
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 priv::AudioDevice::RemoveReference();
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/AudioResource_8hpp-source.htm b/doc/html/AudioResource_8hpp-source.htm
deleted file mode 100755
index e44c02b..0000000
--- a/doc/html/AudioResource_8hpp-source.htm
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>AudioResource.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_AUDIORESOURCE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_AUDIORESOURCE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00041"></a><a class="code" href="classsf_1_1AudioResource.htm">00041</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">protected</span> :
-<a name="l00044"></a>00044
-<a name="l00049"></a>00049 <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>();
-<a name="l00050"></a>00050
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>&amp;);
-<a name="l00056"></a>00056
-<a name="l00061"></a>00061 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>();
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 } <span class="comment">// namespace sf</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="preprocessor">#endif // SFML_AUDIORESOURCE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Audio_8hpp-source.htm b/doc/html/Audio_8hpp-source.htm
deleted file mode 100755
index 256635e..0000000
--- a/doc/html/Audio_8hpp-source.htm
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Audio.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_AUDIO_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_AUDIO_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Audio/Listener.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Audio/Music.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Audio/Sound.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Audio/SoundBuffer.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/Audio/SoundBufferRecorder.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/Audio/SoundRecorder.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/Audio/SoundStream.hpp&gt;</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif // SFML_AUDIO_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Clock_8cpp-source.htm b/doc/html/Clock_8cpp-source.htm
deleted file mode 100755
index c56b77b..0000000
--- a/doc/html/Clock_8cpp-source.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Clock.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Clock.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/System/Platform.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a><a class="code" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd">00037</a> <a class="code" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd" title="Default constructor.">Clock::Clock</a>()
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <a class="code" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec" title="Restart the timer.">Reset</a>();
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00046"></a><a class="code" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995">00046</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995" title="Get the time elapsed since last reset.">Clock::GetElapsedTime</a>()<span class="keyword"> const</span>
-<a name="l00047"></a>00047 <span class="keyword"></span>{
-<a name="l00048"></a>00048 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(sf::priv::Platform::GetSystemTime() - myStartTime);
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00055"></a><a class="code" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec">00055</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec" title="Restart the timer.">Clock::Reset</a>()
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 myStartTime = sf::priv::Platform::GetSystemTime();
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Clock_8hpp-source.htm b/doc/html/Clock_8hpp-source.htm
deleted file mode 100755
index 63a164c..0000000
--- a/doc/html/Clock_8hpp-source.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Clock.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_CLOCK_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_CLOCK_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="classsf_1_1Clock.htm">00039</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a>
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">public</span> :
-<a name="l00042"></a>00042
-<a name="l00047"></a>00047 <a class="code" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a>();
-<a name="l00048"></a>00048
-<a name="l00055"></a>00055 <span class="keywordtype">float</span> GetElapsedTime() <span class="keyword">const</span>;
-<a name="l00056"></a>00056
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> Reset();
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">private</span> :
-<a name="l00064"></a>00064
-<a name="l00066"></a>00066 <span class="comment">// Member data</span>
-<a name="l00068"></a>00068 <span class="comment"></span> <span class="keywordtype">double</span> myStartTime;
-<a name="l00069"></a>00069 };
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 } <span class="comment">// namespace sf</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="preprocessor">#endif // SFML_CLOCK_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Cocoa_2Joystick_8cpp-source.htm b/doc/html/Cocoa_2Joystick_8cpp-source.htm
deleted file mode 100755
index 5e2e566..0000000
--- a/doc/html/Cocoa_2Joystick_8cpp-source.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Joystick.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>priv
-<a name="l00034"></a>00034 {
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> Joystick::Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="comment">// Reset the joystick state</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="comment">// Initialize the Index-th available joystick</span>
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a>00049 JoystickState Joystick::UpdateState()
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="comment">// Fill a JoystickState instance with the current joystick state</span>
-<a name="l00052"></a>00052 JoystickState s;
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> s;
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00060"></a>00060 <span class="keywordtype">bool</span> Joystick::HasAxis(Joy::Axis Axis)<span class="keyword"> const</span>
-<a name="l00061"></a>00061 <span class="keyword"></span>{
-<a name="l00062"></a>00062 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065
-<a name="l00069"></a>00069 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Joystick::GetButtonsCount()<span class="keyword"> const</span>
-<a name="l00070"></a>00070 <span class="keyword"></span>{
-<a name="l00071"></a>00071 <span class="comment">// Return number of supported buttons</span>
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> 0;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 } <span class="comment">// namespace priv</span>
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Cocoa_2Joystick_8hpp-source.htm b/doc/html/Cocoa_2Joystick_8hpp-source.htm
deleted file mode 100755
index 8185e79..0000000
--- a/doc/html/Cocoa_2Joystick_8hpp-source.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_JOYSTICKCARBON_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_JOYSTICKCARBON_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Joystick
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index);
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 JoystickState UpdateState();
-<a name="l00059"></a>00059
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> HasAxis(Joy::Axis Axis) <span class="keyword">const</span>;
-<a name="l00069"></a>00069
-<a name="l00076"></a>00076 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetButtonsCount() <span class="keyword">const</span>;
-<a name="l00077"></a>00077 };
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 } <span class="comment">// namespace priv</span>
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 } <span class="comment">// namespace sf</span>
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="preprocessor">#endif // SFML_JOYSTICKCARBON_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Cocoa_2VideoModeSupport_8cpp-source.htm b/doc/html/Cocoa_2VideoModeSupport_8cpp-source.htm
deleted file mode 100755
index 01c914d..0000000
--- a/doc/html/Cocoa_2VideoModeSupport_8cpp-source.htm
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Cocoa/VideoModeSupport.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;ApplicationServices/ApplicationServices.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>priv
-<a name="l00035"></a>00035 {
-<a name="l00039"></a>00039 <span class="keywordtype">void</span> VideoModeSupport::GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes)
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="comment">// Ceylo -- using same implementation as in OSXCarbon</span>
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="comment">// First, clear array to fill</span>
-<a name="l00044"></a>00044 Modes.clear();
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="comment">// Enumerate all available video modes for primary display adapter</span>
-<a name="l00047"></a>00047 CFArrayRef DisplayModes = CGDisplayAvailableModes( kCGDirectMainDisplay );
-<a name="l00048"></a>00048 CFIndex DisplayModeCount = CFArrayGetCount( DisplayModes );
-<a name="l00049"></a>00049 CFDictionaryRef CurrentMode;
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Count = 0; Count &lt; DisplayModeCount; ++Count)
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 CurrentMode = (CFDictionaryRef)CFArrayGetValueAtIndex( DisplayModes, Count );
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a>;
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayWidth), kCFNumberIntType, &amp;(Mode.Width));
-<a name="l00058"></a>00058 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayHeight), kCFNumberIntType, &amp;(Mode.Height));
-<a name="l00059"></a>00059 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayBitsPerPixel), kCFNumberIntType, &amp;(Mode.BitsPerPixel));
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="comment">// Add it only if it is not already in the array</span>
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (std::find(Modes.begin(), Modes.end(), Mode) == Modes.end())
-<a name="l00063"></a>00063 Modes.push_back(Mode);
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00071"></a>00071 VideoMode VideoModeSupport::GetDesktopVideoMode()
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="comment">// Ceylo -- using same implementation as in OSXCarbon</span>
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 CFDictionaryRef CurrentVideoMode = CGDisplayCurrentMode(kCGDirectMainDisplay);
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode</a> DesktopMode;
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">// Get video mode width</span>
-<a name="l00081"></a>00081 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayWidth),
-<a name="l00082"></a>00082 kCFNumberIntType,
-<a name="l00083"></a>00083 &amp;(DesktopMode.Width));
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="comment">// Get video mode height</span>
-<a name="l00086"></a>00086 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayHeight),
-<a name="l00087"></a>00087 kCFNumberIntType,
-<a name="l00088"></a>00088 &amp;(DesktopMode.Height));
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">// Get video mode depth</span>
-<a name="l00091"></a>00091 CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayBitsPerPixel),
-<a name="l00092"></a>00092 kCFNumberIntType,
-<a name="l00093"></a>00093 &amp;(DesktopMode.BitsPerPixel));
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> DesktopMode;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 } <span class="comment">// namespace priv</span>
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Cocoa_2VideoModeSupport_8hpp-source.htm b/doc/html/Cocoa_2VideoModeSupport_8hpp-source.htm
deleted file mode 100755
index f403355..0000000
--- a/doc/html/Cocoa_2VideoModeSupport_8hpp-source.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIDEOMODESUPPORTCOCOA_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIDEOMODESUPPORTCOCOA_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>VideoModeSupport
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keywordtype">void</span> GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes);
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> VideoMode GetDesktopVideoMode();
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 } <span class="comment">// namespace priv</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 } <span class="comment">// namespace sf</span>
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor">#endif // SFML_VIDEOMODESUPPORTCOCOA_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Color_8cpp-source.htm b/doc/html/Color_8cpp-source.htm
deleted file mode 100755
index 7ede2b4..0000000
--- a/doc/html/Color_8cpp-source.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Color.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00035"></a>00035 <span class="comment">// Static member data</span>
-<a name="l00037"></a>00037 <span class="comment"></span><span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd" title="Black predefined color.">Color::Black</a>(0, 0, 0);
-<a name="l00038"></a>00038 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca" title="White predefined color.">Color::White</a>(255, 255, 255);
-<a name="l00039"></a>00039 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a" title="Red predefined color.">Color::Red</a>(255, 0, 0);
-<a name="l00040"></a>00040 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865" title="Green predefined color.">Color::Green</a>(0, 255, 0);
-<a name="l00041"></a>00041 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c" title="Blue predefined color.">Color::Blue</a>(0, 0, 255);
-<a name="l00042"></a>00042 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7" title="Yellow predefined color.">Color::Yellow</a>(255, 255, 0);
-<a name="l00043"></a>00043 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c" title="Magenta predefined color.">Color::Magenta</a>(255, 0, 255);
-<a name="l00044"></a>00044 <span class="keyword">const</span> Color <a class="code" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340" title="Cyan predefined color.">Color::Cyan</a>(0, 255, 255);
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a><a class="code" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4">00050</a> <a class="code" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4" title="Default constructor.">Color::Color</a>() :
-<a name="l00051"></a>00051 r(0),
-<a name="l00052"></a>00052 g(0),
-<a name="l00053"></a>00053 b(0),
-<a name="l00054"></a>00054 a(255)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a><a class="code" href="classsf_1_1Color.htm#35b792f22f04696b82a93e36530ca32c">00063</a> <a class="code" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4" title="Default constructor.">Color::Color</a>(Uint8 R, Uint8 G, Uint8 B, Uint8 A) :
-<a name="l00064"></a>00064 r(R),
-<a name="l00065"></a>00065 g(G),
-<a name="l00066"></a>00066 b(B),
-<a name="l00067"></a>00067 a(A)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a><a class="code" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf">00076</a> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf" title="Operator += overload to add a color.">Color::operator +=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(std::min(<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> + Other.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a>, 255));
-<a name="l00079"></a>00079 <a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(std::min(<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> + Other.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a>, 255));
-<a name="l00080"></a>00080 <a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(std::min(<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> + Other.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a>, 255));
-<a name="l00081"></a>00081 <a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(std::min(<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> + Other.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a>, 255));
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086
-<a name="l00090"></a><a class="code" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386">00090</a> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386" title="Operator *= overload to modulate a color.">Color::operator *=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other)
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 <a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> * Other.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255);
-<a name="l00093"></a>00093 <a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> * Other.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255);
-<a name="l00094"></a>00094 <a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> * Other.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255);
-<a name="l00095"></a>00095 <a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> * Other.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255);
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100
-<a name="l00104"></a><a class="code" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955">00104</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955" title="Compare two colors (for equality).">Color::operator ==</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00105"></a>00105 <span class="keyword"></span>{
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> (<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> == Other.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a>) &amp;&amp; (<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> == Other.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a>) &amp;&amp; (<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> == Other.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a>) &amp;&amp; (<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> == Other.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109
-<a name="l00113"></a><a class="code" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5">00113</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5" title="Compare two colors (for difference).">Color::operator !=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00114"></a>00114 <span class="keyword"></span>{
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> (<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> != Other.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a>) || (<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> != Other.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a>) || (<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> != Other.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a>) || (<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> != Other.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a>);
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118
-<a name="l00122"></a>00122 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> operator +(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color2)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> c = Color1;
-<a name="l00125"></a>00125 c += Color2;
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> c;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130
-<a name="l00134"></a>00134 Color operator *(<span class="keyword">const</span> Color&amp; Color1, <span class="keyword">const</span> Color&amp; Color2)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 Color c = Color1;
-<a name="l00137"></a>00137 c *= Color2;
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keywordflow">return</span> c;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Color_8hpp-source.htm b/doc/html/Color_8hpp-source.htm
deleted file mode 100755
index e3d30d2..0000000
--- a/doc/html/Color_8hpp-source.htm
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Color.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_COLOR_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_COLOR_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00040"></a><a class="code" href="classsf_1_1Color.htm">00040</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00048"></a>00048 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>();
-<a name="l00049"></a>00049
-<a name="l00059"></a>00059 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(Uint8 R, Uint8 G, Uint8 B, Uint8 A = 255);
-<a name="l00060"></a>00060
-<a name="l00069"></a>00069 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; operator +=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other);
-<a name="l00070"></a>00070
-<a name="l00079"></a>00079 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; operator *=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other);
-<a name="l00080"></a>00080
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00090"></a>00090
-<a name="l00099"></a>00099 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00100"></a>00100
-<a name="l00102"></a>00102 <span class="comment">// Static member data</span>
-<a name="l00104"></a><a class="code" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">00104</a> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Black;
-<a name="l00105"></a><a class="code" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">00105</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> White;
-<a name="l00106"></a><a class="code" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">00106</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Red;
-<a name="l00107"></a><a class="code" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">00107</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Green;
-<a name="l00108"></a><a class="code" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">00108</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Blue;
-<a name="l00109"></a><a class="code" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">00109</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Yellow;
-<a name="l00110"></a><a class="code" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">00110</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Magenta;
-<a name="l00111"></a><a class="code" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">00111</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Cyan;
-<a name="l00112"></a>00112
-<a name="l00114"></a>00114 <span class="comment">// Member data</span>
-<a name="l00116"></a><a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">00116</a> <span class="comment"></span> Uint8 r;
-<a name="l00117"></a><a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">00117</a> Uint8 g;
-<a name="l00118"></a><a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">00118</a> Uint8 b;
-<a name="l00119"></a><a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">00119</a> Uint8 a;
-<a name="l00120"></a>00120 };
-<a name="l00121"></a>00121
-<a name="l00131"></a>00131 SFML_API <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> operator +(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color2);
-<a name="l00132"></a>00132
-<a name="l00142"></a>00142 SFML_API <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> operator *(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Color2);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 } <span class="comment">// namespace sf</span>
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="preprocessor">#endif // SFML_COLOR_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Config_8hpp-source.htm b/doc/html/Config_8hpp-source.htm
deleted file mode 100755
index caee9ea..0000000
--- a/doc/html/Config_8hpp-source.htm
+++ /dev/null
@@ -1,192 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Config.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_CONFIG_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_CONFIG_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Identify the operating system</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#if defined(_WIN32) || defined(__WIN32__)</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span>
-<a name="l00033"></a>00033 <span class="comment">// Windows</span>
-<a name="l00034"></a>00034 <span class="preprocessor"> #define SFML_SYSTEM_WINDOWS</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor"> #ifndef WIN32_LEAN_AND_MEAN</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor"> #define WIN32_LEAN_AND_MEAN</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"> #ifndef NOMINMAX</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor"> #define NOMINMAX</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span>
-<a name="l00042"></a>00042 <span class="preprocessor">#elif defined(linux) || defined(__linux)</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044 <span class="comment">// Linux</span>
-<a name="l00045"></a>00045 <span class="preprocessor"> #define SFML_SYSTEM_LINUX</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>
-<a name="l00047"></a>00047 <span class="preprocessor">#elif defined(__APPLE__) || defined(MACOSX) || defined(macintosh) || defined(Macintosh)</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>
-<a name="l00049"></a>00049 <span class="comment">// MacOS</span>
-<a name="l00050"></a>00050 <span class="preprocessor"> #define SFML_SYSTEM_MACOS</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span>
-<a name="l00052"></a>00052 <span class="preprocessor">#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>
-<a name="l00054"></a>00054 <span class="comment">// FreeBSD</span>
-<a name="l00055"></a>00055 <span class="preprocessor"> #define SFML_SYSTEM_FREEBSD</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>
-<a name="l00057"></a>00057 <span class="preprocessor">#else</span>
-<a name="l00058"></a>00058 <span class="preprocessor"></span>
-<a name="l00059"></a>00059 <span class="comment">// Unsupported system</span>
-<a name="l00060"></a>00060 <span class="preprocessor"> #error This operating system is not supported by SFML library</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span>
-<a name="l00062"></a>00062 <span class="preprocessor">#endif</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span>
-<a name="l00064"></a>00064
-<a name="l00066"></a>00066 <span class="comment">// Define a portable debug macro</span>
-<a name="l00068"></a>00068 <span class="comment"></span><span class="preprocessor">#if !defined(NDEBUG)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span>
-<a name="l00070"></a>00070 <span class="preprocessor"> #define SFML_DEBUG</span>
-<a name="l00071"></a>00071 <span class="preprocessor"></span>
-<a name="l00072"></a>00072 <span class="preprocessor">#endif</span>
-<a name="l00073"></a>00073 <span class="preprocessor"></span>
-<a name="l00074"></a>00074
-<a name="l00076"></a>00076 <span class="comment">// Define portable import / export macros</span>
-<a name="l00078"></a>00078 <span class="comment"></span><span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span>
-<a name="l00080"></a>00080 <span class="preprocessor"> #ifdef SFML_DYNAMIC</span>
-<a name="l00081"></a>00081 <span class="preprocessor"></span>
-<a name="l00082"></a>00082 <span class="comment">// Windows platforms</span>
-<a name="l00083"></a>00083 <span class="preprocessor"> #ifdef SFML_EXPORTS</span>
-<a name="l00084"></a>00084 <span class="preprocessor"></span>
-<a name="l00085"></a>00085 <span class="comment">// From DLL side, we must export</span>
-<a name="l00086"></a>00086 <span class="preprocessor"> #define SFML_API __declspec(dllexport)</span>
-<a name="l00087"></a>00087 <span class="preprocessor"></span>
-<a name="l00088"></a>00088 <span class="preprocessor"> #else</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span>
-<a name="l00090"></a>00090 <span class="comment">// From client application side, we must import</span>
-<a name="l00091"></a>00091 <span class="preprocessor"> #define SFML_API __declspec(dllimport)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00093"></a>00093 <span class="preprocessor"> #endif</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>
-<a name="l00095"></a>00095 <span class="comment">// For Visual C++ compilers, we also need to turn off this annoying C4251 warning.</span>
-<a name="l00096"></a>00096 <span class="comment">// You can read lots ot different things about it, but the point is the code will</span>
-<a name="l00097"></a>00097 <span class="comment">// just work fine, and so the simplest way to get rid of this warning is to disable it</span>
-<a name="l00098"></a>00098 <span class="preprocessor"> #ifdef _MSC_VER</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>
-<a name="l00100"></a>00100 <span class="preprocessor"> #pragma warning(disable : 4251)</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span>
-<a name="l00102"></a>00102 <span class="preprocessor"> #endif</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span>
-<a name="l00104"></a>00104 <span class="preprocessor"> #else</span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span>
-<a name="l00106"></a>00106 <span class="comment">// No specific directive needed for static build</span>
-<a name="l00107"></a>00107 <span class="preprocessor"> #define SFML_API</span>
-<a name="l00108"></a>00108 <span class="preprocessor"></span>
-<a name="l00109"></a>00109 <span class="preprocessor"> #endif</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span>
-<a name="l00111"></a>00111 <span class="preprocessor">#else</span>
-<a name="l00112"></a>00112 <span class="preprocessor"></span>
-<a name="l00113"></a>00113 <span class="comment">// Other platforms don't need to define anything</span>
-<a name="l00114"></a>00114 <span class="preprocessor"> #define SFML_API</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span>
-<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span>
-<a name="l00118"></a>00118
-<a name="l00120"></a>00120 <span class="comment">// Define portable fixed-size types</span>
-<a name="l00122"></a>00122 <span class="comment"></span><span class="preprocessor">#include &lt;climits&gt;</span>
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keyword">namespace </span>sf
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="comment">// 8 bits integer types</span>
-<a name="l00127"></a>00127 <span class="preprocessor"> #if UCHAR_MAX == 0xFF</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> Int8;
-<a name="l00129"></a>00129 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Uint8;
-<a name="l00130"></a>00130 <span class="preprocessor"> #else</span>
-<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor"> #error No 8 bits integer type for this platform</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00133"></a>00133 <span class="preprocessor"></span>
-<a name="l00134"></a>00134 <span class="comment">// 16 bits integer types</span>
-<a name="l00135"></a>00135 <span class="preprocessor"> #if USHRT_MAX == 0xFFFF</span>
-<a name="l00136"></a>00136 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int16;
-<a name="l00137"></a>00137 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Uint16;
-<a name="l00138"></a>00138 <span class="preprocessor"> #elif UINT_MAX == 0xFFFF</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int16;
-<a name="l00140"></a>00140 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Uint16;
-<a name="l00141"></a>00141 <span class="preprocessor"> #elif ULONG_MAX == 0xFFFF</span>
-<a name="l00142"></a>00142 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">long</span> Int16;
-<a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Uint16;
-<a name="l00144"></a>00144 <span class="preprocessor"> #else</span>
-<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor"> #error No 16 bits integer type for this platform</span>
-<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00147"></a>00147 <span class="preprocessor"></span>
-<a name="l00148"></a>00148 <span class="comment">// 32 bits integer types</span>
-<a name="l00149"></a>00149 <span class="preprocessor"> #if USHRT_MAX == 0xFFFFFFFF</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> Int32;
-<a name="l00151"></a>00151 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Uint32;
-<a name="l00152"></a>00152 <span class="preprocessor"> #elif UINT_MAX == 0xFFFFFFFF</span>
-<a name="l00153"></a>00153 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> Int32;
-<a name="l00154"></a>00154 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Uint32;
-<a name="l00155"></a>00155 <span class="preprocessor"> #elif ULONG_MAX == 0xFFFFFFFF</span>
-<a name="l00156"></a>00156 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">long</span> Int32;
-<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Uint32;
-<a name="l00158"></a>00158 <span class="preprocessor"> #else</span>
-<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor"> #error No 32 bits integer type for this platform</span>
-<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00161"></a>00161 <span class="preprocessor"></span>
-<a name="l00162"></a>00162 } <span class="comment">// namespace sf</span>
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="preprocessor">#endif // SFML_CONFIG_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Context_8cpp-source.htm b/doc/html/Context_8cpp-source.htm
deleted file mode 100755
index ca8fd3d..0000000
--- a/doc/html/Context_8cpp-source.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Context.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Context.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace</span>
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="comment">// Make sure the dummy context is created at global startup</span>
-<a name="l00035"></a>00035 <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">sf::Context</a>&amp; Dummy = <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">sf::Context::GetGlobal</a>();
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>sf
-<a name="l00040"></a>00040 {
-<a name="l00044"></a><a class="code" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555">00044</a> <a class="code" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555" title="Default constructor, create the context.">Context::Context</a>()
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 myDummyWindow = priv::WindowImpl::New();
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00053"></a><a class="code" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b">00053</a> <a class="code" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b" title="Destructor, destroy the context.">Context::~Context</a>()
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="keyword">delete</span> myDummyWindow;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058
-<a name="l00062"></a><a class="code" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7">00062</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7" title="Activate or deactivate the context.">Context::SetActive</a>(<span class="keywordtype">bool</span> Active)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 myDummyWindow-&gt;SetActive(Active);
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00071"></a><a class="code" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27">00071</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27" title="Check if there&amp;#39;s a context bound to the current thread.">Context::IsContextActive</a>()
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27" title="Check if there&amp;#39;s a context bound to the current thread.">priv::WindowImpl::IsContextActive</a>();
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076
-<a name="l00080"></a><a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692">00080</a> <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>&amp; <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">Context::GetGlobal</a>()
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="keyword">static</span> <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>* GlobalContext = <span class="keyword">new</span> <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>; <span class="comment">// Never deleted, on purpose</span>
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keywordflow">return</span> *GlobalContext;
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Context_8hpp-source.htm b/doc/html/Context_8hpp-source.htm
deleted file mode 100755
index 573556d..0000000
--- a/doc/html/Context_8hpp-source.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Context.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_CONTEXT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_CONTEXT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">class </span>WindowImpl;
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00049"></a><a class="code" href="classsf_1_1Context.htm">00049</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="keyword">public</span> :
-<a name="l00052"></a>00052
-<a name="l00057"></a>00057 <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>();
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 ~<a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>();
-<a name="l00064"></a>00064
-<a name="l00071"></a>00071 <span class="keywordtype">void</span> SetActive(<span class="keywordtype">bool</span> Active);
-<a name="l00072"></a>00072
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsContextActive();
-<a name="l00080"></a>00080
-<a name="l00087"></a>00087 <span class="keyword">static</span> <a class="code" href="classsf_1_1Context.htm" title="Class wrapping an OpenGL context.">Context</a>&amp; GetGlobal();
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">private</span> :
-<a name="l00090"></a>00090
-<a name="l00092"></a>00092 <span class="comment">// Member data</span>
-<a name="l00094"></a>00094 <span class="comment"></span> priv::WindowImpl* myDummyWindow;
-<a name="l00095"></a>00095 };
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 } <span class="comment">// namespace sf</span>
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="preprocessor">#endif // SFML_CONTEXT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Doxygen_8hpp-source.htm b/doc/html/Doxygen_8hpp-source.htm
deleted file mode 100755
index 1c621a6..0000000
--- a/doc/html/Doxygen_8hpp-source.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Doxygen.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002
-<a name="l00003"></a>00003
-<a name="l00004"></a>00004
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006
-<a name="l00007"></a>00007
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009
-<a name="l00010"></a>00010
-<a name="l00011"></a>00011
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Drawable_8cpp-source.htm b/doc/html/Drawable_8cpp-source.htm
deleted file mode 100755
index 6ea3d33..0000000
--- a/doc/html/Drawable_8cpp-source.htm
+++ /dev/null
@@ -1,333 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Drawable.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Window/Window.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;math.h&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">00039</a> <a class="code" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc" title="Default constructor.">Drawable::Drawable</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale, <span class="keywordtype">float</span> Rotation, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col) :
-<a name="l00040"></a>00040 myPosition (Position),
-<a name="l00041"></a>00041 myScale (Scale),
-<a name="l00042"></a>00042 myCenter (0, 0),
-<a name="l00043"></a>00043 myRotation (Rotation),
-<a name="l00044"></a>00044 myColor (Col),
-<a name="l00045"></a>00045 myBlendMode (Blend::Alpha),
-<a name="l00046"></a>00046 myNeedUpdate (true),
-<a name="l00047"></a>00047 myInvNeedUpdate(true)
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00056"></a><a class="code" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">00056</a> <a class="code" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a" title="Virtual destructor.">Drawable::~Drawable</a>()
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="comment">// Nothing to do</span>
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00065"></a><a class="code" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">00065</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589" title="Set the position of the object (take 2 values).">Drawable::SetPosition</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e" title="Set the X position of the object.">SetX</a>(X);
-<a name="l00068"></a>00068 <a class="code" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9" title="Set the Y position of the object.">SetY</a>(Y);
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071
-<a name="l00075"></a><a class="code" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">00075</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589" title="Set the position of the object (take 2 values).">Drawable::SetPosition</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <a class="code" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e" title="Set the X position of the object.">SetX</a>(Position.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>);
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9" title="Set the Y position of the object.">SetY</a>(Position.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00085"></a><a class="code" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">00085</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e" title="Set the X position of the object.">Drawable::SetX</a>(<span class="keywordtype">float</span> X)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 myPosition.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = X;
-<a name="l00088"></a>00088 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092
-<a name="l00096"></a><a class="code" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">00096</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9" title="Set the Y position of the object.">Drawable::SetY</a>(<span class="keywordtype">float</span> Y)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 myPosition.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> = Y;
-<a name="l00099"></a>00099 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00100"></a>00100 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103
-<a name="l00107"></a><a class="code" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">00107</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769" title="Set the scale of the object (take 2 values).">Drawable::SetScale</a>(<span class="keywordtype">float</span> ScaleX, <span class="keywordtype">float</span> ScaleY)
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 <a class="code" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f" title="Set the X scale factor of the object.">SetScaleX</a>(ScaleX);
-<a name="l00110"></a>00110 <a class="code" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf" title="Set the Y scale factor of the object.">SetScaleY</a>(ScaleY);
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00117"></a><a class="code" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">00117</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769" title="Set the scale of the object (take 2 values).">Drawable::SetScale</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale)
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 <a class="code" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f" title="Set the X scale factor of the object.">SetScaleX</a>(Scale.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>);
-<a name="l00120"></a>00120 <a class="code" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf" title="Set the Y scale factor of the object.">SetScaleY</a>(Scale.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123
-<a name="l00127"></a><a class="code" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">00127</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f" title="Set the X scale factor of the object.">Drawable::SetScaleX</a>(<span class="keywordtype">float</span> FactorX)
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (FactorX &gt; 0)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 myScale.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = FactorX;
-<a name="l00132"></a>00132 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00133"></a>00133 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137
-<a name="l00141"></a><a class="code" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">00141</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf" title="Set the Y scale factor of the object.">Drawable::SetScaleY</a>(<span class="keywordtype">float</span> FactorY)
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (FactorY &gt; 0)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 myScale.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> = FactorY;
-<a name="l00146"></a>00146 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00147"></a>00147 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151
-<a name="l00157"></a><a class="code" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">00157</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61" title="Set the center of the object, in coordinates relative to the top-left of the object...">Drawable::SetCenter</a>(<span class="keywordtype">float</span> CenterX, <span class="keywordtype">float</span> CenterY)
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 myCenter.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = CenterX;
-<a name="l00160"></a>00160 myCenter.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> = CenterY;
-<a name="l00161"></a>00161 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00162"></a>00162 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165
-<a name="l00171"></a><a class="code" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">00171</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61" title="Set the center of the object, in coordinates relative to the top-left of the object...">Drawable::SetCenter</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Center)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <a class="code" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61" title="Set the center of the object, in coordinates relative to the top-left of the object...">SetCenter</a>(Center.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Center.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00180"></a><a class="code" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">00180</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec" title="Set the orientation of the object.">Drawable::SetRotation</a>(<span class="keywordtype">float</span> Rotation)
-<a name="l00181"></a>00181 {
-<a name="l00182"></a>00182 myRotation = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(fmod(Rotation, 360));
-<a name="l00183"></a>00183 <span class="keywordflow">if</span> (myRotation &lt; 0)
-<a name="l00184"></a>00184 myRotation += 360.f;
-<a name="l00185"></a>00185 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00186"></a>00186 myInvNeedUpdate = <span class="keyword">true</span>;
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189
-<a name="l00194"></a><a class="code" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">00194</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb" title="Set the color of the object.">Drawable::SetColor</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col)
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 myColor = Col;
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199
-<a name="l00204"></a><a class="code" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">00204</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5" title="Set the blending mode for the object.">Drawable::SetBlendMode</a>(<a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 myBlendMode = Mode;
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209
-<a name="l00213"></a><a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">00213</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b" title="Get the position of the object.">Drawable::GetPosition</a>()<span class="keyword"> const</span>
-<a name="l00214"></a>00214 <span class="keyword"></span>{
-<a name="l00215"></a>00215 <span class="keywordflow">return</span> myPosition;
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218
-<a name="l00222"></a><a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">00222</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">Drawable::GetScale</a>()<span class="keyword"> const</span>
-<a name="l00223"></a>00223 <span class="keyword"></span>{
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> myScale;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00231"></a><a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">00231</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0" title="Get the center of the object.">Drawable::GetCenter</a>()<span class="keyword"> const</span>
-<a name="l00232"></a>00232 <span class="keyword"></span>{
-<a name="l00233"></a>00233 <span class="keywordflow">return</span> myCenter;
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236
-<a name="l00240"></a><a class="code" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">00240</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017" title="Get the orientation of the object.">Drawable::GetRotation</a>()<span class="keyword"> const</span>
-<a name="l00241"></a>00241 <span class="keyword"></span>{
-<a name="l00242"></a>00242 <span class="keywordflow">return</span> myRotation;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245
-<a name="l00249"></a><a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">00249</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">Drawable::GetColor</a>()<span class="keyword"> const</span>
-<a name="l00250"></a>00250 <span class="keyword"></span>{
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> myColor;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254
-<a name="l00258"></a><a class="code" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">00258</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> <a class="code" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a" title="Get the current blending mode.">Drawable::GetBlendMode</a>()<span class="keyword"> const</span>
-<a name="l00259"></a>00259 <span class="keyword"></span>{
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> myBlendMode;
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263
-<a name="l00268"></a><a class="code" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">00268</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b" title="Move the object of a given offset (take 2 values).">Drawable::Move</a>(<span class="keywordtype">float</span> OffsetX, <span class="keywordtype">float</span> OffsetY)
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <a class="code" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e" title="Set the X position of the object.">SetX</a>(myPosition.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> + OffsetX);
-<a name="l00271"></a>00271 <a class="code" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9" title="Set the Y position of the object.">SetY</a>(myPosition.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> + OffsetY);
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273
-<a name="l00274"></a>00274
-<a name="l00278"></a><a class="code" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">00278</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b" title="Move the object of a given offset (take 2 values).">Drawable::Move</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Offset)
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 <a class="code" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b" title="Move the object of a given offset (take 2 values).">Move</a>(Offset.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Offset.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283
-<a name="l00287"></a><a class="code" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">00287</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd" title="Scale the object (take 2 values).">Drawable::Scale</a>(<span class="keywordtype">float</span> FactorX, <span class="keywordtype">float</span> FactorY)
-<a name="l00288"></a>00288 {
-<a name="l00289"></a>00289 <a class="code" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f" title="Set the X scale factor of the object.">SetScaleX</a>(myScale.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> * FactorX);
-<a name="l00290"></a>00290 <a class="code" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf" title="Set the Y scale factor of the object.">SetScaleY</a>(myScale.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> * FactorY);
-<a name="l00291"></a>00291 }
-<a name="l00292"></a>00292
-<a name="l00293"></a>00293
-<a name="l00297"></a><a class="code" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">00297</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd" title="Scale the object (take 2 values).">Drawable::Scale</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Factor)
-<a name="l00298"></a>00298 {
-<a name="l00299"></a>00299 <a class="code" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd" title="Scale the object (take 2 values).">Scale</a>(Factor.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Factor.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302
-<a name="l00306"></a><a class="code" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">00306</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419" title="Rotate the object.">Drawable::Rotate</a>(<span class="keywordtype">float</span> Angle)
-<a name="l00307"></a>00307 {
-<a name="l00308"></a>00308 <a class="code" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec" title="Set the orientation of the object.">SetRotation</a>(myRotation + Angle);
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311
-<a name="l00316"></a><a class="code" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">00316</a> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> <a class="code" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008" title="Transform a point from global coordinates into local coordinates (ie it applies the...">Drawable::TransformToLocal</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Point)<span class="keyword"> const</span>
-<a name="l00317"></a>00317 <span class="keyword"></span>{
-<a name="l00318"></a>00318 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f" title="Get the inverse transform matrix of the drawable.">GetInverseMatrix</a>().<a class="code" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151" title="Transform a point by the matrix.">Transform</a>(Point);
-<a name="l00319"></a>00319 }
-<a name="l00320"></a>00320
-<a name="l00325"></a><a class="code" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">00325</a> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> <a class="code" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945" title="Transform a point from local coordinates into global coordinates (ie it applies the...">Drawable::TransformToGlobal</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Point)<span class="keyword"> const</span>
-<a name="l00326"></a>00326 <span class="keyword"></span>{
-<a name="l00327"></a>00327 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e" title="Get the transform matrix of the drawable.">GetMatrix</a>().<a class="code" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151" title="Transform a point by the matrix.">Transform</a>(Point);
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330
-<a name="l00334"></a><a class="code" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">00334</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e" title="Get the transform matrix of the drawable.">Drawable::GetMatrix</a>()<span class="keyword"> const</span>
-<a name="l00335"></a>00335 <span class="keyword"></span>{
-<a name="l00336"></a>00336 <span class="comment">// First recompute it if needed</span>
-<a name="l00337"></a>00337 <span class="keywordflow">if</span> (myNeedUpdate)
-<a name="l00338"></a>00338 {
-<a name="l00339"></a>00339 myMatrix.<a class="code" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d" title="Build a matrix from a set of transformations.">SetFromTransformations</a>(myCenter, myPosition, myRotation, myScale);
-<a name="l00340"></a>00340 myNeedUpdate = <span class="keyword">false</span>;
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> myMatrix;
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346
-<a name="l00350"></a><a class="code" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">00350</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; <a class="code" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f" title="Get the inverse transform matrix of the drawable.">Drawable::GetInverseMatrix</a>()<span class="keyword"> const</span>
-<a name="l00351"></a>00351 <span class="keyword"></span>{
-<a name="l00352"></a>00352 <span class="comment">// First recompute it if needed</span>
-<a name="l00353"></a>00353 <span class="keywordflow">if</span> (myInvNeedUpdate)
-<a name="l00354"></a>00354 {
-<a name="l00355"></a>00355 myInvMatrix = <a class="code" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e" title="Get the transform matrix of the drawable.">GetMatrix</a>().<a class="code" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e" title="Return the inverse of the matrix.">GetInverse</a>();
-<a name="l00356"></a>00356 myInvNeedUpdate = <span class="keyword">false</span>;
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 <span class="keywordflow">return</span> myInvMatrix;
-<a name="l00360"></a>00360 }
-<a name="l00361"></a>00361
-<a name="l00362"></a>00362
-<a name="l00366"></a>00366 <span class="keywordtype">void</span> Drawable::Draw(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target)<span class="keyword"> const</span>
-<a name="l00367"></a>00367 <span class="keyword"></span>{
-<a name="l00368"></a>00368 <span class="comment">// Save the current modelview matrix and set the new one</span>
-<a name="l00369"></a>00369 GLCheck(glMatrixMode(GL_MODELVIEW));
-<a name="l00370"></a>00370 GLCheck(glPushMatrix());
-<a name="l00371"></a>00371 GLCheck(glMultMatrixf(<a class="code" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e" title="Get the transform matrix of the drawable.">GetMatrix</a>().Get4x4Elements()));
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373 <span class="comment">// Setup alpha-blending</span>
-<a name="l00374"></a>00374 <span class="keywordflow">if</span> (myBlendMode == <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea" title="No blending.">Blend::None</a>)
-<a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 GLCheck(glDisable(GL_BLEND));
-<a name="l00377"></a>00377 }
-<a name="l00378"></a>00378 <span class="keywordflow">else</span>
-<a name="l00379"></a>00379 {
-<a name="l00380"></a>00380 GLCheck(glEnable(GL_BLEND));
-<a name="l00381"></a>00381
-<a name="l00382"></a>00382 <span class="keywordflow">switch</span> (myBlendMode)
-<a name="l00383"></a>00383 {
-<a name="l00384"></a>00384 <span class="keywordflow">case</span> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a> : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); <span class="keywordflow">break</span>;
-<a name="l00385"></a>00385 <span class="keywordflow">case</span> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563" title="Pixel = Src + Dest.">Blend::Add</a> : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE)); <span class="keywordflow">break</span>;
-<a name="l00386"></a>00386 <span class="keywordflow">case</span> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736" title="Pixel = Src * Dest.">Blend::Multiply</a> : GLCheck(glBlendFunc(GL_DST_COLOR, GL_ZERO)); <span class="keywordflow">break</span>;
-<a name="l00387"></a>00387 <span class="keywordflow">default</span> : <span class="keywordflow">break</span>;
-<a name="l00388"></a>00388 }
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="comment">// Set color</span>
-<a name="l00392"></a>00392 GLCheck(glColor4f(myColor.r / 255.f, myColor.g / 255.f, myColor.b / 255.f, myColor.a / 255.f));
-<a name="l00393"></a>00393
-<a name="l00394"></a>00394 <span class="comment">// Let the derived class render the object geometry</span>
-<a name="l00395"></a>00395 Render(Target);
-<a name="l00396"></a>00396
-<a name="l00397"></a>00397 <span class="comment">// Restore the previous modelview matrix</span>
-<a name="l00398"></a>00398 GLCheck(glMatrixMode(GL_MODELVIEW));
-<a name="l00399"></a>00399 GLCheck(glPopMatrix());
-<a name="l00400"></a>00400 }
-<a name="l00401"></a>00401
-<a name="l00402"></a>00402 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Drawable_8hpp-source.htm b/doc/html/Drawable_8hpp-source.htm
deleted file mode 100755
index 4f1a676..0000000
--- a/doc/html/Drawable_8hpp-source.htm
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Drawable.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_DRAWABLE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_DRAWABLE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Matrix3.hpp&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">class </span>RenderTarget;
-<a name="l00039"></a>00039
-<a name="l00043"></a><a class="code" href="namespacesf_1_1Blend.htm">00043</a> <span class="keyword">namespace </span>Blend
-<a name="l00044"></a>00044 {
-<a name="l00045"></a><a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">00045</a> <span class="keyword">enum</span> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a><a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a">00047</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Alpha</a>,
-<a name="l00048"></a><a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563">00048</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563" title="Pixel = Src + Dest.">Add</a>,
-<a name="l00049"></a><a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736">00049</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736" title="Pixel = Src * Dest.">Multiply</a>,
-<a name="l00050"></a><a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea">00050</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea" title="No blending.">None</a>
-<a name="l00051"></a>00051 };
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00058"></a><a class="code" href="classsf_1_1Drawable.htm">00058</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="keyword">public</span> :
-<a name="l00061"></a>00061
-<a name="l00071"></a>00071 <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position = <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale = <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(1, 1), <span class="keywordtype">float</span> Rotation = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255, 255));
-<a name="l00072"></a>00072
-<a name="l00077"></a>00077 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>();
-<a name="l00078"></a>00078
-<a name="l00086"></a>00086 <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y);
-<a name="l00087"></a>00087
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> SetPosition(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position);
-<a name="l00095"></a>00095
-<a name="l00102"></a>00102 <span class="keywordtype">void</span> SetX(<span class="keywordtype">float</span> X);
-<a name="l00103"></a>00103
-<a name="l00110"></a>00110 <span class="keywordtype">void</span> SetY(<span class="keywordtype">float</span> Y);
-<a name="l00111"></a>00111
-<a name="l00119"></a>00119 <span class="keywordtype">void</span> SetScale(<span class="keywordtype">float</span> ScaleX, <span class="keywordtype">float</span> ScaleY);
-<a name="l00120"></a>00120
-<a name="l00127"></a>00127 <span class="keywordtype">void</span> SetScale(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale);
-<a name="l00128"></a>00128
-<a name="l00135"></a>00135 <span class="keywordtype">void</span> SetScaleX(<span class="keywordtype">float</span> FactorX);
-<a name="l00136"></a>00136
-<a name="l00143"></a>00143 <span class="keywordtype">void</span> SetScaleY(<span class="keywordtype">float</span> FactorY);
-<a name="l00144"></a>00144
-<a name="l00154"></a>00154 <span class="keywordtype">void</span> SetCenter(<span class="keywordtype">float</span> CenterX, <span class="keywordtype">float</span> CenterY);
-<a name="l00155"></a>00155
-<a name="l00164"></a>00164 <span class="keywordtype">void</span> SetCenter(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Center);
-<a name="l00165"></a>00165
-<a name="l00172"></a>00172 <span class="keywordtype">void</span> SetRotation(<span class="keywordtype">float</span> Rotation);
-<a name="l00173"></a>00173
-<a name="l00181"></a>00181 <span class="keywordtype">void</span> SetColor(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col);
-<a name="l00182"></a>00182
-<a name="l00190"></a>00190 <span class="keywordtype">void</span> SetBlendMode(<a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode);
-<a name="l00191"></a>00191
-<a name="l00198"></a>00198 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; GetPosition() <span class="keyword">const</span>;
-<a name="l00199"></a>00199
-<a name="l00206"></a>00206 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; GetScale() <span class="keyword">const</span>;
-<a name="l00207"></a>00207
-<a name="l00214"></a>00214 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; GetCenter() <span class="keyword">const</span>;
-<a name="l00215"></a>00215
-<a name="l00223"></a>00223 <span class="keywordtype">float</span> GetRotation() <span class="keyword">const</span>;
-<a name="l00224"></a>00224
-<a name="l00231"></a>00231 <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; GetColor() <span class="keyword">const</span>;
-<a name="l00232"></a>00232
-<a name="l00239"></a>00239 <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> GetBlendMode() <span class="keyword">const</span>;
-<a name="l00240"></a>00240
-<a name="l00248"></a>00248 <span class="keywordtype">void</span> Move(<span class="keywordtype">float</span> OffsetX, <span class="keywordtype">float</span> OffsetY);
-<a name="l00249"></a>00249
-<a name="l00256"></a>00256 <span class="keywordtype">void</span> Move(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Offset);
-<a name="l00257"></a>00257
-<a name="l00265"></a>00265 <span class="keywordtype">void</span> Scale(<span class="keywordtype">float</span> FactorX, <span class="keywordtype">float</span> FactorY);
-<a name="l00266"></a>00266
-<a name="l00273"></a>00273 <span class="keywordtype">void</span> Scale(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Factor);
-<a name="l00274"></a>00274
-<a name="l00281"></a>00281 <span class="keywordtype">void</span> Rotate(<span class="keywordtype">float</span> Angle);
-<a name="l00282"></a>00282
-<a name="l00292"></a>00292 <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> TransformToLocal(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Point) <span class="keyword">const</span>;
-<a name="l00293"></a>00293
-<a name="l00303"></a>00303 <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> TransformToGlobal(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Point) <span class="keyword">const</span>;
-<a name="l00304"></a>00304
-<a name="l00305"></a>00305 <span class="keyword">protected</span> :
-<a name="l00306"></a>00306
-<a name="l00313"></a>00313 <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; GetMatrix() <span class="keyword">const</span>;
-<a name="l00314"></a>00314
-<a name="l00321"></a>00321 <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; GetInverseMatrix() <span class="keyword">const</span>;
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keyword">private</span> :
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>;
-<a name="l00326"></a>00326
-<a name="l00333"></a>00333 <span class="keywordtype">void</span> Draw(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span>;
-<a name="l00334"></a>00334
-<a name="l00341"></a>00341 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Render(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span> = 0;
-<a name="l00342"></a>00342
-<a name="l00344"></a>00344 <span class="comment">// Member data</span>
-<a name="l00346"></a>00346 <span class="comment"></span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> myPosition;
-<a name="l00347"></a>00347 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> myScale;
-<a name="l00348"></a>00348 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> myCenter;
-<a name="l00349"></a>00349 <span class="keywordtype">float</span> myRotation;
-<a name="l00350"></a>00350 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> myColor;
-<a name="l00351"></a>00351 <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> myBlendMode;
-<a name="l00352"></a>00352 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> myNeedUpdate;
-<a name="l00353"></a>00353 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> myInvNeedUpdate;
-<a name="l00354"></a>00354 <span class="keyword">mutable</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> myMatrix;
-<a name="l00355"></a>00355 <span class="keyword">mutable</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> myInvMatrix;
-<a name="l00356"></a>00356 };
-<a name="l00357"></a>00357
-<a name="l00358"></a>00358 } <span class="comment">// namespace sf</span>
-<a name="l00359"></a>00359
-<a name="l00360"></a>00360
-<a name="l00361"></a>00361 <span class="preprocessor">#endif // SFML_DRAWABLE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Event_8hpp-source.htm b/doc/html/Event_8hpp-source.htm
deleted file mode 100755
index 8cc007f..0000000
--- a/doc/html/Event_8hpp-source.htm
+++ /dev/null
@@ -1,313 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Event.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_EVENT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_EVENT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="namespacesf_1_1Key.htm">00039</a> <span class="keyword">namespace </span>Key
-<a name="l00040"></a>00040 {
-<a name="l00041"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">00041</a> <span class="keyword">enum</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Code</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 A = <span class="charliteral">'a'</span>,
-<a name="l00044"></a>00044 B = <span class="charliteral">'b'</span>,
-<a name="l00045"></a>00045 C = <span class="charliteral">'c'</span>,
-<a name="l00046"></a>00046 D = <span class="charliteral">'d'</span>,
-<a name="l00047"></a>00047 E = <span class="charliteral">'e'</span>,
-<a name="l00048"></a>00048 F = <span class="charliteral">'f'</span>,
-<a name="l00049"></a>00049 G = <span class="charliteral">'g'</span>,
-<a name="l00050"></a>00050 H = <span class="charliteral">'h'</span>,
-<a name="l00051"></a>00051 I = <span class="charliteral">'i'</span>,
-<a name="l00052"></a>00052 J = <span class="charliteral">'j'</span>,
-<a name="l00053"></a>00053 K = <span class="charliteral">'k'</span>,
-<a name="l00054"></a>00054 L = <span class="charliteral">'l'</span>,
-<a name="l00055"></a>00055 M = <span class="charliteral">'m'</span>,
-<a name="l00056"></a>00056 N = <span class="charliteral">'n'</span>,
-<a name="l00057"></a>00057 O = <span class="charliteral">'o'</span>,
-<a name="l00058"></a>00058 P = <span class="charliteral">'p'</span>,
-<a name="l00059"></a>00059 Q = <span class="charliteral">'q'</span>,
-<a name="l00060"></a>00060 R = <span class="charliteral">'r'</span>,
-<a name="l00061"></a>00061 S = <span class="charliteral">'s'</span>,
-<a name="l00062"></a>00062 T = <span class="charliteral">'t'</span>,
-<a name="l00063"></a>00063 U = <span class="charliteral">'u'</span>,
-<a name="l00064"></a>00064 V = <span class="charliteral">'v'</span>,
-<a name="l00065"></a>00065 W = <span class="charliteral">'w'</span>,
-<a name="l00066"></a>00066 X = <span class="charliteral">'x'</span>,
-<a name="l00067"></a>00067 Y = <span class="charliteral">'y'</span>,
-<a name="l00068"></a>00068 Z = <span class="charliteral">'z'</span>,
-<a name="l00069"></a>00069 Num0 = <span class="charliteral">'0'</span>,
-<a name="l00070"></a>00070 Num1 = <span class="charliteral">'1'</span>,
-<a name="l00071"></a>00071 Num2 = <span class="charliteral">'2'</span>,
-<a name="l00072"></a>00072 Num3 = <span class="charliteral">'3'</span>,
-<a name="l00073"></a>00073 Num4 = <span class="charliteral">'4'</span>,
-<a name="l00074"></a>00074 Num5 = <span class="charliteral">'5'</span>,
-<a name="l00075"></a>00075 Num6 = <span class="charliteral">'6'</span>,
-<a name="l00076"></a>00076 Num7 = <span class="charliteral">'7'</span>,
-<a name="l00077"></a>00077 Num8 = <span class="charliteral">'8'</span>,
-<a name="l00078"></a>00078 Num9 = <span class="charliteral">'9'</span>,
-<a name="l00079"></a>00079 Escape = 256,
-<a name="l00080"></a>00080 LControl,
-<a name="l00081"></a>00081 LShift,
-<a name="l00082"></a>00082 LAlt,
-<a name="l00083"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb">00083</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb" title="OS specific key (left side) : windows (Win and Linux), apple (MacOS), ...">LSystem</a>,
-<a name="l00084"></a>00084 RControl,
-<a name="l00085"></a>00085 RShift,
-<a name="l00086"></a>00086 RAlt,
-<a name="l00087"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49">00087</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49" title="OS specific key (right side) : windows (Win and Linux), apple (MacOS), ...">RSystem</a>,
-<a name="l00088"></a>00088 Menu,
-<a name="l00089"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93">00089</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93" title="[">LBracket</a>,
-<a name="l00090"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5">00090</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5" title="]">RBracket</a>,
-<a name="l00091"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01">00091</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01" title=";">SemiColon</a>,
-<a name="l00092"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207">00092</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207" title=",">Comma</a>,
-<a name="l00093"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8">00093</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8" title=".">Period</a>,
-<a name="l00094"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9">00094</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9" title="&amp;#39;">Quote</a>,
-<a name="l00095"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd">00095</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd" title="/">Slash</a>,
-<a name="l00096"></a>00096 BackSlash,
-<a name="l00097"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67">00097</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67" title="~">Tilde</a>,
-<a name="l00098"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359">00098</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359" title="=">Equal</a>,
-<a name="l00099"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00">00099</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00" title="-">Dash</a>,
-<a name="l00100"></a>00100 Space,
-<a name="l00101"></a>00101 Return,
-<a name="l00102"></a>00102 Back,
-<a name="l00103"></a>00103 Tab,
-<a name="l00104"></a>00104 PageUp,
-<a name="l00105"></a>00105 PageDown,
-<a name="l00106"></a>00106 End,
-<a name="l00107"></a>00107 Home,
-<a name="l00108"></a>00108 Insert,
-<a name="l00109"></a>00109 Delete,
-<a name="l00110"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e">00110</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e" title="+">Add</a>,
-<a name="l00111"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865">00111</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865" title="-">Subtract</a>,
-<a name="l00112"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814">00112</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814" title="*">Multiply</a>,
-<a name="l00113"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2">00113</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2" title="/">Divide</a>,
-<a name="l00114"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94">00114</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a>,
-<a name="l00115"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e">00115</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Right</a>,
-<a name="l00116"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff">00116</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff" title="Up arrow.">Up</a>,
-<a name="l00117"></a><a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62">00117</a> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62" title="Down arrow.">Down</a>,
-<a name="l00118"></a>00118 Numpad0,
-<a name="l00119"></a>00119 Numpad1,
-<a name="l00120"></a>00120 Numpad2,
-<a name="l00121"></a>00121 Numpad3,
-<a name="l00122"></a>00122 Numpad4,
-<a name="l00123"></a>00123 Numpad5,
-<a name="l00124"></a>00124 Numpad6,
-<a name="l00125"></a>00125 Numpad7,
-<a name="l00126"></a>00126 Numpad8,
-<a name="l00127"></a>00127 Numpad9,
-<a name="l00128"></a>00128 F1,
-<a name="l00129"></a>00129 F2,
-<a name="l00130"></a>00130 F3,
-<a name="l00131"></a>00131 F4,
-<a name="l00132"></a>00132 F5,
-<a name="l00133"></a>00133 F6,
-<a name="l00134"></a>00134 F7,
-<a name="l00135"></a>00135 F8,
-<a name="l00136"></a>00136 F9,
-<a name="l00137"></a>00137 F10,
-<a name="l00138"></a>00138 F11,
-<a name="l00139"></a>00139 F12,
-<a name="l00140"></a>00140 F13,
-<a name="l00141"></a>00141 F14,
-<a name="l00142"></a>00142 F15,
-<a name="l00143"></a>00143 Pause,
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 Count <span class="comment">// Keep last -- total number of keyboard keys</span>
-<a name="l00146"></a>00146 };
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149
-<a name="l00153"></a><a class="code" href="namespacesf_1_1Mouse.htm">00153</a> <span class="keyword">namespace </span>Mouse
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keyword">enum</span> Button
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 Left,
-<a name="l00158"></a>00158 Right,
-<a name="l00159"></a>00159 Middle,
-<a name="l00160"></a>00160 XButton1,
-<a name="l00161"></a>00161 XButton2,
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 ButtonCount <span class="comment">// Keep last -- total number of mouse buttons</span>
-<a name="l00164"></a>00164 };
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167
-<a name="l00171"></a><a class="code" href="namespacesf_1_1Joy.htm">00171</a> <span class="keyword">namespace </span>Joy
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <span class="keyword">enum</span> Axis
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 AxisX,
-<a name="l00176"></a>00176 AxisY,
-<a name="l00177"></a>00177 AxisZ,
-<a name="l00178"></a>00178 AxisR,
-<a name="l00179"></a>00179 AxisU,
-<a name="l00180"></a>00180 AxisV,
-<a name="l00181"></a>00181 AxisPOV,
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 AxisCount <span class="comment">// Keep last -- total number of joystick axis</span>
-<a name="l00184"></a>00184 };
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="keyword">enum</span>
-<a name="l00187"></a>00187 {
-<a name="l00188"></a><a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f">00188</a> <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Count</a> = 4,
-<a name="l00189"></a><a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf">00189</a> <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">ButtonCount</a> = 32
-<a name="l00190"></a>00190 };
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193
-<a name="l00197"></a><a class="code" href="classsf_1_1Event.htm">00197</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <span class="keyword">public</span> :
-<a name="l00200"></a>00200
-<a name="l00204"></a><a class="code" href="structsf_1_1Event_1_1KeyEvent.htm">00204</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1KeyEvent.htm" title="Keyboard event parameters.">KeyEvent</a>
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> Code;
-<a name="l00207"></a>00207 <span class="keywordtype">bool</span> Alt;
-<a name="l00208"></a>00208 <span class="keywordtype">bool</span> Control;
-<a name="l00209"></a>00209 <span class="keywordtype">bool</span> Shift;
-<a name="l00210"></a>00210 };
-<a name="l00211"></a>00211
-<a name="l00215"></a><a class="code" href="structsf_1_1Event_1_1TextEvent.htm">00215</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1TextEvent.htm" title="Text event parameters.">TextEvent</a>
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 Uint32 <a class="code" href="classsf_1_1Unicode.htm" title="Provides utility functions to convert from and to any unicode and ASCII encoding...">Unicode</a>;
-<a name="l00218"></a>00218 };
-<a name="l00219"></a>00219
-<a name="l00223"></a><a class="code" href="structsf_1_1Event_1_1MouseMoveEvent.htm">00223</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1MouseMoveEvent.htm" title="Mouse move event parameters.">MouseMoveEvent</a>
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="keywordtype">int</span> X;
-<a name="l00226"></a>00226 <span class="keywordtype">int</span> Y;
-<a name="l00227"></a>00227 };
-<a name="l00228"></a>00228
-<a name="l00232"></a><a class="code" href="structsf_1_1Event_1_1MouseButtonEvent.htm">00232</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1MouseButtonEvent.htm" title="Mouse buttons events parameters.">MouseButtonEvent</a>
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 Mouse::Button Button;
-<a name="l00235"></a>00235 <span class="keywordtype">int</span> X;
-<a name="l00236"></a>00236 <span class="keywordtype">int</span> Y;
-<a name="l00237"></a>00237 };
-<a name="l00238"></a>00238
-<a name="l00242"></a><a class="code" href="structsf_1_1Event_1_1MouseWheelEvent.htm">00242</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1MouseWheelEvent.htm" title="Mouse wheel events parameters.">MouseWheelEvent</a>
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 <span class="keywordtype">int</span> Delta;
-<a name="l00245"></a>00245 };
-<a name="l00246"></a>00246
-<a name="l00250"></a><a class="code" href="structsf_1_1Event_1_1JoyMoveEvent.htm">00250</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1JoyMoveEvent.htm" title="Joystick axis move event parameters.">JoyMoveEvent</a>
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoystickId;
-<a name="l00253"></a>00253 Joy::Axis Axis;
-<a name="l00254"></a>00254 <span class="keywordtype">float</span> Position;
-<a name="l00255"></a>00255 };
-<a name="l00256"></a>00256
-<a name="l00260"></a><a class="code" href="structsf_1_1Event_1_1JoyButtonEvent.htm">00260</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1JoyButtonEvent.htm" title="Joystick buttons events parameters.">JoyButtonEvent</a>
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoystickId;
-<a name="l00263"></a>00263 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Button;
-<a name="l00264"></a>00264 };
-<a name="l00265"></a>00265
-<a name="l00269"></a><a class="code" href="structsf_1_1Event_1_1SizeEvent.htm">00269</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1Event_1_1SizeEvent.htm" title="Size events parameters.">SizeEvent</a>
-<a name="l00270"></a>00270 {
-<a name="l00271"></a>00271 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width;
-<a name="l00272"></a>00272 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height;
-<a name="l00273"></a>00273 };
-<a name="l00274"></a>00274
-<a name="l00278"></a><a class="code" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">00278</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a" title="Enumeration of the different types of events.">EventType</a>
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 Closed,
-<a name="l00281"></a>00281 Resized,
-<a name="l00282"></a>00282 LostFocus,
-<a name="l00283"></a>00283 GainedFocus,
-<a name="l00284"></a>00284 TextEntered,
-<a name="l00285"></a>00285 KeyPressed,
-<a name="l00286"></a>00286 KeyReleased,
-<a name="l00287"></a>00287 MouseWheelMoved,
-<a name="l00288"></a>00288 MouseButtonPressed,
-<a name="l00289"></a>00289 MouseButtonReleased,
-<a name="l00290"></a>00290 MouseMoved,
-<a name="l00291"></a>00291 MouseEntered,
-<a name="l00292"></a>00292 MouseLeft,
-<a name="l00293"></a>00293 JoyButtonPressed,
-<a name="l00294"></a>00294 JoyButtonReleased,
-<a name="l00295"></a>00295 JoyMoved,
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 Count <span class="comment">// Keep last -- total number of event types</span>
-<a name="l00298"></a>00298 };
-<a name="l00299"></a>00299
-<a name="l00301"></a>00301 <span class="comment">// Member data</span>
-<a name="l00303"></a><a class="code" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">00303</a> <span class="comment"></span> <a class="code" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a" title="Enumeration of the different types of events.">EventType</a> <a class="code" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65" title="Type of the event.">Type</a>;
-<a name="l00304"></a>00304
-<a name="l00305"></a>00305 <span class="keyword">union</span>
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <a class="code" href="structsf_1_1Event_1_1KeyEvent.htm" title="Keyboard event parameters.">KeyEvent</a> Key;
-<a name="l00308"></a>00308 <a class="code" href="structsf_1_1Event_1_1TextEvent.htm" title="Text event parameters.">TextEvent</a> Text;
-<a name="l00309"></a>00309 <a class="code" href="structsf_1_1Event_1_1MouseMoveEvent.htm" title="Mouse move event parameters.">MouseMoveEvent</a> MouseMove;
-<a name="l00310"></a>00310 <a class="code" href="structsf_1_1Event_1_1MouseButtonEvent.htm" title="Mouse buttons events parameters.">MouseButtonEvent</a> MouseButton;
-<a name="l00311"></a>00311 <a class="code" href="structsf_1_1Event_1_1MouseWheelEvent.htm" title="Mouse wheel events parameters.">MouseWheelEvent</a> MouseWheel;
-<a name="l00312"></a>00312 <a class="code" href="structsf_1_1Event_1_1JoyMoveEvent.htm" title="Joystick axis move event parameters.">JoyMoveEvent</a> JoyMove;
-<a name="l00313"></a>00313 <a class="code" href="structsf_1_1Event_1_1JoyButtonEvent.htm" title="Joystick buttons events parameters.">JoyButtonEvent</a> JoyButton;
-<a name="l00314"></a>00314 <a class="code" href="structsf_1_1Event_1_1SizeEvent.htm" title="Size events parameters.">SizeEvent</a> Size;
-<a name="l00315"></a>00315 };
-<a name="l00316"></a>00316 };
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318 } <span class="comment">// namespace sf</span>
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320
-<a name="l00321"></a>00321 <span class="preprocessor">#endif // SFML_EVENT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/FontLoader_8cpp-source.htm b/doc/html/FontLoader_8cpp-source.htm
deleted file mode 100755
index 56fdf08..0000000
--- a/doc/html/FontLoader_8cpp-source.htm
+++ /dev/null
@@ -1,429 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>FontLoader.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/FontLoader.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/Font.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include FT_GLYPH_H</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;math.h&gt;</span>
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">namespace</span>
-<a name="l00041"></a>00041 {
-<a name="l00043"></a>00043 <span class="comment">// Functor to sort glyphs by size</span>
-<a name="l00045"></a>00045 <span class="comment"></span> <span class="keyword">struct </span>SizeCompare
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keywordtype">bool</span> operator ()(FT_BitmapGlyph Glyph1, FT_BitmapGlyph Glyph2)<span class="keyword"> const</span>
-<a name="l00048"></a>00048 <span class="keyword"> </span>{
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> Glyph2-&gt;bitmap.rows &lt; Glyph1-&gt;bitmap.rows;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051 };
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">namespace </span>sf
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keyword">namespace </span>priv
-<a name="l00057"></a>00057 {
-<a name="l00061"></a>00061 FontLoader&amp; FontLoader::GetInstance()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keyword">static</span> FontLoader Instance;
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> Instance;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00072"></a>00072 FontLoader::FontLoader()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="comment">// Initialize FreeType library</span>
-<a name="l00075"></a>00075 FT_Error Error = FT_Init_FreeType(&amp;myLibrary);
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (Error)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 std::cerr &lt;&lt; <span class="stringliteral">"Failed to initialize FreeType library (error code : "</span> &lt;&lt; Error &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00079"></a>00079 <span class="keywordflow">return</span>;
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083
-<a name="l00087"></a>00087 FontLoader::~FontLoader()
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="comment">// Shutdown FreeType library</span>
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (myLibrary)
-<a name="l00091"></a>00091 FT_Done_FreeType(myLibrary);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00098"></a>00098 <span class="keywordtype">bool</span> FontLoader::LoadFontFromFile(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="comment">// Check if Freetype is correctly initialized</span>
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!myLibrary)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\", FreeType has not been initialized"</span> &lt;&lt; std::endl;
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">// Create a new font face from the specified file</span>
-<a name="l00108"></a>00108 FT_Face FontFace;
-<a name="l00109"></a>00109 FT_Error Error = FT_New_Face(myLibrary, Filename.c_str(), 0, &amp;FontFace);
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (Error)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\" ("</span> &lt;&lt; GetErrorDesc(Error) &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00113"></a>00113 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="comment">// Create the bitmap font</span>
-<a name="l00117"></a>00117 Error = CreateBitmapFont(FontFace, CharSize, Charset, LoadedFont);
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (Error)
-<a name="l00119"></a>00119 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\" ("</span> &lt;&lt; GetErrorDesc(Error) &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="comment">// Delete the font</span>
-<a name="l00122"></a>00122 FT_Done_Face(FontFace);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> Error == 0;
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127
-<a name="l00131"></a>00131 <span class="keywordtype">bool</span> FontLoader::LoadFontFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="comment">// Check if Freetype is correctly initialized</span>
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (!myLibrary)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font from memory, FreeType has not been initialized"</span> &lt;&lt; std::endl;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="comment">// Create a new font face from the specified memory data</span>
-<a name="l00141"></a>00141 FT_Face FontFace;
-<a name="l00142"></a>00142 FT_Error Error = FT_New_Memory_Face(myLibrary, reinterpret_cast&lt;const FT_Byte*&gt;(Data), static_cast&lt;FT_Long&gt;(SizeInBytes), 0, &amp;FontFace);
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (Error)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font from memory ("</span> &lt;&lt; GetErrorDesc(Error) &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="comment">// Create the bitmap font</span>
-<a name="l00150"></a>00150 Error = CreateBitmapFont(FontFace, CharSize, Charset, LoadedFont);
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (Error)
-<a name="l00152"></a>00152 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font from memory ("</span> &lt;&lt; GetErrorDesc(Error) &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">// Delete the font</span>
-<a name="l00155"></a>00155 FT_Done_Face(FontFace);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> Error == 0;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160
-<a name="l00164"></a>00164 FT_Error FontLoader::CreateBitmapFont(FT_Face FontFace, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont)
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00167"></a>00167 priv::GraphicsContext Ctx;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="comment">// Let's find how many characters to put in each row to make them fit into a squared texture</span>
-<a name="l00170"></a>00170 GLint MaxSize;
-<a name="l00171"></a>00171 GLCheck(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &amp;MaxSize));
-<a name="l00172"></a>00172 <span class="keywordtype">int</span> NbChars = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(sqrt(static_cast&lt;double&gt;(Charset.length())) * 0.75);
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <span class="comment">// Clamp the character size to make sure we won't create a texture too big</span>
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (NbChars * CharSize &gt;= static_cast&lt;unsigned int&gt;(MaxSize))
-<a name="l00176"></a>00176 CharSize = MaxSize / NbChars;
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="comment">// Initialize the dimensions</span>
-<a name="l00179"></a>00179 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a> = 0;
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top = 0;
-<a name="l00181"></a>00181 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> TexWidth = <a class="code" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488" title="Get a valid texture size according to hardware support.">Image::GetValidTextureSize</a>(CharSize * NbChars);
-<a name="l00182"></a>00182 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> TexHeight = CharSize * NbChars;
-<a name="l00183"></a>00183 std::vector&lt;unsigned int&gt; Tops(TexWidth, 0);
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="comment">// Create a pixel buffer for rendering every glyph</span>
-<a name="l00186"></a>00186 std::vector&lt;Uint8&gt; GlyphsBuffer(TexWidth * TexHeight * 4);
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="comment">// Setup the font size</span>
-<a name="l00189"></a>00189 FT_Error Error = FT_Set_Pixel_Sizes(FontFace, CharSize, CharSize);
-<a name="l00190"></a>00190 <span class="keywordflow">if</span> (Error)
-<a name="l00191"></a>00191 <span class="keywordflow">return</span> Error;
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="comment">// Select the unicode character map</span>
-<a name="l00194"></a>00194 Error = FT_Select_Charmap(FontFace, FT_ENCODING_UNICODE);
-<a name="l00195"></a>00195 <span class="keywordflow">if</span> (Error)
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> Error;
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="comment">// Render all glyphs and sort them by size to optimize texture space</span>
-<a name="l00199"></a>00199 <span class="keyword">typedef</span> std::multimap&lt;FT_BitmapGlyph, Uint32, SizeCompare&gt; GlyphTable;
-<a name="l00200"></a>00200 GlyphTable Glyphs;
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Charset.length(); ++i)
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="comment">// Load the glyph corresponding to the current character</span>
-<a name="l00204"></a>00204 Error = FT_Load_Char(FontFace, Charset[i], FT_LOAD_TARGET_NORMAL);
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (Error)
-<a name="l00206"></a>00206 <span class="keywordflow">return</span> Error;
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="comment">// Convert the glyph to a bitmap (ie. rasterize it)</span>
-<a name="l00209"></a>00209 FT_Glyph Glyph;
-<a name="l00210"></a>00210 Error = FT_Get_Glyph(FontFace-&gt;glyph, &amp;Glyph);
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (Error)
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> Error;
-<a name="l00213"></a>00213 FT_Glyph_To_Bitmap(&amp;Glyph, FT_RENDER_MODE_NORMAL, 0, 1);
-<a name="l00214"></a>00214 FT_BitmapGlyph BitmapGlyph = (FT_BitmapGlyph)Glyph;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="comment">// Add it to the sorted table of glyphs</span>
-<a name="l00217"></a>00217 Glyphs.insert(std::make_pair(BitmapGlyph, Charset[i]));
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="comment">// Copy the rendered glyphs into the texture</span>
-<a name="l00221"></a>00221 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxHeight = 0;
-<a name="l00222"></a>00222 std::map&lt;Uint32, IntRect&gt; Coords;
-<a name="l00223"></a>00223 <span class="keywordflow">for</span> (GlyphTable::const_iterator i = Glyphs.begin(); i != Glyphs.end(); ++i)
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="comment">// Get the bitmap of the current glyph</span>
-<a name="l00226"></a>00226 Glyph&amp; CurGlyph = LoadedFont.myGlyphs[i-&gt;second];
-<a name="l00227"></a>00227 FT_BitmapGlyph BitmapGlyph = i-&gt;first;
-<a name="l00228"></a>00228 FT_Bitmap&amp; Bitmap = BitmapGlyph-&gt;bitmap;
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="comment">// Make sure we don't go over the texture width</span>
-<a name="l00231"></a>00231 <span class="keywordflow">if</span> (Left + Bitmap.width + 1 &gt;= TexWidth)
-<a name="l00232"></a>00232 Left = 0;
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="comment">// Compute the top coordinate</span>
-<a name="l00235"></a>00235 Top = Tops[Left];
-<a name="l00236"></a>00236 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 0; x &lt; Bitmap.width + 1; ++x)
-<a name="l00237"></a>00237 Top = std::max(Top, Tops[Left + x]);
-<a name="l00238"></a>00238 Top++;
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="comment">// Make sure we don't go over the texture height -- resize it if we need more space</span>
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (Top + Bitmap.rows + 1 &gt;= TexHeight)
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 TexHeight *= 2;
-<a name="l00244"></a>00244 GlyphsBuffer.resize(TexWidth * TexHeight * 4);
-<a name="l00245"></a>00245 }
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247 <span class="comment">// Store the character's position and size</span>
-<a name="l00248"></a>00248 CurGlyph.Rectangle.Left = BitmapGlyph-&gt;left;
-<a name="l00249"></a>00249 CurGlyph.Rectangle.Top = -BitmapGlyph-&gt;top;
-<a name="l00250"></a>00250 CurGlyph.Rectangle.Right = CurGlyph.Rectangle.Left + Bitmap.width;
-<a name="l00251"></a>00251 CurGlyph.Rectangle.Bottom = Bitmap.rows - BitmapGlyph-&gt;top;
-<a name="l00252"></a>00252 CurGlyph.Advance = BitmapGlyph-&gt;root.advance.x &gt;&gt; 16;
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="comment">// Texture size may change, so let the texture coordinates be calculated later</span>
-<a name="l00255"></a>00255 Coords[i-&gt;second] = IntRect(Left + 1, Top + 1, Left + Bitmap.width + 1, Top + Bitmap.rows + 1);
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="comment">// Draw the glyph into our bitmap font</span>
-<a name="l00258"></a>00258 <span class="keyword">const</span> Uint8* Pixels = Bitmap.buffer;
-<a name="l00259"></a>00259 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 0; y &lt; Bitmap.rows; ++y)
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 0; x &lt; Bitmap.width; ++x)
-<a name="l00262"></a>00262 {
-<a name="l00263"></a>00263 std::size_t Index = x + Left + 1 + (y + Top + 1) * TexWidth;
-<a name="l00264"></a>00264 GlyphsBuffer[Index * 4 + 0] = 255;
-<a name="l00265"></a>00265 GlyphsBuffer[Index * 4 + 1] = 255;
-<a name="l00266"></a>00266 GlyphsBuffer[Index * 4 + 2] = 255;
-<a name="l00267"></a>00267 GlyphsBuffer[Index * 4 + 3] = Pixels[x];
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269 Pixels += Bitmap.pitch;
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272 <span class="comment">// Update the rendering coordinates</span>
-<a name="l00273"></a>00273 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 0; x &lt; Bitmap.width + 1; ++x)
-<a name="l00274"></a>00274 Tops[Left + x] = Top + Bitmap.rows;
-<a name="l00275"></a>00275 Left += Bitmap.width + 1;
-<a name="l00276"></a>00276 if (Top + Bitmap.rows &gt; MaxHeight)
-<a name="l00277"></a>00277 MaxHeight = Top + Bitmap.rows;
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="comment">// Delete the glyph</span>
-<a name="l00280"></a>00280 FT_Done_Glyph((FT_Glyph)BitmapGlyph);
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 <span class="comment">// Create the font's texture</span>
-<a name="l00284"></a>00284 TexHeight = MaxHeight + 1;
-<a name="l00285"></a>00285 GlyphsBuffer.resize(TexWidth * TexHeight * 4);
-<a name="l00286"></a>00286 LoadedFont.myTexture.LoadFromPixels(TexWidth, TexHeight, &amp;GlyphsBuffer[0]);
-<a name="l00287"></a>00287
-<a name="l00288"></a>00288 <span class="comment">// Now that the texture is created, we can precompute texture coordinates</span>
-<a name="l00289"></a>00289 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Charset.size(); ++i)
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 Uint32 CurChar = Charset[i];
-<a name="l00292"></a>00292 LoadedFont.myGlyphs[CurChar].TexCoords = LoadedFont.myTexture.GetTexCoords(Coords[CurChar]);
-<a name="l00293"></a>00293 }
-<a name="l00294"></a>00294
-<a name="l00295"></a>00295 <span class="comment">// Update the character size (it may have been changed by the function)</span>
-<a name="l00296"></a>00296 LoadedFont.myCharSize = CharSize;
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> 0;
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301
-<a name="l00305"></a>00305 std::string FontLoader::GetErrorDesc(FT_Error Error)
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <span class="keywordflow">switch</span> (Error)
-<a name="l00308"></a>00308 {
-<a name="l00309"></a>00309 <span class="comment">// Generic errors</span>
-<a name="l00310"></a>00310 <span class="keywordflow">case</span> FT_Err_Cannot_Open_Resource : <span class="keywordflow">return</span> <span class="stringliteral">"cannot open resource"</span>;
-<a name="l00311"></a>00311 <span class="keywordflow">case</span> FT_Err_Unknown_File_Format : <span class="keywordflow">return</span> <span class="stringliteral">"unknown file format"</span>;
-<a name="l00312"></a>00312 <span class="keywordflow">case</span> FT_Err_Invalid_File_Format : <span class="keywordflow">return</span> <span class="stringliteral">"broken file"</span>;
-<a name="l00313"></a>00313 <span class="keywordflow">case</span> FT_Err_Invalid_Version : <span class="keywordflow">return</span> <span class="stringliteral">"invalid FreeType version"</span>;
-<a name="l00314"></a>00314 <span class="keywordflow">case</span> FT_Err_Lower_Module_Version : <span class="keywordflow">return</span> <span class="stringliteral">"module version is too low"</span>;
-<a name="l00315"></a>00315 <span class="keywordflow">case</span> FT_Err_Invalid_Argument : <span class="keywordflow">return</span> <span class="stringliteral">"invalid argument"</span>;
-<a name="l00316"></a>00316 <span class="keywordflow">case</span> FT_Err_Unimplemented_Feature : <span class="keywordflow">return</span> <span class="stringliteral">"unimplemented feature"</span>;
-<a name="l00317"></a>00317 <span class="keywordflow">case</span> FT_Err_Invalid_Table : <span class="keywordflow">return</span> <span class="stringliteral">"broken table"</span>;
-<a name="l00318"></a>00318 <span class="keywordflow">case</span> FT_Err_Invalid_Offset : <span class="keywordflow">return</span> <span class="stringliteral">"broken offset within table"</span>;
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="comment">// Glyph / character errors</span>
-<a name="l00321"></a>00321 <span class="keywordflow">case</span> FT_Err_Invalid_Glyph_Index : <span class="keywordflow">return</span> <span class="stringliteral">"invalid glyph index"</span>;
-<a name="l00322"></a>00322 <span class="keywordflow">case</span> FT_Err_Invalid_Character_Code : <span class="keywordflow">return</span> <span class="stringliteral">"invalid character code"</span>;
-<a name="l00323"></a>00323 <span class="keywordflow">case</span> FT_Err_Invalid_Glyph_Format : <span class="keywordflow">return</span> <span class="stringliteral">"unsupported glyph image format"</span>;
-<a name="l00324"></a>00324 <span class="keywordflow">case</span> FT_Err_Cannot_Render_Glyph : <span class="keywordflow">return</span> <span class="stringliteral">"cannot render this glyph format"</span>;
-<a name="l00325"></a>00325 <span class="keywordflow">case</span> FT_Err_Invalid_Outline : <span class="keywordflow">return</span> <span class="stringliteral">"invalid outline"</span>;
-<a name="l00326"></a>00326 <span class="keywordflow">case</span> FT_Err_Invalid_Composite : <span class="keywordflow">return</span> <span class="stringliteral">"invalid composite glyph"</span>;
-<a name="l00327"></a>00327 <span class="keywordflow">case</span> FT_Err_Too_Many_Hints : <span class="keywordflow">return</span> <span class="stringliteral">"too many hints"</span>;
-<a name="l00328"></a>00328 <span class="keywordflow">case</span> FT_Err_Invalid_Pixel_Size : <span class="keywordflow">return</span> <span class="stringliteral">"invalid pixel size"</span>;
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 <span class="comment">// Handle errors</span>
-<a name="l00331"></a>00331 <span class="keywordflow">case</span> FT_Err_Invalid_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid object handle"</span>;
-<a name="l00332"></a>00332 <span class="keywordflow">case</span> FT_Err_Invalid_Library_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid library handle"</span>;
-<a name="l00333"></a>00333 <span class="keywordflow">case</span> FT_Err_Invalid_Driver_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid module handle"</span>;
-<a name="l00334"></a>00334 <span class="keywordflow">case</span> FT_Err_Invalid_Face_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid face handle"</span>;
-<a name="l00335"></a>00335 <span class="keywordflow">case</span> FT_Err_Invalid_Size_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid size handle"</span>;
-<a name="l00336"></a>00336 <span class="keywordflow">case</span> FT_Err_Invalid_Slot_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid glyph slot handle"</span>;
-<a name="l00337"></a>00337 <span class="keywordflow">case</span> FT_Err_Invalid_CharMap_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid charmap handle"</span>;
-<a name="l00338"></a>00338 <span class="keywordflow">case</span> FT_Err_Invalid_Cache_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid cache manager handle"</span>;
-<a name="l00339"></a>00339 <span class="keywordflow">case</span> FT_Err_Invalid_Stream_Handle : <span class="keywordflow">return</span> <span class="stringliteral">"invalid stream handle"</span>;
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <span class="comment">// Driver errors</span>
-<a name="l00342"></a>00342 <span class="keywordflow">case</span> FT_Err_Too_Many_Drivers : <span class="keywordflow">return</span> <span class="stringliteral">"too many modules"</span>;
-<a name="l00343"></a>00343 <span class="keywordflow">case</span> FT_Err_Too_Many_Extensions : <span class="keywordflow">return</span> <span class="stringliteral">"too many extensions"</span>;
-<a name="l00344"></a>00344
-<a name="l00345"></a>00345 <span class="comment">// Memory errors</span>
-<a name="l00346"></a>00346 <span class="keywordflow">case</span> FT_Err_Out_Of_Memory : <span class="keywordflow">return</span> <span class="stringliteral">"out of memory"</span>;
-<a name="l00347"></a>00347 <span class="keywordflow">case</span> FT_Err_Unlisted_Object : <span class="keywordflow">return</span> <span class="stringliteral">"unlisted object"</span>;
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349 <span class="comment">// Stream errors</span>
-<a name="l00350"></a>00350 <span class="keywordflow">case</span> FT_Err_Cannot_Open_Stream : <span class="keywordflow">return</span> <span class="stringliteral">"cannot open stream"</span>;
-<a name="l00351"></a>00351 <span class="keywordflow">case</span> FT_Err_Invalid_Stream_Seek : <span class="keywordflow">return</span> <span class="stringliteral">"invalid stream seek"</span>;
-<a name="l00352"></a>00352 <span class="keywordflow">case</span> FT_Err_Invalid_Stream_Skip : <span class="keywordflow">return</span> <span class="stringliteral">"invalid stream skip"</span>;
-<a name="l00353"></a>00353 <span class="keywordflow">case</span> FT_Err_Invalid_Stream_Read : <span class="keywordflow">return</span> <span class="stringliteral">"invalid stream read"</span>;
-<a name="l00354"></a>00354 <span class="keywordflow">case</span> FT_Err_Invalid_Stream_Operation : <span class="keywordflow">return</span> <span class="stringliteral">"invalid stream operation"</span>;
-<a name="l00355"></a>00355 <span class="keywordflow">case</span> FT_Err_Invalid_Frame_Operation : <span class="keywordflow">return</span> <span class="stringliteral">"invalid frame operation"</span>;
-<a name="l00356"></a>00356 <span class="keywordflow">case</span> FT_Err_Nested_Frame_Access : <span class="keywordflow">return</span> <span class="stringliteral">"nested frame access"</span>;
-<a name="l00357"></a>00357 <span class="keywordflow">case</span> FT_Err_Invalid_Frame_Read : <span class="keywordflow">return</span> <span class="stringliteral">"invalid frame read"</span>;
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 <span class="comment">// Raster errors</span>
-<a name="l00360"></a>00360 <span class="keywordflow">case</span> FT_Err_Raster_Uninitialized : <span class="keywordflow">return</span> <span class="stringliteral">"raster uninitialized"</span>;
-<a name="l00361"></a>00361 <span class="keywordflow">case</span> FT_Err_Raster_Corrupted : <span class="keywordflow">return</span> <span class="stringliteral">"raster corrupted"</span>;
-<a name="l00362"></a>00362 <span class="keywordflow">case</span> FT_Err_Raster_Overflow : <span class="keywordflow">return</span> <span class="stringliteral">"raster overflow"</span>;
-<a name="l00363"></a>00363 <span class="keywordflow">case</span> FT_Err_Raster_Negative_Height : <span class="keywordflow">return</span> <span class="stringliteral">"negative height while rastering"</span>;
-<a name="l00364"></a>00364
-<a name="l00365"></a>00365 <span class="comment">// Cache errors</span>
-<a name="l00366"></a>00366 <span class="keywordflow">case</span> FT_Err_Too_Many_Caches : <span class="keywordflow">return</span> <span class="stringliteral">"too many registered caches"</span>;
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <span class="comment">// TrueType and SFNT errors</span>
-<a name="l00369"></a>00369 <span class="keywordflow">case</span> FT_Err_Invalid_Opcode : <span class="keywordflow">return</span> <span class="stringliteral">"invalid opcode"</span>;
-<a name="l00370"></a>00370 <span class="keywordflow">case</span> FT_Err_Too_Few_Arguments : <span class="keywordflow">return</span> <span class="stringliteral">"too few arguments"</span>;
-<a name="l00371"></a>00371 <span class="keywordflow">case</span> FT_Err_Stack_Overflow : <span class="keywordflow">return</span> <span class="stringliteral">"stack overflow"</span>;
-<a name="l00372"></a>00372 <span class="keywordflow">case</span> FT_Err_Code_Overflow : <span class="keywordflow">return</span> <span class="stringliteral">"code overflow"</span>;
-<a name="l00373"></a>00373 <span class="keywordflow">case</span> FT_Err_Bad_Argument : <span class="keywordflow">return</span> <span class="stringliteral">"bad argument"</span>;
-<a name="l00374"></a>00374 <span class="keywordflow">case</span> FT_Err_Divide_By_Zero : <span class="keywordflow">return</span> <span class="stringliteral">"division by zero"</span>;
-<a name="l00375"></a>00375 <span class="keywordflow">case</span> FT_Err_Invalid_Reference : <span class="keywordflow">return</span> <span class="stringliteral">"invalid reference"</span>;
-<a name="l00376"></a>00376 <span class="keywordflow">case</span> FT_Err_Debug_OpCode : <span class="keywordflow">return</span> <span class="stringliteral">"found debug opcode"</span>;
-<a name="l00377"></a>00377 <span class="keywordflow">case</span> FT_Err_ENDF_In_Exec_Stream : <span class="keywordflow">return</span> <span class="stringliteral">"found ENDF opcode in execution stream"</span>;
-<a name="l00378"></a>00378 <span class="keywordflow">case</span> FT_Err_Nested_DEFS : <span class="keywordflow">return</span> <span class="stringliteral">"nested DEFS"</span>;
-<a name="l00379"></a>00379 <span class="keywordflow">case</span> FT_Err_Invalid_CodeRange : <span class="keywordflow">return</span> <span class="stringliteral">"invalid code range"</span>;
-<a name="l00380"></a>00380 <span class="keywordflow">case</span> FT_Err_Execution_Too_Long : <span class="keywordflow">return</span> <span class="stringliteral">"execution context too long"</span>;
-<a name="l00381"></a>00381 <span class="keywordflow">case</span> FT_Err_Too_Many_Function_Defs : <span class="keywordflow">return</span> <span class="stringliteral">"too many function definitions"</span>;
-<a name="l00382"></a>00382 <span class="keywordflow">case</span> FT_Err_Too_Many_Instruction_Defs : <span class="keywordflow">return</span> <span class="stringliteral">"too many instruction definitions"</span>;
-<a name="l00383"></a>00383 <span class="keywordflow">case</span> FT_Err_Table_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"SFNT font table missing"</span>;
-<a name="l00384"></a>00384 <span class="keywordflow">case</span> FT_Err_Horiz_Header_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"horizontal header (hhea) table missing"</span>;
-<a name="l00385"></a>00385 <span class="keywordflow">case</span> FT_Err_Locations_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"locations (loca) table missing"</span>;
-<a name="l00386"></a>00386 <span class="keywordflow">case</span> FT_Err_Name_Table_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"name table missing"</span>;
-<a name="l00387"></a>00387 <span class="keywordflow">case</span> FT_Err_CMap_Table_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"character map (cmap) table missing"</span>;
-<a name="l00388"></a>00388 <span class="keywordflow">case</span> FT_Err_Hmtx_Table_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"horizontal metrics (hmtx) table missing"</span>;
-<a name="l00389"></a>00389 <span class="keywordflow">case</span> FT_Err_Post_Table_Missing : <span class="keywordflow">return</span> <span class="stringliteral">"PostScript (post) table missing"</span>;
-<a name="l00390"></a>00390 <span class="keywordflow">case</span> FT_Err_Invalid_Horiz_Metrics : <span class="keywordflow">return</span> <span class="stringliteral">"invalid horizontal metrics"</span>;
-<a name="l00391"></a>00391 <span class="keywordflow">case</span> FT_Err_Invalid_CharMap_Format : <span class="keywordflow">return</span> <span class="stringliteral">"invalid character map (cmap) format"</span>;
-<a name="l00392"></a>00392 <span class="keywordflow">case</span> FT_Err_Invalid_PPem : <span class="keywordflow">return</span> <span class="stringliteral">"invalid ppem value"</span>;
-<a name="l00393"></a>00393 <span class="keywordflow">case</span> FT_Err_Invalid_Vert_Metrics : <span class="keywordflow">return</span> <span class="stringliteral">"invalid vertical metrics"</span>;
-<a name="l00394"></a>00394 <span class="keywordflow">case</span> FT_Err_Could_Not_Find_Context : <span class="keywordflow">return</span> <span class="stringliteral">"could not find context"</span>;
-<a name="l00395"></a>00395 <span class="keywordflow">case</span> FT_Err_Invalid_Post_Table_Format : <span class="keywordflow">return</span> <span class="stringliteral">"invalid PostScript (post) table format"</span>;
-<a name="l00396"></a>00396 <span class="keywordflow">case</span> FT_Err_Invalid_Post_Table : <span class="keywordflow">return</span> <span class="stringliteral">"invalid PostScript (post) table"</span>;
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 <span class="comment">// CCF, CID and Type 1 errors</span>
-<a name="l00399"></a>00399 <span class="keywordflow">case</span> FT_Err_Syntax_Error : <span class="keywordflow">return</span> <span class="stringliteral">"opcode syntax error"</span>;
-<a name="l00400"></a>00400 <span class="keywordflow">case</span> FT_Err_Stack_Underflow : <span class="keywordflow">return</span> <span class="stringliteral">"argument stack underflow"</span>;
-<a name="l00401"></a>00401 <span class="keywordflow">case</span> FT_Err_Ignore : <span class="keywordflow">return</span> <span class="stringliteral">"ignore"</span>;
-<a name="l00402"></a>00402
-<a name="l00403"></a>00403 <span class="comment">// BDF errors</span>
-<a name="l00404"></a>00404 <span class="keywordflow">case</span> FT_Err_Missing_Startfont_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`STARTFONT' field missing"</span>;
-<a name="l00405"></a>00405 <span class="keywordflow">case</span> FT_Err_Missing_Font_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`FONT' field missing"</span>;
-<a name="l00406"></a>00406 <span class="keywordflow">case</span> FT_Err_Missing_Size_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`SIZE' field missing"</span>;
-<a name="l00407"></a>00407 <span class="keywordflow">case</span> FT_Err_Missing_Chars_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`CHARS' field missing"</span>;
-<a name="l00408"></a>00408 <span class="keywordflow">case</span> FT_Err_Missing_Startchar_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`STARTCHAR' field missing"</span>;
-<a name="l00409"></a>00409 <span class="keywordflow">case</span> FT_Err_Missing_Encoding_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`ENCODING' field missing"</span>;
-<a name="l00410"></a>00410 <span class="keywordflow">case</span> FT_Err_Missing_Bbx_Field : <span class="keywordflow">return</span> <span class="stringliteral">"`BBX' field missing"</span>;
-<a name="l00411"></a>00411 }
-<a name="l00412"></a>00412
-<a name="l00413"></a>00413 <span class="keywordflow">return</span> <span class="stringliteral">"unknown error"</span>;
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416 } <span class="comment">// namespace priv</span>
-<a name="l00417"></a>00417
-<a name="l00418"></a>00418 } <span class="comment">// namespace sf</span>
-<a name="l00419"></a>00419
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/FontLoader_8hpp-source.htm b/doc/html/FontLoader_8hpp-source.htm
deleted file mode 100755
index f054efe..0000000
--- a/doc/html/FontLoader_8hpp-source.htm
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>FontLoader.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_FONTLOADER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_FONTLOADER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Unicode.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;ft2build.h&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include FT_FREETYPE_H</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Font;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">namespace </span>priv
-<a name="l00043"></a>00043 {
-<a name="l00047"></a>00047 <span class="keyword">class </span>FontLoader : NonCopyable
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keyword">public</span> :
-<a name="l00050"></a>00050
-<a name="l00057"></a>00057 <span class="keyword">static</span> FontLoader&amp; GetInstance();
-<a name="l00058"></a>00058
-<a name="l00070"></a>00070 <span class="keywordtype">bool</span> LoadFontFromFile(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont);
-<a name="l00071"></a>00071
-<a name="l00084"></a>00084 <span class="keywordtype">bool</span> LoadFontFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont);
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">private</span> :
-<a name="l00087"></a>00087
-<a name="l00092"></a>00092 FontLoader();
-<a name="l00093"></a>00093
-<a name="l00098"></a>00098 ~FontLoader();
-<a name="l00099"></a>00099
-<a name="l00109"></a>00109 FT_Error CreateBitmapFont(FT_Face FontFace, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> Unicode::UTF32String&amp; Charset, Font&amp; LoadedFont);
-<a name="l00110"></a>00110
-<a name="l00119"></a>00119 <span class="keyword">static</span> std::string GetErrorDesc(FT_Error Error);
-<a name="l00120"></a>00120
-<a name="l00122"></a>00122 <span class="comment">// Member data</span>
-<a name="l00124"></a>00124 <span class="comment"></span> FT_Library myLibrary;
-<a name="l00125"></a>00125 };
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 } <span class="comment">// namespace priv</span>
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 } <span class="comment">// namespace sf</span>
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="preprocessor">#endif // SFML_FONTLOADER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Font_8cpp-source.htm b/doc/html/Font_8cpp-source.htm
deleted file mode 100755
index be36879..0000000
--- a/doc/html/Font_8cpp-source.htm
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Font.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Font.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/FontLoader.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00036"></a>00036 <span class="comment">// Static member data</span>
-<a name="l00038"></a>00038 <span class="comment"></span>Uint32 Font::ourDefaultCharset[] =
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="comment">// Printable characters in ASCII range</span>
-<a name="l00041"></a>00041 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
-<a name="l00042"></a>00042 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
-<a name="l00043"></a>00043 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
-<a name="l00044"></a>00044 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
-<a name="l00045"></a>00045 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
-<a name="l00046"></a>00046 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="comment">// Printable characters in extended ASCII range</span>
-<a name="l00049"></a>00049 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0x2A, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
-<a name="l00050"></a>00050 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
-<a name="l00051"></a>00051 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
-<a name="l00052"></a>00052 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
-<a name="l00053"></a>00053 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
-<a name="l00054"></a>00054 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE,
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="comment">// To make it a valid string</span>
-<a name="l00057"></a>00057 0x00
-<a name="l00058"></a>00058 };
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583">00064</a> <a class="code" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583" title="Default constructor.">Font::Font</a>() :
-<a name="l00065"></a>00065 myCharSize(0)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070
-<a name="l00074"></a><a class="code" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5">00074</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5" title="Load the font from a file.">Font::LoadFromFile</a>(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Charset)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="comment">// Clear the previous character map</span>
-<a name="l00077"></a>00077 myGlyphs.clear();
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="comment">// Always add these special characters</span>
-<a name="l00080"></a>00080 Unicode::UTF32String UTFCharset = Charset;
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">' '</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">' '</span>;
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\n'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\n'</span>;
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\v'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\v'</span>;
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\t'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\t'</span>;
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> priv::FontLoader::GetInstance().LoadFontFromFile(Filename, CharSize, UTFCharset, *<span class="keyword">this</span>);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089
-<a name="l00093"></a><a class="code" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b">00093</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b" title="Load the font from a file in memory.">Font::LoadFromMemory</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize, <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Charset)
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 <span class="comment">// Clear the previous character map</span>
-<a name="l00096"></a>00096 myGlyphs.clear();
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="comment">// Check parameters</span>
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (!Data || (SizeInBytes == 0))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load font from memory, no data provided"</span> &lt;&lt; std::endl;
-<a name="l00102"></a>00102 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">// Always add these special characters</span>
-<a name="l00106"></a>00106 Unicode::UTF32String UTFCharset = Charset;
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">' '</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">' '</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\n'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\n'</span>;
-<a name="l00109"></a>00109 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\v'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\v'</span>;
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (UTFCharset.find(L<span class="charliteral">'\t'</span>) != Unicode::UTF32String::npos) UTFCharset += L<span class="charliteral">'\t'</span>;
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> priv::FontLoader::GetInstance().LoadFontFromMemory(Data, SizeInBytes, CharSize, UTFCharset, *<span class="keyword">this</span>);
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00120"></a><a class="code" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc">00120</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc" title="Get the base size of characters in the font; All glyphs dimensions are based on this...">Font::GetCharacterSize</a>()<span class="keyword"> const</span>
-<a name="l00121"></a>00121 <span class="keyword"></span>{
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> myCharSize;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00130"></a><a class="code" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6">00130</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a>&amp; <a class="code" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6" title="Get the description of a glyph (character) given by its unicode value.">Font::GetGlyph</a>(Uint32 CodePoint)<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword"></span>{
-<a name="l00132"></a>00132 std::map&lt;Uint32, Glyph&gt;::const_iterator It = myGlyphs.find(CodePoint);
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (It != myGlyphs.end())
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <span class="comment">// Valid glyph</span>
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> It-&gt;second;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <span class="keywordflow">else</span>
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="comment">// Invalid glyph -- return an invalid glyph</span>
-<a name="l00141"></a>00141 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a> InvalidGlyph;
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> InvalidGlyph;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146
-<a name="l00150"></a><a class="code" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8">00150</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; <a class="code" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8" title="Get the image containing the rendered characters (glyphs).">Font::GetImage</a>()<span class="keyword"> const</span>
-<a name="l00151"></a>00151 <span class="keyword"></span>{
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> myTexture;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155
-<a name="l00159"></a><a class="code" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36">00159</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; <a class="code" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36" title="Get the SFML default built-in font (Arial).">Font::GetDefaultFont</a>()
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS) &amp;&amp; defined(SFML_DYNAMIC)</span>
-<a name="l00162"></a>00162 <span class="preprocessor"></span>
-<a name="l00163"></a>00163 <span class="comment">// On Windows dynamic build, the default font causes a crash at global exit.</span>
-<a name="l00164"></a>00164 <span class="comment">// This is a temporary workaround that turns the crash into a memory leak.</span>
-<a name="l00165"></a>00165 <span class="comment">// Note that this bug doesn't exist anymore in SFML 2.</span>
-<a name="l00166"></a>00166 <span class="keyword">static</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>* DefaultFontPtr = <span class="keyword">new</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>;
-<a name="l00167"></a>00167 <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; DefaultFont = *DefaultFontPtr;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="preprocessor">#else</span>
-<a name="l00170"></a>00170 <span class="preprocessor"></span>
-<a name="l00171"></a>00171 <span class="keyword">static</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> DefaultFont;
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="preprocessor">#endif</span>
-<a name="l00174"></a>00174 <span class="preprocessor"></span>
-<a name="l00175"></a>00175 <span class="comment">// Get the raw data of the Arial font file into an array, so that we can load it into the font</span>
-<a name="l00176"></a>00176 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> DefaultFontData[] =
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="preprocessor"> #include &lt;SFML/Graphics/Arial.hpp&gt;</span>
-<a name="l00179"></a>00179 };
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="comment">// Load the default font on first call</span>
-<a name="l00182"></a>00182 <span class="keyword">static</span> <span class="keywordtype">bool</span> DefaultFontLoaded = <span class="keyword">false</span>;
-<a name="l00183"></a>00183 <span class="keywordflow">if</span> (!DefaultFontLoaded)
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 DefaultFont.<a class="code" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b" title="Load the font from a file in memory.">LoadFromMemory</a>(DefaultFontData, <span class="keyword">sizeof</span>(DefaultFontData), 30);
-<a name="l00186"></a>00186 DefaultFontLoaded = <span class="keyword">true</span>;
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> DefaultFont;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Font_8hpp-source.htm b/doc/html/Font_8hpp-source.htm
deleted file mode 100755
index 52eb243..0000000
--- a/doc/html/Font_8hpp-source.htm
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Font.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_FONT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_FONT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/System/Unicode.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Graphics/Glyph.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="keyword">namespace </span>sf
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>String;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>priv
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">class </span>FontLoader;
-<a name="l00048"></a>00048 }
-<a name="l00054"></a><a class="code" href="classsf_1_1Font.htm">00054</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>&lt;Font&gt;
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keyword">public</span> :
-<a name="l00057"></a>00057
-<a name="l00062"></a>00062 <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>();
-<a name="l00063"></a>00063
-<a name="l00074"></a>00074 <span class="keywordtype">bool</span> LoadFromFile(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize = 30, <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Charset = ourDefaultCharset);
-<a name="l00075"></a>00075
-<a name="l00087"></a>00087 <span class="keywordtype">bool</span> LoadFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CharSize = 30, <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Charset = ourDefaultCharset);
-<a name="l00088"></a>00088
-<a name="l00096"></a>00096 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetCharacterSize() <span class="keyword">const</span>;
-<a name="l00097"></a>00097
-<a name="l00107"></a>00107 <span class="keyword">const</span> <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a>&amp; GetGlyph(Uint32 CodePoint) <span class="keyword">const</span>;
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 <span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; GetImage() <span class="keyword">const</span>;
-<a name="l00116"></a>00116
-<a name="l00123"></a>00123 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; GetDefaultFont();
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keyword">private</span> :
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keyword">friend</span> <span class="keyword">class </span>priv::FontLoader;
-<a name="l00128"></a>00128
-<a name="l00130"></a>00130 <span class="comment">// Static member data</span>
-<a name="l00132"></a>00132 <span class="comment"></span> <span class="keyword">static</span> Uint32 ourDefaultCharset[];
-<a name="l00133"></a>00133
-<a name="l00135"></a>00135 <span class="comment">// Member data</span>
-<a name="l00137"></a>00137 <span class="comment"></span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> myTexture;
-<a name="l00138"></a>00138 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myCharSize;
-<a name="l00139"></a>00139 std::map&lt;Uint32, Glyph&gt; myGlyphs;
-<a name="l00140"></a>00140 };
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">// namespace sf</span>
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="preprocessor">#endif // SFML_FONT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Ftp_8cpp-source.htm b/doc/html/Ftp_8cpp-source.htm
deleted file mode 100755
index a93fede..0000000
--- a/doc/html/Ftp_8cpp-source.htm
+++ /dev/null
@@ -1,632 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Ftp.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/Ftp.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;fstream&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iterator&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;sstream&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00039"></a>00039 <span class="comment">// Utility class for exchanging stuff with the server</span>
-<a name="l00040"></a>00040 <span class="comment">// on the data channel</span>
-<a name="l00042"></a>00042 <span class="comment"></span><span class="keyword">class </span>Ftp::DataChannel : NonCopyable
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00047"></a>00047 <span class="comment">// Constructor</span>
-<a name="l00049"></a>00049 <span class="comment"></span> DataChannel(Ftp&amp; Owner);
-<a name="l00050"></a>00050
-<a name="l00052"></a>00052 <span class="comment">// Destructor</span>
-<a name="l00054"></a>00054 <span class="comment"></span> ~DataChannel();
-<a name="l00055"></a>00055
-<a name="l00057"></a>00057 <span class="comment">// Open the data channel using the specified mode and port</span>
-<a name="l00059"></a>00059 <span class="comment"></span> Ftp::Response Open(<a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">Ftp::TransferMode</a> Mode);
-<a name="l00060"></a>00060
-<a name="l00062"></a>00062 <span class="comment">// Send data on the data channel</span>
-<a name="l00064"></a>00064 <span class="comment"></span> <span class="keywordtype">void</span> Send(<span class="keyword">const</span> std::vector&lt;char&gt;&amp; Data);
-<a name="l00065"></a>00065
-<a name="l00067"></a>00067 <span class="comment">// Receive data on the data channel until it is closed</span>
-<a name="l00069"></a>00069 <span class="comment"></span> <span class="keywordtype">void</span> Receive(std::vector&lt;char&gt;&amp; Data);
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keyword">private</span> :
-<a name="l00072"></a>00072
-<a name="l00074"></a>00074 <span class="comment">// Member data</span>
-<a name="l00076"></a>00076 <span class="comment"></span> Ftp&amp; myFtp;
-<a name="l00077"></a>00077 SocketTCP myDataSocket;
-<a name="l00078"></a>00078 };
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00084"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">00084</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2" title="Default constructor.">Ftp::Response::Response</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b" title="Enumerate all the valid status codes returned in a FTP response.">Status</a> Code, <span class="keyword">const</span> std::string&amp; Message) :
-<a name="l00085"></a>00085 myStatus (Code),
-<a name="l00086"></a>00086 myMessage(Message)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091
-<a name="l00096"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">00096</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">Ftp::Response::IsOk</a>()<span class="keyword"> const</span>
-<a name="l00097"></a>00097 <span class="keyword"></span>{
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> myStatus &lt; 400;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101
-<a name="l00105"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">00105</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b" title="Enumerate all the valid status codes returned in a FTP response.">Ftp::Response::Status</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee" title="Get the response status code.">Ftp::Response::GetStatus</a>()<span class="keyword"> const</span>
-<a name="l00106"></a>00106 <span class="keyword"></span>{
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> myStatus;
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00114"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">00114</a> <span class="keyword">const</span> std::string&amp; <a class="code" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5" title="Get the full message contained in the response.">Ftp::Response::GetMessage</a>()<span class="keyword"> const</span>
-<a name="l00115"></a>00115 <span class="keyword"></span>{
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> myMessage;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119
-<a name="l00123"></a><a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc">00123</a> <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc" title="Default constructor.">Ftp::DirectoryResponse::DirectoryResponse</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> Resp) :
-<a name="l00124"></a>00124 <a class="code" href="classsf_1_1Ftp.htm" title="This class provides methods for manipulating the FTP protocol (described in RFC 959)...">Ftp</a>::<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(Resp)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="comment">// Extract the directory from the server response</span>
-<a name="l00129"></a>00129 std::string::size_type Begin = Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5" title="Get the full message contained in the response.">GetMessage</a>().find(<span class="charliteral">'"'</span>, 0);
-<a name="l00130"></a>00130 std::string::size_type End = Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5" title="Get the full message contained in the response.">GetMessage</a>().find(<span class="charliteral">'"'</span>, Begin + 1);
-<a name="l00131"></a>00131 myDirectory = Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5" title="Get the full message contained in the response.">GetMessage</a>().substr(Begin + 1, End - Begin - 1);
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00139"></a><a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799">00139</a> <span class="keyword">const</span> std::string&amp; <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799" title="Get the directory returned in the response.">Ftp::DirectoryResponse::GetDirectory</a>()<span class="keyword"> const</span>
-<a name="l00140"></a>00140 <span class="keyword"></span>{
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> myDirectory;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a><a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5">00148</a> <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5" title="Default constructor.">Ftp::ListingResponse::ListingResponse</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> Resp, <span class="keyword">const</span> std::vector&lt;char&gt;&amp; Data) :
-<a name="l00149"></a>00149 <a class="code" href="classsf_1_1Ftp.htm" title="This class provides methods for manipulating the FTP protocol (described in RFC 959)...">Ftp</a>::<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(Resp)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="comment">// Fill the array of strings</span>
-<a name="l00154"></a>00154 std::string Paths(Data.begin(), Data.end());
-<a name="l00155"></a>00155 std::string::size_type LastPos = 0;
-<a name="l00156"></a>00156 <span class="keywordflow">for</span> (std::string::size_type Pos = Paths.find(<span class="stringliteral">"\r\n"</span>); Pos != std::string::npos; Pos = Paths.find(<span class="stringliteral">"\r\n"</span>, LastPos))
-<a name="l00157"></a>00157 {
-<a name="l00158"></a>00158 myFilenames.push_back(Paths.substr(LastPos, Pos - LastPos));
-<a name="l00159"></a>00159 LastPos = Pos + 2;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164
-<a name="l00168"></a><a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522">00168</a> std::size_t <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522" title="Get the number of filenames in the listing.">Ftp::ListingResponse::GetCount</a>()<span class="keyword"> const</span>
-<a name="l00169"></a>00169 <span class="keyword"></span>{
-<a name="l00170"></a>00170 <span class="keywordflow">return</span> myFilenames.size();
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173
-<a name="l00177"></a><a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922">00177</a> <span class="keyword">const</span> std::string&amp; <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922" title="Get the Index-th filename in the directory.">Ftp::ListingResponse::GetFilename</a>(std::size_t Index)<span class="keyword"> const</span>
-<a name="l00178"></a>00178 <span class="keyword"></span>{
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> myFilenames[Index];
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182
-<a name="l00186"></a><a class="code" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52">00186</a> <a class="code" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52" title="Destructor -- close the connection with the server.">Ftp::~Ftp</a>()
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <a class="code" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc" title="Close the connection with FTP server.">Disconnect</a>();
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00195"></a><a class="code" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c">00195</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c" title="Connect to the specified FTP server.">Ftp::Connect</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Server, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port, <span class="keywordtype">float</span> Timeout)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="comment">// Connect to the server</span>
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (myCommandSocket.<a class="code" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f" title="Connect to another computer on a specified port.">Connect</a>(Port, Server, Timeout) != Socket::Done)
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c" title="Connection with server failed.">Response::ConnectionFailed</a>);
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="comment">// Get the response to the connection</span>
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> GetResponse();
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205
-<a name="l00209"></a><a class="code" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf">00209</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf" title="Log in using anonymous account.">Ftp::Login</a>()
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf" title="Log in using anonymous account.">Login</a>(<span class="stringliteral">"anonymous"</span>, <span class="stringliteral">"user@sfml-dev.org"</span>);
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214
-<a name="l00218"></a><a class="code" href="classsf_1_1Ftp.htm#1ed080612214df38a5f740d1ee49f082">00218</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf" title="Log in using anonymous account.">Ftp::Login</a>(<span class="keyword">const</span> std::string&amp; UserName, <span class="keyword">const</span> std::string&amp; Password)
-<a name="l00219"></a>00219 {
-<a name="l00220"></a>00220 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = SendCommand(<span class="stringliteral">"USER"</span>, UserName);
-<a name="l00221"></a>00221 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00222"></a>00222 Resp = SendCommand(<span class="stringliteral">"PASS"</span>, Password);
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> Resp;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00231"></a><a class="code" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc">00231</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc" title="Close the connection with FTP server.">Ftp::Disconnect</a>()
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <span class="comment">// Send the exit command</span>
-<a name="l00234"></a>00234 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = SendCommand(<span class="stringliteral">"QUIT"</span>);
-<a name="l00235"></a>00235 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00236"></a>00236 myCommandSocket.<a class="code" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044" title="Close the socket.">Close</a>();
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="keywordflow">return</span> Resp;
-<a name="l00239"></a>00239 }
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241
-<a name="l00245"></a><a class="code" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4">00245</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4" title="Send a null command just to prevent from being disconnected.">Ftp::KeepAlive</a>()
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"NOOP"</span>);
-<a name="l00248"></a>00248 }
-<a name="l00249"></a>00249
-<a name="l00250"></a>00250
-<a name="l00254"></a><a class="code" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde">00254</a> <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">Ftp::DirectoryResponse</a> <a class="code" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde" title="Get the current working directory.">Ftp::GetWorkingDirectory</a>()
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">DirectoryResponse</a>(SendCommand(<span class="stringliteral">"PWD"</span>));
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259
-<a name="l00264"></a><a class="code" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357">00264</a> <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm" title="Specialization of FTP response returning a filename lisiting.">Ftp::ListingResponse</a> <a class="code" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357" title="Get the contents of the given directory (subdirectories and files).">Ftp::GetDirectoryListing</a>(<span class="keyword">const</span> std::string&amp; Directory)
-<a name="l00265"></a>00265 {
-<a name="l00266"></a>00266 <span class="comment">// Open a data channel on default port (20) using ASCII transfer mode</span>
-<a name="l00267"></a>00267 std::vector&lt;char&gt; DirData;
-<a name="l00268"></a>00268 DataChannel Data(*<span class="keyword">this</span>);
-<a name="l00269"></a>00269 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = Data.Open(<a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2" title="Text mode using ASCII encoding.">Ascii</a>);
-<a name="l00270"></a>00270 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="comment">// Tell the server to send us the listing</span>
-<a name="l00273"></a>00273 Resp = SendCommand(<span class="stringliteral">"NLST"</span>, Directory);
-<a name="l00274"></a>00274 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00275"></a>00275 {
-<a name="l00276"></a>00276 <span class="comment">// Receive the listing</span>
-<a name="l00277"></a>00277 Data.Receive(DirData);
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="comment">// Get the response from the server</span>
-<a name="l00280"></a>00280 Resp = GetResponse();
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm" title="Specialization of FTP response returning a filename lisiting.">ListingResponse</a>(Resp, DirData);
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287
-<a name="l00291"></a><a class="code" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc">00291</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc" title="Change the current working directory.">Ftp::ChangeDirectory</a>(<span class="keyword">const</span> std::string&amp; Directory)
-<a name="l00292"></a>00292 {
-<a name="l00293"></a>00293 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"CWD"</span>, Directory);
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296
-<a name="l00300"></a><a class="code" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6">00300</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6" title="Go to the parent directory of the current one.">Ftp::ParentDirectory</a>()
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"CDUP"</span>);
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304
-<a name="l00305"></a>00305
-<a name="l00309"></a><a class="code" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071">00309</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071" title="Create a new directory.">Ftp::MakeDirectory</a>(<span class="keyword">const</span> std::string&amp; Name)
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"MKD"</span>, Name);
-<a name="l00312"></a>00312 }
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314
-<a name="l00318"></a><a class="code" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32">00318</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32" title="Remove an existing directory.">Ftp::DeleteDirectory</a>(<span class="keyword">const</span> std::string&amp; Name)
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"RMD"</span>, Name);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323
-<a name="l00327"></a><a class="code" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c">00327</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c" title="Rename a file.">Ftp::RenameFile</a>(<span class="keyword">const</span> std::string&amp; File, <span class="keyword">const</span> std::string&amp; NewName)
-<a name="l00328"></a>00328 {
-<a name="l00329"></a>00329 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = SendCommand(<span class="stringliteral">"RNFR"</span>, File);
-<a name="l00330"></a>00330 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00331"></a>00331 Resp = SendCommand(<span class="stringliteral">"RNTO"</span>, NewName);
-<a name="l00332"></a>00332
-<a name="l00333"></a>00333 <span class="keywordflow">return</span> Resp;
-<a name="l00334"></a>00334 }
-<a name="l00335"></a>00335
-<a name="l00336"></a>00336
-<a name="l00340"></a><a class="code" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9">00340</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9" title="Remove an existing file.">Ftp::DeleteFile</a>(<span class="keyword">const</span> std::string&amp; Name)
-<a name="l00341"></a>00341 {
-<a name="l00342"></a>00342 <span class="keywordflow">return</span> SendCommand(<span class="stringliteral">"DELE"</span>, Name);
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344
-<a name="l00345"></a>00345
-<a name="l00349"></a><a class="code" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886">00349</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886" title="Download a file from the server.">Ftp::Download</a>(<span class="keyword">const</span> std::string&amp; DistantFile, <span class="keyword">const</span> std::string&amp; DestPath, <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">TransferMode</a> Mode)
-<a name="l00350"></a>00350 {
-<a name="l00351"></a>00351 <span class="comment">// Open a data channel using the given transfer mode</span>
-<a name="l00352"></a>00352 DataChannel Data(*<span class="keyword">this</span>);
-<a name="l00353"></a>00353 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = Data.Open(Mode);
-<a name="l00354"></a>00354 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00355"></a>00355 {
-<a name="l00356"></a>00356 <span class="comment">// Tell the server to start the transfer</span>
-<a name="l00357"></a>00357 Resp = SendCommand(<span class="stringliteral">"RETR"</span>, DistantFile);
-<a name="l00358"></a>00358 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00359"></a>00359 {
-<a name="l00360"></a>00360 <span class="comment">// Receive the file data</span>
-<a name="l00361"></a>00361 std::vector&lt;char&gt; FileData;
-<a name="l00362"></a>00362 Data.Receive(FileData);
-<a name="l00363"></a>00363
-<a name="l00364"></a>00364 <span class="comment">// Get the response from the server</span>
-<a name="l00365"></a>00365 Resp = GetResponse();
-<a name="l00366"></a>00366 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00367"></a>00367 {
-<a name="l00368"></a>00368 <span class="comment">// Extract the filename from the file path</span>
-<a name="l00369"></a>00369 std::string Filename = DistantFile;
-<a name="l00370"></a>00370 std::string::size_type Pos = Filename.find_last_of(<span class="stringliteral">"/\\"</span>);
-<a name="l00371"></a>00371 <span class="keywordflow">if</span> (Pos != std::string::npos)
-<a name="l00372"></a>00372 Filename = Filename.substr(Pos + 1);
-<a name="l00373"></a>00373
-<a name="l00374"></a>00374 <span class="comment">// Make sure the destination path ends with a slash</span>
-<a name="l00375"></a>00375 std::string Path = DestPath;
-<a name="l00376"></a>00376 <span class="keywordflow">if</span> (!Path.empty() &amp;&amp; (Path[Path.size() - 1] != <span class="charliteral">'\\'</span>) &amp;&amp; (Path[Path.size() - 1] != <span class="charliteral">'/'</span>))
-<a name="l00377"></a>00377 Path += <span class="stringliteral">"/"</span>;
-<a name="l00378"></a>00378
-<a name="l00379"></a>00379 <span class="comment">// Create the file and copy the received data into it</span>
-<a name="l00380"></a>00380 std::ofstream File((Path + Filename).c_str(), std::ios_base::binary);
-<a name="l00381"></a>00381 <span class="keywordflow">if</span> (!File)
-<a name="l00382"></a>00382 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935" title="Invalid file to upload / download.">Response::InvalidFile</a>);
-<a name="l00383"></a>00383 <span class="keywordflow">if</span> (!FileData.empty())
-<a name="l00384"></a>00384 File.write(&amp;FileData[0], static_cast&lt;std::streamsize&gt;(FileData.size()));
-<a name="l00385"></a>00385 }
-<a name="l00386"></a>00386 }
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388
-<a name="l00389"></a>00389 <span class="keywordflow">return</span> Resp;
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392
-<a name="l00396"></a><a class="code" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528">00396</a> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> <a class="code" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528" title="Upload a file to the server.">Ftp::Upload</a>(<span class="keyword">const</span> std::string&amp; LocalFile, <span class="keyword">const</span> std::string&amp; DestPath, <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">TransferMode</a> Mode)
-<a name="l00397"></a>00397 {
-<a name="l00398"></a>00398 <span class="comment">// Get the contents of the file to send</span>
-<a name="l00399"></a>00399 std::ifstream File(LocalFile.c_str(), std::ios_base::binary);
-<a name="l00400"></a>00400 <span class="keywordflow">if</span> (!File)
-<a name="l00401"></a>00401 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935" title="Invalid file to upload / download.">Response::InvalidFile</a>);
-<a name="l00402"></a>00402 File.seekg(0, std::ios::end);
-<a name="l00403"></a>00403 std::size_t Length = File.tellg();
-<a name="l00404"></a>00404 File.seekg(0, std::ios::beg);
-<a name="l00405"></a>00405 std::vector&lt;char&gt; FileData(Length);
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00407"></a>00407 File.read(&amp;FileData[0], static_cast&lt;std::streamsize&gt;(Length));
-<a name="l00408"></a>00408
-<a name="l00409"></a>00409 <span class="comment">// Extract the filename from the file path</span>
-<a name="l00410"></a>00410 std::string Filename = LocalFile;
-<a name="l00411"></a>00411 std::string::size_type Pos = Filename.find_last_of(<span class="stringliteral">"/\\"</span>);
-<a name="l00412"></a>00412 <span class="keywordflow">if</span> (Pos != std::string::npos)
-<a name="l00413"></a>00413 Filename = Filename.substr(Pos + 1);
-<a name="l00414"></a>00414
-<a name="l00415"></a>00415 <span class="comment">// Make sure the destination path ends with a slash</span>
-<a name="l00416"></a>00416 std::string Path = DestPath;
-<a name="l00417"></a>00417 <span class="keywordflow">if</span> (!Path.empty() &amp;&amp; (Path[Path.size() - 1] != <span class="charliteral">'\\'</span>) &amp;&amp; (Path[Path.size() - 1] != <span class="charliteral">'/'</span>))
-<a name="l00418"></a>00418 Path += <span class="stringliteral">"/"</span>;
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 <span class="comment">// Open a data channel using the given transfer mode</span>
-<a name="l00421"></a>00421 DataChannel Data(*<span class="keyword">this</span>);
-<a name="l00422"></a>00422 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp = Data.Open(Mode);
-<a name="l00423"></a>00423 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00424"></a>00424 {
-<a name="l00425"></a>00425 <span class="comment">// Tell the server to start the transfer</span>
-<a name="l00426"></a>00426 Resp = SendCommand(<span class="stringliteral">"STOR"</span>, Path + Filename);
-<a name="l00427"></a>00427 <span class="keywordflow">if</span> (Resp.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134" title="Convenience function to check if the response status code means a success.">IsOk</a>())
-<a name="l00428"></a>00428 {
-<a name="l00429"></a>00429 <span class="comment">// Send the file data</span>
-<a name="l00430"></a>00430 Data.Send(FileData);
-<a name="l00431"></a>00431
-<a name="l00432"></a>00432 <span class="comment">// Get the response from the server</span>
-<a name="l00433"></a>00433 Resp = GetResponse();
-<a name="l00434"></a>00434 }
-<a name="l00435"></a>00435 }
-<a name="l00436"></a>00436
-<a name="l00437"></a>00437 <span class="keywordflow">return</span> Resp;
-<a name="l00438"></a>00438 }
-<a name="l00439"></a>00439
-<a name="l00440"></a>00440
-<a name="l00444"></a>00444 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Ftp::Response</a> Ftp::SendCommand(<span class="keyword">const</span> std::string&amp; Command, <span class="keyword">const</span> std::string&amp; Parameter)
-<a name="l00445"></a>00445 {
-<a name="l00446"></a>00446 <span class="comment">// Build the command string</span>
-<a name="l00447"></a>00447 std::string CommandStr;
-<a name="l00448"></a>00448 <span class="keywordflow">if</span> (Parameter != <span class="stringliteral">""</span>)
-<a name="l00449"></a>00449 CommandStr = Command + <span class="stringliteral">" "</span> + Parameter + <span class="stringliteral">"\r\n"</span>;
-<a name="l00450"></a>00450 <span class="keywordflow">else</span>
-<a name="l00451"></a>00451 CommandStr = Command + <span class="stringliteral">"\r\n"</span>;
-<a name="l00452"></a>00452
-<a name="l00453"></a>00453 <span class="comment">// Send it to the server</span>
-<a name="l00454"></a>00454 <span class="keywordflow">if</span> (myCommandSocket.<a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">Send</a>(CommandStr.c_str(), CommandStr.length()) != sf::Socket::Done)
-<a name="l00455"></a>00455 <span class="keywordflow">return</span> Response(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6" title="Connection with server closed.">Response::ConnectionClosed</a>);
-<a name="l00456"></a>00456
-<a name="l00457"></a>00457 <span class="comment">// Get the response</span>
-<a name="l00458"></a>00458 <span class="keywordflow">return</span> GetResponse();
-<a name="l00459"></a>00459 }
-<a name="l00460"></a>00460
-<a name="l00461"></a>00461
-<a name="l00466"></a>00466 Ftp::Response Ftp::GetResponse()
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 <span class="comment">// We'll use a variable to keep track of the last valid code.</span>
-<a name="l00469"></a>00469 <span class="comment">// It is useful in case of multi-lines responses, because the end of such a response</span>
-<a name="l00470"></a>00470 <span class="comment">// will start by the same code</span>
-<a name="l00471"></a>00471 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> LastCode = 0;
-<a name="l00472"></a>00472 <span class="keywordtype">bool</span> IsInsideMultiline = <span class="keyword">false</span>;
-<a name="l00473"></a>00473 std::string Message;
-<a name="l00474"></a>00474
-<a name="l00475"></a>00475 <span class="keywordflow">for</span> (;;)
-<a name="l00476"></a>00476 {
-<a name="l00477"></a>00477 <span class="comment">// Receive the response from the server</span>
-<a name="l00478"></a>00478 <span class="keywordtype">char</span> Buffer[1024];
-<a name="l00479"></a>00479 std::size_t Length;
-<a name="l00480"></a>00480 <span class="keywordflow">if</span> (myCommandSocket.Receive(Buffer, <span class="keyword">sizeof</span>(Buffer), Length) != sf::Socket::Done)
-<a name="l00481"></a>00481 <span class="keywordflow">return</span> Response(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6" title="Connection with server closed.">Response::ConnectionClosed</a>);
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483 <span class="comment">// There can be several lines inside the received buffer, extract them all</span>
-<a name="l00484"></a>00484 std::istringstream In(std::string(Buffer, Length), std::ios_base::binary);
-<a name="l00485"></a>00485 <span class="keywordflow">while</span> (In)
-<a name="l00486"></a>00486 {
-<a name="l00487"></a>00487 <span class="comment">// Try to extract the code</span>
-<a name="l00488"></a>00488 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Code;
-<a name="l00489"></a>00489 <span class="keywordflow">if</span> (In &gt;&gt; Code)
-<a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <span class="comment">// Extract the separator</span>
-<a name="l00492"></a>00492 <span class="keywordtype">char</span> Sep;
-<a name="l00493"></a>00493 In.get(Sep);
-<a name="l00494"></a>00494
-<a name="l00495"></a>00495 <span class="comment">// The '-' character means a multiline response</span>
-<a name="l00496"></a>00496 <span class="keywordflow">if</span> ((Sep == <span class="charliteral">'-'</span>) &amp;&amp; !IsInsideMultiline)
-<a name="l00497"></a>00497 {
-<a name="l00498"></a>00498 <span class="comment">// Set the multiline flag</span>
-<a name="l00499"></a>00499 IsInsideMultiline = <span class="keyword">true</span>;
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 <span class="comment">// Keep track of the code</span>
-<a name="l00502"></a>00502 <span class="keywordflow">if</span> (LastCode == 0)
-<a name="l00503"></a>00503 LastCode = Code;
-<a name="l00504"></a>00504
-<a name="l00505"></a>00505 <span class="comment">// Extract the line</span>
-<a name="l00506"></a>00506 std::getline(In, Message);
-<a name="l00507"></a>00507
-<a name="l00508"></a>00508 <span class="comment">// Remove the ending '\r' (all lines are terminated by "\r\n")</span>
-<a name="l00509"></a>00509 Message.erase(Message.length() - 1);
-<a name="l00510"></a>00510 Message = Sep + Message + <span class="stringliteral">"\n"</span>;
-<a name="l00511"></a>00511 }
-<a name="l00512"></a>00512 <span class="keywordflow">else</span>
-<a name="l00513"></a>00513 {
-<a name="l00514"></a>00514 <span class="comment">// We must make sure that the code is the same, otherwise it means</span>
-<a name="l00515"></a>00515 <span class="comment">// we haven't reached the end of the multiline response</span>
-<a name="l00516"></a>00516 <span class="keywordflow">if</span> ((Sep != <span class="charliteral">'-'</span>) &amp;&amp; ((Code == LastCode) || (LastCode == 0)))
-<a name="l00517"></a>00517 {
-<a name="l00518"></a>00518 <span class="comment">// Clear the multiline flag</span>
-<a name="l00519"></a>00519 IsInsideMultiline = <span class="keyword">false</span>;
-<a name="l00520"></a>00520
-<a name="l00521"></a>00521 <span class="comment">// Extract the line</span>
-<a name="l00522"></a>00522 std::string Line;
-<a name="l00523"></a>00523 std::getline(In, Line);
-<a name="l00524"></a>00524
-<a name="l00525"></a>00525 <span class="comment">// Remove the ending '\r' (all lines are terminated by "\r\n")</span>
-<a name="l00526"></a>00526 Line.erase(Line.length() - 1);
-<a name="l00527"></a>00527
-<a name="l00528"></a>00528 <span class="comment">// Append it to the message</span>
-<a name="l00529"></a>00529 <span class="keywordflow">if</span> (Code == LastCode)
-<a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 std::ostringstream Out;
-<a name="l00532"></a>00532 Out &lt;&lt; Code &lt;&lt; Sep &lt;&lt; Line;
-<a name="l00533"></a>00533 Message += Out.str();
-<a name="l00534"></a>00534 }
-<a name="l00535"></a>00535 <span class="keywordflow">else</span>
-<a name="l00536"></a>00536 {
-<a name="l00537"></a>00537 Message = Sep + Line;
-<a name="l00538"></a>00538 }
-<a name="l00539"></a>00539
-<a name="l00540"></a>00540 <span class="comment">// Return the response code and message</span>
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> Response(static_cast&lt;Response::Status&gt;(Code), Message);
-<a name="l00542"></a>00542 }
-<a name="l00543"></a>00543 <span class="keywordflow">else</span>
-<a name="l00544"></a>00544 {
-<a name="l00545"></a>00545 <span class="comment">// The line we just read was actually not a response,</span>
-<a name="l00546"></a>00546 <span class="comment">// only a new part of the current multiline response</span>
-<a name="l00547"></a>00547
-<a name="l00548"></a>00548 <span class="comment">// Extract the line</span>
-<a name="l00549"></a>00549 std::string Line;
-<a name="l00550"></a>00550 std::getline(In, Line);
-<a name="l00551"></a>00551
-<a name="l00552"></a>00552 <span class="keywordflow">if</span> (!Line.empty())
-<a name="l00553"></a>00553 {
-<a name="l00554"></a>00554 <span class="comment">// Remove the ending '\r' (all lines are terminated by "\r\n")</span>
-<a name="l00555"></a>00555 Line.erase(Line.length() - 1);
-<a name="l00556"></a>00556
-<a name="l00557"></a>00557 <span class="comment">// Append it to the current message</span>
-<a name="l00558"></a>00558 std::ostringstream Out;
-<a name="l00559"></a>00559 Out &lt;&lt; Code &lt;&lt; Sep &lt;&lt; Line &lt;&lt; <span class="stringliteral">"\n"</span>;
-<a name="l00560"></a>00560 Message += Out.str();
-<a name="l00561"></a>00561 }
-<a name="l00562"></a>00562 }
-<a name="l00563"></a>00563 }
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LastCode != 0)
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <span class="comment">// It seems we are in the middle of a multiline response</span>
-<a name="l00568"></a>00568
-<a name="l00569"></a>00569 <span class="comment">// Clear the error bits of the stream</span>
-<a name="l00570"></a>00570 In.clear();
-<a name="l00571"></a>00571
-<a name="l00572"></a>00572 <span class="comment">// Extract the line</span>
-<a name="l00573"></a>00573 std::string Line;
-<a name="l00574"></a>00574 std::getline(In, Line);
-<a name="l00575"></a>00575
-<a name="l00576"></a>00576 <span class="keywordflow">if</span> (!Line.empty())
-<a name="l00577"></a>00577 {
-<a name="l00578"></a>00578 <span class="comment">// Remove the ending '\r' (all lines are terminated by "\r\n")</span>
-<a name="l00579"></a>00579 Line.erase(Line.length() - 1);
-<a name="l00580"></a>00580
-<a name="l00581"></a>00581 <span class="comment">// Append it to the current message</span>
-<a name="l00582"></a>00582 Message += Line + <span class="stringliteral">"\n"</span>;
-<a name="l00583"></a>00583 }
-<a name="l00584"></a>00584 }
-<a name="l00585"></a>00585 <span class="keywordflow">else</span>
-<a name="l00586"></a>00586 {
-<a name="l00587"></a>00587 <span class="comment">// Error : cannot extract the code, and we are not in a multiline response</span>
-<a name="l00588"></a>00588 <span class="keywordflow">return</span> Response(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b" title="Response is not a valid FTP one.">Response::InvalidResponse</a>);
-<a name="l00589"></a>00589 }
-<a name="l00590"></a>00590 }
-<a name="l00591"></a>00591 }
-<a name="l00592"></a>00592
-<a name="l00593"></a>00593 <span class="comment">// We never reach there</span>
-<a name="l00594"></a>00594 }
-<a name="l00595"></a>00595
-<a name="l00596"></a>00596
-<a name="l00600"></a>00600 Ftp::DataChannel::DataChannel(Ftp&amp; Owner) :
-<a name="l00601"></a>00601 myFtp(Owner)
-<a name="l00602"></a>00602 {
-<a name="l00603"></a>00603
-<a name="l00604"></a>00604 }
-<a name="l00605"></a>00605
-<a name="l00606"></a>00606
-<a name="l00610"></a>00610 Ftp::DataChannel::~DataChannel()
-<a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 <span class="comment">// Close the data socket</span>
-<a name="l00613"></a>00613 myDataSocket.Close();
-<a name="l00614"></a>00614 }
-<a name="l00615"></a>00615
-<a name="l00616"></a>00616
-<a name="l00620"></a>00620 Ftp::Response Ftp::DataChannel::Open(<a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">Ftp::TransferMode</a> Mode)
-<a name="l00621"></a>00621 {
-<a name="l00622"></a>00622 <span class="comment">// Open a data connection in active mode (we connect to the server)</span>
-<a name="l00623"></a>00623 Ftp::Response Resp = myFtp.SendCommand(<span class="stringliteral">"PASV"</span>);
-<a name="l00624"></a>00624 <span class="keywordflow">if</span> (Resp.IsOk())
-<a name="l00625"></a>00625 {
-<a name="l00626"></a>00626 <span class="comment">// Extract the connection address and port from the response</span>
-<a name="l00627"></a>00627 std::string::size_type begin = Resp.GetMessage().find_first_of(<span class="stringliteral">"0123456789"</span>);
-<a name="l00628"></a>00628 <span class="keywordflow">if</span> (begin != std::string::npos)
-<a name="l00629"></a>00629 {
-<a name="l00630"></a>00630 sf::Uint8 Data[6] = {0, 0, 0, 0, 0, 0};
-<a name="l00631"></a>00631 std::string Str = Resp.GetMessage().substr(begin);
-<a name="l00632"></a>00632 std::size_t Index = 0;
-<a name="l00633"></a>00633 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 6; ++i)
-<a name="l00634"></a>00634 {
-<a name="l00635"></a>00635 <span class="comment">// Extract the current number</span>
-<a name="l00636"></a>00636 <span class="keywordflow">while</span> (isdigit(Str[Index]))
-<a name="l00637"></a>00637 {
-<a name="l00638"></a>00638 Data[i] = Data[i] * 10 + (Str[Index] - <span class="charliteral">'0'</span>);
-<a name="l00639"></a>00639 Index++;
-<a name="l00640"></a>00640 }
-<a name="l00641"></a>00641
-<a name="l00642"></a>00642 <span class="comment">// Skip separator</span>
-<a name="l00643"></a>00643 Index++;
-<a name="l00644"></a>00644 }
-<a name="l00645"></a>00645
-<a name="l00646"></a>00646 <span class="comment">// Reconstruct connection port and address</span>
-<a name="l00647"></a>00647 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port = Data[4] * 256 + Data[5];
-<a name="l00648"></a>00648 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">sf::IPAddress</a> Address(static_cast&lt;sf::Uint8&gt;(Data[0]),
-<a name="l00649"></a>00649 static_cast&lt;sf::Uint8&gt;(Data[1]),
-<a name="l00650"></a>00650 static_cast&lt;sf::Uint8&gt;(Data[2]),
-<a name="l00651"></a>00651 static_cast&lt;sf::Uint8&gt;(Data[3]));
-<a name="l00652"></a>00652
-<a name="l00653"></a>00653 <span class="comment">// Connect the data channel to the server</span>
-<a name="l00654"></a>00654 <span class="keywordflow">if</span> (myDataSocket.Connect(Port, Address) == Socket::Done)
-<a name="l00655"></a>00655 {
-<a name="l00656"></a>00656 <span class="comment">// Translate the transfer mode to the corresponding FTP parameter</span>
-<a name="l00657"></a>00657 std::string ModeStr;
-<a name="l00658"></a>00658 <span class="keywordflow">switch</span> (Mode)
-<a name="l00659"></a>00659 {
-<a name="l00660"></a>00660 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee" title="Binary mode (file is transfered as a sequence of bytes).">Ftp::Binary</a> : ModeStr = <span class="stringliteral">"I"</span>; <span class="keywordflow">break</span>;
-<a name="l00661"></a>00661 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2" title="Text mode using ASCII encoding.">Ftp::Ascii</a> : ModeStr = <span class="stringliteral">"A"</span>; <span class="keywordflow">break</span>;
-<a name="l00662"></a>00662 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4" title="Text mode using EBCDIC encoding.">Ftp::Ebcdic</a> : ModeStr = <span class="stringliteral">"E"</span>; <span class="keywordflow">break</span>;
-<a name="l00663"></a>00663 }
-<a name="l00664"></a>00664
-<a name="l00665"></a>00665 <span class="comment">// Set the transfer mode</span>
-<a name="l00666"></a>00666 Resp = myFtp.SendCommand(<span class="stringliteral">"TYPE"</span>, ModeStr);
-<a name="l00667"></a>00667 }
-<a name="l00668"></a>00668 <span class="keywordflow">else</span>
-<a name="l00669"></a>00669 {
-<a name="l00670"></a>00670 <span class="comment">// Failed to connect to the server</span>
-<a name="l00671"></a>00671 Resp = Ftp::Response(<a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c" title="Connection with server failed.">Ftp::Response::ConnectionFailed</a>);
-<a name="l00672"></a>00672 }
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674 }
-<a name="l00675"></a>00675
-<a name="l00676"></a>00676 <span class="keywordflow">return</span> Resp;
-<a name="l00677"></a>00677 }
-<a name="l00678"></a>00678
-<a name="l00679"></a>00679
-<a name="l00683"></a>00683 <span class="keywordtype">void</span> Ftp::DataChannel::Receive(std::vector&lt;char&gt;&amp; Data)
-<a name="l00684"></a>00684 {
-<a name="l00685"></a>00685 <span class="comment">// Receive data</span>
-<a name="l00686"></a>00686 Data.clear();
-<a name="l00687"></a>00687 <span class="keywordtype">char</span> Buffer[1024];
-<a name="l00688"></a>00688 std::size_t Received;
-<a name="l00689"></a>00689 <span class="keywordflow">while</span> (myDataSocket.Receive(Buffer, <span class="keyword">sizeof</span>(Buffer), Received) == sf::Socket::Done)
-<a name="l00690"></a>00690 {
-<a name="l00691"></a>00691 std::copy(Buffer, Buffer + Received, std::back_inserter(Data));
-<a name="l00692"></a>00692 }
-<a name="l00693"></a>00693
-<a name="l00694"></a>00694 <span class="comment">// Close the data socket</span>
-<a name="l00695"></a>00695 myDataSocket.Close();
-<a name="l00696"></a>00696 }
-<a name="l00697"></a>00697
-<a name="l00698"></a>00698
-<a name="l00702"></a>00702 <span class="keywordtype">void</span> Ftp::DataChannel::Send(<span class="keyword">const</span> std::vector&lt;char&gt;&amp; Data)
-<a name="l00703"></a>00703 {
-<a name="l00704"></a>00704 <span class="comment">// Send data</span>
-<a name="l00705"></a>00705 <span class="keywordflow">if</span> (!Data.empty())
-<a name="l00706"></a>00706 myDataSocket.Send(&amp;Data[0], Data.size());
-<a name="l00707"></a>00707
-<a name="l00708"></a>00708 <span class="comment">// Close the data socket</span>
-<a name="l00709"></a>00709 myDataSocket.Close();
-<a name="l00710"></a>00710 }
-<a name="l00711"></a>00711
-<a name="l00712"></a>00712 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Ftp_8hpp-source.htm b/doc/html/Ftp_8hpp-source.htm
deleted file mode 100755
index a049a64..0000000
--- a/doc/html/Ftp_8hpp-source.htm
+++ /dev/null
@@ -1,247 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Ftp.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_FTP_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_FTP_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Network/SocketTCP.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">class </span>IPAddress;
-<a name="l00040"></a>00040
-<a name="l00047"></a><a class="code" href="classsf_1_1Ftp.htm">00047</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Ftp.htm" title="This class provides methods for manipulating the FTP protocol (described in RFC 959)...">Ftp</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keyword">public</span> :
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">00054</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">TransferMode</a>
-<a name="l00055"></a>00055 {
-<a name="l00056"></a><a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee">00056</a> Binary,
-<a name="l00057"></a><a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2">00057</a> Ascii,
-<a name="l00058"></a><a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4">00058</a> Ebcdic
-<a name="l00059"></a>00059 };
-<a name="l00060"></a>00060
-<a name="l00066"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm">00066</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keyword">public</span> :
-<a name="l00069"></a>00069
-<a name="l00074"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">00074</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b" title="Enumerate all the valid status codes returned in a FTP response.">Status</a>
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="comment">// 1xx: the requested action is being initiated,</span>
-<a name="l00077"></a>00077 <span class="comment">// expect another reply before proceeding with a new command</span>
-<a name="l00078"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">00078</a> RestartMarkerReply = 110,
-<a name="l00079"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">00079</a> ServiceReadySoon = 120,
-<a name="l00080"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">00080</a> DataConnectionAlreadyOpened = 125,
-<a name="l00081"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">00081</a> OpeningDataConnection = 150,
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="comment">// 2xx: the requested action has been successfully completed</span>
-<a name="l00084"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">00084</a> Ok = 200,
-<a name="l00085"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">00085</a> PointlessCommand = 202,
-<a name="l00086"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">00086</a> SystemStatus = 211,
-<a name="l00087"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">00087</a> DirectoryStatus = 212,
-<a name="l00088"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">00088</a> FileStatus = 213,
-<a name="l00089"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">00089</a> HelpMessage = 214,
-<a name="l00090"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">00090</a> SystemType = 215,
-<a name="l00091"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">00091</a> ServiceReady = 220,
-<a name="l00092"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">00092</a> ClosingConnection = 221,
-<a name="l00093"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">00093</a> DataConnectionOpened = 225,
-<a name="l00094"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">00094</a> ClosingDataConnection = 226,
-<a name="l00095"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">00095</a> EnteringPassiveMode = 227,
-<a name="l00096"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">00096</a> LoggedIn = 230,
-<a name="l00097"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">00097</a> FileActionOk = 250,
-<a name="l00098"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">00098</a> DirectoryOk = 257,
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="comment">// 3xx: the command has been accepted, but the requested action</span>
-<a name="l00101"></a>00101 <span class="comment">// is dormant, pending receipt of further information</span>
-<a name="l00102"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">00102</a> NeedPassword = 331,
-<a name="l00103"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">00103</a> NeedAccountToLogIn = 332,
-<a name="l00104"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">00104</a> NeedInformation = 350,
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// 4xx: the command was not accepted and the requested action did not take place,</span>
-<a name="l00107"></a>00107 <span class="comment">// but the error condition is temporary and the action may be requested again</span>
-<a name="l00108"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">00108</a> ServiceUnavailable = 421,
-<a name="l00109"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">00109</a> DataConnectionUnavailable = 425,
-<a name="l00110"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">00110</a> TransferAborted = 426,
-<a name="l00111"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">00111</a> FileActionAborted = 450,
-<a name="l00112"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">00112</a> LocalError = 451,
-<a name="l00113"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">00113</a> InsufficientStorageSpace = 452,
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="comment">// 5xx: the command was not accepted and</span>
-<a name="l00116"></a>00116 <span class="comment">// the requested action did not take place</span>
-<a name="l00117"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">00117</a> CommandUnknown = 500,
-<a name="l00118"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">00118</a> ParametersUnknown = 501,
-<a name="l00119"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">00119</a> CommandNotImplemented = 502,
-<a name="l00120"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">00120</a> BadCommandSequence = 503,
-<a name="l00121"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">00121</a> ParameterNotImplemented = 504,
-<a name="l00122"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">00122</a> NotLoggedIn = 530,
-<a name="l00123"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">00123</a> NeedAccountToStore = 532,
-<a name="l00124"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">00124</a> FileUnavailable = 550,
-<a name="l00125"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">00125</a> PageTypeUnknown = 551,
-<a name="l00126"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">00126</a> NotEnoughMemory = 552,
-<a name="l00127"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">00127</a> FilenameNotAllowed = 553,
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// 10xx: SFML custom codes</span>
-<a name="l00130"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">00130</a> InvalidResponse = 1000,
-<a name="l00131"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">00131</a> ConnectionFailed = 1001,
-<a name="l00132"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">00132</a> ConnectionClosed = 1002,
-<a name="l00133"></a><a class="code" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">00133</a> InvalidFile = 1003
-<a name="l00134"></a>00134 };
-<a name="l00135"></a>00135
-<a name="l00143"></a>00143 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>(Status Code = InvalidResponse, <span class="keyword">const</span> std::string&amp; Message = <span class="stringliteral">""</span>);
-<a name="l00144"></a>00144
-<a name="l00152"></a>00152 <span class="keywordtype">bool</span> IsOk() <span class="keyword">const</span>;
-<a name="l00153"></a>00153
-<a name="l00160"></a>00160 Status GetStatus() <span class="keyword">const</span>;
-<a name="l00161"></a>00161
-<a name="l00168"></a>00168 <span class="keyword">const</span> std::string&amp; GetMessage() <span class="keyword">const</span>;
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keyword">private</span> :
-<a name="l00171"></a>00171
-<a name="l00173"></a>00173 <span class="comment">// Member data</span>
-<a name="l00175"></a>00175 <span class="comment"></span> Status myStatus;
-<a name="l00176"></a>00176 std::string myMessage;
-<a name="l00177"></a>00177 };
-<a name="l00178"></a>00178
-<a name="l00182"></a><a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">00182</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">DirectoryResponse</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keyword">public</span> :
-<a name="l00185"></a>00185
-<a name="l00192"></a>00192 <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">DirectoryResponse</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp);
-<a name="l00193"></a>00193
-<a name="l00200"></a>00200 <span class="keyword">const</span> std::string&amp; GetDirectory() <span class="keyword">const</span>;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keyword">private</span> :
-<a name="l00203"></a>00203
-<a name="l00205"></a>00205 <span class="comment">// Member data</span>
-<a name="l00207"></a>00207 <span class="comment"></span> std::string myDirectory;
-<a name="l00208"></a>00208 };
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210
-<a name="l00214"></a><a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm">00214</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm" title="Specialization of FTP response returning a filename lisiting.">ListingResponse</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a>
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="keyword">public</span> :
-<a name="l00217"></a>00217
-<a name="l00225"></a>00225 <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm" title="Specialization of FTP response returning a filename lisiting.">ListingResponse</a>(<a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Resp, <span class="keyword">const</span> std::vector&lt;char&gt;&amp; Data);
-<a name="l00226"></a>00226
-<a name="l00233"></a>00233 std::size_t GetCount() <span class="keyword">const</span>;
-<a name="l00234"></a>00234
-<a name="l00243"></a>00243 <span class="keyword">const</span> std::string&amp; GetFilename(std::size_t Index) <span class="keyword">const</span>;
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keyword">private</span> :
-<a name="l00246"></a>00246
-<a name="l00248"></a>00248 <span class="comment">// Member data</span>
-<a name="l00250"></a>00250 <span class="comment"></span> std::vector&lt;std::string&gt; myFilenames;
-<a name="l00251"></a>00251 };
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253
-<a name="l00258"></a>00258 ~<a class="code" href="classsf_1_1Ftp.htm" title="This class provides methods for manipulating the FTP protocol (described in RFC 959)...">Ftp</a>();
-<a name="l00259"></a>00259
-<a name="l00270"></a>00270 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Connect(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Server, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port = 21, <span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00271"></a>00271
-<a name="l00278"></a>00278 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Login();
-<a name="l00279"></a>00279
-<a name="l00289"></a>00289 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Login(<span class="keyword">const</span> std::string&amp; UserName, <span class="keyword">const</span> std::string&amp; Password);
-<a name="l00290"></a>00290
-<a name="l00297"></a>00297 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Disconnect();
-<a name="l00298"></a>00298
-<a name="l00305"></a>00305 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> KeepAlive();
-<a name="l00306"></a>00306
-<a name="l00313"></a>00313 <a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">DirectoryResponse</a> GetWorkingDirectory();
-<a name="l00314"></a>00314
-<a name="l00324"></a>00324 <a class="code" href="classsf_1_1Ftp_1_1ListingResponse.htm" title="Specialization of FTP response returning a filename lisiting.">ListingResponse</a> GetDirectoryListing(<span class="keyword">const</span> std::string&amp; Directory = <span class="stringliteral">""</span>);
-<a name="l00325"></a>00325
-<a name="l00334"></a>00334 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> ChangeDirectory(<span class="keyword">const</span> std::string&amp; Directory);
-<a name="l00335"></a>00335
-<a name="l00342"></a>00342 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> ParentDirectory();
-<a name="l00343"></a>00343
-<a name="l00352"></a>00352 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> MakeDirectory(<span class="keyword">const</span> std::string&amp; Name);
-<a name="l00353"></a>00353
-<a name="l00362"></a>00362 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> DeleteDirectory(<span class="keyword">const</span> std::string&amp; Name);
-<a name="l00363"></a>00363
-<a name="l00373"></a>00373 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> RenameFile(<span class="keyword">const</span> std::string&amp; File, <span class="keyword">const</span> std::string&amp; NewName);
-<a name="l00374"></a>00374
-<a name="l00383"></a>00383 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> DeleteFile(<span class="keyword">const</span> std::string&amp; Name);
-<a name="l00384"></a>00384
-<a name="l00395"></a>00395 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Download(<span class="keyword">const</span> std::string&amp; DistantFile, <span class="keyword">const</span> std::string&amp; DestPath, <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">TransferMode</a> Mode = Binary);
-<a name="l00396"></a>00396
-<a name="l00407"></a>00407 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> Upload(<span class="keyword">const</span> std::string&amp; LocalFile, <span class="keyword">const</span> std::string&amp; DestPath, <a class="code" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb" title="Enumeration of transfer modes.">TransferMode</a> Mode = Binary);
-<a name="l00408"></a>00408
-<a name="l00409"></a>00409 <span class="keyword">private</span> :
-<a name="l00410"></a>00410
-<a name="l00420"></a>00420 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> SendCommand(<span class="keyword">const</span> std::string&amp; Command, <span class="keyword">const</span> std::string&amp; Parameter = <span class="stringliteral">""</span>);
-<a name="l00421"></a>00421
-<a name="l00429"></a>00429 <a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> GetResponse();
-<a name="l00430"></a>00430
-<a name="l00435"></a>00435 <span class="keyword">class </span>DataChannel;
-<a name="l00436"></a>00436
-<a name="l00437"></a>00437 <span class="keyword">friend</span> <span class="keyword">class </span>DataChannel;
-<a name="l00438"></a>00438
-<a name="l00440"></a>00440 <span class="comment">// Member data</span>
-<a name="l00442"></a>00442 <span class="comment"></span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a> myCommandSocket;
-<a name="l00443"></a>00443 };
-<a name="l00444"></a>00444
-<a name="l00445"></a>00445 } <span class="comment">// namespace sf</span>
-<a name="l00446"></a>00446
-<a name="l00447"></a>00447
-<a name="l00448"></a>00448 <span class="preprocessor">#endif // SFML_FTP_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Glyph_8hpp-source.htm b/doc/html/Glyph_8hpp-source.htm
deleted file mode 100755
index 43d062b..0000000
--- a/doc/html/Glyph_8hpp-source.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Glyph.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_GLYPH_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_GLYPH_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00040"></a><a class="code" href="classsf_1_1Glyph.htm">00040</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00048"></a><a class="code" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b">00048</a> <a class="code" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b" title="Default constructor.">Glyph</a>() : Advance(0) {}
-<a name="l00049"></a>00049
-<a name="l00051"></a>00051 <span class="comment">// Member data</span>
-<a name="l00053"></a><a class="code" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">00053</a> <span class="comment"></span> <span class="keywordtype">int</span> Advance;
-<a name="l00054"></a><a class="code" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">00054</a> <a class="code" href="classsf_1_1Rect.htm">IntRect</a> Rectangle;
-<a name="l00055"></a><a class="code" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">00055</a> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> TexCoords;
-<a name="l00056"></a>00056 };
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 } <span class="comment">// namespace sf</span>
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="preprocessor">#endif // SFML_GLYPH_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/GraphicsContext_8cpp-source.htm b/doc/html/GraphicsContext_8cpp-source.htm
deleted file mode 100755
index 156fbd2..0000000
--- a/doc/html/GraphicsContext_8cpp-source.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>GraphicsContext.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/Context.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace</span>
-<a name="l00033"></a>00033 {
-<a name="l00035"></a>00035 <span class="comment">// One time initialization of 3rd party libraries.</span>
-<a name="l00036"></a>00036 <span class="comment">// We use a global function with a static boolean rather</span>
-<a name="l00037"></a>00037 <span class="comment">// than directly a global boolean, to avoid the randomness</span>
-<a name="l00038"></a>00038 <span class="comment">// of global variables initializations across compile units.</span>
-<a name="l00040"></a>00040 <span class="comment"></span> <span class="keywordtype">void</span> InitGraphicsLibs()
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keywordtype">bool</span> InitDone = <span class="keyword">false</span>;
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!InitDone)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="comment">// Initialize GLEW</span>
-<a name="l00046"></a>00046 glewInit();
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 InitDone = <span class="keyword">true</span>;
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keyword">namespace </span>sf
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keyword">namespace </span>priv
-<a name="l00058"></a>00058 {
-<a name="l00063"></a>00063 GraphicsContext::GraphicsContext()
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="comment">// Activate the global context</span>
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27" title="Check if there&amp;#39;s a context bound to the current thread.">Context::IsContextActive</a>())
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">Context::GetGlobal</a>().SetActive(<span class="keyword">true</span>);
-<a name="l00069"></a>00069 myActivated = <span class="keyword">true</span>;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 <span class="keywordflow">else</span>
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 myActivated = <span class="keyword">false</span>;
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="comment">// Make sure third party libraries are initialized</span>
-<a name="l00077"></a>00077 InitGraphicsLibs();
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00085"></a>00085 GraphicsContext::~GraphicsContext()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="comment">// Deactivate the global context</span>
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (myActivated)
-<a name="l00089"></a>00089 <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">Context::GetGlobal</a>().SetActive(<span class="keyword">false</span>);
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 } <span class="comment">// namespace priv</span>
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/GraphicsContext_8hpp-source.htm b/doc/html/GraphicsContext_8hpp-source.htm
deleted file mode 100755
index 66ca911..0000000
--- a/doc/html/GraphicsContext_8hpp-source.htm
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>GraphicsContext.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_GRAPHICSCONTEXT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_GRAPHICSCONTEXT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/GLEW/glew.h&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Context;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">namespace </span>priv
-<a name="l00043"></a>00043 {
-<a name="l00052"></a>00052 <span class="keyword">class </span>GraphicsContext : NonCopyable
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="keyword">public</span> :
-<a name="l00055"></a>00055
-<a name="l00061"></a>00061 GraphicsContext();
-<a name="l00062"></a>00062
-<a name="l00068"></a>00068 ~GraphicsContext();
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">private</span> :
-<a name="l00071"></a>00071
-<a name="l00073"></a>00073 <span class="comment">// Member data</span>
-<a name="l00075"></a>00075 <span class="comment"></span> <span class="keywordtype">bool</span> myActivated;
-<a name="l00076"></a>00076 };
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 } <span class="comment">// namespace priv</span>
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00085"></a>00085 <span class="preprocessor">#ifdef SFML_DEBUG</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span>
-<a name="l00087"></a>00087 <span class="comment">// In debug mode, perform a test on every OpenGL call</span>
-<a name="l00088"></a>00088 <span class="preprocessor"> #define GLCheck(Func) ((Func), GLCheckError(__FILE__, __LINE__))</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span>
-<a name="l00090"></a>00090 <span class="preprocessor">#else</span>
-<a name="l00091"></a>00091 <span class="preprocessor"></span>
-<a name="l00092"></a>00092 <span class="comment">// Else, we don't add any overhead</span>
-<a name="l00093"></a>00093 <span class="preprocessor"> #define GLCheck(Func) (Func)</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>
-<a name="l00095"></a>00095 <span class="preprocessor">#endif</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span>
-<a name="l00097"></a>00097
-<a name="l00102"></a>00102 <span class="keyword">inline</span> <span class="keywordtype">void</span> GLCheckError(<span class="keyword">const</span> std::string&amp; File, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Line)
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <span class="comment">// Get the last error</span>
-<a name="l00105"></a>00105 GLenum ErrorCode = glGetError();
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (ErrorCode != GL_NO_ERROR)
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 std::string Error = <span class="stringliteral">"unknown error"</span>;
-<a name="l00110"></a>00110 std::string Desc = <span class="stringliteral">"no description"</span>;
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="comment">// Decode the error code</span>
-<a name="l00113"></a>00113 <span class="keywordflow">switch</span> (ErrorCode)
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="keywordflow">case</span> GL_INVALID_ENUM :
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 Error = <span class="stringliteral">"GL_INVALID_ENUM"</span>;
-<a name="l00118"></a>00118 Desc = <span class="stringliteral">"an unacceptable value has been specified for an enumerated argument"</span>;
-<a name="l00119"></a>00119 <span class="keywordflow">break</span>;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordflow">case</span> GL_INVALID_VALUE :
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 Error = <span class="stringliteral">"GL_INVALID_VALUE"</span>;
-<a name="l00125"></a>00125 Desc = <span class="stringliteral">"a numeric argument is out of range"</span>;
-<a name="l00126"></a>00126 <span class="keywordflow">break</span>;
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="keywordflow">case</span> GL_INVALID_OPERATION :
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 Error = <span class="stringliteral">"GL_INVALID_OPERATION"</span>;
-<a name="l00132"></a>00132 Desc = <span class="stringliteral">"the specified operation is not allowed in the current state"</span>;
-<a name="l00133"></a>00133 <span class="keywordflow">break</span>;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordflow">case</span> GL_STACK_OVERFLOW :
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 Error = <span class="stringliteral">"GL_STACK_OVERFLOW"</span>;
-<a name="l00139"></a>00139 Desc = <span class="stringliteral">"this command would cause a stack overflow"</span>;
-<a name="l00140"></a>00140 <span class="keywordflow">break</span>;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keywordflow">case</span> GL_STACK_UNDERFLOW :
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 Error = <span class="stringliteral">"GL_STACK_UNDERFLOW"</span>;
-<a name="l00146"></a>00146 Desc = <span class="stringliteral">"this command would cause a stack underflow"</span>;
-<a name="l00147"></a>00147 <span class="keywordflow">break</span>;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <span class="keywordflow">case</span> GL_OUT_OF_MEMORY :
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 Error = <span class="stringliteral">"GL_OUT_OF_MEMORY"</span>;
-<a name="l00153"></a>00153 Desc = <span class="stringliteral">"there is not enough memory left to execute the command"</span>;
-<a name="l00154"></a>00154 <span class="keywordflow">break</span>;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">case</span> GL_INVALID_FRAMEBUFFER_OPERATION_EXT :
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 Error = <span class="stringliteral">"GL_INVALID_FRAMEBUFFER_OPERATION_EXT"</span>;
-<a name="l00160"></a>00160 Desc = <span class="stringliteral">"the object bound to FRAMEBUFFER_BINDING_EXT is not \"framebuffer complete\""</span>;
-<a name="l00161"></a>00161 <span class="keywordflow">break</span>;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="comment">// Log the error</span>
-<a name="l00166"></a>00166 std::cerr &lt;&lt; <span class="stringliteral">"An internal OpenGL call failed in "</span>
-<a name="l00167"></a>00167 &lt;&lt; File.substr(File.find_last_of(<span class="stringliteral">"\\/"</span>) + 1) &lt;&lt; <span class="stringliteral">" ("</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">") : "</span>
-<a name="l00168"></a>00168 &lt;&lt; Error &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; Desc
-<a name="l00169"></a>00169 &lt;&lt; std::endl;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 } <span class="comment">// namespace sf</span>
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="preprocessor">#endif // SFML_GRAPHICSCONTEXT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Graphics_8hpp-source.htm b/doc/html/Graphics_8hpp-source.htm
deleted file mode 100755
index c223c86..0000000
--- a/doc/html/Graphics_8hpp-source.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Graphics.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_GRAPHICS_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_GRAPHICS_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Graphics/Font.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Graphics/Glyph.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/Graphics/PostFX.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/Graphics/RenderWindow.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/Graphics/Shape.hpp&gt;</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;SFML/Graphics/Sprite.hpp&gt;</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;SFML/Graphics/String.hpp&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;SFML/Graphics/View.hpp&gt;</span>
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#endif // SFML_GRAPHICS_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Http_8cpp-source.htm b/doc/html/Http_8cpp-source.htm
deleted file mode 100755
index dd4b1d3..0000000
--- a/doc/html/Http_8cpp-source.htm
+++ /dev/null
@@ -1,392 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Http.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/Http.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;iterator&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;sstream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace</span>
-<a name="l00036"></a>00036 {
-<a name="l00038"></a>00038 <span class="comment">// Convenience function to convert a string to lower case</span>
-<a name="l00040"></a>00040 <span class="comment"></span> std::string ToLower(<span class="keyword">const</span> std::string&amp; Str)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 std::string Ret = Str;
-<a name="l00043"></a>00043 <span class="keywordflow">for</span> (std::string::iterator i = Ret.begin(); i != Ret.end(); ++i)
-<a name="l00044"></a>00044 *i = static_cast&lt;char&gt;(tolower(*i));
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keywordflow">return</span> Ret;
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keyword">namespace </span>sf
-<a name="l00052"></a>00052 {
-<a name="l00056"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72">00056</a> <a class="code" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72" title="Default constructor.">Http::Request::Request</a>(<a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598" title="Enumerate the available HTTP methods for a request.">Method</a> RequestMethod, <span class="keyword">const</span> std::string&amp; URI, <span class="keyword">const</span> std::string&amp; Body)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <a class="code" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53" title="Set the request method.">SetMethod</a>(RequestMethod);
-<a name="l00059"></a>00059 <a class="code" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac" title="Set the target URI of the request.">SetURI</a>(URI);
-<a name="l00060"></a>00060 <a class="code" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd" title="Set the HTTP version of the request.">SetHttpVersion</a>(1, 0);
-<a name="l00061"></a>00061 <a class="code" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46" title="Set the body of the request.">SetBody</a>(Body);
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064
-<a name="l00068"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e">00068</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">Http::Request::SetField</a>(<span class="keyword">const</span> std::string&amp; Field, <span class="keyword">const</span> std::string&amp; Value)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 myFields[ToLower(Field)] = Value;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00078"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53">00078</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53" title="Set the request method.">Http::Request::SetMethod</a>(<a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598" title="Enumerate the available HTTP methods for a request.">Http::Request::Method</a> RequestMethod)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 myMethod = RequestMethod;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083
-<a name="l00088"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac">00088</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac" title="Set the target URI of the request.">Http::Request::SetURI</a>(<span class="keyword">const</span> std::string&amp; URI)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 myURI = URI;
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="comment">// Make sure it starts with a '/'</span>
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (myURI.empty() || (myURI[0] != <span class="charliteral">'/'</span>))
-<a name="l00094"></a>00094 myURI.insert(0, <span class="stringliteral">"/"</span>);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00102"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd">00102</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd" title="Set the HTTP version of the request.">Http::Request::SetHttpVersion</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Major, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Minor)
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 myMajorVersion = Major;
-<a name="l00105"></a>00105 myMinorVersion = Minor;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00114"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46">00114</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46" title="Set the body of the request.">Http::Request::SetBody</a>(<span class="keyword">const</span> std::string&amp; Body)
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 myBody = Body;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119
-<a name="l00123"></a>00123 std::string Http::Request::ToString()<span class="keyword"> const</span>
-<a name="l00124"></a>00124 <span class="keyword"></span>{
-<a name="l00125"></a>00125 std::ostringstream Out;
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="comment">// Convert the method to its string representation</span>
-<a name="l00128"></a>00128 std::string RequestMethod;
-<a name="l00129"></a>00129 <span class="keywordflow">switch</span> (myMethod)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">default</span> :
-<a name="l00132"></a>00132 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00" title="Request in get mode, standard method to retrieve a page.">Get</a> : RequestMethod = <span class="stringliteral">"GET"</span>; <span class="keywordflow">break</span>;
-<a name="l00133"></a>00133 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138" title="Request in post mode, usually to send data to a page.">Post</a> : RequestMethod = <span class="stringliteral">"POST"</span>; <span class="keywordflow">break</span>;
-<a name="l00134"></a>00134 <span class="keywordflow">case</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5" title="Request a page&amp;#39;s header only.">Head</a> : RequestMethod = <span class="stringliteral">"HEAD"</span>; <span class="keywordflow">break</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="comment">// Write the first line containing the request type</span>
-<a name="l00138"></a>00138 Out &lt;&lt; RequestMethod &lt;&lt; <span class="stringliteral">" "</span> &lt;&lt; myURI &lt;&lt; <span class="stringliteral">" "</span>;
-<a name="l00139"></a>00139 Out &lt;&lt; <span class="stringliteral">"HTTP/"</span> &lt;&lt; myMajorVersion &lt;&lt; <span class="stringliteral">"."</span> &lt;&lt; myMinorVersion &lt;&lt; <span class="stringliteral">"\r\n"</span>;
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="comment">// Write fields</span>
-<a name="l00142"></a>00142 <span class="keywordflow">for</span> (FieldTable::const_iterator i = myFields.begin(); i != myFields.end(); ++i)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 Out &lt;&lt; i-&gt;first &lt;&lt; <span class="stringliteral">": "</span> &lt;&lt; i-&gt;second &lt;&lt; <span class="stringliteral">"\r\n"</span>;
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="comment">// Use an extra \r\n to separate the header from the body</span>
-<a name="l00148"></a>00148 Out &lt;&lt; <span class="stringliteral">"\r\n"</span>;
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <span class="comment">// Add the body</span>
-<a name="l00151"></a>00151 Out &lt;&lt; myBody;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> Out.str();
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156
-<a name="l00160"></a>00160 <span class="keywordtype">bool</span> Http::Request::HasField(<span class="keyword">const</span> std::string&amp; Field)<span class="keyword"> const</span>
-<a name="l00161"></a>00161 <span class="keyword"></span>{
-<a name="l00162"></a>00162 <span class="keywordflow">return</span> myFields.find(Field) != myFields.end();
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165
-<a name="l00169"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2">00169</a> <a class="code" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2" title="Default constructor.">Http::Response::Response</a>() :
-<a name="l00170"></a>00170 myStatus (ConnectionFailed),
-<a name="l00171"></a>00171 myMajorVersion(0),
-<a name="l00172"></a>00172 myMinorVersion(0)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177
-<a name="l00181"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330">00181</a> <span class="keyword">const</span> std::string&amp; <a class="code" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330" title="Get the value of a field.">Http::Response::GetField</a>(<span class="keyword">const</span> std::string&amp; Field)<span class="keyword"> const</span>
-<a name="l00182"></a>00182 <span class="keyword"></span>{
-<a name="l00183"></a>00183 FieldTable::const_iterator It = myFields.find(ToLower(Field));
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (It != myFields.end())
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> It-&gt;second;
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">else</span>
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keyword">static</span> <span class="keyword">const</span> std::string Empty = <span class="stringliteral">""</span>;
-<a name="l00191"></a>00191 <span class="keywordflow">return</span> Empty;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195
-<a name="l00199"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb">00199</a> <a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8" title="Enumerate all the valid status codes returned in a HTTP response.">Http::Response::Status</a> <a class="code" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb" title="Get the header&amp;#39;s status code.">Http::Response::GetStatus</a>()<span class="keyword"> const</span>
-<a name="l00200"></a>00200 <span class="keyword"></span>{
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> myStatus;
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204
-<a name="l00208"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a">00208</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a" title="Get the major HTTP version number of the response.">Http::Response::GetMajorHttpVersion</a>()<span class="keyword"> const</span>
-<a name="l00209"></a>00209 <span class="keyword"></span>{
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> myMajorVersion;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213
-<a name="l00217"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b">00217</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b" title="Get the major HTTP version number of the response.">Http::Response::GetMinorHttpVersion</a>()<span class="keyword"> const</span>
-<a name="l00218"></a>00218 <span class="keyword"></span>{
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> myMinorVersion;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222
-<a name="l00230"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179">00230</a> <span class="keyword">const</span> std::string&amp; <a class="code" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179" title="Get the body of the response.">Http::Response::GetBody</a>()<span class="keyword"> const</span>
-<a name="l00231"></a>00231 <span class="keyword"></span>{
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> myBody;
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235
-<a name="l00239"></a>00239 <span class="keywordtype">void</span> Http::Response::FromString(<span class="keyword">const</span> std::string&amp; Data)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 std::istringstream In(Data);
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 <span class="comment">// Extract the HTTP version from the first line</span>
-<a name="l00244"></a>00244 std::string Version;
-<a name="l00245"></a>00245 <span class="keywordflow">if</span> (In &gt;&gt; Version)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="keywordflow">if</span> ((Version.size() &gt;= 8) &amp;&amp; (Version[6] == <span class="charliteral">'.'</span>) &amp;&amp;
-<a name="l00248"></a>00248 (ToLower(Version.substr(0, 5)) == <span class="stringliteral">"http/"</span>) &amp;&amp;
-<a name="l00249"></a>00249 isdigit(Version[5]) &amp;&amp; isdigit(Version[7]))
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 myMajorVersion = Version[5] - <span class="charliteral">'0'</span>;
-<a name="l00252"></a>00252 myMinorVersion = Version[7] - <span class="charliteral">'0'</span>;
-<a name="l00253"></a>00253 }
-<a name="l00254"></a>00254 <span class="keywordflow">else</span>
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="comment">// Invalid HTTP version</span>
-<a name="l00257"></a>00257 myStatus = <a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8" title="Response is not a valid HTTP one.">InvalidResponse</a>;
-<a name="l00258"></a>00258 <span class="keywordflow">return</span>;
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260 }
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 <span class="comment">// Extract the status code from the first line</span>
-<a name="l00263"></a>00263 <span class="keywordtype">int</span> StatusCode;
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (In &gt;&gt; StatusCode)
-<a name="l00265"></a>00265 {
-<a name="l00266"></a>00266 myStatus = <span class="keyword">static_cast&lt;</span><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8" title="Enumerate all the valid status codes returned in a HTTP response.">Status</a><span class="keyword">&gt;</span>(StatusCode);
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268 <span class="keywordflow">else</span>
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 <span class="comment">// Invalid status code</span>
-<a name="l00271"></a>00271 myStatus = <a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8" title="Response is not a valid HTTP one.">InvalidResponse</a>;
-<a name="l00272"></a>00272 <span class="keywordflow">return</span>;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="comment">// Ignore the end of the first line</span>
-<a name="l00276"></a>00276 In.ignore(10000, <span class="charliteral">'\n'</span>);
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 <span class="comment">// Parse the other lines, which contain fields, one by one</span>
-<a name="l00279"></a>00279 std::string Line;
-<a name="l00280"></a>00280 <span class="keywordflow">while</span> (std::getline(In, Line) &amp;&amp; (Line.size() &gt; 2))
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 std::string::size_type Pos = Line.find(<span class="stringliteral">": "</span>);
-<a name="l00283"></a>00283 <span class="keywordflow">if</span> (Pos != std::string::npos)
-<a name="l00284"></a>00284 {
-<a name="l00285"></a>00285 <span class="comment">// Extract the field name and its value</span>
-<a name="l00286"></a>00286 std::string Field = Line.substr(0, Pos);
-<a name="l00287"></a>00287 std::string Value = Line.substr(Pos + 2);
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289 <span class="comment">// Remove any trailing \r</span>
-<a name="l00290"></a>00290 <span class="keywordflow">if</span> (!Value.empty() &amp;&amp; (*Value.rbegin() == <span class="charliteral">'\r'</span>))
-<a name="l00291"></a>00291 Value.erase(Value.size() - 1);
-<a name="l00292"></a>00292
-<a name="l00293"></a>00293 <span class="comment">// Add the field</span>
-<a name="l00294"></a>00294 myFields[ToLower(Field)] = Value;
-<a name="l00295"></a>00295 }
-<a name="l00296"></a>00296 }
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 <span class="comment">// Finally extract the body</span>
-<a name="l00299"></a>00299 myBody.clear();
-<a name="l00300"></a>00300 std::copy(std::istreambuf_iterator&lt;char&gt;(In), std::istreambuf_iterator&lt;char&gt;(), std::back_inserter(myBody));
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303
-<a name="l00307"></a><a class="code" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067">00307</a> <a class="code" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067" title="Default constructor.">Http::Http</a>() :
-<a name="l00308"></a>00308 myHost(),
-<a name="l00309"></a>00309 myPort(0)
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 }
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314
-<a name="l00318"></a><a class="code" href="classsf_1_1Http.htm#283ce40b04ef678916834b8032796677">00318</a> <a class="code" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067" title="Default constructor.">Http::Http</a>(<span class="keyword">const</span> std::string&amp; Host, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <a class="code" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f" title="Set the target host.">SetHost</a>(Host, Port);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323
-<a name="l00327"></a><a class="code" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f">00327</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f" title="Set the target host.">Http::SetHost</a>(<span class="keyword">const</span> std::string&amp; Host, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00328"></a>00328 {
-<a name="l00329"></a>00329 <span class="comment">// Detect the protocol used</span>
-<a name="l00330"></a>00330 std::string Protocol = ToLower(Host.substr(0, 8));
-<a name="l00331"></a>00331 <span class="keywordflow">if</span> (Protocol.substr(0, 7) == <span class="stringliteral">"http://"</span>)
-<a name="l00332"></a>00332 {
-<a name="l00333"></a>00333 <span class="comment">// HTTP protocol</span>
-<a name="l00334"></a>00334 myHostName = Host.substr(7);
-<a name="l00335"></a>00335 myPort = (Port != 0 ? Port : 80);
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Protocol == <span class="stringliteral">"https://"</span>)
-<a name="l00338"></a>00338 {
-<a name="l00339"></a>00339 <span class="comment">// HTTPS protocol</span>
-<a name="l00340"></a>00340 myHostName = Host.substr(8);
-<a name="l00341"></a>00341 myPort = (Port != 0 ? Port : 443);
-<a name="l00342"></a>00342 }
-<a name="l00343"></a>00343 <span class="keywordflow">else</span>
-<a name="l00344"></a>00344 {
-<a name="l00345"></a>00345 <span class="comment">// Undefined protocol - use HTTP</span>
-<a name="l00346"></a>00346 myHostName = Host;
-<a name="l00347"></a>00347 myPort = (Port != 0 ? Port : 80);
-<a name="l00348"></a>00348 }
-<a name="l00349"></a>00349
-<a name="l00350"></a>00350 <span class="comment">// Remove any trailing '/' from the host name</span>
-<a name="l00351"></a>00351 <span class="keywordflow">if</span> (!myHostName.empty() &amp;&amp; (*myHostName.rbegin() == <span class="charliteral">'/'</span>))
-<a name="l00352"></a>00352 myHostName.erase(myHostName.size() - 1);
-<a name="l00353"></a>00353
-<a name="l00354"></a>00354 myHost = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">sf::IPAddress</a>(myHostName);
-<a name="l00355"></a>00355 }
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357
-<a name="l00366"></a><a class="code" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61">00366</a> <a class="code" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Http::Response</a> <a class="code" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61" title="Send a HTTP request and return the server&amp;#39;s response.">Http::SendRequest</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Http::Request</a>&amp; Req, <span class="keywordtype">float</span> Timeout)
-<a name="l00367"></a>00367 {
-<a name="l00368"></a>00368 <span class="comment">// First make sure the request is valid -- add missing mandatory fields</span>
-<a name="l00369"></a>00369 <a class="code" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a> ToSend(Req);
-<a name="l00370"></a>00370 <span class="keywordflow">if</span> (!ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"From"</span>))
-<a name="l00371"></a>00371 {
-<a name="l00372"></a>00372 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"From"</span>, <span class="stringliteral">"user@sfml-dev.org"</span>);
-<a name="l00373"></a>00373 }
-<a name="l00374"></a>00374 <span class="keywordflow">if</span> (!ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"User-Agent"</span>))
-<a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"User-Agent"</span>, <span class="stringliteral">"libsfml-network/1.x"</span>);
-<a name="l00377"></a>00377 }
-<a name="l00378"></a>00378 <span class="keywordflow">if</span> (!ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"Host"</span>))
-<a name="l00379"></a>00379 {
-<a name="l00380"></a>00380 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"Host"</span>, myHostName);
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382 <span class="keywordflow">if</span> (!ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"Content-Length"</span>))
-<a name="l00383"></a>00383 {
-<a name="l00384"></a>00384 std::ostringstream Out;
-<a name="l00385"></a>00385 Out &lt;&lt; ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#d05e3c9b4ec87de6dfbfb5b57f2af15f" title="Body of the request.">myBody</a>.size();
-<a name="l00386"></a>00386 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"Content-Length"</span>, Out.str());
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388 <span class="keywordflow">if</span> ((ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#12ed125a83b352316266471e9e64e77c" title="Method to use for the request.">myMethod</a> == <a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138" title="Request in post mode, usually to send data to a page.">Request::Post</a>) &amp;&amp; !ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"Content-Type"</span>))
-<a name="l00389"></a>00389 {
-<a name="l00390"></a>00390 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"Content-Type"</span>, <span class="stringliteral">"application/x-www-form-urlencoded"</span>);
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392 <span class="keywordflow">if</span> ((ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#6e4db25ee0455e2eb87f5d5c62c830f5" title="Major HTTP version.">myMajorVersion</a> * 10 + ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#d9201bb503871d3989975cbdd5ab494a" title="Minor HTTP version.">myMinorVersion</a> &gt;= 11) &amp;&amp; !ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#e36519e1f04dd593eed75e374f7cfb3f" title="Check if the given field has been defined.">HasField</a>(<span class="stringliteral">"Connection"</span>))
-<a name="l00393"></a>00393 {
-<a name="l00394"></a>00394 ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e" title="Set the value of a field; the field is added if it doesn&amp;#39;t exist.">SetField</a>(<span class="stringliteral">"Connection"</span>, <span class="stringliteral">"close"</span>);
-<a name="l00395"></a>00395 }
-<a name="l00396"></a>00396
-<a name="l00397"></a>00397 <span class="comment">// Prepare the response</span>
-<a name="l00398"></a>00398 <a class="code" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Response</a> Received;
-<a name="l00399"></a>00399
-<a name="l00400"></a>00400 <span class="comment">// Connect the socket to the host</span>
-<a name="l00401"></a>00401 <span class="keywordflow">if</span> (myConnection.<a class="code" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f" title="Connect to another computer on a specified port.">Connect</a>(myPort, myHost, Timeout) == Socket::Done)
-<a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <span class="comment">// Convert the request to string and send it through the connected socket</span>
-<a name="l00404"></a>00404 std::string RequestStr = ToSend.<a class="code" href="classsf_1_1Http_1_1Request.htm#eb12e7a769fbcf1d9848bc008c28fa1f" title="Get the string representation of the request header.">ToString</a>();
-<a name="l00405"></a>00405
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (!RequestStr.empty())
-<a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="comment">// Send it through the socket</span>
-<a name="l00409"></a>00409 <span class="keywordflow">if</span> (myConnection.<a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">Send</a>(RequestStr.c_str(), RequestStr.size()) == sf::Socket::Done)
-<a name="l00410"></a>00410 {
-<a name="l00411"></a>00411 <span class="comment">// Wait for the server's response</span>
-<a name="l00412"></a>00412 std::string ReceivedStr;
-<a name="l00413"></a>00413 std::size_t Size = 0;
-<a name="l00414"></a>00414 <span class="keywordtype">char</span> Buffer[1024];
-<a name="l00415"></a>00415 <span class="keywordflow">while</span> (myConnection.<a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0" title="Receive an array of bytes from the host (must be connected first).">Receive</a>(Buffer, <span class="keyword">sizeof</span>(Buffer), Size) == sf::Socket::Done)
-<a name="l00416"></a>00416 {
-<a name="l00417"></a>00417 ReceivedStr.append(Buffer, Buffer + Size);
-<a name="l00418"></a>00418 }
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 <span class="comment">// Build the Response object from the received data</span>
-<a name="l00421"></a>00421 Received.<a class="code" href="classsf_1_1Http_1_1Response.htm#a51fa3ff7680d14eb8cb072ef6d65d1e" title="Construct the header from a response string.">FromString</a>(ReceivedStr);
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423 }
-<a name="l00424"></a>00424
-<a name="l00425"></a>00425 <span class="comment">// Close the connection</span>
-<a name="l00426"></a>00426 myConnection.<a class="code" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044" title="Close the socket.">Close</a>();
-<a name="l00427"></a>00427 }
-<a name="l00428"></a>00428
-<a name="l00429"></a>00429 <span class="keywordflow">return</span> Received;
-<a name="l00430"></a>00430 }
-<a name="l00431"></a>00431
-<a name="l00432"></a>00432 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Http_8hpp-source.htm b/doc/html/Http_8hpp-source.htm
deleted file mode 100755
index b22c4ae..0000000
--- a/doc/html/Http_8hpp-source.htm
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Http.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_HTTP_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_HTTP_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Network/SocketTCP.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00045"></a><a class="code" href="classsf_1_1Http.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00054"></a><a class="code" href="classsf_1_1Http_1_1Request.htm">00054</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a>
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keyword">public</span> :
-<a name="l00057"></a>00057
-<a name="l00061"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">00061</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598" title="Enumerate the available HTTP methods for a request.">Method</a>
-<a name="l00062"></a>00062 {
-<a name="l00063"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00">00063</a> Get,
-<a name="l00064"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138">00064</a> Post,
-<a name="l00065"></a><a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5">00065</a> Head
-<a name="l00066"></a>00066 };
-<a name="l00067"></a>00067
-<a name="l00076"></a>00076 <a class="code" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a>(Method RequestMethod = Get, <span class="keyword">const</span> std::string&amp; URI = <span class="stringliteral">"/"</span>, <span class="keyword">const</span> std::string&amp; Body = <span class="stringliteral">""</span>);
-<a name="l00077"></a>00077
-<a name="l00085"></a>00085 <span class="keywordtype">void</span> SetField(<span class="keyword">const</span> std::string&amp; Field, <span class="keyword">const</span> std::string&amp; Value);
-<a name="l00086"></a>00086
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> SetMethod(Method RequestMethod);
-<a name="l00095"></a>00095
-<a name="l00103"></a>00103 <span class="keywordtype">void</span> SetURI(<span class="keyword">const</span> std::string&amp; URI);
-<a name="l00104"></a>00104
-<a name="l00113"></a>00113 <span class="keywordtype">void</span> SetHttpVersion(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Major, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Minor);
-<a name="l00114"></a>00114
-<a name="l00123"></a>00123 <span class="keywordtype">void</span> SetBody(<span class="keyword">const</span> std::string&amp; Body);
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keyword">private</span> :
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a>;
-<a name="l00128"></a>00128
-<a name="l00135"></a>00135 std::string ToString() <span class="keyword">const</span>;
-<a name="l00136"></a>00136
-<a name="l00145"></a>00145 <span class="keywordtype">bool</span> HasField(<span class="keyword">const</span> std::string&amp; Field) <span class="keyword">const</span>;
-<a name="l00146"></a>00146
-<a name="l00148"></a>00148 <span class="comment">// Types</span>
-<a name="l00150"></a>00150 <span class="comment"></span> <span class="keyword">typedef</span> std::map&lt;std::string, std::string&gt; FieldTable;
-<a name="l00151"></a>00151
-<a name="l00153"></a>00153 <span class="comment">// Member data</span>
-<a name="l00155"></a>00155 <span class="comment"></span> FieldTable myFields;
-<a name="l00156"></a>00156 Method myMethod;
-<a name="l00157"></a>00157 std::string myURI;
-<a name="l00158"></a>00158 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myMajorVersion;
-<a name="l00159"></a>00159 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myMinorVersion;
-<a name="l00160"></a>00160 std::string myBody;
-<a name="l00161"></a>00161 };
-<a name="l00162"></a>00162
-<a name="l00168"></a><a class="code" href="classsf_1_1Http_1_1Response.htm">00168</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Response</a>
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keyword">public</span> :
-<a name="l00171"></a>00171
-<a name="l00176"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">00176</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8" title="Enumerate all the valid status codes returned in a HTTP response.">Status</a>
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="comment">// 2xx: success</span>
-<a name="l00179"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5">00179</a> Ok = 200,
-<a name="l00180"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0">00180</a> Created = 201,
-<a name="l00181"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae">00181</a> Accepted = 202,
-<a name="l00182"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3">00182</a> NoContent = 204,
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="comment">// 3xx: redirection</span>
-<a name="l00185"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2">00185</a> MultipleChoices = 300,
-<a name="l00186"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0">00186</a> MovedPermanently = 301,
-<a name="l00187"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015">00187</a> MovedTemporarily = 302,
-<a name="l00188"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56">00188</a> NotModified = 304,
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// 4xx: client error</span>
-<a name="l00191"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa">00191</a> BadRequest = 400,
-<a name="l00192"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e">00192</a> Unauthorized = 401,
-<a name="l00193"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf">00193</a> Forbidden = 403,
-<a name="l00194"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41">00194</a> NotFound = 404,
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="comment">// 5xx: server error</span>
-<a name="l00197"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a">00197</a> InternalServerError = 500,
-<a name="l00198"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf">00198</a> NotImplemented = 501,
-<a name="l00199"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9">00199</a> BadGateway = 502,
-<a name="l00200"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c">00200</a> ServiceNotAvailable = 503,
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="comment">// 10xx: SFML custom codes</span>
-<a name="l00203"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8">00203</a> InvalidResponse = 1000,
-<a name="l00204"></a><a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa">00204</a> ConnectionFailed = 1001
-<a name="l00205"></a>00205 };
-<a name="l00206"></a>00206
-<a name="l00211"></a>00211 <a class="code" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Response</a>();
-<a name="l00212"></a>00212
-<a name="l00221"></a>00221 <span class="keyword">const</span> std::string&amp; GetField(<span class="keyword">const</span> std::string&amp; Field) <span class="keyword">const</span>;
-<a name="l00222"></a>00222
-<a name="l00229"></a>00229 Status GetStatus() <span class="keyword">const</span>;
-<a name="l00230"></a>00230
-<a name="l00237"></a>00237 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetMajorHttpVersion() <span class="keyword">const</span>;
-<a name="l00238"></a>00238
-<a name="l00245"></a>00245 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetMinorHttpVersion() <span class="keyword">const</span>;
-<a name="l00246"></a>00246
-<a name="l00257"></a>00257 <span class="keyword">const</span> std::string&amp; GetBody() <span class="keyword">const</span>;
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259 <span class="keyword">private</span> :
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a>;
-<a name="l00262"></a>00262
-<a name="l00269"></a>00269 <span class="keywordtype">void</span> FromString(<span class="keyword">const</span> std::string&amp; Data);
-<a name="l00270"></a>00270
-<a name="l00272"></a>00272 <span class="comment">// Types</span>
-<a name="l00274"></a>00274 <span class="comment"></span> <span class="keyword">typedef</span> std::map&lt;std::string, std::string&gt; FieldTable;
-<a name="l00275"></a>00275
-<a name="l00277"></a>00277 <span class="comment">// Member data</span>
-<a name="l00279"></a>00279 <span class="comment"></span> FieldTable myFields;
-<a name="l00280"></a>00280 Status myStatus;
-<a name="l00281"></a>00281 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myMajorVersion;
-<a name="l00282"></a>00282 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myMinorVersion;
-<a name="l00283"></a>00283 std::string myBody;
-<a name="l00284"></a>00284 };
-<a name="l00285"></a>00285
-<a name="l00290"></a>00290 <a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a>();
-<a name="l00291"></a>00291
-<a name="l00299"></a>00299 <a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a>(<span class="keyword">const</span> std::string&amp; Host, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port = 0);
-<a name="l00300"></a>00300
-<a name="l00308"></a>00308 <span class="keywordtype">void</span> SetHost(<span class="keyword">const</span> std::string&amp; Host, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port = 0);
-<a name="l00309"></a>00309
-<a name="l00324"></a>00324 Response SendRequest(<span class="keyword">const</span> Request&amp; Req, <span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 <span class="keyword">private</span> :
-<a name="l00327"></a>00327
-<a name="l00329"></a>00329 <span class="comment">// Member data</span>
-<a name="l00331"></a>00331 <span class="comment"></span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a> myConnection;
-<a name="l00332"></a>00332 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> myHost;
-<a name="l00333"></a>00333 std::string myHostName;
-<a name="l00334"></a>00334 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> myPort;
-<a name="l00335"></a>00335 };
-<a name="l00336"></a>00336
-<a name="l00337"></a>00337 } <span class="comment">// namespace sf</span>
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339
-<a name="l00340"></a>00340 <span class="preprocessor">#endif // SFML_HTTP_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/IPAddress_8cpp-source.htm b/doc/html/IPAddress_8cpp-source.htm
deleted file mode 100755
index af2ff23..0000000
--- a/doc/html/IPAddress_8cpp-source.htm
+++ /dev/null
@@ -1,273 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>IPAddress.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Network/Http.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a>00039 <span class="keyword">const</span> IPAddress <a class="code" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0" title="Local host address (to connect to the same computer).">IPAddress::LocalHost</a>(<span class="stringliteral">"127.0.0.1"</span>);
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00045"></a><a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831">00045</a> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress::IPAddress</a>() :
-<a name="l00046"></a>00046 myAddress(INADDR_NONE)
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00055"></a><a class="code" href="classsf_1_1IPAddress.htm#df8d2e87ea8076b627c3e7254b5e4039">00055</a> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress::IPAddress</a>(<span class="keyword">const</span> std::string&amp; Address)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="comment">// First try to convert it as a byte representation ("xxx.xxx.xxx.xxx")</span>
-<a name="l00058"></a>00058 myAddress = inet_addr(Address.c_str());
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="comment">// If not successful, try to convert it as a host name</span>
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697" title="Tell if the address is a valid one.">IsValid</a>())
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 hostent* Host = gethostbyname(Address.c_str());
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (Host)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="comment">// Host found, extract its IP address</span>
-<a name="l00067"></a>00067 myAddress = <span class="keyword">reinterpret_cast&lt;</span>in_addr*<span class="keyword">&gt;</span>(Host-&gt;h_addr)-&gt;s_addr;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069 <span class="keywordflow">else</span>
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="comment">// Host name not found on the network</span>
-<a name="l00072"></a>00072 myAddress = INADDR_NONE;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077
-<a name="l00082"></a><a class="code" href="classsf_1_1IPAddress.htm#00c1b422265e1261509d5030534bfb0f">00082</a> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress::IPAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Address)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <span class="comment">// First try to convert it as a byte representation ("xxx.xxx.xxx.xxx")</span>
-<a name="l00085"></a>00085 myAddress = inet_addr(Address);
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="comment">// If not successful, try to convert it as a host name</span>
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697" title="Tell if the address is a valid one.">IsValid</a>())
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 hostent* Host = gethostbyname(Address);
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (Host)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="comment">// Host found, extract its IP address</span>
-<a name="l00094"></a>00094 myAddress = <span class="keyword">reinterpret_cast&lt;</span>in_addr*<span class="keyword">&gt;</span>(Host-&gt;h_addr)-&gt;s_addr;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <span class="keywordflow">else</span>
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="comment">// Host name not found on the network</span>
-<a name="l00099"></a>00099 myAddress = INADDR_NONE;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104
-<a name="l00108"></a><a class="code" href="classsf_1_1IPAddress.htm#16fa44fa881e32a03b67006d90db0c39">00108</a> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress::IPAddress</a>(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 myAddress = htonl((Byte0 &lt;&lt; 24) | (Byte1 &lt;&lt; 16) | (Byte2 &lt;&lt; 8) | Byte3);
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00117"></a><a class="code" href="classsf_1_1IPAddress.htm#d692d581e4b96ae3377e95947abb7565">00117</a> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress::IPAddress</a>(Uint32 Address)
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 myAddress = htonl(Address);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00126"></a><a class="code" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697">00126</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697" title="Tell if the address is a valid one.">IPAddress::IsValid</a>()<span class="keyword"> const</span>
-<a name="l00127"></a>00127 <span class="keyword"></span>{
-<a name="l00128"></a>00128 <span class="keywordflow">return</span> myAddress != INADDR_NONE;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
-<a name="l00135"></a><a class="code" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643">00135</a> std::string <a class="code" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643" title="Get a string representation of the address.">IPAddress::ToString</a>()<span class="keyword"> const</span>
-<a name="l00136"></a>00136 <span class="keyword"></span>{
-<a name="l00137"></a>00137 in_addr InAddr;
-<a name="l00138"></a>00138 InAddr.s_addr = myAddress;
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> inet_ntoa(InAddr);
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143
-<a name="l00147"></a><a class="code" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c">00147</a> Uint32 <a class="code" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c" title="Get an integer representation of the address.">IPAddress::ToInteger</a>()<span class="keyword"> const</span>
-<a name="l00148"></a>00148 <span class="keyword"></span>{
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> ntohl(myAddress);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152
-<a name="l00156"></a><a class="code" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e">00156</a> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> <a class="code" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e" title="Get the computer&amp;#39;s local IP address (from the LAN point of view).">IPAddress::GetLocalAddress</a>()
-<a name="l00157"></a>00157 {
-<a name="l00158"></a>00158 <span class="comment">// The method here is to connect a UDP socket to anyone (here to localhost),</span>
-<a name="l00159"></a>00159 <span class="comment">// and get the local socket address with the getsockname function.</span>
-<a name="l00160"></a>00160 <span class="comment">// UDP connection will not send anything to the network, so this function won't cause any overhead.</span>
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> LocalAddress;
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="comment">// Create the socket</span>
-<a name="l00165"></a>00165 SocketHelper::SocketType Socket = socket(PF_INET, SOCK_DGRAM, 0);
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (Socket == <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>())
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> LocalAddress;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="comment">// Build the host address (use a random port)</span>
-<a name="l00170"></a>00170 sockaddr_in SockAddr;
-<a name="l00171"></a>00171 memset(SockAddr.sin_zero, 0, <span class="keyword">sizeof</span>(SockAddr.sin_zero));
-<a name="l00172"></a>00172 SockAddr.sin_addr.s_addr = INADDR_LOOPBACK;
-<a name="l00173"></a>00173 SockAddr.sin_family = AF_INET;
-<a name="l00174"></a>00174 SockAddr.sin_port = htons(4567);
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="comment">// Connect the socket</span>
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (connect(Socket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), <span class="keyword">sizeof</span>(SockAddr)) == -1)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(Socket);
-<a name="l00180"></a>00180 <span class="keywordflow">return</span> LocalAddress;
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">// Get the local address of the socket connection</span>
-<a name="l00184"></a>00184 SocketHelper::LengthType Size = <span class="keyword">sizeof</span>(SockAddr);
-<a name="l00185"></a>00185 <span class="keywordflow">if</span> (getsockname(Socket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), &amp;Size) == -1)
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(Socket);
-<a name="l00188"></a>00188 <span class="keywordflow">return</span> LocalAddress;
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="comment">// Close the socket</span>
-<a name="l00192"></a>00192 <a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(Socket);
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="comment">// Finally build the IP address</span>
-<a name="l00195"></a>00195 LocalAddress.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a> = SockAddr.sin_addr.s_addr;
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> LocalAddress;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200
-<a name="l00204"></a><a class="code" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956">00204</a> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> <a class="code" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956" title="Get the computer&amp;#39;s public IP address (from the web point of view).">IPAddress::GetPublicAddress</a>(<span class="keywordtype">float</span> Timeout)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <span class="comment">// The trick here is more complicated, because the only way</span>
-<a name="l00207"></a>00207 <span class="comment">// to get our public IP address is to get it from a distant computer.</span>
-<a name="l00208"></a>00208 <span class="comment">// Here we get the web page from http://www.sfml-dev.org/ip-provider.php</span>
-<a name="l00209"></a>00209 <span class="comment">// and parse the result to extract our IP address</span>
-<a name="l00210"></a>00210 <span class="comment">// (not very hard : the web page contains only our IP address).</span>
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <a class="code" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a> Server(<span class="stringliteral">"www.sfml-dev.org"</span>);
-<a name="l00213"></a>00213 <a class="code" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Http::Request</a> Request(<a class="code" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00" title="Request in get mode, standard method to retrieve a page.">Http::Request::Get</a>, <span class="stringliteral">"/ip-provider.php"</span>);
-<a name="l00214"></a>00214 <a class="code" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Http::Response</a> Page = Server.<a class="code" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61" title="Send a HTTP request and return the server&amp;#39;s response.">SendRequest</a>(Request, Timeout);
-<a name="l00215"></a>00215 <span class="keywordflow">if</span> (Page.<a class="code" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb" title="Get the header&amp;#39;s status code.">GetStatus</a>() == <a class="code" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5" title="Most common code returned when operation was successful.">Http::Response::Ok</a>)
-<a name="l00216"></a>00216 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress</a>(Page.<a class="code" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179" title="Get the body of the response.">GetBody</a>());
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// Something failed: return an invalid address</span>
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831" title="Default constructor -- constructs an invalid address.">IPAddress</a>();
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222
-<a name="l00226"></a><a class="code" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48">00226</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48" title="Comparison operator ==.">IPAddress::operator ==</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00227"></a>00227 <span class="keyword"></span>{
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> myAddress == Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231
-<a name="l00235"></a><a class="code" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104">00235</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104" title="Comparison operator !=.">IPAddress::operator !=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00236"></a>00236 <span class="keyword"></span>{
-<a name="l00237"></a>00237 <span class="keywordflow">return</span> myAddress != Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00238"></a>00238 }
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240
-<a name="l00244"></a><a class="code" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e">00244</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e" title="Comparison operator &amp;lt;.">IPAddress::operator &lt;</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00245"></a>00245 <span class="keyword"></span>{
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> myAddress &lt; Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249
-<a name="l00253"></a><a class="code" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0">00253</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0" title="Comparison operator &amp;gt;.">IPAddress::operator &gt;</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00254"></a>00254 <span class="keyword"></span>{
-<a name="l00255"></a>00255 <span class="keywordflow">return</span> myAddress &gt; Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258
-<a name="l00262"></a><a class="code" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be">00262</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be" title="Comparison operator &amp;lt;=.">IPAddress::operator &lt;=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00263"></a>00263 <span class="keyword"></span>{
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> myAddress &lt;= Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267
-<a name="l00271"></a><a class="code" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b">00271</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b" title="Comparison operator &amp;gt;=.">IPAddress::operator &gt;=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00272"></a>00272 <span class="keyword"></span>{
-<a name="l00273"></a>00273 <span class="keywordflow">return</span> myAddress &gt;= Other.<a class="code" href="classsf_1_1IPAddress.htm#c409a25542eb61b8bd0dda9ee2ed9ac2" title="Address stored as an unsigned 32 bits integer.">myAddress</a>;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276
-<a name="l00280"></a>00280 std::istream&amp; operator &gt;&gt;(std::istream&amp; Stream, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address)
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 std::string Str;
-<a name="l00283"></a>00283 Stream &gt;&gt; Str;
-<a name="l00284"></a>00284 Address = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(Str);
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="keywordflow">return</span> Stream;
-<a name="l00287"></a>00287 }
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289
-<a name="l00293"></a>00293 std::ostream&amp; operator &lt;&lt;(std::ostream&amp; Stream, <span class="keyword">const</span> IPAddress&amp; Address)
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <span class="keywordflow">return</span> Stream &lt;&lt; Address.ToString();
-<a name="l00296"></a>00296 }
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/IPAddress_8hpp-source.htm b/doc/html/IPAddress_8hpp-source.htm
deleted file mode 100755
index 8cf9102..0000000
--- a/doc/html/IPAddress_8hpp-source.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>IPAddress.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_IPADDRESS_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_IPADDRESS_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;istream&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;ostream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00042"></a><a class="code" href="classsf_1_1IPAddress.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00050"></a>00050 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>();
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(<span class="keyword">const</span> std::string&amp; Address);
-<a name="l00059"></a>00059
-<a name="l00067"></a>00067 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Address);
-<a name="l00068"></a>00068
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3);
-<a name="l00079"></a>00079
-<a name="l00086"></a>00086 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(Uint32 Address);
-<a name="l00087"></a>00087
-<a name="l00094"></a>00094 <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span>;
-<a name="l00095"></a>00095
-<a name="l00102"></a>00102 std::string ToString() <span class="keyword">const</span>;
-<a name="l00103"></a>00103
-<a name="l00110"></a>00110 Uint32 ToInteger() <span class="keyword">const</span>;
-<a name="l00111"></a>00111
-<a name="l00118"></a>00118 <span class="keyword">static</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> GetLocalAddress();
-<a name="l00119"></a>00119
-<a name="l00131"></a>00131 <span class="keyword">static</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> GetPublicAddress(<span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00132"></a>00132
-<a name="l00141"></a>00141 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00142"></a>00142
-<a name="l00151"></a>00151 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00161"></a>00161 <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00162"></a>00162
-<a name="l00171"></a>00171 <span class="keywordtype">bool</span> operator &gt;(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00172"></a>00172
-<a name="l00181"></a>00181 <span class="keywordtype">bool</span> operator &lt;=(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00182"></a>00182
-<a name="l00191"></a>00191 <span class="keywordtype">bool</span> operator &gt;=(<span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00192"></a>00192
-<a name="l00194"></a>00194 <span class="comment">// Static member data</span>
-<a name="l00196"></a><a class="code" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">00196</a> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> LocalHost;
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="keyword">private</span> :
-<a name="l00199"></a>00199
-<a name="l00201"></a>00201 <span class="comment">// Member data</span>
-<a name="l00203"></a>00203 <span class="comment"></span> Uint32 myAddress;
-<a name="l00204"></a>00204 };
-<a name="l00205"></a>00205
-<a name="l00215"></a>00215 SFML_API std::istream&amp; operator &gt;&gt;(std::istream&amp; Stream, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address);
-<a name="l00216"></a>00216
-<a name="l00226"></a>00226 SFML_API std::ostream&amp; operator &lt;&lt;(std::ostream&amp; Stream, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address);
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 } <span class="comment">// namespace sf</span>
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="preprocessor">#endif // SFML_IPADDRESS_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/ImageLoader_8cpp-source.htm b/doc/html/ImageLoader_8cpp-source.htm
deleted file mode 100755
index bf85c46..0000000
--- a/doc/html/ImageLoader_8cpp-source.htm
+++ /dev/null
@@ -1,338 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>ImageLoader.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/ImageLoader.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="keyword">extern</span> <span class="stringliteral">"C"</span>
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="preprocessor"> #include &lt;SFML/Graphics/libjpeg/jpeglib.h&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor"> #include &lt;SFML/Graphics/libjpeg/jerror.h&gt;</span>
-<a name="l00033"></a>00033 }
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Graphics/libpng/png.h&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Graphics/SOIL/SOIL.h&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">namespace</span>
-<a name="l00040"></a>00040 {
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> PngErrorHandler(png_structp Png, png_const_charp Message)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 std::cerr &lt;&lt; <span class="stringliteral">"Failed to write PNG image. Reason : "</span> &lt;&lt; Message &lt;&lt; std::endl;
-<a name="l00047"></a>00047 longjmp(Png-&gt;jmpbuf, 1);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keyword">namespace </span>sf
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="keyword">namespace </span>priv
-<a name="l00055"></a>00055 {
-<a name="l00059"></a>00059 ImageLoader&amp; ImageLoader::GetInstance()
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="keyword">static</span> ImageLoader Instance;
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> Instance;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00070"></a>00070 ImageLoader::ImageLoader()
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <span class="comment">// Nothing to do</span>
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a>00079 ImageLoader::~ImageLoader()
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="comment">// Nothing to do</span>
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00088"></a>00088 <span class="keywordtype">bool</span> ImageLoader::LoadImageFromFile(<span class="keyword">const</span> std::string&amp; Filename, std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Height)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <span class="comment">// Clear the array (just in case)</span>
-<a name="l00091"></a>00091 Pixels.clear();
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">// Load the image and get a pointer to the pixels in memory</span>
-<a name="l00094"></a>00094 <span class="keywordtype">int</span> ImgWidth, ImgHeight, ImgChannels;
-<a name="l00095"></a>00095 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* PixelsPtr = SOIL_load_image(Filename.c_str(), &amp;ImgWidth, &amp;ImgHeight, &amp;ImgChannels, SOIL_LOAD_RGBA);
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (PixelsPtr)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="comment">// Assign the image properties</span>
-<a name="l00100"></a>00100 Width = ImgWidth;
-<a name="l00101"></a>00101 Height = ImgHeight;
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="comment">// Copy the loaded pixels to the pixel buffer</span>
-<a name="l00104"></a>00104 Pixels.resize(Width * Height);
-<a name="l00105"></a>00105 memcpy(&amp;Pixels[0], PixelsPtr, Width * Height * 4);
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">// Free the loaded pixels (they are now in our own pixel buffer)</span>
-<a name="l00108"></a>00108 SOIL_free_image_data(PixelsPtr);
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112 <span class="keywordflow">else</span>
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="comment">// Error, failed to load the image</span>
-<a name="l00115"></a>00115 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load image \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : "</span> &lt;&lt; SOIL_last_result() &lt;&lt; std::endl;
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121
-<a name="l00125"></a>00125 <span class="keywordtype">bool</span> ImageLoader::LoadImageFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Height)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="comment">// Clear the array (just in case)</span>
-<a name="l00128"></a>00128 Pixels.clear();
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <span class="comment">// Load the image and get a pointer to the pixels in memory</span>
-<a name="l00131"></a>00131 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* Buffer = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(Data);
-<a name="l00132"></a>00132 <span class="keywordtype">int</span> Size = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(SizeInBytes);
-<a name="l00133"></a>00133 <span class="keywordtype">int</span> ImgWidth, ImgHeight, ImgChannels;
-<a name="l00134"></a>00134 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* PixelsPtr = SOIL_load_image_from_memory(Buffer, Size, &amp;ImgWidth, &amp;ImgHeight, &amp;ImgChannels, SOIL_LOAD_RGBA);
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (PixelsPtr)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 <span class="comment">// Assign the image properties</span>
-<a name="l00139"></a>00139 Width = ImgWidth;
-<a name="l00140"></a>00140 Height = ImgHeight;
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="comment">// Copy the loaded pixels to the pixel buffer</span>
-<a name="l00143"></a>00143 Pixels.resize(Width * Height);
-<a name="l00144"></a>00144 memcpy(&amp;Pixels[0], PixelsPtr, Width * Height * 4);
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 <span class="comment">// Free the loaded pixels (they are now in our own pixel buffer)</span>
-<a name="l00147"></a>00147 SOIL_free_image_data(PixelsPtr);
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 <span class="keywordflow">else</span>
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="comment">// Error, failed to load the image</span>
-<a name="l00154"></a>00154 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load image from memory. Reason : "</span> &lt;&lt; SOIL_last_result() &lt;&lt; std::endl;
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160
-<a name="l00164"></a>00164 <span class="keywordtype">bool</span> ImageLoader::SaveImageToFile(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 <span class="comment">// Deduce the image type from its extension</span>
-<a name="l00167"></a>00167 <span class="keywordtype">int</span> Type = -1;
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> (Filename.size() &gt; 3)
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 std::string Extension = Filename.substr(Filename.size() - 3);
-<a name="l00171"></a>00171 <span class="keywordflow">if</span> (Extension == <span class="stringliteral">"bmp"</span> || Extension == <span class="stringliteral">"BMP"</span>) Type = SOIL_SAVE_TYPE_BMP;
-<a name="l00172"></a>00172 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Extension == <span class="stringliteral">"tga"</span> || Extension == <span class="stringliteral">"TGA"</span>) Type = SOIL_SAVE_TYPE_TGA;
-<a name="l00173"></a>00173 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Extension == <span class="stringliteral">"dds"</span> || Extension == <span class="stringliteral">"DDS"</span>) Type = SOIL_SAVE_TYPE_DDS;
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">// Special handling for PNG and JPG -- not handled by SOIL</span>
-<a name="l00176"></a>00176 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Extension == <span class="stringliteral">"png"</span> || Extension == <span class="stringliteral">"PNG"</span>) <span class="keywordflow">return</span> WritePng(Filename, Pixels, Width, Height);
-<a name="l00177"></a>00177 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Extension == <span class="stringliteral">"jpg"</span> || Extension == <span class="stringliteral">"JPG"</span>) <span class="keywordflow">return</span> WriteJpg(Filename, Pixels, Width, Height);
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 <span class="keywordflow">if</span> (Type == -1)
-<a name="l00181"></a>00181 {
-<a name="l00182"></a>00182 <span class="comment">// Error, incompatible type</span>
-<a name="l00183"></a>00183 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : this image format is not supported"</span> &lt;&lt; std::endl;
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="comment">// Finally save the image</span>
-<a name="l00188"></a>00188 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* PixelsPtr = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;Pixels[0]);
-<a name="l00189"></a>00189 <span class="keywordflow">if</span> (!SOIL_save_image(Filename.c_str(), Type, <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Width), static_cast&lt;int&gt;(Height), 4, PixelsPtr))
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="comment">// Error, failed to save the image</span>
-<a name="l00192"></a>00192 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : "</span> &lt;&lt; SOIL_last_result() &lt;&lt; std::endl;
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199
-<a name="l00203"></a>00203 <span class="keywordtype">bool</span> ImageLoader::WriteJpg(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 <span class="comment">// Open the file to write in</span>
-<a name="l00206"></a>00206 FILE* File = fopen(Filename.c_str(), <span class="stringliteral">"wb"</span>);
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (!File)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : cannot open file"</span> &lt;&lt; std::endl;
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">// Initialize the error handler</span>
-<a name="l00214"></a>00214 jpeg_compress_struct CompressInfo;
-<a name="l00215"></a>00215 jpeg_error_mgr ErrorManager;
-<a name="l00216"></a>00216 CompressInfo.err = jpeg_std_error(&amp;ErrorManager);
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// Initialize all the writing and compression infos</span>
-<a name="l00219"></a>00219 jpeg_create_compress(&amp;CompressInfo);
-<a name="l00220"></a>00220 CompressInfo.image_width = Width;
-<a name="l00221"></a>00221 CompressInfo.image_height = Height;
-<a name="l00222"></a>00222 CompressInfo.input_components = 3;
-<a name="l00223"></a>00223 CompressInfo.in_color_space = JCS_RGB;
-<a name="l00224"></a>00224 jpeg_stdio_dest(&amp;CompressInfo, File);
-<a name="l00225"></a>00225 jpeg_set_defaults(&amp;CompressInfo);
-<a name="l00226"></a>00226 jpeg_set_quality(&amp;CompressInfo, 90, TRUE);
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="comment">// Get rid of the aplha channel</span>
-<a name="l00229"></a>00229 std::vector&lt;Uint8&gt; PixelsBuffer(Width * Height * 3);
-<a name="l00230"></a>00230 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Pixels.size(); ++i)
-<a name="l00231"></a>00231 {
-<a name="l00232"></a>00232 PixelsBuffer[i * 3 + 0] = Pixels[i].r;
-<a name="l00233"></a>00233 PixelsBuffer[i * 3 + 1] = Pixels[i].g;
-<a name="l00234"></a>00234 PixelsBuffer[i * 3 + 2] = Pixels[i].b;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 Uint8* PixelsPtr = &amp;PixelsBuffer[0];
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="comment">// Start compression</span>
-<a name="l00239"></a>00239 jpeg_start_compress(&amp;CompressInfo, TRUE);
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 <span class="comment">// Write each row of the image</span>
-<a name="l00242"></a>00242 <span class="keywordflow">while</span> (CompressInfo.next_scanline &lt; CompressInfo.image_height)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 JSAMPROW RowPointer = PixelsPtr + (CompressInfo.next_scanline * Width * 3);
-<a name="l00245"></a>00245 jpeg_write_scanlines(&amp;CompressInfo, &amp;RowPointer, 1);
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="comment">// Finish compression</span>
-<a name="l00249"></a>00249 jpeg_finish_compress(&amp;CompressInfo);
-<a name="l00250"></a>00250 jpeg_destroy_compress(&amp;CompressInfo);
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="comment">// Close the file</span>
-<a name="l00253"></a>00253 fclose(File);
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258
-<a name="l00262"></a>00262 <span class="keywordtype">bool</span> ImageLoader::WritePng(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 <span class="comment">// Open the file to write in</span>
-<a name="l00265"></a>00265 FILE* File = fopen(Filename.c_str(), <span class="stringliteral">"wb"</span>);
-<a name="l00266"></a>00266 <span class="keywordflow">if</span> (!File)
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : cannot open file"</span> &lt;&lt; std::endl;
-<a name="l00269"></a>00269 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272 <span class="comment">// Create the main PNG structure</span>
-<a name="l00273"></a>00273 png_structp Png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, &amp;PngErrorHandler, NULL);
-<a name="l00274"></a>00274 <span class="keywordflow">if</span> (!Png)
-<a name="l00275"></a>00275 {
-<a name="l00276"></a>00276 fclose(File);
-<a name="l00277"></a>00277 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : cannot allocate PNG write structure"</span> &lt;&lt; std::endl;
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 <span class="comment">// Initialize the image informations</span>
-<a name="l00282"></a>00282 png_infop PngInfo = png_create_info_struct(Png);
-<a name="l00283"></a>00283 <span class="keywordflow">if</span> (!PngInfo)
-<a name="l00284"></a>00284 {
-<a name="l00285"></a>00285 fclose(File);
-<a name="l00286"></a>00286 png_destroy_write_struct(&amp;Png, NULL);
-<a name="l00287"></a>00287 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save image file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\". Reason : cannot allocate PNG info structure"</span> &lt;&lt; std::endl;
-<a name="l00288"></a>00288 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <span class="comment">// For proper error handling...</span>
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (setjmp(Png-&gt;jmpbuf))
-<a name="l00293"></a>00293 {
-<a name="l00294"></a>00294 png_destroy_write_struct(&amp;Png, &amp;PngInfo);
-<a name="l00295"></a>00295 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00296"></a>00296 }
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 <span class="comment">// Link the file to the PNG structure</span>
-<a name="l00299"></a>00299 png_init_io(Png, File);
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="comment">// Set the image informations</span>
-<a name="l00302"></a>00302 png_set_IHDR(Png, PngInfo, Width, Height, 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="comment">// Write the header</span>
-<a name="l00305"></a>00305 png_write_info(Png, PngInfo);
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 <span class="comment">// Get the pointers to the pixels rows into an array</span>
-<a name="l00308"></a>00308 png_byte* PixelsPtr = (png_byte*)&amp;Pixels[0];
-<a name="l00309"></a>00309 std::vector&lt;png_byte*&gt; RowPointers(Height);
-<a name="l00310"></a>00310 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; Height; ++i)
-<a name="l00311"></a>00311 {
-<a name="l00312"></a>00312 RowPointers[i] = PixelsPtr;
-<a name="l00313"></a>00313 PixelsPtr += Width * 4;
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316 <span class="comment">// Write pixels row by row</span>
-<a name="l00317"></a>00317 png_set_rows(Png, PngInfo, &amp;RowPointers[0]);
-<a name="l00318"></a>00318 png_write_png(Png, PngInfo, PNG_TRANSFORM_IDENTITY, NULL);
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="comment">// Finish writing the file</span>
-<a name="l00321"></a>00321 png_write_end(Png, PngInfo);
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="comment">// Cleanup resources</span>
-<a name="l00324"></a>00324 png_destroy_write_struct(&amp;Png, &amp;PngInfo);
-<a name="l00325"></a>00325 fclose(File);
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 } <span class="comment">// namespace priv</span>
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/ImageLoader_8hpp-source.htm b/doc/html/ImageLoader_8hpp-source.htm
deleted file mode 100755
index 1dc8342..0000000
--- a/doc/html/ImageLoader_8hpp-source.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>ImageLoader.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_IMAGELOADER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_IMAGELOADER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>priv
-<a name="l00040"></a>00040 {
-<a name="l00045"></a>00045 <span class="keyword">class </span>ImageLoader : NonCopyable
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00055"></a>00055 <span class="keyword">static</span> ImageLoader&amp; GetInstance();
-<a name="l00056"></a>00056
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> LoadImageFromFile(<span class="keyword">const</span> std::string&amp; Filename, std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Height);
-<a name="l00069"></a>00069
-<a name="l00082"></a>00082 <span class="keywordtype">bool</span> LoadImageFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; Height);
-<a name="l00083"></a>00083
-<a name="l00095"></a>00095 <span class="keywordtype">bool</span> SaveImageToFile(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keyword">private</span> :
-<a name="l00098"></a>00098
-<a name="l00103"></a>00103 ImageLoader();
-<a name="l00104"></a>00104
-<a name="l00109"></a>00109 ~ImageLoader();
-<a name="l00110"></a>00110
-<a name="l00122"></a>00122 <span class="keywordtype">bool</span> WriteJpg(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00123"></a>00123
-<a name="l00135"></a>00135 <span class="keywordtype">bool</span> WritePng(<span class="keyword">const</span> std::string&amp; Filename, <span class="keyword">const</span> std::vector&lt;Color&gt;&amp; Pixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00136"></a>00136 };
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 } <span class="comment">// namespace priv</span>
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 } <span class="comment">// namespace sf</span>
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="preprocessor">#endif // SFML_IMAGELOADER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Image_8cpp-source.htm b/doc/html/Image_8cpp-source.htm
deleted file mode 100755
index 0f8d92a..0000000
--- a/doc/html/Image_8cpp-source.htm
+++ /dev/null
@@ -1,714 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Image.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/ImageLoader.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/RenderWindow.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00043"></a><a class="code" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12">00043</a> <a class="code" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12" title="Default constructor.">Image::Image</a>() :
-<a name="l00044"></a>00044 myWidth (0),
-<a name="l00045"></a>00045 myHeight (0),
-<a name="l00046"></a>00046 myTextureWidth (0),
-<a name="l00047"></a>00047 myTextureHeight (0),
-<a name="l00048"></a>00048 myTexture (0),
-<a name="l00049"></a>00049 myIsSmooth (true),
-<a name="l00050"></a>00050 myNeedTextureUpdate(false),
-<a name="l00051"></a>00051 myNeedArrayUpdate (false)
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00060"></a><a class="code" href="classsf_1_1Image.htm#a38cae7c1c704aa0175b9e73645cb210">00060</a> <a class="code" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12" title="Default constructor.">Image::Image</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Copy) :
-<a name="l00061"></a>00061 <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>&lt;<a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&gt; (Copy),
-<a name="l00062"></a>00062 myWidth (Copy.myWidth),
-<a name="l00063"></a>00063 myHeight (Copy.myHeight),
-<a name="l00064"></a>00064 myTextureWidth (Copy.myTextureWidth),
-<a name="l00065"></a>00065 myTextureHeight (Copy.myTextureHeight),
-<a name="l00066"></a>00066 myTexture (0),
-<a name="l00067"></a>00067 myIsSmooth (Copy.myIsSmooth),
-<a name="l00068"></a>00068 myPixels (Copy.myPixels),
-<a name="l00069"></a>00069 myNeedTextureUpdate(false),
-<a name="l00070"></a>00070 myNeedArrayUpdate (false)
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 CreateTexture();
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classsf_1_1Image.htm#2a4c0ec448863784f83e9931d25dada2">00079</a> <a class="code" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12" title="Default constructor.">Image::Image</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col) :
-<a name="l00080"></a>00080 myWidth (0),
-<a name="l00081"></a>00081 myHeight (0),
-<a name="l00082"></a>00082 myTextureWidth (0),
-<a name="l00083"></a>00083 myTextureHeight (0),
-<a name="l00084"></a>00084 myTexture (0),
-<a name="l00085"></a>00085 myIsSmooth (true),
-<a name="l00086"></a>00086 myNeedTextureUpdate(false),
-<a name="l00087"></a>00087 myNeedArrayUpdate (false)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <a class="code" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde" title="Create an empty image.">Create</a>(Width, Height, Col);
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092
-<a name="l00096"></a><a class="code" href="classsf_1_1Image.htm#7092ba80cc19c053bf356e98a4743acb">00096</a> <a class="code" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12" title="Default constructor.">Image::Image</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Data) :
-<a name="l00097"></a>00097 myWidth (0),
-<a name="l00098"></a>00098 myHeight (0),
-<a name="l00099"></a>00099 myTextureWidth (0),
-<a name="l00100"></a>00100 myTextureHeight (0),
-<a name="l00101"></a>00101 myTexture (0),
-<a name="l00102"></a>00102 myIsSmooth (true),
-<a name="l00103"></a>00103 myNeedTextureUpdate(false),
-<a name="l00104"></a>00104 myNeedArrayUpdate (false)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <a class="code" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c" title="Load the image directly from an array of pixels.">LoadFromPixels</a>(Width, Height, Data);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109
-<a name="l00113"></a><a class="code" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83">00113</a> <a class="code" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83" title="Destructor.">Image::~Image</a>()
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="comment">// Destroy the OpenGL texture</span>
-<a name="l00116"></a>00116 DestroyTexture();
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119
-<a name="l00123"></a><a class="code" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b">00123</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b" title="Load the image from a file.">Image::LoadFromFile</a>(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="comment">// Let the image loader load the image into our pixel array</span>
-<a name="l00126"></a>00126 <span class="keywordtype">bool</span> Success = priv::ImageLoader::GetInstance().LoadImageFromFile(Filename, myPixels, myWidth, myHeight);
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (Success)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 <span class="comment">// Loading succeeded : we can create the texture</span>
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (CreateTexture())
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="comment">// Oops... something failed</span>
-<a name="l00136"></a>00136 Reset();
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00145"></a><a class="code" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486">00145</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486" title="Load the image from a file in memory.">Image::LoadFromMemory</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes)
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="comment">// Check parameters</span>
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (!Data || (SizeInBytes == 0))
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 std::cerr &lt;&lt; <span class="stringliteral">"Failed to image font from memory, no data provided"</span> &lt;&lt; std::endl;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">// Let the image loader load the image into our pixel array</span>
-<a name="l00155"></a>00155 <span class="keywordtype">bool</span> Success = priv::ImageLoader::GetInstance().LoadImageFromMemory(Data, SizeInBytes, myPixels, myWidth, myHeight);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (Success)
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="comment">// Loading succeeded : we can create the texture</span>
-<a name="l00160"></a>00160 <span class="keywordflow">if</span> (CreateTexture())
-<a name="l00161"></a>00161 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="comment">// Oops... something failed</span>
-<a name="l00165"></a>00165 Reset();
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170
-<a name="l00174"></a><a class="code" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c">00174</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c" title="Load the image directly from an array of pixels.">Image::LoadFromPixels</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Data)
-<a name="l00175"></a>00175 {
-<a name="l00176"></a>00176 <span class="keywordflow">if</span> (Data)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="comment">// Store the texture dimensions</span>
-<a name="l00179"></a>00179 myWidth = Width;
-<a name="l00180"></a>00180 myHeight = Height;
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="comment">// Fill the pixel buffer with the specified raw data</span>
-<a name="l00183"></a>00183 <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>* Ptr = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>*<span class="keyword">&gt;</span>(Data);
-<a name="l00184"></a>00184 myPixels.assign(Ptr, Ptr + Width * Height);
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="comment">// We can create the texture</span>
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (CreateTexture())
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 <span class="keywordflow">else</span>
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 <span class="comment">// Oops... something failed</span>
-<a name="l00194"></a>00194 Reset();
-<a name="l00195"></a>00195 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198 <span class="keywordflow">else</span>
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="comment">// No data provided : create a white image</span>
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde" title="Create an empty image.">Create</a>(Width, Height, <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255, 255));
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205
-<a name="l00209"></a><a class="code" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08">00209</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08" title="Save the content of the image to a file.">Image::SaveToFile</a>(<span class="keyword">const</span> std::string&amp; Filename)<span class="keyword"> const</span>
-<a name="l00210"></a>00210 <span class="keyword"></span>{
-<a name="l00211"></a>00211 <span class="comment">// Check if the array of pixels needs to be updated</span>
-<a name="l00212"></a>00212 EnsureArrayUpdate();
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="comment">// Let the image loader save our pixel array into the image</span>
-<a name="l00215"></a>00215 <span class="keywordflow">return</span> priv::ImageLoader::GetInstance().SaveImageToFile(Filename, myPixels, myWidth, myHeight);
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218
-<a name="l00222"></a><a class="code" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde">00222</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde" title="Create an empty image.">Image::Create</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Col)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="comment">// Store the texture dimensions</span>
-<a name="l00225"></a>00225 myWidth = Width;
-<a name="l00226"></a>00226 myHeight = Height;
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="comment">// Recreate the pixel buffer and fill it with the specified color</span>
-<a name="l00229"></a>00229 myPixels.clear();
-<a name="l00230"></a>00230 myPixels.resize(Width * Height, Col);
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <span class="comment">// We can create the texture</span>
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (CreateTexture())
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237 <span class="keywordflow">else</span>
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="comment">// Oops... something failed</span>
-<a name="l00240"></a>00240 Reset();
-<a name="l00241"></a>00241 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00242"></a>00242 }
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245
-<a name="l00249"></a><a class="code" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50">00249</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50" title="Create transparency mask from a specified colorkey.">Image::CreateMaskFromColor</a>(<a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> ColorKey, Uint8 Alpha)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <span class="comment">// Check if the array of pixels needs to be updated</span>
-<a name="l00252"></a>00252 EnsureArrayUpdate();
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="comment">// Calculate the new color (old color with no alpha)</span>
-<a name="l00255"></a>00255 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> NewColor(ColorKey.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a>, ColorKey.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a>, ColorKey.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a>, Alpha);
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="comment">// Replace the old color by the new one</span>
-<a name="l00258"></a>00258 std::replace(myPixels.begin(), myPixels.end(), ColorKey, NewColor);
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="comment">// The texture will need to be updated</span>
-<a name="l00261"></a>00261 myNeedTextureUpdate = <span class="keyword">true</span>;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264
-<a name="l00270"></a><a class="code" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2">00270</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2" title="Copy pixels from another image onto this one.">Image::Copy</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Source, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DestX, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DestY, <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SourceRect, <span class="keywordtype">bool</span> ApplyAlpha)
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="comment">// Make sure both images are valid</span>
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> ((Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a> == 0) || (Source.<a class="code" href="classsf_1_1Image.htm#ceef290985323875724673f5fdc2f6d0" title="Image Height.">myHeight</a> == 0) || (myWidth == 0) || (myHeight == 0))
-<a name="l00274"></a>00274 <span class="keywordflow">return</span>;
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="comment">// Make sure both images have up-to-date arrays</span>
-<a name="l00277"></a>00277 EnsureArrayUpdate();
-<a name="l00278"></a>00278 Source.<a class="code" href="classsf_1_1Image.htm#9e4a9bfca94b75367192b960b0d87a9d" title="Make sure the array of pixels is updated with the texture in video memory.">EnsureArrayUpdate</a>();
-<a name="l00279"></a>00279
-<a name="l00280"></a>00280 <span class="comment">// Adjust the source rectangle</span>
-<a name="l00281"></a>00281 <a class="code" href="classsf_1_1Rect.htm">IntRect</a> SrcRect = SourceRect;
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>() == 0 || (SrcRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>() == 0))
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> = 0;
-<a name="l00285"></a>00285 SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> = 0;
-<a name="l00286"></a>00286 SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> = Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a>;
-<a name="l00287"></a>00287 SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> = Source.<a class="code" href="classsf_1_1Image.htm#ceef290985323875724673f5fdc2f6d0" title="Image Height.">myHeight</a>;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 <span class="keywordflow">else</span>
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> &lt; 0) SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> = 0;
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> &lt; 0) SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> = 0;
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> &gt; static_cast&lt;int&gt;(Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a>)) SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> = Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a>;
-<a name="l00294"></a>00294 if (SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> &gt; static_cast&lt;int&gt;(Source.<a class="code" href="classsf_1_1Image.htm#ceef290985323875724673f5fdc2f6d0" title="Image Height.">myHeight</a>)) SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> = Source.<a class="code" href="classsf_1_1Image.htm#ceef290985323875724673f5fdc2f6d0" title="Image Height.">myHeight</a>;
-<a name="l00295"></a>00295 }
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="comment">// Then find the valid bounds of the destination rectangle</span>
-<a name="l00298"></a>00298 <span class="keywordtype">int</span> Width = SrcRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>();
-<a name="l00299"></a>00299 <span class="keywordtype">int</span> Height = SrcRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>();
-<a name="l00300"></a>00300 <span class="keywordflow">if</span> (DestX + Width &gt; myWidth) Width = myWidth - DestX;
-<a name="l00301"></a>00301 <span class="keywordflow">if</span> (DestY + Height &gt; myHeight) Height = myHeight - DestY;
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="comment">// Make sure the destination area is valid</span>
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> ((Width &lt;= 0) || (Height &lt;= 0))
-<a name="l00305"></a>00305 <span class="keywordflow">return</span>;
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 <span class="comment">// Precompute as much as possible</span>
-<a name="l00308"></a>00308 <span class="keywordtype">int</span> Pitch = Width * 4;
-<a name="l00309"></a>00309 <span class="keywordtype">int</span> Rows = Height;
-<a name="l00310"></a>00310 <span class="keywordtype">int</span> SrcStride = Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a> * 4;
-<a name="l00311"></a>00311 <span class="keywordtype">int</span> DstStride = myWidth * 4;
-<a name="l00312"></a>00312 <span class="keyword">const</span> Uint8* SrcPixels = Source.<a class="code" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022" title="Get a read-only pointer to the array of pixels (RGBA 8 bits integers components)...">GetPixelsPtr</a>() + (SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> + SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> * Source.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a>) * 4;
-<a name="l00313"></a>00313 Uint8* DstPixels = <span class="keyword">reinterpret_cast&lt;</span>Uint8*<span class="keyword">&gt;</span>(&amp;myPixels[0]) + (DestX + DestY * myWidth) * 4;
-<a name="l00314"></a>00314
-<a name="l00315"></a>00315 <span class="comment">// Copy the pixels</span>
-<a name="l00316"></a>00316 <span class="keywordflow">if</span> (ApplyAlpha)
-<a name="l00317"></a>00317 {
-<a name="l00318"></a>00318 <span class="comment">// Interpolation using alpha values, pixel by pixel (slower)</span>
-<a name="l00319"></a>00319 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Rows; ++i)
-<a name="l00320"></a>00320 {
-<a name="l00321"></a>00321 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; Width; ++j)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="comment">// Get a direct pointer to the components of the current pixel</span>
-<a name="l00324"></a>00324 <span class="keyword">const</span> Uint8* Src = SrcPixels + j * 4;
-<a name="l00325"></a>00325 Uint8* Dst = DstPixels + j * 4;
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327 <span class="comment">// Interpolate RGB components using the alpha value of the source pixel</span>
-<a name="l00328"></a>00328 Uint8 Alpha = Src[3];
-<a name="l00329"></a>00329 Dst[0] = (Src[0] * Alpha + Dst[0] * (255 - Alpha)) / 255;
-<a name="l00330"></a>00330 Dst[1] = (Src[1] * Alpha + Dst[1] * (255 - Alpha)) / 255;
-<a name="l00331"></a>00331 Dst[2] = (Src[2] * Alpha + Dst[2] * (255 - Alpha)) / 255;
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 SrcPixels += SrcStride;
-<a name="l00335"></a>00335 DstPixels += DstStride;
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338 <span class="keywordflow">else</span>
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <span class="comment">// Optimized copy ignoring alpha values, row by row (faster)</span>
-<a name="l00341"></a>00341 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Rows; ++i)
-<a name="l00342"></a>00342 {
-<a name="l00343"></a>00343 memcpy(DstPixels, SrcPixels, Pitch);
-<a name="l00344"></a>00344 SrcPixels += SrcStride;
-<a name="l00345"></a>00345 DstPixels += DstStride;
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347 }
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349 <span class="comment">// The texture will need an update</span>
-<a name="l00350"></a>00350 myNeedTextureUpdate = <span class="keyword">true</span>;
-<a name="l00351"></a>00351 }
-<a name="l00352"></a>00352
-<a name="l00353"></a>00353
-<a name="l00358"></a><a class="code" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974">00358</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974" title="Create the image from the current contents of the given window.">Image::CopyScreen</a>(<a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>&amp; <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>, <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SourceRect)
-<a name="l00359"></a>00359 {
-<a name="l00360"></a>00360 <span class="comment">// Adjust the source rectangle</span>
-<a name="l00361"></a>00361 <a class="code" href="classsf_1_1Rect.htm">IntRect</a> SrcRect = SourceRect;
-<a name="l00362"></a>00362 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>() == 0 || (SrcRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>() == 0))
-<a name="l00363"></a>00363 {
-<a name="l00364"></a>00364 SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> = 0;
-<a name="l00365"></a>00365 SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> = 0;
-<a name="l00366"></a>00366 SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> = Window.<a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">GetWidth</a>();
-<a name="l00367"></a>00367 SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> = Window.<a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">GetHeight</a>();
-<a name="l00368"></a>00368 }
-<a name="l00369"></a>00369 <span class="keywordflow">else</span>
-<a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> &lt; 0) SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> = 0;
-<a name="l00372"></a>00372 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> &lt; 0) SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> = 0;
-<a name="l00373"></a>00373 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> &gt; static_cast&lt;int&gt;(Window.<a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">GetWidth</a>())) SrcRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> = Window.<a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">GetWidth</a>();
-<a name="l00374"></a>00374 <span class="keywordflow">if</span> (SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> &gt; static_cast&lt;int&gt;(Window.<a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">GetHeight</a>())) SrcRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> = Window.<a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">GetHeight</a>();
-<a name="l00375"></a>00375 }
-<a name="l00376"></a>00376
-<a name="l00377"></a>00377 <span class="comment">// Store the texture dimensions</span>
-<a name="l00378"></a>00378 myWidth = SrcRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>();
-<a name="l00379"></a>00379 myHeight = SrcRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>();
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381 <span class="comment">// We can then create the texture</span>
-<a name="l00382"></a>00382 <span class="keywordflow">if</span> (Window.<a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>() &amp;&amp; CreateTexture())
-<a name="l00383"></a>00383 {
-<a name="l00384"></a>00384 GLint PreviousTexture;
-<a name="l00385"></a>00385 GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &amp;PreviousTexture));
-<a name="l00386"></a>00386
-<a name="l00387"></a>00387 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00388"></a>00388 GLCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, SrcRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, SrcRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>, myWidth, myHeight));
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390 GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 myNeedTextureUpdate = <span class="keyword">false</span>;
-<a name="l00393"></a>00393 myNeedArrayUpdate = <span class="keyword">true</span>;
-<a name="l00394"></a>00394
-<a name="l00395"></a>00395 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00396"></a>00396 }
-<a name="l00397"></a>00397 <span class="keywordflow">else</span>
-<a name="l00398"></a>00398 {
-<a name="l00399"></a>00399 Reset();
-<a name="l00400"></a>00400 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00401"></a>00401 }
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403
-<a name="l00404"></a>00404
-<a name="l00408"></a><a class="code" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584">00408</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584" title="Change the color of a pixel.">Image::SetPixel</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col)
-<a name="l00409"></a>00409 {
-<a name="l00410"></a>00410 <span class="comment">// First check if the array of pixels needs to be updated</span>
-<a name="l00411"></a>00411 EnsureArrayUpdate();
-<a name="l00412"></a>00412
-<a name="l00413"></a>00413 <span class="comment">// Check if pixel is whithin the image bounds</span>
-<a name="l00414"></a>00414 <span class="keywordflow">if</span> ((X &gt;= myWidth) || (Y &gt;= myHeight))
-<a name="l00415"></a>00415 {
-<a name="l00416"></a>00416 std::cerr &lt;&lt; <span class="stringliteral">"Cannot set pixel ("</span> &lt;&lt; X &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; Y &lt;&lt; <span class="stringliteral">") for image "</span>
-<a name="l00417"></a>00417 &lt;&lt; <span class="stringliteral">"(width = "</span> &lt;&lt; myWidth &lt;&lt; <span class="stringliteral">", height = "</span> &lt;&lt; myHeight &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00418"></a>00418 <span class="keywordflow">return</span>;
-<a name="l00419"></a>00419 }
-<a name="l00420"></a>00420
-<a name="l00421"></a>00421 myPixels[X + Y * myWidth] = Col;
-<a name="l00422"></a>00422
-<a name="l00423"></a>00423 <span class="comment">// The texture will need to be updated</span>
-<a name="l00424"></a>00424 myNeedTextureUpdate = <span class="keyword">true</span>;
-<a name="l00425"></a>00425 }
-<a name="l00426"></a>00426
-<a name="l00427"></a>00427
-<a name="l00431"></a><a class="code" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4">00431</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4" title="Get a pixel from the image.">Image::GetPixel</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y)<span class="keyword"> const</span>
-<a name="l00432"></a>00432 <span class="keyword"></span>{
-<a name="l00433"></a>00433 <span class="comment">// First check if the array of pixels needs to be updated</span>
-<a name="l00434"></a>00434 EnsureArrayUpdate();
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <span class="comment">// Check if pixel is whithin the image bounds</span>
-<a name="l00437"></a>00437 <span class="keywordflow">if</span> ((X &gt;= myWidth) || (Y &gt;= myHeight))
-<a name="l00438"></a>00438 {
-<a name="l00439"></a>00439 std::cerr &lt;&lt; <span class="stringliteral">"Cannot get pixel ("</span> &lt;&lt; X &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; Y &lt;&lt; <span class="stringliteral">") for image "</span>
-<a name="l00440"></a>00440 &lt;&lt; <span class="stringliteral">"(width = "</span> &lt;&lt; myWidth &lt;&lt; <span class="stringliteral">", height = "</span> &lt;&lt; myHeight &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00441"></a>00441 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd" title="Black predefined color.">Color::Black</a>;
-<a name="l00442"></a>00442 }
-<a name="l00443"></a>00443
-<a name="l00444"></a>00444 <span class="keywordflow">return</span> myPixels[X + Y * myWidth];
-<a name="l00445"></a>00445 }
-<a name="l00446"></a>00446
-<a name="l00447"></a>00447
-<a name="l00453"></a><a class="code" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022">00453</a> <span class="keyword">const</span> Uint8* <a class="code" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022" title="Get a read-only pointer to the array of pixels (RGBA 8 bits integers components)...">Image::GetPixelsPtr</a>()<span class="keyword"> const</span>
-<a name="l00454"></a>00454 <span class="keyword"></span>{
-<a name="l00455"></a>00455 <span class="comment">// First check if the array of pixels needs to be updated</span>
-<a name="l00456"></a>00456 EnsureArrayUpdate();
-<a name="l00457"></a>00457
-<a name="l00458"></a>00458 <span class="keywordflow">if</span> (!myPixels.empty())
-<a name="l00459"></a>00459 {
-<a name="l00460"></a>00460 <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Uint8*<span class="keyword">&gt;</span>(&amp;myPixels[0]);
-<a name="l00461"></a>00461 }
-<a name="l00462"></a>00462 <span class="keywordflow">else</span>
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 std::cerr &lt;&lt; <span class="stringliteral">"Trying to access the pixels of an empty image"</span> &lt;&lt; std::endl;
-<a name="l00465"></a>00465 <span class="keywordflow">return</span> NULL;
-<a name="l00466"></a>00466 }
-<a name="l00467"></a>00467 }
-<a name="l00468"></a>00468
-<a name="l00469"></a>00469
-<a name="l00473"></a><a class="code" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7">00473</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7" title="Bind the image for rendering.">Image::Bind</a>()<span class="keyword"> const</span>
-<a name="l00474"></a>00474 <span class="keyword"></span>{
-<a name="l00475"></a>00475 <span class="comment">// First check if the texture needs to be updated</span>
-<a name="l00476"></a>00476 EnsureTextureUpdate();
-<a name="l00477"></a>00477
-<a name="l00478"></a>00478 <span class="comment">// Bind it</span>
-<a name="l00479"></a>00479 <span class="keywordflow">if</span> (myTexture)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 GLCheck(glEnable(GL_TEXTURE_2D));
-<a name="l00482"></a>00482 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00483"></a>00483 }
-<a name="l00484"></a>00484 }
-<a name="l00485"></a>00485
-<a name="l00486"></a>00486
-<a name="l00490"></a><a class="code" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452">00490</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452" title="Enable or disable image smooth filter.">Image::SetSmooth</a>(<span class="keywordtype">bool</span> Smooth)
-<a name="l00491"></a>00491 {
-<a name="l00492"></a>00492 <span class="keywordflow">if</span> (Smooth != myIsSmooth)
-<a name="l00493"></a>00493 {
-<a name="l00494"></a>00494 myIsSmooth = Smooth;
-<a name="l00495"></a>00495
-<a name="l00496"></a>00496 <span class="keywordflow">if</span> (myTexture)
-<a name="l00497"></a>00497 {
-<a name="l00498"></a>00498 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00499"></a>00499 priv::GraphicsContext Ctx;
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 GLint PreviousTexture;
-<a name="l00502"></a>00502 GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &amp;PreviousTexture));
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00505"></a>00505 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
-<a name="l00506"></a>00506 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
-<a name="l00507"></a>00507
-<a name="l00508"></a>00508 GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-<a name="l00509"></a>00509 }
-<a name="l00510"></a>00510 }
-<a name="l00511"></a>00511 }
-<a name="l00512"></a>00512
-<a name="l00513"></a>00513
-<a name="l00517"></a><a class="code" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7">00517</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">Image::GetWidth</a>()<span class="keyword"> const</span>
-<a name="l00518"></a>00518 <span class="keyword"></span>{
-<a name="l00519"></a>00519 <span class="keywordflow">return</span> myWidth;
-<a name="l00520"></a>00520 }
-<a name="l00521"></a>00521
-<a name="l00522"></a>00522
-<a name="l00526"></a><a class="code" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89">00526</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">Image::GetHeight</a>()<span class="keyword"> const</span>
-<a name="l00527"></a>00527 <span class="keyword"></span>{
-<a name="l00528"></a>00528 <span class="keywordflow">return</span> myHeight;
-<a name="l00529"></a>00529 }
-<a name="l00530"></a>00530
-<a name="l00531"></a>00531
-<a name="l00535"></a><a class="code" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3">00535</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3" title="Tells whether the smooth filtering is enabled or not.">Image::IsSmooth</a>()<span class="keyword"> const</span>
-<a name="l00536"></a>00536 <span class="keyword"></span>{
-<a name="l00537"></a>00537 <span class="keywordflow">return</span> myIsSmooth;
-<a name="l00538"></a>00538 }
-<a name="l00539"></a>00539
-<a name="l00540"></a>00540
-<a name="l00545"></a><a class="code" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56">00545</a> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> <a class="code" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56" title="Convert a subrect expressed in pixels, into float texture coordinates.">Image::GetTexCoords</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a>)<span class="keyword"> const</span>
-<a name="l00546"></a>00546 <span class="keyword"></span>{
-<a name="l00547"></a>00547 <span class="keywordtype">float</span> Width = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myTextureWidth);
-<a name="l00548"></a>00548 <span class="keywordtype">float</span> Height = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myTextureHeight);
-<a name="l00549"></a>00549
-<a name="l00550"></a>00550 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>(Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> / Width,
-<a name="l00551"></a>00551 Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> / Height,
-<a name="l00552"></a>00552 Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> / Width,
-<a name="l00553"></a>00553 Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> / Height);
-<a name="l00554"></a>00554 }
-<a name="l00555"></a>00555
-<a name="l00556"></a>00556
-<a name="l00560"></a><a class="code" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488">00560</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488" title="Get a valid texture size according to hardware support.">Image::GetValidTextureSize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Size)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00563"></a>00563 priv::GraphicsContext Ctx;
-<a name="l00564"></a>00564
-<a name="l00565"></a>00565 <span class="keywordflow">if</span> (glewIsSupported(<span class="stringliteral">"GL_ARB_texture_non_power_of_two"</span>) != 0)
-<a name="l00566"></a>00566 {
-<a name="l00567"></a>00567 <span class="comment">// If hardware supports NPOT textures, then just return the unmodified size</span>
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> Size;
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570 <span class="keywordflow">else</span>
-<a name="l00571"></a>00571 {
-<a name="l00572"></a>00572 <span class="comment">// If hardware doesn't support NPOT textures, we calculate the nearest power of two</span>
-<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PowerOfTwo = 1;
-<a name="l00574"></a>00574 <span class="keywordflow">while</span> (PowerOfTwo &lt; Size)
-<a name="l00575"></a>00575 PowerOfTwo *= 2;
-<a name="l00576"></a>00576
-<a name="l00577"></a>00577 <span class="keywordflow">return</span> PowerOfTwo;
-<a name="l00578"></a>00578 }
-<a name="l00579"></a>00579 }
-<a name="l00580"></a>00580
-<a name="l00581"></a>00581
-<a name="l00585"></a><a class="code" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3">00585</a> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; <a class="code" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3" title="Assignment operator.">Image::operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Other)
-<a name="l00586"></a>00586 {
-<a name="l00587"></a>00587 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> Temp(Other);
-<a name="l00588"></a>00588
-<a name="l00589"></a>00589 std::swap(myWidth, Temp.<a class="code" href="classsf_1_1Image.htm#924ed57a1565f1248a4411e2be7e23e2" title="Image width.">myWidth</a>);
-<a name="l00590"></a>00590 std::swap(myHeight, Temp.<a class="code" href="classsf_1_1Image.htm#ceef290985323875724673f5fdc2f6d0" title="Image Height.">myHeight</a>);
-<a name="l00591"></a>00591 std::swap(myTextureWidth, Temp.<a class="code" href="classsf_1_1Image.htm#57135fd6e5145ba79934aa4864f6bcf1" title="Actual texture width (can be greater than image width because of padding).">myTextureWidth</a>);
-<a name="l00592"></a>00592 std::swap(myTextureHeight, Temp.<a class="code" href="classsf_1_1Image.htm#5dbacc7c4665b2af3c52d8edf806ae59" title="Actual texture height (can be greater than image height because of padding).">myTextureHeight</a>);
-<a name="l00593"></a>00593 std::swap(myTexture, Temp.<a class="code" href="classsf_1_1Image.htm#dc2b7c22a8d938976c71a071fb93f0ba" title="Internal texture identifier.">myTexture</a>);
-<a name="l00594"></a>00594 std::swap(myIsSmooth, Temp.<a class="code" href="classsf_1_1Image.htm#fb002131ec00234570991c91da29c36c" title="Status of the smooth filter.">myIsSmooth</a>);
-<a name="l00595"></a>00595 std::swap(myNeedArrayUpdate, Temp.<a class="code" href="classsf_1_1Image.htm#27bac2a5b153422015f55c68a884d902" title="Status of synchronization between pixels in central memory and the internal texture...">myNeedArrayUpdate</a>);
-<a name="l00596"></a>00596 std::swap(myNeedTextureUpdate, Temp.<a class="code" href="classsf_1_1Image.htm#76172467f76c81f3e5a79c9babe82189" title="Status of synchronization between pixels in central memory and the internal texture...">myNeedTextureUpdate</a>);
-<a name="l00597"></a>00597 myPixels.swap(Temp.<a class="code" href="classsf_1_1Image.htm#635da47010c1cf996389974e3618452f" title="Pixels of the image.">myPixels</a>);
-<a name="l00598"></a>00598
-<a name="l00599"></a>00599 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00600"></a>00600 }
-<a name="l00601"></a>00601
-<a name="l00602"></a>00602
-<a name="l00606"></a>00606 <span class="keywordtype">bool</span> Image::CreateTexture()
-<a name="l00607"></a>00607 {
-<a name="l00608"></a>00608 <span class="comment">// Check if texture parameters are valid before creating it</span>
-<a name="l00609"></a>00609 <span class="keywordflow">if</span> (!myWidth || !myHeight)
-<a name="l00610"></a>00610 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00611"></a>00611
-<a name="l00612"></a>00612 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00613"></a>00613 priv::GraphicsContext Ctx;
-<a name="l00614"></a>00614
-<a name="l00615"></a>00615 <span class="comment">// Adjust internal texture dimensions depending on NPOT textures support</span>
-<a name="l00616"></a>00616 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> TextureWidth = <a class="code" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488" title="Get a valid texture size according to hardware support.">GetValidTextureSize</a>(myWidth);
-<a name="l00617"></a>00617 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> TextureHeight = <a class="code" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488" title="Get a valid texture size according to hardware support.">GetValidTextureSize</a>(myHeight);
-<a name="l00618"></a>00618
-<a name="l00619"></a>00619 <span class="comment">// Check the maximum texture size</span>
-<a name="l00620"></a>00620 GLint MaxSize;
-<a name="l00621"></a>00621 GLCheck(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &amp;MaxSize));
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> ((TextureWidth &gt; static_cast&lt;unsigned int&gt;(MaxSize)) || (TextureHeight &gt; static_cast&lt;unsigned int&gt;(MaxSize)))
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create image, its internal size is too high ("</span> &lt;&lt; TextureWidth &lt;&lt; <span class="stringliteral">"x"</span> &lt;&lt; TextureHeight &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00625"></a>00625 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00626"></a>00626 }
-<a name="l00627"></a>00627
-<a name="l00628"></a>00628 <span class="comment">// Destroy the previous OpenGL texture if it already exists with another size</span>
-<a name="l00629"></a>00629 <span class="keywordflow">if</span> ((TextureWidth != myTextureWidth) || (TextureHeight != myTextureHeight))
-<a name="l00630"></a>00630 {
-<a name="l00631"></a>00631 DestroyTexture();
-<a name="l00632"></a>00632 myTextureWidth = TextureWidth;
-<a name="l00633"></a>00633 myTextureHeight = TextureHeight;
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635
-<a name="l00636"></a>00636 <span class="comment">// Create the OpenGL texture</span>
-<a name="l00637"></a>00637 <span class="keywordflow">if</span> (!myTexture)
-<a name="l00638"></a>00638 {
-<a name="l00639"></a>00639 GLint PreviousTexture;
-<a name="l00640"></a>00640 GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &amp;PreviousTexture));
-<a name="l00641"></a>00641
-<a name="l00642"></a>00642 GLuint Texture = 0;
-<a name="l00643"></a>00643 GLCheck(glGenTextures(1, &amp;Texture));
-<a name="l00644"></a>00644 GLCheck(glBindTexture(GL_TEXTURE_2D, Texture));
-<a name="l00645"></a>00645 GLCheck(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, myTextureWidth, myTextureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL));
-<a name="l00646"></a>00646 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP));
-<a name="l00647"></a>00647 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP));
-<a name="l00648"></a>00648 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
-<a name="l00649"></a>00649 GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
-<a name="l00650"></a>00650 myTexture = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(Texture);
-<a name="l00651"></a>00651
-<a name="l00652"></a>00652 GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-<a name="l00653"></a>00653 }
-<a name="l00654"></a>00654
-<a name="l00655"></a>00655 myNeedTextureUpdate = <span class="keyword">true</span>;
-<a name="l00656"></a>00656
-<a name="l00657"></a>00657 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00658"></a>00658 }
-<a name="l00659"></a>00659
-<a name="l00660"></a>00660
-<a name="l00665"></a>00665 <span class="keywordtype">void</span> Image::EnsureTextureUpdate()<span class="keyword"> const</span>
-<a name="l00666"></a>00666 <span class="keyword"></span>{
-<a name="l00667"></a>00667 <span class="keywordflow">if</span> (myNeedTextureUpdate)
-<a name="l00668"></a>00668 {
-<a name="l00669"></a>00669 <span class="comment">// Copy the pixels</span>
-<a name="l00670"></a>00670 <span class="keywordflow">if</span> (myTexture &amp;&amp; !myPixels.empty())
-<a name="l00671"></a>00671 {
-<a name="l00672"></a>00672 GLint PreviousTexture;
-<a name="l00673"></a>00673 GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &amp;PreviousTexture));
-<a name="l00674"></a>00674
-<a name="l00675"></a>00675 <span class="comment">// Update the texture with the pixels array in RAM</span>
-<a name="l00676"></a>00676 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00677"></a>00677 GLCheck(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, myWidth, myHeight, GL_RGBA, GL_UNSIGNED_BYTE, &amp;myPixels[0]));
-<a name="l00678"></a>00678
-<a name="l00679"></a>00679 GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-<a name="l00680"></a>00680 }
-<a name="l00681"></a>00681
-<a name="l00682"></a>00682 myNeedTextureUpdate = <span class="keyword">false</span>;
-<a name="l00683"></a>00683 }
-<a name="l00684"></a>00684 }
-<a name="l00685"></a>00685
-<a name="l00686"></a>00686
-<a name="l00691"></a>00691 <span class="keywordtype">void</span> Image::EnsureArrayUpdate()<span class="keyword"> const</span>
-<a name="l00692"></a>00692 <span class="keyword"></span>{
-<a name="l00693"></a>00693 <span class="keywordflow">if</span> (myNeedArrayUpdate)
-<a name="l00694"></a>00694 {
-<a name="l00695"></a>00695 <span class="comment">// Save the previous texture</span>
-<a name="l00696"></a>00696 GLint PreviousTexture;
-<a name="l00697"></a>00697 GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &amp;PreviousTexture));
-<a name="l00698"></a>00698
-<a name="l00699"></a>00699 <span class="comment">// Resize the destination array of pixels</span>
-<a name="l00700"></a>00700 myPixels.resize(myWidth * myHeight);
-<a name="l00701"></a>00701
-<a name="l00702"></a>00702 <span class="keywordflow">if</span> ((myWidth == myTextureWidth) &amp;&amp; (myHeight == myTextureHeight))
-<a name="l00703"></a>00703 {
-<a name="l00704"></a>00704 <span class="comment">// Texture and array have the same size, we can use a direct copy</span>
-<a name="l00705"></a>00705
-<a name="l00706"></a>00706 <span class="comment">// Copy pixels from texture to array</span>
-<a name="l00707"></a>00707 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00708"></a>00708 GLCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &amp;myPixels[0]));
-<a name="l00709"></a>00709 }
-<a name="l00710"></a>00710 <span class="keywordflow">else</span>
-<a name="l00711"></a>00711 {
-<a name="l00712"></a>00712 <span class="comment">// Texture and array don't have the same size, we have to use a slower algorithm</span>
-<a name="l00713"></a>00713
-<a name="l00714"></a>00714 <span class="comment">// All the pixels will first be copied to a temporary array</span>
-<a name="l00715"></a>00715 std::vector&lt;Color&gt; AllPixels(myTextureWidth * myTextureHeight);
-<a name="l00716"></a>00716 GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
-<a name="l00717"></a>00717 GLCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &amp;AllPixels[0]));
-<a name="l00718"></a>00718
-<a name="l00719"></a>00719 <span class="comment">// The we copy the useful pixels from the temporary array to the final one</span>
-<a name="l00720"></a>00720 <span class="keyword">const</span> Color* Src = &amp;AllPixels[0];
-<a name="l00721"></a>00721 Color* Dst = &amp;myPixels[0];
-<a name="l00722"></a>00722 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; myHeight; ++i)
-<a name="l00723"></a>00723 {
-<a name="l00724"></a>00724 std::copy(Src, Src + myWidth, Dst);
-<a name="l00725"></a>00725 Src += myTextureWidth;
-<a name="l00726"></a>00726 Dst += myWidth;
-<a name="l00727"></a>00727 }
-<a name="l00728"></a>00728 }
-<a name="l00729"></a>00729
-<a name="l00730"></a>00730 <span class="comment">// Restore the previous texture</span>
-<a name="l00731"></a>00731 GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-<a name="l00732"></a>00732
-<a name="l00733"></a>00733 myNeedArrayUpdate = <span class="keyword">false</span>;
-<a name="l00734"></a>00734 }
-<a name="l00735"></a>00735 }
-<a name="l00736"></a>00736
-<a name="l00737"></a>00737
-<a name="l00741"></a>00741 <span class="keywordtype">void</span> Image::Reset()
-<a name="l00742"></a>00742 {
-<a name="l00743"></a>00743 DestroyTexture();
-<a name="l00744"></a>00744
-<a name="l00745"></a>00745 myWidth = 0;
-<a name="l00746"></a>00746 myHeight = 0;
-<a name="l00747"></a>00747 myTextureWidth = 0;
-<a name="l00748"></a>00748 myTextureHeight = 0;
-<a name="l00749"></a>00749 myTexture = 0;
-<a name="l00750"></a>00750 myIsSmooth = <span class="keyword">true</span>;
-<a name="l00751"></a>00751 myNeedTextureUpdate = <span class="keyword">false</span>;
-<a name="l00752"></a>00752 myNeedArrayUpdate = <span class="keyword">false</span>;
-<a name="l00753"></a>00753 myPixels.clear();
-<a name="l00754"></a>00754 }
-<a name="l00755"></a>00755
-<a name="l00756"></a>00756
-<a name="l00760"></a>00760 <span class="keywordtype">void</span> Image::DestroyTexture()
-<a name="l00761"></a>00761 {
-<a name="l00762"></a>00762 <span class="comment">// Destroy the internal texture</span>
-<a name="l00763"></a>00763 <span class="keywordflow">if</span> (myTexture)
-<a name="l00764"></a>00764 {
-<a name="l00765"></a>00765 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00766"></a>00766 priv::GraphicsContext Ctx;
-<a name="l00767"></a>00767
-<a name="l00768"></a>00768 GLuint Texture = <span class="keyword">static_cast&lt;</span>GLuint<span class="keyword">&gt;</span>(myTexture);
-<a name="l00769"></a>00769 GLCheck(glDeleteTextures(1, &amp;Texture));
-<a name="l00770"></a>00770 myTexture = 0;
-<a name="l00771"></a>00771 myNeedTextureUpdate = <span class="keyword">false</span>;
-<a name="l00772"></a>00772 myNeedArrayUpdate = <span class="keyword">false</span>;
-<a name="l00773"></a>00773 }
-<a name="l00774"></a>00774 }
-<a name="l00775"></a>00775
-<a name="l00776"></a>00776 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Image_8hpp-source.htm b/doc/html/Image_8hpp-source.htm
deleted file mode 100755
index 71d4e35..0000000
--- a/doc/html/Image_8hpp-source.htm
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Image.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_IMAGE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_IMAGE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>RenderWindow;
-<a name="l00041"></a>00041
-<a name="l00046"></a><a class="code" href="classsf_1_1Image.htm">00046</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>&lt;Image&gt;
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">public</span> :
-<a name="l00049"></a>00049
-<a name="l00054"></a>00054 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>();
-<a name="l00055"></a>00055
-<a name="l00062"></a>00062 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Copy);
-<a name="l00063"></a>00063
-<a name="l00072"></a>00072 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0, 255));
-<a name="l00073"></a>00073
-<a name="l00082"></a>00082 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Data);
-<a name="l00083"></a>00083
-<a name="l00088"></a>00088 ~<a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>();
-<a name="l00089"></a>00089
-<a name="l00098"></a>00098 <span class="keywordtype">bool</span> LoadFromFile(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00099"></a>00099
-<a name="l00109"></a>00109 <span class="keywordtype">bool</span> LoadFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00110"></a>00110
-<a name="l00121"></a>00121 <span class="keywordtype">bool</span> LoadFromPixels(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Data);
-<a name="l00122"></a>00122
-<a name="l00131"></a>00131 <span class="keywordtype">bool</span> SaveToFile(<span class="keyword">const</span> std::string&amp; Filename) <span class="keyword">const</span>;
-<a name="l00132"></a>00132
-<a name="l00143"></a>00143 <span class="keywordtype">bool</span> Create(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0, 255));
-<a name="l00144"></a>00144
-<a name="l00152"></a>00152 <span class="keywordtype">void</span> CreateMaskFromColor(<a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> ColorKey, Uint8 Alpha = 0);
-<a name="l00153"></a>00153
-<a name="l00166"></a>00166 <span class="keywordtype">void</span> Copy(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Source, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DestX, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DestY, <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SourceRect = <a class="code" href="classsf_1_1Rect.htm">IntRect</a>(0, 0, 0, 0), <span class="keywordtype">bool</span> ApplyAlpha = <span class="keyword">false</span>);
-<a name="l00167"></a>00167
-<a name="l00178"></a>00178 <span class="keywordtype">bool</span> CopyScreen(<a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>&amp; <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>, <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SourceRect = <a class="code" href="classsf_1_1Rect.htm">IntRect</a>(0, 0, 0, 0));
-<a name="l00179"></a>00179
-<a name="l00188"></a>00188 <span class="keywordtype">void</span> SetPixel(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col);
-<a name="l00189"></a>00189
-<a name="l00199"></a>00199 <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; GetPixel(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y) <span class="keyword">const</span>;
-<a name="l00200"></a>00200
-<a name="l00209"></a>00209 <span class="keyword">const</span> Uint8* GetPixelsPtr() <span class="keyword">const</span>;
-<a name="l00210"></a>00210
-<a name="l00215"></a>00215 <span class="keywordtype">void</span> Bind() <span class="keyword">const</span>;
-<a name="l00216"></a>00216
-<a name="l00224"></a>00224 <span class="keywordtype">void</span> SetSmooth(<span class="keywordtype">bool</span> Smooth);
-<a name="l00225"></a>00225
-<a name="l00232"></a>00232 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetWidth() <span class="keyword">const</span>;
-<a name="l00233"></a>00233
-<a name="l00240"></a>00240 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetHeight() <span class="keyword">const</span>;
-<a name="l00241"></a>00241
-<a name="l00248"></a>00248 <span class="keywordtype">bool</span> IsSmooth() <span class="keyword">const</span>;
-<a name="l00249"></a>00249
-<a name="l00259"></a>00259 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> GetTexCoords(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a>) <span class="keyword">const</span>;
-<a name="l00260"></a>00260
-<a name="l00269"></a>00269 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetValidTextureSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Size);
-<a name="l00270"></a>00270
-<a name="l00279"></a>00279 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; operator =(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Other);
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 <span class="keyword">private</span> :
-<a name="l00282"></a>00282
-<a name="l00289"></a>00289 <span class="keywordtype">bool</span> CreateTexture();
-<a name="l00290"></a>00290
-<a name="l00295"></a>00295 <span class="keywordtype">void</span> EnsureTextureUpdate() <span class="keyword">const</span>;
-<a name="l00296"></a>00296
-<a name="l00301"></a>00301 <span class="keywordtype">void</span> EnsureArrayUpdate() <span class="keyword">const</span>;
-<a name="l00302"></a>00302
-<a name="l00307"></a>00307 <span class="keywordtype">void</span> Reset();
-<a name="l00308"></a>00308
-<a name="l00313"></a>00313 <span class="keywordtype">void</span> DestroyTexture();
-<a name="l00314"></a>00314
-<a name="l00316"></a>00316 <span class="comment">// Member data</span>
-<a name="l00318"></a>00318 <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myWidth;
-<a name="l00319"></a>00319 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myHeight;
-<a name="l00320"></a>00320 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myTextureWidth;
-<a name="l00321"></a>00321 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myTextureHeight;
-<a name="l00322"></a>00322 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myTexture;
-<a name="l00323"></a>00323 <span class="keywordtype">bool</span> myIsSmooth;
-<a name="l00324"></a>00324 <span class="keyword">mutable</span> std::vector&lt;Color&gt; myPixels;
-<a name="l00325"></a>00325 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> myNeedTextureUpdate;
-<a name="l00326"></a>00326 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> myNeedArrayUpdate;
-<a name="l00327"></a>00327 };
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 } <span class="comment">// namespace sf</span>
-<a name="l00330"></a>00330
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 <span class="preprocessor">#endif // SFML_IMAGE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Input_8cpp-source.htm b/doc/html/Input_8cpp-source.htm
deleted file mode 100755
index 0d6327c..0000000
--- a/doc/html/Input_8cpp-source.htm
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Input.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Input.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00036"></a><a class="code" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f">00036</a> <a class="code" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f" title="Default constructor.">Input::Input</a>() :
-<a name="l00037"></a>00037 myMouseX(0),
-<a name="l00038"></a>00038 myMouseY(0)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 ResetStates();
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00047"></a><a class="code" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a">00047</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a" title="Get the state of a key.">Input::IsKeyDown</a>(<a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> KeyCode)<span class="keyword"> const</span>
-<a name="l00048"></a>00048 <span class="keyword"></span>{
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> myKeys[KeyCode];
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00056"></a><a class="code" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea">00056</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea" title="Get the state of a mouse button.">Input::IsMouseButtonDown</a>(Mouse::Button Button)<span class="keyword"> const</span>
-<a name="l00057"></a>00057 <span class="keyword"></span>{
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> myMouseButtons[Button];
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00065"></a><a class="code" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08">00065</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08" title="Get the state of a joystick button.">Input::IsJoystickButtonDown</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoyId, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Button)<span class="keyword"> const</span>
-<a name="l00066"></a>00066 <span class="keyword"></span>{
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((JoyId &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>) &amp;&amp; (Button &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>))
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> myJoystickButtons[JoyId][Button];
-<a name="l00069"></a>00069 <span class="keywordflow">else</span>
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00077"></a><a class="code" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3">00077</a> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3" title="Get the mouse X position.">Input::GetMouseX</a>()<span class="keyword"> const</span>
-<a name="l00078"></a>00078 <span class="keyword"></span>{
-<a name="l00079"></a>00079 <span class="keywordflow">return</span> myMouseX;
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082
-<a name="l00086"></a><a class="code" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796">00086</a> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796" title="Get the mouse Y position.">Input::GetMouseY</a>()<span class="keyword"> const</span>
-<a name="l00087"></a>00087 <span class="keyword"></span>{
-<a name="l00088"></a>00088 <span class="keywordflow">return</span> myMouseY;
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091
-<a name="l00095"></a><a class="code" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896">00095</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896" title="Get a joystick axis position.">Input::GetJoystickAxis</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoyId, Joy::Axis Axis)<span class="keyword"> const</span>
-<a name="l00096"></a>00096 <span class="keyword"></span>{
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (JoyId &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>)
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> myJoystickAxis[JoyId][Axis];
-<a name="l00099"></a>00099 <span class="keywordflow">else</span>
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> 0.f;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> Input::OnEvent(<span class="keyword">const</span> <a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived)
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 <span class="keywordflow">switch</span> (EventReceived.<a class="code" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65" title="Type of the event.">Type</a>)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="comment">// Key events</span>
-<a name="l00112"></a>00112 <span class="keywordflow">case</span> Event::KeyPressed : myKeys[EventReceived.<a class="code" href="classsf_1_1Event.htm#529227c18c1530068dafd241da7b0af9">Key</a>.Code] = <span class="keyword">true</span>; <span class="keywordflow">break</span>;
-<a name="l00113"></a>00113 <span class="keywordflow">case</span> Event::KeyReleased : myKeys[EventReceived.<a class="code" href="classsf_1_1Event.htm#529227c18c1530068dafd241da7b0af9">Key</a>.Code] = <span class="keyword">false</span>; <span class="keywordflow">break</span>;
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="comment">// Mouse event</span>
-<a name="l00116"></a>00116 <span class="keywordflow">case</span> Event::MouseButtonPressed : myMouseButtons[EventReceived.<a class="code" href="classsf_1_1Event.htm#bcd104440e0e43647d8f0ba49a593210">MouseButton</a>.Button] = <span class="keyword">true</span>; <span class="keywordflow">break</span>;
-<a name="l00117"></a>00117 <span class="keywordflow">case</span> Event::MouseButtonReleased : myMouseButtons[EventReceived.<a class="code" href="classsf_1_1Event.htm#bcd104440e0e43647d8f0ba49a593210">MouseButton</a>.Button] = <span class="keyword">false</span>; <span class="keywordflow">break</span>;
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">// Mouse move event</span>
-<a name="l00120"></a>00120 <span class="keywordflow">case</span> Event::MouseMoved :
-<a name="l00121"></a>00121 myMouseX = EventReceived.<a class="code" href="classsf_1_1Event.htm#0ac5a0cd79bea16e374023f18b8d39db">MouseMove</a>.X;
-<a name="l00122"></a>00122 myMouseY = EventReceived.<a class="code" href="classsf_1_1Event.htm#0ac5a0cd79bea16e374023f18b8d39db">MouseMove</a>.Y;
-<a name="l00123"></a>00123 <span class="keywordflow">break</span>;
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="comment">// Joystick button events</span>
-<a name="l00126"></a>00126 <span class="keywordflow">case</span> Event::JoyButtonPressed : myJoystickButtons[EventReceived.<a class="code" href="classsf_1_1Event.htm#d39651df3634e2bcdc4c567933055464">JoyButton</a>.JoystickId][EventReceived.<a class="code" href="classsf_1_1Event.htm#d39651df3634e2bcdc4c567933055464">JoyButton</a>.Button] = <span class="keyword">true</span>; <span class="keywordflow">break</span>;
-<a name="l00127"></a>00127 <span class="keywordflow">case</span> Event::JoyButtonReleased : myJoystickButtons[EventReceived.<a class="code" href="classsf_1_1Event.htm#d39651df3634e2bcdc4c567933055464">JoyButton</a>.JoystickId][EventReceived.<a class="code" href="classsf_1_1Event.htm#d39651df3634e2bcdc4c567933055464">JoyButton</a>.Button] = <span class="keyword">false</span>; <span class="keywordflow">break</span>;
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// Joystick move event</span>
-<a name="l00130"></a>00130 <span class="keywordflow">case</span> Event::JoyMoved :
-<a name="l00131"></a>00131 myJoystickAxis[EventReceived.<a class="code" href="classsf_1_1Event.htm#7225b7733f73845dc8d07af7c8ecfb22">JoyMove</a>.JoystickId][EventReceived.<a class="code" href="classsf_1_1Event.htm#7225b7733f73845dc8d07af7c8ecfb22">JoyMove</a>.Axis] = EventReceived.<a class="code" href="classsf_1_1Event.htm#7225b7733f73845dc8d07af7c8ecfb22">JoyMove</a>.Position;
-<a name="l00132"></a>00132 <span class="keywordflow">break</span>;
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">// Lost focus event : we must reset all persistent states</span>
-<a name="l00135"></a>00135 <span class="keywordflow">case</span> Event::LostFocus :
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 ResetStates();
-<a name="l00138"></a>00138 <span class="keywordflow">break</span>;
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keywordflow">default</span> :
-<a name="l00142"></a>00142 <span class="keywordflow">break</span>;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146
-<a name="l00150"></a>00150 <span class="keywordtype">void</span> Input::ResetStates()
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Key::Count; ++i)
-<a name="l00153"></a>00153 myKeys[i] = <span class="keyword">false</span>;
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Mouse::ButtonCount; ++i)
-<a name="l00156"></a>00156 myMouseButtons[i] = <span class="keyword">false</span>;
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>; ++i)
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>; ++j)
-<a name="l00161"></a>00161 myJoystickButtons[i][j] = <span class="keyword">false</span>;
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; Joy::AxisCount; ++j)
-<a name="l00164"></a>00164 myJoystickAxis[i][j] = 0.f;
-<a name="l00165"></a>00165 myJoystickAxis[i][Joy::AxisPOV] = -1.f;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Input_8hpp-source.htm b/doc/html/Input_8hpp-source.htm
deleted file mode 100755
index 27a3afb..0000000
--- a/doc/html/Input_8hpp-source.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Input.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_INPUT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_INPUT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Window/WindowListener.hpp&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00044"></a><a class="code" href="classsf_1_1Input.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1WindowListener.htm" title="Base class for classes that want to receive events from a window (for internal use...">WindowListener</a>, <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00052"></a>00052 <a class="code" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a>();
-<a name="l00053"></a>00053
-<a name="l00062"></a>00062 <span class="keywordtype">bool</span> IsKeyDown(<a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> KeyCode) <span class="keyword">const</span>;
-<a name="l00063"></a>00063
-<a name="l00072"></a>00072 <span class="keywordtype">bool</span> IsMouseButtonDown(Mouse::Button Button) <span class="keyword">const</span>;
-<a name="l00073"></a>00073
-<a name="l00083"></a>00083 <span class="keywordtype">bool</span> IsJoystickButtonDown(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoyId, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Button) <span class="keyword">const</span>;
-<a name="l00084"></a>00084
-<a name="l00091"></a>00091 <span class="keywordtype">int</span> GetMouseX() <span class="keyword">const</span>;
-<a name="l00092"></a>00092
-<a name="l00099"></a>00099 <span class="keywordtype">int</span> GetMouseY() <span class="keyword">const</span>;
-<a name="l00100"></a>00100
-<a name="l00110"></a>00110 <span class="keywordtype">float</span> GetJoystickAxis(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> JoyId, Joy::Axis Axis) <span class="keyword">const</span>;
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="keyword">private</span> :
-<a name="l00113"></a>00113
-<a name="l00118"></a>00118 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEvent(<span class="keyword">const</span> <a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived);
-<a name="l00119"></a>00119
-<a name="l00124"></a>00124 <span class="keywordtype">void</span> ResetStates();
-<a name="l00125"></a>00125
-<a name="l00127"></a>00127 <span class="comment">// Member data</span>
-<a name="l00129"></a>00129 <span class="comment"></span> <span class="keywordtype">bool</span> myKeys[Key::Count];
-<a name="l00130"></a>00130 <span class="keywordtype">bool</span> myMouseButtons[Mouse::ButtonCount];
-<a name="l00131"></a>00131 <span class="keywordtype">int</span> myMouseX;
-<a name="l00132"></a>00132 <span class="keywordtype">int</span> myMouseY;
-<a name="l00133"></a>00133 <span class="keywordtype">bool</span> myJoystickButtons[<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>][<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>];
-<a name="l00134"></a>00134 <span class="keywordtype">float</span> myJoystickAxis[<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>][Joy::AxisCount];
-<a name="l00135"></a>00135 };
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 } <span class="comment">// namespace sf</span>
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="preprocessor">#endif // SFML_INPUT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Joystick_8hpp-source.htm b/doc/html/Joystick_8hpp-source.htm
deleted file mode 100755
index fe05391..0000000
--- a/doc/html/Joystick_8hpp-source.htm
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_JOYSTICK_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_JOYSTICK_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00042"></a>00042 <span class="keyword">struct </span>JoystickState
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 JoystickState()
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// Default value for axes</span>
-<a name="l00047"></a>00047 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Joy::AxisCount; ++i)
-<a name="l00048"></a>00048 Axis[i] = 0.f;
-<a name="l00049"></a>00049 Axis[Joy::AxisPOV] = -1.f;
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="comment">// Default value for buttons</span>
-<a name="l00052"></a>00052 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>; ++i)
-<a name="l00053"></a>00053 Buttons[i] = <span class="keyword">false</span>;
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="keywordtype">float</span> Axis[Joy::AxisCount];
-<a name="l00057"></a>00057 <span class="keywordtype">bool</span> Buttons[<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>];
-<a name="l00058"></a>00058 };
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 } <span class="comment">// namespace priv</span>
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 } <span class="comment">// namespace sf</span>
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span>
-<a name="l00067"></a>00067 <span class="preprocessor"> #include &lt;SFML/Window/Win32/Joystick.hpp&gt;</span>
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>
-<a name="l00071"></a>00071 <span class="preprocessor"> #include &lt;SFML/Window/Linux/Joystick.hpp&gt;</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="preprocessor">#elif defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>
-<a name="l00075"></a>00075 <span class="preprocessor"> #include &lt;SFML/Window/Cocoa/Joystick.hpp&gt;</span>
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="preprocessor">#endif</span>
-<a name="l00078"></a>00078 <span class="preprocessor"></span>
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="preprocessor">#endif // SFML_JOYSTICK_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Listener_8cpp-source.htm b/doc/html/Listener_8cpp-source.htm
deleted file mode 100755
index a9b3539..0000000
--- a/doc/html/Listener_8cpp-source.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Listener.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/Listener.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a><a class="code" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84">00037</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84" title="Change the global volume of all the sounds.">Listener::SetGlobalVolume</a>(<span class="keywordtype">float</span> Volume)
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 ALCheck(alListenerf(AL_GAIN, Volume * 0.01f));
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00046"></a><a class="code" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19">00046</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19" title="Get the current value of the global volume of all the sounds.">Listener::GetGlobalVolume</a>()
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keywordtype">float</span> Volume = 0.f;
-<a name="l00049"></a>00049 ALCheck(alGetListenerf(AL_GAIN, &amp;Volume));
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> Volume;
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a><a class="code" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48">00058</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48" title="Change the position of the listener (take 3 values).">Listener::SetPosition</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 ALCheck(alListener3f(AL_POSITION, X, Y, Z));
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a><a class="code" href="classsf_1_1Listener.htm#e461aa59bf5aa43eb3e1fcf7cb2dbfd0">00067</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48" title="Change the position of the listener (take 3 values).">Listener::SetPosition</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <a class="code" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48" title="Change the position of the listener (take 3 values).">SetPosition</a>(Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a><a class="code" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251">00076</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> <a class="code" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251" title="Get the current position of the listener.">Listener::GetPosition</a>()
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> Position;
-<a name="l00079"></a>00079 ALCheck(alGetListener3f(AL_POSITION, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>));
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> Position;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00089"></a><a class="code" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf">00089</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf" title="Change the orientation of the listener (the point he must look at) (take 3 values)...">Listener::SetTarget</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keywordtype">float</span> Orientation[] = {X, Y, Z, 0.f, 1.f, 0.f};
-<a name="l00092"></a>00092 ALCheck(alListenerfv(AL_ORIENTATION, Orientation));
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00100"></a><a class="code" href="classsf_1_1Listener.htm#e8191c90eb8d96e8d3cc578850c91b02">00100</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf" title="Change the orientation of the listener (the point he must look at) (take 3 values)...">Listener::SetTarget</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Target)
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 <a class="code" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf" title="Change the orientation of the listener (the point he must look at) (take 3 values)...">SetTarget</a>(Target.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Target.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Target.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>);
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105
-<a name="l00110"></a><a class="code" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a">00110</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> <a class="code" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a" title="Get the current orientation of the listener (the point he&amp;#39;s looking at).">Listener::GetTarget</a>()
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordtype">float</span> Orientation[6];
-<a name="l00113"></a>00113 ALCheck(alGetListenerfv(AL_ORIENTATION, Orientation));
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>(Orientation[0], Orientation[1], Orientation[2]);
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Listener_8hpp-source.htm b/doc/html/Listener_8hpp-source.htm
deleted file mode 100755
index 56a7a16..0000000
--- a/doc/html/Listener_8hpp-source.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Listener.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_LISTENER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_LISTENER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Vector3.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00042"></a><a class="code" href="classsf_1_1Listener.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Listener.htm" title="Listener is a global interface for defining the audio listener properties ; the audio...">Listener</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keywordtype">void</span> SetGlobalVolume(<span class="keywordtype">float</span> Volume);
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> <span class="keywordtype">float</span> GetGlobalVolume();
-<a name="l00062"></a>00062
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z);
-<a name="l00071"></a>00071
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keywordtype">void</span> SetPosition(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position);
-<a name="l00080"></a>00080
-<a name="l00087"></a>00087 <span class="keyword">static</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> GetPosition();
-<a name="l00088"></a>00088
-<a name="l00097"></a>00097 <span class="keyword">static</span> <span class="keywordtype">void</span> SetTarget(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z);
-<a name="l00098"></a>00098
-<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keywordtype">void</span> SetTarget(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Target);
-<a name="l00108"></a>00108
-<a name="l00116"></a>00116 <span class="keyword">static</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> GetTarget();
-<a name="l00117"></a>00117 };
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 } <span class="comment">// namespace sf</span>
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="preprocessor">#endif // SFML_LISTENER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Lock_8cpp-source.htm b/doc/html/Lock_8cpp-source.htm
deleted file mode 100755
index e395894..0000000
--- a/doc/html/Lock_8cpp-source.htm
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Lock.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Lock.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/System/Mutex.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a><a class="code" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857">00037</a> <a class="code" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857" title="Construct the lock with a target mutex (lock it).">Lock::Lock</a>(<a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>&amp; <a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>) :
-<a name="l00038"></a>00038 myMutex(Mutex)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 myMutex.<a class="code" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab" title="Lock the mutex.">Lock</a>();
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00047"></a><a class="code" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5">00047</a> <a class="code" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5" title="Destructor (unlocks the mutex).">Lock::~Lock</a>()
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 myMutex.<a class="code" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a" title="Unlock the mutex.">Unlock</a>();
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Lock_8hpp-source.htm b/doc/html/Lock_8hpp-source.htm
deleted file mode 100755
index f1211da..0000000
--- a/doc/html/Lock_8hpp-source.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Lock.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_LOCK_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_LOCK_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036 <span class="keyword">class </span>Mutex;
-<a name="l00037"></a>00037
-<a name="l00042"></a><a class="code" href="classsf_1_1Lock.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00052"></a>00052 <a class="code" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a>(<a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>&amp; <a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>);
-<a name="l00053"></a>00053
-<a name="l00058"></a>00058 ~<a class="code" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a>();
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">private</span> :
-<a name="l00061"></a>00061
-<a name="l00063"></a>00063 <span class="comment">// Member data</span>
-<a name="l00065"></a>00065 <span class="comment"></span> Mutex&amp; myMutex;
-<a name="l00066"></a>00066 };
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 } <span class="comment">// namespace sf</span>
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="preprocessor">#endif // SFML_LOCK_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Matrix3_8cpp-source.htm b/doc/html/Matrix3_8cpp-source.htm
deleted file mode 100755
index 1b62b2a..0000000
--- a/doc/html/Matrix3_8cpp-source.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Matrix3.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Matrix3.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00034"></a>00034 <span class="comment">// Static member data</span>
-<a name="l00036"></a>00036 <span class="comment"></span><span class="keyword">const</span> Matrix3 <a class="code" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a" title="Identity matrix.">Matrix3::Identity</a>(1, 0, 0,
-<a name="l00037"></a>00037 0, 1, 0,
-<a name="l00038"></a>00038 0, 0, 1);
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Matrix3_8hpp-source.htm b/doc/html/Matrix3_8hpp-source.htm
deleted file mode 100755
index 34cc5d9..0000000
--- a/doc/html/Matrix3_8hpp-source.htm
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Matrix3.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_MATRIX3_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_MATRIX3_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;math.h&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00042"></a><a class="code" href="classsf_1_1Matrix3.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00050"></a>00050 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>();
-<a name="l00051"></a>00051
-<a name="l00056"></a>00056 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>(<span class="keywordtype">float</span> a00, <span class="keywordtype">float</span> a01, <span class="keywordtype">float</span> a02,
-<a name="l00057"></a>00057 <span class="keywordtype">float</span> a10, <span class="keywordtype">float</span> a11, <span class="keywordtype">float</span> a12,
-<a name="l00058"></a>00058 <span class="keywordtype">float</span> a20, <span class="keywordtype">float</span> a21, <span class="keywordtype">float</span> a22);
-<a name="l00059"></a>00059
-<a name="l00069"></a>00069 <span class="keywordtype">void</span> SetFromTransformations(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Center, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Translation, <span class="keywordtype">float</span> Rotation, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale);
-<a name="l00070"></a>00070
-<a name="l00079"></a>00079 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Transform(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Point) <span class="keyword">const</span>;
-<a name="l00080"></a>00080
-<a name="l00087"></a>00087 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> GetInverse() <span class="keyword">const</span>;
-<a name="l00088"></a>00088
-<a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">float</span>* Get4x4Elements() <span class="keyword">const</span>;
-<a name="l00097"></a>00097
-<a name="l00107"></a>00107 <span class="keywordtype">float</span> operator ()(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Col) <span class="keyword">const</span>;
-<a name="l00108"></a>00108 <span class="keywordtype">float</span>&amp; operator ()(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Col);
-<a name="l00109"></a>00109
-<a name="l00118"></a>00118 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> operator *(<span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; Mat) <span class="keyword">const</span>;
-<a name="l00119"></a>00119
-<a name="l00128"></a>00128 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; operator *=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; Mat);
-<a name="l00129"></a>00129
-<a name="l00131"></a>00131 <span class="comment">// Static member data</span>
-<a name="l00133"></a><a class="code" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">00133</a> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> Identity;
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="keyword">private</span> :
-<a name="l00136"></a>00136
-<a name="l00138"></a>00138 <span class="comment">// Member data</span>
-<a name="l00140"></a>00140 <span class="comment"></span> <span class="keywordtype">float</span> myData[16];
-<a name="l00141"></a>00141 };
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="preprocessor">#include &lt;SFML/Graphics/Matrix3.inl&gt;</span>
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 } <span class="comment">// namespace sf</span>
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="preprocessor">#endif // SFML_MATRIX3_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Matrix3_8inl-source.htm b/doc/html/Matrix3_8inl-source.htm
deleted file mode 100755
index 41da5c4..0000000
--- a/doc/html/Matrix3_8inl-source.htm
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Matrix3.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFGE - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">inline</span> Matrix3::Matrix3()
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 myData[0] = 1.f; myData[4] = 0.f; myData[8] = 0.f; myData[12] = 0.f;
-<a name="l00032"></a>00032 myData[1] = 0.f; myData[5] = 1.f; myData[9] = 0.f; myData[13] = 0.f;
-<a name="l00033"></a>00033 myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
-<a name="l00034"></a>00034 myData[3] = 0.f; myData[7] = 0.f; myData[11] = 0.f; myData[15] = 1.f;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00041"></a>00041 <span class="keyword">inline</span> <a class="code" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c" title="Default constructor (builds an identity matrix).">Matrix3::Matrix3</a>(<span class="keywordtype">float</span> a00, <span class="keywordtype">float</span> a01, <span class="keywordtype">float</span> a02,
-<a name="l00042"></a>00042 <span class="keywordtype">float</span> a10, <span class="keywordtype">float</span> a11, <span class="keywordtype">float</span> a12,
-<a name="l00043"></a>00043 <span class="keywordtype">float</span> a20, <span class="keywordtype">float</span> a21, <span class="keywordtype">float</span> a22)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 myData[0] = a00; myData[4] = a01; myData[8] = 0.f; myData[12] = a02;
-<a name="l00046"></a>00046 myData[1] = a10; myData[5] = a11; myData[9] = 0.f; myData[13] = a12;
-<a name="l00047"></a>00047 myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
-<a name="l00048"></a>00048 myData[3] = a20; myData[7] = a21; myData[11] = 0.f; myData[15] = a22;
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00055"></a>00055 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d" title="Build a matrix from a set of transformations.">Matrix3::SetFromTransformations</a>(<span class="keyword">const</span> Vector2f&amp; Center, <span class="keyword">const</span> Vector2f&amp; Translation, <span class="keywordtype">float</span> Rotation, <span class="keyword">const</span> Vector2f&amp; Scale)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keywordtype">float</span> Angle = Rotation * 3.141592654f / 180.f;
-<a name="l00058"></a>00058 <span class="keywordtype">float</span> Cos = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(cos(Angle));
-<a name="l00059"></a>00059 <span class="keywordtype">float</span> Sin = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(sin(Angle));
-<a name="l00060"></a>00060 <span class="keywordtype">float</span> SxCos = Scale.x * Cos;
-<a name="l00061"></a>00061 <span class="keywordtype">float</span> SyCos = Scale.y * Cos;
-<a name="l00062"></a>00062 <span class="keywordtype">float</span> SxSin = Scale.x * Sin;
-<a name="l00063"></a>00063 <span class="keywordtype">float</span> SySin = Scale.y * Sin;
-<a name="l00064"></a>00064 <span class="keywordtype">float</span> Tx = -Center.x * SxCos - Center.y * SySin + Translation.x;
-<a name="l00065"></a>00065 <span class="keywordtype">float</span> Ty = Center.x * SxSin - Center.y * SyCos + Translation.y;
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 myData[0] = SxCos; myData[4] = SySin; myData[8] = 0.f; myData[12] = Tx;
-<a name="l00068"></a>00068 myData[1] = -SxSin; myData[5] = SyCos; myData[9] = 0.f; myData[13] = Ty;
-<a name="l00069"></a>00069 myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
-<a name="l00070"></a>00070 myData[3] = 0.f; myData[7] = 0.f; myData[11] = 0.f; myData[15] = 1.f;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00077"></a>00077 <span class="keyword">inline</span> Vector2f <a class="code" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151" title="Transform a point by the matrix.">Matrix3::Transform</a>(<span class="keyword">const</span> Vector2f&amp; Point)<span class="keyword"> const</span>
-<a name="l00078"></a>00078 <span class="keyword"></span>{
-<a name="l00079"></a>00079 <span class="keywordflow">return</span> Vector2f(myData[0] * Point.x + myData[4] * Point.y + myData[12],
-<a name="l00080"></a>00080 myData[1] * Point.x + myData[5] * Point.y + myData[13]);
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083
-<a name="l00087"></a>00087 <span class="keyword">inline</span> Matrix3 <a class="code" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e" title="Return the inverse of the matrix.">Matrix3::GetInverse</a>()<span class="keyword"> const</span>
-<a name="l00088"></a>00088 <span class="keyword"></span>{
-<a name="l00089"></a>00089 <span class="comment">// Compute the determinant</span>
-<a name="l00090"></a>00090 <span class="keywordtype">float</span> Det = myData[0] * (myData[15] * myData[5] - myData[7] * myData[13]) -
-<a name="l00091"></a>00091 myData[1] * (myData[15] * myData[4] - myData[7] * myData[12]) +
-<a name="l00092"></a>00092 myData[3] * (myData[13] * myData[4] - myData[5] * myData[12]);
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="comment">// Compute the inverse if determinant is not zero</span>
-<a name="l00095"></a>00095 <span class="keywordflow">if</span> ((Det &lt; -1E-7f) || (Det &gt; 1E-7f))
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c" title="Default constructor (builds an identity matrix).">Matrix3</a>( (myData[15] * myData[5] - myData[7] * myData[13]) / Det,
-<a name="l00098"></a>00098 -(myData[15] * myData[4] - myData[7] * myData[12]) / Det,
-<a name="l00099"></a>00099 (myData[13] * myData[4] - myData[5] * myData[12]) / Det,
-<a name="l00100"></a>00100 -(myData[15] * myData[1] - myData[3] * myData[13]) / Det,
-<a name="l00101"></a>00101 (myData[15] * myData[0] - myData[3] * myData[12]) / Det,
-<a name="l00102"></a>00102 -(myData[13] * myData[0] - myData[1] * myData[12]) / Det,
-<a name="l00103"></a>00103 (myData[7] * myData[1] - myData[3] * myData[5]) / Det,
-<a name="l00104"></a>00104 -(myData[7] * myData[0] - myData[3] * myData[4]) / Det,
-<a name="l00105"></a>00105 (myData[5] * myData[0] - myData[1] * myData[4]) / Det);
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">else</span>
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a" title="Identity matrix.">Identity</a>;
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00118"></a>00118 <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1" title="Return the elements of the matrix as a 4x4, in an array of 16 floats.">Matrix3::Get4x4Elements</a>()<span class="keyword"> const</span>
-<a name="l00119"></a>00119 <span class="keyword"></span>{
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> myData;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123
-<a name="l00127"></a>00127 <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8" title="Operator () overloads to access the matrix elements.">Matrix3::operator ()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Col)<span class="keyword"> const</span>
-<a name="l00128"></a>00128 <span class="keyword"></span>{
-<a name="l00129"></a>00129 <span class="keywordflow">switch</span> (Row + Col * 3)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">case</span> 0 : <span class="keywordflow">return</span> myData[0];
-<a name="l00132"></a>00132 <span class="keywordflow">case</span> 1 : <span class="keywordflow">return</span> myData[1];
-<a name="l00133"></a>00133 <span class="keywordflow">case</span> 2 : <span class="keywordflow">return</span> myData[3];
-<a name="l00134"></a>00134 <span class="keywordflow">case</span> 3 : <span class="keywordflow">return</span> myData[4];
-<a name="l00135"></a>00135 <span class="keywordflow">case</span> 4 : <span class="keywordflow">return</span> myData[5];
-<a name="l00136"></a>00136 <span class="keywordflow">case</span> 5 : <span class="keywordflow">return</span> myData[7];
-<a name="l00137"></a>00137 <span class="keywordflow">case</span> 6 : <span class="keywordflow">return</span> myData[12];
-<a name="l00138"></a>00138 <span class="keywordflow">case</span> 7 : <span class="keywordflow">return</span> myData[13];
-<a name="l00139"></a>00139 <span class="keywordflow">case</span> 8 : <span class="keywordflow">return</span> myData[15];
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keywordflow">default</span> : <span class="keywordflow">return</span> myData[0];
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 <span class="keyword">inline</span> <span class="keywordtype">float</span>&amp; <a class="code" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8" title="Operator () overloads to access the matrix elements.">Matrix3::operator ()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Col)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">switch</span> (Row + Col * 3)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keywordflow">case</span> 0 : <span class="keywordflow">return</span> myData[0];
-<a name="l00149"></a>00149 <span class="keywordflow">case</span> 1 : <span class="keywordflow">return</span> myData[1];
-<a name="l00150"></a>00150 <span class="keywordflow">case</span> 2 : <span class="keywordflow">return</span> myData[3];
-<a name="l00151"></a>00151 <span class="keywordflow">case</span> 3 : <span class="keywordflow">return</span> myData[4];
-<a name="l00152"></a>00152 <span class="keywordflow">case</span> 4 : <span class="keywordflow">return</span> myData[5];
-<a name="l00153"></a>00153 <span class="keywordflow">case</span> 5 : <span class="keywordflow">return</span> myData[7];
-<a name="l00154"></a>00154 <span class="keywordflow">case</span> 6 : <span class="keywordflow">return</span> myData[12];
-<a name="l00155"></a>00155 <span class="keywordflow">case</span> 7 : <span class="keywordflow">return</span> myData[13];
-<a name="l00156"></a>00156 <span class="keywordflow">case</span> 8 : <span class="keywordflow">return</span> myData[15];
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keywordflow">default</span> : <span class="keywordflow">return</span> myData[0];
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162
-<a name="l00166"></a>00166 <span class="keyword">inline</span> Matrix3 <a class="code" href="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28" title="Operator * overload to multiply two matrices.">Matrix3::operator *</a>(<span class="keyword">const</span> Matrix3&amp; Mat)<span class="keyword"> const</span>
-<a name="l00167"></a>00167 <span class="keyword"></span>{
-<a name="l00168"></a>00168 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c" title="Default constructor (builds an identity matrix).">Matrix3</a>(myData[0] * Mat.myData[0] + myData[4] * Mat.myData[1] + myData[12] * Mat.myData[3],
-<a name="l00169"></a>00169 myData[0] * Mat.myData[4] + myData[4] * Mat.myData[5] + myData[12] * Mat.myData[7],
-<a name="l00170"></a>00170 myData[0] * Mat.myData[12] + myData[4] * Mat.myData[13] + myData[12] * Mat.myData[15],
-<a name="l00171"></a>00171 myData[1] * Mat.myData[0] + myData[5] * Mat.myData[1] + myData[13] * Mat.myData[3],
-<a name="l00172"></a>00172 myData[1] * Mat.myData[4] + myData[5] * Mat.myData[5] + myData[13] * Mat.myData[7],
-<a name="l00173"></a>00173 myData[1] * Mat.myData[12] + myData[5] * Mat.myData[13] + myData[13] * Mat.myData[15],
-<a name="l00174"></a>00174 myData[3] * Mat.myData[0] + myData[7] * Mat.myData[1] + myData[15] * Mat.myData[3],
-<a name="l00175"></a>00175 myData[3] * Mat.myData[4] + myData[7] * Mat.myData[5] + myData[15] * Mat.myData[7],
-<a name="l00176"></a>00176 myData[3] * Mat.myData[12] + myData[7] * Mat.myData[13] + myData[15] * Mat.myData[15]);
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179
-<a name="l00183"></a>00183 <span class="keyword">inline</span> Matrix3&amp; <a class="code" href="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966" title="Operator *= overload to multiply-assign two matrices.">Matrix3::operator *=</a>(<span class="keyword">const</span> Matrix3&amp; Mat)
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 <span class="keywordflow">return</span> *<span class="keyword">this</span> = *<span class="keyword">this</span> * Mat;
-<a name="l00186"></a>00186 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Music_8cpp-source.htm b/doc/html/Music_8cpp-source.htm
deleted file mode 100755
index 21744a2..0000000
--- a/doc/html/Music_8cpp-source.htm
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Music.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/Music.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/SoundFile.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;fstream&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00040"></a><a class="code" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6">00040</a> <a class="code" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6" title="Construct the music with a buffer size.">Music::Music</a>(std::size_t BufferSize) :
-<a name="l00041"></a>00041 myFile (NULL),
-<a name="l00042"></a>00042 myDuration(0.f),
-<a name="l00043"></a>00043 mySamples (BufferSize)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048
-<a name="l00052"></a><a class="code" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b">00052</a> <a class="code" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b" title="Destructor.">Music::~Music</a>()
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="comment">// We must stop before destroying the file :)</span>
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">Stop</a>();
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keyword">delete</span> myFile;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db">00064</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db" title="Open a music file (doesn&amp;#39;t play it -- call Play() for that).">Music::OpenFromFile</a>(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="comment">// First stop the music if it was already running</span>
-<a name="l00067"></a>00067 <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">Stop</a>();
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="comment">// Create the sound file implementation, and open it in read mode</span>
-<a name="l00070"></a>00070 <span class="keyword">delete</span> myFile;
-<a name="l00071"></a>00071 myFile = priv::SoundFile::CreateRead(Filename);
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!myFile)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\" for reading"</span> &lt;&lt; std::endl;
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="comment">// Compute the duration</span>
-<a name="l00079"></a>00079 myDuration = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myFile-&gt;GetSamplesCount()) / myFile-&gt;GetSampleRate() / myFile-&gt;GetChannelsCount();
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="comment">// Initialize the stream</span>
-<a name="l00082"></a>00082 <a class="code" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793" title="Set the audio stream parameters, you must call it before Play().">Initialize</a>(myFile-&gt;GetChannelsCount(), myFile-&gt;GetSampleRate());
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087
-<a name="l00091"></a><a class="code" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017">00091</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017" title="Open a music file from memory (doesn&amp;#39;t play it -- call Play() for that).">Music::OpenFromMemory</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="comment">// First stop the music if it was already running</span>
-<a name="l00094"></a>00094 <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">Stop</a>();
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="comment">// Create the sound file implementation, and open it in read mode</span>
-<a name="l00097"></a>00097 <span class="keyword">delete</span> myFile;
-<a name="l00098"></a>00098 myFile = priv::SoundFile::CreateRead(Data, SizeInBytes);
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (!myFile)
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open music from memory for reading"</span> &lt;&lt; std::endl;
-<a name="l00102"></a>00102 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">// Compute the duration</span>
-<a name="l00106"></a>00106 myDuration = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myFile-&gt;GetSamplesCount()) / myFile-&gt;GetSampleRate();
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="comment">// Initialize the stream</span>
-<a name="l00109"></a>00109 <a class="code" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793" title="Set the audio stream parameters, you must call it before Play().">Initialize</a>(myFile-&gt;GetChannelsCount(), myFile-&gt;GetSampleRate());
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114
-<a name="l00118"></a>00118 <span class="keywordtype">bool</span> Music::OnStart()
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> myFile &amp;&amp; myFile-&gt;Restart();
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123
-<a name="l00127"></a>00127 <span class="keywordtype">bool</span> Music::OnGetData(SoundStream::Chunk&amp; Data)
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (myFile)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="comment">// Fill the chunk parameters</span>
-<a name="l00132"></a>00132 Data.Samples = &amp;mySamples[0];
-<a name="l00133"></a>00133 Data.NbSamples = myFile-&gt;Read(&amp;mySamples[0], mySamples.size());
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="comment">// Check if we have reached the end of the audio file</span>
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> Data.NbSamples == mySamples.size();
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <span class="keywordflow">else</span>
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a><a class="code" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50">00148</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50" title="Get the music duration.">Music::GetDuration</a>()<span class="keyword"> const</span>
-<a name="l00149"></a>00149 <span class="keyword"></span>{
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> myDuration;
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Music_8hpp-source.htm b/doc/html/Music_8hpp-source.htm
deleted file mode 100755
index 9ee4181..0000000
--- a/doc/html/Music_8hpp-source.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Music.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_MUSIC_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_MUSIC_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundStream.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>priv
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>SoundFile;
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00047"></a><a class="code" href="classsf_1_1Music.htm">00047</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a>
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keyword">public</span> :
-<a name="l00050"></a>00050
-<a name="l00058"></a>00058 <span class="keyword">explicit</span> <a class="code" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a>(std::size_t BufferSize = 44100);
-<a name="l00059"></a>00059
-<a name="l00064"></a>00064 ~<a class="code" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a>();
-<a name="l00065"></a>00065
-<a name="l00074"></a>00074 <span class="keywordtype">bool</span> OpenFromFile(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00075"></a>00075
-<a name="l00085"></a>00085 <span class="keywordtype">bool</span> OpenFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00086"></a>00086
-<a name="l00093"></a>00093 <span class="keywordtype">float</span> GetDuration() <span class="keyword">const</span>;
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="keyword">private</span> :
-<a name="l00096"></a>00096
-<a name="l00101"></a>00101 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnStart();
-<a name="l00102"></a>00102
-<a name="l00107"></a>00107 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnGetData(<a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm" title="Structure defining a chunk of audio data to stream.">Chunk</a>&amp; Data);
-<a name="l00108"></a>00108
-<a name="l00110"></a>00110 <span class="comment">// Member data</span>
-<a name="l00112"></a>00112 <span class="comment"></span> priv::SoundFile* myFile;
-<a name="l00113"></a>00113 <span class="keywordtype">float</span> myDuration;
-<a name="l00114"></a>00114 std::vector&lt;Int16&gt; mySamples;
-<a name="l00115"></a>00115 };
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 } <span class="comment">// namespace sf</span>
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="preprocessor">#endif // SFML_MUSIC_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Mutex_8cpp-source.htm b/doc/html/Mutex_8cpp-source.htm
deleted file mode 100755
index 1fd3154..0000000
--- a/doc/html/Mutex_8cpp-source.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Mutex.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Win32/Mutex.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00036"></a><a class="code" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e">00036</a> <a class="code" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e" title="Default constructor.">Mutex::Mutex</a>()
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 InitializeCriticalSection(&amp;myHandle);
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00045"></a><a class="code" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2">00045</a> <a class="code" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2" title="Destructor.">Mutex::~Mutex</a>()
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 DeleteCriticalSection(&amp;myHandle);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab">00054</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab" title="Lock the mutex.">Mutex::Lock</a>()
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 EnterCriticalSection(&amp;myHandle);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a><a class="code" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a">00063</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a" title="Unlock the mutex.">Mutex::Unlock</a>()
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 LeaveCriticalSection(&amp;myHandle);
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Mutex_8hpp-source.htm b/doc/html/Mutex_8hpp-source.htm
deleted file mode 100755
index b910970..0000000
--- a/doc/html/Mutex_8hpp-source.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Mutex.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_MUTEX_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_MUTEX_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef SFML_SYSTEM_WINDOWS</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/System/Win32/Mutex.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#else</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor"> #include &lt;SFML/System/Unix/Mutex.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#endif // SFML_MUTEX_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Network_8hpp-source.htm b/doc/html/Network_8hpp-source.htm
deleted file mode 100755
index fe495a8..0000000
--- a/doc/html/Network_8hpp-source.htm
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Network.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_NETWORK_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_NETWORK_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Network/Ftp.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Network/Http.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Network/Packet.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/Network/Selector.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/Network/SocketTCP.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/Network/SocketUDP.hpp&gt;</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif // SFML_NETWORK_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/NonCopyable_8hpp-source.htm b/doc/html/NonCopyable_8hpp-source.htm
deleted file mode 100755
index ef8cea8..0000000
--- a/doc/html/NonCopyable_8hpp-source.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>NonCopyable.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_NONCOPYABLE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_NONCOPYABLE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00040"></a><a class="code" href="structsf_1_1NonCopyable.htm">00040</a> <span class="keyword">struct </span>SFML_API <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">protected</span> :
-<a name="l00043"></a>00043
-<a name="l00048"></a><a class="code" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">00048</a> <a class="code" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860" title="The default constructor won&amp;#39;t be generated, so provide it.">NonCopyable</a>() {}
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">private</span> :
-<a name="l00051"></a>00051
-<a name="l00057"></a>00057 <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>(<span class="keyword">const</span> <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>&amp;);
-<a name="l00058"></a>00058
-<a name="l00064"></a>00064 <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>&amp; operator =(<span class="keyword">const</span> <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>&amp;);
-<a name="l00065"></a>00065 };
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 } <span class="comment">// namespace sf</span>
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="preprocessor">#endif // SFML_NONCOPYABLE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/OpenAL_8hpp-source.htm b/doc/html/OpenAL_8hpp-source.htm
deleted file mode 100755
index e8aced0..0000000
--- a/doc/html/OpenAL_8hpp-source.htm
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>OpenAL.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_OPENAL_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_OPENAL_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="preprocessor">#if defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include &lt;OpenAL/al.h&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;OpenAL/alc.h&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#else</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#include &lt;AL/al.h&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;AL/alc.h&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#endif</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>sf
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">namespace </span>priv
-<a name="l00048"></a>00048 {
-<a name="l00054"></a>00054 <span class="preprocessor">#ifdef SFML_DEBUG</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>
-<a name="l00056"></a>00056 <span class="comment">// If in debug mode, perform a test on every call</span>
-<a name="l00057"></a>00057 <span class="preprocessor"> #define ALCheck(Func) ((Func), priv::ALCheckError(__FILE__, __LINE__))</span>
-<a name="l00058"></a>00058 <span class="preprocessor"></span>
-<a name="l00059"></a>00059 <span class="preprocessor">#else</span>
-<a name="l00060"></a>00060 <span class="preprocessor"></span>
-<a name="l00061"></a>00061 <span class="comment">// Else, we don't add any overhead</span>
-<a name="l00062"></a>00062 <span class="preprocessor"> #define ALCheck(Func) (Func)</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span>
-<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span>
-<a name="l00066"></a>00066
-<a name="l00071"></a>00071 <span class="keyword">inline</span> <span class="keywordtype">void</span> ALCheckError(<span class="keyword">const</span> std::string&amp; File, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Line)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="comment">// Get the last error</span>
-<a name="l00074"></a>00074 ALenum ErrorCode = alGetError();
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (ErrorCode != AL_NO_ERROR)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 std::string Error, Desc;
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">// Decode the error code</span>
-<a name="l00081"></a>00081 <span class="keywordflow">switch</span> (ErrorCode)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">case</span> AL_INVALID_NAME :
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 Error = <span class="stringliteral">"AL_INVALID_NAME"</span>;
-<a name="l00086"></a>00086 Desc = <span class="stringliteral">"an unacceptable name has been specified"</span>;
-<a name="l00087"></a>00087 <span class="keywordflow">break</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keywordflow">case</span> AL_INVALID_ENUM :
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 Error = <span class="stringliteral">"AL_INVALID_ENUM"</span>;
-<a name="l00093"></a>00093 Desc = <span class="stringliteral">"an unacceptable value has been specified for an enumerated argument"</span>;
-<a name="l00094"></a>00094 <span class="keywordflow">break</span>;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordflow">case</span> AL_INVALID_VALUE :
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 Error = <span class="stringliteral">"AL_INVALID_VALUE"</span>;
-<a name="l00100"></a>00100 Desc = <span class="stringliteral">"a numeric argument is out of range"</span>;
-<a name="l00101"></a>00101 <span class="keywordflow">break</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keywordflow">case</span> AL_INVALID_OPERATION :
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 Error = <span class="stringliteral">"AL_INVALID_OPERATION"</span>;
-<a name="l00107"></a>00107 Desc = <span class="stringliteral">"the specified operation is not allowed in the current state"</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">break</span>;
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">case</span> AL_OUT_OF_MEMORY :
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 Error = <span class="stringliteral">"AL_OUT_OF_MEMORY"</span>;
-<a name="l00114"></a>00114 Desc = <span class="stringliteral">"there is not enough memory left to execute the command"</span>;
-<a name="l00115"></a>00115 <span class="keywordflow">break</span>;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">// Log the error</span>
-<a name="l00120"></a>00120 std::cerr &lt;&lt; <span class="stringliteral">"An internal OpenAL call failed in "</span>
-<a name="l00121"></a>00121 &lt;&lt; File.substr(File.find_last_of(<span class="stringliteral">"\\/"</span>) + 1) &lt;&lt; <span class="stringliteral">" ("</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">") : "</span>
-<a name="l00122"></a>00122 &lt;&lt; Error &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; Desc
-<a name="l00123"></a>00123 &lt;&lt; std::endl;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 } <span class="comment">// namespace priv</span>
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 } <span class="comment">// namespace sf</span>
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="preprocessor">#endif // SFML_OPENAL_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/OpenGL_8hpp-source.htm b/doc/html/OpenGL_8hpp-source.htm
deleted file mode 100755
index 27ee314..0000000
--- a/doc/html/OpenGL_8hpp-source.htm
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>OpenGL.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_OPENGL_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_OPENGL_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00039"></a>00039 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>
-<a name="l00041"></a>00041 <span class="preprocessor"> #include &lt;windows.h&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor"> #include &lt;GL/gl.h&gt;</span>
-<a name="l00043"></a>00043 <span class="preprocessor"> #include &lt;GL/glu.h&gt;</span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>
-<a name="l00047"></a>00047 <span class="preprocessor"> #include &lt;GL/gl.h&gt;</span>
-<a name="l00048"></a>00048 <span class="preprocessor"> #include &lt;GL/glu.h&gt;</span>
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="preprocessor">#elif defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span>
-<a name="l00052"></a>00052 <span class="preprocessor"> #include &lt;OpenGL/gl.h&gt;</span>
-<a name="l00053"></a>00053 <span class="preprocessor"> #include &lt;OpenGL/glu.h&gt;</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="preprocessor">#endif // SFML_OPENGL_HPP</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Packet_8cpp-source.htm b/doc/html/Packet_8cpp-source.htm
deleted file mode 100755
index 0d9ea25..0000000
--- a/doc/html/Packet_8cpp-source.htm
+++ /dev/null
@@ -1,418 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Packet.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/Packet.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a><a class="code" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858">00038</a> <a class="code" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858" title="Default constructor.">Packet::Packet</a>() :
-<a name="l00039"></a>00039 myReadPos(0),
-<a name="l00040"></a>00040 myIsValid(true)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a><a class="code" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5">00049</a> <a class="code" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5" title="Virtual destructor.">Packet::~Packet</a>()
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a><a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64">00058</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Packet::Append</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* Data, std::size_t SizeInBytes)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (Data &amp;&amp; (SizeInBytes &gt; 0))
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 std::size_t Start = myData.size();
-<a name="l00063"></a>00063 myData.resize(Start + SizeInBytes);
-<a name="l00064"></a>00064 memcpy(&amp;myData[Start], Data, SizeInBytes);
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00072"></a><a class="code" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da">00072</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da" title="Clear the packet data.">Packet::Clear</a>()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 myData.clear();
-<a name="l00075"></a>00075 myReadPos = 0;
-<a name="l00076"></a>00076 myIsValid = <span class="keyword">true</span>;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00085"></a><a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a">00085</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">Packet::GetData</a>()<span class="keyword"> const</span>
-<a name="l00086"></a>00086 <span class="keyword"></span>{
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> !myData.empty() ? &amp;myData[0] : NULL;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090
-<a name="l00094"></a><a class="code" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d">00094</a> std::size_t <a class="code" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d" title="Get the size of the data contained in the packet.">Packet::GetDataSize</a>()<span class="keyword"> const</span>
-<a name="l00095"></a>00095 <span class="keyword"></span>{
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> myData.size();
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00103"></a><a class="code" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36">00103</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36" title="Tell if the reading position has reached the end of the packet.">Packet::EndOfPacket</a>()<span class="keyword"> const</span>
-<a name="l00104"></a>00104 <span class="keyword"></span>{
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> myReadPos &gt;= myData.size();
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6">00112</a> <a class="code" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6" title="Return the validity of packet.">Packet::operator bool</a>()<span class="keyword"> const</span>
-<a name="l00113"></a>00113 <span class="keyword"></span>{
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> myIsValid;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117
-<a name="l00121"></a><a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16">00121</a> <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(<span class="keywordtype">bool</span>&amp; Data)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 Uint8 Value;
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (*<span class="keyword">this</span> &gt;&gt; Value)
-<a name="l00125"></a>00125 Data = (Value != 0);
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Int8&amp; Data)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 Data = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Int8*<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos);
-<a name="l00134"></a>00134 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Uint8&amp; Data)
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 Data = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Uint8*<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos);
-<a name="l00144"></a>00144 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Int16&amp; Data)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 Data = ntohs(*reinterpret_cast&lt;const Int16*&gt;(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos));
-<a name="l00154"></a>00154 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Uint16&amp; Data)
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 Data = ntohs(*reinterpret_cast&lt;const Uint16*&gt;(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos));
-<a name="l00164"></a>00164 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Int32&amp; Data)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 Data = ntohl(*reinterpret_cast&lt;const Int32*&gt;(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos));
-<a name="l00174"></a>00174 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(Uint32&amp; Data)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 Data = ntohl(*reinterpret_cast&lt;const Uint32*&gt;(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos));
-<a name="l00184"></a>00184 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(<span class="keywordtype">float</span>&amp; Data)
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 Data = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos);
-<a name="l00194"></a>00194 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(<span class="keywordtype">double</span>&amp; Data)
-<a name="l00200"></a>00200 {
-<a name="l00201"></a>00201 <span class="keywordflow">if</span> (CheckSize(<span class="keyword">sizeof</span>(Data)))
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 Data = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">double</span>*<span class="keyword">&gt;</span>(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos);
-<a name="l00204"></a>00204 myReadPos += <span class="keyword">sizeof</span>(Data);
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(<span class="keywordtype">char</span>* Data)
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="comment">// First extract string length</span>
-<a name="l00212"></a>00212 Uint32 Length;
-<a name="l00213"></a>00213 *<span class="keyword">this</span> &gt;&gt; Length;
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keywordflow">if</span> ((Length &gt; 0) &amp;&amp; CheckSize(Length))
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 <span class="comment">// Then extract characters</span>
-<a name="l00218"></a>00218 memcpy(Data, <a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos, Length);
-<a name="l00219"></a>00219 Data[Length] = <span class="charliteral">'\0'</span>;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="comment">// Update reading position</span>
-<a name="l00222"></a>00222 myReadPos += Length;
-<a name="l00223"></a>00223 }
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00226"></a>00226 }
-<a name="l00227"></a>00227 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(std::string&amp; Data)
-<a name="l00228"></a>00228 {
-<a name="l00229"></a>00229 <span class="comment">// First extract string length</span>
-<a name="l00230"></a>00230 Uint32 Length;
-<a name="l00231"></a>00231 *<span class="keyword">this</span> &gt;&gt; Length;
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 Data.clear();
-<a name="l00234"></a>00234 <span class="keywordflow">if</span> ((Length &gt; 0) &amp;&amp; CheckSize(Length))
-<a name="l00235"></a>00235 {
-<a name="l00236"></a>00236 <span class="comment">// Then extract characters</span>
-<a name="l00237"></a>00237 Data.assign(<a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>() + myReadPos, Length);
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="comment">// Update reading position</span>
-<a name="l00240"></a>00240 myReadPos += Length;
-<a name="l00241"></a>00241 }
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(<span class="keywordtype">wchar_t</span>* Data)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="comment">// First extract string length</span>
-<a name="l00248"></a>00248 Uint32 Length;
-<a name="l00249"></a>00249 *<span class="keyword">this</span> &gt;&gt; Length;
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="keywordflow">if</span> ((Length &gt; 0) &amp;&amp; CheckSize(Length * <span class="keyword">sizeof</span>(Int32)))
-<a name="l00252"></a>00252 {
-<a name="l00253"></a>00253 <span class="comment">// Then extract characters</span>
-<a name="l00254"></a>00254 <span class="keywordflow">for</span> (Uint32 i = 0; i &lt; Length; ++i)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 Uint32 c;
-<a name="l00257"></a>00257 *<span class="keyword">this</span> &gt;&gt; c;
-<a name="l00258"></a>00258 Data[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">wchar_t</span><span class="keyword">&gt;</span>(c);
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260 Data[Length] = L<span class="charliteral">'\0'</span>;
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16" title="Operator &amp;gt;&amp;gt; overloads to extract data from the packet.">Packet::operator &gt;&gt;</a>(std::wstring&amp; Data)
-<a name="l00266"></a>00266 {
-<a name="l00267"></a>00267 <span class="comment">// First extract string length</span>
-<a name="l00268"></a>00268 Uint32 Length;
-<a name="l00269"></a>00269 *<span class="keyword">this</span> &gt;&gt; Length;
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 Data.clear();
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> ((Length &gt; 0) &amp;&amp; CheckSize(Length * <span class="keyword">sizeof</span>(Int32)))
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="comment">// Then extract characters</span>
-<a name="l00275"></a>00275 <span class="keywordflow">for</span> (Uint32 i = 0; i &lt; Length; ++i)
-<a name="l00276"></a>00276 {
-<a name="l00277"></a>00277 Uint32 c;
-<a name="l00278"></a>00278 *<span class="keyword">this</span> &gt;&gt; c;
-<a name="l00279"></a>00279 Data += <span class="keyword">static_cast&lt;</span><span class="keywordtype">wchar_t</span><span class="keyword">&gt;</span>(c);
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286
-<a name="l00290"></a><a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550">00290</a> <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keywordtype">bool</span> Data)
-<a name="l00291"></a>00291 {
-<a name="l00292"></a>00292 *this &lt;&lt; static_cast&lt;Uint8&gt;(Data);
-<a name="l00293"></a>00293 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Int8 Data)
-<a name="l00296"></a>00296 {
-<a name="l00297"></a>00297 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;Data, <span class="keyword">sizeof</span>(Data));
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Uint8 Data)
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;Data, <span class="keyword">sizeof</span>(Data));
-<a name="l00303"></a>00303 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Int16 Data)
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 Int16 ToWrite = htons(Data);
-<a name="l00308"></a>00308 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;ToWrite, <span class="keyword">sizeof</span>(ToWrite));
-<a name="l00309"></a>00309 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Uint16 Data)
-<a name="l00312"></a>00312 {
-<a name="l00313"></a>00313 Uint16 ToWrite = htons(Data);
-<a name="l00314"></a>00314 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;ToWrite, <span class="keyword">sizeof</span>(ToWrite));
-<a name="l00315"></a>00315 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Int32 Data)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 Int32 ToWrite = htonl(Data);
-<a name="l00320"></a>00320 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;ToWrite, <span class="keyword">sizeof</span>(ToWrite));
-<a name="l00321"></a>00321 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(Uint32 Data)
-<a name="l00324"></a>00324 {
-<a name="l00325"></a>00325 Uint32 ToWrite = htonl(Data);
-<a name="l00326"></a>00326 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;ToWrite, <span class="keyword">sizeof</span>(ToWrite));
-<a name="l00327"></a>00327 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keywordtype">float</span> Data)
-<a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;Data, <span class="keyword">sizeof</span>(Data));
-<a name="l00332"></a>00332 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keywordtype">double</span> Data)
-<a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(&amp;Data, <span class="keyword">sizeof</span>(Data));
-<a name="l00337"></a>00337 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00338"></a>00338 }
-<a name="l00339"></a>00339 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data)
-<a name="l00340"></a>00340 {
-<a name="l00341"></a>00341 <span class="comment">// First insert string length</span>
-<a name="l00342"></a>00342 Uint32 Length = 0;
-<a name="l00343"></a>00343 <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* c = Data; *c != <span class="charliteral">'\0'</span>; ++c)
-<a name="l00344"></a>00344 ++Length;
-<a name="l00345"></a>00345 *<span class="keyword">this</span> &lt;&lt; Length;
-<a name="l00346"></a>00346
-<a name="l00347"></a>00347 <span class="comment">// Then insert characters</span>
-<a name="l00348"></a>00348 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(Data, Length * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
-<a name="l00349"></a>00349
-<a name="l00350"></a>00350 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00351"></a>00351 }
-<a name="l00352"></a>00352 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keyword">const</span> std::string&amp; Data)
-<a name="l00353"></a>00353 {
-<a name="l00354"></a>00354 <span class="comment">// First insert string length</span>
-<a name="l00355"></a>00355 Uint32 Length = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(Data.size());
-<a name="l00356"></a>00356 *<span class="keyword">this</span> &lt;&lt; Length;
-<a name="l00357"></a>00357
-<a name="l00358"></a>00358 <span class="comment">// Then insert characters</span>
-<a name="l00359"></a>00359 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(Data.c_str(), Length * <span class="keyword">sizeof</span>(std::string::value_type));
-<a name="l00362"></a>00362 }
-<a name="l00363"></a>00363
-<a name="l00364"></a>00364 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00365"></a>00365 }
-<a name="l00366"></a>00366 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* Data)
-<a name="l00367"></a>00367 {
-<a name="l00368"></a>00368 <span class="comment">// First insert string length</span>
-<a name="l00369"></a>00369 Uint32 Length = 0;
-<a name="l00370"></a>00370 <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* c = Data; *c != L<span class="charliteral">'\0'</span>; ++c)
-<a name="l00371"></a>00371 ++Length;
-<a name="l00372"></a>00372 *<span class="keyword">this</span> &lt;&lt; Length;
-<a name="l00373"></a>00373
-<a name="l00374"></a>00374 <span class="comment">// Then insert characters</span>
-<a name="l00375"></a>00375 <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* c = Data; *c != L<span class="charliteral">'\0'</span>; ++c)
-<a name="l00376"></a>00376 *<span class="keyword">this</span> &lt;&lt; static_cast&lt;Int32&gt;(*c);
-<a name="l00377"></a>00377
-<a name="l00378"></a>00378 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00379"></a>00379 }
-<a name="l00380"></a>00380 Packet&amp; <a class="code" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550" title="Operator &amp;lt;&amp;lt; overloads to put data into the packet.">Packet::operator &lt;&lt;</a>(<span class="keyword">const</span> std::wstring&amp; Data)
-<a name="l00381"></a>00381 {
-<a name="l00382"></a>00382 <span class="comment">// First insert string length</span>
-<a name="l00383"></a>00383 Uint32 Length = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(Data.size());
-<a name="l00384"></a>00384 *<span class="keyword">this</span> &lt;&lt; Length;
-<a name="l00385"></a>00385
-<a name="l00386"></a>00386 <span class="comment">// Then insert characters</span>
-<a name="l00387"></a>00387 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00388"></a>00388 {
-<a name="l00389"></a>00389 <span class="keywordflow">for</span> (std::wstring::const_iterator c = Data.begin(); c != Data.end(); ++c)
-<a name="l00390"></a>00390 *<span class="keyword">this</span> &lt;&lt; static_cast&lt;Int32&gt;(*c);
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392
-<a name="l00393"></a>00393 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395
-<a name="l00396"></a>00396
-<a name="l00400"></a>00400 <span class="keywordtype">bool</span> Packet::CheckSize(std::size_t Size)
-<a name="l00401"></a>00401 {
-<a name="l00402"></a>00402 myIsValid = myIsValid &amp;&amp; (myReadPos + Size &lt;= myData.size());
-<a name="l00403"></a>00403
-<a name="l00404"></a>00404 <span class="keywordflow">return</span> myIsValid;
-<a name="l00405"></a>00405 }
-<a name="l00406"></a>00406
-<a name="l00407"></a>00407
-<a name="l00411"></a>00411 <span class="keyword">const</span> <span class="keywordtype">char</span>* Packet::OnSend(std::size_t&amp; DataSize)
-<a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 DataSize = <a class="code" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d" title="Get the size of the data contained in the packet.">GetDataSize</a>();
-<a name="l00414"></a>00414 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a" title="Get a pointer to the data contained in the packet Warning : the returned pointer...">GetData</a>();
-<a name="l00415"></a>00415 }
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417
-<a name="l00421"></a>00421 <span class="keywordtype">void</span> Packet::OnReceive(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t DataSize)
-<a name="l00422"></a>00422 {
-<a name="l00423"></a>00423 <a class="code" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64" title="Append data to the end of the packet.">Append</a>(Data, DataSize);
-<a name="l00424"></a>00424 }
-<a name="l00425"></a>00425
-<a name="l00426"></a>00426 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Packet_8hpp-source.htm b/doc/html/Packet_8hpp-source.htm
deleted file mode 100755
index 5d57461..0000000
--- a/doc/html/Packet_8hpp-source.htm
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Packet.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_PACKET_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_PACKET_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00041"></a><a class="code" href="classsf_1_1Packet.htm">00041</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">public</span> :
-<a name="l00044"></a>00044
-<a name="l00049"></a>00049 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>();
-<a name="l00050"></a>00050
-<a name="l00055"></a>00055 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>();
-<a name="l00056"></a>00056
-<a name="l00064"></a>00064 <span class="keywordtype">void</span> Append(<span class="keyword">const</span> <span class="keywordtype">void</span>* Data, std::size_t SizeInBytes);
-<a name="l00065"></a>00065
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> Clear();
-<a name="l00071"></a>00071
-<a name="l00080"></a>00080 <span class="keyword">const</span> <span class="keywordtype">char</span>* GetData() <span class="keyword">const</span>;
-<a name="l00081"></a>00081
-<a name="l00088"></a>00088 std::size_t GetDataSize() <span class="keyword">const</span>;
-<a name="l00089"></a>00089
-<a name="l00096"></a>00096 <span class="keywordtype">bool</span> EndOfPacket() <span class="keyword">const</span>;
-<a name="l00097"></a>00097
-<a name="l00104"></a>00104 operator bool() <span class="keyword">const</span>;
-<a name="l00105"></a>00105
-<a name="l00110"></a>00110 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(<span class="keywordtype">bool</span>&amp; Data);
-<a name="l00111"></a>00111 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Int8&amp; Data);
-<a name="l00112"></a>00112 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Uint8&amp; Data);
-<a name="l00113"></a>00113 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Int16&amp; Data);
-<a name="l00114"></a>00114 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Uint16&amp; Data);
-<a name="l00115"></a>00115 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Int32&amp; Data);
-<a name="l00116"></a>00116 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(Uint32&amp; Data);
-<a name="l00117"></a>00117 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(<span class="keywordtype">float</span>&amp; Data);
-<a name="l00118"></a>00118 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(<span class="keywordtype">double</span>&amp; Data);
-<a name="l00119"></a>00119 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(<span class="keywordtype">char</span>* Data);
-<a name="l00120"></a>00120 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(std::string&amp; Data);
-<a name="l00121"></a>00121 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(<span class="keywordtype">wchar_t</span>* Data);
-<a name="l00122"></a>00122 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &gt;&gt;(std::wstring&amp; Data);
-<a name="l00123"></a>00123
-<a name="l00128"></a>00128 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keywordtype">bool</span> Data);
-<a name="l00129"></a>00129 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Int8 Data);
-<a name="l00130"></a>00130 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Uint8 Data);
-<a name="l00131"></a>00131 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Int16 Data);
-<a name="l00132"></a>00132 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Uint16 Data);
-<a name="l00133"></a>00133 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Int32 Data);
-<a name="l00134"></a>00134 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(Uint32 Data);
-<a name="l00135"></a>00135 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keywordtype">float</span> Data);
-<a name="l00136"></a>00136 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keywordtype">double</span> Data);
-<a name="l00137"></a>00137 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data);
-<a name="l00138"></a>00138 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keyword">const</span> std::string&amp; Data);
-<a name="l00139"></a>00139 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* Data);
-<a name="l00140"></a>00140 <a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; operator &lt;&lt;(<span class="keyword">const</span> std::wstring&amp; Data);
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">private</span> :
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>;
-<a name="l00145"></a>00145 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>;
-<a name="l00146"></a>00146
-<a name="l00155"></a>00155 <span class="keywordtype">bool</span> CheckSize(std::size_t Size);
-<a name="l00156"></a>00156
-<a name="l00165"></a>00165 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* OnSend(std::size_t&amp; DataSize);
-<a name="l00166"></a>00166
-<a name="l00174"></a>00174 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnReceive(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t DataSize);
-<a name="l00175"></a>00175
-<a name="l00177"></a>00177 <span class="comment">// Member data</span>
-<a name="l00179"></a>00179 <span class="comment"></span> std::vector&lt;char&gt; myData;
-<a name="l00180"></a>00180 std::size_t myReadPos;
-<a name="l00181"></a>00181 <span class="keywordtype">bool</span> myIsValid;
-<a name="l00182"></a>00182 };
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 } <span class="comment">// namespace sf</span>
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="preprocessor">#endif // SFML_PACKET_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Platform_8cpp-source.htm b/doc/html/Platform_8cpp-source.htm
deleted file mode 100755
index 1b72216..0000000
--- a/doc/html/Platform_8cpp-source.htm
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Platform.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Win32/Platform.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>priv
-<a name="l00035"></a>00035 {
-<a name="l00039"></a>00039 <span class="keywordtype">double</span> Platform::GetSystemTime()
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keyword">static</span> LARGE_INTEGER Frequency;
-<a name="l00042"></a>00042 <span class="keyword">static</span> BOOL UseHighPerformanceTimer = QueryPerformanceFrequency(&amp;Frequency);
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (UseHighPerformanceTimer)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// High performance counter available : use it</span>
-<a name="l00047"></a>00047 LARGE_INTEGER CurrentTime;
-<a name="l00048"></a>00048 QueryPerformanceCounter(&amp;CurrentTime);
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(CurrentTime.QuadPart) / Frequency.QuadPart;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052 <span class="keywordflow">else</span>
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="comment">// High performance counter not available : use GetTickCount (less accurate)</span>
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> GetTickCount() * 0.001;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a>00063 <span class="keywordtype">void</span> Platform::Sleep(<span class="keywordtype">float</span> Time)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 ::Sleep(<span class="keyword">static_cast&lt;</span>DWORD<span class="keyword">&gt;</span>(Time * 1000));
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 } <span class="comment">// namespace priv</span>
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Platform_8hpp-source.htm b/doc/html/Platform_8hpp-source.htm
deleted file mode 100755
index 3f7b682..0000000
--- a/doc/html/Platform_8hpp-source.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Platform.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_PLATFORM_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_PLATFORM_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/System/Win32/Platform.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_MACOS) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor"> #include &lt;SFML/System/Unix/Platform.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#endif // SFML_PLATFORM_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/PostFX_8cpp-source.htm b/doc/html/PostFX_8cpp-source.htm
deleted file mode 100755
index 04a09ab..0000000
--- a/doc/html/PostFX_8cpp-source.htm
+++ /dev/null
@@ -1,493 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>PostFX.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00027"></a>00027 <span class="comment">// Headers</span>
-<a name="l00029"></a>00029 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/PostFX.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/RenderWindow.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;fstream&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;set&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;sstream&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00043"></a><a class="code" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb">00043</a> <a class="code" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb" title="Default constructor.">PostFX::PostFX</a>() :
-<a name="l00044"></a>00044 myShaderProgram(0)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// No filtering on frame buffer</span>
-<a name="l00047"></a>00047 myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452" title="Enable or disable image smooth filter.">SetSmooth</a>(<span class="keyword">false</span>);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1PostFX.htm#4ec47ed9e2539b589695854e2b259b47">00054</a> <a class="code" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb" title="Default constructor.">PostFX::PostFX</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; Copy) :
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a> (Copy),
-<a name="l00056"></a>00056 myShaderProgram (0),
-<a name="l00057"></a>00057 myTextures (Copy.myTextures),
-<a name="l00058"></a>00058 myFragmentShader(Copy.myFragmentShader),
-<a name="l00059"></a>00059 myFrameBuffer (Copy.myFrameBuffer)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">// No filtering on frame buffer</span>
-<a name="l00062"></a>00062 myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452" title="Enable or disable image smooth filter.">SetSmooth</a>(<span class="keyword">false</span>);
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="comment">// Create the shaders and the program</span>
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (Copy.<a class="code" href="classsf_1_1PostFX.htm#b374a6e0d7f80fd340616cd79657cfee" title="OpenGL identifier for the program.">myShaderProgram</a>)
-<a name="l00066"></a>00066 CreateProgram();
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00073"></a><a class="code" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63">00073</a> <a class="code" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63" title="Destructor.">PostFX::~PostFX</a>()
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="comment">// Destroy effect program</span>
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00079"></a>00079 priv::GraphicsContext Ctx;
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 GLCheck(glDeleteObjectARB(myShaderProgram));
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92">00089</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92" title="Load the effect from a file.">PostFX::LoadFromFile</a>(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">// Open the file</span>
-<a name="l00092"></a>00092 std::ifstream File(Filename.c_str());
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (!File)
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open effect file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="comment">// Apply the preprocessing pass to the fragment shader code</span>
-<a name="l00100"></a>00100 myFragmentShader = PreprocessEffect(File);
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="comment">// Create the shaders and the program</span>
-<a name="l00103"></a>00103 CreateProgram();
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> myShaderProgram != 0;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6">00112</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6" title="Load the effect from a text in memory.">PostFX::LoadFromMemory</a>(<span class="keyword">const</span> std::string&amp; Effect)
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="comment">// Open a stream and copy the effect code</span>
-<a name="l00115"></a>00115 std::istringstream Stream(Effect.c_str());
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="comment">// Apply the preprocessing pass to the fragment shader code</span>
-<a name="l00118"></a>00118 myFragmentShader = PreprocessEffect(Stream);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// Create the shaders and the program</span>
-<a name="l00121"></a>00121 CreateProgram();
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> myShaderProgram != 0;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126
-<a name="l00130"></a><a class="code" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a">00130</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a" title="Change a parameter of the effect (1 float).">PostFX::SetParameter</a>(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X)
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="comment">// Enable program</span>
-<a name="l00135"></a>00135 GLCheck(glUseProgramObjectARB(myShaderProgram));
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="comment">// Get parameter location and assign it new values</span>
-<a name="l00138"></a>00138 GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (Location != -1)
-<a name="l00140"></a>00140 GLCheck(glUniform1fARB(Location, X));
-<a name="l00141"></a>00141 <span class="keywordflow">else</span>
-<a name="l00142"></a>00142 std::cerr &lt;&lt; <span class="stringliteral">"Parameter \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" not found in post-effect"</span> &lt;&lt; std::endl;
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="comment">// Disable program</span>
-<a name="l00145"></a>00145 GLCheck(glUseProgramObjectARB(0));
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149
-<a name="l00153"></a><a class="code" href="classsf_1_1PostFX.htm#a92c8a3f203a64d816c6844bdfad2393">00153</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a" title="Change a parameter of the effect (1 float).">PostFX::SetParameter</a>(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y)
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="comment">// Enable program</span>
-<a name="l00158"></a>00158 GLCheck(glUseProgramObjectARB(myShaderProgram));
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">// Get parameter location and assign it new values</span>
-<a name="l00161"></a>00161 GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (Location != -1)
-<a name="l00163"></a>00163 GLCheck(glUniform2fARB(Location, X, Y));
-<a name="l00164"></a>00164 <span class="keywordflow">else</span>
-<a name="l00165"></a>00165 std::cerr &lt;&lt; <span class="stringliteral">"Parameter \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" not found in post-effect"</span> &lt;&lt; std::endl;
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="comment">// Disable program</span>
-<a name="l00168"></a>00168 GLCheck(glUseProgramObjectARB(0));
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172
-<a name="l00176"></a><a class="code" href="classsf_1_1PostFX.htm#031c257687c3115d6f524e7922e32d67">00176</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a" title="Change a parameter of the effect (1 float).">PostFX::SetParameter</a>(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00179"></a>00179 {
-<a name="l00180"></a>00180 <span class="comment">// Enable program</span>
-<a name="l00181"></a>00181 GLCheck(glUseProgramObjectARB(myShaderProgram));
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">// Get parameter location and assign it new values</span>
-<a name="l00184"></a>00184 GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
-<a name="l00185"></a>00185 <span class="keywordflow">if</span> (Location != -1)
-<a name="l00186"></a>00186 GLCheck(glUniform3fARB(Location, X, Y, Z));
-<a name="l00187"></a>00187 <span class="keywordflow">else</span>
-<a name="l00188"></a>00188 std::cerr &lt;&lt; <span class="stringliteral">"Parameter \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" not found in post-effect"</span> &lt;&lt; std::endl;
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// Disable program</span>
-<a name="l00191"></a>00191 GLCheck(glUseProgramObjectARB(0));
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195
-<a name="l00199"></a><a class="code" href="classsf_1_1PostFX.htm#3bc85737080c281148a247fccb8e06de">00199</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a" title="Change a parameter of the effect (1 float).">PostFX::SetParameter</a>(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z, <span class="keywordtype">float</span> W)
-<a name="l00200"></a>00200 {
-<a name="l00201"></a>00201 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 <span class="comment">// Enable program</span>
-<a name="l00204"></a>00204 GLCheck(glUseProgramObjectARB(myShaderProgram));
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="comment">// Get parameter location and assign it new values</span>
-<a name="l00207"></a>00207 GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
-<a name="l00208"></a>00208 <span class="keywordflow">if</span> (Location != -1)
-<a name="l00209"></a>00209 GLCheck(glUniform4fARB(Location, X, Y, Z, W));
-<a name="l00210"></a>00210 <span class="keywordflow">else</span>
-<a name="l00211"></a>00211 std::cerr &lt;&lt; <span class="stringliteral">"Parameter \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" not found in post-effect"</span> &lt;&lt; std::endl;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">// Disable program</span>
-<a name="l00214"></a>00214 GLCheck(glUseProgramObjectARB(0));
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218
-<a name="l00222"></a><a class="code" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1">00222</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1" title="Set a texture parameter.">PostFX::SetTexture</a>(<span class="keyword">const</span> std::string&amp; Name, <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>* Texture)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="comment">// Check that the current texture unit is available</span>
-<a name="l00225"></a>00225 GLint MaxUnits;
-<a name="l00226"></a>00226 GLCheck(glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &amp;MaxUnits));
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (myTextures.size() &gt;= <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(MaxUnits))
-<a name="l00228"></a>00228 {
-<a name="l00229"></a>00229 std::cerr &lt;&lt; <span class="stringliteral">"Impossible to use texture \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" for post-effect : all available texture units are used"</span> &lt;&lt; std::endl;
-<a name="l00230"></a>00230 <span class="keywordflow">return</span>;
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="comment">// Make sure the given name is a valid variable in the effect</span>
-<a name="l00234"></a>00234 <span class="keywordtype">int</span> Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
-<a name="l00235"></a>00235 <span class="keywordflow">if</span> (Location == -1)
-<a name="l00236"></a>00236 {
-<a name="l00237"></a>00237 std::cerr &lt;&lt; <span class="stringliteral">"Texture \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" not found in post-effect"</span> &lt;&lt; std::endl;
-<a name="l00238"></a>00238 <span class="keywordflow">return</span>;
-<a name="l00239"></a>00239 }
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 <span class="comment">// Store the texture for later use</span>
-<a name="l00242"></a>00242 myTextures[Name] = Texture ? Texture : &amp;myFrameBuffer;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245
-<a name="l00249"></a><a class="code" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba">00249</a> <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; <a class="code" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba" title="Assignment operator.">PostFX::operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; Other)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a> Temp(Other);
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 std::swap(myShaderProgram, Temp.<a class="code" href="classsf_1_1PostFX.htm#b374a6e0d7f80fd340616cd79657cfee" title="OpenGL identifier for the program.">myShaderProgram</a>);
-<a name="l00254"></a>00254 std::swap(myTextures, Temp.<a class="code" href="classsf_1_1PostFX.htm#3586a2f71d2b449404af64621570f428" title="Texture variables in the effect.">myTextures</a>);
-<a name="l00255"></a>00255 std::swap(myFragmentShader, Temp.<a class="code" href="classsf_1_1PostFX.htm#953e57703bb2ef17c5167efda937e837" title="Fragment shader source code.">myFragmentShader</a>);
-<a name="l00256"></a>00256 std::swap(myFrameBuffer, Temp.<a class="code" href="classsf_1_1PostFX.htm#529a8974f7a0f0ae9e5232970861e690" title="Texture containing the current frame buffer.">myFrameBuffer</a>);
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261
-<a name="l00265"></a><a class="code" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e">00265</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e" title="Tell whether or not the system supports post-effects.">PostFX::CanUsePostFX</a>()
-<a name="l00266"></a>00266 {
-<a name="l00267"></a>00267 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00268"></a>00268 priv::GraphicsContext Ctx;
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keywordflow">return</span> glewIsSupported(<span class="stringliteral">"GL_ARB_shading_language_100"</span>) != 0 &amp;&amp;
-<a name="l00271"></a>00271 glewIsSupported(<span class="stringliteral">"GL_ARB_shader_objects"</span>) != 0 &amp;&amp;
-<a name="l00272"></a>00272 glewIsSupported(<span class="stringliteral">"GL_ARB_vertex_shader"</span>) != 0 &amp;&amp;
-<a name="l00273"></a>00273 glewIsSupported(<span class="stringliteral">"GL_ARB_fragment_shader"</span>) != 0;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276
-<a name="l00280"></a><a class="code" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc">00280</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc" title="/see Drawable::Render">PostFX::Render</a>(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target)<span class="keyword"> const</span>
-<a name="l00281"></a>00281 <span class="keyword"></span>{
-<a name="l00282"></a>00282 <span class="comment">// Check that we have a valid program</span>
-<a name="l00283"></a>00283 <span class="keywordflow">if</span> (!myShaderProgram)
-<a name="l00284"></a>00284 <span class="keywordflow">return</span>;
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="comment">// Copy the current framebuffer pixels to our frame buffer texture</span>
-<a name="l00287"></a>00287 <span class="comment">// The ugly cast is temporary until PostFx are rewritten :)</span>
-<a name="l00288"></a>00288 myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974" title="Create the image from the current contents of the given window.">CopyScreen</a>((<a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>&amp;)Target);
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <span class="comment">// Enable program</span>
-<a name="l00291"></a>00291 GLCheck(glUseProgramObjectARB(myShaderProgram));
-<a name="l00292"></a>00292
-<a name="l00293"></a>00293 <span class="comment">// Bind textures</span>
-<a name="l00294"></a>00294 TextureTable::const_iterator ItTex = myTextures.begin();
-<a name="l00295"></a>00295 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; myTextures.size(); ++i)
-<a name="l00296"></a>00296 {
-<a name="l00297"></a>00297 <span class="keywordtype">int</span> Location = glGetUniformLocationARB(myShaderProgram, ItTex-&gt;first.c_str());
-<a name="l00298"></a>00298 GLCheck(glUniform1iARB(Location, static_cast&lt;GLint&gt;(i)));
-<a name="l00299"></a>00299 GLCheck(glActiveTextureARB(static_cast&lt;GLenum&gt;(GL_TEXTURE0_ARB + i)));
-<a name="l00300"></a>00300 ItTex-&gt;second-&gt;Bind();
-<a name="l00301"></a>00301 ItTex++;
-<a name="l00302"></a>00302 }
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="comment">// Compute the texture coordinates (in case the texture is larger than the screen, or flipped)</span>
-<a name="l00305"></a>00305 <a class="code" href="classsf_1_1Rect.htm">IntRect</a> FrameBufferRect(0, 0, myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth</a>(), myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight</a>());
-<a name="l00306"></a>00306 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> TexCoords = myFrameBuffer.<a class="code" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56" title="Convert a subrect expressed in pixels, into float texture coordinates.">GetTexCoords</a>(FrameBufferRect);
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 <span class="comment">// Render a fullscreen quad using the effect on our framebuffer</span>
-<a name="l00309"></a>00309 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> Screen = Target.<a class="code" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274" title="Get the current view.">GetView</a>().<a class="code" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd" title="Get the bounding rectangle of the view.">GetRect</a>();
-<a name="l00310"></a>00310 glBegin(GL_QUADS);
-<a name="l00311"></a>00311 glTexCoord2f(TexCoords.Left, TexCoords.Top); glVertex2f(Screen.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Screen.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00312"></a>00312 glTexCoord2f(TexCoords.Right, TexCoords.Top); glVertex2f(Screen.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Screen.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00313"></a>00313 glTexCoord2f(TexCoords.Right, TexCoords.Bottom); glVertex2f(Screen.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Screen.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00314"></a>00314 glTexCoord2f(TexCoords.Left, TexCoords.Bottom); glVertex2f(Screen.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Screen.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00315"></a>00315 glEnd();
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317 <span class="comment">// Disable program</span>
-<a name="l00318"></a>00318 GLCheck(glUseProgramObjectARB(0));
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="comment">// Disable texture units</span>
-<a name="l00321"></a>00321 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; myTextures.size(); ++i)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 GLCheck(glActiveTextureARB(static_cast&lt;GLenum&gt;(GL_TEXTURE0_ARB + i)));
-<a name="l00324"></a>00324 GLCheck(glBindTexture(GL_TEXTURE_2D, 0));
-<a name="l00325"></a>00325 }
-<a name="l00326"></a>00326 GLCheck(glActiveTextureARB(GL_TEXTURE0_ARB));
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329
-<a name="l00334"></a>00334 std::string PostFX::PreprocessEffect(std::istream&amp; File)
-<a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <span class="comment">// Initialize output string</span>
-<a name="l00337"></a>00337 std::set&lt;std::string&gt; myTextures;
-<a name="l00338"></a>00338 std::string Out = <span class="stringliteral">""</span>;
-<a name="l00339"></a>00339
-<a name="l00340"></a>00340 <span class="comment">// Variable declarations</span>
-<a name="l00341"></a>00341 std::string Line;
-<a name="l00342"></a>00342 <span class="keywordflow">while</span> (std::getline(File, Line) &amp;&amp; (Line.substr(0, 6) != <span class="stringliteral">"effect"</span>))
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <span class="comment">// Remove the ending '\r', if any</span>
-<a name="l00345"></a>00345 <span class="keywordflow">if</span> (!Line.empty() &amp;&amp; (Line[Line.size() - 1] == <span class="charliteral">'\r'</span>))
-<a name="l00346"></a>00346 Line.erase(Line.size() - 1);
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 <span class="comment">// Skip empty lines</span>
-<a name="l00349"></a>00349 <span class="keywordflow">if</span> (Line == <span class="stringliteral">""</span>)
-<a name="l00350"></a>00350 <span class="keywordflow">continue</span>;
-<a name="l00351"></a>00351
-<a name="l00352"></a>00352 <span class="comment">// Extract variables type and name and convert them</span>
-<a name="l00353"></a>00353 std::string Type, Name;
-<a name="l00354"></a>00354 std::istringstream iss(Line);
-<a name="l00355"></a>00355 <span class="keywordflow">if</span> (!(iss &gt;&gt; Type &gt;&gt; Name))
-<a name="l00356"></a>00356 {
-<a name="l00357"></a>00357 std::cerr &lt;&lt; <span class="stringliteral">"Post-effect error : invalid declaration (should be \"[type][name]\")"</span> &lt;&lt; std::endl
-<a name="l00358"></a>00358 &lt;&lt; <span class="stringliteral">"&gt; "</span> &lt;&lt; Line &lt;&lt; std::endl;
-<a name="l00359"></a>00359 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00360"></a>00360 }
-<a name="l00361"></a>00361
-<a name="l00362"></a>00362 <span class="keywordflow">if</span> (Type == <span class="stringliteral">"texture"</span>)
-<a name="l00363"></a>00363 {
-<a name="l00364"></a>00364 <span class="comment">// Textures need some checking and conversion</span>
-<a name="l00365"></a>00365 <span class="keywordflow">if</span> (myTextures.find(Name) != myTextures.end())
-<a name="l00366"></a>00366 {
-<a name="l00367"></a>00367 std::cerr &lt;&lt; <span class="stringliteral">"Post-effect error : texture \""</span> &lt;&lt; Name &lt;&lt; <span class="stringliteral">"\" already exists"</span> &lt;&lt; std::endl;
-<a name="l00368"></a>00368 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370
-<a name="l00371"></a>00371 Out += <span class="stringliteral">"uniform sampler2D "</span> + Name + <span class="stringliteral">";\n"</span>;
-<a name="l00372"></a>00372 myTextures.insert(Name);
-<a name="l00373"></a>00373 }
-<a name="l00374"></a>00374 <span class="keywordflow">else</span>
-<a name="l00375"></a>00375 {
-<a name="l00376"></a>00376 <span class="comment">// Other types are just copied to output with "uniform" prefix</span>
-<a name="l00377"></a>00377 Out += <span class="stringliteral">"uniform "</span> + Type + <span class="stringliteral">" "</span> + Name + <span class="stringliteral">";\n"</span>;
-<a name="l00378"></a>00378 }
-<a name="l00379"></a>00379 }
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381 <span class="comment">// Effect code</span>
-<a name="l00382"></a>00382 Out += <span class="stringliteral">"void main()\n"</span>;
-<a name="l00383"></a>00383 <span class="keywordflow">while</span> (std::getline(File, Line))
-<a name="l00384"></a>00384 {
-<a name="l00385"></a>00385 <span class="comment">// Replace any texture lookup "T(" by "texture2D(T, "</span>
-<a name="l00386"></a>00386 <span class="keywordflow">for</span> (std::set&lt;std::string&gt;::const_iterator i = myTextures.begin(); i != myTextures.end(); ++i)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 std::string::size_type Pos = Line.find(*i);
-<a name="l00389"></a>00389 <span class="keywordflow">if</span> (Pos != std::string::npos)
-<a name="l00390"></a>00390 Line.replace(Pos, i-&gt;size() + 1, <span class="stringliteral">"texture2D("</span> + *i + <span class="stringliteral">", "</span>);
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392
-<a name="l00393"></a>00393 <span class="comment">// Replace "_in" by "gl_TexCoord[0].xy"</span>
-<a name="l00394"></a>00394 <span class="keywordflow">for</span> (std::string::size_type Pos = Line.find(<span class="stringliteral">"_in"</span>); Pos != std::string::npos; Pos = Line.find(<span class="stringliteral">"_in"</span>))
-<a name="l00395"></a>00395 Line.replace(Pos, 3, <span class="stringliteral">"gl_TexCoord[0].xy"</span>);
-<a name="l00396"></a>00396
-<a name="l00397"></a>00397 <span class="comment">// Replace "_out" by "gl_FragColor"</span>
-<a name="l00398"></a>00398 <span class="keywordflow">for</span> (std::string::size_type Pos = Line.find(<span class="stringliteral">"_out"</span>); Pos != std::string::npos; Pos = Line.find(<span class="stringliteral">"_out"</span>))
-<a name="l00399"></a>00399 Line.replace(Pos, 4, <span class="stringliteral">"gl_FragColor"</span>);
-<a name="l00400"></a>00400
-<a name="l00401"></a>00401 <span class="comment">// Write modified line to output string</span>
-<a name="l00402"></a>00402 Out += Line + <span class="stringliteral">"\n"</span>;
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 <span class="keywordflow">return</span> Out;
-<a name="l00406"></a>00406 }
-<a name="l00407"></a>00407
-<a name="l00408"></a>00408
-<a name="l00412"></a>00412 <span class="keywordtype">void</span> PostFX::CreateProgram()
-<a name="l00413"></a>00413 {
-<a name="l00414"></a>00414 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00415"></a>00415 priv::GraphicsContext Ctx;
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417 <span class="comment">// Check that we can use post-FX !</span>
-<a name="l00418"></a>00418 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e" title="Tell whether or not the system supports post-effects.">CanUsePostFX</a>())
-<a name="l00419"></a>00419 {
-<a name="l00420"></a>00420 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create a PostFX : your system doesn't support effects"</span> &lt;&lt; std::endl;
-<a name="l00421"></a>00421 <span class="keywordflow">return</span>;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424 <span class="comment">// Destroy effect program if it was already created</span>
-<a name="l00425"></a>00425 <span class="keywordflow">if</span> (myShaderProgram)
-<a name="l00426"></a>00426 GLCheck(glDeleteObjectARB(myShaderProgram));
-<a name="l00427"></a>00427
-<a name="l00428"></a>00428 <span class="comment">// Define vertex shader source (we provide it directly as it doesn't have to change)</span>
-<a name="l00429"></a>00429 <span class="keyword">static</span> <span class="keyword">const</span> std::string VertexShaderSrc =
-<a name="l00430"></a>00430 <span class="stringliteral">"void main()"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"{"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" gl_TexCoord[0] = gl_MultiTexCoord0;"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" gl_Position = ftransform();"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"}"</span>;
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <span class="comment">// Create the program</span>
-<a name="l00437"></a>00437 myShaderProgram = glCreateProgramObjectARB();
-<a name="l00438"></a>00438
-<a name="l00439"></a>00439 <span class="comment">// Create the shaders</span>
-<a name="l00440"></a>00440 GLhandleARB VertexShader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
-<a name="l00441"></a>00441 GLhandleARB FragmentShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
-<a name="l00442"></a>00442
-<a name="l00443"></a>00443 <span class="comment">// Compile them</span>
-<a name="l00444"></a>00444 <span class="keyword">const</span> <span class="keywordtype">char</span>* VertexSrc = VertexShaderSrc.c_str();
-<a name="l00445"></a>00445 <span class="keyword">const</span> <span class="keywordtype">char</span>* FragmentSrc = myFragmentShader.c_str();
-<a name="l00446"></a>00446 GLCheck(glShaderSourceARB(VertexShader, 1, &amp;VertexSrc, NULL));
-<a name="l00447"></a>00447 GLCheck(glShaderSourceARB(FragmentShader, 1, &amp;FragmentSrc, NULL));
-<a name="l00448"></a>00448 GLCheck(glCompileShaderARB(VertexShader));
-<a name="l00449"></a>00449 GLCheck(glCompileShaderARB(FragmentShader));
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 <span class="comment">// Check the compile logs</span>
-<a name="l00452"></a>00452 GLint Success;
-<a name="l00453"></a>00453 GLCheck(glGetObjectParameterivARB(VertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &amp;Success));
-<a name="l00454"></a>00454 <span class="keywordflow">if</span> (Success == GL_FALSE)
-<a name="l00455"></a>00455 {
-<a name="l00456"></a>00456 <span class="keywordtype">char</span> CompileLog[1024];
-<a name="l00457"></a>00457 GLCheck(glGetInfoLogARB(VertexShader, <span class="keyword">sizeof</span>(CompileLog), 0, CompileLog));
-<a name="l00458"></a>00458 std::cerr &lt;&lt; <span class="stringliteral">"Failed to compile post-effect :"</span> &lt;&lt; std::endl
-<a name="l00459"></a>00459 &lt;&lt; CompileLog &lt;&lt; std::endl;
-<a name="l00460"></a>00460 GLCheck(glDeleteObjectARB(VertexShader));
-<a name="l00461"></a>00461 GLCheck(glDeleteObjectARB(FragmentShader));
-<a name="l00462"></a>00462 GLCheck(glDeleteObjectARB(myShaderProgram));
-<a name="l00463"></a>00463 myShaderProgram = 0;
-<a name="l00464"></a>00464 <span class="keywordflow">return</span>;
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 GLCheck(glGetObjectParameterivARB(FragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &amp;Success));
-<a name="l00467"></a>00467 <span class="keywordflow">if</span> (Success == GL_FALSE)
-<a name="l00468"></a>00468 {
-<a name="l00469"></a>00469 <span class="keywordtype">char</span> CompileLog[1024];
-<a name="l00470"></a>00470 GLCheck(glGetInfoLogARB(FragmentShader, <span class="keyword">sizeof</span>(CompileLog), 0, CompileLog));
-<a name="l00471"></a>00471 std::cerr &lt;&lt; <span class="stringliteral">"Failed to compile post-effect :"</span> &lt;&lt; std::endl
-<a name="l00472"></a>00472 &lt;&lt; CompileLog &lt;&lt; std::endl;
-<a name="l00473"></a>00473 GLCheck(glDeleteObjectARB(VertexShader));
-<a name="l00474"></a>00474 GLCheck(glDeleteObjectARB(FragmentShader));
-<a name="l00475"></a>00475 GLCheck(glDeleteObjectARB(myShaderProgram));
-<a name="l00476"></a>00476 myShaderProgram = 0;
-<a name="l00477"></a>00477 <span class="keywordflow">return</span>;
-<a name="l00478"></a>00478 }
-<a name="l00479"></a>00479
-<a name="l00480"></a>00480 <span class="comment">// Attach the shaders to the program</span>
-<a name="l00481"></a>00481 GLCheck(glAttachObjectARB(myShaderProgram, VertexShader));
-<a name="l00482"></a>00482 GLCheck(glAttachObjectARB(myShaderProgram, FragmentShader));
-<a name="l00483"></a>00483
-<a name="l00484"></a>00484 <span class="comment">// We can now delete the shaders</span>
-<a name="l00485"></a>00485 GLCheck(glDeleteObjectARB(VertexShader));
-<a name="l00486"></a>00486 GLCheck(glDeleteObjectARB(FragmentShader));
-<a name="l00487"></a>00487
-<a name="l00488"></a>00488 <span class="comment">// Link the program</span>
-<a name="l00489"></a>00489 GLCheck(glLinkProgramARB(myShaderProgram));
-<a name="l00490"></a>00490
-<a name="l00491"></a>00491 <span class="comment">// Get link log</span>
-<a name="l00492"></a>00492 GLCheck(glGetObjectParameterivARB(myShaderProgram, GL_OBJECT_LINK_STATUS_ARB, &amp;Success));
-<a name="l00493"></a>00493 <span class="keywordflow">if</span> (Success == GL_FALSE)
-<a name="l00494"></a>00494 {
-<a name="l00495"></a>00495 <span class="comment">// Oops... link errors</span>
-<a name="l00496"></a>00496 <span class="keywordtype">char</span> LinkLog[1024];
-<a name="l00497"></a>00497 GLCheck(glGetInfoLogARB(myShaderProgram, <span class="keyword">sizeof</span>(LinkLog), 0, LinkLog));
-<a name="l00498"></a>00498 std::cerr &lt;&lt; <span class="stringliteral">"Failed to link post-effect :"</span> &lt;&lt; std::endl
-<a name="l00499"></a>00499 &lt;&lt; LinkLog &lt;&lt; std::endl;
-<a name="l00500"></a>00500 GLCheck(glDeleteObjectARB(myShaderProgram));
-<a name="l00501"></a>00501 myShaderProgram = 0;
-<a name="l00502"></a>00502 <span class="keywordflow">return</span>;
-<a name="l00503"></a>00503 }
-<a name="l00504"></a>00504 }
-<a name="l00505"></a>00505
-<a name="l00506"></a>00506 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/PostFX_8hpp-source.htm b/doc/html/PostFX_8hpp-source.htm
deleted file mode 100755
index d942a80..0000000
--- a/doc/html/PostFX_8hpp-source.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>PostFX.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_POSTFX_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_POSTFX_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;istream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00043"></a><a class="code" href="classsf_1_1PostFX.htm">00043</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>();
-<a name="l00052"></a>00052
-<a name="l00059"></a>00059 <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; Copy);
-<a name="l00060"></a>00060
-<a name="l00065"></a>00065 ~<a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>();
-<a name="l00066"></a>00066
-<a name="l00075"></a>00075 <span class="keywordtype">bool</span> LoadFromFile(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00076"></a>00076
-<a name="l00085"></a>00085 <span class="keywordtype">bool</span> LoadFromMemory(<span class="keyword">const</span> std::string&amp; Effect);
-<a name="l00086"></a>00086
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> SetParameter(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X);
-<a name="l00095"></a>00095
-<a name="l00103"></a>00103 <span class="keywordtype">void</span> SetParameter(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y);
-<a name="l00104"></a>00104
-<a name="l00112"></a>00112 <span class="keywordtype">void</span> SetParameter(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z);
-<a name="l00113"></a>00113
-<a name="l00121"></a>00121 <span class="keywordtype">void</span> SetParameter(<span class="keyword">const</span> std::string&amp; Name, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z, <span class="keywordtype">float</span> W);
-<a name="l00122"></a>00122
-<a name="l00130"></a>00130 <span class="keywordtype">void</span> SetTexture(<span class="keyword">const</span> std::string&amp; Name, <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>* Texture);
-<a name="l00131"></a>00131
-<a name="l00140"></a>00140 <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; operator =(<span class="keyword">const</span> <a class="code" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a>&amp; Other);
-<a name="l00141"></a>00141
-<a name="l00148"></a>00148 <span class="keyword">static</span> <span class="keywordtype">bool</span> CanUsePostFX();
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <span class="keyword">protected</span> :
-<a name="l00151"></a>00151
-<a name="l00156"></a>00156 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Render(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span>;
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keyword">private</span> :
-<a name="l00159"></a>00159
-<a name="l00169"></a>00169 <span class="keyword">static</span> std::string PreprocessEffect(std::istream&amp; File);
-<a name="l00170"></a>00170
-<a name="l00175"></a>00175 <span class="keywordtype">void</span> CreateProgram();
-<a name="l00176"></a>00176
-<a name="l00178"></a>00178 <span class="comment">// Types</span>
-<a name="l00180"></a>00180 <span class="comment"></span> <span class="keyword">typedef</span> std::map&lt;std::string, const Image*&gt; TextureTable;
-<a name="l00181"></a>00181
-<a name="l00183"></a>00183 <span class="comment">// Member data</span>
-<a name="l00185"></a>00185 <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myShaderProgram;
-<a name="l00186"></a>00186 TextureTable myTextures;
-<a name="l00187"></a>00187 std::string myFragmentShader;
-<a name="l00188"></a>00188 <span class="keyword">mutable</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> myFrameBuffer;
-<a name="l00189"></a>00189 };
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 } <span class="comment">// namespace sf</span>
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="preprocessor">#endif // SFML_POSTFX_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Randomizer_8cpp-source.htm b/doc/html/Randomizer_8cpp-source.htm
deleted file mode 100755
index 3a0a870..0000000
--- a/doc/html/Randomizer_8cpp-source.htm
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Randomizer.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Randomizer.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;time.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace</span>
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="comment">// Set the random numbers sequence seed with the current system time, so that it is always different</span>
-<a name="l00036"></a>00036 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SetRandomSeed()
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Seed = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(time(NULL));
-<a name="l00039"></a>00039 srand(Seed);
-<a name="l00040"></a>00040 <span class="keywordflow">return</span> Seed;
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>sf
-<a name="l00046"></a>00046 {
-<a name="l00048"></a>00048 <span class="comment">// Static member variables</span>
-<a name="l00050"></a>00050 <span class="comment"></span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Randomizer::ourSeed = SetRandomSeed();
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00057"></a><a class="code" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937">00057</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937" title="Set the seed for the generator.">Randomizer::SetSeed</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Seed)
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 srand(Seed);
-<a name="l00060"></a>00060 ourSeed = Seed;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a><a class="code" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48">00067</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48" title="Get the seed used to generate random numbers the generator.">Randomizer::GetSeed</a>()
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> ourSeed;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a><a class="code" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575">00076</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575" title="Get a random float number in a given range.">Randomizer::Random</a>(<span class="keywordtype">float</span> Begin, <span class="keywordtype">float</span> End)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// This is not the best algorithm, but it is fast and will be enough in most cases</span>
-<a name="l00079"></a>00079 <span class="comment">// (see Google for best approaches)</span>
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(rand()) / RAND_MAX * (End - Begin) + Begin;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00088"></a><a class="code" href="classsf_1_1Randomizer.htm#d019beb93fc4779ab8e13af833fac237">00088</a> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575" title="Get a random float number in a given range.">Randomizer::Random</a>(<span class="keywordtype">int</span> Begin, <span class="keywordtype">int</span> End)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <span class="comment">// This is not the best algorithm, but it is fast and will be enough in most cases</span>
-<a name="l00091"></a>00091 <span class="comment">// (see Google for best approaches)</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> rand() % (End - Begin + 1) + Begin;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Randomizer_8hpp-source.htm b/doc/html/Randomizer_8hpp-source.htm
deleted file mode 100755
index c2cee4c..0000000
--- a/doc/html/Randomizer_8hpp-source.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Randomizer.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_RANDOMIZER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_RANDOMIZER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00040"></a><a class="code" href="classsf_1_1Randomizer.htm">00040</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Randomizer.htm" title="Randomizer is an utility class for generating pseudo-random numbers.">Randomizer</a>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keywordtype">void</span> SetSeed(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Seed);
-<a name="l00052"></a>00052
-<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSeed();
-<a name="l00060"></a>00060
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keywordtype">float</span> Random(<span class="keywordtype">float</span> Begin, <span class="keywordtype">float</span> End);
-<a name="l00071"></a>00071
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keywordtype">int</span> Random(<span class="keywordtype">int</span> Begin, <span class="keywordtype">int</span> End);
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keyword">private</span> :
-<a name="l00084"></a>00084
-<a name="l00086"></a>00086 <span class="comment">// Static member variables</span>
-<a name="l00088"></a>00088 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ourSeed;
-<a name="l00089"></a>00089 };
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 } <span class="comment">// namespace sf</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="preprocessor">#endif // SFML_RANDOMIZER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Rect_8hpp-source.htm b/doc/html/Rect_8hpp-source.htm
deleted file mode 100755
index 154ac06..0000000
--- a/doc/html/Rect_8hpp-source.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Rect.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_RECT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_RECT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00040"></a>00040 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00041"></a><a class="code" href="classsf_1_1Rect.htm">00041</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">public</span> :
-<a name="l00044"></a>00044
-<a name="l00049"></a>00049 <a class="code" href="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37" title="Default constructor.">Rect</a>();
-<a name="l00050"></a>00050
-<a name="l00060"></a>00060 <a class="code" href="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37" title="Default constructor.">Rect</a>(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord);
-<a name="l00061"></a>00061
-<a name="l00068"></a>00068 T <a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>() <span class="keyword">const</span>;
-<a name="l00069"></a>00069
-<a name="l00076"></a>00076 T <a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>() <span class="keyword">const</span>;
-<a name="l00077"></a>00077
-<a name="l00085"></a>00085 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd" title="Move the whole rectangle by the given offset.">Offset</a>(T OffsetX, T OffsetY);
-<a name="l00086"></a>00086
-<a name="l00096"></a>00096 <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7" title="Check if a point is inside the rectangle&amp;#39;s area.">Contains</a>(T X, T Y) <span class="keyword">const</span>;
-<a name="l00097"></a>00097
-<a name="l00107"></a>00107 <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272" title="Check intersection between two rectangles.">Intersects</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect&lt;T&gt;</a>&amp; Rectangle, <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect&lt;T&gt;</a>* OverlappingRect = NULL) <span class="keyword">const</span>;
-<a name="l00108"></a>00108
-<a name="l00110"></a>00110 <span class="comment">// Member data</span>
-<a name="l00112"></a><a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">00112</a> <span class="comment"></span> T <a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>;
-<a name="l00113"></a><a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">00113</a> T <a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>;
-<a name="l00114"></a><a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">00114</a> T <a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>;
-<a name="l00115"></a><a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">00115</a> T <a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>;
-<a name="l00116"></a>00116 };
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.inl&gt;</span>
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// Define the most common types</span>
-<a name="l00121"></a>00121 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Rect.htm">Rect&lt;int&gt;</a> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>;
-<a name="l00122"></a>00122 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Rect.htm">Rect&lt;float&gt;</a> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>;
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 } <span class="comment">// namespace sf</span>
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="preprocessor">#endif // SFML_RECT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Rect_8inl-source.htm b/doc/html/Rect_8inl-source.htm
deleted file mode 100755
index 713c1b8..0000000
--- a/doc/html/Rect_8inl-source.htm
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Rect.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00030"></a>00030 Rect&lt;T&gt;::Rect() :
-<a name="l00031"></a>00031 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a> (0),
-<a name="l00032"></a>00032 Top (0),
-<a name="l00033"></a>00033 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Right</a> (0),
-<a name="l00034"></a>00034 Bottom(0)
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 }
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039
-<a name="l00043"></a>00043 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00044"></a>00044 Rect&lt;T&gt;::Rect(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord) :
-<a name="l00045"></a>00045 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a> (LeftCoord),
-<a name="l00046"></a>00046 Top (TopCoord),
-<a name="l00047"></a>00047 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Right</a> (RightCoord),
-<a name="l00048"></a>00048 Bottom(BottomCoord)
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053
-<a name="l00057"></a>00057 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00058"></a>00058 T Rect&lt;T&gt;::GetWidth()<span class="keyword"> const</span>
-<a name="l00059"></a>00059 <span class="keyword"></span>{
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Right</a> - <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a>;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a>00067 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00068"></a>00068 T Rect&lt;T&gt;::GetHeight()<span class="keyword"> const</span>
-<a name="l00069"></a>00069 <span class="keyword"></span>{
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> Bottom - Top;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00077"></a>00077 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00078"></a>00078 <span class="keywordtype">void</span> Rect&lt;T&gt;::Offset(T OffsetX, T OffsetY)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a> += OffsetX;
-<a name="l00081"></a>00081 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Right</a> += OffsetX;
-<a name="l00082"></a>00082 Top += OffsetY;
-<a name="l00083"></a>00083 Bottom += OffsetY;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086
-<a name="l00090"></a>00090 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00091"></a>00091 <span class="keywordtype">bool</span> Rect&lt;T&gt;::Contains(T X, T Y)<span class="keyword"> const</span>
-<a name="l00092"></a>00092 <span class="keyword"></span>{
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> (X &gt;= Left) &amp;&amp; (X &lt;= Right) &amp;&amp; (Y &gt;= Top) &amp;&amp; (Y &lt;= Bottom);
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096
-<a name="l00100"></a>00100 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00101"></a>00101 <span class="keywordtype">bool</span> Rect&lt;T&gt;::Intersects(<span class="keyword">const</span> Rect&lt;T&gt;&amp; Rectangle, Rect&lt;T&gt;* OverlappingRect)<span class="keyword"> const</span>
-<a name="l00102"></a>00102 <span class="keyword"></span>{
-<a name="l00103"></a>00103 <span class="comment">// Compute overlapping rect</span>
-<a name="l00104"></a>00104 Rect Overlapping(std::max(Left, Rectangle.Left),
-<a name="l00105"></a>00105 std::max(Top, Rectangle.Top),
-<a name="l00106"></a>00106 std::min(Right, Rectangle.Right),
-<a name="l00107"></a>00107 std::min(Bottom, Rectangle.Bottom));
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">// If overlapping rect is valid, then there is intersection</span>
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> ((Overlapping.Left &lt; Overlapping.Right) &amp;&amp; (Overlapping.Top &lt; Overlapping.Bottom))
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> (OverlappingRect)
-<a name="l00113"></a>00113 *OverlappingRect = Overlapping;
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 <span class="keywordflow">else</span>
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (OverlappingRect)
-<a name="l00119"></a>00119 *OverlappingRect = Rect(0, 0, 0, 0);
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/RenderTarget_8cpp-source.htm b/doc/html/RenderTarget_8cpp-source.htm
deleted file mode 100755
index 3479896..0000000
--- a/doc/html/RenderTarget_8cpp-source.htm
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>RenderTarget.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/RenderTarget.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">00039</a> <a class="code" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f" title="Default constructor.">RenderTarget::RenderTarget</a>() :
-<a name="l00040"></a>00040 myCurrentView (&amp;myDefaultView),
-<a name="l00041"></a>00041 myPreserveStates(false),
-<a name="l00042"></a>00042 myIsDrawing (false)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00051"></a><a class="code" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">00051</a> <a class="code" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0" title="Destructor.">RenderTarget::~RenderTarget</a>()
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="comment">// Nothing to do</span>
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00060"></a><a class="code" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">00060</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e" title="Clear the entire target with a single color.">RenderTarget::Clear</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; FillColor)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (Activate(<span class="keyword">true</span>))
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="comment">// Clear the frame buffer</span>
-<a name="l00065"></a>00065 GLCheck(glClearColor(FillColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, FillColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, FillColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, FillColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f));
-<a name="l00066"></a>00066 GLCheck(glClear(GL_COLOR_BUFFER_BIT));
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 Activate(<span class="keyword">false</span>);
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a><a class="code" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">00076</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff" title="Draw something into the target.">RenderTarget::Draw</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>&amp; Object)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// Check whether we are called from the outside or from a previous call to Draw</span>
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (!myIsDrawing)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 myIsDrawing = <span class="keyword">true</span>;
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="comment">// Set our target as the current target for rendering</span>
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (Activate(<span class="keyword">true</span>))
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 <span class="comment">// Save the current render states and set the SFML ones</span>
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (myPreserveStates)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 GLCheck(glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT |
-<a name="l00090"></a>00090 GL_TEXTURE_BIT | GL_TRANSFORM_BIT | GL_VIEWPORT_BIT));
-<a name="l00091"></a>00091 GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glPushMatrix());
-<a name="l00092"></a>00092 GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glPushMatrix());
-<a name="l00093"></a>00093 SetRenderStates();
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="comment">// Set the window viewport and transform matrices</span>
-<a name="l00097"></a>00097 GLCheck(glViewport(0, 0, <a class="code" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681" title="Get the width of the rendering region of the target.">GetWidth</a>(), <a class="code" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a" title="Get the height of the rendering region of the target.">GetHeight</a>()));
-<a name="l00098"></a>00098 GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glLoadMatrixf(myCurrentView-&gt;<a class="code" href="classsf_1_1View.htm#98df64926582a286cad8600e432e4db1" title="Get the projection matrix of the view.">GetMatrix</a>().<a class="code" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1" title="Return the elements of the matrix as a 4x4, in an array of 16 floats.">Get4x4Elements</a>()));
-<a name="l00099"></a>00099 GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glLoadIdentity());
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Let the object draw itself</span>
-<a name="l00102"></a>00102 Object.<a class="code" href="classsf_1_1Drawable.htm#849c20578156747914d17d25c2c62682" title="Draw the object into the specified window.">Draw</a>(*<span class="keyword">this</span>);
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="comment">// Restore render states</span>
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (myPreserveStates)
-<a name="l00106"></a>00106 {
-<a name="l00107"></a>00107 GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glPopMatrix());
-<a name="l00108"></a>00108 GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glPopMatrix());
-<a name="l00109"></a>00109 GLCheck(glPopAttrib());
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="comment">// Deactivate rendering on this target</span>
-<a name="l00113"></a>00113 Activate(<span class="keyword">false</span>);
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 myIsDrawing = <span class="keyword">false</span>;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 <span class="keywordflow">else</span>
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="comment">// We are already called from a previous Draw : we don't need to set the states again, just draw the object</span>
-<a name="l00121"></a>00121 Object.<a class="code" href="classsf_1_1Drawable.htm#849c20578156747914d17d25c2c62682" title="Draw the object into the specified window.">Draw</a>(*<span class="keyword">this</span>);
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">00129</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1" title="Change the current active view.">RenderTarget::SetView</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; NewView)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 myCurrentView = &amp;NewView;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134
-<a name="l00138"></a><a class="code" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">00138</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; <a class="code" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274" title="Get the current view.">RenderTarget::GetView</a>()<span class="keyword"> const</span>
-<a name="l00139"></a>00139 <span class="keyword"></span>{
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> *myCurrentView;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143
-<a name="l00147"></a><a class="code" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">00147</a> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; <a class="code" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699" title="Get the default view of the window for read / write.">RenderTarget::GetDefaultView</a>()
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> myDefaultView;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152
-<a name="l00161"></a><a class="code" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">00161</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71" title="Tell SFML to preserve external OpenGL states, at the expense of more CPU charge.">RenderTarget::PreserveOpenGLStates</a>(<span class="keywordtype">bool</span> Preserve)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 myPreserveStates = Preserve;
-<a name="l00164"></a>00164 }
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166
-<a name="l00170"></a><a class="code" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">00170</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24" title="Called by the derived class when it&amp;#39;s ready to be initialized.">RenderTarget::Initialize</a>()
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="comment">// Set the default rendering states</span>
-<a name="l00173"></a>00173 SetRenderStates();
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">// Setup the default view</span>
-<a name="l00176"></a>00176 myDefaultView.<a class="code" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee" title="Rebuild the view from a rectangle.">SetFromRect</a>(<a class="code" href="classsf_1_1Rect.htm">FloatRect</a>(0, 0, static_cast&lt;float&gt;(<a class="code" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681" title="Get the width of the rendering region of the target.">GetWidth</a>()), static_cast&lt;float&gt;(<a class="code" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a" title="Get the height of the rendering region of the target.">GetHeight</a>())));
-<a name="l00177"></a>00177 <a class="code" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1" title="Change the current active view.">SetView</a>(myDefaultView);
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00184"></a>00184 <span class="keywordtype">void</span> RenderTarget::SetRenderStates()
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 GLCheck(glDisable(GL_ALPHA_TEST));
-<a name="l00187"></a>00187 GLCheck(glDisable(GL_DEPTH_TEST));
-<a name="l00188"></a>00188 GLCheck(glDisable(GL_LIGHTING));
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/RenderTarget_8hpp-source.htm b/doc/html/RenderTarget_8hpp-source.htm
deleted file mode 100755
index 64acee2..0000000
--- a/doc/html/RenderTarget_8hpp-source.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>RenderTarget.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_RENDERTARGET_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_RENDERTARGET_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Color.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/View.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">class </span>Drawable;
-<a name="l00039"></a>00039
-<a name="l00043"></a><a class="code" href="classsf_1_1RenderTarget.htm">00043</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00051"></a>00051 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>();
-<a name="l00052"></a>00052
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> Clear(<span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; FillColor = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0));
-<a name="l00060"></a>00060
-<a name="l00067"></a>00067 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(<span class="keyword">const</span> <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>&amp; Object);
-<a name="l00068"></a>00068
-<a name="l00075"></a>00075 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetWidth() <span class="keyword">const</span> = 0;
-<a name="l00076"></a>00076
-<a name="l00083"></a>00083 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetHeight() <span class="keyword">const</span> = 0;
-<a name="l00084"></a>00084
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> SetView(<span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; NewView);
-<a name="l00092"></a>00092
-<a name="l00099"></a>00099 <span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; GetView() <span class="keyword">const</span>;
-<a name="l00100"></a>00100
-<a name="l00107"></a>00107 <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>&amp; GetDefaultView();
-<a name="l00108"></a>00108
-<a name="l00120"></a>00120 <span class="keywordtype">void</span> PreserveOpenGLStates(<span class="keywordtype">bool</span> Preserve);
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keyword">protected</span> :
-<a name="l00123"></a>00123
-<a name="l00128"></a>00128 <a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>();
-<a name="l00129"></a>00129
-<a name="l00134"></a>00134 <span class="keywordtype">void</span> Initialize();
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keyword">private</span> :
-<a name="l00137"></a>00137
-<a name="l00146"></a>00146 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Activate(<span class="keywordtype">bool</span> Active) = 0;
-<a name="l00147"></a>00147
-<a name="l00152"></a>00152 <span class="keywordtype">void</span> SetRenderStates();
-<a name="l00153"></a>00153
-<a name="l00155"></a>00155 <span class="comment">// Member data</span>
-<a name="l00157"></a>00157 <span class="comment"></span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a> myDefaultView;
-<a name="l00158"></a>00158 <span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>* myCurrentView;
-<a name="l00159"></a>00159 <span class="keywordtype">bool</span> myPreserveStates;
-<a name="l00160"></a>00160 <span class="keywordtype">bool</span> myIsDrawing;
-<a name="l00161"></a>00161 };
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 } <span class="comment">// namespace sf</span>
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="preprocessor">#endif // SFML_RENDERTARGET_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/RenderWindow_8cpp-source.htm b/doc/html/RenderWindow_8cpp-source.htm
deleted file mode 100755
index 9e88a5f..0000000
--- a/doc/html/RenderWindow_8cpp-source.htm
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>RenderWindow.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/RenderWindow.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00040"></a><a class="code" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021">00040</a> <a class="code" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021" title="Default constructor.">RenderWindow::RenderWindow</a>()
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="comment">// Nothing to do</span>
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a><a class="code" href="classsf_1_1RenderWindow.htm#da5aeec63eddbfacb6ee093ed0fff082">00049</a> <a class="code" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021" title="Default constructor.">RenderWindow::RenderWindow</a>(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Create</a>(Mode, Title, WindowStyle, Params);
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a><a class="code" href="classsf_1_1RenderWindow.htm#b35dccdc0c735f50edba3acb0cfbea03">00058</a> <a class="code" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021" title="Default constructor.">RenderWindow::RenderWindow</a>(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Create</a>(Handle, Params);
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a><a class="code" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020">00067</a> <a class="code" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020" title="Destructor.">RenderWindow::~RenderWindow</a>()
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="comment">// Nothing to do</span>
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a>00076 <span class="keywordtype">bool</span> RenderWindow::Activate(<span class="keywordtype">bool</span> Active)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// For performances and consistency reasons, we only handle activation</span>
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (Active)
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>();
-<a name="l00081"></a>00081 <span class="keywordflow">else</span>
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">00089</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">RenderWindow::GetWidth</a>()<span class="keyword"> const</span>
-<a name="l00090"></a>00090 <span class="keyword"></span>{
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">sf::Window::GetWidth</a>();
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00098"></a><a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">00098</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">RenderWindow::GetHeight</a>()<span class="keyword"> const</span>
-<a name="l00099"></a>00099 <span class="keyword"></span>{
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">sf::Window::GetHeight</a>();
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103
-<a name="l00107"></a><a class="code" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a">00107</a> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> <a class="code" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a" title="Save the content of the window to an image.">RenderWindow::Capture</a>()<span class="keyword"> const</span>
-<a name="l00108"></a>00108 <span class="keyword"></span>{
-<a name="l00109"></a>00109 <span class="comment">// Get the window dimensions</span>
-<a name="l00110"></a>00110 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width = <a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">GetWidth</a>();
-<a name="l00111"></a>00111 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height = <a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">GetHeight</a>();
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="comment">// Set our window as the current target for rendering</span>
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>())
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="comment">// Make sure we have a valid context</span>
-<a name="l00117"></a>00117 priv::GraphicsContext Ctx;
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">// Get pixels from the backbuffer</span>
-<a name="l00120"></a>00120 std::vector&lt;Uint8&gt; Pixels(Width * Height * 4);
-<a name="l00121"></a>00121 Uint8* PixelsPtr = &amp;Pixels[0];
-<a name="l00122"></a>00122 GLCheck(glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, PixelsPtr));
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Flip the pixels</span>
-<a name="l00125"></a>00125 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Pitch = Width * 4;
-<a name="l00126"></a>00126 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; Height / 2; ++y)
-<a name="l00127"></a>00127 std::swap_ranges(PixelsPtr + y * Pitch, PixelsPtr + (y + 1) * Pitch, PixelsPtr + (Height - y - 1) * Pitch);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// Create an image from the pixel buffer and return it</span>
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>(Width, Height, PixelsPtr);
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 <span class="keywordflow">else</span>
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>(Width, Height, <a class="code" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca" title="White predefined color.">Color::White</a>);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138
-<a name="l00142"></a><a class="code" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17">00142</a> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> <a class="code" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17" title="Convert a point in window coordinates into view coordinates.">RenderWindow::ConvertCoords</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowX, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowY, <span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>* TargetView)<span class="keyword"> const</span>
-<a name="l00143"></a>00143 <span class="keyword"></span>{
-<a name="l00144"></a>00144 <span class="comment">// Use the current view if none has been passed</span>
-<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!TargetView)
-<a name="l00146"></a>00146 TargetView = &amp;<a class="code" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274" title="Get the current view.">GetView</a>();
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="keywordtype">float</span> Left = TargetView-&gt;<a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd" title="Get the center of the view.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> - TargetView-&gt;<a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47" title="Get the half-size of the view.">GetHalfSize</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00149"></a>00149 <span class="keywordtype">float</span> Top = TargetView-&gt;<a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd" title="Get the center of the view.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> - TargetView-&gt;<a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47" title="Get the half-size of the view.">GetHalfSize</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00150"></a>00150 <span class="keywordtype">float</span> Right = TargetView-&gt;<a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd" title="Get the center of the view.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> + TargetView-&gt;<a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47" title="Get the half-size of the view.">GetHalfSize</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00151"></a>00151 <span class="keywordtype">float</span> Bottom = TargetView-&gt;<a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd" title="Get the center of the view.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> + TargetView-&gt;<a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47" title="Get the half-size of the view.">GetHalfSize</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>(Left + WindowX * (Right - Left) / <a class="code" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c" title="Get the width of the rendering region of the window.">GetWidth</a>(),
-<a name="l00154"></a>00154 Top + WindowY * (Bottom - Top) / <a class="code" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447" title="Get the height of the rendering region of the window.">GetHeight</a>());
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00161"></a>00161 <span class="keywordtype">void</span> RenderWindow::OnCreate()
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="comment">// We can now initialize the render target part</span>
-<a name="l00164"></a>00164 <a class="code" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24" title="Called by the derived class when it&amp;#39;s ready to be initialized.">RenderTarget::Initialize</a>();
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/RenderWindow_8hpp-source.htm b/doc/html/RenderWindow_8hpp-source.htm
deleted file mode 100755
index cd4b5d6..0000000
--- a/doc/html/RenderWindow_8hpp-source.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>RenderWindow.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_RENDERWINDOW_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_RENDERWINDOW_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/RenderTarget.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Window/Window.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">class </span>Drawable;
-<a name="l00040"></a>00040
-<a name="l00045"></a><a class="code" href="classsf_1_1RenderWindow.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>, <span class="keyword">public</span> <a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>();
-<a name="l00054"></a>00054
-<a name="l00064"></a>00064 <a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle = <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Style::Resize</a> | <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Style::Close</a>, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00065"></a>00065
-<a name="l00073"></a>00073 <a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00074"></a>00074
-<a name="l00079"></a>00079 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">RenderWindow</a>();
-<a name="l00080"></a>00080
-<a name="l00087"></a>00087 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetWidth() <span class="keyword">const</span>;
-<a name="l00088"></a>00088
-<a name="l00095"></a>00095 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetHeight() <span class="keyword">const</span>;
-<a name="l00096"></a>00096
-<a name="l00103"></a>00103 <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> Capture() <span class="keyword">const</span>;
-<a name="l00104"></a>00104
-<a name="l00115"></a>00115 <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> ConvertCoords(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowX, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowY, <span class="keyword">const</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>* TargetView = NULL) <span class="keyword">const</span>;
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keyword">private</span> :
-<a name="l00118"></a>00118
-<a name="l00123"></a>00123 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCreate();
-<a name="l00124"></a>00124
-<a name="l00129"></a>00129 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Activate(<span class="keywordtype">bool</span> Active);
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 } <span class="comment">// namespace sf</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="preprocessor">#endif // SFML_RENDERWINDOW_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/ResourcePtr_8inl-source.htm b/doc/html/ResourcePtr_8inl-source.htm
deleted file mode 100755
index db285f7..0000000
--- a/doc/html/ResourcePtr_8inl-source.htm
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>ResourcePtr.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00030"></a>00030 ResourcePtr&lt;T&gt;::ResourcePtr() :
-<a name="l00031"></a>00031 myResource(NULL)
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 }
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00040"></a>00040 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00041"></a>00041 <a class="code" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140" title="Default constructor.">ResourcePtr&lt;T&gt;::ResourcePtr</a>(<span class="keyword">const</span> T* Resource) :
-<a name="l00042"></a>00042 myResource(Resource)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (myResource)
-<a name="l00045"></a>00045 myResource-&gt;Connect(*<span class="keyword">this</span>);
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048
-<a name="l00052"></a>00052 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140" title="Default constructor.">ResourcePtr&lt;T&gt;::ResourcePtr</a>(<span class="keyword">const</span> ResourcePtr&lt;T&gt;&amp; Copy) :
-<a name="l00054"></a>00054 myResource(Copy.myResource)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (myResource)
-<a name="l00057"></a>00057 myResource-&gt;Connect(*<span class="keyword">this</span>);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a>00064 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00065"></a>00065 <a class="code" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd" title="Destructor.">ResourcePtr&lt;T&gt;::~ResourcePtr</a>()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (myResource)
-<a name="l00068"></a>00068 myResource-&gt;Disconnect(*<span class="keyword">this</span>);
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071
-<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00076"></a>00076 ResourcePtr&lt;T&gt;&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574" title="Assignment operator from another ResourcePtr.">ResourcePtr&lt;T&gt;::operator =</a>(<span class="keyword">const</span> ResourcePtr&lt;T&gt;&amp; Other)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="keywordflow">if</span> (myResource)
-<a name="l00079"></a>00079 myResource-&gt;Disconnect(*<span class="keyword">this</span>);
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 myResource = Other.myResource;
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (myResource)
-<a name="l00084"></a>00084 myResource-&gt;Connect(*<span class="keyword">this</span>);
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089
-<a name="l00093"></a>00093 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00094"></a>00094 ResourcePtr&lt;T&gt;&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574" title="Assignment operator from another ResourcePtr.">ResourcePtr&lt;T&gt;::operator =</a>(<span class="keyword">const</span> T* Resource)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (myResource)
-<a name="l00097"></a>00097 myResource-&gt;Disconnect(*<span class="keyword">this</span>);
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 myResource = Resource;
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (myResource)
-<a name="l00102"></a>00102 myResource-&gt;Connect(*<span class="keyword">this</span>);
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107
-<a name="l00114"></a>00114 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00115"></a>00115 <a class="code" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de" title="Cast operator to implicitely convert the resource pointer to its raw pointer type...">ResourcePtr&lt;T&gt;::operator const T*</a>()<span class="keyword"> const</span>
-<a name="l00116"></a>00116 <span class="keyword"></span>{
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> myResource;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120
-<a name="l00124"></a>00124 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00125"></a>00125 <span class="keyword">const</span> T&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071" title="Operator * overload to return a reference to the actual resource.">ResourcePtr&lt;T&gt;::operator *</a>()<span class="keyword"> const</span>
-<a name="l00126"></a>00126 <span class="keyword"></span>{
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> *myResource;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130
-<a name="l00134"></a>00134 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00135"></a>00135 <span class="keyword">const</span> T* <a class="code" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a" title="Operator -&amp;gt; overload to return a pointer to the actual resource.">ResourcePtr&lt;T&gt;::operator -&gt;</a>()<span class="keyword"> const</span>
-<a name="l00136"></a>00136 <span class="keyword"></span>{
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> myResource;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140
-<a name="l00145"></a>00145 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00146"></a>00146 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9" title="Function called when the observed resource is about to be destroyed.">ResourcePtr&lt;T&gt;::OnResourceDestroyed</a>()
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 myResource = NULL;
-<a name="l00149"></a>00149 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Resource_8hpp-source.htm b/doc/html/Resource_8hpp-source.htm
deleted file mode 100755
index ef17db3..0000000
--- a/doc/html/Resource_8hpp-source.htm
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Resource.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_RESOURCE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_RESOURCE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;set&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00037"></a>00037 <span class="comment">// These two classes are defined in the same header because</span>
-<a name="l00038"></a>00038 <span class="comment">// they depend on each other. And as they're template classes,</span>
-<a name="l00039"></a>00039 <span class="comment">// they must be entirely defined in header files, which</span>
-<a name="l00040"></a>00040 <span class="comment">// prevents from proper separate compiling</span>
-<a name="l00042"></a>00042 <span class="comment"></span>
-<a name="l00043"></a>00043 <span class="keyword">template</span> &lt;<span class="keyword">typename</span>&gt; <span class="keyword">class </span>ResourcePtr;
-<a name="l00044"></a>00044
-<a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00050"></a><a class="code" href="classsf_1_1Resource.htm">00050</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keyword">protected</span> :
-<a name="l00053"></a>00053
-<a name="l00058"></a>00058 <a class="code" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130" title="Default constructor.">Resource</a>();
-<a name="l00059"></a>00059
-<a name="l00066"></a>00066 <a class="code" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130" title="Default constructor.">Resource</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource&lt;T&gt;</a>&amp; Copy);
-<a name="l00067"></a>00067
-<a name="l00072"></a>00072 <a class="code" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac" title="Destructor.">~Resource</a>();
-<a name="l00073"></a>00073
-<a name="l00082"></a>00082 <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource&lt;T&gt;</a>&amp; <a class="code" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60" title="Assignment operator.">operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource&lt;T&gt;</a>&amp; Other);
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">private</span> :
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr</a>&lt;T&gt;;
-<a name="l00087"></a>00087
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> Connect(<a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; Observer) <span class="keyword">const</span>;
-<a name="l00095"></a>00095
-<a name="l00102"></a>00102 <span class="keywordtype">void</span> Disconnect(<a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; Observer) <span class="keyword">const</span>;
-<a name="l00103"></a>00103
-<a name="l00105"></a>00105 <span class="comment">// Member data</span>
-<a name="l00107"></a>00107 <span class="comment"></span> <span class="keyword">mutable</span> std::set&lt;ResourcePtr&lt;T&gt;*&gt; myObservers;
-<a name="l00108"></a>00108 };
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00115"></a>00115 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00116"></a><a class="code" href="classsf_1_1ResourcePtr.htm">00116</a> <span class="keyword">class </span><a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr</a>
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="keyword">public</span> :
-<a name="l00119"></a>00119
-<a name="l00124"></a>00124 <a class="code" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140" title="Default constructor.">ResourcePtr</a>();
-<a name="l00125"></a>00125
-<a name="l00132"></a>00132 <a class="code" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140" title="Default constructor.">ResourcePtr</a>(<span class="keyword">const</span> T* <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>);
-<a name="l00133"></a>00133
-<a name="l00140"></a>00140 <a class="code" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140" title="Default constructor.">ResourcePtr</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; Copy);
-<a name="l00141"></a>00141
-<a name="l00146"></a>00146 <a class="code" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd" title="Destructor.">~ResourcePtr</a>();
-<a name="l00147"></a>00147
-<a name="l00156"></a>00156 <a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574" title="Assignment operator from another ResourcePtr.">operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; Other);
-<a name="l00157"></a>00157
-<a name="l00166"></a>00166 <a class="code" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&amp;lt;T&amp;gt;), its pointer...">ResourcePtr&lt;T&gt;</a>&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574" title="Assignment operator from another ResourcePtr.">operator =</a>(<span class="keyword">const</span> T* Resource);
-<a name="l00167"></a>00167
-<a name="l00177"></a>00177 <a class="code" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de" title="Cast operator to implicitely convert the resource pointer to its raw pointer type...">operator const T*</a>() <span class="keyword">const</span>;
-<a name="l00178"></a>00178
-<a name="l00185"></a>00185 <span class="keyword">const</span> T&amp; <a class="code" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071" title="Operator * overload to return a reference to the actual resource.">operator *</a>() <span class="keyword">const</span>;
-<a name="l00186"></a>00186
-<a name="l00193"></a>00193 <span class="keyword">const</span> T* <a class="code" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a" title="Operator -&amp;gt; overload to return a pointer to the actual resource.">operator -&gt;</a>() <span class="keyword">const</span>;
-<a name="l00194"></a>00194
-<a name="l00200"></a>00200 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9" title="Function called when the observed resource is about to be destroyed.">OnResourceDestroyed</a>();
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keyword">private</span> :
-<a name="l00203"></a>00203
-<a name="l00205"></a>00205 <span class="comment">// Member data</span>
-<a name="l00207"></a>00207 <span class="comment"></span> <span class="keyword">const</span> T* myResource;
-<a name="l00208"></a>00208 };
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="preprocessor">#include &lt;SFML/System/Resource.inl&gt;</span>
-<a name="l00211"></a>00211 <span class="preprocessor">#include &lt;SFML/System/ResourcePtr.inl&gt;</span>
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 } <span class="comment">// namespace sf</span>
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="preprocessor">#endif // SFML_RESOURCE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Resource_8inl-source.htm b/doc/html/Resource_8inl-source.htm
deleted file mode 100755
index 07df942..0000000
--- a/doc/html/Resource_8inl-source.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Resource.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00030"></a>00030 Resource&lt;T&gt;::Resource()
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032 <span class="comment">// Nothing to do</span>
-<a name="l00033"></a>00033 }
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00040"></a>00040 <a class="code" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130" title="Default constructor.">Resource&lt;T&gt;::Resource</a>(<span class="keyword">const</span> Resource&lt;T&gt;&amp;)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="comment">// Nothing to do, we don't want to copy observers</span>
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00050"></a>00050 <a class="code" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac" title="Destructor.">Resource&lt;T&gt;::~Resource</a>()
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="comment">// Notify all observers</span>
-<a name="l00053"></a>00053 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::set&lt;ResourcePtr&lt;T&gt;*&gt;::iterator i = myObservers.begin(); i != myObservers.end(); ++i)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 (*i)-&gt;OnResourceDestroyed();
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a>00063 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00064"></a>00064 Resource&lt;T&gt;&amp; <a class="code" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60" title="Assignment operator.">Resource&lt;T&gt;::operator =</a>(<span class="keyword">const</span> Resource&lt;T&gt;&amp;)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="comment">// Nothing to do, we don't want to copy observers</span>
-<a name="l00067"></a>00067 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070
-<a name="l00074"></a>00074 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> Resource&lt;T&gt;::Connect(ResourcePtr&lt;T&gt;&amp; Observer)<span class="keyword"> const</span>
-<a name="l00076"></a>00076 <span class="keyword"></span>{
-<a name="l00077"></a>00077 myObservers.insert(&amp;Observer);
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00084"></a>00084 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00085"></a>00085 <span class="keywordtype">void</span> Resource&lt;T&gt;::Disconnect(ResourcePtr&lt;T&gt;&amp; Observer)<span class="keyword"> const</span>
-<a name="l00086"></a>00086 <span class="keyword"></span>{
-<a name="l00087"></a>00087 myObservers.erase(&amp;Observer);
-<a name="l00088"></a>00088 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SFML__Main_8cpp-source.htm b/doc/html/SFML__Main_8cpp-source.htm
deleted file mode 100755
index be5fc18..0000000
--- a/doc/html/SFML__Main_8cpp-source.htm
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SFML_Main.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00027"></a>00027 <span class="comment">// Windows specific : defines the WinMain entry function,</span>
-<a name="l00028"></a>00028 <span class="comment">// so that developers can use the standard main function</span>
-<a name="l00029"></a>00029 <span class="comment">// even in a Win32 Application project, and keep a portable code</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="preprocessor">#if defined(_WIN32)</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span>
-<a name="l00035"></a>00035 <span class="preprocessor"> #include &lt;windows.h&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">extern</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]);
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keywordtype">int</span> WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> main(__argc, __argv);
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="preprocessor">#endif // _WIN32</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SelectorBase_8cpp-source.htm b/doc/html/SelectorBase_8cpp-source.htm
deleted file mode 100755
index 5950ef5..0000000
--- a/doc/html/SelectorBase_8cpp-source.htm
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SelectorBase.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifdef _MSC_VER</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00030"></a>00030 <span class="comment">// Headers</span>
-<a name="l00032"></a>00032 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SelectorBase.hpp&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00040"></a><a class="code" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">00040</a> <a class="code" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d" title="Default constructor.">SelectorBase::SelectorBase</a>() :
-<a name="l00041"></a>00041 myMaxSocket(0)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <a class="code" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0" title="Remove all sockets.">Clear</a>();
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a><a class="code" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">00050</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f" title="Add a socket to watch.">SelectorBase::Add</a>(SocketHelper::SocketType Socket)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 FD_SET(Socket, &amp;mySet);
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordtype">int</span> Size = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Socket);
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (Size &gt; myMaxSocket)
-<a name="l00056"></a>00056 myMaxSocket = Size;
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a><a class="code" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">00063</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e" title="Remove a socket.">SelectorBase::Remove</a>(SocketHelper::SocketType Socket)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 FD_CLR(Socket, &amp;mySet);
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00072"></a><a class="code" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">00072</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0" title="Remove all sockets.">SelectorBase::Clear</a>()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 FD_ZERO(&amp;mySet);
-<a name="l00075"></a>00075 FD_ZERO(&amp;mySetReady);
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 myMaxSocket = 0;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00086"></a><a class="code" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">00086</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">SelectorBase::Wait</a>(<span class="keywordtype">float</span> Timeout)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="comment">// Setup the timeout structure</span>
-<a name="l00089"></a>00089 timeval Time;
-<a name="l00090"></a>00090 Time.tv_sec = <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(Timeout);
-<a name="l00091"></a>00091 Time.tv_usec = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(Timeout * 1000) % 1000) * 1000;
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">// Prepare the set of sockets to return</span>
-<a name="l00094"></a>00094 mySetReady = mySet;
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="comment">// Wait until one of the sockets is ready for reading, or timeout is reached</span>
-<a name="l00097"></a>00097 <span class="keywordtype">int</span> NbSockets = select(myMaxSocket + 1, &amp;mySetReady, NULL, NULL, Timeout &gt; 0 ? &amp;Time : NULL);
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> NbSockets &gt;= 0 ? <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(NbSockets) : 0;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102
-<a name="l00108"></a><a class="code" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">00108</a> SocketHelper::SocketType <a class="code" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389" title="After a call to Wait(), get the Index-th socket which is ready for reading.">SelectorBase::GetSocketReady</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="comment">// The standard FD_xxx interface doesn't define a direct access,</span>
-<a name="l00111"></a>00111 <span class="comment">// so we must go through the whole set to find the socket we're looking for</span>
-<a name="l00112"></a>00112 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; myMaxSocket + 1; ++i)
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (FD_ISSET(i, &amp;mySetReady))
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="comment">// Current socket is ready, but is it the Index-th one ?</span>
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (Index &gt; 0)
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 Index--;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121 <span class="keywordflow">else</span>
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>SocketHelper::SocketType<span class="keyword">&gt;</span>(i);
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="comment">// Invalid index : return an invalid socket</span>
-<a name="l00129"></a>00129 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>();
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SelectorBase_8hpp-source.htm b/doc/html/SelectorBase_8hpp-source.htm
deleted file mode 100755
index 412f4c3..0000000
--- a/doc/html/SelectorBase_8hpp-source.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SelectorBase.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SELECTORBASE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SELECTORBASE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00043"></a><a class="code" href="classsf_1_1SelectorBase.htm">00043</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SelectorBase.htm" title="Private base class for selectors.">SelectorBase</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1SelectorBase.htm" title="Private base class for selectors.">SelectorBase</a>();
-<a name="l00052"></a>00052
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> Add(SocketHelper::SocketType Socket);
-<a name="l00060"></a>00060
-<a name="l00067"></a>00067 <span class="keywordtype">void</span> Remove(SocketHelper::SocketType Socket);
-<a name="l00068"></a>00068
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> Clear();
-<a name="l00074"></a>00074
-<a name="l00085"></a>00085 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Wait(<span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00086"></a>00086
-<a name="l00097"></a>00097 SocketHelper::SocketType GetSocketReady(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index);
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="keyword">private</span> :
-<a name="l00100"></a>00100
-<a name="l00102"></a>00102 <span class="comment">// Member data</span>
-<a name="l00104"></a>00104 <span class="comment"></span> fd_set mySet;
-<a name="l00105"></a>00105 fd_set mySetReady;
-<a name="l00106"></a>00106 <span class="keywordtype">int</span> myMaxSocket;
-<a name="l00107"></a>00107 };
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 } <span class="comment">// namespace sf</span>
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="preprocessor">#endif // SFML_SELECTORBASE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Selector_8hpp-source.htm b/doc/html/Selector_8hpp-source.htm
deleted file mode 100755
index aa97f80..0000000
--- a/doc/html/Selector_8hpp-source.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Selector.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SELECTOR_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SELECTOR_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketUDP.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Network/SocketTCP.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Network/SelectorBase.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;map&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00044"></a><a class="code" href="classsf_1_1Selector.htm">00044</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a> : <span class="keyword">private</span> <a class="code" href="classsf_1_1SelectorBase.htm" title="Private base class for selectors.">SelectorBase</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71" title="Add a socket to watch.">Add</a>(Type Socket);
-<a name="l00055"></a>00055
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6" title="Remove a socket.">Remove</a>(Type Socket);
-<a name="l00063"></a>00063
-<a name="l00068"></a>00068 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4" title="Remove all sockets.">Clear</a>();
-<a name="l00069"></a>00069
-<a name="l00080"></a>00080 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">Wait</a>(<span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00081"></a>00081
-<a name="l00092"></a>00092 Type <a class="code" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9" title="After a call to Wait(), get the Index-th socket which is ready for reading.">GetSocketReady</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index);
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keyword">private</span> :
-<a name="l00095"></a>00095
-<a name="l00097"></a>00097 <span class="comment">// Types</span>
-<a name="l00099"></a>00099 <span class="comment"></span> <span class="keyword">typedef</span> std::map&lt;SocketHelper::SocketType, Type&gt; SocketTable;
-<a name="l00100"></a>00100
-<a name="l00102"></a>00102 <span class="comment">// Member data</span>
-<a name="l00104"></a>00104 <span class="comment"></span> SocketTable mySockets;
-<a name="l00105"></a>00105 };
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="preprocessor">#include &lt;SFML/Network/Selector.inl&gt;</span>
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">// Let's define the two only valid types of Selector</span>
-<a name="l00110"></a>00110 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector&lt;SocketUDP&gt;</a> <a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">SelectorUDP</a>;
-<a name="l00111"></a>00111 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector&lt;SocketTCP&gt;</a> <a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">SelectorTCP</a>;
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 } <span class="comment">// namespace sf</span>
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="preprocessor">#endif // SFML_SELECTOR_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Selector_8inl-source.htm b/doc/html/Selector_8inl-source.htm
deleted file mode 100755
index e6b0c72..0000000
--- a/doc/html/Selector_8inl-source.htm
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Selector.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00030"></a>00030 <span class="keywordtype">void</span> Selector&lt;Type&gt;::Add(Type Socket)
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> (Socket.IsValid())
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <a class="code" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71" title="Add a socket to watch.">SelectorBase::Add</a>(Socket.mySocket);
-<a name="l00035"></a>00035 mySockets[Socket.mySocket] = Socket;
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037 }
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039
-<a name="l00043"></a>00043 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6" title="Remove a socket.">Selector&lt;Type&gt;::Remove</a>(Type Socket)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">typename</span> SocketTable::iterator It = mySockets.find(Socket.mySocket);
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (It != mySockets.end())
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <a class="code" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6" title="Remove a socket.">SelectorBase::Remove</a>(Socket.mySocket);
-<a name="l00050"></a>00050 mySockets.erase(It);
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a>00058 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4" title="Remove all sockets.">Selector&lt;Type&gt;::Clear</a>()
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <a class="code" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4" title="Remove all sockets.">SelectorBase::Clear</a>();
-<a name="l00062"></a>00062 mySockets.clear();
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065
-<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00072"></a>00072 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">Selector&lt;Type&gt;::Wait</a>(<span class="keywordtype">float</span> Timeout)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="comment">// No socket in the selector : return 0</span>
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (mySockets.empty())
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> 0;
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">SelectorBase::Wait</a>(Timeout);
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00087"></a>00087 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt;
-<a name="l00088"></a>00088 Type <a class="code" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9" title="After a call to Wait(), get the Index-th socket which is ready for reading.">Selector&lt;Type&gt;::GetSocketReady</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 SocketHelper::SocketType Socket = <a class="code" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9" title="After a call to Wait(), get the Index-th socket which is ready for reading.">SelectorBase::GetSocketReady</a>(Index);
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keyword">typename</span> SocketTable::const_iterator It = mySockets.find(Socket);
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (It != mySockets.end())
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> It-&gt;second;
-<a name="l00095"></a>00095 <span class="keywordflow">else</span>
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> Type(Socket);
-<a name="l00097"></a>00097 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Shape_8cpp-source.htm b/doc/html/Shape_8cpp-source.htm
deleted file mode 100755
index eb01e8d..0000000
--- a/doc/html/Shape_8cpp-source.htm
+++ /dev/null
@@ -1,381 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Shape.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Shape.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;math.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a><a class="code" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960">00038</a> <a class="code" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960" title="Default constructor.">Shape::Shape</a>() :
-<a name="l00039"></a>00039 myOutline (0.f),
-<a name="l00040"></a>00040 myIsFillEnabled (true),
-<a name="l00041"></a>00041 myIsOutlineEnabled(true),
-<a name="l00042"></a>00042 myIsCompiled (false)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="comment">// Put a placeholder for the center of the shape</span>
-<a name="l00045"></a>00045 myPoints.push_back(Point());
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048
-<a name="l00052"></a><a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92">00052</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">Shape::AddPoint</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(X, Y), Col, OutlineCol);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057
-<a name="l00061"></a><a class="code" href="classsf_1_1Shape.htm#212f5b1d630e820989a53dcbf46d33e4">00061</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">Shape::AddPoint</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 myPoints.push_back(Point(Position, Col, OutlineCol));
-<a name="l00064"></a>00064 myIsCompiled = <span class="keyword">false</span>;
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00071"></a><a class="code" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350">00071</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">Shape::GetNbPoints</a>()<span class="keyword"> const</span>
-<a name="l00072"></a>00072 <span class="keyword"></span>{
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(myPoints.size() - 1);
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076
-<a name="l00081"></a><a class="code" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae">00081</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae" title="Enable or disable filling the shape.">Shape::EnableFill</a>(<span class="keywordtype">bool</span> Enable)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 myIsFillEnabled = Enable;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086
-<a name="l00091"></a><a class="code" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26">00091</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26" title="Enable or disable drawing the shape outline.">Shape::EnableOutline</a>(<span class="keywordtype">bool</span> Enable)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 myIsOutlineEnabled = Enable;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096
-<a name="l00100"></a><a class="code" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e">00100</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e" title="Set the position of a point.">Shape::SetPointPosition</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position)
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 myPoints[Index + 1].Position = Position;
-<a name="l00103"></a>00103 myIsCompiled = <span class="keyword">false</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106
-<a name="l00110"></a><a class="code" href="classsf_1_1Shape.htm#e3000e995446507929c24b3abbcce18c">00110</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e" title="Set the position of a point.">Shape::SetPointPosition</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <a class="code" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e" title="Set the position of a point.">SetPointPosition</a>(Index, <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(X, Y));
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00119"></a><a class="code" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769">00119</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769" title="Set the color of a point.">Shape::SetPointColor</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 myPoints[Index + 1].Col = Col;
-<a name="l00122"></a>00122 myIsCompiled = <span class="keyword">false</span>;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe">00129</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe" title="Set the outline color of a point.">Shape::SetPointOutlineColor</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 myPoints[Index + 1].OutlineCol = OutlineCol;
-<a name="l00132"></a>00132 myIsCompiled = <span class="keyword">false</span>;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00139"></a><a class="code" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65">00139</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65" title="Change the width of the shape outline.">Shape::SetOutlineWidth</a>(<span class="keywordtype">float</span> Width)
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 myOutline = Width;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a><a class="code" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436">00148</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; <a class="code" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436" title="Get the position of a point.">Shape::GetPointPosition</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)<span class="keyword"> const</span>
-<a name="l00149"></a>00149 <span class="keyword"></span>{
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> myPoints[Index + 1].Position;
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153
-<a name="l00157"></a><a class="code" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92">00157</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92" title="Get the color of a point.">Shape::GetPointColor</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)<span class="keyword"> const</span>
-<a name="l00158"></a>00158 <span class="keyword"></span>{
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> myPoints[Index + 1].Col;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162
-<a name="l00166"></a><a class="code" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8">00166</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; <a class="code" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8" title="Get the outline color of a point.">Shape::GetPointOutlineColor</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)<span class="keyword"> const</span>
-<a name="l00167"></a>00167 <span class="keyword"></span>{
-<a name="l00168"></a>00168 <span class="keywordflow">return</span> myPoints[Index + 1].OutlineCol;
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171
-<a name="l00175"></a><a class="code" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087">00175</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087" title="Get the width of the shape outline.">Shape::GetOutlineWidth</a>()<span class="keyword"> const</span>
-<a name="l00176"></a>00176 <span class="keyword"></span>{
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> myOutline;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00184"></a><a class="code" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f">00184</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f" title="Create a shape made of a single line (use floats).">Shape::Line</a>(<span class="keywordtype">float</span> P1X, <span class="keywordtype">float</span> P1Y, <span class="keywordtype">float</span> P2X, <span class="keywordtype">float</span> P2Y, <span class="keywordtype">float</span> Thickness, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> P1(P1X, P1Y);
-<a name="l00187"></a>00187 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> P2(P2X, P2Y);
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="comment">// Compute the extrusion direction</span>
-<a name="l00190"></a>00190 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Normal;
-<a name="l00191"></a>00191 ComputeNormal(P1, P2, Normal);
-<a name="l00192"></a>00192 Normal *= Thickness / 2;
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="comment">// Create the shape's points</span>
-<a name="l00195"></a>00195 <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> S;
-<a name="l00196"></a>00196 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(P1 - Normal, Col, OutlineCol);
-<a name="l00197"></a>00197 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(P2 - Normal, Col, OutlineCol);
-<a name="l00198"></a>00198 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(P2 + Normal, Col, OutlineCol);
-<a name="l00199"></a>00199 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(P1 + Normal, Col, OutlineCol);
-<a name="l00200"></a>00200 S.<a class="code" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65" title="Change the width of the shape outline.">SetOutlineWidth</a>(Outline);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="comment">// Compile it</span>
-<a name="l00203"></a>00203 S.<a class="code" href="classsf_1_1Shape.htm#b51218d7bcc5444b81de34afd31c4c33" title="Compile the shape : compute its center and its outline.">Compile</a>();
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keywordflow">return</span> S;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208
-<a name="l00212"></a><a class="code" href="classsf_1_1Shape.htm#264e5374cac72a520fcf69c3bbdfe688">00212</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f" title="Create a shape made of a single line (use floats).">Shape::Line</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P2, <span class="keywordtype">float</span> Thickness, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f" title="Create a shape made of a single line (use floats).">Shape::Line</a>(P1.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, P1.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>, P2.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, P2.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>, Thickness, Col, Outline, OutlineCol);
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217
-<a name="l00221"></a><a class="code" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498">00221</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498" title="Create a shape made of a single rectangle (use floats).">Shape::Rectangle</a>(<span class="keywordtype">float</span> P1X, <span class="keywordtype">float</span> P1Y, <span class="keywordtype">float</span> P2X, <span class="keywordtype">float</span> P2Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 <span class="comment">// Create the shape's points</span>
-<a name="l00224"></a>00224 <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> S;
-<a name="l00225"></a>00225 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(P1X, P1Y), Col, OutlineCol);
-<a name="l00226"></a>00226 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(P2X, P1Y), Col, OutlineCol);
-<a name="l00227"></a>00227 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(P2X, P2Y), Col, OutlineCol);
-<a name="l00228"></a>00228 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(P1X, P2Y), Col, OutlineCol);
-<a name="l00229"></a>00229 S.<a class="code" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65" title="Change the width of the shape outline.">SetOutlineWidth</a>(Outline);
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="comment">// Compile it</span>
-<a name="l00232"></a>00232 S.<a class="code" href="classsf_1_1Shape.htm#b51218d7bcc5444b81de34afd31c4c33" title="Compile the shape : compute its center and its outline.">Compile</a>();
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> S;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237
-<a name="l00241"></a><a class="code" href="classsf_1_1Shape.htm#7273d55fb2e6ede4d901428a97579169">00241</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498" title="Create a shape made of a single rectangle (use floats).">Shape::Rectangle</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P2, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498" title="Create a shape made of a single rectangle (use floats).">Shape::Rectangle</a>(P1.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, P1.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>, P2.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, P2.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>, Col, Outline, OutlineCol);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246
-<a name="l00250"></a><a class="code" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0">00250</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0" title="Create a shape made of a single circle (use floats).">Shape::Circle</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Radius, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> NbSegments = 40;
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="comment">// Create the points set</span>
-<a name="l00255"></a>00255 <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> S;
-<a name="l00256"></a>00256 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Center(X, Y);
-<a name="l00257"></a>00257 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; NbSegments; ++i)
-<a name="l00258"></a>00258 {
-<a name="l00259"></a>00259 <span class="keywordtype">float</span> Angle = i * 2 * 3.141592654f / NbSegments;
-<a name="l00260"></a>00260 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Offset(cos(Angle), sin(Angle));
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 S.<a class="code" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92" title="Add a point to the shape.">AddPoint</a>(Center + Offset * Radius, Col, OutlineCol);
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 <span class="comment">// Compile it</span>
-<a name="l00266"></a>00266 S.<a class="code" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65" title="Change the width of the shape outline.">SetOutlineWidth</a>(Outline);
-<a name="l00267"></a>00267 S.<a class="code" href="classsf_1_1Shape.htm#b51218d7bcc5444b81de34afd31c4c33" title="Compile the shape : compute its center and its outline.">Compile</a>();
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="keywordflow">return</span> S;
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272
-<a name="l00276"></a><a class="code" href="classsf_1_1Shape.htm#b7b5082c253cf624b76de040f9c017d4">00276</a> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> <a class="code" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0" title="Create a shape made of a single circle (use floats).">Shape::Circle</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Center, <span class="keywordtype">float</span> Radius, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0" title="Create a shape made of a single circle (use floats).">Shape::Circle</a>(Center.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Center.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>, Radius, Col, Outline, OutlineCol);
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281
-<a name="l00285"></a><a class="code" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31">00285</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31" title="/see Drawable::Render">Shape::Render</a>(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp;)<span class="keyword"> const</span>
-<a name="l00286"></a>00286 <span class="keyword"></span>{
-<a name="l00287"></a>00287 <span class="comment">// Make sure the shape has at least 3 points (4 if we count the center)</span>
-<a name="l00288"></a>00288 <span class="keywordflow">if</span> (myPoints.size() &lt; 4)
-<a name="l00289"></a>00289 <span class="keywordflow">return</span>;
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <span class="comment">// Make sure the shape is compiled</span>
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (!myIsCompiled)
-<a name="l00293"></a>00293 <span class="keyword">const_cast&lt;</span><a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;Compile();
-<a name="l00294"></a>00294
-<a name="l00295"></a>00295 <span class="comment">// Shapes only use color, no texture</span>
-<a name="l00296"></a>00296 GLCheck(glDisable(GL_TEXTURE_2D));
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 <span class="comment">// Draw the shape</span>
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (myIsFillEnabled)
-<a name="l00300"></a>00300 {
-<a name="l00301"></a>00301 glBegin(GL_TRIANGLE_FAN);
-<a name="l00302"></a>00302 {
-<a name="l00303"></a>00303 <span class="keywordflow">for</span> (std::vector&lt;Point&gt;::const_iterator i = myPoints.begin(); i != myPoints.end(); ++i)
-<a name="l00304"></a>00304 {
-<a name="l00305"></a>00305 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> PointColor = i-&gt;Col * <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00306"></a>00306 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00307"></a>00307 glVertex2f(i-&gt;Position.x, i-&gt;Position.y);
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="comment">// Close the shape by duplicating the first point at the end</span>
-<a name="l00311"></a>00311 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> PointColor = myPoints[1].Col * <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00312"></a>00312 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00313"></a>00313 glVertex2f(myPoints[1].Position.x, myPoints[1].Position.y);
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315 glEnd();
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318 <span class="comment">// Draw the outline</span>
-<a name="l00319"></a>00319 <span class="keywordflow">if</span> (myIsOutlineEnabled)
-<a name="l00320"></a>00320 {
-<a name="l00321"></a>00321 glBegin(GL_TRIANGLE_STRIP);
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; myPoints.size(); ++i)
-<a name="l00324"></a>00324 {
-<a name="l00325"></a>00325 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> PointColor = myPoints[i].OutlineCol * <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00326"></a>00326 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00327"></a>00327 glVertex2f(myPoints[i].Position.x, myPoints[i].Position.y);
-<a name="l00328"></a>00328 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00329"></a>00329 glVertex2f(myPoints[i].Position.x + myPoints[i].Normal.x * myOutline, myPoints[i].Position.y + myPoints[i].Normal.y * myOutline);
-<a name="l00330"></a>00330 }
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 <span class="comment">// Close the shape by duplicating the first point at the end</span>
-<a name="l00333"></a>00333 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> PointColor = myPoints[1].OutlineCol * <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00334"></a>00334 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00335"></a>00335 glVertex2f(myPoints[1].Position.x, myPoints[1].Position.y);
-<a name="l00336"></a>00336 glColor4f(PointColor.<a class="code" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1" title="Red component.">r</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5" title="Green component.">g</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb" title="Blue component.">b</a> / 255.f, PointColor.<a class="code" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831" title="Alpha (transparency) component.">a</a> / 255.f);
-<a name="l00337"></a>00337 glVertex2f(myPoints[1].Position.x + myPoints[1].Normal.x * myOutline, myPoints[1].Position.y + myPoints[1].Normal.y * myOutline);
-<a name="l00338"></a>00338 }
-<a name="l00339"></a>00339 glEnd();
-<a name="l00340"></a>00340 }
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343
-<a name="l00347"></a>00347 <span class="keywordtype">void</span> Shape::Compile()
-<a name="l00348"></a>00348 {
-<a name="l00349"></a>00349 <span class="comment">// Compute the center</span>
-<a name="l00350"></a>00350 <span class="keywordtype">float</span> NbPoints = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myPoints.size() - 1);
-<a name="l00351"></a>00351 <span class="keywordtype">float</span> R = 0, G = 0, B = 0, A = 0;
-<a name="l00352"></a>00352 Point Center(<a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0, 0));
-<a name="l00353"></a>00353 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; myPoints.size(); ++i)
-<a name="l00354"></a>00354 {
-<a name="l00355"></a>00355 Center.Position += myPoints[i].Position / NbPoints;
-<a name="l00356"></a>00356 R += myPoints[i].Col.r / NbPoints;
-<a name="l00357"></a>00357 G += myPoints[i].Col.g / NbPoints;
-<a name="l00358"></a>00358 B += myPoints[i].Col.b / NbPoints;
-<a name="l00359"></a>00359 A += myPoints[i].Col.a / NbPoints;
-<a name="l00360"></a>00360 }
-<a name="l00361"></a>00361 Center.Col.r = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(R);
-<a name="l00362"></a>00362 Center.Col.g = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(G);
-<a name="l00363"></a>00363 Center.Col.b = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(B);
-<a name="l00364"></a>00364 Center.Col.a = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>(A);
-<a name="l00365"></a>00365 myPoints[0] = Center;
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <span class="comment">// Compute the outline</span>
-<a name="l00368"></a>00368 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; myPoints.size(); ++i)
-<a name="l00369"></a>00369 {
-<a name="l00370"></a>00370 <span class="comment">// Get the two segments shared by the current point</span>
-<a name="l00371"></a>00371 Point&amp; P0 = (i == 1) ? myPoints[myPoints.size() - 1] : myPoints[i - 1];
-<a name="l00372"></a>00372 Point&amp; P1 = myPoints[i];
-<a name="l00373"></a>00373 Point&amp; P2 = (i == myPoints.size() - 1) ? myPoints[1] : myPoints[i + 1];
-<a name="l00374"></a>00374
-<a name="l00375"></a>00375 <span class="comment">// Compute their normal</span>
-<a name="l00376"></a>00376 Vector2f Normal1, Normal2;
-<a name="l00377"></a>00377 <span class="keywordflow">if</span> (!ComputeNormal(P0.Position, P1.Position, Normal1) || !ComputeNormal(P1.Position, P2.Position, Normal2))
-<a name="l00378"></a>00378 <span class="keywordflow">continue</span>;
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="comment">// Add them to get the extrusion direction</span>
-<a name="l00381"></a>00381 <span class="keywordtype">float</span> Factor = 1.f + (Normal1.x * Normal2.x + Normal1.y * Normal2.y);
-<a name="l00382"></a>00382 P1.Normal = (Normal1 + Normal2) / Factor;
-<a name="l00383"></a>00383
-<a name="l00384"></a>00384 <span class="comment">// Make sure it points towards the outside of the shape</span>
-<a name="l00385"></a>00385 <span class="keywordtype">float</span> Dot = (P1.Position.x - Center.Position.x) * P1.Normal.x + (P1.Position.y - Center.Position.y) * P1.Normal.y;
-<a name="l00386"></a>00386 <span class="keywordflow">if</span> (Dot &lt; 0)
-<a name="l00387"></a>00387 P1.Normal = -P1.Normal;
-<a name="l00388"></a>00388 }
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390 myIsCompiled = <span class="keyword">true</span>;
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392
-<a name="l00393"></a>00393
-<a name="l00397"></a>00397 <span class="keywordtype">bool</span> Shape::ComputeNormal(<span class="keyword">const</span> Vector2f&amp; P1, <span class="keyword">const</span> Vector2f&amp; P2, Vector2f&amp; Normal)
-<a name="l00398"></a>00398 {
-<a name="l00399"></a>00399 Normal.x = P1.y - P2.y;
-<a name="l00400"></a>00400 Normal.y = P2.x - P1.x;
-<a name="l00401"></a>00401
-<a name="l00402"></a>00402 <span class="keywordtype">float</span> Len = sqrt(Normal.x * Normal.x + Normal.y * Normal.y);
-<a name="l00403"></a>00403 <span class="keywordflow">if</span> (Len == 0.f)
-<a name="l00404"></a>00404 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00405"></a>00405
-<a name="l00406"></a>00406 Normal.x /= Len;
-<a name="l00407"></a>00407 Normal.y /= Len;
-<a name="l00408"></a>00408
-<a name="l00409"></a>00409 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00410"></a>00410 }
-<a name="l00411"></a>00411
-<a name="l00412"></a>00412
-<a name="l00416"></a>00416 Shape::Point::Point(<span class="keyword">const</span> Vector2f&amp; Pos, <span class="keyword">const</span> Color&amp; C, <span class="keyword">const</span> Color&amp; OutlineC) :
-<a name="l00417"></a>00417 Position (Pos),
-<a name="l00418"></a>00418 Normal (0.f, 0.f),
-<a name="l00419"></a>00419 Col (C),
-<a name="l00420"></a>00420 OutlineCol(OutlineC)
-<a name="l00421"></a>00421 {
-<a name="l00422"></a>00422
-<a name="l00423"></a>00423 }
-<a name="l00424"></a>00424
-<a name="l00425"></a>00425 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Shape_8hpp-source.htm b/doc/html/Shape_8hpp-source.htm
deleted file mode 100755
index f45d290..0000000
--- a/doc/html/Shape_8hpp-source.htm
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Shape.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SHAPE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SHAPE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00043"></a><a class="code" href="classsf_1_1Shape.htm">00043</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> : <span class="keyword">public</span> sf::<a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a>();
-<a name="l00052"></a>00052
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> AddPoint(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255), <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0));
-<a name="l00062"></a>00062
-<a name="l00071"></a>00071 <span class="keywordtype">void</span> AddPoint(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255), <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(0, 0, 0));
-<a name="l00072"></a>00072
-<a name="l00079"></a>00079 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetNbPoints() <span class="keyword">const</span>;
-<a name="l00080"></a>00080
-<a name="l00088"></a>00088 <span class="keywordtype">void</span> EnableFill(<span class="keywordtype">bool</span> Enable);
-<a name="l00089"></a>00089
-<a name="l00097"></a>00097 <span class="keywordtype">void</span> EnableOutline(<span class="keywordtype">bool</span> Enable);
-<a name="l00098"></a>00098
-<a name="l00106"></a>00106 <span class="keywordtype">void</span> SetPointPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position);
-<a name="l00107"></a>00107
-<a name="l00116"></a>00116 <span class="keywordtype">void</span> SetPointPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y);
-<a name="l00117"></a>00117
-<a name="l00125"></a>00125 <span class="keywordtype">void</span> SetPointColor(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col);
-<a name="l00126"></a>00126
-<a name="l00134"></a>00134 <span class="keywordtype">void</span> SetPointOutlineColor(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol);
-<a name="l00135"></a>00135
-<a name="l00142"></a>00142 <span class="keywordtype">void</span> SetOutlineWidth(<span class="keywordtype">float</span> Width);
-<a name="l00143"></a>00143
-<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; GetPointPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index) <span class="keyword">const</span>;
-<a name="l00153"></a>00153
-<a name="l00162"></a>00162 <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; GetPointColor(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index) <span class="keyword">const</span>;
-<a name="l00163"></a>00163
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; GetPointOutlineColor(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index) <span class="keyword">const</span>;
-<a name="l00173"></a>00173
-<a name="l00180"></a>00180 <span class="keywordtype">float</span> GetOutlineWidth() <span class="keyword">const</span>;
-<a name="l00181"></a>00181
-<a name="l00193"></a>00193 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Line(<span class="keywordtype">float</span> P1X, <span class="keywordtype">float</span> P1Y, <span class="keywordtype">float</span> P2X, <span class="keywordtype">float</span> P2Y, <span class="keywordtype">float</span> Thickness, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00194"></a>00194
-<a name="l00206"></a>00206 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Line(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P2, <span class="keywordtype">float</span> Thickness, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00207"></a>00207
-<a name="l00218"></a>00218 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Rectangle(<span class="keywordtype">float</span> P1X, <span class="keywordtype">float</span> P1Y, <span class="keywordtype">float</span> P2X, <span class="keywordtype">float</span> P2Y, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00219"></a>00219
-<a name="l00230"></a>00230 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Rectangle(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P2, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00231"></a>00231
-<a name="l00242"></a>00242 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Circle(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Radius, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00243"></a>00243
-<a name="l00254"></a>00254 <span class="keyword">static</span> <a class="code" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> Circle(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Center, <span class="keywordtype">float</span> Radius, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col, <span class="keywordtype">float</span> Outline = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineCol = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">sf::Color</a>(0, 0, 0));
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 <span class="keyword">protected</span> :
-<a name="l00257"></a>00257
-<a name="l00262"></a>00262 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Render(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span>;
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 <span class="keyword">private</span> :
-<a name="l00265"></a>00265
-<a name="l00270"></a>00270 <span class="keywordtype">void</span> Compile();
-<a name="l00271"></a>00271
-<a name="l00282"></a>00282 <span class="keyword">static</span> <span class="keywordtype">bool</span> ComputeNormal(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; P2, <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Normal);
-<a name="l00283"></a>00283
-<a name="l00287"></a>00287 <span class="keyword">struct </span>Point
-<a name="l00288"></a>00288 {
-<a name="l00289"></a>00289 Point(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Pos = <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; C = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255), <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; OutlineC = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255));
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Position;
-<a name="l00292"></a>00292 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> Normal;
-<a name="l00293"></a>00293 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> Col;
-<a name="l00294"></a>00294 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> OutlineCol;
-<a name="l00295"></a>00295 };
-<a name="l00296"></a>00296
-<a name="l00298"></a>00298 <span class="comment">// Member data</span>
-<a name="l00300"></a>00300 <span class="comment"></span> std::vector&lt;Point&gt; myPoints;
-<a name="l00301"></a>00301 <span class="keywordtype">float</span> myOutline;
-<a name="l00302"></a>00302 <span class="keywordtype">bool</span> myIsFillEnabled;
-<a name="l00303"></a>00303 <span class="keywordtype">bool</span> myIsOutlineEnabled;
-<a name="l00304"></a>00304 <span class="keywordtype">bool</span> myIsCompiled;
-<a name="l00305"></a>00305 };
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 } <span class="comment">// namespace sf</span>
-<a name="l00308"></a>00308
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="preprocessor">#endif // SFML_SHAPE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sleep_8cpp-source.htm b/doc/html/Sleep_8cpp-source.htm
deleted file mode 100755
index 4d879a4..0000000
--- a/doc/html/Sleep_8cpp-source.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sleep.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Sleep.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/System/Platform.hpp&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a>00037 <span class="keywordtype">void</span> Sleep(<span class="keywordtype">float</span> Duration)
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (Duration &gt;= 0)
-<a name="l00040"></a>00040 priv::Platform::Sleep(Duration);
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sleep_8hpp-source.htm b/doc/html/Sleep_8hpp-source.htm
deleted file mode 100755
index a091a6e..0000000
--- a/doc/html/Sleep_8hpp-source.htm
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sleep.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SLEEP_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SLEEP_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> SFML_API Sleep(<span class="keywordtype">float</span> Duration);
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 } <span class="comment">// namespace sf</span>
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="preprocessor">#endif // SFML_SLEEP_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketHelper_8cpp-source.htm b/doc/html/SocketHelper_8cpp-source.htm
deleted file mode 100755
index 04a741d..0000000
--- a/doc/html/SocketHelper_8cpp-source.htm
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketHelper.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00036"></a><a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458">00036</a> SocketHelper::SocketType <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>()
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keywordflow">return</span> INVALID_SOCKET;
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041
-<a name="l00045"></a><a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232">00045</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(SocketHelper::SocketType Socket)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keywordflow">return</span> closesocket(Socket) != -1;
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8">00054</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8" title="Set a socket as blocking or non-blocking.">SocketHelper::SetBlocking</a>(SocketHelper::SocketType Socket, <span class="keywordtype">bool</span> Block)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Blocking = Block ? 0 : 1;
-<a name="l00057"></a>00057 ioctlsocket(Socket, FIONBIO, &amp;Blocking);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83">00064</a> Socket::Status <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>()
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="keywordflow">switch</span> (WSAGetLastError())
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keywordflow">case</span> WSAEWOULDBLOCK : <span class="keywordflow">return</span> Socket::NotReady;
-<a name="l00069"></a>00069 <span class="keywordflow">case</span> WSAECONNABORTED : <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00070"></a>00070 <span class="keywordflow">case</span> WSAECONNRESET : <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00071"></a>00071 <span class="keywordflow">case</span> WSAETIMEDOUT : <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00072"></a>00072 <span class="keywordflow">case</span> WSAENETRESET : <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00073"></a>00073 <span class="keywordflow">case</span> WSAENOTCONN : <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00074"></a>00074 <span class="keywordflow">default</span> : <span class="keywordflow">return</span> Socket::Error;
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078
-<a name="l00080"></a>00080 <span class="comment">// Windows needs some initialization and cleanup to get</span>
-<a name="l00081"></a>00081 <span class="comment">// sockets working properly... so let's create a class that will</span>
-<a name="l00082"></a>00082 <span class="comment">// do it automatically</span>
-<a name="l00084"></a>00084 <span class="comment"></span><span class="keyword">struct </span>SocketInitializer
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 SocketInitializer()
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 WSADATA InitData;
-<a name="l00089"></a>00089 WSAStartup(MAKEWORD(2,2), &amp;InitData);
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 ~SocketInitializer()
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 WSACleanup();
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 };
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 SocketInitializer GlobalInitializer;
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketHelper_8hpp-source.htm b/doc/html/SocketHelper_8hpp-source.htm
deleted file mode 100755
index 881d6ae..0000000
--- a/doc/html/SocketHelper_8hpp-source.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketHelper.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOCKETHELPER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOCKETHELPER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>Socket
-<a name="l00037"></a>00037 {
-<a name="l00041"></a>00041 <span class="keyword">enum</span> Status
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 Done,
-<a name="l00044"></a>00044 NotReady,
-<a name="l00045"></a>00045 Disconnected,
-<a name="l00046"></a>00046 Error
-<a name="l00047"></a>00047 };
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 } <span class="comment">// namespace sf</span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="preprocessor">#ifdef SFML_SYSTEM_WINDOWS</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00055"></a>00055 <span class="preprocessor"> #include &lt;SFML/Network/Win32/SocketHelper.hpp&gt;</span>
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="preprocessor">#else</span>
-<a name="l00058"></a>00058 <span class="preprocessor"></span>
-<a name="l00059"></a>00059 <span class="preprocessor"> #include &lt;SFML/Network/Unix/SocketHelper.hpp&gt;</span>
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="preprocessor">#endif</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span>
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="preprocessor">#endif // SFML_SOCKETHELPER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketTCP_8cpp-source.htm b/doc/html/SocketTCP_8cpp-source.htm
deleted file mode 100755
index 7861052..0000000
--- a/doc/html/SocketTCP_8cpp-source.htm
+++ /dev/null
@@ -1,489 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketTCP.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketTCP.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Network/Packet.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="preprocessor">#ifdef _MSC_VER</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">namespace </span>sf
-<a name="l00043"></a>00043 {
-<a name="l00047"></a><a class="code" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa">00047</a> <a class="code" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa" title="Default constructor.">SocketTCP::SocketTCP</a>()
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 Create(<a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>());
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052
-<a name="l00056"></a><a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9">00056</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9" title="Change the blocking state of the socket.">SocketTCP::SetBlocking</a>(<span class="keywordtype">bool</span> Blocking)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="comment">// Make sure our socket is valid</span>
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00060"></a>00060 Create();
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9" title="Change the blocking state of the socket.">SocketHelper::SetBlocking</a>(mySocket, Blocking);
-<a name="l00063"></a>00063 myIsBlocking = Blocking;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00070"></a><a class="code" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f">00070</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f" title="Connect to another computer on a specified port.">SocketTCP::Connect</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; HostAddress, <span class="keywordtype">float</span> Timeout)
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <span class="comment">// Make sure our socket is valid</span>
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00074"></a>00074 Create();
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="comment">// Build the host address</span>
-<a name="l00077"></a>00077 sockaddr_in SockAddr;
-<a name="l00078"></a>00078 memset(SockAddr.sin_zero, 0, <span class="keyword">sizeof</span>(SockAddr.sin_zero));
-<a name="l00079"></a>00079 SockAddr.sin_addr.s_addr = inet_addr(HostAddress.<a class="code" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643" title="Get a string representation of the address.">ToString</a>().c_str());
-<a name="l00080"></a>00080 SockAddr.sin_family = AF_INET;
-<a name="l00081"></a>00081 SockAddr.sin_port = htons(Port);
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (Timeout &lt;= 0)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="comment">// ----- We're not using a timeout : just try to connect -----</span>
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (connect(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), <span class="keyword">sizeof</span>(SockAddr)) == -1)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="comment">// Failed to connect</span>
-<a name="l00090"></a>00090 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">// Connection succeeded</span>
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <span class="keywordflow">else</span>
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="comment">// ----- We're using a timeout : we'll need a few tricks to make it work -----</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="comment">// Save the previous blocking state</span>
-<a name="l00101"></a>00101 <span class="keywordtype">bool</span> IsBlocking = myIsBlocking;
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="comment">// Switch to non-blocking to enable our connection timeout</span>
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (IsBlocking)
-<a name="l00105"></a>00105 <a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9" title="Change the blocking state of the socket.">SetBlocking</a>(<span class="keyword">false</span>);
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">// Try to connect to host</span>
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (connect(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), <span class="keyword">sizeof</span>(SockAddr)) &gt;= 0)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="comment">// We got instantly connected! (it may no happen a lot...)</span>
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="comment">// Get the error status</span>
-<a name="l00115"></a>00115 Socket::Status Status = <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="comment">// If we were in non-blocking mode, return immediatly</span>
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!IsBlocking)
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> Status;
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="comment">// Otherwise, wait until something happens to our socket (success, timeout or error)</span>
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (Status == Socket::NotReady)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <span class="comment">// Setup the selector</span>
-<a name="l00125"></a>00125 fd_set <a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a>;
-<a name="l00126"></a>00126 FD_ZERO(&amp;Selector);
-<a name="l00127"></a>00127 FD_SET(mySocket, &amp;Selector);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// Setup the timeout</span>
-<a name="l00130"></a>00130 timeval Time;
-<a name="l00131"></a>00131 Time.tv_sec = <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(Timeout);
-<a name="l00132"></a>00132 Time.tv_usec = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(Timeout * 1000) % 1000) * 1000;
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">// Wait for something to write on our socket (which means that the connection request has returned)</span>
-<a name="l00135"></a>00135 <span class="keywordflow">if</span> (select(static_cast&lt;int&gt;(mySocket + 1), NULL, &amp;Selector, NULL, &amp;Time) &gt; 0)
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="comment">// At this point the connection may have been either accepted or refused.</span>
-<a name="l00138"></a>00138 <span class="comment">// To know whether it's a success or a failure, we try to retrieve the name of the connected peer</span>
-<a name="l00139"></a>00139 SocketHelper::LengthType Size = <span class="keyword">sizeof</span>(SockAddr);
-<a name="l00140"></a>00140 <span class="keywordflow">if</span> (getpeername(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), &amp;Size) != -1)
-<a name="l00141"></a>00141 {
-<a name="l00142"></a>00142 <span class="comment">// Connection accepted</span>
-<a name="l00143"></a>00143 Status = Socket::Done;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 <span class="keywordflow">else</span>
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="comment">// Connection failed</span>
-<a name="l00148"></a>00148 Status = <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 <span class="keywordflow">else</span>
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="comment">// Failed to connect before timeout is over</span>
-<a name="l00154"></a>00154 Status = <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="comment">// Switch back to blocking mode</span>
-<a name="l00159"></a>00159 <a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9" title="Change the blocking state of the socket.">SetBlocking</a>(<span class="keyword">true</span>);
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keywordflow">return</span> Status;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165
-<a name="l00169"></a><a class="code" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39">00169</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39" title="Listen to a specified port for incoming data or connections.">SocketTCP::Listen</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="comment">// Make sure our socket is valid</span>
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00173"></a>00173 Create();
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">// Build the address</span>
-<a name="l00176"></a>00176 sockaddr_in SockAddr;
-<a name="l00177"></a>00177 memset(SockAddr.sin_zero, 0, <span class="keyword">sizeof</span>(SockAddr.sin_zero));
-<a name="l00178"></a>00178 SockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
-<a name="l00179"></a>00179 SockAddr.sin_family = AF_INET;
-<a name="l00180"></a>00180 SockAddr.sin_port = htons(Port);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="comment">// Bind the socket to the specified port</span>
-<a name="l00183"></a>00183 <span class="keywordflow">if</span> (bind(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;SockAddr), <span class="keyword">sizeof</span>(SockAddr)) == -1)
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 <span class="comment">// Not likely to happen, but...</span>
-<a name="l00186"></a>00186 std::cerr &lt;&lt; <span class="stringliteral">"Failed to bind socket to port "</span> &lt;&lt; Port &lt;&lt; std::endl;
-<a name="l00187"></a>00187 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// Listen to the bound port</span>
-<a name="l00191"></a>00191 <span class="keywordflow">if</span> (listen(mySocket, 0) == -1)
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 <span class="comment">// Oops, socket is deaf</span>
-<a name="l00194"></a>00194 std::cerr &lt;&lt; <span class="stringliteral">"Failed to listen to port "</span> &lt;&lt; Port &lt;&lt; std::endl;
-<a name="l00195"></a>00195 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201
-<a name="l00206"></a><a class="code" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107">00206</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107" title="Wait for a connection (must be listening to a port).">SocketTCP::Accept</a>(<a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Connected, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>* Address)
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <span class="comment">// Address that will be filled with client informations</span>
-<a name="l00209"></a>00209 sockaddr_in ClientAddress;
-<a name="l00210"></a>00210 SocketHelper::LengthType Length = <span class="keyword">sizeof</span>(ClientAddress);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="comment">// Accept a new connection</span>
-<a name="l00213"></a>00213 Connected = accept(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;ClientAddress), &amp;Length);
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="comment">// Check errors</span>
-<a name="l00216"></a>00216 <span class="keywordflow">if</span> (!Connected.<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (Address)
-<a name="l00219"></a>00219 *Address = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>();
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="comment">// Fill address if requested</span>
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (Address)
-<a name="l00226"></a>00226 *Address = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(inet_ntoa(ClientAddress.sin_addr));
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231
-<a name="l00235"></a><a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21">00235</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">SocketTCP::Send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t Size)
-<a name="l00236"></a>00236 {
-<a name="l00237"></a>00237 <span class="comment">// First check that socket is valid</span>
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 <span class="comment">// Check parameters</span>
-<a name="l00242"></a>00242 <span class="keywordflow">if</span> (Data &amp;&amp; Size)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 <span class="comment">// Loop until every byte has been sent</span>
-<a name="l00245"></a>00245 <span class="keywordtype">int</span> Sent = 0;
-<a name="l00246"></a>00246 <span class="keywordtype">int</span> SizeToSend = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Size);
-<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Length = 0; Length &lt; SizeToSend; Length += Sent)
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 <span class="comment">// Send a chunk of data</span>
-<a name="l00250"></a>00250 Sent = send(mySocket, Data + Length, SizeToSend - Length, 0);
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="comment">// Check if an error occured</span>
-<a name="l00253"></a>00253 <span class="keywordflow">if</span> (Sent &lt;= 0)
-<a name="l00254"></a>00254 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259 <span class="keywordflow">else</span>
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="comment">// Error...</span>
-<a name="l00262"></a>00262 std::cerr &lt;&lt; <span class="stringliteral">"Cannot send data over the network (invalid parameters)"</span> &lt;&lt; std::endl;
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267
-<a name="l00272"></a><a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0">00272</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0" title="Receive an array of bytes from the host (must be connected first).">SocketTCP::Receive</a>(<span class="keywordtype">char</span>* Data, std::size_t MaxSize, std::size_t&amp; SizeReceived)
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="comment">// First clear the size received</span>
-<a name="l00275"></a>00275 SizeReceived = 0;
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 <span class="comment">// Check that socket is valid</span>
-<a name="l00278"></a>00278 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00279"></a>00279 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 <span class="comment">// Check parameters</span>
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (Data &amp;&amp; MaxSize)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 <span class="comment">// Receive a chunk of bytes</span>
-<a name="l00285"></a>00285 <span class="keywordtype">int</span> Received = recv(mySocket, Data, static_cast&lt;int&gt;(MaxSize), 0);
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <span class="comment">// Check the number of bytes received</span>
-<a name="l00288"></a>00288 <span class="keywordflow">if</span> (Received &gt; 0)
-<a name="l00289"></a>00289 {
-<a name="l00290"></a>00290 SizeReceived = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(Received);
-<a name="l00291"></a>00291 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Received == 0)
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <span class="keywordflow">return</span> Socket::Disconnected;
-<a name="l00296"></a>00296 }
-<a name="l00297"></a>00297 <span class="keywordflow">else</span>
-<a name="l00298"></a>00298 {
-<a name="l00299"></a>00299 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302 <span class="keywordflow">else</span>
-<a name="l00303"></a>00303 {
-<a name="l00304"></a>00304 <span class="comment">// Error...</span>
-<a name="l00305"></a>00305 std::cerr &lt;&lt; <span class="stringliteral">"Cannot receive data from the network (invalid parameters)"</span> &lt;&lt; std::endl;
-<a name="l00306"></a>00306 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310
-<a name="l00314"></a><a class="code" href="classsf_1_1SocketTCP.htm#a1825883276970b3d2f9b1d61763e5c7">00314</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">SocketTCP::Send</a>(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToSend)
-<a name="l00315"></a>00315 {
-<a name="l00316"></a>00316 <span class="comment">// Get the data to send from the packet</span>
-<a name="l00317"></a>00317 std::size_t DataSize = 0;
-<a name="l00318"></a>00318 <span class="keyword">const</span> <span class="keywordtype">char</span>* Data = PacketToSend.<a class="code" href="classsf_1_1Packet.htm#f7572423964fc3baf9ca9fe1e5a28993" title="Called before the packet is sent to the network.">OnSend</a>(DataSize);
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="comment">// Send the packet size</span>
-<a name="l00321"></a>00321 Uint32 PacketSize = htonl(static_cast&lt;unsigned long&gt;(DataSize));
-<a name="l00322"></a>00322 <a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">Send</a>(reinterpret_cast&lt;const char*&gt;(&amp;PacketSize), <span class="keyword">sizeof</span>(PacketSize));
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324 <span class="comment">// Send the packet data</span>
-<a name="l00325"></a>00325 <span class="keywordflow">if</span> (PacketSize &gt; 0)
-<a name="l00326"></a>00326 {
-<a name="l00327"></a>00327 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21" title="Send an array of bytes to the host (must be connected first).">Send</a>(Data, DataSize);
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329 <span class="keywordflow">else</span>
-<a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335
-<a name="l00340"></a><a class="code" href="classsf_1_1SocketTCP.htm#4389aa92523e0a6b3f2d6517cbde74fa">00340</a> Socket::Status <a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0" title="Receive an array of bytes from the host (must be connected first).">SocketTCP::Receive</a>(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToReceive)
-<a name="l00341"></a>00341 {
-<a name="l00342"></a>00342 <span class="comment">// We start by getting the size of the incoming packet</span>
-<a name="l00343"></a>00343 Uint32 PacketSize = 0;
-<a name="l00344"></a>00344 std::size_t Received = 0;
-<a name="l00345"></a>00345 <span class="keywordflow">if</span> (myPendingPacketSize &lt; 0)
-<a name="l00346"></a>00346 {
-<a name="l00347"></a>00347 <span class="comment">// Loop until we've received the entire size of the packet</span>
-<a name="l00348"></a>00348 <span class="comment">// (even a 4 bytes variable may be received in more than one call)</span>
-<a name="l00349"></a>00349 <span class="keywordflow">while</span> (myPendingHeaderSize &lt; <span class="keyword">sizeof</span>(myPendingHeader))
-<a name="l00350"></a>00350 {
-<a name="l00351"></a>00351 <span class="keywordtype">char</span>* Data = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;myPendingHeader) + myPendingHeaderSize;
-<a name="l00352"></a>00352 Socket::Status Status = <a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0" title="Receive an array of bytes from the host (must be connected first).">Receive</a>(Data, <span class="keyword">sizeof</span>(myPendingHeader) - myPendingHeaderSize, Received);
-<a name="l00353"></a>00353 myPendingHeaderSize += Received;
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <span class="keywordflow">if</span> (Status != Socket::Done)
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> Status;
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 PacketSize = ntohl(myPendingHeader);
-<a name="l00360"></a>00360 myPendingHeaderSize = 0;
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362 <span class="keywordflow">else</span>
-<a name="l00363"></a>00363 {
-<a name="l00364"></a>00364 <span class="comment">// There is a pending packet : we already know its size</span>
-<a name="l00365"></a>00365 PacketSize = myPendingPacketSize;
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <span class="comment">// Then loop until we receive all the packet data</span>
-<a name="l00369"></a>00369 <span class="keywordtype">char</span> Buffer[1024];
-<a name="l00370"></a>00370 <span class="keywordflow">while</span> (myPendingPacket.size() &lt; PacketSize)
-<a name="l00371"></a>00371 {
-<a name="l00372"></a>00372 <span class="comment">// Receive a chunk of data</span>
-<a name="l00373"></a>00373 std::size_t SizeToGet = std::min(static_cast&lt;std::size_t&gt;(PacketSize - myPendingPacket.size()), <span class="keyword">sizeof</span>(Buffer));
-<a name="l00374"></a>00374 Socket::Status Status = <a class="code" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0" title="Receive an array of bytes from the host (must be connected first).">Receive</a>(Buffer, SizeToGet, Received);
-<a name="l00375"></a>00375 <span class="keywordflow">if</span> (Status != Socket::Done)
-<a name="l00376"></a>00376 {
-<a name="l00377"></a>00377 <span class="comment">// We must save the size of the pending packet until we can receive its content</span>
-<a name="l00378"></a>00378 <span class="keywordflow">if</span> (Status == Socket::NotReady)
-<a name="l00379"></a>00379 myPendingPacketSize = PacketSize;
-<a name="l00380"></a>00380 <span class="keywordflow">return</span> Status;
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 <span class="comment">// Append it into the packet</span>
-<a name="l00384"></a>00384 <span class="keywordflow">if</span> (Received &gt; 0)
-<a name="l00385"></a>00385 {
-<a name="l00386"></a>00386 myPendingPacket.resize(myPendingPacket.size() + Received);
-<a name="l00387"></a>00387 <span class="keywordtype">char</span>* Begin = &amp;myPendingPacket[0] + myPendingPacket.size() - Received;
-<a name="l00388"></a>00388 memcpy(Begin, Buffer, Received);
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 <span class="comment">// We have received all the datas : we can copy it to the user packet, and clear our internal packet</span>
-<a name="l00393"></a>00393 PacketToReceive.<a class="code" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da" title="Clear the packet data.">Clear</a>();
-<a name="l00394"></a>00394 <span class="keywordflow">if</span> (!myPendingPacket.empty())
-<a name="l00395"></a>00395 PacketToReceive.<a class="code" href="classsf_1_1Packet.htm#9a480468cc7745863b7c93e0ae449cbd" title="Called after the packet has been received from the network.">OnReceive</a>(&amp;myPendingPacket[0], myPendingPacket.size());
-<a name="l00396"></a>00396 myPendingPacket.clear();
-<a name="l00397"></a>00397 myPendingPacketSize = -1;
-<a name="l00398"></a>00398
-<a name="l00399"></a>00399 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00400"></a>00400 }
-<a name="l00401"></a>00401
-<a name="l00402"></a>00402
-<a name="l00406"></a><a class="code" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044">00406</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044" title="Close the socket.">SocketTCP::Close</a>()
-<a name="l00407"></a>00407 {
-<a name="l00408"></a>00408 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00409"></a>00409 {
-<a name="l00410"></a>00410 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(mySocket))
-<a name="l00411"></a>00411 {
-<a name="l00412"></a>00412 std::cerr &lt;&lt; <span class="stringliteral">"Failed to close socket"</span> &lt;&lt; std::endl;
-<a name="l00413"></a>00413 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416 mySocket = <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>();
-<a name="l00417"></a>00417 }
-<a name="l00418"></a>00418
-<a name="l00419"></a>00419 myIsBlocking = <span class="keyword">true</span>;
-<a name="l00420"></a>00420
-<a name="l00421"></a>00421 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424
-<a name="l00429"></a><a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124">00429</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">SocketTCP::IsValid</a>()<span class="keyword"> const</span>
-<a name="l00430"></a>00430 <span class="keyword"></span>{
-<a name="l00431"></a>00431 <span class="keywordflow">return</span> mySocket != <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>();
-<a name="l00432"></a>00432 }
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434
-<a name="l00438"></a><a class="code" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1">00438</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1" title="Comparison operator ==.">SocketTCP::operator ==</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00439"></a>00439 <span class="keyword"></span>{
-<a name="l00440"></a>00440 <span class="keywordflow">return</span> mySocket == Other.<a class="code" href="classsf_1_1SocketTCP.htm#4caa2174292afe7d64daece591126979" title="Socket descriptor.">mySocket</a>;
-<a name="l00441"></a>00441 }
-<a name="l00442"></a>00442
-<a name="l00443"></a>00443
-<a name="l00447"></a><a class="code" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e">00447</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e" title="Comparison operator !=.">SocketTCP::operator !=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00448"></a>00448 <span class="keyword"></span>{
-<a name="l00449"></a>00449 <span class="keywordflow">return</span> mySocket != Other.<a class="code" href="classsf_1_1SocketTCP.htm#4caa2174292afe7d64daece591126979" title="Socket descriptor.">mySocket</a>;
-<a name="l00450"></a>00450 }
-<a name="l00451"></a>00451
-<a name="l00452"></a>00452
-<a name="l00458"></a><a class="code" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce">00458</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce" title="Comparison operator &amp;lt;.">SocketTCP::operator &lt;</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00459"></a>00459 <span class="keyword"></span>{
-<a name="l00460"></a>00460 <span class="keywordflow">return</span> mySocket &lt; Other.<a class="code" href="classsf_1_1SocketTCP.htm#4caa2174292afe7d64daece591126979" title="Socket descriptor.">mySocket</a>;
-<a name="l00461"></a>00461 }
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463
-<a name="l00468"></a>00468 <a class="code" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa" title="Default constructor.">SocketTCP::SocketTCP</a>(SocketHelper::SocketType Descriptor)
-<a name="l00469"></a>00469 {
-<a name="l00470"></a>00470 Create(Descriptor);
-<a name="l00471"></a>00471 }
-<a name="l00472"></a>00472
-<a name="l00473"></a>00473
-<a name="l00477"></a>00477 <span class="keywordtype">void</span> SocketTCP::Create(SocketHelper::SocketType Descriptor)
-<a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <span class="comment">// Use the given socket descriptor, or get a new one</span>
-<a name="l00480"></a>00480 mySocket = Descriptor ? Descriptor : socket(PF_INET, SOCK_STREAM, 0);
-<a name="l00481"></a>00481 myIsBlocking = <span class="keyword">true</span>;
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483 <span class="comment">// Reset the pending packet</span>
-<a name="l00484"></a>00484 myPendingHeaderSize = 0;
-<a name="l00485"></a>00485 myPendingPacket.clear();
-<a name="l00486"></a>00486 myPendingPacketSize = -1;
-<a name="l00487"></a>00487
-<a name="l00488"></a>00488 <span class="comment">// Setup default options</span>
-<a name="l00489"></a>00489 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00490"></a>00490 {
-<a name="l00491"></a>00491 <span class="comment">// To avoid the "Address already in use" error message when trying to bind to the same port</span>
-<a name="l00492"></a>00492 <span class="keywordtype">int</span> Yes = 1;
-<a name="l00493"></a>00493 <span class="keywordflow">if</span> (setsockopt(mySocket, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast&lt;char*&gt;(&amp;Yes), <span class="keyword">sizeof</span>(Yes)) == -1)
-<a name="l00494"></a>00494 {
-<a name="l00495"></a>00495 std::cerr &lt;&lt; <span class="stringliteral">"Failed to set socket option \"SO_REUSEADDR\" ; "</span>
-<a name="l00496"></a>00496 &lt;&lt; <span class="stringliteral">"binding to a same port may fail if too fast"</span> &lt;&lt; std::endl;
-<a name="l00497"></a>00497 }
-<a name="l00498"></a>00498
-<a name="l00499"></a>00499 <span class="comment">// Disable the Nagle algorithm (ie. removes buffering of TCP packets)</span>
-<a name="l00500"></a>00500 <span class="keywordflow">if</span> (setsockopt(mySocket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast&lt;char*&gt;(&amp;Yes), <span class="keyword">sizeof</span>(Yes)) == -1)
-<a name="l00501"></a>00501 {
-<a name="l00502"></a>00502 std::cerr &lt;&lt; <span class="stringliteral">"Failed to set socket option \"TCP_NODELAY\" ; "</span>
-<a name="l00503"></a>00503 &lt;&lt; <span class="stringliteral">"all your TCP packets will be buffered"</span> &lt;&lt; std::endl;
-<a name="l00504"></a>00504 }
-<a name="l00505"></a>00505
-<a name="l00506"></a>00506 <span class="comment">// Set blocking by default (should always be the case anyway)</span>
-<a name="l00507"></a>00507 <a class="code" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9" title="Change the blocking state of the socket.">SetBlocking</a>(<span class="keyword">true</span>);
-<a name="l00508"></a>00508 }
-<a name="l00509"></a>00509 }
-<a name="l00510"></a>00510
-<a name="l00511"></a>00511 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketTCP_8hpp-source.htm b/doc/html/SocketTCP_8hpp-source.htm
deleted file mode 100755
index 4cc78e2..0000000
--- a/doc/html/SocketTCP_8hpp-source.htm
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketTCP.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOCKETTCP_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOCKETTCP_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">class </span>Packet;
-<a name="l00038"></a>00038 <span class="keyword">class </span>IPAddress;
-<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span>&gt; <span class="keyword">class </span>Selector;
-<a name="l00040"></a>00040
-<a name="l00045"></a><a class="code" href="classsf_1_1SocketTCP.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>();
-<a name="l00054"></a>00054
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> SetBlocking(<span class="keywordtype">bool</span> Blocking);
-<a name="l00063"></a>00063
-<a name="l00074"></a>00074 Socket::Status Connect(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; HostAddress, <span class="keywordtype">float</span> Timeout = 0.f);
-<a name="l00075"></a>00075
-<a name="l00084"></a>00084 <span class="keywordtype">bool</span> Listen(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port);
-<a name="l00085"></a>00085
-<a name="l00096"></a>00096 Socket::Status Accept(<a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Connected, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>* Address = NULL);
-<a name="l00097"></a>00097
-<a name="l00107"></a>00107 Socket::Status Send(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t Size);
-<a name="l00108"></a>00108
-<a name="l00120"></a>00120 Socket::Status Receive(<span class="keywordtype">char</span>* Data, std::size_t MaxSize, std::size_t&amp; SizeReceived);
-<a name="l00121"></a>00121
-<a name="l00130"></a>00130 Socket::Status Send(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToSend);
-<a name="l00131"></a>00131
-<a name="l00141"></a>00141 Socket::Status Receive(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToReceive);
-<a name="l00142"></a>00142
-<a name="l00149"></a>00149 <span class="keywordtype">bool</span> Close();
-<a name="l00150"></a>00150
-<a name="l00158"></a>00158 <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span>;
-<a name="l00159"></a>00159
-<a name="l00168"></a>00168 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00169"></a>00169
-<a name="l00178"></a>00178 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00179"></a>00179
-<a name="l00190"></a>00190 <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keyword">private</span> :
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a>&lt;SocketTCP&gt;;
-<a name="l00195"></a>00195
-<a name="l00203"></a>00203 SocketTCP(SocketHelper::SocketType Descriptor);
-<a name="l00204"></a>00204
-<a name="l00211"></a>00211 <span class="keywordtype">void</span> Create(SocketHelper::SocketType Descriptor = 0);
-<a name="l00212"></a>00212
-<a name="l00214"></a>00214 <span class="comment">// Member data</span>
-<a name="l00216"></a>00216 <span class="comment"></span> SocketHelper::SocketType mySocket;
-<a name="l00217"></a>00217 Uint32 myPendingHeader;
-<a name="l00218"></a>00218 Uint32 myPendingHeaderSize;
-<a name="l00219"></a>00219 std::vector&lt;char&gt; myPendingPacket;
-<a name="l00220"></a>00220 Int32 myPendingPacketSize;
-<a name="l00221"></a>00221 <span class="keywordtype">bool</span> myIsBlocking;
-<a name="l00222"></a>00222 };
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 } <span class="comment">// namespace sf</span>
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 <span class="preprocessor">#endif // SFML_SOCKETTCP_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketUDP_8cpp-source.htm b/doc/html/SocketUDP_8cpp-source.htm
deleted file mode 100755
index 3268dba..0000000
--- a/doc/html/SocketUDP_8cpp-source.htm
+++ /dev/null
@@ -1,412 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketUDP.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketUDP.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Network/IPAddress.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Network/Packet.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00041"></a><a class="code" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901">00041</a> <a class="code" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901" title="Default constructor.">SocketUDP::SocketUDP</a>()
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 Create();
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a><a class="code" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6">00050</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6" title="Change the blocking state of the socket.">SocketUDP::SetBlocking</a>(<span class="keywordtype">bool</span> Blocking)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="comment">// Make sure our socket is valid</span>
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00054"></a>00054 Create();
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <a class="code" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6" title="Change the blocking state of the socket.">SocketHelper::SetBlocking</a>(mySocket, Blocking);
-<a name="l00057"></a>00057 myIsBlocking = Blocking;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d">00064</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d" title="Bind the socket to a specific port.">SocketUDP::Bind</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="comment">// Check if the socket is already bound to the specified port</span>
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (myPort != Port)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="comment">// If the socket was previously bound to another port, we need to unbind it first</span>
-<a name="l00070"></a>00070 <a class="code" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c" title="Unbind the socket from its previous port, if any.">Unbind</a>();
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (Port != 0)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="comment">// Build an address with the specified port</span>
-<a name="l00075"></a>00075 sockaddr_in Addr;
-<a name="l00076"></a>00076 Addr.sin_family = AF_INET;
-<a name="l00077"></a>00077 Addr.sin_port = htons(Port);
-<a name="l00078"></a>00078 Addr.sin_addr.s_addr = INADDR_ANY;
-<a name="l00079"></a>00079 memset(Addr.sin_zero, 0, <span class="keyword">sizeof</span>(Addr.sin_zero));
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="comment">// Bind the socket to the port</span>
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (bind(mySocket, reinterpret_cast&lt;sockaddr*&gt;(&amp;Addr), <span class="keyword">sizeof</span>(Addr)) == -1)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 std::cerr &lt;&lt; <span class="stringliteral">"Failed to bind the socket to port "</span> &lt;&lt; Port &lt;&lt; std::endl;
-<a name="l00085"></a>00085 myPort = 0;
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">// Save the new port</span>
-<a name="l00091"></a>00091 myPort = Port;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00101"></a><a class="code" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c">00101</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c" title="Unbind the socket from its previous port, if any.">SocketUDP::Unbind</a>()
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="comment">// To unbind the socket, we just recreate it</span>
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (myPort != 0)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <a class="code" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58" title="Close the socket.">Close</a>();
-<a name="l00107"></a>00107 Create();
-<a name="l00108"></a>00108 myPort = 0;
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114
-<a name="l00118"></a><a class="code" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2">00118</a> Socket::Status <a class="code" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2" title="Send an array of bytes.">SocketUDP::Send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t Size, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="comment">// Make sure the socket is valid</span>
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00122"></a>00122 Create();
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Check parameters</span>
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (Data &amp;&amp; Size)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="comment">// Build the target address</span>
-<a name="l00128"></a>00128 sockaddr_in Target;
-<a name="l00129"></a>00129 Target.sin_family = AF_INET;
-<a name="l00130"></a>00130 Target.sin_port = htons(Port);
-<a name="l00131"></a>00131 Target.sin_addr.s_addr = inet_addr(Address.<a class="code" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643" title="Get a string representation of the address.">ToString</a>().c_str());
-<a name="l00132"></a>00132 memset(Target.sin_zero, 0, <span class="keyword">sizeof</span>(Target.sin_zero));
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">// Loop until every byte has been sent</span>
-<a name="l00135"></a>00135 <span class="keywordtype">int</span> Sent = 0;
-<a name="l00136"></a>00136 <span class="keywordtype">int</span> SizeToSend = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Size);
-<a name="l00137"></a>00137 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Length = 0; Length &lt; SizeToSend; Length += Sent)
-<a name="l00138"></a>00138 {
-<a name="l00139"></a>00139 <span class="comment">// Send a chunk of data</span>
-<a name="l00140"></a>00140 Sent = sendto(mySocket, Data + Length, SizeToSend - Length, 0, reinterpret_cast&lt;sockaddr*&gt;(&amp;Target), <span class="keyword">sizeof</span>(Target));
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="comment">// Check errors</span>
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (Sent &lt;= 0)
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 <span class="keywordflow">else</span>
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="comment">// Error...</span>
-<a name="l00152"></a>00152 std::cerr &lt;&lt; <span class="stringliteral">"Cannot send data over the network (invalid parameters)"</span> &lt;&lt; std::endl;
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00162"></a><a class="code" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996">00162</a> Socket::Status <a class="code" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996" title="Receive an array of bytes.">SocketUDP::Receive</a>(<span class="keywordtype">char</span>* Data, std::size_t MaxSize, std::size_t&amp; SizeReceived, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>&amp; Port)
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 <span class="comment">// First clear the size received</span>
-<a name="l00165"></a>00165 SizeReceived = 0;
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="comment">// Make sure the socket is bound to a port</span>
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> (myPort == 0)
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 std::cerr &lt;&lt; <span class="stringliteral">"Failed to receive data ; the UDP socket first needs to be bound to a port"</span> &lt;&lt; std::endl;
-<a name="l00171"></a>00171 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <span class="comment">// Make sure the socket is valid</span>
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00176"></a>00176 Create();
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="comment">// Check parameters</span>
-<a name="l00179"></a>00179 <span class="keywordflow">if</span> (Data &amp;&amp; MaxSize)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="comment">// Data that will be filled with the other computer's address</span>
-<a name="l00182"></a>00182 sockaddr_in Sender;
-<a name="l00183"></a>00183 Sender.sin_family = AF_INET;
-<a name="l00184"></a>00184 Sender.sin_port = 0;
-<a name="l00185"></a>00185 Sender.sin_addr.s_addr = INADDR_ANY;
-<a name="l00186"></a>00186 memset(Sender.sin_zero, 0, <span class="keyword">sizeof</span>(Sender.sin_zero));
-<a name="l00187"></a>00187 SocketHelper::LengthType SenderSize = <span class="keyword">sizeof</span>(Sender);
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="comment">// Receive a chunk of bytes</span>
-<a name="l00190"></a>00190 <span class="keywordtype">int</span> Received = recvfrom(mySocket, Data, static_cast&lt;int&gt;(MaxSize), 0, reinterpret_cast&lt;sockaddr*&gt;(&amp;Sender), &amp;SenderSize);
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="comment">// Check the number of bytes received</span>
-<a name="l00193"></a>00193 <span class="keywordflow">if</span> (Received &gt; 0)
-<a name="l00194"></a>00194 {
-<a name="l00195"></a>00195 Address = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>(inet_ntoa(Sender.sin_addr));
-<a name="l00196"></a>00196 Port = ntohs(Sender.sin_port);
-<a name="l00197"></a>00197 SizeReceived = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(Received);
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200 <span class="keywordflow">else</span>
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 Address = <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>();
-<a name="l00203"></a>00203 Port = 0;
-<a name="l00204"></a>00204 <span class="keywordflow">return</span> Received == 0 ? Socket::Disconnected : <a class="code" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83" title="Get the last socket error status.">SocketHelper::GetErrorStatus</a>();
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207 <span class="keywordflow">else</span>
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="comment">// Error...</span>
-<a name="l00210"></a>00210 std::cerr &lt;&lt; <span class="stringliteral">"Cannot receive data from the network (invalid parameters)"</span> &lt;&lt; std::endl;
-<a name="l00211"></a>00211 <span class="keywordflow">return</span> Socket::Error;
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215
-<a name="l00219"></a><a class="code" href="classsf_1_1SocketUDP.htm#fef698f2544ac0364d422e1e1ba7a5b6">00219</a> Socket::Status <a class="code" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2" title="Send an array of bytes.">SocketUDP::Send</a>(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToSend, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port)
-<a name="l00220"></a>00220 {
-<a name="l00221"></a>00221 <span class="comment">// Get the data to send from the packet</span>
-<a name="l00222"></a>00222 std::size_t DataSize = 0;
-<a name="l00223"></a>00223 <span class="keyword">const</span> <span class="keywordtype">char</span>* Data = PacketToSend.<a class="code" href="classsf_1_1Packet.htm#f7572423964fc3baf9ca9fe1e5a28993" title="Called before the packet is sent to the network.">OnSend</a>(DataSize);
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="comment">// Send the packet size</span>
-<a name="l00226"></a>00226 Uint32 PacketSize = htonl(static_cast&lt;unsigned long&gt;(DataSize));
-<a name="l00227"></a>00227 <a class="code" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2" title="Send an array of bytes.">Send</a>(reinterpret_cast&lt;const char*&gt;(&amp;PacketSize), <span class="keyword">sizeof</span>(PacketSize), Address, Port);
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="comment">// Send the packet data</span>
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (PacketSize &gt; 0)
-<a name="l00231"></a>00231 {
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2" title="Send an array of bytes.">Send</a>(Data, DataSize, Address, Port);
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 <span class="keywordflow">else</span>
-<a name="l00235"></a>00235 {
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238 }
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240
-<a name="l00245"></a><a class="code" href="classsf_1_1SocketUDP.htm#463bbd635513f2653f072c2f220d2495">00245</a> Socket::Status <a class="code" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996" title="Receive an array of bytes.">SocketUDP::Receive</a>(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToReceive, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>&amp; Port)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="comment">// We start by getting the size of the incoming packet</span>
-<a name="l00248"></a>00248 Uint32 PacketSize = 0;
-<a name="l00249"></a>00249 std::size_t Received = 0;
-<a name="l00250"></a>00250 <span class="keywordflow">if</span> (myPendingPacketSize &lt; 0)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="comment">// Loop until we've received the entire size of the packet</span>
-<a name="l00253"></a>00253 <span class="comment">// (even a 4 bytes variable may be received in more than one call)</span>
-<a name="l00254"></a>00254 <span class="keywordflow">while</span> (myPendingHeaderSize &lt; <span class="keyword">sizeof</span>(myPendingHeader))
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordtype">char</span>* Data = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;myPendingHeader) + myPendingHeaderSize;
-<a name="l00257"></a>00257 Socket::Status Status = <a class="code" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996" title="Receive an array of bytes.">Receive</a>(Data, <span class="keyword">sizeof</span>(myPendingHeader) - myPendingHeaderSize, Received, Address, Port);
-<a name="l00258"></a>00258 myPendingHeaderSize += Received;
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (Status != Socket::Done)
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> Status;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 PacketSize = ntohl(myPendingHeader);
-<a name="l00265"></a>00265 myPendingHeaderSize = 0;
-<a name="l00266"></a>00266 }
-<a name="l00267"></a>00267 <span class="keywordflow">else</span>
-<a name="l00268"></a>00268 {
-<a name="l00269"></a>00269 <span class="comment">// There is a pending packet : we already know its size</span>
-<a name="l00270"></a>00270 PacketSize = myPendingPacketSize;
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272
-<a name="l00273"></a>00273 <span class="comment">// Use another address instance for receiving the packet data ;</span>
-<a name="l00274"></a>00274 <span class="comment">// chunks of data coming from a different sender will be discarded (and lost...)</span>
-<a name="l00275"></a>00275 <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> Sender;
-<a name="l00276"></a>00276 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> SenderPort;
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 <span class="comment">// Then loop until we receive all the packet data</span>
-<a name="l00279"></a>00279 <span class="keywordtype">char</span> Buffer[1024];
-<a name="l00280"></a>00280 <span class="keywordflow">while</span> (myPendingPacket.size() &lt; PacketSize)
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="comment">// Receive a chunk of data</span>
-<a name="l00283"></a>00283 std::size_t SizeToGet = std::min(static_cast&lt;std::size_t&gt;(PacketSize - myPendingPacket.size()), <span class="keyword">sizeof</span>(Buffer));
-<a name="l00284"></a>00284 Socket::Status Status = <a class="code" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996" title="Receive an array of bytes.">Receive</a>(Buffer, SizeToGet, Received, Sender, SenderPort);
-<a name="l00285"></a>00285 <span class="keywordflow">if</span> (Status != Socket::Done)
-<a name="l00286"></a>00286 {
-<a name="l00287"></a>00287 <span class="comment">// We must save the size of the pending packet until we can receive its content</span>
-<a name="l00288"></a>00288 <span class="keywordflow">if</span> (Status == Socket::NotReady)
-<a name="l00289"></a>00289 myPendingPacketSize = PacketSize;
-<a name="l00290"></a>00290 <span class="keywordflow">return</span> Status;
-<a name="l00291"></a>00291 }
-<a name="l00292"></a>00292
-<a name="l00293"></a>00293 <span class="comment">// Append it into the packet</span>
-<a name="l00294"></a>00294 <span class="keywordflow">if</span> ((Sender == Address) &amp;&amp; (SenderPort == Port) &amp;&amp; (Received &gt; 0))
-<a name="l00295"></a>00295 {
-<a name="l00296"></a>00296 myPendingPacket.resize(myPendingPacket.size() + Received);
-<a name="l00297"></a>00297 <span class="keywordtype">char</span>* Begin = &amp;myPendingPacket[0] + myPendingPacket.size() - Received;
-<a name="l00298"></a>00298 memcpy(Begin, Buffer, Received);
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="comment">// We have received all the datas : we can copy it to the user packet, and clear our internal packet</span>
-<a name="l00303"></a>00303 PacketToReceive.<a class="code" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da" title="Clear the packet data.">Clear</a>();
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> (!myPendingPacket.empty())
-<a name="l00305"></a>00305 PacketToReceive.<a class="code" href="classsf_1_1Packet.htm#9a480468cc7745863b7c93e0ae449cbd" title="Called after the packet has been received from the network.">OnReceive</a>(&amp;myPendingPacket[0], myPendingPacket.size());
-<a name="l00306"></a>00306 myPendingPacket.clear();
-<a name="l00307"></a>00307 myPendingPacketSize = -1;
-<a name="l00308"></a>00308
-<a name="l00309"></a>00309 <span class="keywordflow">return</span> Socket::Done;
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312
-<a name="l00316"></a><a class="code" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58">00316</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58" title="Close the socket.">SocketUDP::Close</a>()
-<a name="l00317"></a>00317 {
-<a name="l00318"></a>00318 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232" title="Close / destroy a socket.">SocketHelper::Close</a>(mySocket))
-<a name="l00321"></a>00321 {
-<a name="l00322"></a>00322 std::cerr &lt;&lt; <span class="stringliteral">"Failed to close socket"</span> &lt;&lt; std::endl;
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 mySocket = <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>();
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 myPort = 0;
-<a name="l00330"></a>00330 myIsBlocking = <span class="keyword">true</span>;
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335
-<a name="l00340"></a><a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f">00340</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">SocketUDP::IsValid</a>()<span class="keyword"> const</span>
-<a name="l00341"></a>00341 <span class="keyword"></span>{
-<a name="l00342"></a>00342 <span class="keywordflow">return</span> mySocket != <a class="code" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458" title="Return the value of the invalid socket.">SocketHelper::InvalidSocket</a>();
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344
-<a name="l00345"></a>00345
-<a name="l00349"></a><a class="code" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd">00349</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd" title="Get the port the socket is currently bound to.">SocketUDP::GetPort</a>()<span class="keyword"> const</span>
-<a name="l00350"></a>00350 <span class="keyword"></span>{
-<a name="l00351"></a>00351 <span class="keywordflow">return</span> myPort;
-<a name="l00352"></a>00352 }
-<a name="l00353"></a>00353
-<a name="l00354"></a>00354
-<a name="l00358"></a><a class="code" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0">00358</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0" title="Comparison operator ==.">SocketUDP::operator ==</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00359"></a>00359 <span class="keyword"></span>{
-<a name="l00360"></a>00360 <span class="keywordflow">return</span> mySocket == Other.<a class="code" href="classsf_1_1SocketUDP.htm#95874e9b7b37724e82820b02b8e4a12a" title="Socket identifier.">mySocket</a>;
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362
-<a name="l00363"></a>00363
-<a name="l00367"></a><a class="code" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24">00367</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24" title="Comparison operator !=.">SocketUDP::operator !=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00368"></a>00368 <span class="keyword"></span>{
-<a name="l00369"></a>00369 <span class="keywordflow">return</span> mySocket != Other.<a class="code" href="classsf_1_1SocketUDP.htm#95874e9b7b37724e82820b02b8e4a12a" title="Socket identifier.">mySocket</a>;
-<a name="l00370"></a>00370 }
-<a name="l00371"></a>00371
-<a name="l00372"></a>00372
-<a name="l00378"></a><a class="code" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95">00378</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95" title="Comparison operator &amp;lt;.">SocketUDP::operator &lt;</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00379"></a>00379 <span class="keyword"></span>{
-<a name="l00380"></a>00380 <span class="keywordflow">return</span> mySocket &lt; Other.<a class="code" href="classsf_1_1SocketUDP.htm#95874e9b7b37724e82820b02b8e4a12a" title="Socket identifier.">mySocket</a>;
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383
-<a name="l00388"></a>00388 <a class="code" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901" title="Default constructor.">SocketUDP::SocketUDP</a>(SocketHelper::SocketType Descriptor)
-<a name="l00389"></a>00389 {
-<a name="l00390"></a>00390 Create(Descriptor);
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392
-<a name="l00393"></a>00393
-<a name="l00397"></a>00397 <span class="keywordtype">void</span> SocketUDP::Create(SocketHelper::SocketType Descriptor)
-<a name="l00398"></a>00398 {
-<a name="l00399"></a>00399 <span class="comment">// Use the given socket descriptor, or get a new one</span>
-<a name="l00400"></a>00400 mySocket = Descriptor ? Descriptor : socket(PF_INET, SOCK_DGRAM, 0);
-<a name="l00401"></a>00401 myIsBlocking = <span class="keyword">true</span>;
-<a name="l00402"></a>00402
-<a name="l00403"></a>00403 <span class="comment">// Clear the last port used</span>
-<a name="l00404"></a>00404 myPort = 0;
-<a name="l00405"></a>00405
-<a name="l00406"></a>00406 <span class="comment">// Reset the pending packet</span>
-<a name="l00407"></a>00407 myPendingHeaderSize = 0;
-<a name="l00408"></a>00408 myPendingPacket.clear();
-<a name="l00409"></a>00409 myPendingPacketSize = -1;
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="comment">// Setup default options</span>
-<a name="l00412"></a>00412 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f" title="Check if the socket is in a valid state ; this function can be called any time to...">IsValid</a>())
-<a name="l00413"></a>00413 {
-<a name="l00414"></a>00414 <span class="comment">// To avoid the "Address already in use" error message when trying to bind to the same port</span>
-<a name="l00415"></a>00415 <span class="keywordtype">int</span> Yes = 1;
-<a name="l00416"></a>00416 <span class="keywordflow">if</span> (setsockopt(mySocket, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast&lt;char*&gt;(&amp;Yes), <span class="keyword">sizeof</span>(Yes)) == -1)
-<a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 std::cerr &lt;&lt; <span class="stringliteral">"Failed to set socket option \"reuse address\" ; "</span>
-<a name="l00419"></a>00419 &lt;&lt; <span class="stringliteral">"binding to a same port may fail if too fast"</span> &lt;&lt; std::endl;
-<a name="l00420"></a>00420 }
-<a name="l00421"></a>00421
-<a name="l00422"></a>00422 <span class="comment">// Enable broadcast by default</span>
-<a name="l00423"></a>00423 <span class="keywordflow">if</span> (setsockopt(mySocket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast&lt;char*&gt;(&amp;Yes), <span class="keyword">sizeof</span>(Yes)) == -1)
-<a name="l00424"></a>00424 {
-<a name="l00425"></a>00425 std::cerr &lt;&lt; <span class="stringliteral">"Failed to enable broadcast on UDP socket"</span> &lt;&lt; std::endl;
-<a name="l00426"></a>00426 }
-<a name="l00427"></a>00427
-<a name="l00428"></a>00428 <span class="comment">// Set blocking by default (should always be the case anyway)</span>
-<a name="l00429"></a>00429 <a class="code" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6" title="Change the blocking state of the socket.">SetBlocking</a>(<span class="keyword">true</span>);
-<a name="l00430"></a>00430 }
-<a name="l00431"></a>00431 }
-<a name="l00432"></a>00432
-<a name="l00433"></a>00433 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SocketUDP_8hpp-source.htm b/doc/html/SocketUDP_8hpp-source.htm
deleted file mode 100755
index 656f128..0000000
--- a/doc/html/SocketUDP_8hpp-source.htm
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketUDP.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOCKETUDP_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOCKETUDP_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Network/SocketHelper.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">class </span>Packet;
-<a name="l00038"></a>00038 <span class="keyword">class </span>IPAddress;
-<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span>&gt; <span class="keyword">class </span>Selector;
-<a name="l00040"></a>00040
-<a name="l00045"></a><a class="code" href="classsf_1_1SocketUDP.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>();
-<a name="l00054"></a>00054
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> SetBlocking(<span class="keywordtype">bool</span> Blocking);
-<a name="l00063"></a>00063
-<a name="l00072"></a>00072 <span class="keywordtype">bool</span> Bind(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port);
-<a name="l00073"></a>00073
-<a name="l00080"></a>00080 <span class="keywordtype">bool</span> Unbind();
-<a name="l00081"></a>00081
-<a name="l00093"></a>00093 Socket::Status Send(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t Size, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port);
-<a name="l00094"></a>00094
-<a name="l00108"></a>00108 Socket::Status Receive(<span class="keywordtype">char</span>* Data, std::size_t MaxSize, std::size_t&amp; SizeReceived, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>&amp; Port);
-<a name="l00109"></a>00109
-<a name="l00120"></a>00120 Socket::Status Send(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToSend, <span class="keyword">const</span> <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Port);
-<a name="l00121"></a>00121
-<a name="l00133"></a>00133 Socket::Status Receive(<a class="code" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a>&amp; PacketToReceive, <a class="code" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a>&amp; Address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>&amp; Port);
-<a name="l00134"></a>00134
-<a name="l00141"></a>00141 <span class="keywordtype">bool</span> Close();
-<a name="l00142"></a>00142
-<a name="l00150"></a>00150 <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span>;
-<a name="l00151"></a>00151
-<a name="l00158"></a>00158 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> GetPort() <span class="keyword">const</span>;
-<a name="l00159"></a>00159
-<a name="l00168"></a>00168 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00169"></a>00169
-<a name="l00178"></a>00178 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00179"></a>00179
-<a name="l00190"></a>00190 <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> <a class="code" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keyword">private</span> :
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a>&lt;SocketUDP&gt;;
-<a name="l00195"></a>00195
-<a name="l00203"></a>00203 SocketUDP(SocketHelper::SocketType Descriptor);
-<a name="l00204"></a>00204
-<a name="l00211"></a>00211 <span class="keywordtype">void</span> Create(SocketHelper::SocketType Descriptor = 0);
-<a name="l00212"></a>00212
-<a name="l00214"></a>00214 <span class="comment">// Member data</span>
-<a name="l00216"></a>00216 <span class="comment"></span> SocketHelper::SocketType mySocket;
-<a name="l00217"></a>00217 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> myPort;
-<a name="l00218"></a>00218 Uint32 myPendingHeader;
-<a name="l00219"></a>00219 Uint32 myPendingHeaderSize;
-<a name="l00220"></a>00220 std::vector&lt;char&gt; myPendingPacket;
-<a name="l00221"></a>00221 Int32 myPendingPacketSize;
-<a name="l00222"></a>00222 <span class="keywordtype">bool</span> myIsBlocking;
-<a name="l00223"></a>00223 };
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 } <span class="comment">// namespace sf</span>
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="preprocessor">#endif // SFML_SOCKETUDP_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sockets_8hpp-source.htm b/doc/html/Sockets_8hpp-source.htm
deleted file mode 100755
index 0c248c5..0000000
--- a/doc/html/Sockets_8hpp-source.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sockets.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOCKETS_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOCKETS_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef SFML_SYSTEM_WINDOWS</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/Network/Win32/Sockets.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#else</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor"> #include &lt;SFML/Network/Unix/Sockets.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#endif // SFML_SOCKETS_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundBufferRecorder_8cpp-source.htm b/doc/html/SoundBufferRecorder_8cpp-source.htm
deleted file mode 100755
index a14c280..0000000
--- a/doc/html/SoundBufferRecorder_8cpp-source.htm
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundBufferRecorder.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundBufferRecorder.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;iterator&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a>00038 <span class="keywordtype">bool</span> SoundBufferRecorder::OnStart()
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 mySamples.clear();
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a>00049 <span class="keywordtype">bool</span> SoundBufferRecorder::OnProcessSamples(<span class="keyword">const</span> Int16* Samples, std::size_t SamplesCount)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 std::copy(Samples, Samples + SamplesCount, std::back_inserter(mySamples));
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00060"></a>00060 <span class="keywordtype">void</span> SoundBufferRecorder::OnStop()
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (!mySamples.empty())
-<a name="l00063"></a>00063 myBuffer.LoadFromSamples(&amp;mySamples[0], mySamples.size(), 1, <a class="code" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5" title="Get the sample rate.">GetSampleRate</a>());
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00070"></a><a class="code" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8">00070</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; <a class="code" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8" title="Get the sound buffer containing the captured audio data.">SoundBufferRecorder::GetBuffer</a>()<span class="keyword"> const</span>
-<a name="l00071"></a>00071 <span class="keyword"></span>{
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> myBuffer;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundBufferRecorder_8hpp-source.htm b/doc/html/SoundBufferRecorder_8hpp-source.htm
deleted file mode 100755
index 0b59418..0000000
--- a/doc/html/SoundBufferRecorder_8hpp-source.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundBufferRecorder.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDBUFFERRECORDER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDBUFFERRECORDER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundBuffer.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Audio/SoundRecorder.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00042"></a><a class="code" href="classsf_1_1SoundBufferRecorder.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SoundBufferRecorder.htm" title="Specialized SoundRecorder which saves the captured audio data into a sound buffer...">SoundBufferRecorder</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00052"></a>00052 <span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; GetBuffer() <span class="keyword">const</span>;
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">private</span> :
-<a name="l00055"></a>00055
-<a name="l00060"></a>00060 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnStart();
-<a name="l00061"></a>00061
-<a name="l00066"></a>00066 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnProcessSamples(<span class="keyword">const</span> Int16* Samples, std::size_t SamplesCount);
-<a name="l00067"></a>00067
-<a name="l00072"></a>00072 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStop();
-<a name="l00073"></a>00073
-<a name="l00075"></a>00075 <span class="comment">// Member data</span>
-<a name="l00077"></a>00077 <span class="comment"></span> std::vector&lt;Int16&gt; mySamples;
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> myBuffer;
-<a name="l00079"></a>00079 };
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 } <span class="comment">// namespace sf</span>
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="preprocessor">#endif // SFML_SOUNDBUFFERRECORDER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundBuffer_8cpp-source.htm b/doc/html/SoundBuffer_8cpp-source.htm
deleted file mode 100755
index e5898ff..0000000
--- a/doc/html/SoundBuffer_8cpp-source.htm
+++ /dev/null
@@ -1,318 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundBuffer.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundBuffer.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/SoundFile.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/Sound.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Audio/AudioDevice.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;memory&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00042"></a><a class="code" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233">00042</a> <a class="code" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233" title="Default constructor.">SoundBuffer::SoundBuffer</a>() :
-<a name="l00043"></a>00043 myBuffer (0),
-<a name="l00044"></a>00044 myDuration(0.f)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// Create the buffer</span>
-<a name="l00047"></a>00047 ALCheck(alGenBuffers(1, &amp;myBuffer));
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1SoundBuffer.htm#deb60002d4c4a4d8511fb5aa7225224b">00054</a> <a class="code" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233" title="Default constructor.">SoundBuffer::SoundBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Copy) :
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a> (Copy),
-<a name="l00056"></a>00056 <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>&lt;<a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&gt;(Copy),
-<a name="l00057"></a>00057 myBuffer (0),
-<a name="l00058"></a>00058 mySamples (Copy.mySamples),
-<a name="l00059"></a>00059 myDuration (Copy.myDuration),
-<a name="l00060"></a>00060 mySounds () <span class="comment">// don't copy the attached sounds</span>
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="comment">// Create the buffer</span>
-<a name="l00063"></a>00063 ALCheck(alGenBuffers(1, &amp;myBuffer));
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="comment">// Update the internal buffer with the new samples</span>
-<a name="l00066"></a>00066 Update(Copy.<a class="code" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f" title="Return the number of channels (1 = mono, 2 = stereo, .">GetChannelsCount</a>(), Copy.<a class="code" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571" title="Get the sample rate.">GetSampleRate</a>());
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00073"></a><a class="code" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5">00073</a> <a class="code" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5" title="Destructor.">SoundBuffer::~SoundBuffer</a>()
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="comment">// First detach the buffer from the sounds that use it (to avoid OpenAL errors)</span>
-<a name="l00076"></a>00076 <span class="keywordflow">for</span> (SoundList::const_iterator it = mySounds.begin(); it != mySounds.end(); ++it)
-<a name="l00077"></a>00077 (*it)-&gt;ResetBuffer();
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="comment">// Destroy the buffer</span>
-<a name="l00080"></a>00080 <span class="keywordflow">if</span> (myBuffer)
-<a name="l00081"></a>00081 ALCheck(alDeleteBuffers(1, &amp;myBuffer));
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00088"></a><a class="code" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4">00088</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4" title="Load the sound buffer from a file.">SoundBuffer::LoadFromFile</a>(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <span class="comment">// Create the sound file</span>
-<a name="l00091"></a>00091 std::auto_ptr&lt;priv::SoundFile&gt; File(priv::SoundFile::CreateRead(Filename));
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">// Open the sound file</span>
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (File.get())
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="comment">// Get the sound parameters</span>
-<a name="l00097"></a>00097 std::size_t NbSamples = File-&gt;GetSamplesCount();
-<a name="l00098"></a>00098 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount = File-&gt;GetChannelsCount();
-<a name="l00099"></a>00099 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate = File-&gt;GetSampleRate();
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Read the samples from the opened file</span>
-<a name="l00102"></a>00102 mySamples.resize(NbSamples);
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (File-&gt;Read(&amp;mySamples[0], NbSamples) == NbSamples)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 <span class="comment">// Update the internal buffer with the new samples</span>
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> Update(ChannelsCount, SampleRate);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 <span class="keywordflow">else</span>
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="comment">// Error...</span>
-<a name="l00111"></a>00111 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read audio data from file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 <span class="keywordflow">else</span>
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="comment">// Error...</span>
-<a name="l00119"></a>00119 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load sound buffer from file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3">00129</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3" title="Load the sound buffer from a file in memory.">SoundBuffer::LoadFromMemory</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="comment">// Create the sound file</span>
-<a name="l00132"></a>00132 std::auto_ptr&lt;priv::SoundFile&gt; File(priv::SoundFile::CreateRead(Data, SizeInBytes));
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">// Open the sound file</span>
-<a name="l00135"></a>00135 <span class="keywordflow">if</span> (File.get())
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="comment">// Get the sound parameters</span>
-<a name="l00138"></a>00138 std::size_t NbSamples = File-&gt;GetSamplesCount();
-<a name="l00139"></a>00139 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount = File-&gt;GetChannelsCount();
-<a name="l00140"></a>00140 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate = File-&gt;GetSampleRate();
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="comment">// Read the samples from the opened file</span>
-<a name="l00143"></a>00143 mySamples.resize(NbSamples);
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (File-&gt;Read(&amp;mySamples[0], NbSamples) == NbSamples)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="comment">// Update the internal buffer with the new samples</span>
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> Update(ChannelsCount, SampleRate);
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 <span class="keywordflow">else</span>
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="comment">// Error...</span>
-<a name="l00152"></a>00152 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read audio data from file in memory"</span> &lt;&lt; std::endl;
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 <span class="keywordflow">else</span>
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="comment">// Error...</span>
-<a name="l00160"></a>00160 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load sound buffer from file in memory"</span> &lt;&lt; std::endl;
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164 }
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166
-<a name="l00171"></a><a class="code" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc">00171</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc" title="Load the sound buffer from an array of samples - assumed format for samples is 16...">SoundBuffer::LoadFromSamples</a>(<span class="keyword">const</span> Int16* Samples, std::size_t SamplesCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (Samples &amp;&amp; SamplesCount &amp;&amp; ChannelsCount &amp;&amp; SampleRate)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="comment">// Copy the new audio samples</span>
-<a name="l00176"></a>00176 mySamples.assign(Samples, Samples + SamplesCount);
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="comment">// Update the internal buffer with the new samples</span>
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> Update(ChannelsCount, SampleRate);
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 <span class="keywordflow">else</span>
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="comment">// Error...</span>
-<a name="l00184"></a>00184 std::cerr &lt;&lt; <span class="stringliteral">"Failed to load sound buffer from memory ("</span>
-<a name="l00185"></a>00185 &lt;&lt; <span class="stringliteral">"Samples : "</span> &lt;&lt; Samples &lt;&lt; <span class="stringliteral">", "</span>
-<a name="l00186"></a>00186 &lt;&lt; <span class="stringliteral">"Samples count : "</span> &lt;&lt; SamplesCount &lt;&lt; <span class="stringliteral">", "</span>
-<a name="l00187"></a>00187 &lt;&lt; <span class="stringliteral">"Channels count : "</span> &lt;&lt; ChannelsCount &lt;&lt; <span class="stringliteral">", "</span>
-<a name="l00188"></a>00188 &lt;&lt; <span class="stringliteral">"Sample rate : "</span> &lt;&lt; SampleRate &lt;&lt; <span class="stringliteral">")"</span>
-<a name="l00189"></a>00189 &lt;&lt; std::endl;
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195
-<a name="l00199"></a><a class="code" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239">00199</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239" title="Save the sound buffer to a file.">SoundBuffer::SaveToFile</a>(<span class="keyword">const</span> std::string&amp; Filename)<span class="keyword"> const</span>
-<a name="l00200"></a>00200 <span class="keyword"></span>{
-<a name="l00201"></a>00201 <span class="comment">// Create the sound file in write mode</span>
-<a name="l00202"></a>00202 std::auto_ptr&lt;priv::SoundFile&gt; File(priv::SoundFile::CreateWrite(Filename, <a class="code" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f" title="Return the number of channels (1 = mono, 2 = stereo, .">GetChannelsCount</a>(), <a class="code" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571" title="Get the sample rate.">GetSampleRate</a>()));
-<a name="l00203"></a>00203 <span class="keywordflow">if</span> (File.get())
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 <span class="comment">// Write the samples to the opened file</span>
-<a name="l00206"></a>00206 File-&gt;Write(&amp;mySamples[0], mySamples.size());
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210 <span class="keywordflow">else</span>
-<a name="l00211"></a>00211 {
-<a name="l00212"></a>00212 <span class="comment">// Error...</span>
-<a name="l00213"></a>00213 std::cerr &lt;&lt; <span class="stringliteral">"Failed to save sound buffer to file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219
-<a name="l00223"></a><a class="code" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0">00223</a> <span class="keyword">const</span> Int16* <a class="code" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0" title="Return the sound samples.">SoundBuffer::GetSamples</a>()<span class="keyword"> const</span>
-<a name="l00224"></a>00224 <span class="keyword"></span>{
-<a name="l00225"></a>00225 <span class="keywordflow">return</span> mySamples.empty() ? NULL : &amp;mySamples[0];
-<a name="l00226"></a>00226 }
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228
-<a name="l00232"></a><a class="code" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789">00232</a> std::size_t <a class="code" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789" title="Return the samples count.">SoundBuffer::GetSamplesCount</a>()<span class="keyword"> const</span>
-<a name="l00233"></a>00233 <span class="keyword"></span>{
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> mySamples.size();
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237
-<a name="l00241"></a><a class="code" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571">00241</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571" title="Get the sample rate.">SoundBuffer::GetSampleRate</a>()<span class="keyword"> const</span>
-<a name="l00242"></a>00242 <span class="keyword"></span>{
-<a name="l00243"></a>00243 ALint SampleRate;
-<a name="l00244"></a>00244 ALCheck(alGetBufferi(myBuffer, AL_FREQUENCY, &amp;SampleRate));
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> SampleRate;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249
-<a name="l00253"></a><a class="code" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f">00253</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f" title="Return the number of channels (1 = mono, 2 = stereo, .">SoundBuffer::GetChannelsCount</a>()<span class="keyword"> const</span>
-<a name="l00254"></a>00254 <span class="keyword"></span>{
-<a name="l00255"></a>00255 ALint ChannelsCount;
-<a name="l00256"></a>00256 ALCheck(alGetBufferi(myBuffer, AL_CHANNELS, &amp;ChannelsCount));
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> ChannelsCount;
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261
-<a name="l00265"></a><a class="code" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984">00265</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984" title="Get the sound duration.">SoundBuffer::GetDuration</a>()<span class="keyword"> const</span>
-<a name="l00266"></a>00266 <span class="keyword"></span>{
-<a name="l00267"></a>00267 <span class="keywordflow">return</span> myDuration;
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270
-<a name="l00274"></a><a class="code" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49">00274</a> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; <a class="code" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49" title="Assignment operator.">SoundBuffer::operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Other)
-<a name="l00275"></a>00275 {
-<a name="l00276"></a>00276 <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> Temp(Other);
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 std::swap(mySamples, Temp.<a class="code" href="classsf_1_1SoundBuffer.htm#b0d890ac6d5aff0e3b8835c2fb30c79a" title="Samples buffer.">mySamples</a>);
-<a name="l00279"></a>00279 std::swap(myBuffer, Temp.<a class="code" href="classsf_1_1SoundBuffer.htm#b9d31c90ee4febbd075b9c64c3072a65" title="OpenAL buffer identifier.">myBuffer</a>);
-<a name="l00280"></a>00280 std::swap(myDuration, Temp.<a class="code" href="classsf_1_1SoundBuffer.htm#79018d0cf609a509e857d7c7102fdda2" title="Sound duration, in seconds.">myDuration</a>);
-<a name="l00281"></a>00281 std::swap(mySounds, Temp.<a class="code" href="classsf_1_1SoundBuffer.htm#09a94aaf12403194a6f8a61761272a89" title="List of sounds that are using this buffer.">mySounds</a>); <span class="comment">// swap sounds too, so that they are detached when Temp is destroyed</span>
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286
-<a name="l00290"></a>00290 <span class="keywordtype">bool</span> SoundBuffer::Update(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00291"></a>00291 {
-<a name="l00292"></a>00292 <span class="comment">// Check parameters</span>
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (!SampleRate || !ChannelsCount || mySamples.empty())
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296 <span class="comment">// Find the good format according to the number of channels</span>
-<a name="l00297"></a>00297 ALenum Format = priv::AudioDevice::GetInstance().GetFormatFromChannelsCount(ChannelsCount);
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299 <span class="comment">// Check if the format is valid</span>
-<a name="l00300"></a>00300 <span class="keywordflow">if</span> (Format == 0)
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 std::cerr &lt;&lt; <span class="stringliteral">"Unsupported number of channels ("</span> &lt;&lt; ChannelsCount &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00303"></a>00303 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="comment">// Fill the buffer</span>
-<a name="l00307"></a>00307 ALsizei Size = <span class="keyword">static_cast&lt;</span>ALsizei<span class="keyword">&gt;</span>(mySamples.size()) * <span class="keyword">sizeof</span>(Int16);
-<a name="l00308"></a>00308 ALCheck(alBufferData(myBuffer, Format, &amp;mySamples[0], Size, SampleRate));
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="comment">// Compute the duration</span>
-<a name="l00311"></a>00311 myDuration = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mySamples.size()) / SampleRate / ChannelsCount;
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316
-<a name="l00320"></a>00320 <span class="keywordtype">void</span> SoundBuffer::AttachSound(Sound* Instance)<span class="keyword"> const</span>
-<a name="l00321"></a>00321 <span class="keyword"></span>{
-<a name="l00322"></a>00322 mySounds.insert(Instance);
-<a name="l00323"></a>00323 }
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325
-<a name="l00329"></a>00329 <span class="keywordtype">void</span> SoundBuffer::DetachSound(Sound* Instance)<span class="keyword"> const</span>
-<a name="l00330"></a>00330 <span class="keyword"></span>{
-<a name="l00331"></a>00331 mySounds.erase(Instance);
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundBuffer_8hpp-source.htm b/doc/html/SoundBuffer_8hpp-source.htm
deleted file mode 100755
index 606abf2..0000000
--- a/doc/html/SoundBuffer_8hpp-source.htm
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundBuffer.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDBUFFER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDBUFFER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Audio/AudioResource.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;set&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Sound;
-<a name="l00041"></a>00041
-<a name="l00046"></a><a class="code" href="classsf_1_1SoundBuffer.htm">00046</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>, <span class="keyword">public</span> <a class="code" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a>&lt;SoundBuffer&gt;
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">public</span> :
-<a name="l00049"></a>00049
-<a name="l00054"></a>00054 <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>();
-<a name="l00055"></a>00055
-<a name="l00062"></a>00062 <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Copy);
-<a name="l00063"></a>00063
-<a name="l00068"></a>00068 ~<a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>();
-<a name="l00069"></a>00069
-<a name="l00078"></a>00078 <span class="keywordtype">bool</span> LoadFromFile(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00079"></a>00079
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> LoadFromMemory(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00090"></a>00090
-<a name="l00103"></a>00103 <span class="keywordtype">bool</span> LoadFromSamples(<span class="keyword">const</span> Int16* Samples, std::size_t SamplesCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00104"></a>00104
-<a name="l00113"></a>00113 <span class="keywordtype">bool</span> SaveToFile(<span class="keyword">const</span> std::string&amp; Filename) <span class="keyword">const</span>;
-<a name="l00114"></a>00114
-<a name="l00121"></a>00121 <span class="keyword">const</span> Int16* GetSamples() <span class="keyword">const</span>;
-<a name="l00122"></a>00122
-<a name="l00129"></a>00129 std::size_t GetSamplesCount() <span class="keyword">const</span>;
-<a name="l00130"></a>00130
-<a name="l00137"></a>00137 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSampleRate() <span class="keyword">const</span>;
-<a name="l00138"></a>00138
-<a name="l00145"></a>00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetChannelsCount() <span class="keyword">const</span>;
-<a name="l00146"></a>00146
-<a name="l00153"></a>00153 <span class="keywordtype">float</span> GetDuration() <span class="keyword">const</span>;
-<a name="l00154"></a>00154
-<a name="l00163"></a>00163 <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; operator =(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Other);
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keyword">private</span> :
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>;
-<a name="l00168"></a>00168
-<a name="l00178"></a>00178 <span class="keywordtype">bool</span> Update(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00179"></a>00179
-<a name="l00186"></a>00186 <span class="keywordtype">void</span> AttachSound(<a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>* Instance) <span class="keyword">const</span>;
-<a name="l00187"></a>00187
-<a name="l00194"></a>00194 <span class="keywordtype">void</span> DetachSound(<a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>* Instance) <span class="keyword">const</span>;
-<a name="l00195"></a>00195
-<a name="l00197"></a>00197 <span class="comment">// Types</span>
-<a name="l00199"></a>00199 <span class="comment"></span> <span class="keyword">typedef</span> std::set&lt;Sound*&gt; SoundList;
-<a name="l00200"></a>00200
-<a name="l00202"></a>00202 <span class="comment">// Member data</span>
-<a name="l00204"></a>00204 <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myBuffer;
-<a name="l00205"></a>00205 std::vector&lt;Int16&gt; mySamples;
-<a name="l00206"></a>00206 <span class="keywordtype">float</span> myDuration;
-<a name="l00207"></a>00207 <span class="keyword">mutable</span> SoundList mySounds;
-<a name="l00208"></a>00208 };
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 } <span class="comment">// namespace sf</span>
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="preprocessor">#endif // SFML_SOUNDBUFFER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFileDefault_8cpp-source.htm b/doc/html/SoundFileDefault_8cpp-source.htm
deleted file mode 100755
index 5b2b460..0000000
--- a/doc/html/SoundFileDefault_8cpp-source.htm
+++ /dev/null
@@ -1,350 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFileDefault.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundFileDefault.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 SoundFileDefault::SoundFileDefault() :
-<a name="l00041"></a>00041 myFile(NULL)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a>00050 SoundFileDefault::~SoundFileDefault()
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keywordflow">if</span> (myFile)
-<a name="l00053"></a>00053 sf_close(myFile);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00060"></a>00060 <span class="keywordtype">bool</span> SoundFileDefault::IsFileSupported(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">bool</span> Read)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (Read)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="comment">// Open the sound file</span>
-<a name="l00065"></a>00065 SF_INFO FileInfos;
-<a name="l00066"></a>00066 SNDFILE* File = sf_open(Filename.c_str(), SFM_READ, &amp;FileInfos);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (File)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 sf_close(File);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <span class="keywordflow">else</span>
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="comment">// Check the extension</span>
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> GetFormatFromFilename(Filename) != -1;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> SoundFileDefault::IsFileSupported(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">// Define the I/O custom functions for reading from memory</span>
-<a name="l00092"></a>00092 SF_VIRTUAL_IO VirtualIO;
-<a name="l00093"></a>00093 VirtualIO.get_filelen = &amp;SoundFileDefault::MemoryGetLength;
-<a name="l00094"></a>00094 VirtualIO.read = &amp;SoundFileDefault::MemoryRead;
-<a name="l00095"></a>00095 VirtualIO.seek = &amp;SoundFileDefault::MemorySeek;
-<a name="l00096"></a>00096 VirtualIO.tell = &amp;SoundFileDefault::MemoryTell;
-<a name="l00097"></a>00097 VirtualIO.write = &amp;SoundFileDefault::MemoryWrite;
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="comment">// Initialize the memory data</span>
-<a name="l00100"></a>00100 MemoryInfos Memory;
-<a name="l00101"></a>00101 Memory.DataStart = Data;
-<a name="l00102"></a>00102 Memory.DataPtr = Data;
-<a name="l00103"></a>00103 Memory.TotalSize = SizeInBytes;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">// Open the sound file</span>
-<a name="l00106"></a>00106 SF_INFO FileInfos;
-<a name="l00107"></a>00107 SNDFILE* File = sf_open_virtual(&amp;VirtualIO, SFM_READ, &amp;FileInfos, &amp;Memory);
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keywordflow">if</span> (File)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 sf_close(File);
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 <span class="keywordflow">else</span>
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120
-<a name="l00124"></a>00124 <span class="keywordtype">bool</span> SoundFileDefault::OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="comment">// If the file is already opened, first close it</span>
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (myFile)
-<a name="l00128"></a>00128 sf_close(myFile);
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <span class="comment">// Open the sound file</span>
-<a name="l00131"></a>00131 SF_INFO FileInfos;
-<a name="l00132"></a>00132 myFile = sf_open(Filename.c_str(), SFM_READ, &amp;FileInfos);
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (!myFile)
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="comment">// Set the sound parameters</span>
-<a name="l00140"></a>00140 ChannelsCount = FileInfos.channels;
-<a name="l00141"></a>00141 SampleRate = FileInfos.samplerate;
-<a name="l00142"></a>00142 NbSamples = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(FileInfos.frames) * ChannelsCount;
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147
-<a name="l00151"></a>00151 <span class="keywordtype">bool</span> SoundFileDefault::OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="comment">// If the file is already opened, first close it</span>
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (myFile)
-<a name="l00155"></a>00155 sf_close(myFile);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="comment">// Define the I/O custom functions for reading from memory</span>
-<a name="l00158"></a>00158 SF_VIRTUAL_IO VirtualIO;
-<a name="l00159"></a>00159 VirtualIO.get_filelen = &amp;SoundFileDefault::MemoryGetLength;
-<a name="l00160"></a>00160 VirtualIO.read = &amp;SoundFileDefault::MemoryRead;
-<a name="l00161"></a>00161 VirtualIO.seek = &amp;SoundFileDefault::MemorySeek;
-<a name="l00162"></a>00162 VirtualIO.tell = &amp;SoundFileDefault::MemoryTell;
-<a name="l00163"></a>00163 VirtualIO.write = &amp;SoundFileDefault::MemoryWrite;
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="comment">// Initialize the memory data</span>
-<a name="l00166"></a>00166 myMemory.DataStart = Data;
-<a name="l00167"></a>00167 myMemory.DataPtr = Data;
-<a name="l00168"></a>00168 myMemory.TotalSize = SizeInBytes;
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="comment">// Open the sound file</span>
-<a name="l00171"></a>00171 SF_INFO FileInfos;
-<a name="l00172"></a>00172 myFile = sf_open_virtual(&amp;VirtualIO, SFM_READ, &amp;FileInfos, &amp;myMemory);
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (!myFile)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read sound file from memory"</span> &lt;&lt; std::endl;
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179 <span class="comment">// Set the sound parameters</span>
-<a name="l00180"></a>00180 ChannelsCount = FileInfos.channels;
-<a name="l00181"></a>00181 SampleRate = FileInfos.samplerate;
-<a name="l00182"></a>00182 NbSamples = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(FileInfos.frames) * ChannelsCount;
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187
-<a name="l00191"></a>00191 <span class="keywordtype">bool</span> SoundFileDefault::OpenWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 <span class="comment">// If the file is already opened, first close it</span>
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (myFile)
-<a name="l00195"></a>00195 sf_close(myFile);
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="comment">// Find the right format according to the file extension</span>
-<a name="l00198"></a>00198 <span class="keywordtype">int</span> Format = GetFormatFromFilename(Filename);
-<a name="l00199"></a>00199 <span class="keywordflow">if</span> (Format == -1)
-<a name="l00200"></a>00200 {
-<a name="l00201"></a>00201 <span class="comment">// Error : unrecognized extension</span>
-<a name="l00202"></a>00202 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\" : unknown format"</span> &lt;&lt; std::endl;
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="comment">// Fill the sound infos with parameters</span>
-<a name="l00207"></a>00207 SF_INFO FileInfos;
-<a name="l00208"></a>00208 FileInfos.channels = ChannelsCount;
-<a name="l00209"></a>00209 FileInfos.samplerate = SampleRate;
-<a name="l00210"></a>00210 FileInfos.format = Format | SF_FORMAT_PCM_16;
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="comment">// Open the sound file for writing</span>
-<a name="l00213"></a>00213 myFile = sf_open(Filename.c_str(), SFM_WRITE, &amp;FileInfos);
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (!myFile)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; std::endl;
-<a name="l00217"></a>00217 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223
-<a name="l00227"></a>00227 std::size_t SoundFileDefault::Read(Int16* Data, std::size_t NbSamples)
-<a name="l00228"></a>00228 {
-<a name="l00229"></a>00229 <span class="keywordflow">if</span> (myFile &amp;&amp; Data &amp;&amp; NbSamples)
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(sf_read_short(myFile, Data, NbSamples));
-<a name="l00231"></a>00231 <span class="keywordflow">else</span>
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> 0;
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235
-<a name="l00239"></a>00239 <span class="keywordtype">void</span> SoundFileDefault::Write(<span class="keyword">const</span> Int16* Data, std::size_t NbSamples)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (myFile &amp;&amp; Data &amp;&amp; NbSamples)
-<a name="l00242"></a>00242 sf_write_short(myFile, Data, NbSamples);
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245
-<a name="l00250"></a>00250 <span class="keywordtype">int</span> SoundFileDefault::GetFormatFromFilename(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="comment">// Extract the extension</span>
-<a name="l00253"></a>00253 std::string Ext = <span class="stringliteral">"wav"</span>;
-<a name="l00254"></a>00254 std::string::size_type Pos = Filename.find_last_of(<span class="stringliteral">"."</span>);
-<a name="l00255"></a>00255 <span class="keywordflow">if</span> (Pos != std::string::npos)
-<a name="l00256"></a>00256 Ext = Filename.substr(Pos + 1);
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="comment">// Match every supported extension with its format constant</span>
-<a name="l00259"></a>00259 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"wav"</span> || Ext == <span class="stringliteral">"WAV"</span> ) <span class="keywordflow">return</span> SF_FORMAT_WAV;
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"aif"</span> || Ext == <span class="stringliteral">"AIF"</span> ) <span class="keywordflow">return</span> SF_FORMAT_AIFF;
-<a name="l00261"></a>00261 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"aiff"</span> || Ext == <span class="stringliteral">"AIFF"</span>) <span class="keywordflow">return</span> SF_FORMAT_AIFF;
-<a name="l00262"></a>00262 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"au"</span> || Ext == <span class="stringliteral">"AU"</span> ) <span class="keywordflow">return</span> SF_FORMAT_AU;
-<a name="l00263"></a>00263 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"raw"</span> || Ext == <span class="stringliteral">"RAW"</span> ) <span class="keywordflow">return</span> SF_FORMAT_RAW;
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"paf"</span> || Ext == <span class="stringliteral">"PAF"</span> ) <span class="keywordflow">return</span> SF_FORMAT_PAF;
-<a name="l00265"></a>00265 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"svx"</span> || Ext == <span class="stringliteral">"SVX"</span> ) <span class="keywordflow">return</span> SF_FORMAT_SVX;
-<a name="l00266"></a>00266 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"voc"</span> || Ext == <span class="stringliteral">"VOC"</span> ) <span class="keywordflow">return</span> SF_FORMAT_VOC;
-<a name="l00267"></a>00267 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"sf"</span> || Ext == <span class="stringliteral">"SF"</span> ) <span class="keywordflow">return</span> SF_FORMAT_IRCAM;
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"w64"</span> || Ext == <span class="stringliteral">"W64"</span> ) <span class="keywordflow">return</span> SF_FORMAT_W64;
-<a name="l00269"></a>00269 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"mat4"</span> || Ext == <span class="stringliteral">"MAT4"</span>) <span class="keywordflow">return</span> SF_FORMAT_MAT4;
-<a name="l00270"></a>00270 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"mat5"</span> || Ext == <span class="stringliteral">"MAT5"</span>) <span class="keywordflow">return</span> SF_FORMAT_MAT5;
-<a name="l00271"></a>00271 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"pvf"</span> || Ext == <span class="stringliteral">"PVF"</span> ) <span class="keywordflow">return</span> SF_FORMAT_PVF;
-<a name="l00272"></a>00272 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"htk"</span> || Ext == <span class="stringliteral">"HTK"</span> ) <span class="keywordflow">return</span> SF_FORMAT_HTK;
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"caf"</span> || Ext == <span class="stringliteral">"CAF"</span> ) <span class="keywordflow">return</span> SF_FORMAT_CAF;
-<a name="l00274"></a>00274 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"nist"</span> || Ext == <span class="stringliteral">"NIST"</span>) <span class="keywordflow">return</span> SF_FORMAT_NIST; <span class="comment">// SUPPORTED ?</span>
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"sds"</span> || Ext == <span class="stringliteral">"SDS"</span> ) <span class="keywordflow">return</span> SF_FORMAT_SDS; <span class="comment">// SUPPORTED ?</span>
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"avr"</span> || Ext == <span class="stringliteral">"AVR"</span> ) <span class="keywordflow">return</span> SF_FORMAT_AVR; <span class="comment">// SUPPORTED ?</span>
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"sd2"</span> || Ext == <span class="stringliteral">"SD2"</span> ) <span class="keywordflow">return</span> SF_FORMAT_SD2; <span class="comment">// SUPPORTED ?</span>
-<a name="l00278"></a>00278 <span class="keywordflow">if</span> (Ext == <span class="stringliteral">"flac"</span> || Ext == <span class="stringliteral">"FLAC"</span>) <span class="keywordflow">return</span> SF_FORMAT_FLAC; <span class="comment">// SUPPORTED ?</span>
-<a name="l00279"></a>00279
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> -1;
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283
-<a name="l00288"></a>00288 sf_count_t SoundFileDefault::MemoryGetLength(<span class="keywordtype">void</span>* UserData)
-<a name="l00289"></a>00289 {
-<a name="l00290"></a>00290 MemoryInfos* Memory = <span class="keyword">static_cast&lt;</span>MemoryInfos*<span class="keyword">&gt;</span>(UserData);
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="keywordflow">return</span> Memory-&gt;TotalSize;
-<a name="l00293"></a>00293 }
-<a name="l00294"></a>00294 sf_count_t SoundFileDefault::MemoryRead(<span class="keywordtype">void</span>* Ptr, sf_count_t Count, <span class="keywordtype">void</span>* UserData)
-<a name="l00295"></a>00295 {
-<a name="l00296"></a>00296 MemoryInfos* Memory = <span class="keyword">static_cast&lt;</span>MemoryInfos*<span class="keyword">&gt;</span>(UserData);
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 sf_count_t Position = Memory-&gt;DataPtr - Memory-&gt;DataStart;
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (Position + Count &gt;= Memory-&gt;TotalSize)
-<a name="l00300"></a>00300 Count = Memory-&gt;TotalSize - Position;
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 memcpy(Ptr, Memory-&gt;DataPtr, static_cast&lt;std::size_t&gt;(Count));
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 Memory-&gt;DataPtr += Count;
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="keywordflow">return</span> Count;
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308 sf_count_t SoundFileDefault::MemorySeek(sf_count_t Offset, <span class="keywordtype">int</span> Whence, <span class="keywordtype">void</span>* UserData)
-<a name="l00309"></a>00309 {
-<a name="l00310"></a>00310 MemoryInfos* Memory = <span class="keyword">static_cast&lt;</span>MemoryInfos*<span class="keyword">&gt;</span>(UserData);
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 sf_count_t Position = 0;
-<a name="l00313"></a>00313 <span class="keywordflow">switch</span> (Whence)
-<a name="l00314"></a>00314 {
-<a name="l00315"></a>00315 <span class="keywordflow">case</span> SEEK_SET :
-<a name="l00316"></a>00316 Position = Offset;
-<a name="l00317"></a>00317 <span class="keywordflow">break</span>;
-<a name="l00318"></a>00318 <span class="keywordflow">case</span> SEEK_CUR :
-<a name="l00319"></a>00319 Position = Memory-&gt;DataPtr - Memory-&gt;DataStart + Offset;
-<a name="l00320"></a>00320 <span class="keywordflow">break</span>;
-<a name="l00321"></a>00321 <span class="keywordflow">case</span> SEEK_END :
-<a name="l00322"></a>00322 Position = Memory-&gt;TotalSize - Offset;
-<a name="l00323"></a>00323 <span class="keywordflow">break</span>;
-<a name="l00324"></a>00324 <span class="keywordflow">default</span> :
-<a name="l00325"></a>00325 Position = 0;
-<a name="l00326"></a>00326 <span class="keywordflow">break</span>;
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 <span class="keywordflow">if</span> (Position &gt;= Memory-&gt;TotalSize)
-<a name="l00330"></a>00330 Position = Memory-&gt;TotalSize - 1;
-<a name="l00331"></a>00331 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Position &lt; 0)
-<a name="l00332"></a>00332 Position = 0;
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 Memory-&gt;DataPtr = Memory-&gt;DataStart + Position;
-<a name="l00335"></a>00335
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> Position;
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338 sf_count_t SoundFileDefault::MemoryTell(<span class="keywordtype">void</span>* UserData)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 MemoryInfos* Memory = <span class="keyword">static_cast&lt;</span>MemoryInfos*<span class="keyword">&gt;</span>(UserData);
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="keywordflow">return</span> Memory-&gt;DataPtr - Memory-&gt;DataStart;
-<a name="l00343"></a>00343 }
-<a name="l00344"></a>00344 sf_count_t SoundFileDefault::MemoryWrite(<span class="keyword">const</span> <span class="keywordtype">void</span>*, sf_count_t, <span class="keywordtype">void</span>*)
-<a name="l00345"></a>00345 {
-<a name="l00346"></a>00346 <span class="keywordflow">return</span> 0;
-<a name="l00347"></a>00347 }
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349
-<a name="l00350"></a>00350 } <span class="comment">// namespace priv</span>
-<a name="l00351"></a>00351
-<a name="l00352"></a>00352 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFileDefault_8hpp-source.htm b/doc/html/SoundFileDefault_8hpp-source.htm
deleted file mode 100755
index 639e373..0000000
--- a/doc/html/SoundFileDefault_8hpp-source.htm
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFileDefault.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDFILEDEFAULT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDFILEDEFAULT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundFile.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;sndfile.h&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>SoundFileDefault : <span class="keyword">public</span> SoundFile
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00051"></a>00051 SoundFileDefault();
-<a name="l00052"></a>00052
-<a name="l00057"></a>00057 ~SoundFileDefault();
-<a name="l00058"></a>00058
-<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsFileSupported(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">bool</span> Read);
-<a name="l00069"></a>00069
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsFileSupported(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00080"></a>00080
-<a name="l00085"></a>00085 <span class="keyword">virtual</span> std::size_t Read(Int16* Data, std::size_t NbSamples);
-<a name="l00086"></a>00086
-<a name="l00091"></a>00091 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Write(<span class="keyword">const</span> Int16* Data, std::size_t NbSamples);
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keyword">private</span> :
-<a name="l00094"></a>00094
-<a name="l00099"></a>00099 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00100"></a>00100
-<a name="l00105"></a>00105 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00106"></a>00106
-<a name="l00111"></a>00111 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00112"></a>00112
-<a name="l00122"></a>00122 <span class="keyword">static</span> <span class="keywordtype">int</span> GetFormatFromFilename(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00123"></a>00123
-<a name="l00128"></a>00128 <span class="keyword">static</span> sf_count_t MemoryGetLength(<span class="keywordtype">void</span>* UserData);
-<a name="l00129"></a>00129 <span class="keyword">static</span> sf_count_t MemoryRead(<span class="keywordtype">void</span>* Ptr, sf_count_t Count, <span class="keywordtype">void</span>* UserData);
-<a name="l00130"></a>00130 <span class="keyword">static</span> sf_count_t MemorySeek(sf_count_t Offset, <span class="keywordtype">int</span> Whence, <span class="keywordtype">void</span>* UserData);
-<a name="l00131"></a>00131 <span class="keyword">static</span> sf_count_t MemoryTell(<span class="keywordtype">void</span>* UserData);
-<a name="l00132"></a>00132 <span class="keyword">static</span> sf_count_t MemoryWrite(<span class="keyword">const</span> <span class="keywordtype">void</span>* Ptr, sf_count_t Count, <span class="keywordtype">void</span>* UserData);
-<a name="l00133"></a>00133
-<a name="l00137"></a>00137 <span class="keyword">struct </span>MemoryInfos
-<a name="l00138"></a>00138 {
-<a name="l00139"></a>00139 <span class="keyword">const</span> <span class="keywordtype">char</span>* DataStart;
-<a name="l00140"></a>00140 <span class="keyword">const</span> <span class="keywordtype">char</span>* DataPtr;
-<a name="l00141"></a>00141 sf_count_t TotalSize;
-<a name="l00142"></a>00142 };
-<a name="l00143"></a>00143
-<a name="l00145"></a>00145 <span class="comment">// Member data</span>
-<a name="l00147"></a>00147 <span class="comment"></span> SNDFILE* myFile;
-<a name="l00148"></a>00148 MemoryInfos myMemory;
-<a name="l00149"></a>00149 };
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 } <span class="comment">// namespace priv</span>
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 } <span class="comment">// namespace sf</span>
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="preprocessor">#endif // SFML_SOUNDFILEDEFAULT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFileOgg_8cpp-source.htm b/doc/html/SoundFileOgg_8cpp-source.htm
deleted file mode 100755
index 848696f..0000000
--- a/doc/html/SoundFileOgg_8cpp-source.htm
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFileOgg.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundFileOgg.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/stb_vorbis/stb_vorbis.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 SoundFileOgg::SoundFileOgg() :
-<a name="l00041"></a>00041 myStream (NULL),
-<a name="l00042"></a>00042 myChannelsCount(0)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00051"></a>00051 SoundFileOgg::~SoundFileOgg()
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (myStream)
-<a name="l00054"></a>00054 stb_vorbis_close(myStream);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057
-<a name="l00061"></a>00061 <span class="keywordtype">bool</span> SoundFileOgg::IsFileSupported(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">bool</span> Read)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (Read)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="comment">// Open the vorbis stream</span>
-<a name="l00066"></a>00066 stb_vorbis* Stream = stb_vorbis_open_filename(const_cast&lt;char*&gt;(Filename.c_str()), NULL, NULL);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (Stream)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 stb_vorbis_close(Stream);
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">else</span>
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <span class="keywordflow">else</span>
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="comment">// No support for writing ogg files yet...</span>
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> SoundFileOgg::IsFileSupported(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">// Open the vorbis stream</span>
-<a name="l00092"></a>00092 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* Buffer = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(Data));
-<a name="l00093"></a>00093 <span class="keywordtype">int</span> Length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(SizeInBytes);
-<a name="l00094"></a>00094 stb_vorbis* Stream = stb_vorbis_open_memory(Buffer, Length, NULL, NULL);
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (Stream)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 stb_vorbis_close(Stream);
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 <span class="keywordflow">else</span>
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107
-<a name="l00111"></a>00111 <span class="keywordtype">bool</span> SoundFileOgg::OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 <span class="comment">// Close the file if already opened</span>
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (myStream)
-<a name="l00115"></a>00115 stb_vorbis_close(myStream);
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="comment">// Open the vorbis stream</span>
-<a name="l00118"></a>00118 myStream = stb_vorbis_open_filename(const_cast&lt;char*&gt;(Filename.c_str()), NULL, NULL);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (myStream == NULL)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\" (cannot open the file)"</span> &lt;&lt; std::endl;
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="comment">// Get the music parameters</span>
-<a name="l00126"></a>00126 stb_vorbis_info Infos = stb_vorbis_get_info(myStream);
-<a name="l00127"></a>00127 ChannelsCount = myChannelsCount = Infos.channels;
-<a name="l00128"></a>00128 SampleRate = Infos.sample_rate;
-<a name="l00129"></a>00129 NbSamples = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(stb_vorbis_stream_length_in_samples(myStream) * ChannelsCount);
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134
-<a name="l00138"></a>00138 <span class="keywordtype">bool</span> SoundFileOgg::OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate)
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="comment">// Close the file if already opened</span>
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (myStream)
-<a name="l00142"></a>00142 stb_vorbis_close(myStream);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="comment">// Open the vorbis stream</span>
-<a name="l00145"></a>00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* Buffer = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(Data));
-<a name="l00146"></a>00146 <span class="keywordtype">int</span> Length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(SizeInBytes);
-<a name="l00147"></a>00147 myStream = stb_vorbis_open_memory(Buffer, Length, NULL, NULL);
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (myStream == NULL)
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read sound file from memory (cannot open the file)"</span> &lt;&lt; std::endl;
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">// Get the music parameters</span>
-<a name="l00155"></a>00155 stb_vorbis_info Infos = stb_vorbis_get_info(myStream);
-<a name="l00156"></a>00156 ChannelsCount = myChannelsCount = Infos.channels;
-<a name="l00157"></a>00157 SampleRate = Infos.sample_rate;
-<a name="l00158"></a>00158 NbSamples = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(stb_vorbis_stream_length_in_samples(myStream) * ChannelsCount);
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163
-<a name="l00167"></a>00167 std::size_t SoundFileOgg::Read(Int16* Data, std::size_t NbSamples)
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (myStream &amp;&amp; Data &amp;&amp; NbSamples)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="keywordtype">int</span> Read = stb_vorbis_get_samples_short_interleaved(myStream, myChannelsCount, Data, static_cast&lt;int&gt;(NbSamples));
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(Read * myChannelsCount);
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174 <span class="keywordflow">else</span>
-<a name="l00175"></a>00175 {
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> 0;
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 } <span class="comment">// namespace priv</span>
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFileOgg_8hpp-source.htm b/doc/html/SoundFileOgg_8hpp-source.htm
deleted file mode 100755
index 27f8b2e..0000000
--- a/doc/html/SoundFileOgg_8hpp-source.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFileOgg.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDFILEOGG_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDFILEOGG_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundFile.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">struct </span>stb_vorbis;
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>priv
-<a name="l00039"></a>00039 {
-<a name="l00044"></a>00044 <span class="keyword">class </span>SoundFileOgg : <span class="keyword">public</span> SoundFile
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00052"></a>00052 SoundFileOgg();
-<a name="l00053"></a>00053
-<a name="l00058"></a>00058 ~SoundFileOgg();
-<a name="l00059"></a>00059
-<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsFileSupported(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">bool</span> Read);
-<a name="l00070"></a>00070
-<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsFileSupported(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00081"></a>00081
-<a name="l00086"></a>00086 <span class="keyword">virtual</span> std::size_t Read(Int16* Data, std::size_t NbSamples);
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keyword">private</span> :
-<a name="l00089"></a>00089
-<a name="l00094"></a>00094 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00095"></a>00095
-<a name="l00100"></a>00100 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00101"></a>00101
-<a name="l00103"></a>00103 <span class="comment">// Member data</span>
-<a name="l00105"></a>00105 <span class="comment"></span> stb_vorbis* myStream;
-<a name="l00106"></a>00106 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myChannelsCount;
-<a name="l00107"></a>00107 };
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 } <span class="comment">// namespace priv</span>
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 } <span class="comment">// namespace sf</span>
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="preprocessor">#endif // SFML_SOUNDFILEOGG_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFile_8cpp-source.htm b/doc/html/SoundFile_8cpp-source.htm
deleted file mode 100755
index 9eb12a2..0000000
--- a/doc/html/SoundFile_8cpp-source.htm
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFile.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundFile.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/SoundFileDefault.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/SoundFileOgg.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>priv
-<a name="l00037"></a>00037 {
-<a name="l00041"></a>00041 SoundFile* SoundFile::CreateRead(<span class="keyword">const</span> std::string&amp; Filename)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="comment">// Create the file according to its type</span>
-<a name="l00044"></a>00044 SoundFile* File = NULL;
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (SoundFileOgg::IsFileSupported(Filename, <span class="keyword">true</span>)) File = <span class="keyword">new</span> SoundFileOgg;
-<a name="l00046"></a>00046 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SoundFileDefault::IsFileSupported(Filename, <span class="keyword">true</span>)) File = <span class="keyword">new</span> SoundFileDefault;
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="comment">// Open it for reading</span>
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (File)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 std::size_t SamplesCount;
-<a name="l00052"></a>00052 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount;
-<a name="l00053"></a>00053 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate;
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (File-&gt;OpenRead(Filename, SamplesCount, ChannelsCount, SampleRate))
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 File-&gt;myFilename = Filename;
-<a name="l00058"></a>00058 File-&gt;myData = NULL;
-<a name="l00059"></a>00059 File-&gt;mySize = 0;
-<a name="l00060"></a>00060 File-&gt;myNbSamples = SamplesCount;
-<a name="l00061"></a>00061 File-&gt;myChannelsCount = ChannelsCount;
-<a name="l00062"></a>00062 File-&gt;mySampleRate = SampleRate;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 <span class="keywordflow">else</span>
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="keyword">delete</span> File;
-<a name="l00067"></a>00067 File = NULL;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> File;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074
-<a name="l00078"></a>00078 SoundFile* SoundFile::CreateRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInMemory)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="comment">// Create the file according to its type</span>
-<a name="l00081"></a>00081 SoundFile* File = NULL;
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (SoundFileOgg::IsFileSupported(Data, SizeInMemory)) File = <span class="keyword">new</span> SoundFileOgg;
-<a name="l00083"></a>00083 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SoundFileDefault::IsFileSupported(Data, SizeInMemory)) File = <span class="keyword">new</span> SoundFileDefault;
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="comment">// Open it for reading</span>
-<a name="l00086"></a>00086 <span class="keywordflow">if</span> (File)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 std::size_t SamplesCount;
-<a name="l00089"></a>00089 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount;
-<a name="l00090"></a>00090 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate;
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (File-&gt;OpenRead(Data, SizeInMemory, SamplesCount, ChannelsCount, SampleRate))
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 File-&gt;myFilename = <span class="stringliteral">""</span>;
-<a name="l00095"></a>00095 File-&gt;myData = Data;
-<a name="l00096"></a>00096 File-&gt;mySize = SizeInMemory;
-<a name="l00097"></a>00097 File-&gt;myNbSamples = SamplesCount;
-<a name="l00098"></a>00098 File-&gt;myChannelsCount = ChannelsCount;
-<a name="l00099"></a>00099 File-&gt;mySampleRate = SampleRate;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 <span class="keywordflow">else</span>
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keyword">delete</span> File;
-<a name="l00104"></a>00104 File = NULL;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> File;
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111
-<a name="l00115"></a>00115 SoundFile* SoundFile::CreateWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="comment">// Create the file according to its type</span>
-<a name="l00118"></a>00118 SoundFile* File = NULL;
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (SoundFileOgg::IsFileSupported(Filename, <span class="keyword">false</span>)) File = <span class="keyword">new</span> SoundFileOgg;
-<a name="l00120"></a>00120 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SoundFileDefault::IsFileSupported(Filename, <span class="keyword">false</span>)) File = <span class="keyword">new</span> SoundFileDefault;
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="comment">// Open it for writing</span>
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (File)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (File-&gt;OpenWrite(Filename, ChannelsCount, SampleRate))
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 File-&gt;myFilename = <span class="stringliteral">""</span>;
-<a name="l00128"></a>00128 File-&gt;myData = NULL;
-<a name="l00129"></a>00129 File-&gt;mySize = 0;
-<a name="l00130"></a>00130 File-&gt;myNbSamples = 0;
-<a name="l00131"></a>00131 File-&gt;myChannelsCount = ChannelsCount;
-<a name="l00132"></a>00132 File-&gt;mySampleRate = SampleRate;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 <span class="keywordflow">else</span>
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keyword">delete</span> File;
-<a name="l00137"></a>00137 File = NULL;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> File;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a>00148 SoundFile::SoundFile() :
-<a name="l00149"></a>00149 myNbSamples (0),
-<a name="l00150"></a>00150 myChannelsCount(0),
-<a name="l00151"></a>00151 mySampleRate (0)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156
-<a name="l00160"></a>00160 SoundFile::~SoundFile()
-<a name="l00161"></a>00161 {
-<a name="l00162"></a>00162 <span class="comment">// Nothing to do</span>
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165
-<a name="l00169"></a>00169 std::size_t SoundFile::GetSamplesCount()<span class="keyword"> const</span>
-<a name="l00170"></a>00170 <span class="keyword"></span>{
-<a name="l00171"></a>00171 <span class="keywordflow">return</span> myNbSamples;
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174
-<a name="l00178"></a>00178 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SoundFile::GetChannelsCount()<span class="keyword"> const</span>
-<a name="l00179"></a>00179 <span class="keyword"></span>{
-<a name="l00180"></a>00180 <span class="keywordflow">return</span> myChannelsCount;
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183
-<a name="l00187"></a>00187 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SoundFile::GetSampleRate()<span class="keyword"> const</span>
-<a name="l00188"></a>00188 <span class="keyword"></span>{
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> mySampleRate;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192
-<a name="l00196"></a>00196 <span class="keywordtype">bool</span> SoundFile::Restart()
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (myData)
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="comment">// Reopen from memory</span>
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> OpenRead(myData, mySize, myNbSamples, myChannelsCount, mySampleRate);
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (myFilename != <span class="stringliteral">""</span>)
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 <span class="comment">// Reopen from file</span>
-<a name="l00206"></a>00206 <span class="keywordflow">return</span> OpenRead(myFilename, myNbSamples, myChannelsCount, mySampleRate);
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208 <span class="keywordflow">else</span>
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 <span class="comment">// Trying to reopen a file opened in write mode... error</span>
-<a name="l00211"></a>00211 std::cerr &lt;&lt; <span class="stringliteral">"Warning : trying to restart a sound opened in write mode, which is not allowed"</span> &lt;&lt; std::endl;
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216
-<a name="l00220"></a>00220 <span class="keywordtype">bool</span> SoundFile::OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp;, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;)
-<a name="l00221"></a>00221 {
-<a name="l00222"></a>00222 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\", format is not supported by SFML"</span> &lt;&lt; std::endl;
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00231"></a>00231 <span class="keywordtype">bool</span> SoundFile::OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>*, std::size_t, std::size_t&amp;, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open sound file from memory, format is not supported by SFML"</span> &lt;&lt; std::endl;
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238
-<a name="l00242"></a>00242 <span class="keywordtype">bool</span> SoundFile::OpenWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open sound file \""</span> &lt;&lt; Filename &lt;&lt; <span class="stringliteral">"\", format is not supported by SFML"</span> &lt;&lt; std::endl;
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249
-<a name="l00253"></a>00253 std::size_t SoundFile::Read(Int16*, std::size_t)
-<a name="l00254"></a>00254 {
-<a name="l00255"></a>00255 std::cerr &lt;&lt; <span class="stringliteral">"Failed to read from sound file (not supported)"</span> &lt;&lt; std::endl;
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="keywordflow">return</span> 0;
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260
-<a name="l00264"></a>00264 <span class="keywordtype">void</span> SoundFile::Write(<span class="keyword">const</span> Int16*, std::size_t)
-<a name="l00265"></a>00265 {
-<a name="l00266"></a>00266 std::cerr &lt;&lt; <span class="stringliteral">"Failed to write to sound file (not supported)"</span> &lt;&lt; std::endl;
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 } <span class="comment">// namespace priv</span>
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundFile_8hpp-source.htm b/doc/html/SoundFile_8hpp-source.htm
deleted file mode 100755
index f0699f4..0000000
--- a/doc/html/SoundFile_8hpp-source.htm
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundFile.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDFILE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDFILE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>SoundFile : NonCopyable
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00058"></a>00058 <span class="keyword">static</span> SoundFile* CreateRead(<span class="keyword">const</span> std::string&amp; Filename);
-<a name="l00059"></a>00059
-<a name="l00072"></a>00072 <span class="keyword">static</span> SoundFile* CreateRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes);
-<a name="l00073"></a>00073
-<a name="l00084"></a>00084 <span class="keyword">static</span> SoundFile* CreateWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00085"></a>00085
-<a name="l00090"></a>00090 <span class="keyword">virtual</span> ~SoundFile();
-<a name="l00091"></a>00091
-<a name="l00098"></a>00098 std::size_t GetSamplesCount() <span class="keyword">const</span>;
-<a name="l00099"></a>00099
-<a name="l00106"></a>00106 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetChannelsCount() <span class="keyword">const</span>;
-<a name="l00107"></a>00107
-<a name="l00114"></a>00114 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSampleRate() <span class="keyword">const</span>;
-<a name="l00115"></a>00115
-<a name="l00122"></a>00122 <span class="keywordtype">bool</span> Restart();
-<a name="l00123"></a>00123
-<a name="l00133"></a>00133 <span class="keyword">virtual</span> std::size_t Read(Int16* Data, std::size_t NbSamples);
-<a name="l00134"></a>00134
-<a name="l00142"></a>00142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Write(<span class="keyword">const</span> Int16* Data, std::size_t NbSamples);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">protected</span> :
-<a name="l00145"></a>00145
-<a name="l00150"></a>00150 SoundFile();
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keyword">private</span> :
-<a name="l00153"></a>00153
-<a name="l00165"></a>00165 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> std::string&amp; Filename, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00166"></a>00166
-<a name="l00179"></a>00179 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenRead(<span class="keyword">const</span> <span class="keywordtype">char</span>* Data, std::size_t SizeInBytes, std::size_t&amp; NbSamples, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; SampleRate);
-<a name="l00180"></a>00180
-<a name="l00191"></a>00191 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OpenWrite(<span class="keyword">const</span> std::string&amp; Filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00192"></a>00192
-<a name="l00194"></a>00194 <span class="comment">// Member data</span>
-<a name="l00196"></a>00196 <span class="comment"></span> std::size_t myNbSamples;
-<a name="l00197"></a>00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myChannelsCount;
-<a name="l00198"></a>00198 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mySampleRate;
-<a name="l00199"></a>00199 std::string myFilename;
-<a name="l00200"></a>00200 <span class="keyword">const</span> <span class="keywordtype">char</span>* myData;
-<a name="l00201"></a>00201 std::size_t mySize;
-<a name="l00202"></a>00202 };
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 } <span class="comment">// namespace priv</span>
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 } <span class="comment">// namespace sf</span>
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 <span class="preprocessor">#endif // SFML_SOUNDFILE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundRecorder_8cpp-source.htm b/doc/html/SoundRecorder_8cpp-source.htm
deleted file mode 100755
index b0d6686..0000000
--- a/doc/html/SoundRecorder_8cpp-source.htm
+++ /dev/null
@@ -1,223 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundRecorder.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundRecorder.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/AudioDevice.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/System/Sleep.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00036"></a>00036 <span class="comment">// Private data</span>
-<a name="l00038"></a>00038 <span class="comment"></span><span class="keyword">namespace</span>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 ALCdevice* CaptureDevice = NULL;
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keyword">namespace </span>sf
-<a name="l00044"></a>00044 {
-<a name="l00048"></a><a class="code" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">00048</a> <a class="code" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9" title="Default constructor.">SoundRecorder::SoundRecorder</a>() :
-<a name="l00049"></a>00049 mySampleRate (0),
-<a name="l00050"></a>00050 myIsCapturing(false)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00059"></a><a class="code" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">00059</a> <a class="code" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64" title="Virtual destructor.">SoundRecorder::~SoundRecorder</a>()
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">// Nothing to do</span>
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064
-<a name="l00069"></a><a class="code" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">00069</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6" title="Start the capture.">SoundRecorder::Start</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="comment">// Check if the device can do audio capture</span>
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!<a class="code" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5" title="Tell if the system supports sound capture.">CanCapture</a>())
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 std::cerr &lt;&lt; <span class="stringliteral">"Failed to start capture : your system cannot capture audio data (call SoundRecorder::CanCapture to check it)"</span> &lt;&lt; std::endl;
-<a name="l00075"></a>00075 <span class="keywordflow">return</span>;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="comment">// Check that another capture is not already running</span>
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (CaptureDevice)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 std::cerr &lt;&lt; <span class="stringliteral">"Trying to start audio capture, but another capture is already running"</span> &lt;&lt; std::endl;
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="comment">// Open the capture device for capturing 16 bits mono samples</span>
-<a name="l00086"></a>00086 CaptureDevice = alcCaptureOpenDevice(NULL, SampleRate, AL_FORMAT_MONO16, SampleRate);
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (!CaptureDevice)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 std::cerr &lt;&lt; <span class="stringliteral">"Failed to open the audio capture device"</span> &lt;&lt; std::endl;
-<a name="l00090"></a>00090 <span class="keywordflow">return</span>;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">// Clear the sample array</span>
-<a name="l00094"></a>00094 mySamples.clear();
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="comment">// Store the sample rate</span>
-<a name="l00097"></a>00097 mySampleRate = SampleRate;
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="comment">// Notify derived class</span>
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (OnStart())
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 <span class="comment">// Start the capture</span>
-<a name="l00103"></a>00103 alcCaptureStart(CaptureDevice);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">// Start the capture in a new thread, to avoid blocking the main thread</span>
-<a name="l00106"></a>00106 myIsCapturing = <span class="keyword">true</span>;
-<a name="l00107"></a>00107 <a class="code" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642" title="Create and run the thread.">Launch</a>();
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111
-<a name="l00115"></a><a class="code" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">00115</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733" title="Stop the capture.">SoundRecorder::Stop</a>()
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="comment">// Stop the capturing thread</span>
-<a name="l00118"></a>00118 myIsCapturing = <span class="keyword">false</span>;
-<a name="l00119"></a>00119 <a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2" title="Wait until the thread finishes.">Wait</a>();
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00126"></a><a class="code" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">00126</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5" title="Get the sample rate.">SoundRecorder::GetSampleRate</a>()<span class="keyword"> const</span>
-<a name="l00127"></a>00127 <span class="keyword"></span>{
-<a name="l00128"></a>00128 <span class="keywordflow">return</span> mySampleRate;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
-<a name="l00136"></a><a class="code" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">00136</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5" title="Tell if the system supports sound capture.">SoundRecorder::CanCapture</a>()
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 ALCdevice* Device = priv::AudioDevice::GetInstance().GetDevice();
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> (alcIsExtensionPresent(Device, <span class="stringliteral">"ALC_EXT_CAPTURE"</span>) != AL_FALSE) ||
-<a name="l00141"></a>00141 (alcIsExtensionPresent(Device, <span class="stringliteral">"ALC_EXT_capture"</span>) != AL_FALSE); <span class="comment">// "bug" in Mac OS X 10.5 and 10.6</span>
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a>00148 <span class="keywordtype">bool</span> SoundRecorder::OnStart()
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 <span class="comment">// Nothing to do</span>
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154
-<a name="l00158"></a>00158 <span class="keywordtype">void</span> SoundRecorder::OnStop()
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="comment">// Nothing to do</span>
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163
-<a name="l00167"></a>00167 <span class="keywordtype">void</span> SoundRecorder::Run()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keywordflow">while</span> (myIsCapturing)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="comment">// Process available samples</span>
-<a name="l00172"></a>00172 ProcessCapturedSamples();
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <span class="comment">// Don't bother the CPU while waiting for more captured data</span>
-<a name="l00175"></a>00175 Sleep(0.1f);
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="comment">// Capture is finished : clean up everything</span>
-<a name="l00179"></a>00179 CleanUp();
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="comment">// Notify derived class</span>
-<a name="l00182"></a>00182 OnStop();
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185
-<a name="l00189"></a>00189 <span class="keywordtype">void</span> SoundRecorder::ProcessCapturedSamples()
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="comment">// Get the number of samples available</span>
-<a name="l00192"></a>00192 ALCint SamplesAvailable;
-<a name="l00193"></a>00193 alcGetIntegerv(CaptureDevice, ALC_CAPTURE_SAMPLES, 1, &amp;SamplesAvailable);
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 <span class="keywordflow">if</span> (SamplesAvailable &gt; 0)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="comment">// Get the recorded samples</span>
-<a name="l00198"></a>00198 mySamples.resize(SamplesAvailable);
-<a name="l00199"></a>00199 alcCaptureSamples(CaptureDevice, &amp;mySamples[0], SamplesAvailable);
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="comment">// Forward them to the derived class</span>
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (!OnProcessSamples(&amp;mySamples[0], mySamples.size()))
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// The user wants to stop the capture</span>
-<a name="l00205"></a>00205 myIsCapturing = <span class="keyword">false</span>;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210
-<a name="l00214"></a>00214 <span class="keywordtype">void</span> SoundRecorder::CleanUp()
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="comment">// Stop the capture</span>
-<a name="l00217"></a>00217 alcCaptureStop(CaptureDevice);
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="comment">// Get the samples left in the buffer</span>
-<a name="l00220"></a>00220 ProcessCapturedSamples();
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <span class="comment">// Close the device</span>
-<a name="l00223"></a>00223 alcCaptureCloseDevice(CaptureDevice);
-<a name="l00224"></a>00224 CaptureDevice = NULL;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundRecorder_8hpp-source.htm b/doc/html/SoundRecorder_8hpp-source.htm
deleted file mode 100755
index b779646..0000000
--- a/doc/html/SoundRecorder_8hpp-source.htm
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundRecorder.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDRECORDER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDRECORDER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Thread.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00041"></a><a class="code" href="classsf_1_1SoundRecorder.htm">00041</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> : <span class="keyword">private</span> <a class="code" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">public</span> :
-<a name="l00044"></a>00044
-<a name="l00049"></a>00049 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a>();
-<a name="l00050"></a>00050
-<a name="l00059"></a>00059 <span class="keywordtype">void</span> Start(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate = 44100);
-<a name="l00060"></a>00060
-<a name="l00065"></a>00065 <span class="keywordtype">void</span> Stop();
-<a name="l00066"></a>00066
-<a name="l00073"></a>00073 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSampleRate() <span class="keyword">const</span>;
-<a name="l00074"></a>00074
-<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keywordtype">bool</span> CanCapture();
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">protected</span> :
-<a name="l00085"></a>00085
-<a name="l00090"></a>00090 <a class="code" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a>();
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keyword">private</span> :
-<a name="l00093"></a>00093
-<a name="l00100"></a>00100 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnStart();
-<a name="l00101"></a>00101
-<a name="l00111"></a>00111 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnProcessSamples(<span class="keyword">const</span> Int16* Samples, std::size_t SamplesCount) = 0;
-<a name="l00112"></a>00112
-<a name="l00117"></a>00117 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStop();
-<a name="l00118"></a>00118
-<a name="l00123"></a>00123 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Run();
-<a name="l00124"></a>00124
-<a name="l00129"></a>00129 <span class="keywordtype">void</span> ProcessCapturedSamples();
-<a name="l00130"></a>00130
-<a name="l00135"></a>00135 <span class="keywordtype">void</span> CleanUp();
-<a name="l00136"></a>00136
-<a name="l00138"></a>00138 <span class="comment">// Member data</span>
-<a name="l00140"></a>00140 <span class="comment"></span> std::vector&lt;Int16&gt; mySamples;
-<a name="l00141"></a>00141 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mySampleRate;
-<a name="l00142"></a>00142 <span class="keywordtype">bool</span> myIsCapturing;
-<a name="l00143"></a>00143 };
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 } <span class="comment">// namespace sf</span>
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="preprocessor">#endif // SFML_SOUNDRECORDER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundStream_8cpp-source.htm b/doc/html/SoundStream_8cpp-source.htm
deleted file mode 100755
index 0b0effd..0000000
--- a/doc/html/SoundStream_8cpp-source.htm
+++ /dev/null
@@ -1,349 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundStream.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/SoundStream.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/AudioDevice.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/System/Sleep.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">00039</a> <a class="code" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c" title="Default constructor.">SoundStream::SoundStream</a>() :
-<a name="l00040"></a>00040 myIsStreaming (false),
-<a name="l00041"></a>00041 myChannelsCount (0),
-<a name="l00042"></a>00042 mySampleRate (0),
-<a name="l00043"></a>00043 myFormat (0),
-<a name="l00044"></a>00044 myLoop (false),
-<a name="l00045"></a>00045 mySamplesProcessed(0)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a><a class="code" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">00054</a> <a class="code" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674" title="Virtual destructor.">SoundStream::~SoundStream</a>()
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="comment">// Stop the sound if it was playing</span>
-<a name="l00057"></a>00057 <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">Stop</a>();
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">00064</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793" title="Set the audio stream parameters, you must call it before Play().">SoundStream::Initialize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 myChannelsCount = ChannelsCount;
-<a name="l00067"></a>00067 mySampleRate = SampleRate;
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="comment">// Deduce the format from the number of channels</span>
-<a name="l00070"></a>00070 myFormat = priv::AudioDevice::GetInstance().GetFormatFromChannelsCount(ChannelsCount);
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="comment">// Check if the format is valid</span>
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (myFormat == 0)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 myChannelsCount = 0;
-<a name="l00076"></a>00076 mySampleRate = 0;
-<a name="l00077"></a>00077 std::cerr &lt;&lt; <span class="stringliteral">"Unsupported number of channels ("</span> &lt;&lt; myChannelsCount &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; std::endl;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00085"></a><a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">00085</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">SoundStream::Play</a>()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="comment">// Check if the sound parameters have been set</span>
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (myFormat == 0)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 std::cerr &lt;&lt; <span class="stringliteral">"Failed to play audio stream : sound parameters have not been initialized (call Initialize first)"</span> &lt;&lt; std::endl;
-<a name="l00091"></a>00091 <span class="keywordflow">return</span>;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="comment">// If the sound is already playing (probably paused), just resume it</span>
-<a name="l00095"></a>00095 <span class="keywordflow">if</span> (myIsStreaming)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Sound::Play</a>();
-<a name="l00098"></a>00098 <span class="keywordflow">return</span>;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Notify the derived class</span>
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (OnStart())
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <span class="comment">// Start updating the stream in a separate thread to avoid blocking the application</span>
-<a name="l00105"></a>00105 mySamplesProcessed = 0;
-<a name="l00106"></a>00106 myIsStreaming = <span class="keyword">true</span>;
-<a name="l00107"></a>00107 <a class="code" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642" title="Create and run the thread.">Launch</a>();
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111
-<a name="l00115"></a><a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">00115</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">SoundStream::Stop</a>()
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="comment">// Wait for the thread to terminate</span>
-<a name="l00118"></a>00118 myIsStreaming = <span class="keyword">false</span>;
-<a name="l00119"></a>00119 <a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2" title="Wait until the thread finishes.">Wait</a>();
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00126"></a><a class="code" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">00126</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858" title="Return the number of channels (1 = mono, 2 = stereo).">SoundStream::GetChannelsCount</a>()<span class="keyword"> const</span>
-<a name="l00127"></a>00127 <span class="keyword"></span>{
-<a name="l00128"></a>00128 <span class="keywordflow">return</span> myChannelsCount;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
-<a name="l00135"></a><a class="code" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">00135</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc" title="Get the stream sample rate.">SoundStream::GetSampleRate</a>()<span class="keyword"> const</span>
-<a name="l00136"></a>00136 <span class="keyword"></span>{
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> mySampleRate;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140
-<a name="l00144"></a><a class="code" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">00144</a> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Sound::Status</a> <a class="code" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2" title="Get the status of the stream (stopped, paused, playing).">SoundStream::GetStatus</a>()<span class="keyword"> const</span>
-<a name="l00145"></a>00145 <span class="keyword"></span>{
-<a name="l00146"></a>00146 <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Status</a> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Status</a> = <a class="code" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2" title="Get the status of the stream (stopped, paused, playing).">Sound::GetStatus</a>();
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="comment">// To compensate for the lag between Play() and alSourcePlay()</span>
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> ((Status == <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>) &amp;&amp; myIsStreaming)
-<a name="l00150"></a>00150 Status = <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288" title="Sound is playing.">Playing</a>;
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> Status;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155
-<a name="l00162"></a><a class="code" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">00162</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac" title="Get the current playing position of the stream.">SoundStream::GetPlayingOffset</a>()<span class="keyword"> const</span>
-<a name="l00163"></a>00163 <span class="keyword"></span>{
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac" title="Get the current playing position of the stream.">Sound::GetPlayingOffset</a>() + <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mySamplesProcessed) / mySampleRate / myChannelsCount;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167
-<a name="l00171"></a><a class="code" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">00171</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e" title="Set the stream loop state.">SoundStream::SetLoop</a>(<span class="keywordtype">bool</span> Loop)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 myLoop = Loop;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00180"></a><a class="code" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">00180</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78" title="Tell whether or not the stream is looping.">SoundStream::GetLoop</a>()<span class="keyword"> const</span>
-<a name="l00181"></a>00181 <span class="keyword"></span>{
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> myLoop;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185
-<a name="l00189"></a>00189 <span class="keywordtype">void</span> SoundStream::Run()
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="comment">// Create the buffers</span>
-<a name="l00192"></a>00192 ALCheck(alGenBuffers(BuffersCount, myBuffers));
-<a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; BuffersCount; ++i)
-<a name="l00194"></a>00194 myEndBuffers[i] = <span class="keyword">false</span>;
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="comment">// Fill the queue</span>
-<a name="l00197"></a>00197 <span class="keywordtype">bool</span> RequestStop = FillQueue();
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="comment">// Play the sound</span>
-<a name="l00200"></a>00200 <a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Sound::Play</a>();
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keywordflow">while</span> (myIsStreaming)
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="comment">// The stream has been interrupted !</span>
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af" title="Get the status of the sound (stopped, paused, playing).">Sound::GetStatus</a>() == <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>)
-<a name="l00206"></a>00206 {
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (!RequestStop)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="comment">// Just continue</span>
-<a name="l00210"></a>00210 <a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Sound::Play</a>();
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212 <span class="keywordflow">else</span>
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="comment">// End streaming</span>
-<a name="l00215"></a>00215 myIsStreaming = <span class="keyword">false</span>;
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="comment">// Get the number of buffers that have been processed (ie. ready for reuse)</span>
-<a name="l00220"></a>00220 ALint NbProcessed;
-<a name="l00221"></a>00221 ALCheck(alGetSourcei(Sound::mySource, AL_BUFFERS_PROCESSED, &amp;NbProcessed));
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 <span class="keywordflow">while</span> (NbProcessed--)
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="comment">// Pop the first unused buffer from the queue</span>
-<a name="l00226"></a>00226 ALuint Buffer;
-<a name="l00227"></a>00227 ALCheck(alSourceUnqueueBuffers(Sound::mySource, 1, &amp;Buffer));
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="comment">// Find its number</span>
-<a name="l00230"></a>00230 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferNum = 0;
-<a name="l00231"></a>00231 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; BuffersCount; ++i)
-<a name="l00232"></a>00232 <span class="keywordflow">if</span> (myBuffers[i] == Buffer)
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 BufferNum = i;
-<a name="l00235"></a>00235 <span class="keywordflow">break</span>;
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="comment">// Retrieve its size and add it to the samples count</span>
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (myEndBuffers[BufferNum])
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <span class="comment">// This was the last buffer: reset the sample count</span>
-<a name="l00242"></a>00242 mySamplesProcessed = 0;
-<a name="l00243"></a>00243 myEndBuffers[BufferNum] = <span class="keyword">false</span>;
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 <span class="keywordflow">else</span>
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 ALint Size;
-<a name="l00248"></a>00248 ALCheck(alGetBufferi(Buffer, AL_SIZE, &amp;Size));
-<a name="l00249"></a>00249 mySamplesProcessed += Size / <span class="keyword">sizeof</span>(Int16);
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="comment">// Fill it and push it back into the playing queue</span>
-<a name="l00253"></a>00253 <span class="keywordflow">if</span> (!RequestStop)
-<a name="l00254"></a>00254 {
-<a name="l00255"></a>00255 <span class="keywordflow">if</span> (FillAndPushBuffer(BufferNum))
-<a name="l00256"></a>00256 RequestStop = <span class="keyword">true</span>;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="comment">// Leave some time for the other threads if the stream is still playing</span>
-<a name="l00261"></a>00261 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af" title="Get the status of the sound (stopped, paused, playing).">Sound::GetStatus</a>() != <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>)
-<a name="l00262"></a>00262 Sleep(0.1f);
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 <span class="comment">// Stop the playback</span>
-<a name="l00266"></a>00266 <a class="code" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df" title="Stop playing the audio stream.">Sound::Stop</a>();
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <span class="comment">// Unqueue any buffer left in the queue</span>
-<a name="l00269"></a>00269 ClearQueue();
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="comment">// Delete the buffers</span>
-<a name="l00272"></a>00272 ALCheck(alSourcei(Sound::mySource, AL_BUFFER, 0));
-<a name="l00273"></a>00273 ALCheck(alDeleteBuffers(BuffersCount, myBuffers));
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276
-<a name="l00281"></a>00281 <span class="keywordtype">bool</span> SoundStream::FillAndPushBuffer(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferNum)
-<a name="l00282"></a>00282 {
-<a name="l00283"></a>00283 <span class="keywordtype">bool</span> RequestStop = <span class="keyword">false</span>;
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="comment">// Acquire audio data</span>
-<a name="l00286"></a>00286 Chunk Data = {NULL, 0};
-<a name="l00287"></a>00287 <span class="keywordflow">if</span> (!OnGetData(Data))
-<a name="l00288"></a>00288 {
-<a name="l00289"></a>00289 <span class="comment">// Mark the buffer as the last one (so that we know when to reset the playing position)</span>
-<a name="l00290"></a>00290 myEndBuffers[BufferNum] = <span class="keyword">true</span>;
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="comment">// Check if the stream must loop or stop</span>
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (myLoop &amp;&amp; OnStart())
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <span class="comment">// If we succeeded to restart and we previously had no data, try to fill the buffer once again</span>
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (!Data.Samples || (Data.NbSamples == 0))
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> FillAndPushBuffer(BufferNum);
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301 <span class="keywordflow">else</span>
-<a name="l00302"></a>00302 {
-<a name="l00303"></a>00303 <span class="comment">// Not looping or restart failed: request stop</span>
-<a name="l00304"></a>00304 RequestStop = <span class="keyword">true</span>;
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306 }
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 <span class="comment">// Fill the buffer if some data was returned</span>
-<a name="l00309"></a>00309 <span class="keywordflow">if</span> (Data.Samples &amp;&amp; Data.NbSamples)
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Buffer = myBuffers[BufferNum];
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313 <span class="comment">// Fill the buffer</span>
-<a name="l00314"></a>00314 ALsizei Size = <span class="keyword">static_cast&lt;</span>ALsizei<span class="keyword">&gt;</span>(Data.NbSamples) * <span class="keyword">sizeof</span>(Int16);
-<a name="l00315"></a>00315 ALCheck(alBufferData(Buffer, myFormat, Data.Samples, Size, mySampleRate));
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317 <span class="comment">// Push it into the sound queue</span>
-<a name="l00318"></a>00318 ALCheck(alSourceQueueBuffers(Sound::mySource, 1, &amp;Buffer));
-<a name="l00319"></a>00319 }
-<a name="l00320"></a>00320
-<a name="l00321"></a>00321 <span class="keywordflow">return</span> RequestStop;
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324
-<a name="l00328"></a>00328 <span class="keywordtype">bool</span> SoundStream::FillQueue()
-<a name="l00329"></a>00329 {
-<a name="l00330"></a>00330 <span class="comment">// Fill and enqueue all the available buffers</span>
-<a name="l00331"></a>00331 <span class="keywordtype">bool</span> RequestStop = <span class="keyword">false</span>;
-<a name="l00332"></a>00332 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; (i &lt; BuffersCount) &amp;&amp; !RequestStop; ++i)
-<a name="l00333"></a>00333 {
-<a name="l00334"></a>00334 <span class="keywordflow">if</span> (FillAndPushBuffer(i))
-<a name="l00335"></a>00335 RequestStop = <span class="keyword">true</span>;
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337
-<a name="l00338"></a>00338 <span class="keywordflow">return</span> RequestStop;
-<a name="l00339"></a>00339 }
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341
-<a name="l00345"></a>00345 <span class="keywordtype">void</span> SoundStream::ClearQueue()
-<a name="l00346"></a>00346 {
-<a name="l00347"></a>00347 <span class="comment">// Get the number of buffers still in the queue</span>
-<a name="l00348"></a>00348 ALint NbQueued;
-<a name="l00349"></a>00349 ALCheck(alGetSourcei(Sound::mySource, AL_BUFFERS_QUEUED, &amp;NbQueued));
-<a name="l00350"></a>00350
-<a name="l00351"></a>00351 <span class="comment">// Unqueue them all</span>
-<a name="l00352"></a>00352 ALuint Buffer;
-<a name="l00353"></a>00353 <span class="keywordflow">for</span> (ALint i = 0; i &lt; NbQueued; ++i)
-<a name="l00354"></a>00354 ALCheck(alSourceUnqueueBuffers(Sound::mySource, 1, &amp;Buffer));
-<a name="l00355"></a>00355 }
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357
-<a name="l00361"></a>00361 <span class="keywordtype">bool</span> SoundStream::OnStart()
-<a name="l00362"></a>00362 {
-<a name="l00363"></a>00363 <span class="comment">// Does nothing by default</span>
-<a name="l00364"></a>00364
-<a name="l00365"></a>00365 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/SoundStream_8hpp-source.htm b/doc/html/SoundStream_8hpp-source.htm
deleted file mode 100755
index ee6f7a2..0000000
--- a/doc/html/SoundStream_8hpp-source.htm
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SoundStream.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUNDSTREAM_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUNDSTREAM_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/Sound.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Thread.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00044"></a><a class="code" href="classsf_1_1SoundStream.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a> : <span class="keyword">private</span> <a class="code" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a>, <span class="keyword">private</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Sound::Status</a>;
-<a name="l00049"></a>00049 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Sound::Stopped</a>;
-<a name="l00050"></a>00050 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f" title="Sound is paused.">Sound::Paused</a>;
-<a name="l00051"></a>00051 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288" title="Sound is playing.">Sound::Playing</a>;
-<a name="l00052"></a>00052 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3" title="Pause the sound.">Sound::Pause</a>;
-<a name="l00053"></a>00053 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">Sound::SetPitch</a>;
-<a name="l00054"></a>00054 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">Sound::SetVolume</a>;
-<a name="l00055"></a>00055 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">Sound::SetPosition</a>;
-<a name="l00056"></a>00056 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3" title="Make the sound&amp;#39;s position relative to the listener&amp;#39;s position, or absolute...">Sound::SetRelativeToListener</a>;
-<a name="l00057"></a>00057 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9" title="Set the minimum distance - closer than this distance, the listener will hear the...">Sound::SetMinDistance</a>;
-<a name="l00058"></a>00058 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9" title="Set the attenuation factor - the higher the attenuation, the more the sound will...">Sound::SetAttenuation</a>;
-<a name="l00059"></a>00059 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">Sound::GetPitch</a>;
-<a name="l00060"></a>00060 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">Sound::GetVolume</a>;
-<a name="l00061"></a>00061 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">Sound::GetPosition</a>;
-<a name="l00062"></a>00062 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e" title="Tell if the sound&amp;#39;s position is relative to the listener&amp;#39;s position, or if...">Sound::IsRelativeToListener</a>;
-<a name="l00063"></a>00063 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b" title="Get the minimum distance.">Sound::GetMinDistance</a>;
-<a name="l00064"></a>00064 <span class="keyword">using</span> <a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42" title="Get the attenuation factor.">Sound::GetAttenuation</a>;
-<a name="l00065"></a>00065
-<a name="l00069"></a><a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm">00069</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm" title="Structure defining a chunk of audio data to stream.">Chunk</a>
-<a name="l00070"></a>00070 {
-<a name="l00071"></a><a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449">00071</a> <span class="keyword">const</span> Int16* Samples;
-<a name="l00072"></a><a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf">00072</a> std::size_t NbSamples;
-<a name="l00073"></a>00073 };
-<a name="l00074"></a>00074
-<a name="l00079"></a>00079 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a>();
-<a name="l00080"></a>00080
-<a name="l00085"></a>00085 <span class="keywordtype">void</span> Play();
-<a name="l00086"></a>00086
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> Stop();
-<a name="l00092"></a>00092
-<a name="l00099"></a>00099 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetChannelsCount() <span class="keyword">const</span>;
-<a name="l00100"></a>00100
-<a name="l00107"></a>00107 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetSampleRate() <span class="keyword">const</span>;
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Status</a> GetStatus() <span class="keyword">const</span>;
-<a name="l00116"></a>00116
-<a name="l00123"></a>00123 <span class="keywordtype">float</span> GetPlayingOffset() <span class="keyword">const</span>;
-<a name="l00124"></a>00124
-<a name="l00132"></a>00132 <span class="keywordtype">void</span> SetLoop(<span class="keywordtype">bool</span> Loop);
-<a name="l00133"></a>00133
-<a name="l00140"></a>00140 <span class="keywordtype">bool</span> GetLoop() <span class="keyword">const</span>;
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">protected</span> :
-<a name="l00143"></a>00143
-<a name="l00148"></a>00148 <a class="code" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a>();
-<a name="l00149"></a>00149
-<a name="l00157"></a>00157 <span class="keywordtype">void</span> Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelsCount, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> SampleRate);
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keyword">private</span> :
-<a name="l00160"></a>00160
-<a name="l00165"></a>00165 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Run();
-<a name="l00166"></a>00166
-<a name="l00173"></a>00173 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnStart();
-<a name="l00174"></a>00174
-<a name="l00183"></a>00183 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnGetData(<a class="code" href="structsf_1_1SoundStream_1_1Chunk.htm" title="Structure defining a chunk of audio data to stream.">Chunk</a>&amp; Data) = 0;
-<a name="l00184"></a>00184
-<a name="l00194"></a>00194 <span class="keywordtype">bool</span> FillAndPushBuffer(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferNum);
-<a name="l00195"></a>00195
-<a name="l00202"></a>00202 <span class="keywordtype">bool</span> FillQueue();
-<a name="l00203"></a>00203
-<a name="l00208"></a>00208 <span class="keywordtype">void</span> ClearQueue();
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="keyword">enum</span> {BuffersCount = 3};
-<a name="l00211"></a>00211
-<a name="l00213"></a>00213 <span class="comment">// Member data</span>
-<a name="l00215"></a>00215 <span class="comment"></span> <span class="keywordtype">bool</span> myIsStreaming;
-<a name="l00216"></a>00216 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myBuffers[BuffersCount];
-<a name="l00217"></a>00217 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myChannelsCount;
-<a name="l00218"></a>00218 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mySampleRate;
-<a name="l00219"></a>00219 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> myFormat;
-<a name="l00220"></a>00220 <span class="keywordtype">bool</span> myLoop;
-<a name="l00221"></a>00221 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mySamplesProcessed;
-<a name="l00222"></a>00222 <span class="keywordtype">bool</span> myEndBuffers[BuffersCount];
-<a name="l00223"></a>00223 };
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 } <span class="comment">// namespace sf</span>
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="preprocessor">#endif // SFML_SOUNDSTREAM_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sound_8cpp-source.htm b/doc/html/Sound_8cpp-source.htm
deleted file mode 100755
index d5e4d8f..0000000
--- a/doc/html/Sound_8cpp-source.htm
+++ /dev/null
@@ -1,341 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sound.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/Sound.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/SoundBuffer.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a><a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282">00038</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>()
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 ALCheck(alGenSources(1, &amp;mySource));
-<a name="l00041"></a>00041 ALCheck(alSourcei(mySource, AL_BUFFER, 0));
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00048"></a><a class="code" href="classsf_1_1Sound.htm#45aff03dc5bf87647eba6bed7c1ced29">00048</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer, <span class="keywordtype">bool</span> Loop, <span class="keywordtype">float</span> Pitch, <span class="keywordtype">float</span> Volume, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position) :
-<a name="l00049"></a>00049 myBuffer(NULL)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 ALCheck(alGenSources(1, &amp;mySource));
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55" title="Set the source buffer.">SetBuffer</a>(Buffer);
-<a name="l00054"></a>00054 <a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4" title="Set the sound loop state.">SetLoop</a>(Loop);
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">SetPitch</a>(Pitch);
-<a name="l00056"></a>00056 <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">SetVolume</a>(Volume);
-<a name="l00057"></a>00057 <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">SetPosition</a>(Position);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">00064</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Copy) :
-<a name="l00065"></a>00065 <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>(Copy),
-<a name="l00066"></a>00066 myBuffer(NULL)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 ALCheck(alGenSources(1, &amp;mySource));
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (Copy.<a class="code" href="classsf_1_1Sound.htm#853812e73ff1cfdd04fe562431bd5a16" title="Sound buffer bound to the source.">myBuffer</a>)
-<a name="l00071"></a>00071 <a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55" title="Set the source buffer.">SetBuffer</a>(*Copy.<a class="code" href="classsf_1_1Sound.htm#853812e73ff1cfdd04fe562431bd5a16" title="Sound buffer bound to the source.">myBuffer</a>);
-<a name="l00072"></a>00072 <a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4" title="Set the sound loop state.">SetLoop</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e" title="Tell whether or not the sound is looping.">GetLoop</a>());
-<a name="l00073"></a>00073 <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">SetPitch</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">GetPitch</a>());
-<a name="l00074"></a>00074 <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">SetVolume</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">GetVolume</a>());
-<a name="l00075"></a>00075 <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">SetPosition</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">GetPosition</a>());
-<a name="l00076"></a>00076 <a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3" title="Make the sound&amp;#39;s position relative to the listener&amp;#39;s position, or absolute...">SetRelativeToListener</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e" title="Tell if the sound&amp;#39;s position is relative to the listener&amp;#39;s position, or if...">IsRelativeToListener</a>());
-<a name="l00077"></a>00077 <a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9" title="Set the minimum distance - closer than this distance, the listener will hear the...">SetMinDistance</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b" title="Get the minimum distance.">GetMinDistance</a>());
-<a name="l00078"></a>00078 <a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9" title="Set the attenuation factor - the higher the attenuation, the more the sound will...">SetAttenuation</a>(Copy.<a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42" title="Get the attenuation factor.">GetAttenuation</a>());
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00085"></a><a class="code" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">00085</a> <a class="code" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076" title="Destructor.">Sound::~Sound</a>()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (mySource)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keywordflow">if</span> (myBuffer)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Stop</a>();
-<a name="l00092"></a>00092 ALCheck(alSourcei(mySource, AL_BUFFER, 0));
-<a name="l00093"></a>00093 myBuffer-&gt;DetachSound(<span class="keyword">this</span>);
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095 ALCheck(alDeleteSources(1, &amp;mySource));
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00103"></a><a class="code" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">00103</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db" title="Play the sound.">Sound::Play</a>()
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 ALCheck(alSourcePlay(mySource));
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">00112</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3" title="Pause the sound.">Sound::Pause</a>()
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 ALCheck(alSourcePause(mySource));
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117
-<a name="l00121"></a><a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">00121</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Sound::Stop</a>()
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 ALCheck(alSourceStop(mySource));
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126
-<a name="l00130"></a><a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">00130</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55" title="Set the source buffer.">Sound::SetBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer)
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <span class="comment">// First detach from the previous buffer</span>
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (myBuffer)
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Stop</a>();
-<a name="l00136"></a>00136 myBuffer-&gt;DetachSound(<span class="keyword">this</span>);
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="comment">// Assign and use the new buffer</span>
-<a name="l00140"></a>00140 myBuffer = &amp;Buffer;
-<a name="l00141"></a>00141 myBuffer-&gt;AttachSound(<span class="keyword">this</span>);
-<a name="l00142"></a>00142 ALCheck(alSourcei(mySource, AL_BUFFER, myBuffer-&gt;myBuffer));
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145
-<a name="l00149"></a><a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">00149</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4" title="Set the sound loop state.">Sound::SetLoop</a>(<span class="keywordtype">bool</span> Loop)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 ALCheck(alSourcei(mySource, AL_LOOPING, Loop));
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154
-<a name="l00158"></a><a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">00158</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">Sound::SetPitch</a>(<span class="keywordtype">float</span> Pitch)
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 ALCheck(alSourcef(mySource, AL_PITCH, Pitch));
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163
-<a name="l00167"></a><a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">00167</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">Sound::SetVolume</a>(<span class="keywordtype">float</span> Volume)
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 ALCheck(alSourcef(mySource, AL_GAIN, Volume * 0.01f));
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00176"></a><a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">00176</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">Sound::SetPosition</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 ALCheck(alSource3f(mySource, AL_POSITION, X, Y, Z));
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181
-<a name="l00186"></a><a class="code" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">00186</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">Sound::SetPosition</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">SetPosition</a>(Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>);
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00197"></a><a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">00197</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3" title="Make the sound&amp;#39;s position relative to the listener&amp;#39;s position, or absolute...">Sound::SetRelativeToListener</a>(<span class="keywordtype">bool</span> Relative)
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 ALCheck(alSourcei(mySource, AL_SOURCE_RELATIVE, Relative));
-<a name="l00200"></a>00200 }
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202
-<a name="l00208"></a><a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">00208</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9" title="Set the minimum distance - closer than this distance, the listener will hear the...">Sound::SetMinDistance</a>(<span class="keywordtype">float</span> MinDistance)
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 ALCheck(alSourcef(mySource, AL_REFERENCE_DISTANCE, MinDistance));
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213
-<a name="l00219"></a><a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">00219</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9" title="Set the attenuation factor - the higher the attenuation, the more the sound will...">Sound::SetAttenuation</a>(<span class="keywordtype">float</span> Attenuation)
-<a name="l00220"></a>00220 {
-<a name="l00221"></a>00221 ALCheck(alSourcef(mySource, AL_ROLLOFF_FACTOR, Attenuation));
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224
-<a name="l00228"></a><a class="code" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">00228</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62" title="Set the current playing position of the sound.">Sound::SetPlayingOffset</a>(<span class="keywordtype">float</span> TimeOffset)
-<a name="l00229"></a>00229 {
-<a name="l00230"></a>00230 ALCheck(alSourcef(mySource, AL_SEC_OFFSET, TimeOffset));
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233
-<a name="l00237"></a><a class="code" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">00237</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>* <a class="code" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e" title="Get the source buffer.">Sound::GetBuffer</a>()<span class="keyword"> const</span>
-<a name="l00238"></a>00238 <span class="keyword"></span>{
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> myBuffer;
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242
-<a name="l00246"></a><a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">00246</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e" title="Tell whether or not the sound is looping.">Sound::GetLoop</a>()<span class="keyword"> const</span>
-<a name="l00247"></a>00247 <span class="keyword"></span>{
-<a name="l00248"></a>00248 ALint Loop;
-<a name="l00249"></a>00249 ALCheck(alGetSourcei(mySource, AL_LOOPING, &amp;Loop));
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> Loop != 0;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254
-<a name="l00258"></a><a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">00258</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">Sound::GetPitch</a>()<span class="keyword"> const</span>
-<a name="l00259"></a>00259 <span class="keyword"></span>{
-<a name="l00260"></a>00260 ALfloat Pitch;
-<a name="l00261"></a>00261 ALCheck(alGetSourcef(mySource, AL_PITCH, &amp;Pitch));
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> Pitch;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266
-<a name="l00270"></a><a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">00270</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">Sound::GetVolume</a>()<span class="keyword"> const</span>
-<a name="l00271"></a>00271 <span class="keyword"></span>{
-<a name="l00272"></a>00272 ALfloat Gain;
-<a name="l00273"></a>00273 ALCheck(alGetSourcef(mySource, AL_GAIN, &amp;Gain));
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordflow">return</span> Gain * 100.f;
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278
-<a name="l00282"></a><a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">00282</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> <a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">Sound::GetPosition</a>()<span class="keyword"> const</span>
-<a name="l00283"></a>00283 <span class="keyword"></span>{
-<a name="l00284"></a>00284 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> Position;
-<a name="l00285"></a>00285 ALCheck(alGetSource3f(mySource, AL_POSITION, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>));
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> Position;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290
-<a name="l00295"></a><a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">00295</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e" title="Tell if the sound&amp;#39;s position is relative to the listener&amp;#39;s position, or if...">Sound::IsRelativeToListener</a>()<span class="keyword"> const</span>
-<a name="l00296"></a>00296 <span class="keyword"></span>{
-<a name="l00297"></a>00297 ALint Relative;
-<a name="l00298"></a>00298 ALCheck(alGetSourcei(mySource, AL_SOURCE_RELATIVE, &amp;Relative));
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 <span class="keywordflow">return</span> Relative != 0;
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303
-<a name="l00307"></a><a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">00307</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b" title="Get the minimum distance.">Sound::GetMinDistance</a>()<span class="keyword"> const</span>
-<a name="l00308"></a>00308 <span class="keyword"></span>{
-<a name="l00309"></a>00309 ALfloat MinDistance;
-<a name="l00310"></a>00310 ALCheck(alGetSourcef(mySource, AL_REFERENCE_DISTANCE, &amp;MinDistance));
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 <span class="keywordflow">return</span> MinDistance;
-<a name="l00313"></a>00313 }
-<a name="l00314"></a>00314
-<a name="l00315"></a>00315
-<a name="l00319"></a><a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">00319</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42" title="Get the attenuation factor.">Sound::GetAttenuation</a>()<span class="keyword"> const</span>
-<a name="l00320"></a>00320 <span class="keyword"></span>{
-<a name="l00321"></a>00321 ALfloat Attenuation;
-<a name="l00322"></a>00322 ALCheck(alGetSourcef(mySource, AL_ROLLOFF_FACTOR, &amp;Attenuation));
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324 <span class="keywordflow">return</span> Attenuation;
-<a name="l00325"></a>00325 }
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327
-<a name="l00331"></a><a class="code" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">00331</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f" title="Get the current playing position of the sound.">Sound::GetPlayingOffset</a>()<span class="keyword"> const</span>
-<a name="l00332"></a>00332 <span class="keyword"></span>{
-<a name="l00333"></a>00333 ALfloat Seconds = 0.f;
-<a name="l00334"></a>00334 ALCheck(alGetSourcef(mySource, AL_SEC_OFFSET, &amp;Seconds));
-<a name="l00335"></a>00335
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> Seconds;
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339
-<a name="l00343"></a><a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">00343</a> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Sound::Status</a> <a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af" title="Get the status of the sound (stopped, paused, playing).">Sound::GetStatus</a>()<span class="keyword"> const</span>
-<a name="l00344"></a>00344 <span class="keyword"></span>{
-<a name="l00345"></a>00345 ALint State;
-<a name="l00346"></a>00346 ALCheck(alGetSourcei(mySource, AL_SOURCE_STATE, &amp;State));
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 <span class="keywordflow">switch</span> (State)
-<a name="l00349"></a>00349 {
-<a name="l00350"></a>00350 <span class="keywordflow">case</span> AL_INITIAL :
-<a name="l00351"></a>00351 <span class="keywordflow">case</span> AL_STOPPED : <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>;
-<a name="l00352"></a>00352 <span class="keywordflow">case</span> AL_PAUSED : <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f" title="Sound is paused.">Paused</a>;
-<a name="l00353"></a>00353 <span class="keywordflow">case</span> AL_PLAYING : <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288" title="Sound is playing.">Playing</a>;
-<a name="l00354"></a>00354 }
-<a name="l00355"></a>00355
-<a name="l00356"></a>00356 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>;
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359
-<a name="l00363"></a><a class="code" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">00363</a> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; <a class="code" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7" title="Assignment operator.">Sound::operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Other)
-<a name="l00364"></a>00364 {
-<a name="l00365"></a>00365 <span class="comment">// Here we don't use the copy-and-swap idiom, because it would mess up</span>
-<a name="l00366"></a>00366 <span class="comment">// the list of sound instances contained in the buffers</span>
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <span class="comment">// Detach the sound instance from the previous buffer (if any)</span>
-<a name="l00369"></a>00369 <span class="keywordflow">if</span> (myBuffer)
-<a name="l00370"></a>00370 {
-<a name="l00371"></a>00371 <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Stop</a>();
-<a name="l00372"></a>00372 myBuffer-&gt;DetachSound(<span class="keyword">this</span>);
-<a name="l00373"></a>00373 myBuffer = NULL;
-<a name="l00374"></a>00374 }
-<a name="l00375"></a>00375
-<a name="l00376"></a>00376 <span class="comment">// Copy the sound attributes</span>
-<a name="l00377"></a>00377 <span class="keywordflow">if</span> (Other.<a class="code" href="classsf_1_1Sound.htm#853812e73ff1cfdd04fe562431bd5a16" title="Sound buffer bound to the source.">myBuffer</a>)
-<a name="l00378"></a>00378 <a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55" title="Set the source buffer.">SetBuffer</a>(*Other.<a class="code" href="classsf_1_1Sound.htm#853812e73ff1cfdd04fe562431bd5a16" title="Sound buffer bound to the source.">myBuffer</a>);
-<a name="l00379"></a>00379 <a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4" title="Set the sound loop state.">SetLoop</a>(Other.<a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e" title="Tell whether or not the sound is looping.">GetLoop</a>());
-<a name="l00380"></a>00380 <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">SetPitch</a>(Other.<a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">GetPitch</a>());
-<a name="l00381"></a>00381 <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">SetVolume</a>(Other.<a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">GetVolume</a>());
-<a name="l00382"></a>00382 <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">SetPosition</a>(Other.<a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">GetPosition</a>());
-<a name="l00383"></a>00383 <a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3" title="Make the sound&amp;#39;s position relative to the listener&amp;#39;s position, or absolute...">SetRelativeToListener</a>(Other.<a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e" title="Tell if the sound&amp;#39;s position is relative to the listener&amp;#39;s position, or if...">IsRelativeToListener</a>());
-<a name="l00384"></a>00384 <a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9" title="Set the minimum distance - closer than this distance, the listener will hear the...">SetMinDistance</a>(Other.<a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b" title="Get the minimum distance.">GetMinDistance</a>());
-<a name="l00385"></a>00385 <a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9" title="Set the attenuation factor - the higher the attenuation, the more the sound will...">SetAttenuation</a>(Other.<a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42" title="Get the attenuation factor.">GetAttenuation</a>());
-<a name="l00386"></a>00386
-<a name="l00387"></a>00387 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00388"></a>00388 }
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390
-<a name="l00394"></a><a class="code" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">00394</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331" title="Reset the internal buffer.">Sound::ResetBuffer</a>()
-<a name="l00395"></a>00395 {
-<a name="l00396"></a>00396 <span class="comment">// First stop the sound in case it is playing</span>
-<a name="l00397"></a>00397 <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Stop</a>();
-<a name="l00398"></a>00398
-<a name="l00399"></a>00399 <span class="comment">// Detach the buffer</span>
-<a name="l00400"></a>00400 ALCheck(alSourcei(mySource, AL_BUFFER, 0));
-<a name="l00401"></a>00401 myBuffer = NULL;
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403
-<a name="l00404"></a>00404 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sound_8hpp-source.htm b/doc/html/Sound_8hpp-source.htm
deleted file mode 100755
index bd4d42c..0000000
--- a/doc/html/Sound_8hpp-source.htm
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sound.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOUND_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOUND_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Vector3.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Audio/AudioResource.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">class </span>SoundBuffer;
-<a name="l00040"></a>00040
-<a name="l00045"></a><a class="code" href="classsf_1_1Sound.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00052"></a><a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">00052</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Status</a>
-<a name="l00053"></a>00053 {
-<a name="l00054"></a><a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">00054</a> Stopped,
-<a name="l00055"></a><a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">00055</a> Paused,
-<a name="l00056"></a><a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">00056</a> Playing
-<a name="l00057"></a>00057 };
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>();
-<a name="l00064"></a>00064
-<a name="l00075"></a>00075 <span class="keyword">explicit</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer, <span class="keywordtype">bool</span> Loop = <span class="keyword">false</span>, <span class="keywordtype">float</span> Pitch = 1.f, <span class="keywordtype">float</span> Volume = 100.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position = <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>(0, 0, 0));
-<a name="l00076"></a>00076
-<a name="l00083"></a>00083 <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Copy);
-<a name="l00084"></a>00084
-<a name="l00089"></a>00089 ~<a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>();
-<a name="l00090"></a>00090
-<a name="l00095"></a>00095 <span class="keywordtype">void</span> Play();
-<a name="l00096"></a>00096
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> Pause();
-<a name="l00102"></a>00102
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> Stop();
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 <span class="keywordtype">void</span> SetBuffer(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer);
-<a name="l00116"></a>00116
-<a name="l00124"></a>00124 <span class="keywordtype">void</span> SetLoop(<span class="keywordtype">bool</span> Loop);
-<a name="l00125"></a>00125
-<a name="l00133"></a>00133 <span class="keywordtype">void</span> SetPitch(<span class="keywordtype">float</span> Pitch);
-<a name="l00134"></a>00134
-<a name="l00142"></a>00142 <span class="keywordtype">void</span> SetVolume(<span class="keywordtype">float</span> Volume);
-<a name="l00143"></a>00143
-<a name="l00151"></a>00151 <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z);
-<a name="l00152"></a>00152
-<a name="l00160"></a>00160 <span class="keywordtype">void</span> SetPosition(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position);
-<a name="l00161"></a>00161
-<a name="l00170"></a>00170 <span class="keywordtype">void</span> SetRelativeToListener(<span class="keywordtype">bool</span> Relative);
-<a name="l00171"></a>00171
-<a name="l00180"></a>00180 <span class="keywordtype">void</span> SetMinDistance(<span class="keywordtype">float</span> MinDistance);
-<a name="l00181"></a>00181
-<a name="l00190"></a>00190 <span class="keywordtype">void</span> SetAttenuation(<span class="keywordtype">float</span> Attenuation);
-<a name="l00191"></a>00191
-<a name="l00198"></a>00198 <span class="keywordtype">void</span> SetPlayingOffset(<span class="keywordtype">float</span> TimeOffset);
-<a name="l00199"></a>00199
-<a name="l00206"></a>00206 <span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>* GetBuffer() <span class="keyword">const</span>;
-<a name="l00207"></a>00207
-<a name="l00214"></a>00214 <span class="keywordtype">bool</span> GetLoop() <span class="keyword">const</span>;
-<a name="l00215"></a>00215
-<a name="l00222"></a>00222 <span class="keywordtype">float</span> GetPitch() <span class="keyword">const</span>;
-<a name="l00223"></a>00223
-<a name="l00230"></a>00230 <span class="keywordtype">float</span> GetVolume() <span class="keyword">const</span>;
-<a name="l00231"></a>00231
-<a name="l00238"></a>00238 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> GetPosition() <span class="keyword">const</span>;
-<a name="l00239"></a>00239
-<a name="l00247"></a>00247 <span class="keywordtype">bool</span> IsRelativeToListener() <span class="keyword">const</span>;
-<a name="l00248"></a>00248
-<a name="l00255"></a>00255 <span class="keywordtype">float</span> GetMinDistance() <span class="keyword">const</span>;
-<a name="l00256"></a>00256
-<a name="l00263"></a>00263 <span class="keywordtype">float</span> GetAttenuation() <span class="keyword">const</span>;
-<a name="l00264"></a>00264
-<a name="l00271"></a>00271 Status GetStatus() <span class="keyword">const</span>;
-<a name="l00272"></a>00272
-<a name="l00279"></a>00279 <span class="keywordtype">float</span> GetPlayingOffset() <span class="keyword">const</span>;
-<a name="l00280"></a>00280
-<a name="l00289"></a>00289 <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; operator =(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Other);
-<a name="l00290"></a>00290
-<a name="l00298"></a>00298 <span class="keywordtype">void</span> ResetBuffer();
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 <span class="keyword">private</span> :
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a>;
-<a name="l00303"></a>00303
-<a name="l00305"></a>00305 <span class="comment">// Member data</span>
-<a name="l00307"></a>00307 <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mySource;
-<a name="l00308"></a>00308 <a class="code" href="classsf_1_1ResourcePtr.htm">ResourcePtr&lt;SoundBuffer&gt;</a> myBuffer;
-<a name="l00309"></a>00309 };
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 } <span class="comment">// namespace sf</span>
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314 <span class="preprocessor">#endif // SFML_SOUND_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sprite_8cpp-source.htm b/doc/html/Sprite_8cpp-source.htm
deleted file mode 100755
index b3bd3de..0000000
--- a/doc/html/Sprite_8cpp-source.htm
+++ /dev/null
@@ -1,217 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sprite.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/Sprite.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a><a class="code" href="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984">00038</a> <a class="code" href="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984" title="Default constructor.">Sprite::Sprite</a>() :
-<a name="l00039"></a>00039 mySubRect (0, 0, 1, 1),
-<a name="l00040"></a>00040 myIsFlippedX(false),
-<a name="l00041"></a>00041 myIsFlippedY(false)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a><a class="code" href="classsf_1_1Sprite.htm#6992dc47da2f9349bbe691db532f2436">00050</a> <a class="code" href="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984" title="Default constructor.">Sprite::Sprite</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Img, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale, <span class="keywordtype">float</span> Rotation, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col) :
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a> (Position, Scale, Rotation, Col),
-<a name="l00052"></a>00052 mySubRect (0, 0, 1, 1),
-<a name="l00053"></a>00053 myIsFlippedX(false),
-<a name="l00054"></a>00054 myIsFlippedY(false)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <a class="code" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c" title="Change the image of the sprite.">SetImage</a>(Img);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a><a class="code" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c">00063</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c" title="Change the image of the sprite.">Sprite::SetImage</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Img)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="comment">// If there was no source image before and the new image is valid, adjust the source rectangle</span>
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (!myImage &amp;&amp; (Img.<a class="code" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth</a>() &gt; 0) &amp;&amp; (Img.<a class="code" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight</a>() &gt; 0))
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <a class="code" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df" title="Set the sub-rectangle of the sprite inside the source image.">SetSubRect</a>(<a class="code" href="classsf_1_1Rect.htm">IntRect</a>(0, 0, Img.<a class="code" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth</a>(), Img.<a class="code" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight</a>()));
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="comment">// Assign the new image</span>
-<a name="l00072"></a>00072 myImage = &amp;Img;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df">00079</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df" title="Set the sub-rectangle of the sprite inside the source image.">Sprite::SetSubRect</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SubRect)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 mySubRect = SubRect;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00089"></a><a class="code" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32">00089</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32" title="Resize the sprite (by changing its scale factors) (take 2 values).">Sprite::Resize</a>(<span class="keywordtype">float</span> Width, <span class="keywordtype">float</span> Height)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keywordtype">int</span> LocalWidth = mySubRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>();
-<a name="l00092"></a>00092 <span class="keywordtype">int</span> LocalHeight = mySubRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>();
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> ((LocalWidth &gt; 0) &amp;&amp; (LocalHeight &gt; 0))
-<a name="l00095"></a>00095 <a class="code" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769" title="Set the scale of the object (take 2 values).">SetScale</a>(Width / LocalWidth, Height / LocalHeight);
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098
-<a name="l00103"></a><a class="code" href="classsf_1_1Sprite.htm#7cc9df731a61f91ecd16b4a84de499aa">00103</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32" title="Resize the sprite (by changing its scale factors) (take 2 values).">Sprite::Resize</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Size)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 <a class="code" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32" title="Resize the sprite (by changing its scale factors) (take 2 values).">Resize</a>(Size.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Size.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00112"></a><a class="code" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b">00112</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b" title="Flip the sprite horizontally.">Sprite::FlipX</a>(<span class="keywordtype">bool</span> Flipped)
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 myIsFlippedX = Flipped;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117
-<a name="l00121"></a><a class="code" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97">00121</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97" title="Flip the sprite vertically.">Sprite::FlipY</a>(<span class="keywordtype">bool</span> Flipped)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 myIsFlippedY = Flipped;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126
-<a name="l00130"></a><a class="code" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca">00130</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>* <a class="code" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca" title="Get the source image of the sprite.">Sprite::GetImage</a>()<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword"></span>{
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> myImage;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00139"></a><a class="code" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941">00139</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; <a class="code" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941" title="Get the sub-rectangle of the sprite inside the source image.">Sprite::GetSubRect</a>()<span class="keyword"> const</span>
-<a name="l00140"></a>00140 <span class="keyword"></span>{
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> mySubRect;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a><a class="code" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e">00148</a> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> <a class="code" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e" title="Get the sprite size.">Sprite::GetSize</a>()<span class="keyword"> const</span>
-<a name="l00149"></a>00149 <span class="keyword"></span>{
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(mySubRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>() * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, mySubRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>() * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153
-<a name="l00158"></a><a class="code" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c">00158</a> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> <a class="code" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c" title="Get the color of a given pixel in the sprite (point is in local coordinates).">Sprite::GetPixel</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y)<span class="keyword"> const</span>
-<a name="l00159"></a>00159 <span class="keyword"></span>{
-<a name="l00160"></a>00160 <span class="keywordflow">if</span> (myImage)
-<a name="l00161"></a>00161 {
-<a name="l00162"></a>00162 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ImageX = mySubRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> + X;
-<a name="l00163"></a>00163 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ImageY = mySubRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> + Y;
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (myIsFlippedX) ImageX = mySubRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>() - ImageX - 1;
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (myIsFlippedY) ImageY = mySubRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>() - ImageY - 1;
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="keywordflow">return</span> myImage-&gt;GetPixel(ImageX, ImageY) * <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 <span class="keywordflow">else</span>
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8" title="Get the color of the object.">GetColor</a>();
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00180"></a><a class="code" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b">00180</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b" title="/see Drawable::Render">Sprite::Render</a>(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp;)<span class="keyword"> const</span>
-<a name="l00181"></a>00181 <span class="keyword"></span>{
-<a name="l00182"></a>00182 <span class="comment">// Get the sprite size</span>
-<a name="l00183"></a>00183 <span class="keywordtype">float</span> Width = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mySubRect.<a class="code" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087" title="Get the width of the rectangle.">GetWidth</a>());
-<a name="l00184"></a>00184 <span class="keywordtype">float</span> Height = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mySubRect.<a class="code" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75" title="Get the height of the rectangle.">GetHeight</a>());
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="comment">// Check if the image is valid</span>
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (myImage &amp;&amp; (myImage-&gt;GetWidth() &gt; 0) &amp;&amp; (myImage-&gt;GetHeight() &gt; 0))
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="comment">// Use the "offset trick" to get pixel-perfect rendering</span>
-<a name="l00190"></a>00190 <span class="comment">// see http://www.opengl.org/resources/faq/technical/transformations.htm#tran0030</span>
-<a name="l00191"></a>00191 GLCheck(glTranslatef(0.375f, 0.375f, 0.f));
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="comment">// Bind the texture</span>
-<a name="l00194"></a>00194 myImage-&gt;Bind();
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="comment">// Calculate the texture coordinates</span>
-<a name="l00197"></a>00197 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> TexCoords = myImage-&gt;GetTexCoords(mySubRect);
-<a name="l00198"></a>00198 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a>(myIsFlippedX ? TexCoords.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> : TexCoords.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>,
-<a name="l00199"></a>00199 myIsFlippedY ? TexCoords.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> : TexCoords.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>,
-<a name="l00200"></a>00200 myIsFlippedX ? TexCoords.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> : TexCoords.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>,
-<a name="l00201"></a>00201 myIsFlippedY ? TexCoords.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> : TexCoords.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="comment">// Draw the sprite's triangles</span>
-<a name="l00204"></a>00204 glBegin(GL_QUADS);
-<a name="l00205"></a>00205 glTexCoord2f(Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(0, 0);
-<a name="l00206"></a>00206 glTexCoord2f(Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(0, Height);
-<a name="l00207"></a>00207 glTexCoord2f(Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(Width, Height);
-<a name="l00208"></a>00208 glTexCoord2f(Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(Width, 0) ;
-<a name="l00209"></a>00209 glEnd();
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211 <span class="keywordflow">else</span>
-<a name="l00212"></a>00212 {
-<a name="l00213"></a>00213 <span class="comment">// Disable texturing</span>
-<a name="l00214"></a>00214 GLCheck(glDisable(GL_TEXTURE_2D));
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="comment">// Draw the sprite's triangles</span>
-<a name="l00217"></a>00217 glBegin(GL_QUADS);
-<a name="l00218"></a>00218 glVertex2f(0, 0);
-<a name="l00219"></a>00219 glVertex2f(0, Height);
-<a name="l00220"></a>00220 glVertex2f(Width, Height);
-<a name="l00221"></a>00221 glVertex2f(Width, 0);
-<a name="l00222"></a>00222 glEnd();
-<a name="l00223"></a>00223 }
-<a name="l00224"></a>00224 }
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Sprite_8hpp-source.htm b/doc/html/Sprite_8hpp-source.htm
deleted file mode 100755
index 862c3e7..0000000
--- a/doc/html/Sprite_8hpp-source.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Sprite.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SPRITE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SPRITE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">class </span>Image;
-<a name="l00039"></a>00039
-<a name="l00044"></a><a class="code" href="classsf_1_1Sprite.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00052"></a>00052 <a class="code" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a>();
-<a name="l00053"></a>00053
-<a name="l00064"></a>00064 <span class="keyword">explicit</span> <a class="code" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Img, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Position = <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Scale = <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>(1, 1), <span class="keywordtype">float</span> Rotation = 0.f, <span class="keyword">const</span> <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>&amp; Col = <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a>(255, 255, 255, 255));
-<a name="l00065"></a>00065
-<a name="l00072"></a>00072 <span class="keywordtype">void</span> SetImage(<span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>&amp; Img);
-<a name="l00073"></a>00073
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> SetSubRect(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; SubRect);
-<a name="l00082"></a>00082
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> Resize(<span class="keywordtype">float</span> Width, <span class="keywordtype">float</span> Height);
-<a name="l00092"></a>00092
-<a name="l00100"></a>00100 <span class="keywordtype">void</span> Resize(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>&amp; Size);
-<a name="l00101"></a>00101
-<a name="l00108"></a>00108 <span class="keywordtype">void</span> FlipX(<span class="keywordtype">bool</span> Flipped);
-<a name="l00109"></a>00109
-<a name="l00116"></a>00116 <span class="keywordtype">void</span> FlipY(<span class="keywordtype">bool</span> Flipped);
-<a name="l00117"></a>00117
-<a name="l00124"></a>00124 <span class="keyword">const</span> <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a>* GetImage() <span class="keyword">const</span>;
-<a name="l00125"></a>00125
-<a name="l00132"></a>00132 <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; GetSubRect() <span class="keyword">const</span>;
-<a name="l00133"></a>00133
-<a name="l00140"></a>00140 <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a> GetSize() <span class="keyword">const</span>;
-<a name="l00141"></a>00141
-<a name="l00152"></a>00152 <a class="code" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> GetPixel(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> X, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Y) <span class="keyword">const</span>;
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keyword">protected</span> :
-<a name="l00155"></a>00155
-<a name="l00160"></a>00160 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Render(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span>;
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keyword">private</span> :
-<a name="l00163"></a>00163
-<a name="l00165"></a>00165 <span class="comment">// Member data</span>
-<a name="l00167"></a>00167 <span class="comment"></span> <a class="code" href="classsf_1_1ResourcePtr.htm">ResourcePtr&lt;Image&gt;</a> myImage;
-<a name="l00168"></a>00168 <a class="code" href="classsf_1_1Rect.htm">IntRect</a> mySubRect;
-<a name="l00169"></a>00169 <span class="keywordtype">bool</span> myIsFlippedX;
-<a name="l00170"></a>00170 <span class="keywordtype">bool</span> myIsFlippedY;
-<a name="l00171"></a>00171 };
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 } <span class="comment">// namespace sf</span>
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="preprocessor">#endif // SFML_SPRITE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/String_8cpp-source.htm b/doc/html/String_8cpp-source.htm
deleted file mode 100755
index 4cc6af9..0000000
--- a/doc/html/String_8cpp-source.htm
+++ /dev/null
@@ -1,400 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>String.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/String.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Graphics/Image.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Graphics/GraphicsContext.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;locale&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00039"></a><a class="code" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692">00039</a> <a class="code" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692" title="Default constructor.">String::String</a>() :
-<a name="l00040"></a>00040 myFont (&amp;<a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>::GetDefaultFont()),
-<a name="l00041"></a>00041 mySize (30.f),
-<a name="l00042"></a>00042 myStyle (Regular),
-<a name="l00043"></a>00043 myNeedRectUpdate(true)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048
-<a name="l00052"></a><a class="code" href="classsf_1_1String.htm#30f985ba0047a5fbe7f9aca68083212c">00052</a> <a class="code" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692" title="Default constructor.">String::String</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Text, <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; CharFont, <span class="keywordtype">float</span> Size) :
-<a name="l00053"></a>00053 myFont (&amp;CharFont),
-<a name="l00054"></a>00054 mySize (Size),
-<a name="l00055"></a>00055 myStyle (Regular),
-<a name="l00056"></a>00056 myNeedRectUpdate(true)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <a class="code" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8" title="Set the text (from any kind of string).">SetText</a>(Text);
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00065"></a><a class="code" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8">00065</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8" title="Set the text (from any kind of string).">String::SetText</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Text)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 myNeedRectUpdate = <span class="keyword">true</span>;
-<a name="l00068"></a>00068 myText = Text;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071
-<a name="l00075"></a><a class="code" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003">00075</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003" title="Set the font of the string.">String::SetFont</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; CharFont)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">if</span> (myFont != &amp;CharFont)
-<a name="l00078"></a>00078 {
-<a name="l00079"></a>00079 myNeedRectUpdate = <span class="keyword">true</span>;
-<a name="l00080"></a>00080 myFont = &amp;CharFont;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00088"></a><a class="code" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb">00088</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb" title="Set the size of the string The default size is 30.">String::SetSize</a>(<span class="keywordtype">float</span> Size)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (mySize != Size)
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 myNeedRectUpdate = <span class="keyword">true</span>;
-<a name="l00093"></a>00093 mySize = Size;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00102"></a><a class="code" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c">00102</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c" title="Set the style of the text The default style is Regular.">String::SetStyle</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> TextStyle)
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (myStyle != TextStyle)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 myNeedRectUpdate = <span class="keyword">true</span>;
-<a name="l00107"></a>00107 myStyle = TextStyle;
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111
-<a name="l00115"></a><a class="code" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620">00115</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; <a class="code" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620" title="Get the text (the returned text can be converted implicitely to any kind of string)...">String::GetText</a>()<span class="keyword"> const</span>
-<a name="l00116"></a>00116 <span class="keyword"></span>{
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> myText;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120
-<a name="l00124"></a><a class="code" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11">00124</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; <a class="code" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11" title="Get the font used by the string.">String::GetFont</a>()<span class="keyword"> const</span>
-<a name="l00125"></a>00125 <span class="keyword"></span>{
-<a name="l00126"></a>00126 <span class="keywordflow">return</span> *myFont;
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129
-<a name="l00133"></a><a class="code" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff">00133</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff" title="Get the size of the characters.">String::GetSize</a>()<span class="keyword"> const</span>
-<a name="l00134"></a>00134 <span class="keyword"></span>{
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> mySize;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138
-<a name="l00142"></a><a class="code" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df">00142</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df" title="Get the style of the text.">String::GetStyle</a>()<span class="keyword"> const</span>
-<a name="l00143"></a>00143 <span class="keyword"></span>{
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> myStyle;
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147
-<a name="l00153"></a><a class="code" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210">00153</a> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> <a class="code" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210" title="Return the visual position of the Index-th character of the string, in coordinates...">String::GetCharacterPos</a>(std::size_t Index)<span class="keyword"> const</span>
-<a name="l00154"></a>00154 <span class="keyword"></span>{
-<a name="l00155"></a>00155 <span class="comment">// First get the UTF32 representation of the text</span>
-<a name="l00156"></a>00156 <span class="keyword">const</span> Unicode::UTF32String&amp; Text = myText;
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="comment">// Adjust the index if it's out of range</span>
-<a name="l00159"></a>00159 <span class="keywordflow">if</span> (Index &gt; Text.length())
-<a name="l00160"></a>00160 Index = Text.length();
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="comment">// The final size is based on the text size</span>
-<a name="l00163"></a>00163 <span class="keywordtype">float</span> FactorX = mySize / myFont-&gt;GetCharacterSize();
-<a name="l00164"></a>00164 <span class="keywordtype">float</span> AdvanceY = mySize;
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="comment">// Compute the position</span>
-<a name="l00167"></a>00167 <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> Position;
-<a name="l00168"></a>00168 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Index; ++i)
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="comment">// Get the current character and its corresponding glyph</span>
-<a name="l00171"></a>00171 Uint32 CurChar = Text[i];
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a>&amp; CurGlyph = myFont-&gt;GetGlyph(CurChar);
-<a name="l00173"></a>00173 <span class="keywordtype">float</span> AdvanceX = CurGlyph.<a class="code" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6" title="Offset to move horizontically to the next character.">Advance</a> * FactorX;
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="keywordflow">switch</span> (CurChar)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="comment">// Handle special characters</span>
-<a name="l00178"></a>00178 <span class="keywordflow">case</span> L<span class="charliteral">' '</span> : Position.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> += AdvanceX; <span class="keywordflow">break</span>;
-<a name="l00179"></a>00179 <span class="keywordflow">case</span> L<span class="charliteral">'\t'</span> : Position.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> += AdvanceX * 4; <span class="keywordflow">break</span>;
-<a name="l00180"></a>00180 <span class="keywordflow">case</span> L<span class="charliteral">'\v'</span> : Position.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> += AdvanceY * 4; <span class="keywordflow">break</span>;
-<a name="l00181"></a>00181 <span class="keywordflow">case</span> L<span class="charliteral">'\n'</span> : Position.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> += AdvanceY; Position.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = 0; <span class="keywordflow">break</span>;
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">// Regular character : just add its advance value</span>
-<a name="l00184"></a>00184 <span class="keywordflow">default</span> : Position.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> += AdvanceX; <span class="keywordflow">break</span>;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="keywordflow">return</span> Position;
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00195"></a><a class="code" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d">00195</a> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> <a class="code" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d" title="Get the string rectangle on screen.">String::GetRect</a>()<span class="keyword"> const</span>
-<a name="l00196"></a>00196 <span class="keyword"></span>{
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> (myNeedRectUpdate)
-<a name="l00198"></a>00198 <span class="keyword">const_cast&lt;</span><a class="code" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;RecomputeRect();
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a>;
-<a name="l00201"></a>00201 Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> = (myBaseRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> - <a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0" title="Get the center of the object.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>) * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> + <a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b" title="Get the position of the object.">GetPosition</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00202"></a>00202 Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> = (myBaseRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a> - <a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0" title="Get the center of the object.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>) * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> + <a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b" title="Get the position of the object.">GetPosition</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00203"></a>00203 Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> = (myBaseRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - <a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0" title="Get the center of the object.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>) * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> + <a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b" title="Get the position of the object.">GetPosition</a>().<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00204"></a>00204 Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> = (myBaseRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> - <a class="code" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0" title="Get the center of the object.">GetCenter</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>) * <a class="code" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97" title="Get the current scale of the object.">GetScale</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> + <a class="code" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b" title="Get the position of the object.">GetPosition</a>().<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="keywordflow">return</span> Rect;
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209
-<a name="l00213"></a><a class="code" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908">00213</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908" title="/see Drawable::Render">String::Render</a>(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp;)<span class="keyword"> const</span>
-<a name="l00214"></a>00214 <span class="keyword"></span>{
-<a name="l00215"></a>00215 <span class="comment">// First get the internal UTF-32 string of the text</span>
-<a name="l00216"></a>00216 <span class="keyword">const</span> Unicode::UTF32String&amp; Text = myText;
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// No text, no rendering :)</span>
-<a name="l00219"></a>00219 <span class="keywordflow">if</span> (Text.empty())
-<a name="l00220"></a>00220 <span class="keywordflow">return</span>;
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <span class="comment">// Set the scaling factor to get the actual size</span>
-<a name="l00223"></a>00223 <span class="keywordtype">float</span> CharSize = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(myFont-&gt;GetCharacterSize());
-<a name="l00224"></a>00224 <span class="keywordtype">float</span> Factor = mySize / CharSize;
-<a name="l00225"></a>00225 GLCheck(glScalef(Factor, Factor, 1.f));
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 <span class="comment">// Bind the font texture</span>
-<a name="l00228"></a>00228 myFont-&gt;GetImage().Bind();
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="comment">// Initialize the rendering coordinates</span>
-<a name="l00231"></a>00231 <span class="keywordtype">float</span> X = 0.f;
-<a name="l00232"></a>00232 <span class="keywordtype">float</span> Y = CharSize;
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="comment">// Holds the lines to draw later, for underlined style</span>
-<a name="l00235"></a>00235 std::vector&lt;float&gt; UnderlineCoords;
-<a name="l00236"></a>00236 UnderlineCoords.reserve(16);
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="comment">// Compute the shearing to apply if we're using the italic style</span>
-<a name="l00239"></a>00239 <span class="keywordtype">float</span> ItalicCoeff = (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234" title="Characters are in italic.">Italic</a>) ? 0.208f : 0.f; <span class="comment">// 12 degrees</span>
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 <span class="comment">// Draw one quad for each character</span>
-<a name="l00242"></a>00242 glBegin(GL_QUADS);
-<a name="l00243"></a>00243 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Text.size(); ++i)
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 <span class="comment">// Get the current character and its corresponding glyph</span>
-<a name="l00246"></a>00246 Uint32 CurChar = Text[i];
-<a name="l00247"></a>00247 <span class="keyword">const</span> <a class="code" href="classsf_1_1Glyph.htm" title="Structure describing a glyph (a visual character).">Glyph</a>&amp; CurGlyph = myFont-&gt;GetGlyph(CurChar);
-<a name="l00248"></a>00248 <span class="keywordtype">int</span> Advance = CurGlyph.<a class="code" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6" title="Offset to move horizontically to the next character.">Advance</a>;
-<a name="l00249"></a>00249 <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">IntRect</a>&amp; <a class="code" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a> = CurGlyph.<a class="code" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76" title="Bounding rectangle of the glyph, in relative coordinates.">Rectangle</a>;
-<a name="l00250"></a>00250 <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>&amp; Coord = CurGlyph.<a class="code" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370" title="Texture coordinates of the glyph inside the bitmap font.">TexCoords</a>;
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="comment">// If we're using the underlined style and there's a new line,</span>
-<a name="l00253"></a>00253 <span class="comment">// we keep track of the previous line to draw it later</span>
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> ((CurChar == L<span class="charliteral">'\n'</span>) &amp;&amp; (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e" title="Characters are underlined.">Underlined</a>))
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 UnderlineCoords.push_back(X);
-<a name="l00257"></a>00257 UnderlineCoords.push_back(Y + 2);
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="comment">// Handle special characters</span>
-<a name="l00261"></a>00261 <span class="keywordflow">switch</span> (CurChar)
-<a name="l00262"></a>00262 {
-<a name="l00263"></a>00263 <span class="keywordflow">case</span> L<span class="charliteral">' '</span> : X += Advance; <span class="keywordflow">continue</span>;
-<a name="l00264"></a>00264 <span class="keywordflow">case</span> L<span class="charliteral">'\n'</span> : Y += CharSize; X = 0; <span class="keywordflow">continue</span>;
-<a name="l00265"></a>00265 <span class="keywordflow">case</span> L<span class="charliteral">'\t'</span> : X += Advance * 4; <span class="keywordflow">continue</span>;
-<a name="l00266"></a>00266 <span class="keywordflow">case</span> L<span class="charliteral">'\v'</span> : Y += CharSize * 4; <span class="keywordflow">continue</span>;
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="comment">// Draw a textured quad for the current character</span>
-<a name="l00270"></a>00270 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(X + Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>, Y + Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00271"></a>00271 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(X + Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>, Y + Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00272"></a>00272 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(X + Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>, Y + Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00273"></a>00273 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(X + Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>, Y + Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="comment">// If we're using the bold style, we must render the character 4 more times,</span>
-<a name="l00276"></a>00276 <span class="comment">// slightly offseted, to simulate a higher weight</span>
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0" title="Characters are bold.">Bold</a>)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> OffsetsX[] = {-0.5f, 0.5f, 0.f, 0.f};
-<a name="l00280"></a>00280 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> OffsetsY[] = {0.f, 0.f, -0.5f, 0.5f};
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 4; ++j)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(X + OffsetsX[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>, Y + OffsetsY[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00285"></a>00285 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(X + OffsetsX[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>, Y + OffsetsY[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00286"></a>00286 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>); glVertex2f(X + OffsetsX[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>, Y + OffsetsY[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a>);
-<a name="l00287"></a>00287 glTexCoord2f(Coord.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a>, Coord.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>); glVertex2f(X + OffsetsX[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - ItalicCoeff * Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>, Y + OffsetsY[j] + Rect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>);
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <span class="comment">// Advance to the next character</span>
-<a name="l00292"></a>00292 X += Advance;
-<a name="l00293"></a>00293 }
-<a name="l00294"></a>00294 glEnd();
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296 <span class="comment">// Draw the underlines if needed</span>
-<a name="l00297"></a>00297 <span class="keywordflow">if</span> (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e" title="Characters are underlined.">Underlined</a>)
-<a name="l00298"></a>00298 {
-<a name="l00299"></a>00299 <span class="comment">// Compute the line thickness</span>
-<a name="l00300"></a>00300 <span class="keywordtype">float</span> Thickness = (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0" title="Characters are bold.">Bold</a>) ? 3.f : 2.f;
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="comment">// Add the last line (which was not finished with a \n)</span>
-<a name="l00303"></a>00303 UnderlineCoords.push_back(X);
-<a name="l00304"></a>00304 UnderlineCoords.push_back(Y + 2);
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="comment">// Draw the underlines as quads</span>
-<a name="l00307"></a>00307 GLCheck(glDisable(GL_TEXTURE_2D));
-<a name="l00308"></a>00308 glBegin(GL_QUADS);
-<a name="l00309"></a>00309 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; UnderlineCoords.size(); i += 2)
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 glVertex2f(0, UnderlineCoords[i + 1]);
-<a name="l00312"></a>00312 glVertex2f(0, UnderlineCoords[i + 1] + Thickness);
-<a name="l00313"></a>00313 glVertex2f(UnderlineCoords[i], UnderlineCoords[i + 1] + Thickness);
-<a name="l00314"></a>00314 glVertex2f(UnderlineCoords[i], UnderlineCoords[i + 1]);
-<a name="l00315"></a>00315 }
-<a name="l00316"></a>00316 glEnd();
-<a name="l00317"></a>00317 }
-<a name="l00318"></a>00318 }
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320
-<a name="l00324"></a>00324 <span class="keywordtype">void</span> String::RecomputeRect()
-<a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="comment">// First get the internal UTF-32 string of the text</span>
-<a name="l00327"></a>00327 <span class="keyword">const</span> Unicode::UTF32String&amp; Text = myText;
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 <span class="comment">// Reset the "need update" state</span>
-<a name="l00330"></a>00330 myNeedRectUpdate = <span class="keyword">false</span>;
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 <span class="comment">// No text, empty box :)</span>
-<a name="l00333"></a>00333 <span class="keywordflow">if</span> (Text.empty())
-<a name="l00334"></a>00334 {
-<a name="l00335"></a>00335 myBaseRect = <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>(0, 0, 0, 0);
-<a name="l00336"></a>00336 <span class="keywordflow">return</span>;
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="comment">// Initial values</span>
-<a name="l00340"></a>00340 <span class="keywordtype">float</span> CurWidth = 0;
-<a name="l00341"></a>00341 <span class="keywordtype">float</span> CurHeight = 0;
-<a name="l00342"></a>00342 <span class="keywordtype">float</span> Width = 0;
-<a name="l00343"></a>00343 <span class="keywordtype">float</span> Height = 0;
-<a name="l00344"></a>00344 <span class="keywordtype">float</span> Factor = mySize / myFont-&gt;GetCharacterSize();
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 <span class="comment">// Go through each character</span>
-<a name="l00347"></a>00347 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; Text.size(); ++i)
-<a name="l00348"></a>00348 {
-<a name="l00349"></a>00349 <span class="comment">// Get the current character and its corresponding glyph</span>
-<a name="l00350"></a>00350 Uint32 CurChar = Text[i];
-<a name="l00351"></a>00351 <span class="keyword">const</span> Glyph&amp; CurGlyph = myFont-&gt;GetGlyph(CurChar);
-<a name="l00352"></a>00352 <span class="keywordtype">float</span> Advance = CurGlyph.Advance * Factor;
-<a name="l00353"></a>00353 <span class="keyword">const</span> IntRect&amp; Rect = CurGlyph.Rectangle;
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <span class="comment">// Handle special characters</span>
-<a name="l00356"></a>00356 <span class="keywordflow">switch</span> (CurChar)
-<a name="l00357"></a>00357 {
-<a name="l00358"></a>00358 <span class="keywordflow">case</span> L<span class="charliteral">' '</span> : CurWidth += Advance; <span class="keywordflow">continue</span>;
-<a name="l00359"></a>00359 <span class="keywordflow">case</span> L<span class="charliteral">'\t'</span> : CurWidth += Advance * 4; <span class="keywordflow">continue</span>;
-<a name="l00360"></a>00360 <span class="keywordflow">case</span> L<span class="charliteral">'\v'</span> : Height += mySize * 4; CurHeight = 0; <span class="keywordflow">continue</span>;
-<a name="l00361"></a>00361
-<a name="l00362"></a>00362 <span class="keywordflow">case</span> L<span class="charliteral">'\n'</span> :
-<a name="l00363"></a>00363 Height += mySize;
-<a name="l00364"></a>00364 CurHeight = 0;
-<a name="l00365"></a>00365 <span class="keywordflow">if</span> (CurWidth &gt; Width)
-<a name="l00366"></a>00366 Width = CurWidth;
-<a name="l00367"></a>00367 CurWidth = 0;
-<a name="l00368"></a>00368 <span class="keywordflow">continue</span>;
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370
-<a name="l00371"></a>00371 <span class="comment">// Advance to the next character</span>
-<a name="l00372"></a>00372 CurWidth += Advance;
-<a name="l00373"></a>00373
-<a name="l00374"></a>00374 <span class="comment">// Update the maximum height</span>
-<a name="l00375"></a>00375 <span class="keywordtype">float</span> CharHeight = (myFont-&gt;GetCharacterSize() + Rect.Bottom) * Factor;
-<a name="l00376"></a>00376 <span class="keywordflow">if</span> (CharHeight &gt; CurHeight)
-<a name="l00377"></a>00377 CurHeight = CharHeight;
-<a name="l00378"></a>00378 }
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="comment">// Update the last line</span>
-<a name="l00381"></a>00381 <span class="keywordflow">if</span> (CurWidth &gt; Width)
-<a name="l00382"></a>00382 Width = CurWidth;
-<a name="l00383"></a>00383 Height += CurHeight;
-<a name="l00384"></a>00384
-<a name="l00385"></a>00385 <span class="comment">// Add a slight width / height if we're using the bold style</span>
-<a name="l00386"></a>00386 <span class="keywordflow">if</span> (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0" title="Characters are bold.">Bold</a>)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 Width += 1 * Factor;
-<a name="l00389"></a>00389 Height += 1 * Factor;
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 <span class="comment">// Add a slight width if we're using the italic style</span>
-<a name="l00393"></a>00393 <span class="keywordflow">if</span> (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234" title="Characters are in italic.">Italic</a>)
-<a name="l00394"></a>00394 {
-<a name="l00395"></a>00395 Width += 0.208f * mySize;
-<a name="l00396"></a>00396 }
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 <span class="comment">// Add a slight height if we're using the underlined style</span>
-<a name="l00399"></a>00399 <span class="keywordflow">if</span> (myStyle &amp; <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e" title="Characters are underlined.">Underlined</a>)
-<a name="l00400"></a>00400 {
-<a name="l00401"></a>00401 <span class="keywordflow">if</span> (CurHeight &lt; mySize + 4 * Factor)
-<a name="l00402"></a>00402 Height += 4 * Factor;
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 <span class="comment">// Finally update the rectangle</span>
-<a name="l00406"></a>00406 myBaseRect.Left = 0;
-<a name="l00407"></a>00407 myBaseRect.Top = 0;
-<a name="l00408"></a>00408 myBaseRect.Right = Width;
-<a name="l00409"></a>00409 myBaseRect.Bottom = Height;
-<a name="l00410"></a>00410 }
-<a name="l00411"></a>00411
-<a name="l00412"></a>00412 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/String_8hpp-source.htm b/doc/html/String_8hpp-source.htm
deleted file mode 100755
index 7508f1c..0000000
--- a/doc/html/String_8hpp-source.htm
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>String.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_STRING_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_STRING_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Resource.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/Unicode.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Drawable.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Graphics/Font.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>sf
-<a name="l00040"></a>00040 {
-<a name="l00044"></a><a class="code" href="classsf_1_1String.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1Drawable.htm" title="Abstract base class for every object that can be drawn into a render window.">Drawable</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00051"></a><a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">00051</a> <span class="keyword">enum</span> <a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8" title="Enumerate the string drawing styles.">Style</a>
-<a name="l00052"></a>00052 {
-<a name="l00053"></a><a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204">00053</a> Regular = 0,
-<a name="l00054"></a><a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0">00054</a> Bold = 1 &lt;&lt; 0,
-<a name="l00055"></a><a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234">00055</a> Italic = 1 &lt;&lt; 1,
-<a name="l00056"></a><a class="code" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e">00056</a> Underlined = 1 &lt;&lt; 2
-<a name="l00057"></a>00057 };
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 <a class="code" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a>();
-<a name="l00064"></a>00064
-<a name="l00073"></a>00073 <span class="keyword">explicit</span> <a class="code" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Text, <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; CharFont = <a class="code" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36" title="Get the SFML default built-in font (Arial).">Font::GetDefaultFont</a>(), <span class="keywordtype">float</span> Size = 30.f);
-<a name="l00074"></a>00074
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> SetText(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; Text);
-<a name="l00082"></a>00082
-<a name="l00089"></a>00089 <span class="keywordtype">void</span> SetFont(<span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; CharFont);
-<a name="l00090"></a>00090
-<a name="l00098"></a>00098 <span class="keywordtype">void</span> SetSize(<span class="keywordtype">float</span> Size);
-<a name="l00099"></a>00099
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> SetStyle(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> TextStyle);
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 <span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a>&amp; GetText() <span class="keyword">const</span>;
-<a name="l00116"></a>00116
-<a name="l00123"></a>00123 <span class="keyword">const</span> <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a>&amp; GetFont() <span class="keyword">const</span>;
-<a name="l00124"></a>00124
-<a name="l00131"></a>00131 <span class="keywordtype">float</span> GetSize() <span class="keyword">const</span>;
-<a name="l00132"></a>00132
-<a name="l00139"></a>00139 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> GetStyle() <span class="keyword">const</span>;
-<a name="l00140"></a>00140
-<a name="l00151"></a>00151 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">sf::Vector2f</a> GetCharacterPos(std::size_t Index) <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00159"></a>00159 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> GetRect() <span class="keyword">const</span>;
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keyword">protected</span> :
-<a name="l00162"></a>00162
-<a name="l00167"></a>00167 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Render(<a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>&amp; Target) <span class="keyword">const</span>;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keyword">private</span> :
-<a name="l00170"></a>00170
-<a name="l00175"></a>00175 <span class="keywordtype">void</span> RecomputeRect();
-<a name="l00176"></a>00176
-<a name="l00178"></a>00178 <span class="comment">// Member data</span>
-<a name="l00180"></a>00180 <span class="comment"></span> <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Unicode::Text</a> myText;
-<a name="l00181"></a>00181 <a class="code" href="classsf_1_1ResourcePtr.htm">ResourcePtr&lt;Font&gt;</a> myFont;
-<a name="l00182"></a>00182 <span class="keywordtype">float</span> mySize;
-<a name="l00183"></a>00183 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> myStyle;
-<a name="l00184"></a>00184 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> myBaseRect;
-<a name="l00185"></a>00185 <span class="keywordtype">bool</span> myNeedRectUpdate;
-<a name="l00186"></a>00186 };
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 } <span class="comment">// namespace sf</span>
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="preprocessor">#endif // SFML_STRING_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/System_8hpp-source.htm b/doc/html/System_8hpp-source.htm
deleted file mode 100755
index d41a9b8..0000000
--- a/doc/html/System_8hpp-source.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>System.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SYSTEM_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SYSTEM_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/System/Clock.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/System/Lock.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/System/Mutex.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/System/Randomizer.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/System/Sleep.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/System/Thread.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/System/Unicode.hpp&gt;</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;SFML/System/Vector3.hpp&gt;</span>
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="preprocessor">#endif // SFML_SYSTEM_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Template_01for_01new_01ports_2Joystick_8cpp-source.htm b/doc/html/Template_01for_01new_01ports_2Joystick_8cpp-source.htm
deleted file mode 100755
index fb1f1e5..0000000
--- a/doc/html/Template_01for_01new_01ports_2Joystick_8cpp-source.htm
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/xxx/Joystick.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>priv
-<a name="l00034"></a>00034 {
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> Joystick::Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="comment">// Reset the joystick state</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="comment">// Initialize the Index-th available joystick</span>
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00049"></a>00049 JoystickState Joystick::UpdateState()
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="comment">// Fill a JoystickState instance with the current joystick state</span>
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a>00058 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Joystick::GetAxesCount()<span class="keyword"> const</span>
-<a name="l00059"></a>00059 <span class="keyword"></span>{
-<a name="l00060"></a>00060 <span class="comment">// Return number of supported axes</span>
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a>00067 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Joystick::GetButtonsCount()<span class="keyword"> const</span>
-<a name="l00068"></a>00068 <span class="keyword"></span>{
-<a name="l00069"></a>00069 <span class="comment">// Return number of supported buttons</span>
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 } <span class="comment">// namespace priv</span>
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Template_01for_01new_01ports_2Joystick_8hpp-source.htm b/doc/html/Template_01for_01new_01ports_2Joystick_8hpp-source.htm
deleted file mode 100755
index de240a9..0000000
--- a/doc/html/Template_01for_01new_01ports_2Joystick_8hpp-source.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_JOYSTICKXXX_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_JOYSTICKXXX_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Joystick
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index);
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 JoystickState UpdateState();
-<a name="l00059"></a>00059
-<a name="l00066"></a>00066 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetAxesCount() <span class="keyword">const</span>;
-<a name="l00067"></a>00067
-<a name="l00074"></a>00074 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetButtonsCount() <span class="keyword">const</span>;
-<a name="l00075"></a>00075 };
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 } <span class="comment">// namespace priv</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 } <span class="comment">// namespace sf</span>
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="preprocessor">#endif // SFML_JOYSTICKXXX_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm b/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm
deleted file mode 100755
index ec0b352..0000000
--- a/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/XXX/VideoModeSupport.hpp&gt;</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>sf
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>priv
-<a name="l00034"></a>00034 {
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> VideoModeSupport::GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="comment">// Get all the supported fullscreen modes and put them in Modes array</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="comment">// Just care about width, height and bpp (ignore frequency and other attributes)</span>
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="comment">// You must remove duplicates</span>
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="comment">// Order doesn't matter (the array will be sorted later)</span>
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00053"></a>00053 VideoMode VideoModeSupport::GetDesktopVideoMode()
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="comment">// Return the current desktop video mode</span>
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 } <span class="comment">// namespace priv</span>
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm b/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm
deleted file mode 100755
index 081bbe0..0000000
--- a/doc/html/Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIDEOMODESUPPORTXXX_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIDEOMODESUPPORTXXX_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>VideoModeSupport
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keywordtype">void</span> GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes);
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> VideoMode GetDesktopVideoMode();
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 } <span class="comment">// namespace priv</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 } <span class="comment">// namespace sf</span>
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor">#endif // SFML_VIDEOMODESUPPORTXXX_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Thread_8cpp-source.htm b/doc/html/Thread_8cpp-source.htm
deleted file mode 100755
index ea7fc5d..0000000
--- a/doc/html/Thread_8cpp-source.htm
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Thread.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Win32/Thread.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;process.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00038"></a><a class="code" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2">00038</a> <a class="code" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2" title="Default constructor.">Thread::Thread</a>() :
-<a name="l00039"></a>00039 myHandle (NULL),
-<a name="l00040"></a>00040 myFunction(NULL),
-<a name="l00041"></a>00041 myUserData(NULL)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00050"></a><a class="code" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">00050</a> <a class="code" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2" title="Default constructor.">Thread::Thread</a>(Thread::FuncType Function, <span class="keywordtype">void</span>* UserData) :
-<a name="l00051"></a>00051 myHandle (NULL),
-<a name="l00052"></a>00052 myFunction(Function),
-<a name="l00053"></a>00053 myUserData(UserData)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058
-<a name="l00062"></a><a class="code" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">00062</a> <a class="code" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d" title="Virtual destructor.">Thread::~Thread</a>()
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="comment">// Wait for the thread to finish before destroying the instance</span>
-<a name="l00065"></a>00065 <a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2" title="Wait until the thread finishes.">Wait</a>();
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00072"></a><a class="code" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">00072</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642" title="Create and run the thread.">Thread::Launch</a>()
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="comment">// Wait for the thread to finish, in case it was already running</span>
-<a name="l00075"></a>00075 <a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2" title="Wait until the thread finishes.">Wait</a>();
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="comment">// Create the thread</span>
-<a name="l00078"></a>00078 myHandle = <span class="keyword">reinterpret_cast&lt;</span>HANDLE<span class="keyword">&gt;</span>(_beginthreadex(NULL, 0, &amp;Thread::ThreadFunc, <span class="keyword">this</span>, 0, NULL));
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">// Error ?</span>
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (myHandle == NULL)
-<a name="l00082"></a>00082 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create thread"</span> &lt;&lt; std::endl;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">00089</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2" title="Wait until the thread finishes.">Thread::Wait</a>()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (myHandle)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="comment">// Wait for the thread to finish, no timeout</span>
-<a name="l00094"></a>00094 WaitForSingleObject(myHandle, INFINITE);
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="comment">// Don't forget to close the thread handle (__endthreadex doesn't do it)</span>
-<a name="l00097"></a>00097 CloseHandle(myHandle);
-<a name="l00098"></a>00098 myHandle = NULL;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102
-<a name="l00109"></a><a class="code" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">00109</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b" title="Terminate the thread Terminating a thread with this function is not safe, you should...">Thread::Terminate</a>()
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (myHandle)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 TerminateThread(myHandle, 0);
-<a name="l00114"></a>00114 myHandle = NULL;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118
-<a name="l00122"></a>00122 <span class="keywordtype">void</span> Thread::Run()
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (myFunction)
-<a name="l00125"></a>00125 myFunction(myUserData);
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128
-<a name="l00132"></a>00132 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> __stdcall Thread::ThreadFunc(<span class="keywordtype">void</span>* UserData)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="comment">// The Thread instance is stored in the user data</span>
-<a name="l00135"></a>00135 <a class="code" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2" title="Default constructor.">Thread</a>* ThreadInstance = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2" title="Default constructor.">Thread</a>*<span class="keyword">&gt;</span>(UserData);
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="comment">// Forward to the instance</span>
-<a name="l00138"></a>00138 ThreadInstance-&gt;Run();
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="comment">// Optional, but it is cleaner</span>
-<a name="l00141"></a>00141 _endthreadex(0);
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keywordflow">return</span> 0;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Thread_8hpp-source.htm b/doc/html/Thread_8hpp-source.htm
deleted file mode 100755
index 185a0ff..0000000
--- a/doc/html/Thread_8hpp-source.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Thread.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_THREAD_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_THREAD_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef SFML_SYSTEM_WINDOWS</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/System/Win32/Thread.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#else</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor"> #include &lt;SFML/System/Unix/Thread.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#endif // SFML_THREAD_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Unicode_8cpp-source.htm b/doc/html/Unicode_8cpp-source.htm
deleted file mode 100755
index b08e0f1..0000000
--- a/doc/html/Unicode_8cpp-source.htm
+++ /dev/null
@@ -1,313 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Unicode.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/Unicode.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;stdexcept&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00034"></a>00034 <span class="comment">// References :</span>
-<a name="l00035"></a>00035 <span class="comment">//</span>
-<a name="l00036"></a>00036 <span class="comment">// http://www.unicode.org/</span>
-<a name="l00037"></a>00037 <span class="comment">// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.c</span>
-<a name="l00038"></a>00038 <span class="comment">// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.h</span>
-<a name="l00039"></a>00039 <span class="comment">// http://people.w3.org/rishida/scripts/uniview/conversion</span>
-<a name="l00040"></a>00040 <span class="comment">//</span>
-<a name="l00042"></a>00042 <span class="comment"></span>
-<a name="l00043"></a>00043 <span class="keyword">namespace</span>
-<a name="l00044"></a>00044 {
-<a name="l00046"></a>00046 <span class="comment">// Generic utility function to compute the number</span>
-<a name="l00047"></a>00047 <span class="comment">// of characters in a null-terminated string of any type</span>
-<a name="l00049"></a>00049 <span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00050"></a>00050 std::size_t StrLen(<span class="keyword">const</span> T* Str)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 std::size_t Length = 0;
-<a name="l00053"></a>00053 <span class="keywordflow">while</span> (*Str++) Length++;
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> Length;
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="comment">// Get the current system locale</span>
-<a name="l00060"></a>00060 <span class="comment"></span> std::locale GetCurrentLocale()
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keywordflow">try</span>
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> std::locale(<span class="stringliteral">""</span>);
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="keywordflow">catch</span> (std::runtime_error&amp;)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="comment">// It seems some implementations don't know the "" locale</span>
-<a name="l00069"></a>00069 <span class="comment">// (Mac OS, MinGW)</span>
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> std::locale();
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">namespace </span>sf
-<a name="l00077"></a>00077 {
-<a name="l00079"></a>00079 <span class="comment">// Static member data</span>
-<a name="l00081"></a>00081 <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">int</span> Unicode::UTF8TrailingBytes[256] =
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00084"></a>00084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00085"></a>00085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00086"></a>00086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00087"></a>00087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00088"></a>00088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-<a name="l00089"></a>00089 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-<a name="l00090"></a>00090 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
-<a name="l00091"></a>00091 };
-<a name="l00092"></a>00092 <span class="keyword">const</span> Uint32 Unicode::UTF8Offsets[6] =
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080
-<a name="l00095"></a>00095 };
-<a name="l00096"></a>00096 <span class="keyword">const</span> Uint8 Unicode::UTF8FirstBytes[7] =
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
-<a name="l00099"></a>00099 };
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101
-<a name="l00105"></a><a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d">00105</a> <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>()
-<a name="l00106"></a>00106 {
-<a name="l00107"></a>00107 <span class="comment">// Nothing to do</span>
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00114"></a><a class="code" href="classsf_1_1Unicode_1_1Text.htm#ce4c2b97e31442ab88ea8eabf75ff4e6">00114</a> <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str)
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (Str)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 std::size_t Length = StrLen(Str);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 myUTF32String.reserve(Length + 1);
-<a name="l00122"></a>00122 <a class="code" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1" title="Generic function to convert an ANSI characters range to an UTF-32 characters range...">Unicode::ANSIToUTF32</a>(Str, Str + Length, std::back_inserter(myUTF32String));
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* Str)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (Str)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 std::size_t Length = StrLen(Str);
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="comment">// See comments below, in Unicode::Text::Text(const std::wstring&amp;)</span>
-<a name="l00134"></a>00134 myUTF32String.reserve(Length + 1);
-<a name="l00135"></a>00135 <span class="keywordflow">switch</span> (<span class="keyword">sizeof</span>(<span class="keywordtype">wchar_t</span>))
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="keywordflow">case</span> 2 : <a class="code" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73" title="Generic function to convert an UTF-16 characters range to an UTF-32 characters range...">Unicode::UTF16ToUTF32</a>(Str, Str + Length, std::back_inserter(myUTF32String), 0); <span class="keywordflow">break</span>;
-<a name="l00138"></a>00138 <span class="keywordflow">case</span> 4 : std::copy(Str, Str + Length, std::back_inserter(myUTF32String)); <span class="keywordflow">break</span>;
-<a name="l00139"></a>00139 <span class="keywordflow">default</span> : <span class="keywordflow">break</span>;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> Uint8* Str)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordflow">if</span> (Str)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 std::size_t Length = StrLen(Str);
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 myUTF32String.reserve(Length + 1);
-<a name="l00152"></a>00152 <a class="code" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545" title="Generic function to convert an UTF-8 characters range to an UTF-32 characters range...">Unicode::UTF8ToUTF32</a>(Str, Str + Length, std::back_inserter(myUTF32String), 0);
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> Uint16* Str)
-<a name="l00157"></a>00157 {
-<a name="l00158"></a>00158 <span class="keywordflow">if</span> (Str)
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 std::size_t Length = StrLen(Str);
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (Length &gt; 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 myUTF32String.reserve(Length+ 1);
-<a name="l00164"></a>00164 <a class="code" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73" title="Generic function to convert an UTF-16 characters range to an UTF-32 characters range...">Unicode::UTF16ToUTF32</a>(Str, Str + Length, std::back_inserter(myUTF32String), 0);
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> Uint32* Str)
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keywordflow">if</span> (Str)
-<a name="l00171"></a>00171 myUTF32String = Str;
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> std::string&amp; Str)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 myUTF32String.reserve(Str.length() + 1);
-<a name="l00176"></a>00176 <a class="code" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1" title="Generic function to convert an ANSI characters range to an UTF-32 characters range...">Unicode::ANSIToUTF32</a>(Str.begin(), Str.end(), std::back_inserter(myUTF32String));
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> std::wstring&amp; Str)
-<a name="l00179"></a>00179 {
-<a name="l00180"></a>00180 <span class="comment">// This function assumes that 2-byte large wchar_t are encoded in UTF-16 (Windows), and</span>
-<a name="l00181"></a>00181 <span class="comment">// 4-byte large wchar_t are encoded using UTF-32 (Unix)</span>
-<a name="l00182"></a>00182 <span class="comment">// Is that always true ? (some platforms may use JIS Japanese encoding)</span>
-<a name="l00183"></a>00183 <span class="comment">// The macro __STDC_ISO_10646__ should help identifying UTF-32 compliant implementations</span>
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 myUTF32String.reserve(Str.length() + 1);
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="comment">// Select the proper function according to the (supposed) wchar_t system encoding</span>
-<a name="l00188"></a>00188 <span class="keywordflow">switch</span> (<span class="keyword">sizeof</span>(<span class="keywordtype">wchar_t</span>))
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="comment">// wchar_t uses UTF-16 -- need a conversion</span>
-<a name="l00191"></a>00191 <span class="keywordflow">case</span> 2 :
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 <a class="code" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73" title="Generic function to convert an UTF-16 characters range to an UTF-32 characters range...">Unicode::UTF16ToUTF32</a>(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
-<a name="l00194"></a>00194 <span class="keywordflow">break</span>;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="comment">// wchar_t uses UTF-32 -- direct copy</span>
-<a name="l00198"></a>00198 <span class="keywordflow">case</span> 4 :
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 std::copy(Str.begin(), Str.end(), std::back_inserter(myUTF32String));
-<a name="l00201"></a>00201 <span class="keywordflow">break</span>;
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="comment">// This should never happen</span>
-<a name="l00205"></a>00205 <span class="keywordflow">default</span> : <span class="keywordflow">break</span>;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9" title="Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element...">Unicode::UTF8String</a>&amp; Str)
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 myUTF32String.reserve(Str.length() + 1);
-<a name="l00211"></a>00211 <a class="code" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545" title="Generic function to convert an UTF-8 characters range to an UTF-32 characters range...">Unicode::UTF8ToUTF32</a>(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> Unicode::UTF16String&amp; Str)
-<a name="l00214"></a>00214 {
-<a name="l00215"></a>00215 myUTF32String.reserve(Str.length() + 1);
-<a name="l00216"></a>00216 <a class="code" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73" title="Generic function to convert an UTF-16 characters range to an UTF-32 characters range...">Unicode::UTF16ToUTF32</a>(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 <a class="code" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d" title="Default constructor (empty text).">Unicode::Text::Text</a>(<span class="keyword">const</span> Unicode::UTF32String&amp; Str)
-<a name="l00219"></a>00219 {
-<a name="l00220"></a>00220 myUTF32String = Str;
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223
-<a name="l00227"></a><a class="code" href="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb">00227</a> Unicode::Text::operator std::string()<span class="keyword"> const</span>
-<a name="l00228"></a>00228 <span class="keyword"></span>{
-<a name="l00229"></a>00229 std::string Output;
-<a name="l00230"></a>00230 Output.reserve(myUTF32String.length() + 1);
-<a name="l00231"></a>00231 <a class="code" href="classsf_1_1Unicode.htm#f6acf0453625fe05fc7a86f4cc9a5cf1" title="Generic function to convert an UTF-32 characters range to an ANSI characters range...">Unicode::UTF32ToANSI</a>(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0, Unicode::GetDefaultLocale());
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> Output;
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 Unicode::Text::operator std::wstring()<span class="keyword"> const</span>
-<a name="l00235"></a>00235 <span class="keyword"></span>{
-<a name="l00236"></a>00236 <span class="comment">// This function assumes that 2-byte large wchar_t are encoded in UTF-16 (Windows), and</span>
-<a name="l00237"></a>00237 <span class="comment">// 4-byte large wchar_t are encoded using UTF-32 (Unix)</span>
-<a name="l00238"></a>00238 <span class="comment">// Is that always true ? (some platforms may use JIS Japanese encoding)</span>
-<a name="l00239"></a>00239 <span class="comment">// The macro __STDC_ISO_10646__ should help identifying UTF-32 compliant implementations</span>
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 std::wstring Output;
-<a name="l00242"></a>00242 Output.reserve(myUTF32String.length() + 1);
-<a name="l00243"></a>00243
-<a name="l00244"></a>00244 <span class="comment">// Select the proper function according to the (supposed) wchar_t system encoding</span>
-<a name="l00245"></a>00245 <span class="keywordflow">switch</span> (<span class="keyword">sizeof</span>(<span class="keywordtype">wchar_t</span>))
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="comment">// wchar_t uses UTF-16 -- need a conversion</span>
-<a name="l00248"></a>00248 <span class="keywordflow">case</span> 2 :
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b" title="Generic function to convert an UTF-32 characters range to an UTF-16 characters range...">UTF32ToUTF16</a>(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
-<a name="l00251"></a>00251 <span class="keywordflow">break</span>;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="comment">// wchar_t uses UTF-32 -- direct copy</span>
-<a name="l00255"></a>00255 <span class="keywordflow">case</span> 4 :
-<a name="l00256"></a>00256 {
-<a name="l00257"></a>00257 std::copy(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output));
-<a name="l00258"></a>00258 <span class="keywordflow">break</span>;
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261 <span class="comment">// This should never happen</span>
-<a name="l00262"></a>00262 <span class="keywordflow">default</span> : <span class="keywordflow">break</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> Output;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 <a class="code" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9" title="Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element...">Unicode::Text::operator sf::Unicode::UTF8String</a>()<span class="keyword"> const</span>
-<a name="l00267"></a>00267 <span class="keyword"></span>{
-<a name="l00268"></a>00268 <a class="code" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9" title="Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element...">Unicode::UTF8String</a> Output;
-<a name="l00269"></a>00269 Output.reserve(myUTF32String.length() * 4 + 1);
-<a name="l00270"></a>00270 <a class="code" href="classsf_1_1Unicode.htm#46bba10d3a323183c29b4cb288d053c1" title="Generic function to convert an UTF-32 characters range to an UTF-8 characters range...">Unicode::UTF32ToUTF8</a>(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
-<a name="l00271"></a>00271 <span class="keywordflow">return</span> Output;
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 Unicode::Text::operator sf::Unicode::UTF16String()<span class="keyword"> const</span>
-<a name="l00274"></a>00274 <span class="keyword"></span>{
-<a name="l00275"></a>00275 Unicode::UTF16String Output;
-<a name="l00276"></a>00276 Output.reserve(myUTF32String.length() * 2 + 1);
-<a name="l00277"></a>00277 <a class="code" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b" title="Generic function to convert an UTF-32 characters range to an UTF-16 characters range...">Unicode::UTF32ToUTF16</a>(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> Output;
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 Unicode::Text::operator const sf::Unicode::UTF32String&amp;()<span class="keyword"> const</span>
-<a name="l00281"></a>00281 <span class="keyword"></span>{
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> myUTF32String;
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285
-<a name="l00289"></a>00289 <span class="keyword">const</span> std::locale&amp; Unicode::GetDefaultLocale()
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 <span class="comment">// It seems getting the default locale is a very expensive operation,</span>
-<a name="l00292"></a>00292 <span class="comment">// so we only do it once and then store the locale for reuse.</span>
-<a name="l00293"></a>00293 <span class="comment">// Warning : this code won't be aware of any change of the default locale during runtime</span>
-<a name="l00294"></a>00294
-<a name="l00295"></a>00295 <span class="keyword">static</span> std::locale DefaultLocale = GetCurrentLocale();
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="keywordflow">return</span> DefaultLocale;
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Unicode_8hpp-source.htm b/doc/html/Unicode_8hpp-source.htm
deleted file mode 100755
index 7e3b957..0000000
--- a/doc/html/Unicode_8hpp-source.htm
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Unicode.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_UNICODE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_UNICODE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iterator&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;locale&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>sf
-<a name="l00039"></a>00039 {
-<a name="l00044"></a><a class="code" href="classsf_1_1Unicode.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Unicode.htm" title="Provides utility functions to convert from and to any unicode and ASCII encoding...">Unicode</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00054"></a><a class="code" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">00054</a> <span class="keyword">typedef</span> std::basic_string&lt;Uint8&gt; UTF8String;
-<a name="l00055"></a>00055 <span class="keyword">typedef</span> std::basic_string&lt;Uint16&gt; UTF16String;
-<a name="l00056"></a>00056 <span class="keyword">typedef</span> std::basic_string&lt;Uint32&gt; UTF32String;
-<a name="l00057"></a>00057
-<a name="l00063"></a><a class="code" href="classsf_1_1Unicode_1_1Text.htm">00063</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="keyword">public</span> :
-<a name="l00066"></a>00066
-<a name="l00071"></a>00071 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>();
-<a name="l00072"></a>00072
-<a name="l00079"></a>00079 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str);
-<a name="l00080"></a>00080 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* Str);
-<a name="l00081"></a>00081 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> Uint8* Str);
-<a name="l00082"></a>00082 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> Uint16* Str);
-<a name="l00083"></a>00083 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> Uint32* Str);
-<a name="l00084"></a>00084 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> std::string&amp; Str);
-<a name="l00085"></a>00085 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> std::wstring&amp; Str);
-<a name="l00086"></a>00086 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9" title="Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element...">Unicode::UTF8String</a>&amp; Str);
-<a name="l00087"></a>00087 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> Unicode::UTF16String&amp; Str);
-<a name="l00088"></a>00088 <a class="code" href="classsf_1_1Unicode_1_1Text.htm" title="This class is an abstract definition of a unicode text, it can be converted from...">Text</a>(<span class="keyword">const</span> Unicode::UTF32String&amp; Str);
-<a name="l00089"></a>00089
-<a name="l00096"></a>00096 operator std::string () <span class="keyword">const</span>;
-<a name="l00097"></a>00097 operator std::wstring () <span class="keyword">const</span>;
-<a name="l00098"></a>00098 operator Unicode::UTF8String () <span class="keyword">const</span>;
-<a name="l00099"></a>00099 operator Unicode::UTF16String () <span class="keyword">const</span>;
-<a name="l00100"></a>00100 operator const Unicode::UTF32String&amp;() <span class="keyword">const</span>;
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keyword">private</span> :
-<a name="l00103"></a>00103
-<a name="l00105"></a>00105 <span class="comment">// Data member</span>
-<a name="l00107"></a>00107 <span class="comment"></span> sf::Unicode::UTF32String myUTF32String;
-<a name="l00108"></a>00108 };
-<a name="l00109"></a>00109
-<a name="l00123"></a>00123 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00124"></a>00124 <span class="keyword">static</span> Out UTF32ToANSI(In Begin, In End, Out Output, <span class="keywordtype">char</span> Replacement = <span class="charliteral">'?'</span>, <span class="keyword">const</span> std::locale&amp; Locale = GetDefaultLocale());
-<a name="l00125"></a>00125
-<a name="l00138"></a>00138 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00139"></a>00139 <span class="keyword">static</span> Out ANSIToUTF32(In Begin, In End, Out Output, <span class="keyword">const</span> std::locale&amp; Locale = GetDefaultLocale());
-<a name="l00140"></a>00140
-<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00154"></a>00154 <span class="keyword">static</span> Out UTF8ToUTF16(In Begin, In End, Out Output, Uint16 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00155"></a>00155
-<a name="l00168"></a>00168 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00169"></a>00169 <span class="keyword">static</span> Out UTF8ToUTF32(In Begin, In End, Out Output, Uint32 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00170"></a>00170
-<a name="l00183"></a>00183 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00184"></a>00184 <span class="keyword">static</span> Out UTF16ToUTF8(In Begin, In End, Out Output, Uint8 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00185"></a>00185
-<a name="l00198"></a>00198 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00199"></a>00199 <span class="keyword">static</span> Out UTF16ToUTF32(In Begin, In End, Out Output, Uint32 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00200"></a>00200
-<a name="l00213"></a>00213 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00214"></a>00214 <span class="keyword">static</span> Out UTF32ToUTF8(In Begin, In End, Out Output, Uint8 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00215"></a>00215
-<a name="l00228"></a>00228 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00229"></a>00229 <span class="keyword">static</span> Out UTF32ToUTF16(In Begin, In End, Out Output, Uint16 Replacement = <span class="charliteral">'?'</span>);
-<a name="l00230"></a>00230
-<a name="l00240"></a>00240 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00241"></a>00241 <span class="keyword">static</span> std::size_t GetUTF8Length(In Begin, In End);
-<a name="l00242"></a>00242
-<a name="l00252"></a>00252 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00253"></a>00253 <span class="keyword">static</span> std::size_t GetUTF16Length(In Begin, In End);
-<a name="l00254"></a>00254
-<a name="l00264"></a>00264 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00265"></a>00265 <span class="keyword">static</span> std::size_t GetUTF32Length(In Begin, In End);
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267 <span class="keyword">private</span> :
-<a name="l00268"></a>00268
-<a name="l00275"></a>00275 <span class="keyword">static</span> <span class="keyword">const</span> std::locale&amp; GetDefaultLocale();
-<a name="l00276"></a>00276
-<a name="l00278"></a>00278 <span class="comment">// Static member data</span>
-<a name="l00280"></a>00280 <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> UTF8TrailingBytes[256];
-<a name="l00281"></a>00281 <span class="keyword">static</span> <span class="keyword">const</span> Uint32 UTF8Offsets[6];
-<a name="l00282"></a>00282 <span class="keyword">static</span> <span class="keyword">const</span> Uint8 UTF8FirstBytes[7];
-<a name="l00283"></a>00283 };
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="preprocessor">#include &lt;SFML/System/Unicode.inl&gt;</span>
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 } <span class="comment">// namespace sf</span>
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <span class="preprocessor">#endif // SFML_UNICODE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Unicode_8inl-source.htm b/doc/html/Unicode_8inl-source.htm
deleted file mode 100755
index f78482c..0000000
--- a/doc/html/Unicode_8inl-source.htm
+++ /dev/null
@@ -1,468 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Unicode.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00030"></a>00030 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00031"></a><a class="code" href="classsf_1_1Unicode.htm#37628016674129d709a01a7e82cc19d4">00031</a> <span class="keyword">inline</span> Out Unicode::UTF32ToANSI(In Begin, In End, Out Output, <span class="keywordtype">char</span> Replacement, <span class="keyword">const</span> std::locale&amp; Locale)
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="preprocessor"> #ifdef __MINGW32__</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span>
-<a name="l00035"></a>00035 <span class="comment">// MinGW has a almost no support for unicode stuff</span>
-<a name="l00036"></a>00036 <span class="comment">// As a consequence, the MinGW version of this function can only use the default locale</span>
-<a name="l00037"></a>00037 <span class="comment">// and ignores the one passed as parameter</span>
-<a name="l00038"></a>00038 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keywordtype">char</span> Char = 0;
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (wctomb(&amp;Char, static_cast&lt;wchar_t&gt;(*Begin++)) &gt;= 0)
-<a name="l00042"></a>00042 *Output++ = Char;
-<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Replacement)
-<a name="l00044"></a>00044 *Output++ = Replacement;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="preprocessor"> #else</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>
-<a name="l00049"></a>00049 <span class="comment">// Get the facet of the locale which deals with character conversion</span>
-<a name="l00050"></a>00050 <span class="keyword">const</span> std::ctype&lt;wchar_t&gt;&amp; Facet = std::use_facet&lt; std::ctype&lt;wchar_t&gt; &gt;(Locale);
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="comment">// Use the facet to convert each character of the input string</span>
-<a name="l00053"></a>00053 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00054"></a>00054 *Output++ = Facet.narrow(static_cast&lt;wchar_t&gt;(*Begin++), Replacement);
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="preprocessor"> #endif</span>
-<a name="l00057"></a>00057 <span class="preprocessor"></span>
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> Output;
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00066"></a>00066 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00067"></a><a class="code" href="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a">00067</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1" title="Generic function to convert an ANSI characters range to an UTF-32 characters range...">Unicode::ANSIToUTF32</a>(In Begin, In End, Out Output, <span class="keyword">const</span> std::locale&amp; Locale)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="preprocessor"> #ifdef __MINGW32__</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>
-<a name="l00071"></a>00071 <span class="comment">// MinGW has a almost no support for unicode stuff</span>
-<a name="l00072"></a>00072 <span class="comment">// As a consequence, the MinGW version of this function can only use the default locale</span>
-<a name="l00073"></a>00073 <span class="comment">// and ignores the one passed as parameter</span>
-<a name="l00074"></a>00074 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="keywordtype">wchar_t</span> Char = 0;
-<a name="l00077"></a>00077 mbtowc(&amp;Char, &amp;*Begin, 1);
-<a name="l00078"></a>00078 Begin++;
-<a name="l00079"></a>00079 *Output++ = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(Char);
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="preprocessor"> #else</span>
-<a name="l00083"></a>00083 <span class="preprocessor"></span>
-<a name="l00084"></a>00084 <span class="comment">// Get the facet of the locale which deals with character conversion</span>
-<a name="l00085"></a>00085 <span class="keyword">const</span> std::ctype&lt;wchar_t&gt;&amp; Facet = std::use_facet&lt; std::ctype&lt;wchar_t&gt; &gt;(Locale);
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="comment">// Use the facet to convert each character of the input string</span>
-<a name="l00088"></a>00088 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00089"></a>00089 *Output++ = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(Facet.widen(*Begin++));
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <span class="preprocessor"> #endif</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> Output;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096
-<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00102"></a><a class="code" href="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e">00102</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#576b17100b065f65f3594c50a070b378" title="Generic function to convert an UTF-8 characters range to an UTF-16 characters range...">Unicode::UTF8ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement)
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 Uint32 c = 0;
-<a name="l00107"></a>00107 <span class="keywordtype">int</span> TrailingBytes = UTF8TrailingBytes[<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(*Begin)];
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (Begin + TrailingBytes &lt; End)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="comment">// First decode the UTF-8 character</span>
-<a name="l00111"></a>00111 <span class="keywordflow">switch</span> (TrailingBytes)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 <span class="keywordflow">case</span> 5 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00114"></a>00114 <span class="keywordflow">case</span> 4 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00115"></a>00115 <span class="keywordflow">case</span> 3 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00116"></a>00116 <span class="keywordflow">case</span> 2 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00117"></a>00117 <span class="keywordflow">case</span> 1 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00118"></a>00118 <span class="keywordflow">case</span> 0 : c += *Begin++;
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 c -= UTF8Offsets[TrailingBytes];
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="comment">// Then encode it in UTF-16</span>
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (c &lt; 0xFFFF)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="comment">// Character can be converted directly to 16 bits, just need to check it's in the valid range</span>
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> ((c &gt;= 0xD800) &amp;&amp; (c &lt;= 0xDFFF))
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="comment">// Invalid character (this range is reserved)</span>
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (Replacement)
-<a name="l00130"></a>00130 *Output++ = Replacement;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 <span class="keywordflow">else</span>
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="comment">// Valid character directly convertible to 16 bits</span>
-<a name="l00135"></a>00135 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>(c);
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt; 0x0010FFFF)
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="comment">// Invalid character (greater than the maximum unicode value)</span>
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (Replacement)
-<a name="l00142"></a>00142 *Output++ = Replacement;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 <span class="keywordflow">else</span>
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="comment">// Character will be converted to 2 UTF-16 elements</span>
-<a name="l00147"></a>00147 c -= 0x0010000;
-<a name="l00148"></a>00148 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>((c &gt;&gt; 10) + 0xD800);
-<a name="l00149"></a>00149 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>((c &amp; 0x3FFUL) + 0xDC00);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> Output;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00162"></a>00162 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00163"></a><a class="code" href="classsf_1_1Unicode.htm#6dc3254ad3495eeca06443cbee0298be">00163</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545" title="Generic function to convert an UTF-8 characters range to an UTF-32 characters range...">Unicode::UTF8ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement)
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 Uint32 c = 0;
-<a name="l00168"></a>00168 <span class="keywordtype">int</span> TrailingBytes = UTF8TrailingBytes[<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(*Begin)];
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (Begin + TrailingBytes &lt; End)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="comment">// First decode the UTF-8 character</span>
-<a name="l00172"></a>00172 <span class="keywordflow">switch</span> (TrailingBytes)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">case</span> 5 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00175"></a>00175 <span class="keywordflow">case</span> 4 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00176"></a>00176 <span class="keywordflow">case</span> 3 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00177"></a>00177 <span class="keywordflow">case</span> 2 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00178"></a>00178 <span class="keywordflow">case</span> 1 : c += *Begin++; c &lt;&lt;= 6;
-<a name="l00179"></a>00179 <span class="keywordflow">case</span> 0 : c += *Begin++;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 c -= UTF8Offsets[TrailingBytes];
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">// Then write it if valid</span>
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> ((c &lt; 0xD800) || (c &gt; 0xDFFF))
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="comment">// Valid UTF-32 character</span>
-<a name="l00187"></a>00187 *Output++ = c;
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 <span class="keywordflow">else</span>
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="comment">// Invalid UTF-32 character</span>
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (Replacement)
-<a name="l00193"></a>00193 *Output++ = Replacement;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> Output;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201
-<a name="l00206"></a>00206 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00207"></a><a class="code" href="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56">00207</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#ffa58d1796721da957505354d48e2e74" title="Generic function to convert an UTF-16 characters range to an UTF-8 characters range...">Unicode::UTF16ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 Uint32 c = *Begin++;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">// If it's a surrogate pair, first convert to a single UTF-32 character</span>
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> ((c &gt;= 0xD800) &amp;&amp; (c &lt;= 0xDBFF))
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="keywordflow">if</span> (Begin &lt; End)
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <span class="comment">// The second element is valid : convert the two elements to a UTF-32 character</span>
-<a name="l00219"></a>00219 Uint32 d = *Begin++;
-<a name="l00220"></a>00220 <span class="keywordflow">if</span> ((d &gt;= 0xDC00) &amp;&amp; (d &lt;= 0xDFFF))
-<a name="l00221"></a>00221 c = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(((c - 0xD800) &lt;&lt; 10) + (d - 0xDC00) + 0x0010000);
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223 <span class="keywordflow">else</span>
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="comment">// Invalid second element</span>
-<a name="l00226"></a>00226 <span class="keywordflow">if</span> (Replacement)
-<a name="l00227"></a>00227 *Output++ = Replacement;
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="comment">// Then convert to UTF-8</span>
-<a name="l00232"></a>00232 <span class="keywordflow">if</span> (c &gt; 0x0010FFFF)
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <span class="comment">// Invalid character (greater than the maximum unicode value)</span>
-<a name="l00235"></a>00235 <span class="keywordflow">if</span> (Replacement)
-<a name="l00236"></a>00236 *Output++ = Replacement;
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238 <span class="keywordflow">else</span>
-<a name="l00239"></a>00239 {
-<a name="l00240"></a>00240 <span class="comment">// Valid character</span>
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// Get number of bytes to write</span>
-<a name="l00243"></a>00243 <span class="keywordtype">int</span> BytesToWrite = 1;
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (c &lt; 0x80) BytesToWrite = 1;
-<a name="l00245"></a>00245 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt; 0x800) BytesToWrite = 2;
-<a name="l00246"></a>00246 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt; 0x10000) BytesToWrite = 3;
-<a name="l00247"></a>00247 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0x0010FFFF) BytesToWrite = 4;
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <span class="comment">// Extract bytes to write</span>
-<a name="l00250"></a>00250 Uint8 Bytes[4];
-<a name="l00251"></a>00251 <span class="keywordflow">switch</span> (BytesToWrite)
-<a name="l00252"></a>00252 {
-<a name="l00253"></a>00253 <span class="keywordflow">case</span> 4 : Bytes[3] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00254"></a>00254 <span class="keywordflow">case</span> 3 : Bytes[2] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00255"></a>00255 <span class="keywordflow">case</span> 2 : Bytes[1] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00256"></a>00256 <span class="keywordflow">case</span> 1 : Bytes[0] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span> (c | UTF8FirstBytes[BytesToWrite]);
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259 <span class="comment">// Add them to the output</span>
-<a name="l00260"></a>00260 <span class="keyword">const</span> Uint8* CurByte = Bytes;
-<a name="l00261"></a>00261 <span class="keywordflow">switch</span> (BytesToWrite)
-<a name="l00262"></a>00262 {
-<a name="l00263"></a>00263 <span class="keywordflow">case</span> 4 : *Output++ = *CurByte++;
-<a name="l00264"></a>00264 <span class="keywordflow">case</span> 3 : *Output++ = *CurByte++;
-<a name="l00265"></a>00265 <span class="keywordflow">case</span> 2 : *Output++ = *CurByte++;
-<a name="l00266"></a>00266 <span class="keywordflow">case</span> 1 : *Output++ = *CurByte++;
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">return</span> Output;
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273
-<a name="l00274"></a>00274
-<a name="l00279"></a>00279 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00280"></a><a class="code" href="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8">00280</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73" title="Generic function to convert an UTF-16 characters range to an UTF-32 characters range...">Unicode::UTF16ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement)
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 Uint16 c = *Begin++;
-<a name="l00285"></a>00285 <span class="keywordflow">if</span> ((c &gt;= 0xD800) &amp;&amp; (c &lt;= 0xDBFF))
-<a name="l00286"></a>00286 {
-<a name="l00287"></a>00287 <span class="comment">// We have a surrogate pair, ie. a character composed of two elements</span>
-<a name="l00288"></a>00288 <span class="keywordflow">if</span> (Begin &lt; End)
-<a name="l00289"></a>00289 {
-<a name="l00290"></a>00290 Uint16 d = *Begin++;
-<a name="l00291"></a>00291 <span class="keywordflow">if</span> ((d &gt;= 0xDC00) &amp;&amp; (d &lt;= 0xDFFF))
-<a name="l00292"></a>00292 {
-<a name="l00293"></a>00293 <span class="comment">// The second element is valid : convert the two elements to a UTF-32 character</span>
-<a name="l00294"></a>00294 *Output++ = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(((c - 0xD800) &lt;&lt; 10) + (d - 0xDC00) + 0x0010000);
-<a name="l00295"></a>00295 }
-<a name="l00296"></a>00296 <span class="keywordflow">else</span>
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 <span class="comment">// Invalid second element</span>
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (Replacement)
-<a name="l00300"></a>00300 *Output++ = Replacement;
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302 }
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((c &gt;= 0xDC00) &amp;&amp; (c &lt;= 0xDFFF))
-<a name="l00305"></a>00305 {
-<a name="l00306"></a>00306 <span class="comment">// Invalid character</span>
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (Replacement)
-<a name="l00308"></a>00308 *Output++ = Replacement;
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 <span class="keywordflow">else</span>
-<a name="l00311"></a>00311 {
-<a name="l00312"></a>00312 <span class="comment">// Valid character directly convertible to UTF-32</span>
-<a name="l00313"></a>00313 *Output++ = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(c);
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315 }
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317 <span class="keywordflow">return</span> Output;
-<a name="l00318"></a>00318 }
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320
-<a name="l00325"></a>00325 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00326"></a><a class="code" href="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081">00326</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#46bba10d3a323183c29b4cb288d053c1" title="Generic function to convert an UTF-32 characters range to an UTF-8 characters range...">Unicode::UTF32ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement)
-<a name="l00327"></a>00327 {
-<a name="l00328"></a>00328 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00329"></a>00329 {
-<a name="l00330"></a>00330 Uint32 c = *Begin++;
-<a name="l00331"></a>00331 <span class="keywordflow">if</span> (c &gt; 0x0010FFFF)
-<a name="l00332"></a>00332 {
-<a name="l00333"></a>00333 <span class="comment">// Invalid character (greater than the maximum unicode value)</span>
-<a name="l00334"></a>00334 <span class="keywordflow">if</span> (Replacement)
-<a name="l00335"></a>00335 *Output++ = Replacement;
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337 <span class="keywordflow">else</span>
-<a name="l00338"></a>00338 {
-<a name="l00339"></a>00339 <span class="comment">// Valid character</span>
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <span class="comment">// Get number of bytes to write</span>
-<a name="l00342"></a>00342 <span class="keywordtype">int</span> BytesToWrite = 1;
-<a name="l00343"></a>00343 <span class="keywordflow">if</span> (c &lt; 0x80) BytesToWrite = 1;
-<a name="l00344"></a>00344 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt; 0x800) BytesToWrite = 2;
-<a name="l00345"></a>00345 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt; 0x10000) BytesToWrite = 3;
-<a name="l00346"></a>00346 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0x0010FFFF) BytesToWrite = 4;
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 <span class="comment">// Extract bytes to write</span>
-<a name="l00349"></a>00349 Uint8 Bytes[4];
-<a name="l00350"></a>00350 <span class="keywordflow">switch</span> (BytesToWrite)
-<a name="l00351"></a>00351 {
-<a name="l00352"></a>00352 <span class="keywordflow">case</span> 4 : Bytes[3] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00353"></a>00353 <span class="keywordflow">case</span> 3 : Bytes[2] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00354"></a>00354 <span class="keywordflow">case</span> 2 : Bytes[1] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span>((c | 0x80) &amp; 0xBF); c &gt;&gt;= 6;
-<a name="l00355"></a>00355 <span class="keywordflow">case</span> 1 : Bytes[0] = <span class="keyword">static_cast&lt;</span>Uint8<span class="keyword">&gt;</span> (c | UTF8FirstBytes[BytesToWrite]);
-<a name="l00356"></a>00356 }
-<a name="l00357"></a>00357
-<a name="l00358"></a>00358 <span class="comment">// Add them to the output</span>
-<a name="l00359"></a>00359 <span class="keyword">const</span> Uint8* CurByte = Bytes;
-<a name="l00360"></a>00360 <span class="keywordflow">switch</span> (BytesToWrite)
-<a name="l00361"></a>00361 {
-<a name="l00362"></a>00362 <span class="keywordflow">case</span> 4 : *Output++ = *CurByte++;
-<a name="l00363"></a>00363 <span class="keywordflow">case</span> 3 : *Output++ = *CurByte++;
-<a name="l00364"></a>00364 <span class="keywordflow">case</span> 2 : *Output++ = *CurByte++;
-<a name="l00365"></a>00365 <span class="keywordflow">case</span> 1 : *Output++ = *CurByte++;
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368 }
-<a name="l00369"></a>00369
-<a name="l00370"></a>00370 <span class="keywordflow">return</span> Output;
-<a name="l00371"></a>00371 }
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373
-<a name="l00378"></a>00378 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In, <span class="keyword">typename</span> Out&gt;
-<a name="l00379"></a><a class="code" href="classsf_1_1Unicode.htm#c11fc704e8e94baf623553807fe1ddde">00379</a> <span class="keyword">inline</span> Out <a class="code" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b" title="Generic function to convert an UTF-32 characters range to an UTF-16 characters range...">Unicode::UTF32ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00382"></a>00382 {
-<a name="l00383"></a>00383 Uint32 c = *Begin++;
-<a name="l00384"></a>00384 <span class="keywordflow">if</span> (c &lt; 0xFFFF)
-<a name="l00385"></a>00385 {
-<a name="l00386"></a>00386 <span class="comment">// Character can be converted directly to 16 bits, just need to check it's in the valid range</span>
-<a name="l00387"></a>00387 <span class="keywordflow">if</span> ((c &gt;= 0xD800) &amp;&amp; (c &lt;= 0xDFFF))
-<a name="l00388"></a>00388 {
-<a name="l00389"></a>00389 <span class="comment">// Invalid character (this range is reserved)</span>
-<a name="l00390"></a>00390 <span class="keywordflow">if</span> (Replacement)
-<a name="l00391"></a>00391 *Output++ = Replacement;
-<a name="l00392"></a>00392 }
-<a name="l00393"></a>00393 <span class="keywordflow">else</span>
-<a name="l00394"></a>00394 {
-<a name="l00395"></a>00395 <span class="comment">// Valid character directly convertible to 16 bits</span>
-<a name="l00396"></a>00396 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>(c);
-<a name="l00397"></a>00397 }
-<a name="l00398"></a>00398 }
-<a name="l00399"></a>00399 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt; 0x0010FFFF)
-<a name="l00400"></a>00400 {
-<a name="l00401"></a>00401 <span class="comment">// Invalid character (greater than the maximum unicode value)</span>
-<a name="l00402"></a>00402 <span class="keywordflow">if</span> (Replacement)
-<a name="l00403"></a>00403 *Output++ = Replacement;
-<a name="l00404"></a>00404 }
-<a name="l00405"></a>00405 <span class="keywordflow">else</span>
-<a name="l00406"></a>00406 {
-<a name="l00407"></a>00407 <span class="comment">// Character will be converted to 2 UTF-16 elements</span>
-<a name="l00408"></a>00408 c -= 0x0010000;
-<a name="l00409"></a>00409 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>((c &gt;&gt; 10) + 0xD800);
-<a name="l00410"></a>00410 *Output++ = <span class="keyword">static_cast&lt;</span>Uint16<span class="keyword">&gt;</span>((c &amp; 0x3FFUL) + 0xDC00);
-<a name="l00411"></a>00411 }
-<a name="l00412"></a>00412 }
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <span class="keywordflow">return</span> Output;
-<a name="l00415"></a>00415 }
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417
-<a name="l00421"></a>00421 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00422"></a><a class="code" href="classsf_1_1Unicode.htm#e527bd860c1755db62bd30153abf06cd">00422</a> <span class="keyword">inline</span> std::size_t <a class="code" href="classsf_1_1Unicode.htm#3fc67af453a678d16c4913197ddbe5c3" title="Get the number of characters composing an UTF-8 string.">Unicode::GetUTF8Length</a>(In Begin, In End)
-<a name="l00423"></a>00423 {
-<a name="l00424"></a>00424 std::size_t Length = 0;
-<a name="l00425"></a>00425 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00426"></a>00426 {
-<a name="l00427"></a>00427 <span class="keywordtype">int</span> NbBytes = UTF8TrailingBytes[<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(*Begin)];
-<a name="l00428"></a>00428 <span class="keywordflow">if</span> (Begin + NbBytes &lt; End)
-<a name="l00429"></a>00429 ++Length;
-<a name="l00430"></a>00430
-<a name="l00431"></a>00431 Begin += NbBytes + 1;
-<a name="l00432"></a>00432 }
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 <span class="keywordflow">return</span> Length;
-<a name="l00435"></a>00435 }
-<a name="l00436"></a>00436
-<a name="l00437"></a>00437
-<a name="l00441"></a>00441 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00442"></a><a class="code" href="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995">00442</a> <span class="keyword">inline</span> std::size_t <a class="code" href="classsf_1_1Unicode.htm#42fea8bee18a53d10bf858273e4714a5" title="Get the number of characters composing an UTF-16 string.">Unicode::GetUTF16Length</a>(In Begin, In End)
-<a name="l00443"></a>00443 {
-<a name="l00444"></a>00444 std::size_t Length = 0;
-<a name="l00445"></a>00445 <span class="keywordflow">while</span> (Begin &lt; End)
-<a name="l00446"></a>00446 {
-<a name="l00447"></a>00447 <span class="keywordflow">if</span> ((*Begin &gt;= 0xD800) &amp;&amp; (*Begin &lt;= 0xDBFF))
-<a name="l00448"></a>00448 {
-<a name="l00449"></a>00449 ++Begin;
-<a name="l00450"></a>00450 <span class="keywordflow">if</span> ((Begin &lt; End) &amp;&amp; ((*Begin &gt;= 0xDC00) &amp;&amp; (*Begin &lt;= 0xDFFF)))
-<a name="l00451"></a>00451 {
-<a name="l00452"></a>00452 ++Length;
-<a name="l00453"></a>00453 }
-<a name="l00454"></a>00454 }
-<a name="l00455"></a>00455 <span class="keywordflow">else</span>
-<a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 ++Length;
-<a name="l00458"></a>00458 }
-<a name="l00459"></a>00459
-<a name="l00460"></a>00460 ++Begin;
-<a name="l00461"></a>00461 }
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463 <span class="keywordflow">return</span> Length;
-<a name="l00464"></a>00464 }
-<a name="l00465"></a>00465
-<a name="l00466"></a>00466
-<a name="l00470"></a>00470 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> In&gt;
-<a name="l00471"></a><a class="code" href="classsf_1_1Unicode.htm#65205382fffa75bbc3137b89be329845">00471</a> <span class="keyword">inline</span> std::size_t <a class="code" href="classsf_1_1Unicode.htm#f5c502326c638af92a8ef7d40b119637" title="Get the number of characters composing an UTF-32 string.">Unicode::GetUTF32Length</a>(In Begin, In End)
-<a name="l00472"></a>00472 {
-<a name="l00473"></a>00473 <span class="keywordflow">return</span> End - Begin;
-<a name="l00474"></a>00474 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Vector2_8hpp-source.htm b/doc/html/Vector2_8hpp-source.htm
deleted file mode 100755
index 5da5a98..0000000
--- a/doc/html/Vector2_8hpp-source.htm
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Vector2.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VECTOR2_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VECTOR2_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>sf
-<a name="l00030"></a>00030 {
-<a name="l00036"></a>00036 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00037"></a><a class="code" href="classsf_1_1Vector2.htm">00037</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2</a>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">public</span> :
-<a name="l00040"></a>00040
-<a name="l00045"></a>00045 <a class="code" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988" title="Default constructor.">Vector2</a>();
-<a name="l00046"></a>00046
-<a name="l00054"></a>00054 <a class="code" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988" title="Default constructor.">Vector2</a>(T X, T Y);
-<a name="l00055"></a>00055
-<a name="l00057"></a>00057 <span class="comment">// Member data</span>
-<a name="l00059"></a><a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">00059</a> <span class="comment"></span> T <a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00060"></a><a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">00060</a> T <a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
-<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00072"></a>00072 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator -(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V);
-<a name="l00073"></a>00073
-<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00084"></a>00084 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; operator +=(<a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00085"></a>00085
-<a name="l00095"></a>00095 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00096"></a>00096 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; operator -=(<a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00097"></a>00097
-<a name="l00107"></a>00107 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00108"></a>00108 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator +(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00109"></a>00109
-<a name="l00119"></a>00119 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00120"></a>00120 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator -(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00121"></a>00121
-<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00132"></a>00132 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator *(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V, T X);
-<a name="l00133"></a>00133
-<a name="l00143"></a>00143 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00144"></a>00144 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator *(T X, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V);
-<a name="l00145"></a>00145
-<a name="l00155"></a>00155 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00156"></a>00156 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; operator *=(<a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V, T X);
-<a name="l00157"></a>00157
-<a name="l00167"></a>00167 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00168"></a>00168 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a> operator /(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V, T X);
-<a name="l00169"></a>00169
-<a name="l00179"></a>00179 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00180"></a>00180 <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; operator /=(<a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V, T X);
-<a name="l00181"></a>00181
-<a name="l00191"></a>00191 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00192"></a>00192 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00193"></a>00193
-<a name="l00203"></a>00203 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00204"></a>00204 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;T&gt;</a>&amp; V2);
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="preprocessor">#include &lt;SFML/System/Vector2.inl&gt;</span>
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="comment">// Define the most common types</span>
-<a name="l00209"></a>00209 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2&lt;int&gt;</a> <a class="code" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2i</a>;
-<a name="l00210"></a>00210 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Vector2.htm">Vector2&lt;float&gt;</a> <a class="code" href="classsf_1_1Vector2.htm">Vector2f</a>;
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 } <span class="comment">// namespace sf</span>
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="preprocessor">#endif // SFML_VECTOR2_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Vector2_8inl-source.htm b/doc/html/Vector2_8inl-source.htm
deleted file mode 100755
index e664423..0000000
--- a/doc/html/Vector2_8inl-source.htm
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Vector2.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00030"></a>00030 Vector2&lt;T&gt;::Vector2() :
-<a name="l00031"></a>00031 x(0),
-<a name="l00032"></a>00032 y(0)
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00041"></a>00041 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00042"></a>00042 Vector2&lt;T&gt;::Vector2(T X, T Y) :
-<a name="l00043"></a>00043 x(X),
-<a name="l00044"></a>00044 y(Y)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00053"></a>00053 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00054"></a>00054 Vector2&lt;T&gt; operator -(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> Vector2&lt;T&gt;(-V.x, -V.y);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a>00063 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00064"></a>00064 Vector2&lt;T&gt;&amp; operator +=(Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 V1.x += V2.x;
-<a name="l00067"></a>00067 V1.y += V2.y;
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> V1;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00077"></a>00077 Vector2&lt;T&gt;&amp; operator -=(Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00078"></a>00078 {
-<a name="l00079"></a>00079 V1.x -= V2.x;
-<a name="l00080"></a>00080 V1.y -= V2.y;
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> V1;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00090"></a>00090 Vector2&lt;T&gt; operator +(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> Vector2&lt;T&gt;(V1.x + V2.x, V1.y + V2.y);
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00099"></a>00099 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00100"></a>00100 Vector2&lt;T&gt; operator -(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 <span class="keywordflow">return</span> Vector2&lt;T&gt;(V1.x - V2.x, V1.y - V2.y);
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105
-<a name="l00109"></a>00109 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00110"></a>00110 Vector2&lt;T&gt; operator *(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V, T X)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> Vector2&lt;T&gt;(V.x * X, V.y * X);
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00119"></a>00119 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00120"></a>00120 Vector2&lt;T&gt; operator *(T X, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V)
-<a name="l00121"></a>00121 {
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> Vector2&lt;T&gt;(V.x * X, V.y * X);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00129"></a>00129 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00130"></a>00130 Vector2&lt;T&gt;&amp; operator *=(Vector2&lt;T&gt;&amp; V, T X)
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 V.x *= X;
-<a name="l00133"></a>00133 V.y *= X;
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> V;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138
-<a name="l00142"></a>00142 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00143"></a>00143 Vector2&lt;T&gt; operator /(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V, T X)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> Vector2&lt;T&gt;(V.x / X, V.y / X);
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148
-<a name="l00152"></a>00152 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00153"></a>00153 Vector2&lt;T&gt;&amp; operator /=(Vector2&lt;T&gt;&amp; V, T X)
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 V.x /= X;
-<a name="l00156"></a>00156 V.y /= X;
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> V;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161
-<a name="l00165"></a>00165 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00166"></a>00166 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 <span class="keywordflow">return</span> (V1.x == V2.x) &amp;&amp; (V1.y == V2.y);
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171
-<a name="l00175"></a>00175 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00176"></a>00176 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> Vector2&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector2&lt;T&gt;&amp; V2)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> (V1.x != V2.x) || (V1.y != V2.y);
-<a name="l00179"></a>00179 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Vector3_8hpp-source.htm b/doc/html/Vector3_8hpp-source.htm
deleted file mode 100755
index 660f634..0000000
--- a/doc/html/Vector3_8hpp-source.htm
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Vector3.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VECTOR3_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VECTOR3_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>sf
-<a name="l00030"></a>00030 {
-<a name="l00036"></a>00036 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00037"></a><a class="code" href="classsf_1_1Vector3.htm">00037</a> <span class="keyword">class </span><a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3</a>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">public</span> :
-<a name="l00040"></a>00040
-<a name="l00045"></a>00045 <a class="code" href="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9" title="Default constructor.">Vector3</a>();
-<a name="l00046"></a>00046
-<a name="l00055"></a>00055 <a class="code" href="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9" title="Default constructor.">Vector3</a>(T X, T Y, T Z);
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="comment">// Member data</span>
-<a name="l00060"></a><a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">00060</a> <span class="comment"></span> T <a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>;
-<a name="l00061"></a><a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">00061</a> T <a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>;
-<a name="l00062"></a><a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">00062</a> T <a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>;
-<a name="l00063"></a>00063 };
-<a name="l00064"></a>00064
-<a name="l00073"></a>00073 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00074"></a>00074 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator -(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V);
-<a name="l00075"></a>00075
-<a name="l00085"></a>00085 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00086"></a>00086 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; operator +=(<a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00087"></a>00087
-<a name="l00097"></a>00097 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00098"></a>00098 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; operator -=(<a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00099"></a>00099
-<a name="l00109"></a>00109 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00110"></a>00110 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator +(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00111"></a>00111
-<a name="l00121"></a>00121 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00122"></a>00122 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator -(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00123"></a>00123
-<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00134"></a>00134 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator *(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V, T X);
-<a name="l00135"></a>00135
-<a name="l00145"></a>00145 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00146"></a>00146 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator *(T X, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V);
-<a name="l00147"></a>00147
-<a name="l00157"></a>00157 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00158"></a>00158 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; operator *=(<a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V, T X);
-<a name="l00159"></a>00159
-<a name="l00169"></a>00169 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00170"></a>00170 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a> operator /(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V, T X);
-<a name="l00171"></a>00171
-<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00182"></a>00182 <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; operator /=(<a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V, T X);
-<a name="l00183"></a>00183
-<a name="l00193"></a>00193 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00194"></a>00194 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00195"></a>00195
-<a name="l00205"></a>00205 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00206"></a>00206 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V1, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;T&gt;</a>&amp; V2);
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="preprocessor">#include &lt;SFML/System/Vector3.inl&gt;</span>
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">// Define the most common types</span>
-<a name="l00211"></a>00211 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;int&gt;</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3i</a>;
-<a name="l00212"></a>00212 <span class="keyword">typedef</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3&lt;float&gt;</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>;
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 } <span class="comment">// namespace sf</span>
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <span class="preprocessor">#endif // SFML_VECTOR3_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Vector3_8inl-source.htm b/doc/html/Vector3_8inl-source.htm
deleted file mode 100755
index eebf2db..0000000
--- a/doc/html/Vector3_8inl-source.htm
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Vector3.inl</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025
-<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00030"></a>00030 Vector3&lt;T&gt;::Vector3() :
-<a name="l00031"></a>00031 x(0),
-<a name="l00032"></a>00032 y(0),
-<a name="l00033"></a>00033 z(0)
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00043"></a>00043 <a class="code" href="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9" title="Default constructor.">Vector3&lt;T&gt;::Vector3</a>(T X, T Y, T Z) :
-<a name="l00044"></a>00044 x(X),
-<a name="l00045"></a>00045 y(Y),
-<a name="l00046"></a>00046 z(Z)
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051
-<a name="l00055"></a>00055 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00056"></a>00056 Vector3&lt;T&gt; operator -(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> Vector3&lt;T&gt;(-V.x, -V.y, -V.z);
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00065"></a>00065 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00066"></a>00066 Vector3&lt;T&gt;&amp; operator +=(Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 V1.x += V2.x;
-<a name="l00069"></a>00069 V1.y += V2.y;
-<a name="l00070"></a>00070 V1.z += V2.z;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> V1;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a>00079 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00080"></a>00080 Vector3&lt;T&gt;&amp; operator -=(Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 V1.x -= V2.x;
-<a name="l00083"></a>00083 V1.y -= V2.y;
-<a name="l00084"></a>00084 V1.z -= V2.z;
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> V1;
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089
-<a name="l00093"></a>00093 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00094"></a>00094 Vector3&lt;T&gt; operator +(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> Vector3&lt;T&gt;(V1.x + V2.x, V1.y + V2.y, V1.z + V2.z);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099
-<a name="l00103"></a>00103 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00104"></a>00104 Vector3&lt;T&gt; operator -(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> Vector3&lt;T&gt;(V1.x - V2.x, V1.y - V2.y, V1.z - V2.z);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109
-<a name="l00113"></a>00113 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00114"></a>00114 Vector3&lt;T&gt; operator *(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V, T X)
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> Vector3&lt;T&gt;(V.x * X, V.y * X, V.z * X);
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119
-<a name="l00123"></a>00123 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00124"></a>00124 Vector3&lt;T&gt; operator *(T X, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keywordflow">return</span> Vector3&lt;T&gt;(V.x * X, V.y * X, V.z * X);
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129
-<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00134"></a>00134 Vector3&lt;T&gt;&amp; operator *=(Vector3&lt;T&gt;&amp; V, T X)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 V.x *= X;
-<a name="l00137"></a>00137 V.y *= X;
-<a name="l00138"></a>00138 V.z *= X;
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> V;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143
-<a name="l00147"></a>00147 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00148"></a>00148 Vector3&lt;T&gt; operator /(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V, T X)
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> Vector3&lt;T&gt;(V.x / X, V.y / X, V.z / X);
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153
-<a name="l00157"></a>00157 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00158"></a>00158 Vector3&lt;T&gt;&amp; operator /=(Vector3&lt;T&gt;&amp; V, T X)
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 V.x /= X;
-<a name="l00161"></a>00161 V.y /= X;
-<a name="l00162"></a>00162 V.z /= X;
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> V;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167
-<a name="l00171"></a>00171 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00172"></a>00172 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> (V1.x == V2.x) &amp;&amp; (V1.y == V2.y) &amp;&amp; (V1.z == V2.z);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177
-<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00182"></a>00182 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> Vector3&lt;T&gt;&amp; V1, <span class="keyword">const</span> Vector3&lt;T&gt;&amp; V2)
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> (V1.x != V2.x) || (V1.y != V2.y) || (V1.z != V2.z);
-<a name="l00185"></a>00185 }
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/VideoModeSupport_8hpp-source.htm b/doc/html/VideoModeSupport_8hpp-source.htm
deleted file mode 100755
index 9a24245..0000000
--- a/doc/html/VideoModeSupport_8hpp-source.htm
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIDEOMODESUPPORT_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIDEOMODESUPPORT_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/Window/Win32/VideoModeSupport.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span>
-<a name="l00040"></a>00040 <span class="preprocessor"> #include &lt;SFML/Window/Linux/VideoModeSupport.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#elif defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044 <span class="preprocessor"> #include &lt;SFML/Window/Cocoa/VideoModeSupport.hpp&gt;</span>
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="preprocessor">#endif</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span>
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="preprocessor">#endif // SFML_VIDEOMODESUPPORT_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/VideoMode_8cpp-source.htm b/doc/html/VideoMode_8cpp-source.htm
deleted file mode 100755
index 1312cb6..0000000
--- a/doc/html/VideoMode_8cpp-source.htm
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoMode.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/VideoModeSupport.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00037"></a>00037 <span class="keyword">namespace</span>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="comment">// Global array of supported video modes</span>
-<a name="l00040"></a>00040 std::vector&lt;sf::VideoMode&gt; SupportedModes;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="comment">// Functor for sorting modes from highest to lowest</span>
-<a name="l00043"></a>00043 <span class="keyword">struct </span>CompareModes
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keywordtype">bool</span> operator ()(<span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">sf::VideoMode</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">sf::VideoMode</a>&amp; v2)<span class="keyword"> const</span>
-<a name="l00046"></a>00046 <span class="keyword"> </span>{
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (v1.<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a> &gt; v2.<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a>)
-<a name="l00048"></a>00048 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00049"></a>00049 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1.<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a> &lt; v2.<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a>)
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00051"></a>00051 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1.<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a> &gt; v2.<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a>)
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00053"></a>00053 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v1.<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a> &lt; v2.<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a>)
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00055"></a>00055 <span class="keywordflow">else</span>
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> (v1.<a class="code" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5" title="Video mode height, in pixels.">Height</a> &gt; v2.<a class="code" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5" title="Video mode height, in pixels.">Height</a>);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058 };
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="keyword">namespace </span>sf
-<a name="l00063"></a>00063 {
-<a name="l00067"></a><a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1">00067</a> <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode::VideoMode</a>() :
-<a name="l00068"></a>00068 Width (0),
-<a name="l00069"></a>00069 Height (0),
-<a name="l00070"></a>00070 BitsPerPixel(0)
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classsf_1_1VideoMode.htm#9478572db06121f70260e6b9dc21704e">00079</a> <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode::VideoMode</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeWidth, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeHeight, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeBpp) :
-<a name="l00080"></a>00080 Width (ModeWidth),
-<a name="l00081"></a>00081 Height (ModeHeight),
-<a name="l00082"></a>00082 BitsPerPixel(ModeBpp)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087
-<a name="l00091"></a><a class="code" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea">00091</a> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> <a class="code" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea" title="Get the current desktop video mode.">VideoMode::GetDesktopMode</a>()
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="comment">// Directly forward to the video mode support</span>
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> priv::VideoModeSupport::GetDesktopVideoMode();
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00102"></a><a class="code" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2">00102</a> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> <a class="code" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2" title="Get a valid video mode Index must be in range [0, GetModesCount()[ Modes are sorted...">VideoMode::GetMode</a>(std::size_t Index)
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (SupportedModes.empty())
-<a name="l00105"></a>00105 InitializeModes();
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (Index &lt; <a class="code" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723" title="Get valid video modes count.">GetModesCount</a>())
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> SupportedModes[Index];
-<a name="l00109"></a>00109 <span class="keywordflow">else</span>
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode</a>();
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00117"></a><a class="code" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723">00117</a> std::size_t <a class="code" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723" title="Get valid video modes count.">VideoMode::GetModesCount</a>()
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (SupportedModes.empty())
-<a name="l00120"></a>00120 InitializeModes();
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> SupportedModes.size();
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00129"></a><a class="code" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c">00129</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c" title="Tell whether or not the video mode is supported.">VideoMode::IsValid</a>()<span class="keyword"> const</span>
-<a name="l00130"></a>00130 <span class="keyword"></span>{
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (SupportedModes.empty())
-<a name="l00132"></a>00132 InitializeModes();
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> std::find(SupportedModes.begin(), SupportedModes.end(), *<span class="keyword">this</span>) != SupportedModes.end();
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137
-<a name="l00141"></a><a class="code" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1">00141</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1" title="Comparison operator overload -- tell if two video modes are equal.">VideoMode::operator ==</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00142"></a>00142 <span class="keyword"></span>{
-<a name="l00143"></a>00143 <span class="keywordflow">return</span> (<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a> == Other.<a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203" title="Video mode width, in pixels.">Width</a>) &amp;&amp;
-<a name="l00144"></a>00144 (<a class="code" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5" title="Video mode height, in pixels.">Height</a> == Other.<a class="code" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5" title="Video mode height, in pixels.">Height</a>) &amp;&amp;
-<a name="l00145"></a>00145 (<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a> == Other.<a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a" title="Video mode pixel depth, in bits per pixels.">BitsPerPixel</a>);
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148
-<a name="l00152"></a><a class="code" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821">00152</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821" title="Comparison operator overload -- tell if two video modes are different.">VideoMode::operator !=</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>&amp; Other)<span class="keyword"> const</span>
-<a name="l00153"></a>00153 <span class="keyword"></span>{
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == Other);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00161"></a>00161 <span class="keywordtype">void</span> VideoMode::InitializeModes()
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="comment">// We request the array of valid modes</span>
-<a name="l00164"></a>00164 priv::VideoModeSupport::GetSupportedVideoModes(SupportedModes);
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="comment">// And we sort them from highest to lowest (so that number 0 is the best)</span>
-<a name="l00167"></a>00167 std::sort(SupportedModes.begin(), SupportedModes.end(), CompareModes());
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/VideoMode_8hpp-source.htm b/doc/html/VideoMode_8hpp-source.htm
deleted file mode 100755
index 1faf203..0000000
--- a/doc/html/VideoMode_8hpp-source.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoMode.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIDEOMODE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIDEOMODE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00042"></a><a class="code" href="classsf_1_1VideoMode.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00050"></a>00050 <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>();
-<a name="l00051"></a>00051
-<a name="l00060"></a>00060 <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeWidth, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeHeight, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ModeBpp = 32);
-<a name="l00061"></a>00061
-<a name="l00068"></a>00068 <span class="keyword">static</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> GetDesktopMode();
-<a name="l00069"></a>00069
-<a name="l00080"></a>00080 <span class="keyword">static</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> GetMode(std::size_t Index);
-<a name="l00081"></a>00081
-<a name="l00088"></a>00088 <span class="keyword">static</span> std::size_t GetModesCount();
-<a name="l00089"></a>00089
-<a name="l00096"></a>00096 <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span>;
-<a name="l00097"></a>00097
-<a name="l00106"></a>00106 <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00107"></a>00107
-<a name="l00116"></a>00116 <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a>&amp; Other) <span class="keyword">const</span>;
-<a name="l00117"></a>00117
-<a name="l00119"></a>00119 <span class="comment">// Member data</span>
-<a name="l00121"></a><a class="code" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">00121</a> <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width;
-<a name="l00122"></a><a class="code" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">00122</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height;
-<a name="l00123"></a><a class="code" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">00123</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BitsPerPixel;
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keyword">private</span> :
-<a name="l00126"></a>00126
-<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keywordtype">void</span> InitializeModes();
-<a name="l00131"></a>00131 };
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 } <span class="comment">// namespace sf</span>
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="preprocessor">#endif // SFML_VIDEOMODE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/View_8cpp-source.htm b/doc/html/View_8cpp-source.htm
deleted file mode 100755
index 5d89836..0000000
--- a/doc/html/View_8cpp-source.htm
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>View.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Graphics/View.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>sf
-<a name="l00033"></a>00033 {
-<a name="l00037"></a><a class="code" href="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc">00037</a> <a class="code" href="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc" title="Construct the view from a rectangle.">View::View</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>&amp; ViewRect)
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <a class="code" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee" title="Rebuild the view from a rectangle.">SetFromRect</a>(ViewRect);
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00046"></a><a class="code" href="classsf_1_1View.htm#0323ca80f81ad7feb877d328a0fdbb60">00046</a> <a class="code" href="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc" title="Construct the view from a rectangle.">View::View</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Center, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; HalfSize) :
-<a name="l00047"></a>00047 myCenter (Center),
-<a name="l00048"></a>00048 myHalfSize (HalfSize),
-<a name="l00049"></a>00049 myNeedUpdate(true)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00058"></a><a class="code" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86">00058</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86" title="Change the center of the view (take 2 values).">View::SetCenter</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 myCenter.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = X;
-<a name="l00061"></a>00061 myCenter.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> = Y;
-<a name="l00062"></a>00062 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065
-<a name="l00069"></a><a class="code" href="classsf_1_1View.htm#fc62a34d1bb3c7a64ab5cc11941967cb">00069</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86" title="Change the center of the view (take 2 values).">View::SetCenter</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Center)
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <a class="code" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86" title="Change the center of the view (take 2 values).">SetCenter</a>(Center.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Center.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074
-<a name="l00078"></a><a class="code" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a">00078</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a" title="Change the half-size of the view (take 2 values).">View::SetHalfSize</a>(<span class="keywordtype">float</span> HalfWidth, <span class="keywordtype">float</span> HalfHeight)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> = HalfWidth;
-<a name="l00081"></a>00081 myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> = HalfHeight;
-<a name="l00082"></a>00082 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a><a class="code" href="classsf_1_1View.htm#ce6e0d15b8fe1f2f0066d8438c01f1d3">00089</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a" title="Change the half-size of the view (take 2 values).">View::SetHalfSize</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; HalfSize)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a" title="Change the half-size of the view (take 2 values).">SetHalfSize</a>(HalfSize.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, HalfSize.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00098"></a><a class="code" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee">00098</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee" title="Rebuild the view from a rectangle.">View::SetFromRect</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>&amp; ViewRect)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <a class="code" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86" title="Change the center of the view (take 2 values).">SetCenter</a>( (ViewRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> + ViewRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>) / 2, (ViewRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> + ViewRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>) / 2);
-<a name="l00101"></a>00101 <a class="code" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a" title="Change the half-size of the view (take 2 values).">SetHalfSize</a>((ViewRect.<a class="code" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383" title="Right coordinate of the rectangle.">Right</a> - ViewRect.<a class="code" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3" title="Left coordinate of the rectangle.">Left</a>) / 2, (ViewRect.<a class="code" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8" title="Bottom coordinate of the rectangle.">Bottom</a> - ViewRect.<a class="code" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047" title="Top coordinate of the rectangle.">Top</a>) / 2);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104
-<a name="l00108"></a><a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd">00108</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; <a class="code" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd" title="Get the center of the view.">View::GetCenter</a>()<span class="keyword"> const</span>
-<a name="l00109"></a>00109 <span class="keyword"></span>{
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> myCenter;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00117"></a><a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47">00117</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; <a class="code" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47" title="Get the half-size of the view.">View::GetHalfSize</a>()<span class="keyword"> const</span>
-<a name="l00118"></a>00118 <span class="keyword"></span>{
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> myHalfSize;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00126"></a><a class="code" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd">00126</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">sf::FloatRect</a>&amp; <a class="code" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd" title="Get the bounding rectangle of the view.">View::GetRect</a>()<span class="keyword"> const</span>
-<a name="l00127"></a>00127 <span class="keyword"></span>{
-<a name="l00128"></a>00128 <span class="comment">// Recompute it if needed</span>
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (myNeedUpdate)
-<a name="l00130"></a>00130 <span class="keyword">const_cast&lt;</span><a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;RecomputeMatrix();
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> myRect;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00139"></a><a class="code" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c">00139</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c" title="Move the view (take 2 values).">View::Move</a>(<span class="keywordtype">float</span> OffsetX, <span class="keywordtype">float</span> OffsetY)
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 myCenter.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> += OffsetX;
-<a name="l00142"></a>00142 myCenter.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> += OffsetY;
-<a name="l00143"></a>00143 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146
-<a name="l00150"></a><a class="code" href="classsf_1_1View.htm#e065331d6f2d450b3482c623c7506ced">00150</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c" title="Move the view (take 2 values).">View::Move</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Offset)
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 <a class="code" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c" title="Move the view (take 2 values).">Move</a>(Offset.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>, Offset.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>);
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155
-<a name="l00159"></a><a class="code" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1">00159</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1" title="Resize the view rectangle to simulate a zoom / unzoom effect.">View::Zoom</a>(<span class="keywordtype">float</span> Factor)
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (Factor != 0)
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 myHalfSize /= Factor;
-<a name="l00164"></a>00164 myNeedUpdate = <span class="keyword">true</span>;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; View::GetMatrix()<span class="keyword"> const</span>
-<a name="l00173"></a>00173 <span class="keyword"></span>{
-<a name="l00174"></a>00174 <span class="comment">// Recompute the matrix if needed</span>
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (myNeedUpdate)
-<a name="l00176"></a>00176 <span class="keyword">const_cast&lt;</span><a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;RecomputeMatrix();
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> myMatrix;
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181
-<a name="l00185"></a>00185 <span class="keywordtype">void</span> View::RecomputeMatrix()
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <span class="comment">// Compute the 4 corners of the view</span>
-<a name="l00188"></a>00188 <span class="keywordtype">float</span> Left = myCenter.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> - myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00189"></a>00189 <span class="keywordtype">float</span> Top = myCenter.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> - myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00190"></a>00190 <span class="keywordtype">float</span> Right = myCenter.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a> + myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141" title="X coordinate of the vector.">x</a>;
-<a name="l00191"></a>00191 <span class="keywordtype">float</span> Bottom = myCenter.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a> + myHalfSize.<a class="code" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299" title="Y coordinate of the vector.">y</a>;
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="comment">// Update the view rectangle - be careful, reversed views are allowed !</span>
-<a name="l00194"></a>00194 myRect.Left = std::min(Left, Right);
-<a name="l00195"></a>00195 myRect.Top = std::min(Top, Bottom);
-<a name="l00196"></a>00196 myRect.Right = std::max(Left, Right);
-<a name="l00197"></a>00197 myRect.Bottom = std::max(Top, Bottom);
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="comment">// Update the projection matrix</span>
-<a name="l00200"></a>00200 myMatrix(0, 0) = 2.f / (Right - Left);
-<a name="l00201"></a>00201 myMatrix(1, 1) = 2.f / (Top - Bottom);
-<a name="l00202"></a>00202 myMatrix(0, 2) = (Left + Right) / (Left - Right);
-<a name="l00203"></a>00203 myMatrix(1, 2) = (Bottom + Top) / (Bottom - Top);
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 myNeedUpdate = <span class="keyword">false</span>;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/View_8hpp-source.htm b/doc/html/View_8hpp-source.htm
deleted file mode 100755
index 7c0848d..0000000
--- a/doc/html/View_8hpp-source.htm
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>View.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIEW_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIEW_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Graphics/Rect.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Graphics/Matrix3.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/System/Vector2.hpp&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">class </span>RenderTarget;
-<a name="l00040"></a>00040
-<a name="l00045"></a><a class="code" href="classsf_1_1View.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00055"></a>00055 <span class="keyword">explicit</span> <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>&amp; ViewRect = <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>(0, 0, 1000, 1000));
-<a name="l00056"></a>00056
-<a name="l00064"></a>00064 <a class="code" href="classsf_1_1View.htm" title="This class defines a view (position, size, etc.">View</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Center, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; HalfSize);
-<a name="l00065"></a>00065
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> SetCenter(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y);
-<a name="l00074"></a>00074
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> SetCenter(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Center);
-<a name="l00082"></a>00082
-<a name="l00090"></a>00090 <span class="keywordtype">void</span> SetHalfSize(<span class="keywordtype">float</span> HalfWidth, <span class="keywordtype">float</span> HalfHeight);
-<a name="l00091"></a>00091
-<a name="l00098"></a>00098 <span class="keywordtype">void</span> SetHalfSize(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; HalfSize);
-<a name="l00099"></a>00099
-<a name="l00106"></a>00106 <span class="keywordtype">void</span> SetFromRect(<span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">FloatRect</a>&amp; ViewRect);
-<a name="l00107"></a>00107
-<a name="l00114"></a>00114 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; GetCenter() <span class="keyword">const</span>;
-<a name="l00115"></a>00115
-<a name="l00122"></a>00122 <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; GetHalfSize() <span class="keyword">const</span>;
-<a name="l00123"></a>00123
-<a name="l00130"></a>00130 <span class="keyword">const</span> <a class="code" href="classsf_1_1Rect.htm">sf::FloatRect</a>&amp; GetRect() <span class="keyword">const</span>;
-<a name="l00131"></a>00131
-<a name="l00139"></a>00139 <span class="keywordtype">void</span> Move(<span class="keywordtype">float</span> OffsetX, <span class="keywordtype">float</span> OffsetY);
-<a name="l00140"></a>00140
-<a name="l00147"></a>00147 <span class="keywordtype">void</span> Move(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&amp; Offset);
-<a name="l00148"></a>00148
-<a name="l00155"></a>00155 <span class="keywordtype">void</span> Zoom(<span class="keywordtype">float</span> Factor);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">private</span> :
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsf_1_1RenderTarget.htm" title="Base class for all render targets (window, image, .">RenderTarget</a>;
-<a name="l00160"></a>00160
-<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a>&amp; GetMatrix() <span class="keyword">const</span>;
-<a name="l00168"></a>00168
-<a name="l00173"></a>00173 <span class="keywordtype">void</span> RecomputeMatrix();
-<a name="l00174"></a>00174
-<a name="l00176"></a>00176 <span class="comment">// Member data</span>
-<a name="l00178"></a>00178 <span class="comment"></span> <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> myCenter;
-<a name="l00179"></a>00179 <a class="code" href="classsf_1_1Vector2.htm">sf::Vector2f</a> myHalfSize;
-<a name="l00180"></a>00180 <a class="code" href="classsf_1_1Rect.htm">FloatRect</a> myRect;
-<a name="l00181"></a>00181 <a class="code" href="classsf_1_1Matrix3.htm" title="Utility class to manipulate 3x3 matrices representing 2D transformations.">Matrix3</a> myMatrix;
-<a name="l00182"></a>00182 <span class="keywordtype">bool</span> myNeedUpdate;
-<a name="l00183"></a>00183 };
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 } <span class="comment">// namespace sf</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="preprocessor">#endif // SFML_VIEW_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2Joystick_8cpp-source.htm b/doc/html/Win32_2Joystick_8cpp-source.htm
deleted file mode 100755
index d7a5031..0000000
--- a/doc/html/Win32_2Joystick_8cpp-source.htm
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#define _WIN32_WINDOWS 0x0501</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define _WIN32_WINNT 0x0501</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include &lt;SFML/Window/Joystick.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;mmsystem.h&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00042"></a>00042 <span class="keywordtype">void</span> Joystick::Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="comment">// Reset state</span>
-<a name="l00045"></a>00045 myIndex = JOYSTICKID1;
-<a name="l00046"></a>00046 myNbButtons = 0;
-<a name="l00047"></a>00047 myIsConnected = <span class="keyword">false</span>;
-<a name="l00048"></a>00048 myHasContinuousPOV = <span class="keyword">false</span>;
-<a name="l00049"></a>00049 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Joy::AxisCount; ++i)
-<a name="l00050"></a>00050 myAxes[i] = <span class="keyword">false</span>;
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="comment">// Get the Index-th connected joystick</span>
-<a name="l00053"></a>00053 MMRESULT Error;
-<a name="l00054"></a>00054 JOYINFOEX JoyInfo;
-<a name="l00055"></a>00055 JoyInfo.dwSize = <span class="keyword">sizeof</span>(JoyInfo);
-<a name="l00056"></a>00056 JoyInfo.dwFlags = JOY_RETURNALL;
-<a name="l00057"></a>00057 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> NbFound = 0; (Error = joyGetPosEx(myIndex, &amp;JoyInfo)) != JOYERR_PARMS; myIndex++)
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 <span class="comment">// Check if the current joystick is connected</span>
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (Error == JOYERR_NOERROR)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="comment">// Check if it's the required index</span>
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (NbFound == Index)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="comment">// Ok : store its parameters and return</span>
-<a name="l00066"></a>00066 myIsConnected = <span class="keyword">true</span>;
-<a name="l00067"></a>00067 JOYCAPS Caps;
-<a name="l00068"></a>00068 joyGetDevCaps(myIndex, &amp;Caps, <span class="keyword">sizeof</span>(Caps));
-<a name="l00069"></a>00069 myNbButtons = Caps.wNumButtons;
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (myNbButtons &gt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>)
-<a name="l00071"></a>00071 myNbButtons = <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" title="Total number of supported joystick buttons.">Joy::ButtonCount</a>;
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 myAxes[Joy::AxisX] = <span class="keyword">true</span>;
-<a name="l00074"></a>00074 myAxes[Joy::AxisY] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 myAxes[Joy::AxisZ] = (Caps.wCaps &amp; JOYCAPS_HASZ) != 0;
-<a name="l00076"></a>00076 myAxes[Joy::AxisR] = (Caps.wCaps &amp; JOYCAPS_HASR) != 0;
-<a name="l00077"></a>00077 myAxes[Joy::AxisU] = (Caps.wCaps &amp; JOYCAPS_HASU) != 0;
-<a name="l00078"></a>00078 myAxes[Joy::AxisV] = (Caps.wCaps &amp; JOYCAPS_HASV) != 0;
-<a name="l00079"></a>00079 myAxes[Joy::AxisPOV] = (Caps.wCaps &amp; JOYCAPS_HASPOV) != 0;
-<a name="l00080"></a>00080 myHasContinuousPOV = (Caps.wCaps &amp; JOYCAPS_POVCTS) != 0;
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keywordflow">return</span>;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="comment">// Go to the next valid joystick</span>
-<a name="l00086"></a>00086 ++NbFound;
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091
-<a name="l00095"></a>00095 JoystickState Joystick::UpdateState()
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 JoystickState State;
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (myIsConnected)
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="comment">// Get the joystick caps (for range conversions)</span>
-<a name="l00102"></a>00102 JOYCAPS Caps;
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (joyGetDevCaps(myIndex, &amp;Caps, <span class="keyword">sizeof</span>(Caps)) == JOYERR_NOERROR)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 <span class="comment">// Get the current joystick state</span>
-<a name="l00106"></a>00106 JOYINFOEX Pos;
-<a name="l00107"></a>00107 Pos.dwFlags = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNBUTTONS;
-<a name="l00108"></a>00108 Pos.dwFlags |= myHasContinuousPOV ? JOY_RETURNPOVCTS : JOY_RETURNPOV;
-<a name="l00109"></a>00109 Pos.dwSize = <span class="keyword">sizeof</span>(JOYINFOEX);
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (joyGetPosEx(myIndex, &amp;Pos) == JOYERR_NOERROR)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="comment">// Axes</span>
-<a name="l00113"></a>00113 State.Axis[Joy::AxisX] = (Pos.dwXpos - (Caps.wXmax + Caps.wXmin) / 2.f) * 200.f / (Caps.wXmax - Caps.wXmin);
-<a name="l00114"></a>00114 State.Axis[Joy::AxisY] = (Pos.dwYpos - (Caps.wYmax + Caps.wYmin) / 2.f) * 200.f / (Caps.wYmax - Caps.wYmin);
-<a name="l00115"></a>00115 State.Axis[Joy::AxisZ] = (Pos.dwZpos - (Caps.wZmax + Caps.wZmin) / 2.f) * 200.f / (Caps.wZmax - Caps.wZmin);
-<a name="l00116"></a>00116 State.Axis[Joy::AxisR] = (Pos.dwRpos - (Caps.wRmax + Caps.wRmin) / 2.f) * 200.f / (Caps.wRmax - Caps.wRmin);
-<a name="l00117"></a>00117 State.Axis[Joy::AxisU] = (Pos.dwUpos - (Caps.wUmax + Caps.wUmin) / 2.f) * 200.f / (Caps.wUmax - Caps.wUmin);
-<a name="l00118"></a>00118 State.Axis[Joy::AxisV] = (Pos.dwVpos - (Caps.wVmax + Caps.wVmin) / 2.f) * 200.f / (Caps.wVmax - Caps.wVmin);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// POV</span>
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (Pos.dwPOV != 0xFFFF)
-<a name="l00122"></a>00122 State.Axis[Joy::AxisPOV] = Pos.dwPOV / 100.f;
-<a name="l00123"></a>00123 <span class="keywordflow">else</span>
-<a name="l00124"></a>00124 State.Axis[Joy::AxisPOV] = -1.f;
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="comment">// Buttons</span>
-<a name="l00127"></a>00127 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; GetButtonsCount(); ++i)
-<a name="l00128"></a>00128 State.Buttons[i] = (Pos.dwButtons &amp; (1 &lt;&lt; i)) != 0;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keywordflow">return</span> State;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136
-<a name="l00140"></a>00140 <span class="keywordtype">bool</span> Joystick::HasAxis(Joy::Axis Axis)<span class="keyword"> const</span>
-<a name="l00141"></a>00141 <span class="keyword"></span>{
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> myAxes[Axis];
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145
-<a name="l00149"></a>00149 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Joystick::GetButtonsCount()<span class="keyword"> const</span>
-<a name="l00150"></a>00150 <span class="keyword"></span>{
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> myNbButtons;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 } <span class="comment">// namespace priv</span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2Joystick_8hpp-source.htm b/doc/html/Win32_2Joystick_8hpp-source.htm
deleted file mode 100755
index eeee26d..0000000
--- a/doc/html/Win32_2Joystick_8hpp-source.htm
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Joystick.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_JOYSTICKWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_JOYSTICKWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 <span class="keyword">class </span>Joystick
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">public</span> :
-<a name="l00043"></a>00043
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> Initialize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Index);
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 JoystickState UpdateState();
-<a name="l00059"></a>00059
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> HasAxis(Joy::Axis Axis) <span class="keyword">const</span>;
-<a name="l00069"></a>00069
-<a name="l00076"></a>00076 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetButtonsCount() <span class="keyword">const</span>;
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="keyword">private</span> :
-<a name="l00079"></a>00079
-<a name="l00081"></a>00081 <span class="comment">// Member data</span>
-<a name="l00083"></a>00083 <span class="comment"></span> <span class="keywordtype">bool</span> myIsConnected;
-<a name="l00084"></a>00084 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myIndex;
-<a name="l00085"></a>00085 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myNbButtons;
-<a name="l00086"></a>00086 <span class="keywordtype">bool</span> myAxes[Joy::AxisCount];
-<a name="l00087"></a>00087 <span class="keywordtype">bool</span> myHasContinuousPOV;
-<a name="l00088"></a>00088 };
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 } <span class="comment">// namespace priv</span>
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 } <span class="comment">// namespace sf</span>
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="preprocessor">#endif // SFML_JOYSTICKWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2Mutex_8hpp-source.htm b/doc/html/Win32_2Mutex_8hpp-source.htm
deleted file mode 100755
index 4e16f41..0000000
--- a/doc/html/Win32_2Mutex_8hpp-source.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Mutex.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_MUTEXWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_MUTEXWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00045"></a><a class="code" href="classsf_1_1Mutex.htm">00045</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span> :
-<a name="l00048"></a>00048
-<a name="l00053"></a>00053 <a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>();
-<a name="l00054"></a>00054
-<a name="l00059"></a>00059 ~<a class="code" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a>();
-<a name="l00060"></a>00060
-<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a>();
-<a name="l00066"></a>00066
-<a name="l00071"></a>00071 <span class="keywordtype">void</span> Unlock();
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="keyword">private</span> :
-<a name="l00074"></a>00074
-<a name="l00076"></a>00076 <span class="comment">// Member data</span>
-<a name="l00078"></a>00078 <span class="comment"></span> CRITICAL_SECTION myHandle;
-<a name="l00079"></a>00079 };
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 } <span class="comment">// namespace sf</span>
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="preprocessor">#endif // SFML_MUTEXWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2Platform_8hpp-source.htm b/doc/html/Win32_2Platform_8hpp-source.htm
deleted file mode 100755
index 2e97ce6..0000000
--- a/doc/html/Win32_2Platform_8hpp-source.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Platform.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_PLATFORMWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_PLATFORMWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>Platform
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keywordtype">double</span> GetSystemTime();
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> <span class="keywordtype">void</span> Sleep(<span class="keywordtype">float</span> Time);
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 } <span class="comment">// namespace priv</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 } <span class="comment">// namespace sf</span>
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor">#endif // SFML_PLATFORMWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2SocketHelper_8hpp-source.htm b/doc/html/Win32_2SocketHelper_8hpp-source.htm
deleted file mode 100755
index 9e0a061..0000000
--- a/doc/html/Win32_2SocketHelper_8hpp-source.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>SocketHelper.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SOCKETHELPERWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SOCKETHELPERWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;winsock2.h&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00041"></a><a class="code" href="classsf_1_1SocketHelper.htm">00041</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1SocketHelper.htm" title="This class defines helper functions to do all the non-portable socket stuff.">SocketHelper</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">public</span> :
-<a name="l00044"></a>00044
-<a name="l00046"></a>00046 <span class="comment">// Define some socket types</span>
-<a name="l00048"></a>00048 <span class="comment"></span> <span class="keyword">typedef</span> SOCKET SocketType;
-<a name="l00049"></a>00049 <span class="keyword">typedef</span> <span class="keywordtype">int</span> LengthType;
-<a name="l00050"></a>00050
-<a name="l00057"></a>00057 <span class="keyword">static</span> SocketType InvalidSocket();
-<a name="l00058"></a>00058
-<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keywordtype">bool</span> Close(SocketType Socket);
-<a name="l00068"></a>00068
-<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keywordtype">void</span> SetBlocking(SocketType Socket, <span class="keywordtype">bool</span> Block);
-<a name="l00077"></a>00077
-<a name="l00084"></a>00084 <span class="keyword">static</span> Socket::Status GetErrorStatus();
-<a name="l00085"></a>00085 };
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 } <span class="comment">// namespace sf</span>
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="preprocessor">#endif // SFML_SOCKETHELPERWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2Thread_8hpp-source.htm b/doc/html/Win32_2Thread_8hpp-source.htm
deleted file mode 100755
index 9a32695..0000000
--- a/doc/html/Win32_2Thread_8hpp-source.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Thread.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_THREADWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_THREADWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00044"></a><a class="code" href="classsf_1_1Thread.htm">00044</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> : <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keyword">typedef</span> void (*FuncType)(<span class="keywordtype">void</span>*);
-<a name="l00049"></a>00049
-<a name="l00057"></a>00057 <a class="code" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a>(FuncType Function, <span class="keywordtype">void</span>* UserData = NULL);
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 <span class="keyword">virtual</span> ~Thread();
-<a name="l00064"></a>00064
-<a name="l00069"></a>00069 <span class="keywordtype">void</span> Launch();
-<a name="l00070"></a>00070
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> Wait();
-<a name="l00076"></a>00076
-<a name="l00084"></a>00084 <span class="keywordtype">void</span> Terminate();
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">protected</span> :
-<a name="l00087"></a>00087
-<a name="l00092"></a>00092 Thread();
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keyword">private</span> :
-<a name="l00095"></a>00095
-<a name="l00100"></a>00100 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Run();
-<a name="l00101"></a>00101
-<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> __stdcall ThreadFunc(<span class="keywordtype">void</span>* UserData);
-<a name="l00111"></a>00111
-<a name="l00113"></a>00113 <span class="comment">// Member data</span>
-<a name="l00115"></a>00115 <span class="comment"></span> HANDLE myHandle;
-<a name="l00116"></a>00116 FuncType myFunction;
-<a name="l00117"></a>00117 <span class="keywordtype">void</span>* myUserData;
-<a name="l00118"></a>00118 };
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 } <span class="comment">// namespace sf</span>
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="preprocessor">#endif // SFML_THREADWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2VideoModeSupport_8cpp-source.htm b/doc/html/Win32_2VideoModeSupport_8cpp-source.htm
deleted file mode 100755
index 3cd74c5..0000000
--- a/doc/html/Win32_2VideoModeSupport_8cpp-source.htm
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Win32/VideoModeSupport.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00040"></a>00040 <span class="keywordtype">void</span> VideoModeSupport::GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="comment">// First, clear array to fill</span>
-<a name="l00043"></a>00043 Modes.clear();
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="comment">// Enumerate all available video modes for primary display adapter</span>
-<a name="l00046"></a>00046 DEVMODE Win32Mode;
-<a name="l00047"></a>00047 Win32Mode.dmSize = <span class="keyword">sizeof</span>(DEVMODE);
-<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Count = 0; EnumDisplaySettings(NULL, Count, &amp;Win32Mode); ++Count)
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="comment">// Convert to sfVideoMode</span>
-<a name="l00051"></a>00051 <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode</a> <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a>(Win32Mode.dmPelsWidth, Win32Mode.dmPelsHeight, Win32Mode.dmBitsPerPel);
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="comment">// Add it only if it is not already in the array</span>
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (std::find(Modes.begin(), Modes.end(), <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a>) == Modes.end())
-<a name="l00055"></a>00055 Modes.push_back(Mode);
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00063"></a>00063 VideoMode VideoModeSupport::GetDesktopVideoMode()
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 DEVMODE Win32Mode;
-<a name="l00066"></a>00066 Win32Mode.dmSize = <span class="keyword">sizeof</span>(DEVMODE);
-<a name="l00067"></a>00067 EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &amp;Win32Mode);
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1" title="Default constructor.">VideoMode</a>(Win32Mode.dmPelsWidth, Win32Mode.dmPelsHeight, Win32Mode.dmBitsPerPel);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 } <span class="comment">// namespace priv</span>
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Win32_2VideoModeSupport_8hpp-source.htm b/doc/html/Win32_2VideoModeSupport_8hpp-source.htm
deleted file mode 100755
index 24b53b2..0000000
--- a/doc/html/Win32_2VideoModeSupport_8hpp-source.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>VideoModeSupport.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_VIDEOMODESUPPORTWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_VIDEOMODESUPPORTWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>sf
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>priv
-<a name="l00038"></a>00038 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>VideoModeSupport
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keywordtype">void</span> GetSupportedVideoModes(std::vector&lt;VideoMode&gt;&amp; Modes);
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> VideoMode GetDesktopVideoMode();
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 } <span class="comment">// namespace priv</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 } <span class="comment">// namespace sf</span>
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor">#endif // SFML_VIDEOMODESUPPORTWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowHandle_8hpp-source.htm b/doc/html/WindowHandle_8hpp-source.htm
deleted file mode 100755
index 28cba68..0000000
--- a/doc/html/WindowHandle_8hpp-source.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowHandle.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWHANDLE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWHANDLE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00040"></a>00040 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span>
-<a name="l00042"></a>00042 <span class="comment">// Windows defines a void* handle (HWND)</span>
-<a name="l00043"></a>00043 <span class="keyword">typedef</span> <span class="keywordtype">void</span>* WindowHandle;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>
-<a name="l00047"></a>00047 <span class="comment">// Unix - X11 defines an unsigned integer handle (Window)</span>
-<a name="l00048"></a>00048 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowHandle;
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="preprocessor">#elif defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span>
-<a name="l00052"></a>00052 <span class="comment">// Mac OS X defines a void* handle (NSWindow)</span>
-<a name="l00053"></a>00053 <span class="keyword">typedef</span> <span class="keywordtype">void</span>* WindowHandle;
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span>
-<a name="l00057"></a>00057 } <span class="comment">// namespace sf</span>
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="preprocessor">#endif // SFML_WINDOWHANDLE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImplCocoa_8hpp-source.htm b/doc/html/WindowImplCocoa_8hpp-source.htm
deleted file mode 100755
index 71f9d95..0000000
--- a/doc/html/WindowImplCocoa_8hpp-source.htm
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImplCocoa.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWIMPLCOCOA_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWIMPLCOCOA_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="preprocessor">#ifdef __OBJC__</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="keyword">@class</span> sfPrivWindow;
-<a name="l00037"></a>00037 <span class="keyword">typedef</span> sfPrivWindow* sfPrivWindowRef;
-<a name="l00038"></a>00038 <span class="preprocessor">#else</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">void</span>* sfPrivWindowRef;
-<a name="l00040"></a>00040 <span class="preprocessor">#endif</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span>
-<a name="l00042"></a>00042 <span class="keyword">namespace </span>sf
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">namespace </span>priv
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046
-<a name="l00050"></a>00050 <span class="keyword">class </span>WindowImplCocoa : <span class="keyword">public</span> WindowImpl
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keyword">public</span> :
-<a name="l00053"></a>00053
-<a name="l00059"></a>00059 WindowImplCocoa();
-<a name="l00060"></a>00060
-<a name="l00069"></a>00069 WindowImplCocoa(WindowHandle Handle, WindowSettings&amp; params);
-<a name="l00070"></a>00070
-<a name="l00080"></a>00080 WindowImplCocoa(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; params);
-<a name="l00081"></a>00081
-<a name="l00086"></a>00086 ~WindowImplCocoa();
-<a name="l00087"></a>00087
-<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsContextActive();
-<a name="l00095"></a>00095
-<a name="l00099"></a>00099 <span class="keywordtype">void</span> HandleNotifiedEvent(Event&amp; eventRef);
-<a name="l00100"></a>00100
-<a name="l00105"></a>00105 <span class="keywordtype">void</span> HandleKeyDown(<span class="keywordtype">void</span> *eventRef);
-<a name="l00106"></a>00106 <span class="keywordtype">void</span> HandleKeyUp(<span class="keywordtype">void</span> *eventRef);
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> HandleModifierKey(<span class="keywordtype">void</span> *eventRef);
-<a name="l00108"></a>00108 <span class="keywordtype">void</span> HandleMouseDown(<span class="keywordtype">void</span> *eventRef);
-<a name="l00109"></a>00109 <span class="keywordtype">void</span> HandleMouseUp(<span class="keywordtype">void</span> *eventRef);
-<a name="l00110"></a>00110 <span class="keywordtype">void</span> HandleMouseMove(<span class="keywordtype">void</span> *eventRef);
-<a name="l00111"></a>00111 <span class="keywordtype">void</span> HandleMouseWheel(<span class="keywordtype">void</span> *eventRef);
-<a name="l00112"></a>00112
-<a name="l00116"></a>00116 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsTextEvent(<span class="keywordtype">void</span> *event);
-<a name="l00117"></a>00117 <span class="keyword">private</span> :
-<a name="l00118"></a>00118
-<a name="l00123"></a>00123 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Display();
-<a name="l00124"></a>00124
-<a name="l00129"></a>00129 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessEvents();
-<a name="l00130"></a>00130
-<a name="l00135"></a>00135 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetActive(<span class="keywordtype">bool</span> Active = <span class="keyword">true</span>) <span class="keyword">const</span>;
-<a name="l00136"></a>00136
-<a name="l00141"></a>00141 <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseVerticalSync(<span class="keywordtype">bool</span> Enabled);
-<a name="l00142"></a>00142
-<a name="l00147"></a>00147 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ShowMouseCursor(<span class="keywordtype">bool</span> Show);
-<a name="l00148"></a>00148
-<a name="l00153"></a>00153 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top);
-<a name="l00154"></a>00154
-<a name="l00159"></a>00159 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top);
-<a name="l00160"></a>00160
-<a name="l00165"></a>00165 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00166"></a>00166
-<a name="l00171"></a>00171 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Show(<span class="keywordtype">bool</span> State);
-<a name="l00172"></a>00172
-<a name="l00177"></a>00177 <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled);
-<a name="l00178"></a>00178
-<a name="l00183"></a>00183 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels);
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00193"></a>00193 <span class="comment">// Member data</span>
-<a name="l00195"></a>00195 <span class="comment"></span> sfPrivWindowRef myWrapper;
-<a name="l00196"></a>00196 <span class="keywordtype">bool</span> myUseKeyRepeat;
-<a name="l00197"></a>00197 <span class="keywordtype">bool</span> myMouseIn;
-<a name="l00198"></a>00198 <span class="keywordtype">float</span> myWheelStatus;
-<a name="l00199"></a>00199 };
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 } <span class="comment">// namespace priv</span>
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 } <span class="comment">// namespace sf</span>
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="preprocessor">#endif // SFML_WINDOWIMPLCOCOA_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImplWin32_8cpp-source.htm b/doc/html/WindowImplWin32_8cpp-source.htm
deleted file mode 100755
index 317458e..0000000
--- a/doc/html/WindowImplWin32_8cpp-source.htm
+++ /dev/null
@@ -1,1086 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImplWin32.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#define _WIN32_WINDOWS 0x0501</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define _WIN32_WINNT 0x0501</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include &lt;SFML/Window/Win32/WindowImplWin32.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/Window/WindowSettings.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/WindowStyle.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;GL/gl.h&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Window/glext/wglext.h&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Window/glext/glext.h&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="comment">// MinGW lacks the definition of some Win32 constants</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#ifndef XBUTTON1</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor"> #define XBUTTON1 0x0001</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#ifndef XBUTTON2</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor"> #define XBUTTON2 0x0002</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#ifndef MAPVK_VK_TO_VSC</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor"> #define MAPVK_VK_TO_VSC (0)</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00049"></a>00049 <span class="preprocessor"></span>
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keyword">namespace </span>sf
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="keyword">namespace </span>priv
-<a name="l00054"></a>00054 {
-<a name="l00056"></a>00056 <span class="comment">// Static member data</span>
-<a name="l00058"></a>00058 <span class="comment"></span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowImplWin32::ourWindowCount = 0;
-<a name="l00059"></a>00059 <span class="keyword">const</span> <span class="keywordtype">char</span>* WindowImplWin32::ourClassNameA = <span class="stringliteral">"SFML_Window"</span>;
-<a name="l00060"></a>00060 <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* WindowImplWin32::ourClassNameW = L<span class="stringliteral">"SFML_Window"</span>;
-<a name="l00061"></a>00061 WindowImplWin32* WindowImplWin32::ourFullscreenWindow = NULL;
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00068"></a>00068 WindowImplWin32::WindowImplWin32() :
-<a name="l00069"></a>00069 myHandle (NULL),
-<a name="l00070"></a>00070 myCallback (0),
-<a name="l00071"></a>00071 myCursor (NULL),
-<a name="l00072"></a>00072 myIcon (NULL),
-<a name="l00073"></a>00073 myKeyRepeatEnabled(true),
-<a name="l00074"></a>00074 myIsCursorIn (false)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="comment">// Register the window class at first call</span>
-<a name="l00077"></a>00077 <span class="keywordflow">if</span> (ourWindowCount == 0)
-<a name="l00078"></a>00078 RegisterWindowClass();
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">// Use small dimensions</span>
-<a name="l00081"></a>00081 myWidth = 1;
-<a name="l00082"></a>00082 myHeight = 1;
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="comment">// Create a dummy window (disabled and hidden)</span>
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (HasUnicodeSupport())
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 myHandle = CreateWindowW(ourClassNameW, L<span class="stringliteral">""</span>, WS_POPUP | WS_DISABLED, 0, 0, myWidth, myHeight, NULL, NULL, GetModuleHandle(NULL), NULL);
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 <span class="keywordflow">else</span>
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 myHandle = CreateWindowA(ourClassNameA, <span class="stringliteral">""</span>, WS_POPUP | WS_DISABLED, 0, 0, myWidth, myHeight, NULL, NULL, GetModuleHandle(NULL), NULL);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 ShowWindow(myHandle, SW_HIDE);
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="comment">// Create the rendering context</span>
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (myHandle)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 WindowSettings Params(0, 0, 0);
-<a name="l00099"></a>00099 CreateContext(VideoMode(myWidth, myHeight, 32), Params);
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Don't activate by default</span>
-<a name="l00102"></a>00102 <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>(<span class="keyword">false</span>);
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106
-<a name="l00110"></a>00110 WindowImplWin32::WindowImplWin32(WindowHandle Handle, WindowSettings&amp; Params) :
-<a name="l00111"></a>00111 myHandle (NULL),
-<a name="l00112"></a>00112 myCallback (0),
-<a name="l00113"></a>00113 myCursor (NULL),
-<a name="l00114"></a>00114 myIcon (NULL),
-<a name="l00115"></a>00115 myKeyRepeatEnabled(true),
-<a name="l00116"></a>00116 myIsCursorIn (false)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="comment">// Save window handle</span>
-<a name="l00119"></a>00119 myHandle = <span class="keyword">static_cast&lt;</span>HWND<span class="keyword">&gt;</span>(Handle);
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (myHandle)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="comment">// Get window client size</span>
-<a name="l00124"></a>00124 RECT Rect;
-<a name="l00125"></a>00125 GetClientRect(myHandle, &amp;Rect);
-<a name="l00126"></a>00126 myWidth = Rect.right - Rect.left;
-<a name="l00127"></a>00127 myHeight = Rect.bottom - Rect.top;
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// Create the rendering context</span>
-<a name="l00130"></a>00130 VideoMode <a class="code" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a>(myWidth, myHeight, <a class="code" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea" title="Get the current desktop video mode.">VideoMode::GetDesktopMode</a>().BitsPerPixel);
-<a name="l00131"></a>00131 CreateContext(Mode, Params);
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// We change the event procedure of the control (it is important to save the old one)</span>
-<a name="l00134"></a>00134 SetWindowLongPtr(myHandle, GWLP_USERDATA, reinterpret_cast&lt;long&gt;(<span class="keyword">this</span>));
-<a name="l00135"></a>00135 myCallback = SetWindowLongPtr(myHandle, GWLP_WNDPROC, reinterpret_cast&lt;long&gt;(&amp;WindowImplWin32::GlobalOnEvent));
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139
-<a name="l00143"></a>00143 WindowImplWin32::WindowImplWin32(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params) :
-<a name="l00144"></a>00144 myHandle (NULL),
-<a name="l00145"></a>00145 myCallback (0),
-<a name="l00146"></a>00146 myCursor (NULL),
-<a name="l00147"></a>00147 myIcon (NULL),
-<a name="l00148"></a>00148 myKeyRepeatEnabled(true),
-<a name="l00149"></a>00149 myIsCursorIn (false)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="comment">// Register the window class at first call</span>
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (ourWindowCount == 0)
-<a name="l00153"></a>00153 RegisterWindowClass();
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="comment">// Compute position and size</span>
-<a name="l00156"></a>00156 HDC ScreenDC = GetDC(NULL);
-<a name="l00157"></a>00157 <span class="keywordtype">int</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Left</a> = (GetDeviceCaps(ScreenDC, HORZRES) - Mode.Width) / 2;
-<a name="l00158"></a>00158 <span class="keywordtype">int</span> Top = (GetDeviceCaps(ScreenDC, VERTRES) - Mode.Height) / 2;
-<a name="l00159"></a>00159 <span class="keywordtype">int</span> Width = myWidth = Mode.Width;
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> Height = myHeight = Mode.Height;
-<a name="l00161"></a>00161 ReleaseDC(NULL, ScreenDC);
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="comment">// Choose the window style according to the Style parameter</span>
-<a name="l00164"></a>00164 DWORD Win32Style = WS_VISIBLE;
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (WindowStyle == <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422" title="No border / title bar (this flag and all others are mutually exclusive).">Style::None</a>)
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 Win32Style |= WS_POPUP;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 <span class="keywordflow">else</span>
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="keywordflow">if</span> (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6" title="Title bar + fixed border.">Style::Titlebar</a>) Win32Style |= WS_CAPTION | WS_MINIMIZEBOX;
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Style::Resize</a>) Win32Style |= WS_THICKFRAME | WS_MAXIMIZEBOX;
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Style::Close</a>) Win32Style |= WS_SYSMENU;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="comment">// In windowed mode, adjust width and height so that window will have the requested client area</span>
-<a name="l00177"></a>00177 <span class="keywordtype">bool</span> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d" title="Fullscreen mode (this flag and all others are mutually exclusive).">Fullscreen</a> = (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d" title="Fullscreen mode (this flag and all others are mutually exclusive).">Style::Fullscreen</a>) != 0;
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (!Fullscreen)
-<a name="l00179"></a>00179 {
-<a name="l00180"></a>00180 RECT Rect = {0, 0, Width, Height};
-<a name="l00181"></a>00181 AdjustWindowRect(&amp;Rect, Win32Style, <span class="keyword">false</span>);
-<a name="l00182"></a>00182 Width = Rect.right - Rect.left;
-<a name="l00183"></a>00183 Height = Rect.bottom - Rect.top;
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="comment">// Create the window</span>
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (HasUnicodeSupport())
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 <span class="keywordtype">wchar_t</span> WTitle[256];
-<a name="l00190"></a>00190 <span class="keywordtype">int</span> NbChars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Title.c_str(), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Title.size()), WTitle, <span class="keyword">sizeof</span>(WTitle) / <span class="keyword">sizeof</span>(*WTitle));
-<a name="l00191"></a>00191 WTitle[NbChars] = L<span class="charliteral">'\0'</span>;
-<a name="l00192"></a>00192 myHandle = CreateWindowW(ourClassNameW, WTitle, Win32Style, Left, Top, Width, Height, NULL, NULL, GetModuleHandle(NULL), <span class="keyword">this</span>);
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="keywordflow">else</span>
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 myHandle = CreateWindowA(ourClassNameA, Title.c_str(), Win32Style, Left, Top, Width, Height, NULL, NULL, GetModuleHandle(NULL), <span class="keyword">this</span>);
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="comment">// Switch to fullscreen if requested</span>
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> (Fullscreen)
-<a name="l00201"></a>00201 SwitchToFullscreen(Mode);
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="comment">// Create the rendering context</span>
-<a name="l00204"></a>00204 <span class="keywordflow">if</span> (myHandle)
-<a name="l00205"></a>00205 CreateContext(Mode, Params);
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <span class="comment">// Increment window count</span>
-<a name="l00208"></a>00208 ourWindowCount++;
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">// Get the actual size of the window, which can be smaller even after the call to AdjustWindowRect</span>
-<a name="l00211"></a>00211 <span class="comment">// This happens when the window is bigger than the desktop</span>
-<a name="l00212"></a>00212 RECT ActualRect;
-<a name="l00213"></a>00213 GetClientRect(myHandle, &amp;ActualRect);
-<a name="l00214"></a>00214 myWidth = ActualRect.right - ActualRect.left;
-<a name="l00215"></a>00215 myHeight = ActualRect.bottom - ActualRect.top;
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218
-<a name="l00222"></a>00222 WindowImplWin32::~WindowImplWin32()
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="comment">// Destroy the custom icon, if any</span>
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (myIcon)
-<a name="l00226"></a>00226 DestroyIcon(myIcon);
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="keywordflow">if</span> (!myCallback)
-<a name="l00229"></a>00229 {
-<a name="l00230"></a>00230 <span class="comment">// Destroy the window</span>
-<a name="l00231"></a>00231 <span class="keywordflow">if</span> (myHandle)
-<a name="l00232"></a>00232 DestroyWindow(myHandle);
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="comment">// Decrement the window count</span>
-<a name="l00235"></a>00235 ourWindowCount--;
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 <span class="comment">// Unregister window class if we were the last window</span>
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (ourWindowCount == 0)
-<a name="l00239"></a>00239 {
-<a name="l00240"></a>00240 <span class="keywordflow">if</span> (HasUnicodeSupport())
-<a name="l00241"></a>00241 {
-<a name="l00242"></a>00242 UnregisterClassW(ourClassNameW, GetModuleHandle(NULL));
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244 <span class="keywordflow">else</span>
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 UnregisterClassA(ourClassNameA, GetModuleHandle(NULL));
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 }
-<a name="l00249"></a>00249 }
-<a name="l00250"></a>00250 <span class="keywordflow">else</span>
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="comment">// The window is external : remove the hook on its message callback</span>
-<a name="l00253"></a>00253 SetWindowLongPtr(myHandle, GWLP_WNDPROC, myCallback);
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257
-<a name="l00261"></a>00261 <span class="keywordtype">bool</span> WindowImplWin32::IsContextActive()
-<a name="l00262"></a>00262 {
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> wglGetCurrentContext() != NULL;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266
-<a name="l00270"></a>00270 <span class="keywordtype">void</span> WindowImplWin32::ProcessEvents()
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="comment">// We update the window only if we own it</span>
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (!myCallback)
-<a name="l00274"></a>00274 {
-<a name="l00275"></a>00275 MSG Message;
-<a name="l00276"></a>00276 <span class="keywordflow">while</span> (PeekMessage(&amp;Message, NULL, 0, 0, PM_REMOVE))
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 TranslateMessage(&amp;Message);
-<a name="l00279"></a>00279 DispatchMessage(&amp;Message);
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284
-<a name="l00288"></a>00288 <span class="keywordtype">void</span> WindowImplWin32::Display()
-<a name="l00289"></a>00289 {
-<a name="l00290"></a>00290 <span class="keywordflow">if</span> (myDeviceContext &amp;&amp; myGLContext)
-<a name="l00291"></a>00291 SwapBuffers(myDeviceContext);
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293
-<a name="l00294"></a>00294
-<a name="l00298"></a>00298 <span class="keywordtype">void</span> WindowImplWin32::SetActive(<span class="keywordtype">bool</span> Active)<span class="keyword"> const</span>
-<a name="l00299"></a>00299 <span class="keyword"></span>{
-<a name="l00300"></a>00300 <span class="keywordflow">if</span> (Active)
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">if</span> (myDeviceContext &amp;&amp; myGLContext &amp;&amp; (wglGetCurrentContext() != myGLContext))
-<a name="l00303"></a>00303 wglMakeCurrent(myDeviceContext, myGLContext);
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305 <span class="keywordflow">else</span>
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (wglGetCurrentContext() == myGLContext)
-<a name="l00308"></a>00308 wglMakeCurrent(NULL, NULL);
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312
-<a name="l00316"></a>00316 <span class="keywordtype">void</span> WindowImplWin32::UseVerticalSync(<span class="keywordtype">bool</span> Enabled)
-<a name="l00317"></a>00317 {
-<a name="l00318"></a>00318 PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = <span class="keyword">reinterpret_cast&lt;</span>PFNWGLSWAPINTERVALEXTPROC<span class="keyword">&gt;</span>(wglGetProcAddress(<span class="stringliteral">"wglSwapIntervalEXT"</span>));
-<a name="l00319"></a>00319 <span class="keywordflow">if</span> (wglSwapIntervalEXT)
-<a name="l00320"></a>00320 wglSwapIntervalEXT(Enabled ? 1 : 0);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323
-<a name="l00327"></a>00327 <span class="keywordtype">void</span> WindowImplWin32::ShowMouseCursor(<span class="keywordtype">bool</span> Show)
-<a name="l00328"></a>00328 {
-<a name="l00329"></a>00329 <span class="keywordflow">if</span> (Show)
-<a name="l00330"></a>00330 myCursor = LoadCursor(NULL, IDC_ARROW);
-<a name="l00331"></a>00331 <span class="keywordflow">else</span>
-<a name="l00332"></a>00332 myCursor = NULL;
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 SetCursor(myCursor);
-<a name="l00335"></a>00335 }
-<a name="l00336"></a>00336
-<a name="l00337"></a>00337
-<a name="l00341"></a>00341 <span class="keywordtype">void</span> WindowImplWin32::SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top)
-<a name="l00342"></a>00342 {
-<a name="l00343"></a>00343 POINT Pos = {Left, Top};
-<a name="l00344"></a>00344 ClientToScreen(myHandle, &amp;Pos);
-<a name="l00345"></a>00345 SetCursorPos(Pos.x, Pos.y);
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348
-<a name="l00352"></a>00352 <span class="keywordtype">void</span> WindowImplWin32::SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top)
-<a name="l00353"></a>00353 {
-<a name="l00354"></a>00354 SetWindowPos(myHandle, NULL, Left, Top, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
-<a name="l00355"></a>00355 }
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357
-<a name="l00361"></a>00361 <span class="keywordtype">void</span> WindowImplWin32::SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00362"></a>00362 {
-<a name="l00363"></a>00363 <span class="comment">// SetWindowPos wants the total size of the window (including title bar and borders),</span>
-<a name="l00364"></a>00364 <span class="comment">// so we have to compute it</span>
-<a name="l00365"></a>00365 RECT Rect = {0, 0, Width, Height};
-<a name="l00366"></a>00366 AdjustWindowRect(&amp;Rect, GetWindowLong(myHandle, GWL_STYLE), <span class="keyword">false</span>);
-<a name="l00367"></a>00367 Width = Rect.right - Rect.left;
-<a name="l00368"></a>00368 Height = Rect.bottom - Rect.top;
-<a name="l00369"></a>00369
-<a name="l00370"></a>00370 SetWindowPos(myHandle, NULL, 0, 0, Width, Height, SWP_NOMOVE | SWP_NOZORDER);
-<a name="l00371"></a>00371 }
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373
-<a name="l00377"></a>00377 <span class="keywordtype">void</span> WindowImplWin32::Show(<span class="keywordtype">bool</span> State)
-<a name="l00378"></a>00378 {
-<a name="l00379"></a>00379 ShowWindow(myHandle, State ? SW_SHOW : SW_HIDE);
-<a name="l00380"></a>00380 }
-<a name="l00381"></a>00381
-<a name="l00382"></a>00382
-<a name="l00386"></a>00386 <span class="keywordtype">void</span> WindowImplWin32::EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 myKeyRepeatEnabled = Enabled;
-<a name="l00389"></a>00389 }
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391
-<a name="l00395"></a>00395 <span class="keywordtype">void</span> WindowImplWin32::SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels)
-<a name="l00396"></a>00396 {
-<a name="l00397"></a>00397 <span class="comment">// First destroy the previous one</span>
-<a name="l00398"></a>00398 <span class="keywordflow">if</span> (myIcon)
-<a name="l00399"></a>00399 DestroyIcon(myIcon);
-<a name="l00400"></a>00400
-<a name="l00401"></a>00401 <span class="comment">// Windows wants BGRA pixels : swap red and blue channels</span>
-<a name="l00402"></a>00402 std::vector&lt;Uint8&gt; IconPixels(Width * Height * 4);
-<a name="l00403"></a>00403 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; IconPixels.size() / 4; ++i)
-<a name="l00404"></a>00404 {
-<a name="l00405"></a>00405 IconPixels[i * 4 + 0] = Pixels[i * 4 + 2];
-<a name="l00406"></a>00406 IconPixels[i * 4 + 1] = Pixels[i * 4 + 1];
-<a name="l00407"></a>00407 IconPixels[i * 4 + 2] = Pixels[i * 4 + 0];
-<a name="l00408"></a>00408 IconPixels[i * 4 + 3] = Pixels[i * 4 + 3];
-<a name="l00409"></a>00409 }
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="comment">// Create the icon from the pixels array</span>
-<a name="l00412"></a>00412 myIcon = CreateIcon(GetModuleHandle(NULL), Width, Height, 1, 32, NULL, &amp;IconPixels[0]);
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <span class="comment">// Set it as both big and small icon of the window</span>
-<a name="l00415"></a>00415 <span class="keywordflow">if</span> (myIcon)
-<a name="l00416"></a>00416 {
-<a name="l00417"></a>00417 SendMessage(myHandle, WM_SETICON, ICON_BIG, (LPARAM)myIcon);
-<a name="l00418"></a>00418 SendMessage(myHandle, WM_SETICON, ICON_SMALL, (LPARAM)myIcon);
-<a name="l00419"></a>00419 }
-<a name="l00420"></a>00420 <span class="keywordflow">else</span>
-<a name="l00421"></a>00421 {
-<a name="l00422"></a>00422 std::cerr &lt;&lt; <span class="stringliteral">"Failed to set the window's icon"</span> &lt;&lt; std::endl;
-<a name="l00423"></a>00423 }
-<a name="l00424"></a>00424 }
-<a name="l00425"></a>00425
-<a name="l00426"></a>00426
-<a name="l00430"></a>00430 <span class="keywordtype">void</span> WindowImplWin32::RegisterWindowClass()
-<a name="l00431"></a>00431 {
-<a name="l00432"></a>00432 <span class="keywordflow">if</span> (HasUnicodeSupport())
-<a name="l00433"></a>00433 {
-<a name="l00434"></a>00434 WNDCLASSW WindowClass;
-<a name="l00435"></a>00435 WindowClass.style = 0;
-<a name="l00436"></a>00436 WindowClass.lpfnWndProc = &amp;WindowImplWin32::GlobalOnEvent;
-<a name="l00437"></a>00437 WindowClass.cbClsExtra = 0;
-<a name="l00438"></a>00438 WindowClass.cbWndExtra = 0;
-<a name="l00439"></a>00439 WindowClass.hInstance = GetModuleHandle(NULL);
-<a name="l00440"></a>00440 WindowClass.hIcon = NULL;
-<a name="l00441"></a>00441 WindowClass.hCursor = 0;
-<a name="l00442"></a>00442 WindowClass.hbrBackground = 0;
-<a name="l00443"></a>00443 WindowClass.lpszMenuName = NULL;
-<a name="l00444"></a>00444 WindowClass.lpszClassName = ourClassNameW;
-<a name="l00445"></a>00445 RegisterClassW(&amp;WindowClass);
-<a name="l00446"></a>00446 }
-<a name="l00447"></a>00447 <span class="keywordflow">else</span>
-<a name="l00448"></a>00448 {
-<a name="l00449"></a>00449 WNDCLASSA WindowClass;
-<a name="l00450"></a>00450 WindowClass.style = 0;
-<a name="l00451"></a>00451 WindowClass.lpfnWndProc = &amp;WindowImplWin32::GlobalOnEvent;
-<a name="l00452"></a>00452 WindowClass.cbClsExtra = 0;
-<a name="l00453"></a>00453 WindowClass.cbWndExtra = 0;
-<a name="l00454"></a>00454 WindowClass.hInstance = GetModuleHandle(NULL);
-<a name="l00455"></a>00455 WindowClass.hIcon = NULL;
-<a name="l00456"></a>00456 WindowClass.hCursor = 0;
-<a name="l00457"></a>00457 WindowClass.hbrBackground = 0;
-<a name="l00458"></a>00458 WindowClass.lpszMenuName = NULL;
-<a name="l00459"></a>00459 WindowClass.lpszClassName = ourClassNameA;
-<a name="l00460"></a>00460 RegisterClassA(&amp;WindowClass);
-<a name="l00461"></a>00461 }
-<a name="l00462"></a>00462 }
-<a name="l00463"></a>00463
-<a name="l00464"></a>00464
-<a name="l00468"></a>00468 <span class="keywordtype">void</span> WindowImplWin32::SwitchToFullscreen(<span class="keyword">const</span> VideoMode&amp; Mode)
-<a name="l00469"></a>00469 {
-<a name="l00470"></a>00470 DEVMODE DevMode;
-<a name="l00471"></a>00471 DevMode.dmSize = <span class="keyword">sizeof</span>(DEVMODE);
-<a name="l00472"></a>00472 DevMode.dmPelsWidth = Mode.Width;
-<a name="l00473"></a>00473 DevMode.dmPelsHeight = Mode.Height;
-<a name="l00474"></a>00474 DevMode.dmBitsPerPel = Mode.BitsPerPixel;
-<a name="l00475"></a>00475 DevMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
-<a name="l00476"></a>00476
-<a name="l00477"></a>00477 <span class="comment">// Apply fullscreen mode</span>
-<a name="l00478"></a>00478 <span class="keywordflow">if</span> (ChangeDisplaySettings(&amp;DevMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
-<a name="l00479"></a>00479 {
-<a name="l00480"></a>00480 std::cerr &lt;&lt; <span class="stringliteral">"Failed to change display mode for fullscreen"</span> &lt;&lt; std::endl;
-<a name="l00481"></a>00481 <span class="keywordflow">return</span>;
-<a name="l00482"></a>00482 }
-<a name="l00483"></a>00483
-<a name="l00484"></a>00484 <span class="comment">// Make the window flags compatible with fullscreen mode</span>
-<a name="l00485"></a>00485 SetWindowLong(myHandle, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
-<a name="l00486"></a>00486 SetWindowLong(myHandle, GWL_EXSTYLE, WS_EX_APPWINDOW);
-<a name="l00487"></a>00487
-<a name="l00488"></a>00488 <span class="comment">// Resize the window so that it fits the entire screen</span>
-<a name="l00489"></a>00489 SetWindowPos(myHandle, HWND_TOP, 0, 0, Mode.Width, Mode.Height, SWP_FRAMECHANGED);
-<a name="l00490"></a>00490 ShowWindow(myHandle, SW_SHOW);
-<a name="l00491"></a>00491
-<a name="l00492"></a>00492 <span class="comment">// Set "this" as the current fullscreen window</span>
-<a name="l00493"></a>00493 ourFullscreenWindow = <span class="keyword">this</span>;
-<a name="l00494"></a>00494 }
-<a name="l00495"></a>00495
-<a name="l00496"></a>00496
-<a name="l00500"></a>00500 <span class="keywordtype">void</span> WindowImplWin32::CreateContext(<span class="keyword">const</span> VideoMode&amp; Mode, WindowSettings&amp; Params)
-<a name="l00501"></a>00501 {
-<a name="l00502"></a>00502 <span class="comment">// Get the device context attached to the window</span>
-<a name="l00503"></a>00503 myDeviceContext = GetDC(myHandle);
-<a name="l00504"></a>00504 <span class="keywordflow">if</span> (myDeviceContext == NULL)
-<a name="l00505"></a>00505 {
-<a name="l00506"></a>00506 std::cerr &lt;&lt; <span class="stringliteral">"Failed to get device context of window -- cannot create OpenGL context"</span> &lt;&lt; std::endl;
-<a name="l00507"></a>00507 <span class="keywordflow">return</span>;
-<a name="l00508"></a>00508 }
-<a name="l00509"></a>00509
-<a name="l00510"></a>00510 <span class="comment">// Let's find a suitable pixel format -- first try with antialiasing</span>
-<a name="l00511"></a>00511 <span class="keywordtype">int</span> BestFormat = 0;
-<a name="l00512"></a>00512 <span class="keywordflow">if</span> (Params.AntialiasingLevel &gt; 0)
-<a name="l00513"></a>00513 {
-<a name="l00514"></a>00514 <span class="comment">// Get the wglChoosePixelFormatARB function (it is an extension)</span>
-<a name="l00515"></a>00515 PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = <span class="keyword">reinterpret_cast&lt;</span>PFNWGLCHOOSEPIXELFORMATARBPROC<span class="keyword">&gt;</span>(wglGetProcAddress(<span class="stringliteral">"wglChoosePixelFormatARB"</span>));
-<a name="l00516"></a>00516 <span class="keywordflow">if</span> (wglChoosePixelFormatARB)
-<a name="l00517"></a>00517 {
-<a name="l00518"></a>00518 <span class="comment">// Define the basic attributes we want for our window</span>
-<a name="l00519"></a>00519 <span class="keywordtype">int</span> IntAttributes[] =
-<a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
-<a name="l00522"></a>00522 WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
-<a name="l00523"></a>00523 WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
-<a name="l00524"></a>00524 WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
-<a name="l00525"></a>00525 WGL_SAMPLE_BUFFERS_ARB, (Params.AntialiasingLevel ? GL_TRUE : GL_FALSE),
-<a name="l00526"></a>00526 WGL_SAMPLES_ARB, Params.AntialiasingLevel,
-<a name="l00527"></a>00527 0, 0
-<a name="l00528"></a>00528 };
-<a name="l00529"></a>00529
-<a name="l00530"></a>00530 <span class="comment">// Let's check how many formats are supporting our requirements</span>
-<a name="l00531"></a>00531 <span class="keywordtype">int</span> Formats[128];
-<a name="l00532"></a>00532 UINT NbFormats;
-<a name="l00533"></a>00533 <span class="keywordtype">float</span> FloatAttributes[] = {0, 0};
-<a name="l00534"></a>00534 <span class="keywordtype">bool</span> IsValid = wglChoosePixelFormatARB(myDeviceContext, IntAttributes, FloatAttributes, <span class="keyword">sizeof</span>(Formats) / <span class="keyword">sizeof</span>(*Formats), Formats, &amp;NbFormats) != 0;
-<a name="l00535"></a>00535 <span class="keywordflow">if</span> (!IsValid || (NbFormats == 0))
-<a name="l00536"></a>00536 {
-<a name="l00537"></a>00537 <span class="keywordflow">if</span> (Params.AntialiasingLevel &gt; 2)
-<a name="l00538"></a>00538 {
-<a name="l00539"></a>00539 <span class="comment">// No format matching our needs : reduce the multisampling level</span>
-<a name="l00540"></a>00540 std::cerr &lt;&lt; <span class="stringliteral">"Failed to find a pixel format supporting "</span>
-<a name="l00541"></a>00541 &lt;&lt; Params.AntialiasingLevel &lt;&lt; <span class="stringliteral">" antialiasing levels ; trying with 2 levels"</span> &lt;&lt; std::endl;
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543 Params.AntialiasingLevel = IntAttributes[11] = 2;
-<a name="l00544"></a>00544 IsValid = wglChoosePixelFormatARB(myDeviceContext, IntAttributes, FloatAttributes, <span class="keyword">sizeof</span>(Formats) / <span class="keyword">sizeof</span>(*Formats), Formats, &amp;NbFormats) != 0;
-<a name="l00545"></a>00545 }
-<a name="l00546"></a>00546
-<a name="l00547"></a>00547 <span class="keywordflow">if</span> (!IsValid || (NbFormats == 0))
-<a name="l00548"></a>00548 {
-<a name="l00549"></a>00549 <span class="comment">// Cannot find any pixel format supporting multisampling ; disabling antialiasing</span>
-<a name="l00550"></a>00550 std::cerr &lt;&lt; <span class="stringliteral">"Failed to find a pixel format supporting antialiasing ; antialiasing will be disabled"</span> &lt;&lt; std::endl;
-<a name="l00551"></a>00551 Params.AntialiasingLevel = 0;
-<a name="l00552"></a>00552 }
-<a name="l00553"></a>00553 }
-<a name="l00554"></a>00554
-<a name="l00555"></a>00555 <span class="comment">// Get the best format among the returned ones</span>
-<a name="l00556"></a>00556 <span class="keywordflow">if</span> (IsValid &amp;&amp; (NbFormats &gt; 0))
-<a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <span class="keywordtype">int</span> BestScore = 0xFFFF;
-<a name="l00559"></a>00559 <span class="keywordflow">for</span> (UINT i = 0; i &lt; NbFormats; ++i)
-<a name="l00560"></a>00560 {
-<a name="l00561"></a>00561 <span class="comment">// Get the current format's attributes</span>
-<a name="l00562"></a>00562 PIXELFORMATDESCRIPTOR Attribs;
-<a name="l00563"></a>00563 Attribs.nSize = <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR);
-<a name="l00564"></a>00564 Attribs.nVersion = 1;
-<a name="l00565"></a>00565 DescribePixelFormat(myDeviceContext, Formats[i], <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR), &amp;Attribs);
-<a name="l00566"></a>00566
-<a name="l00567"></a>00567 <span class="comment">// Evaluate the current configuration</span>
-<a name="l00568"></a>00568 <span class="keywordtype">int</span> Color = Attribs.cRedBits + Attribs.cGreenBits + Attribs.cBlueBits + Attribs.cAlphaBits;
-<a name="l00569"></a>00569 <span class="keywordtype">int</span> Score = EvaluateConfig(Mode, Params, Color, Attribs.cDepthBits, Attribs.cStencilBits, Params.AntialiasingLevel);
-<a name="l00570"></a>00570
-<a name="l00571"></a>00571 <span class="comment">// Keep it if it's better than the current best</span>
-<a name="l00572"></a>00572 <span class="keywordflow">if</span> (Score &lt; BestScore)
-<a name="l00573"></a>00573 {
-<a name="l00574"></a>00574 BestScore = Score;
-<a name="l00575"></a>00575 BestFormat = Formats[i];
-<a name="l00576"></a>00576 }
-<a name="l00577"></a>00577 }
-<a name="l00578"></a>00578 }
-<a name="l00579"></a>00579 }
-<a name="l00580"></a>00580 <span class="keywordflow">else</span>
-<a name="l00581"></a>00581 {
-<a name="l00582"></a>00582 <span class="comment">// wglChoosePixelFormatARB not supported ; disabling antialiasing</span>
-<a name="l00583"></a>00583 std::cerr &lt;&lt; <span class="stringliteral">"Antialiasing is not supported ; it will be disabled"</span> &lt;&lt; std::endl;
-<a name="l00584"></a>00584 Params.AntialiasingLevel = 0;
-<a name="l00585"></a>00585 }
-<a name="l00586"></a>00586 }
-<a name="l00587"></a>00587
-<a name="l00588"></a>00588 <span class="comment">// Find a pixel format with no antialiasing, if not needed or not supported</span>
-<a name="l00589"></a>00589 <span class="keywordflow">if</span> (BestFormat == 0)
-<a name="l00590"></a>00590 {
-<a name="l00591"></a>00591 <span class="comment">// Setup a pixel format descriptor from the rendering settings</span>
-<a name="l00592"></a>00592 PIXELFORMATDESCRIPTOR PixelDescriptor;
-<a name="l00593"></a>00593 ZeroMemory(&amp;PixelDescriptor, <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR));
-<a name="l00594"></a>00594 PixelDescriptor.nSize = <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR);
-<a name="l00595"></a>00595 PixelDescriptor.nVersion = 1;
-<a name="l00596"></a>00596 PixelDescriptor.iLayerType = PFD_MAIN_PLANE;
-<a name="l00597"></a>00597 PixelDescriptor.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
-<a name="l00598"></a>00598 PixelDescriptor.iPixelType = PFD_TYPE_RGBA;
-<a name="l00599"></a>00599 PixelDescriptor.cColorBits = <span class="keyword">static_cast&lt;</span>BYTE<span class="keyword">&gt;</span>(Mode.BitsPerPixel);
-<a name="l00600"></a>00600 PixelDescriptor.cDepthBits = <span class="keyword">static_cast&lt;</span>BYTE<span class="keyword">&gt;</span>(Params.DepthBits);
-<a name="l00601"></a>00601 PixelDescriptor.cStencilBits = <span class="keyword">static_cast&lt;</span>BYTE<span class="keyword">&gt;</span>(Params.StencilBits);
-<a name="l00602"></a>00602 PixelDescriptor.cAlphaBits = Mode.BitsPerPixel == 32 ? 8 : 0;
-<a name="l00603"></a>00603
-<a name="l00604"></a>00604 <span class="comment">// Get the pixel format that best matches our requirements</span>
-<a name="l00605"></a>00605 BestFormat = ChoosePixelFormat(myDeviceContext, &amp;PixelDescriptor);
-<a name="l00606"></a>00606 <span class="keywordflow">if</span> (BestFormat == 0)
-<a name="l00607"></a>00607 {
-<a name="l00608"></a>00608 std::cerr &lt;&lt; <span class="stringliteral">"Failed to find a suitable pixel format for device context -- cannot create OpenGL context"</span> &lt;&lt; std::endl;
-<a name="l00609"></a>00609 <span class="keywordflow">return</span>;
-<a name="l00610"></a>00610 }
-<a name="l00611"></a>00611 }
-<a name="l00612"></a>00612
-<a name="l00613"></a>00613 <span class="comment">// Extract the depth and stencil bits from the chosen format</span>
-<a name="l00614"></a>00614 PIXELFORMATDESCRIPTOR ActualFormat;
-<a name="l00615"></a>00615 ActualFormat.nSize = <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR);
-<a name="l00616"></a>00616 ActualFormat.nVersion = 1;
-<a name="l00617"></a>00617 DescribePixelFormat(myDeviceContext, BestFormat, <span class="keyword">sizeof</span>(PIXELFORMATDESCRIPTOR), &amp;ActualFormat);
-<a name="l00618"></a>00618 Params.DepthBits = ActualFormat.cDepthBits;
-<a name="l00619"></a>00619 Params.StencilBits = ActualFormat.cStencilBits;
-<a name="l00620"></a>00620
-<a name="l00621"></a>00621 <span class="comment">// Set the chosen pixel format</span>
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (!SetPixelFormat(myDeviceContext, BestFormat, &amp;ActualFormat))
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 std::cerr &lt;&lt; <span class="stringliteral">"Failed to set pixel format for device context -- cannot create OpenGL context"</span> &lt;&lt; std::endl;
-<a name="l00625"></a>00625 <span class="keywordflow">return</span>;
-<a name="l00626"></a>00626 }
-<a name="l00627"></a>00627
-<a name="l00628"></a>00628 <span class="comment">// Create the OpenGL context from the device context</span>
-<a name="l00629"></a>00629 myGLContext = wglCreateContext(myDeviceContext);
-<a name="l00630"></a>00630 <span class="keywordflow">if</span> (myGLContext == NULL)
-<a name="l00631"></a>00631 {
-<a name="l00632"></a>00632 std::cerr &lt;&lt; <span class="stringliteral">"Failed to create an OpenGL context for this window"</span> &lt;&lt; std::endl;
-<a name="l00633"></a>00633 <span class="keywordflow">return</span>;
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635
-<a name="l00636"></a>00636 <span class="comment">// Share display lists with other contexts</span>
-<a name="l00637"></a>00637 HGLRC CurrentContext = wglGetCurrentContext();
-<a name="l00638"></a>00638 <span class="keywordflow">if</span> (CurrentContext)
-<a name="l00639"></a>00639 wglShareLists(CurrentContext, myGLContext);
-<a name="l00640"></a>00640
-<a name="l00641"></a>00641 <span class="comment">// Activate the context</span>
-<a name="l00642"></a>00642 <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>(<span class="keyword">true</span>);
-<a name="l00643"></a>00643
-<a name="l00644"></a>00644 <span class="comment">// Enable multisampling</span>
-<a name="l00645"></a>00645 <span class="keywordflow">if</span> (Params.AntialiasingLevel &gt; 0)
-<a name="l00646"></a>00646 glEnable(GL_MULTISAMPLE_ARB);
-<a name="l00647"></a>00647 }
-<a name="l00648"></a>00648
-<a name="l00649"></a>00649
-<a name="l00653"></a>00653 <span class="keywordtype">void</span> WindowImplWin32::Cleanup()
-<a name="l00654"></a>00654 {
-<a name="l00655"></a>00655 <span class="comment">// Restore the previous video mode (in case we were running in fullscreen)</span>
-<a name="l00656"></a>00656 <span class="keywordflow">if</span> (ourFullscreenWindow == <span class="keyword">this</span>)
-<a name="l00657"></a>00657 {
-<a name="l00658"></a>00658 ChangeDisplaySettings(NULL, 0);
-<a name="l00659"></a>00659 ourFullscreenWindow = NULL;
-<a name="l00660"></a>00660 }
-<a name="l00661"></a>00661
-<a name="l00662"></a>00662 <span class="comment">// Unhide the mouse cursor (in case it was hidden)</span>
-<a name="l00663"></a>00663 <a class="code" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0" title="Show or hide the mouse cursor.">ShowMouseCursor</a>(<span class="keyword">true</span>);
-<a name="l00664"></a>00664
-<a name="l00665"></a>00665 <span class="comment">// Destroy the OpenGL context</span>
-<a name="l00666"></a>00666 <span class="keywordflow">if</span> (myGLContext)
-<a name="l00667"></a>00667 {
-<a name="l00668"></a>00668 <span class="comment">// Unbind the context before destroying it</span>
-<a name="l00669"></a>00669 <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>(<span class="keyword">false</span>);
-<a name="l00670"></a>00670
-<a name="l00671"></a>00671 wglDeleteContext(myGLContext);
-<a name="l00672"></a>00672 myGLContext = NULL;
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674 <span class="keywordflow">if</span> (myDeviceContext)
-<a name="l00675"></a>00675 {
-<a name="l00676"></a>00676 ReleaseDC(myHandle, myDeviceContext);
-<a name="l00677"></a>00677 myDeviceContext = NULL;
-<a name="l00678"></a>00678 }
-<a name="l00679"></a>00679 }
-<a name="l00680"></a>00680
-<a name="l00681"></a>00681
-<a name="l00685"></a>00685 <span class="keywordtype">void</span> WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
-<a name="l00686"></a>00686 {
-<a name="l00687"></a>00687 <span class="comment">// Don't process any message until window is created</span>
-<a name="l00688"></a>00688 <span class="keywordflow">if</span> (myHandle == NULL)
-<a name="l00689"></a>00689 <span class="keywordflow">return</span>;
-<a name="l00690"></a>00690
-<a name="l00691"></a>00691 <span class="keywordflow">switch</span> (Message)
-<a name="l00692"></a>00692 {
-<a name="l00693"></a>00693 <span class="comment">// Destroy event</span>
-<a name="l00694"></a>00694 <span class="keywordflow">case</span> WM_DESTROY :
-<a name="l00695"></a>00695 {
-<a name="l00696"></a>00696 <span class="comment">// Here we must cleanup resources !</span>
-<a name="l00697"></a>00697 Cleanup();
-<a name="l00698"></a>00698 <span class="keywordflow">break</span>;
-<a name="l00699"></a>00699 }
-<a name="l00700"></a>00700
-<a name="l00701"></a>00701 <span class="comment">// Set cursor event</span>
-<a name="l00702"></a>00702 <span class="keywordflow">case</span> WM_SETCURSOR :
-<a name="l00703"></a>00703 {
-<a name="l00704"></a>00704 <span class="comment">// The mouse has moved, if the cursor is in our window we must refresh the cursor</span>
-<a name="l00705"></a>00705 <span class="keywordflow">if</span> (LOWORD(LParam) == HTCLIENT)
-<a name="l00706"></a>00706 SetCursor(myCursor);
-<a name="l00707"></a>00707
-<a name="l00708"></a>00708 <span class="keywordflow">break</span>;
-<a name="l00709"></a>00709 }
-<a name="l00710"></a>00710
-<a name="l00711"></a>00711 <span class="comment">// Close event</span>
-<a name="l00712"></a>00712 <span class="keywordflow">case</span> WM_CLOSE :
-<a name="l00713"></a>00713 {
-<a name="l00714"></a>00714 Event Evt;
-<a name="l00715"></a>00715 Evt.Type = Event::Closed;
-<a name="l00716"></a>00716 SendEvent(Evt);
-<a name="l00717"></a>00717 <span class="keywordflow">break</span>;
-<a name="l00718"></a>00718 }
-<a name="l00719"></a>00719
-<a name="l00720"></a>00720 <span class="comment">// Resize event</span>
-<a name="l00721"></a>00721 <span class="keywordflow">case</span> WM_SIZE :
-<a name="l00722"></a>00722 {
-<a name="l00723"></a>00723 <span class="comment">// Update window size</span>
-<a name="l00724"></a>00724 RECT Rect;
-<a name="l00725"></a>00725 GetClientRect(myHandle, &amp;Rect);
-<a name="l00726"></a>00726 myWidth = Rect.right - Rect.left;
-<a name="l00727"></a>00727 myHeight = Rect.bottom - Rect.top;
-<a name="l00728"></a>00728
-<a name="l00729"></a>00729 Event Evt;
-<a name="l00730"></a>00730 Evt.Type = Event::Resized;
-<a name="l00731"></a>00731 Evt.Size.Width = myWidth;
-<a name="l00732"></a>00732 Evt.Size.Height = myHeight;
-<a name="l00733"></a>00733 SendEvent(Evt);
-<a name="l00734"></a>00734 <span class="keywordflow">break</span>;
-<a name="l00735"></a>00735 }
-<a name="l00736"></a>00736
-<a name="l00737"></a>00737 <span class="comment">// Gain focus event</span>
-<a name="l00738"></a>00738 <span class="keywordflow">case</span> WM_SETFOCUS :
-<a name="l00739"></a>00739 {
-<a name="l00740"></a>00740 Event Evt;
-<a name="l00741"></a>00741 Evt.Type = Event::GainedFocus;
-<a name="l00742"></a>00742 SendEvent(Evt);
-<a name="l00743"></a>00743 <span class="keywordflow">break</span>;
-<a name="l00744"></a>00744 }
-<a name="l00745"></a>00745
-<a name="l00746"></a>00746 <span class="comment">// Lost focus event</span>
-<a name="l00747"></a>00747 <span class="keywordflow">case</span> WM_KILLFOCUS :
-<a name="l00748"></a>00748 {
-<a name="l00749"></a>00749 Event Evt;
-<a name="l00750"></a>00750 Evt.Type = Event::LostFocus;
-<a name="l00751"></a>00751 SendEvent(Evt);
-<a name="l00752"></a>00752 <span class="keywordflow">break</span>;
-<a name="l00753"></a>00753 }
-<a name="l00754"></a>00754
-<a name="l00755"></a>00755 <span class="comment">// Text event</span>
-<a name="l00756"></a>00756 <span class="keywordflow">case</span> WM_CHAR :
-<a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 <span class="keywordflow">if</span> (myKeyRepeatEnabled || ((LParam &amp; (1 &lt;&lt; 30)) == 0))
-<a name="l00759"></a>00759 {
-<a name="l00760"></a>00760 Event Evt;
-<a name="l00761"></a>00761 Evt.Type = Event::TextEntered;
-<a name="l00762"></a>00762 Evt.Text.Unicode = <span class="keyword">static_cast&lt;</span>Uint32<span class="keyword">&gt;</span>(WParam);
-<a name="l00763"></a>00763 SendEvent(Evt);
-<a name="l00764"></a>00764 }
-<a name="l00765"></a>00765 <span class="keywordflow">break</span>;
-<a name="l00766"></a>00766 }
-<a name="l00767"></a>00767
-<a name="l00768"></a>00768 <span class="comment">// Keydown event</span>
-<a name="l00769"></a>00769 <span class="keywordflow">case</span> WM_KEYDOWN :
-<a name="l00770"></a>00770 <span class="keywordflow">case</span> WM_SYSKEYDOWN :
-<a name="l00771"></a>00771 {
-<a name="l00772"></a>00772 <span class="keywordflow">if</span> (myKeyRepeatEnabled || ((HIWORD(LParam) &amp; KF_REPEAT) == 0))
-<a name="l00773"></a>00773 {
-<a name="l00774"></a>00774 Event Evt;
-<a name="l00775"></a>00775 Evt.Type = Event::KeyPressed;
-<a name="l00776"></a>00776 Evt.Key.Alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
-<a name="l00777"></a>00777 Evt.Key.Control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
-<a name="l00778"></a>00778 Evt.Key.Shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
-<a name="l00779"></a>00779 Evt.Key.Code = VirtualKeyCodeToSF(WParam, LParam);
-<a name="l00780"></a>00780 SendEvent(Evt);
-<a name="l00781"></a>00781 }
-<a name="l00782"></a>00782 <span class="keywordflow">break</span>;
-<a name="l00783"></a>00783 }
-<a name="l00784"></a>00784
-<a name="l00785"></a>00785 <span class="comment">// Keyup event</span>
-<a name="l00786"></a>00786 <span class="keywordflow">case</span> WM_KEYUP :
-<a name="l00787"></a>00787 <span class="keywordflow">case</span> WM_SYSKEYUP :
-<a name="l00788"></a>00788 {
-<a name="l00789"></a>00789 Event Evt;
-<a name="l00790"></a>00790 Evt.Type = Event::KeyReleased;
-<a name="l00791"></a>00791 Evt.Key.Alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
-<a name="l00792"></a>00792 Evt.Key.Control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
-<a name="l00793"></a>00793 Evt.Key.Shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
-<a name="l00794"></a>00794 Evt.Key.Code = VirtualKeyCodeToSF(WParam, LParam);
-<a name="l00795"></a>00795 SendEvent(Evt);
-<a name="l00796"></a>00796
-<a name="l00797"></a>00797 <span class="keywordflow">break</span>;
-<a name="l00798"></a>00798 }
-<a name="l00799"></a>00799
-<a name="l00800"></a>00800 <span class="comment">// Mouse wheel event</span>
-<a name="l00801"></a>00801 <span class="keywordflow">case</span> WM_MOUSEWHEEL :
-<a name="l00802"></a>00802 {
-<a name="l00803"></a>00803 Event Evt;
-<a name="l00804"></a>00804 Evt.Type = Event::MouseWheelMoved;
-<a name="l00805"></a>00805 Evt.MouseWheel.Delta = <span class="keyword">static_cast&lt;</span>Int16<span class="keyword">&gt;</span>(HIWORD(WParam)) / 120;
-<a name="l00806"></a>00806 SendEvent(Evt);
-<a name="l00807"></a>00807 <span class="keywordflow">break</span>;
-<a name="l00808"></a>00808 }
-<a name="l00809"></a>00809
-<a name="l00810"></a>00810 <span class="comment">// Mouse left button down event</span>
-<a name="l00811"></a>00811 <span class="keywordflow">case</span> WM_LBUTTONDOWN :
-<a name="l00812"></a>00812 {
-<a name="l00813"></a>00813 Event Evt;
-<a name="l00814"></a>00814 Evt.Type = Event::MouseButtonPressed;
-<a name="l00815"></a>00815 Evt.MouseButton.Button = Mouse::Left;
-<a name="l00816"></a>00816 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00817"></a>00817 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00818"></a>00818 SendEvent(Evt);
-<a name="l00819"></a>00819 <span class="keywordflow">break</span>;
-<a name="l00820"></a>00820 }
-<a name="l00821"></a>00821
-<a name="l00822"></a>00822 <span class="comment">// Mouse left button up event</span>
-<a name="l00823"></a>00823 <span class="keywordflow">case</span> WM_LBUTTONUP :
-<a name="l00824"></a>00824 {
-<a name="l00825"></a>00825 Event Evt;
-<a name="l00826"></a>00826 Evt.Type = Event::MouseButtonReleased;
-<a name="l00827"></a>00827 Evt.MouseButton.Button = Mouse::Left;
-<a name="l00828"></a>00828 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00829"></a>00829 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00830"></a>00830 SendEvent(Evt);
-<a name="l00831"></a>00831 <span class="keywordflow">break</span>;
-<a name="l00832"></a>00832 }
-<a name="l00833"></a>00833
-<a name="l00834"></a>00834 <span class="comment">// Mouse right button down event</span>
-<a name="l00835"></a>00835 <span class="keywordflow">case</span> WM_RBUTTONDOWN :
-<a name="l00836"></a>00836 {
-<a name="l00837"></a>00837 Event Evt;
-<a name="l00838"></a>00838 Evt.Type = Event::MouseButtonPressed;
-<a name="l00839"></a>00839 Evt.MouseButton.Button = Mouse::Right;
-<a name="l00840"></a>00840 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00841"></a>00841 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00842"></a>00842 SendEvent(Evt);
-<a name="l00843"></a>00843 <span class="keywordflow">break</span>;
-<a name="l00844"></a>00844 }
-<a name="l00845"></a>00845
-<a name="l00846"></a>00846 <span class="comment">// Mouse right button up event</span>
-<a name="l00847"></a>00847 <span class="keywordflow">case</span> WM_RBUTTONUP :
-<a name="l00848"></a>00848 {
-<a name="l00849"></a>00849 Event Evt;
-<a name="l00850"></a>00850 Evt.Type = Event::MouseButtonReleased;
-<a name="l00851"></a>00851 Evt.MouseButton.Button = Mouse::Right;
-<a name="l00852"></a>00852 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00853"></a>00853 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00854"></a>00854 SendEvent(Evt);
-<a name="l00855"></a>00855 <span class="keywordflow">break</span>;
-<a name="l00856"></a>00856 }
-<a name="l00857"></a>00857
-<a name="l00858"></a>00858 <span class="comment">// Mouse wheel button down event</span>
-<a name="l00859"></a>00859 <span class="keywordflow">case</span> WM_MBUTTONDOWN :
-<a name="l00860"></a>00860 {
-<a name="l00861"></a>00861 Event Evt;
-<a name="l00862"></a>00862 Evt.Type = Event::MouseButtonPressed;
-<a name="l00863"></a>00863 Evt.MouseButton.Button = Mouse::Middle;
-<a name="l00864"></a>00864 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00865"></a>00865 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00866"></a>00866 SendEvent(Evt);
-<a name="l00867"></a>00867 <span class="keywordflow">break</span>;
-<a name="l00868"></a>00868 }
-<a name="l00869"></a>00869
-<a name="l00870"></a>00870 <span class="comment">// Mouse wheel button up event</span>
-<a name="l00871"></a>00871 <span class="keywordflow">case</span> WM_MBUTTONUP :
-<a name="l00872"></a>00872 {
-<a name="l00873"></a>00873 Event Evt;
-<a name="l00874"></a>00874 Evt.Type = Event::MouseButtonReleased;
-<a name="l00875"></a>00875 Evt.MouseButton.Button = Mouse::Middle;
-<a name="l00876"></a>00876 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00877"></a>00877 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00878"></a>00878 SendEvent(Evt);
-<a name="l00879"></a>00879 <span class="keywordflow">break</span>;
-<a name="l00880"></a>00880 }
-<a name="l00881"></a>00881
-<a name="l00882"></a>00882 <span class="comment">// Mouse X button down event</span>
-<a name="l00883"></a>00883 <span class="keywordflow">case</span> WM_XBUTTONDOWN :
-<a name="l00884"></a>00884 {
-<a name="l00885"></a>00885 Event Evt;
-<a name="l00886"></a>00886 Evt.Type = Event::MouseButtonPressed;
-<a name="l00887"></a>00887 Evt.MouseButton.Button = HIWORD(WParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
-<a name="l00888"></a>00888 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00889"></a>00889 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00890"></a>00890 SendEvent(Evt);
-<a name="l00891"></a>00891 <span class="keywordflow">break</span>;
-<a name="l00892"></a>00892 }
-<a name="l00893"></a>00893
-<a name="l00894"></a>00894 <span class="comment">// Mouse X button up event</span>
-<a name="l00895"></a>00895 <span class="keywordflow">case</span> WM_XBUTTONUP :
-<a name="l00896"></a>00896 {
-<a name="l00897"></a>00897 Event Evt;
-<a name="l00898"></a>00898 Evt.Type = Event::MouseButtonReleased;
-<a name="l00899"></a>00899 Evt.MouseButton.Button = HIWORD(WParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
-<a name="l00900"></a>00900 Evt.MouseButton.X = LOWORD(LParam);
-<a name="l00901"></a>00901 Evt.MouseButton.Y = HIWORD(LParam);
-<a name="l00902"></a>00902 SendEvent(Evt);
-<a name="l00903"></a>00903 <span class="keywordflow">break</span>;
-<a name="l00904"></a>00904 }
-<a name="l00905"></a>00905
-<a name="l00906"></a>00906 <span class="comment">// Mouse move event</span>
-<a name="l00907"></a>00907 <span class="keywordflow">case</span> WM_MOUSEMOVE :
-<a name="l00908"></a>00908 {
-<a name="l00909"></a>00909 <span class="comment">// Check if we need to generate a MouseEntered event</span>
-<a name="l00910"></a>00910 <span class="keywordflow">if</span> (!myIsCursorIn)
-<a name="l00911"></a>00911 {
-<a name="l00912"></a>00912 TRACKMOUSEEVENT MouseEvent;
-<a name="l00913"></a>00913 MouseEvent.cbSize = <span class="keyword">sizeof</span>(TRACKMOUSEEVENT);
-<a name="l00914"></a>00914 MouseEvent.hwndTrack = myHandle;
-<a name="l00915"></a>00915 MouseEvent.dwFlags = TME_LEAVE;
-<a name="l00916"></a>00916 TrackMouseEvent(&amp;MouseEvent);
-<a name="l00917"></a>00917
-<a name="l00918"></a>00918 myIsCursorIn = <span class="keyword">true</span>;
-<a name="l00919"></a>00919
-<a name="l00920"></a>00920 Event Evt;
-<a name="l00921"></a>00921 Evt.Type = Event::MouseEntered;
-<a name="l00922"></a>00922 SendEvent(Evt);
-<a name="l00923"></a>00923 }
-<a name="l00924"></a>00924
-<a name="l00925"></a>00925 Event Evt;
-<a name="l00926"></a>00926 Evt.Type = Event::MouseMoved;
-<a name="l00927"></a>00927 Evt.MouseMove.X = LOWORD(LParam);
-<a name="l00928"></a>00928 Evt.MouseMove.Y = HIWORD(LParam);
-<a name="l00929"></a>00929 SendEvent(Evt);
-<a name="l00930"></a>00930 <span class="keywordflow">break</span>;
-<a name="l00931"></a>00931 }
-<a name="l00932"></a>00932
-<a name="l00933"></a>00933 <span class="comment">// Mouse leave event</span>
-<a name="l00934"></a>00934 <span class="keywordflow">case</span> WM_MOUSELEAVE :
-<a name="l00935"></a>00935 {
-<a name="l00936"></a>00936 myIsCursorIn = <span class="keyword">false</span>;
-<a name="l00937"></a>00937
-<a name="l00938"></a>00938 Event Evt;
-<a name="l00939"></a>00939 Evt.Type = Event::MouseLeft;
-<a name="l00940"></a>00940 SendEvent(Evt);
-<a name="l00941"></a>00941 <span class="keywordflow">break</span>;
-<a name="l00942"></a>00942 }
-<a name="l00943"></a>00943 }
-<a name="l00944"></a>00944 }
-<a name="l00945"></a>00945
-<a name="l00946"></a>00946
-<a name="l00950"></a>00950 <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> WindowImplWin32::VirtualKeyCodeToSF(WPARAM VirtualKey, LPARAM Flags)
-<a name="l00951"></a>00951 {
-<a name="l00952"></a>00952 <span class="keywordflow">switch</span> (VirtualKey)
-<a name="l00953"></a>00953 {
-<a name="l00954"></a>00954 <span class="comment">// Check the scancode to distinguish between left and right shift</span>
-<a name="l00955"></a>00955 <span class="keywordflow">case</span> VK_SHIFT :
-<a name="l00956"></a>00956 {
-<a name="l00957"></a>00957 <span class="keyword">static</span> UINT LShift = MapVirtualKey(VK_LSHIFT, MAPVK_VK_TO_VSC);
-<a name="l00958"></a>00958 UINT scancode = (Flags &amp; (0xFF &lt;&lt; 16)) &gt;&gt; 16;
-<a name="l00959"></a>00959 <span class="keywordflow">return</span> scancode == LShift ? Key::LShift : Key::RShift;
-<a name="l00960"></a>00960 }
-<a name="l00961"></a>00961
-<a name="l00962"></a>00962 <span class="comment">// Check the "extended" flag to distinguish between left and right alt</span>
-<a name="l00963"></a>00963 <span class="keywordflow">case</span> VK_MENU : <span class="keywordflow">return</span> (HIWORD(Flags) &amp; KF_EXTENDED) ? Key::RAlt : Key::LAlt;
-<a name="l00964"></a>00964
-<a name="l00965"></a>00965 <span class="comment">// Check the "extended" flag to distinguish between left and right control</span>
-<a name="l00966"></a>00966 <span class="keywordflow">case</span> VK_CONTROL : <span class="keywordflow">return</span> (HIWORD(Flags) &amp; KF_EXTENDED) ? Key::RControl : Key::LControl;
-<a name="l00967"></a>00967
-<a name="l00968"></a>00968 <span class="comment">// Other keys are reported properly</span>
-<a name="l00969"></a>00969 <span class="keywordflow">case</span> VK_LWIN : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb" title="OS specific key (left side) : windows (Win and Linux), apple (MacOS), ...">Key::LSystem</a>;
-<a name="l00970"></a>00970 <span class="keywordflow">case</span> VK_RWIN : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49" title="OS specific key (right side) : windows (Win and Linux), apple (MacOS), ...">Key::RSystem</a>;
-<a name="l00971"></a>00971 <span class="keywordflow">case</span> VK_APPS : <span class="keywordflow">return</span> Key::Menu;
-<a name="l00972"></a>00972 <span class="keywordflow">case</span> VK_OEM_1 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01" title=";">Key::SemiColon</a>;
-<a name="l00973"></a>00973 <span class="keywordflow">case</span> VK_OEM_2 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd" title="/">Key::Slash</a>;
-<a name="l00974"></a>00974 <span class="keywordflow">case</span> VK_OEM_PLUS : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359" title="=">Key::Equal</a>;
-<a name="l00975"></a>00975 <span class="keywordflow">case</span> VK_OEM_MINUS : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00" title="-">Key::Dash</a>;
-<a name="l00976"></a>00976 <span class="keywordflow">case</span> VK_OEM_4 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93" title="[">Key::LBracket</a>;
-<a name="l00977"></a>00977 <span class="keywordflow">case</span> VK_OEM_6 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5" title="]">Key::RBracket</a>;
-<a name="l00978"></a>00978 <span class="keywordflow">case</span> VK_OEM_COMMA : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207" title=",">Key::Comma</a>;
-<a name="l00979"></a>00979 <span class="keywordflow">case</span> VK_OEM_PERIOD : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8" title=".">Key::Period</a>;
-<a name="l00980"></a>00980 <span class="keywordflow">case</span> VK_OEM_7 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9" title="&amp;#39;">Key::Quote</a>;
-<a name="l00981"></a>00981 <span class="keywordflow">case</span> VK_OEM_5 : <span class="keywordflow">return</span> Key::BackSlash;
-<a name="l00982"></a>00982 <span class="keywordflow">case</span> VK_OEM_3 : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67" title="~">Key::Tilde</a>;
-<a name="l00983"></a>00983 <span class="keywordflow">case</span> VK_ESCAPE : <span class="keywordflow">return</span> Key::Escape;
-<a name="l00984"></a>00984 <span class="keywordflow">case</span> VK_SPACE : <span class="keywordflow">return</span> Key::Space;
-<a name="l00985"></a>00985 <span class="keywordflow">case</span> VK_RETURN : <span class="keywordflow">return</span> Key::Return;
-<a name="l00986"></a>00986 <span class="keywordflow">case</span> VK_BACK : <span class="keywordflow">return</span> Key::Back;
-<a name="l00987"></a>00987 <span class="keywordflow">case</span> VK_TAB : <span class="keywordflow">return</span> Key::Tab;
-<a name="l00988"></a>00988 <span class="keywordflow">case</span> VK_PRIOR : <span class="keywordflow">return</span> Key::PageUp;
-<a name="l00989"></a>00989 <span class="keywordflow">case</span> VK_NEXT : <span class="keywordflow">return</span> Key::PageDown;
-<a name="l00990"></a>00990 <span class="keywordflow">case</span> VK_END : <span class="keywordflow">return</span> Key::End;
-<a name="l00991"></a>00991 <span class="keywordflow">case</span> VK_HOME : <span class="keywordflow">return</span> Key::Home;
-<a name="l00992"></a>00992 <span class="keywordflow">case</span> VK_INSERT : <span class="keywordflow">return</span> Key::Insert;
-<a name="l00993"></a>00993 <span class="keywordflow">case</span> VK_DELETE : <span class="keywordflow">return</span> Key::Delete;
-<a name="l00994"></a>00994 <span class="keywordflow">case</span> VK_ADD : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e" title="+">Key::Add</a>;
-<a name="l00995"></a>00995 <span class="keywordflow">case</span> VK_SUBTRACT : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865" title="-">Key::Subtract</a>;
-<a name="l00996"></a>00996 <span class="keywordflow">case</span> VK_MULTIPLY : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814" title="*">Key::Multiply</a>;
-<a name="l00997"></a>00997 <span class="keywordflow">case</span> VK_DIVIDE : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2" title="/">Key::Divide</a>;
-<a name="l00998"></a>00998 <span class="keywordflow">case</span> VK_PAUSE : <span class="keywordflow">return</span> Key::Pause;
-<a name="l00999"></a>00999 <span class="keywordflow">case</span> VK_F1 : <span class="keywordflow">return</span> Key::F1;
-<a name="l01000"></a>01000 <span class="keywordflow">case</span> VK_F2 : <span class="keywordflow">return</span> Key::F2;
-<a name="l01001"></a>01001 <span class="keywordflow">case</span> VK_F3 : <span class="keywordflow">return</span> Key::F3;
-<a name="l01002"></a>01002 <span class="keywordflow">case</span> VK_F4 : <span class="keywordflow">return</span> Key::F4;
-<a name="l01003"></a>01003 <span class="keywordflow">case</span> VK_F5 : <span class="keywordflow">return</span> Key::F5;
-<a name="l01004"></a>01004 <span class="keywordflow">case</span> VK_F6 : <span class="keywordflow">return</span> Key::F6;
-<a name="l01005"></a>01005 <span class="keywordflow">case</span> VK_F7 : <span class="keywordflow">return</span> Key::F7;
-<a name="l01006"></a>01006 <span class="keywordflow">case</span> VK_F8 : <span class="keywordflow">return</span> Key::F8;
-<a name="l01007"></a>01007 <span class="keywordflow">case</span> VK_F9 : <span class="keywordflow">return</span> Key::F9;
-<a name="l01008"></a>01008 <span class="keywordflow">case</span> VK_F10 : <span class="keywordflow">return</span> Key::F10;
-<a name="l01009"></a>01009 <span class="keywordflow">case</span> VK_F11 : <span class="keywordflow">return</span> Key::F11;
-<a name="l01010"></a>01010 <span class="keywordflow">case</span> VK_F12 : <span class="keywordflow">return</span> Key::F12;
-<a name="l01011"></a>01011 <span class="keywordflow">case</span> VK_F13 : <span class="keywordflow">return</span> Key::F13;
-<a name="l01012"></a>01012 <span class="keywordflow">case</span> VK_F14 : <span class="keywordflow">return</span> Key::F14;
-<a name="l01013"></a>01013 <span class="keywordflow">case</span> VK_F15 : <span class="keywordflow">return</span> Key::F15;
-<a name="l01014"></a>01014 <span class="keywordflow">case</span> VK_LEFT : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" title="Left arrow.">Key::Left</a>;
-<a name="l01015"></a>01015 <span class="keywordflow">case</span> VK_RIGHT : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" title="Right arrow.">Key::Right</a>;
-<a name="l01016"></a>01016 <span class="keywordflow">case</span> VK_UP : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff" title="Up arrow.">Key::Up</a>;
-<a name="l01017"></a>01017 <span class="keywordflow">case</span> VK_DOWN : <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62" title="Down arrow.">Key::Down</a>;
-<a name="l01018"></a>01018 <span class="keywordflow">case</span> VK_NUMPAD0 : <span class="keywordflow">return</span> Key::Numpad0;
-<a name="l01019"></a>01019 <span class="keywordflow">case</span> VK_NUMPAD1 : <span class="keywordflow">return</span> Key::Numpad1;
-<a name="l01020"></a>01020 <span class="keywordflow">case</span> VK_NUMPAD2 : <span class="keywordflow">return</span> Key::Numpad2;
-<a name="l01021"></a>01021 <span class="keywordflow">case</span> VK_NUMPAD3 : <span class="keywordflow">return</span> Key::Numpad3;
-<a name="l01022"></a>01022 <span class="keywordflow">case</span> VK_NUMPAD4 : <span class="keywordflow">return</span> Key::Numpad4;
-<a name="l01023"></a>01023 <span class="keywordflow">case</span> VK_NUMPAD5 : <span class="keywordflow">return</span> Key::Numpad5;
-<a name="l01024"></a>01024 <span class="keywordflow">case</span> VK_NUMPAD6 : <span class="keywordflow">return</span> Key::Numpad6;
-<a name="l01025"></a>01025 <span class="keywordflow">case</span> VK_NUMPAD7 : <span class="keywordflow">return</span> Key::Numpad7;
-<a name="l01026"></a>01026 <span class="keywordflow">case</span> VK_NUMPAD8 : <span class="keywordflow">return</span> Key::Numpad8;
-<a name="l01027"></a>01027 <span class="keywordflow">case</span> VK_NUMPAD9 : <span class="keywordflow">return</span> Key::Numpad9;
-<a name="l01028"></a>01028 <span class="keywordflow">case</span> <span class="charliteral">'A'</span> : <span class="keywordflow">return</span> Key::A;
-<a name="l01029"></a>01029 <span class="keywordflow">case</span> <span class="charliteral">'Z'</span> : <span class="keywordflow">return</span> Key::Z;
-<a name="l01030"></a>01030 <span class="keywordflow">case</span> <span class="charliteral">'E'</span> : <span class="keywordflow">return</span> Key::E;
-<a name="l01031"></a>01031 <span class="keywordflow">case</span> <span class="charliteral">'R'</span> : <span class="keywordflow">return</span> Key::R;
-<a name="l01032"></a>01032 <span class="keywordflow">case</span> <span class="charliteral">'T'</span> : <span class="keywordflow">return</span> Key::T;
-<a name="l01033"></a>01033 <span class="keywordflow">case</span> <span class="charliteral">'Y'</span> : <span class="keywordflow">return</span> Key::Y;
-<a name="l01034"></a>01034 <span class="keywordflow">case</span> <span class="charliteral">'U'</span> : <span class="keywordflow">return</span> Key::U;
-<a name="l01035"></a>01035 <span class="keywordflow">case</span> <span class="charliteral">'I'</span> : <span class="keywordflow">return</span> Key::I;
-<a name="l01036"></a>01036 <span class="keywordflow">case</span> <span class="charliteral">'O'</span> : <span class="keywordflow">return</span> Key::O;
-<a name="l01037"></a>01037 <span class="keywordflow">case</span> <span class="charliteral">'P'</span> : <span class="keywordflow">return</span> Key::P;
-<a name="l01038"></a>01038 <span class="keywordflow">case</span> <span class="charliteral">'Q'</span> : <span class="keywordflow">return</span> Key::Q;
-<a name="l01039"></a>01039 <span class="keywordflow">case</span> <span class="charliteral">'S'</span> : <span class="keywordflow">return</span> Key::S;
-<a name="l01040"></a>01040 <span class="keywordflow">case</span> <span class="charliteral">'D'</span> : <span class="keywordflow">return</span> Key::D;
-<a name="l01041"></a>01041 <span class="keywordflow">case</span> <span class="charliteral">'F'</span> : <span class="keywordflow">return</span> Key::F;
-<a name="l01042"></a>01042 <span class="keywordflow">case</span> <span class="charliteral">'G'</span> : <span class="keywordflow">return</span> Key::G;
-<a name="l01043"></a>01043 <span class="keywordflow">case</span> <span class="charliteral">'H'</span> : <span class="keywordflow">return</span> Key::H;
-<a name="l01044"></a>01044 <span class="keywordflow">case</span> <span class="charliteral">'J'</span> : <span class="keywordflow">return</span> Key::J;
-<a name="l01045"></a>01045 <span class="keywordflow">case</span> <span class="charliteral">'K'</span> : <span class="keywordflow">return</span> Key::K;
-<a name="l01046"></a>01046 <span class="keywordflow">case</span> <span class="charliteral">'L'</span> : <span class="keywordflow">return</span> Key::L;
-<a name="l01047"></a>01047 <span class="keywordflow">case</span> <span class="charliteral">'M'</span> : <span class="keywordflow">return</span> Key::M;
-<a name="l01048"></a>01048 <span class="keywordflow">case</span> <span class="charliteral">'W'</span> : <span class="keywordflow">return</span> Key::W;
-<a name="l01049"></a>01049 <span class="keywordflow">case</span> <span class="charliteral">'X'</span> : <span class="keywordflow">return</span> Key::X;
-<a name="l01050"></a>01050 <span class="keywordflow">case</span> <span class="charliteral">'C'</span> : <span class="keywordflow">return</span> Key::C;
-<a name="l01051"></a>01051 <span class="keywordflow">case</span> <span class="charliteral">'V'</span> : <span class="keywordflow">return</span> Key::V;
-<a name="l01052"></a>01052 <span class="keywordflow">case</span> <span class="charliteral">'B'</span> : <span class="keywordflow">return</span> Key::B;
-<a name="l01053"></a>01053 <span class="keywordflow">case</span> <span class="charliteral">'N'</span> : <span class="keywordflow">return</span> Key::N;
-<a name="l01054"></a>01054 <span class="keywordflow">case</span> <span class="charliteral">'0'</span> : <span class="keywordflow">return</span> Key::Num0;
-<a name="l01055"></a>01055 <span class="keywordflow">case</span> <span class="charliteral">'1'</span> : <span class="keywordflow">return</span> Key::Num1;
-<a name="l01056"></a>01056 <span class="keywordflow">case</span> <span class="charliteral">'2'</span> : <span class="keywordflow">return</span> Key::Num2;
-<a name="l01057"></a>01057 <span class="keywordflow">case</span> <span class="charliteral">'3'</span> : <span class="keywordflow">return</span> Key::Num3;
-<a name="l01058"></a>01058 <span class="keywordflow">case</span> <span class="charliteral">'4'</span> : <span class="keywordflow">return</span> Key::Num4;
-<a name="l01059"></a>01059 <span class="keywordflow">case</span> <span class="charliteral">'5'</span> : <span class="keywordflow">return</span> Key::Num5;
-<a name="l01060"></a>01060 <span class="keywordflow">case</span> <span class="charliteral">'6'</span> : <span class="keywordflow">return</span> Key::Num6;
-<a name="l01061"></a>01061 <span class="keywordflow">case</span> <span class="charliteral">'7'</span> : <span class="keywordflow">return</span> Key::Num7;
-<a name="l01062"></a>01062 <span class="keywordflow">case</span> <span class="charliteral">'8'</span> : <span class="keywordflow">return</span> Key::Num8;
-<a name="l01063"></a>01063 <span class="keywordflow">case</span> <span class="charliteral">'9'</span> : <span class="keywordflow">return</span> Key::Num9;
-<a name="l01064"></a>01064 }
-<a name="l01065"></a>01065
-<a name="l01066"></a>01066 <span class="keywordflow">return</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a>(0);
-<a name="l01067"></a>01067 }
-<a name="l01068"></a>01068
-<a name="l01069"></a>01069
-<a name="l01075"></a>01075 <span class="keywordtype">bool</span> WindowImplWin32::HasUnicodeSupport()
-<a name="l01076"></a>01076 {
-<a name="l01077"></a>01077 OSVERSIONINFO VersionInfo;
-<a name="l01078"></a>01078 ZeroMemory(&amp;VersionInfo, <span class="keyword">sizeof</span>(VersionInfo));
-<a name="l01079"></a>01079 VersionInfo.dwOSVersionInfoSize = <span class="keyword">sizeof</span>(VersionInfo);
-<a name="l01080"></a>01080
-<a name="l01081"></a>01081 <span class="keywordflow">if</span> (GetVersionEx(&amp;VersionInfo))
-<a name="l01082"></a>01082 {
-<a name="l01083"></a>01083 <span class="keywordflow">return</span> VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT;
-<a name="l01084"></a>01084 }
-<a name="l01085"></a>01085 <span class="keywordflow">else</span>
-<a name="l01086"></a>01086 {
-<a name="l01087"></a>01087 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01088"></a>01088 }
-<a name="l01089"></a>01089 }
-<a name="l01090"></a>01090
-<a name="l01091"></a>01091
-<a name="l01095"></a>01095 LRESULT CALLBACK WindowImplWin32::GlobalOnEvent(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam)
-<a name="l01096"></a>01096 {
-<a name="l01097"></a>01097 <span class="comment">// Associate handle and Window instance when the creation message is received</span>
-<a name="l01098"></a>01098 <span class="keywordflow">if</span> (Message == WM_CREATE)
-<a name="l01099"></a>01099 {
-<a name="l01100"></a>01100 <span class="comment">// Get WindowImplWin32 instance (it was passed as the last argument of CreateWindow)</span>
-<a name="l01101"></a>01101 <span class="keywordtype">long</span> This = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span>CREATESTRUCT*<span class="keyword">&gt;</span>(LParam)-&gt;lpCreateParams);
-<a name="l01102"></a>01102
-<a name="l01103"></a>01103 <span class="comment">// Set as the "user data" parameter of the window</span>
-<a name="l01104"></a>01104 SetWindowLongPtr(Handle, GWLP_USERDATA, This);
-<a name="l01105"></a>01105 }
-<a name="l01106"></a>01106
-<a name="l01107"></a>01107 <span class="comment">// Get the WindowImpl instance corresponding to the window handle</span>
-<a name="l01108"></a>01108 WindowImplWin32* <a class="code" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4" title="Default constructor.">Window</a> = <span class="keyword">reinterpret_cast&lt;</span>WindowImplWin32*<span class="keyword">&gt;</span>(GetWindowLongPtr(Handle, GWLP_USERDATA));
-<a name="l01109"></a>01109
-<a name="l01110"></a>01110 <span class="comment">// Forward the event to the appropriate function</span>
-<a name="l01111"></a>01111 <span class="keywordflow">if</span> (Window)
-<a name="l01112"></a>01112 {
-<a name="l01113"></a>01113 Window-&gt;ProcessEvent(Message, WParam, LParam);
-<a name="l01114"></a>01114
-<a name="l01115"></a>01115 <span class="keywordflow">if</span> (Window-&gt;myCallback)
-<a name="l01116"></a>01116 <span class="keywordflow">return</span> CallWindowProc(reinterpret_cast&lt;WNDPROC&gt;(Window-&gt;myCallback), Handle, Message, WParam, LParam);
-<a name="l01117"></a>01117 }
-<a name="l01118"></a>01118
-<a name="l01119"></a>01119 <span class="comment">// We don't forward the WM_CLOSE message to prevent the OS from automatically destroying the window</span>
-<a name="l01120"></a>01120 <span class="keywordflow">if</span> (Message == WM_CLOSE)
-<a name="l01121"></a>01121 <span class="keywordflow">return</span> 0;
-<a name="l01122"></a>01122
-<a name="l01123"></a>01123 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> HasUnicode = HasUnicodeSupport();
-<a name="l01124"></a>01124 <span class="keywordflow">return</span> HasUnicode ? DefWindowProcW(Handle, Message, WParam, LParam) :
-<a name="l01125"></a>01125 DefWindowProcA(Handle, Message, WParam, LParam);
-<a name="l01126"></a>01126 }
-<a name="l01127"></a>01127
-<a name="l01128"></a>01128 } <span class="comment">// namespace priv</span>
-<a name="l01129"></a>01129
-<a name="l01130"></a>01130 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImplWin32_8hpp-source.htm b/doc/html/WindowImplWin32_8hpp-source.htm
deleted file mode 100755
index 4491b43..0000000
--- a/doc/html/WindowImplWin32_8hpp-source.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImplWin32.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWIMPLWIN32_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWIMPLWIN32_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;windows.h&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>sf
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>priv
-<a name="l00040"></a>00040 {
-<a name="l00044"></a>00044 <span class="keyword">class </span>WindowImplWin32 : <span class="keyword">public</span> WindowImpl
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">public</span> :
-<a name="l00047"></a>00047
-<a name="l00053"></a>00053 WindowImplWin32();
-<a name="l00054"></a>00054
-<a name="l00062"></a>00062 WindowImplWin32(WindowHandle Handle, WindowSettings&amp; Params);
-<a name="l00063"></a>00063
-<a name="l00073"></a>00073 WindowImplWin32(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params);
-<a name="l00074"></a>00074
-<a name="l00079"></a>00079 ~WindowImplWin32();
-<a name="l00080"></a>00080
-<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsContextActive();
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">private</span> :
-<a name="l00090"></a>00090
-<a name="l00095"></a>00095 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessEvents();
-<a name="l00096"></a>00096
-<a name="l00101"></a>00101 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Display();
-<a name="l00102"></a>00102
-<a name="l00107"></a>00107 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetActive(<span class="keywordtype">bool</span> Active = <span class="keyword">true</span>) <span class="keyword">const</span>;
-<a name="l00108"></a>00108
-<a name="l00113"></a>00113 <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseVerticalSync(<span class="keywordtype">bool</span> Enabled);
-<a name="l00114"></a>00114
-<a name="l00119"></a>00119 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ShowMouseCursor(<span class="keywordtype">bool</span> Show);
-<a name="l00120"></a>00120
-<a name="l00125"></a>00125 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top);
-<a name="l00126"></a>00126
-<a name="l00131"></a>00131 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top);
-<a name="l00132"></a>00132
-<a name="l00137"></a>00137 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00138"></a>00138
-<a name="l00143"></a>00143 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Show(<span class="keywordtype">bool</span> State);
-<a name="l00144"></a>00144
-<a name="l00149"></a>00149 <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled);
-<a name="l00150"></a>00150
-<a name="l00155"></a>00155 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels);
-<a name="l00156"></a>00156
-<a name="l00161"></a>00161 <span class="keywordtype">void</span> RegisterWindowClass();
-<a name="l00162"></a>00162
-<a name="l00169"></a>00169 <span class="keywordtype">void</span> SwitchToFullscreen(<span class="keyword">const</span> VideoMode&amp; Mode);
-<a name="l00170"></a>00170
-<a name="l00178"></a>00178 <span class="keywordtype">void</span> CreateContext(<span class="keyword">const</span> VideoMode&amp; Mode, WindowSettings&amp; Params);
-<a name="l00179"></a>00179
-<a name="l00184"></a>00184 <span class="keywordtype">void</span> Cleanup();
-<a name="l00185"></a>00185
-<a name="l00194"></a>00194 <span class="keywordtype">void</span> ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam);
-<a name="l00195"></a>00195
-<a name="l00205"></a>00205 <span class="keyword">static</span> <a class="code" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> VirtualKeyCodeToSF(WPARAM VirtualKey, LPARAM Flags);
-<a name="l00206"></a>00206
-<a name="l00215"></a>00215 <span class="keyword">static</span> <span class="keywordtype">bool</span> HasUnicodeSupport();
-<a name="l00216"></a>00216
-<a name="l00228"></a>00228 <span class="keyword">static</span> LRESULT CALLBACK GlobalOnEvent(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam);
-<a name="l00229"></a>00229
-<a name="l00231"></a>00231 <span class="comment">// Static member data</span>
-<a name="l00233"></a>00233 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ourWindowCount;
-<a name="l00234"></a>00234 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ourClassNameA;
-<a name="l00235"></a>00235 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* ourClassNameW;
-<a name="l00236"></a>00236 <span class="keyword">static</span> WindowImplWin32* ourFullscreenWindow;
-<a name="l00237"></a>00237
-<a name="l00239"></a>00239 <span class="comment">// Member data</span>
-<a name="l00241"></a>00241 <span class="comment"></span> HWND myHandle;
-<a name="l00242"></a>00242 <span class="keywordtype">long</span> myCallback;
-<a name="l00243"></a>00243 HCURSOR myCursor;
-<a name="l00244"></a>00244 HICON myIcon;
-<a name="l00245"></a>00245 <span class="keywordtype">bool</span> myKeyRepeatEnabled;
-<a name="l00246"></a>00246 <span class="keywordtype">bool</span> myIsCursorIn;
-<a name="l00247"></a>00247 HDC myDeviceContext;
-<a name="l00248"></a>00248 HGLRC myGLContext;
-<a name="l00249"></a>00249 };
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 } <span class="comment">// namespace priv</span>
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 } <span class="comment">// namespace sf</span>
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <span class="preprocessor">#endif // SFML_WINDOWIMPLWIN32_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImplXXX_8cpp-source.htm b/doc/html/WindowImplXXX_8cpp-source.htm
deleted file mode 100755
index 6c9beff..0000000
--- a/doc/html/WindowImplXXX_8cpp-source.htm
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImplXXX.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/XXX/WindowImplXXX.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/WindowStyle.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;GL/gl.h&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>priv
-<a name="l00036"></a>00036 {
-<a name="l00041"></a>00041 WindowImplXXX::WindowImplXXX()
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="comment">// Create a dummy window (with the fewest attributes -- it's just to have a valid support for an OpenGL context)</span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="comment">// Initialize myWidth and myHeight members from base class with the window size</span>
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="comment">// Create an OpenGL context in this window and DO NOT make it active</span>
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00054"></a>00054 WindowImplXXX::WindowImplXXX(WindowHandle Handle, WindowSettings&amp; Params)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="comment">// Make sure we'll be able to catch all the events of the given window</span>
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="comment">// Initialize myWidth and myHeight members from base class with the window size</span>
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="comment">// Create an OpenGL context in this window and make it active</span>
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063
-<a name="l00067"></a>00067 WindowImplXXX::WindowImplXXX(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params) :
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="comment">// Create a new window with given size, title and style</span>
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="comment">// Initialize myWidth and myHeight members from base class with the window size</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="comment">// Create an OpenGL context in this window and make it active</span>
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076
-<a name="l00080"></a>00080 WindowImplXXX::~WindowImplXXX()
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="comment">// Destroy the OpenGL context, the window and every resource allocated by this class</span>
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> WindowImplXXX::IsContextActive()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">// Should return whether xxxGetCurrentContext() is NULL or not;</span>
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00098"></a>00098 <span class="keywordtype">void</span> WindowImplXXX::Display()
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="comment">// Swap OpenGL buffers (should be a call to xxxSwapBuffers)</span>
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> WindowImplXXX::ProcessEvents()
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 <span class="comment">// Process every event for this window</span>
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">// Generate a sf::Event and call SendEvent(Evt) for each event</span>
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114
-<a name="l00118"></a>00118 <span class="keywordtype">void</span> WindowImplXXX::SetActive(<span class="keywordtype">bool</span> Active)<span class="keyword"> const</span>
-<a name="l00119"></a>00119 <span class="keyword"></span>{
-<a name="l00120"></a>00120 <span class="comment">// Bind / unbind OpenGL context (should be a call to xxxMakeCurrent)</span>
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123
-<a name="l00127"></a>00127 <span class="keywordtype">void</span> WindowImplXXX::UseVerticalSync(<span class="keywordtype">bool</span> Enabled)
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="comment">// Activate / deactivate vertical synchronization</span>
-<a name="l00130"></a>00130 <span class="comment">// usually using an OpenGL extension (should be a call to xxxSwapInterval)</span>
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133
-<a name="l00137"></a>00137 <span class="keywordtype">void</span> WindowImplXXX::ShowMouseCursor(<span class="keywordtype">bool</span> Show)
-<a name="l00138"></a>00138 {
-<a name="l00139"></a>00139 <span class="comment">// Show or hide the system cursor in this window</span>
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142
-<a name="l00146"></a>00146 <span class="keywordtype">void</span> WindowImplXXX::SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="comment">// Change the cursor position (Left and Top are relative to this window)</span>
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151
-<a name="l00155"></a>00155 <span class="keywordtype">void</span> WindowImplXXX::SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="comment">// Change the window position</span>
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160
-<a name="l00164"></a>00164 <span class="keywordtype">void</span> WindowImplWin32::SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 <span class="comment">// Change the window size</span>
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169
-<a name="l00173"></a>00173 <span class="keywordtype">void</span> WindowImplXXX::Show(<span class="keywordtype">bool</span> State)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="comment">// Show or hide the window</span>
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177
-<a name="l00181"></a>00181 <span class="keywordtype">void</span> WindowImplXXX::EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled)
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 <span class="comment">// Enable or disable automatic key-repeat for keydown events</span>
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186
-<a name="l00190"></a>00190 <span class="keywordtype">void</span> WindowImplXXX::SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 <span class="comment">// Change all the necessary icons of the window (titlebar, task bar, ...) with the</span>
-<a name="l00193"></a>00193 <span class="comment">// provided array of 32 bits RGBA pixels</span>
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="comment">/*===========================================================</span>
-<a name="l00198"></a>00198 <span class="comment"> STRATEGY FOR OPENGL CONTEXT CREATION</span>
-<a name="l00199"></a>00199 <span class="comment"></span>
-<a name="l00200"></a>00200 <span class="comment">- If the requested level of anti-aliasing is not supported and is greater than 2, try with 2</span>
-<a name="l00201"></a>00201 <span class="comment"> --&gt; if level 2 fails, disable anti-aliasing</span>
-<a name="l00202"></a>00202 <span class="comment"> --&gt; it's important not to generate an error if anti-aliasing is not supported</span>
-<a name="l00203"></a>00203 <span class="comment"></span>
-<a name="l00204"></a>00204 <span class="comment">- Use a matching pixel mode, or the best of all available pixel modes if no perfect match ;</span>
-<a name="l00205"></a>00205 <span class="comment"> You should use the function EvaluateConfig to get a score for a given configuration</span>
-<a name="l00206"></a>00206 <span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment">- Don't forget to fill Params (see constructors) back with the actual parameters we got from the chosen pixel format</span>
-<a name="l00208"></a>00208 <span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment">- IMPORTANT : all OpenGL contexts must be shared (usually a call to xxxShareLists)</span>
-<a name="l00210"></a>00210 <span class="comment"></span>
-<a name="l00211"></a>00211 <span class="comment">===========================================================*/</span>
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="comment">/*===========================================================</span>
-<a name="l00215"></a>00215 <span class="comment"> STRATEGY FOR EVENT HANDLING</span>
-<a name="l00216"></a>00216 <span class="comment"></span>
-<a name="l00217"></a>00217 <span class="comment">- Process any event matching with the ones in sf::Event::EventType</span>
-<a name="l00218"></a>00218 <span class="comment"> --&gt; Create a sf::Event, fill the members corresponding to the event type</span>
-<a name="l00219"></a>00219 <span class="comment"> --&gt; No need to handle joystick events, they are handled by WindowImpl::ProcessJoystickEvents</span>
-<a name="l00220"></a>00220 <span class="comment"> --&gt; Event::TextEntered must provide UTF-16 characters</span>
-<a name="l00221"></a>00221 <span class="comment"> (see http://www.unicode.org/Public/PROGRAMS/CVTUTF/ for unicode conversions)</span>
-<a name="l00222"></a>00222 <span class="comment"> --&gt; Don't forget to process any destroy-like event (ie. when the window is destroyed externally)</span>
-<a name="l00223"></a>00223 <span class="comment"></span>
-<a name="l00224"></a>00224 <span class="comment">- Use SendEvent function from base class to propagate the created events</span>
-<a name="l00225"></a>00225 <span class="comment"></span>
-<a name="l00226"></a>00226 <span class="comment">===========================================================*/</span>
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 } <span class="comment">// namespace priv</span>
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImplXXX_8hpp-source.htm b/doc/html/WindowImplXXX_8hpp-source.htm
deleted file mode 100755
index d9102ec..0000000
--- a/doc/html/WindowImplXXX_8hpp-source.htm
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImplXXX.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWIMPLXXX_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWIMPLXXX_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>sf
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>priv
-<a name="l00039"></a>00039 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>WindowImplXXX : <span class="keyword">public</span> WindowImpl
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span> :
-<a name="l00046"></a>00046
-<a name="l00052"></a>00052 WindowImplXXX();
-<a name="l00053"></a>00053
-<a name="l00061"></a>00061 WindowImplXXX(WindowHandle Handle, WindowSettings&amp; Params);
-<a name="l00062"></a>00062
-<a name="l00072"></a>00072 WindowImplXXX(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params);
-<a name="l00073"></a>00073
-<a name="l00078"></a>00078 ~WindowImplXXX();
-<a name="l00079"></a>00079
-<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsContextActive();
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keyword">private</span> :
-<a name="l00089"></a>00089
-<a name="l00094"></a>00094 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Display();
-<a name="l00095"></a>00095
-<a name="l00100"></a>00100 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessEvents();
-<a name="l00101"></a>00101
-<a name="l00106"></a>00106 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetActive(<span class="keywordtype">bool</span> Active = <span class="keyword">true</span>) <span class="keyword">const</span>;
-<a name="l00107"></a>00107
-<a name="l00112"></a>00112 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsActive() <span class="keyword">const</span>;
-<a name="l00113"></a>00113
-<a name="l00118"></a>00118 <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseVerticalSync(<span class="keywordtype">bool</span> Enabled);
-<a name="l00119"></a>00119
-<a name="l00124"></a>00124 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ShowMouseCursor(<span class="keywordtype">bool</span> Show);
-<a name="l00125"></a>00125
-<a name="l00130"></a>00130 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top);
-<a name="l00131"></a>00131
-<a name="l00136"></a>00136 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top);
-<a name="l00137"></a>00137
-<a name="l00142"></a>00142 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00143"></a>00143
-<a name="l00148"></a>00148 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Show(<span class="keywordtype">bool</span> State);
-<a name="l00149"></a>00149
-<a name="l00154"></a>00154 <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled);
-<a name="l00155"></a>00155
-<a name="l00160"></a>00160 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels);
-<a name="l00161"></a>00161 };
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 } <span class="comment">// namespace priv</span>
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 } <span class="comment">// namespace sf</span>
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="preprocessor">#endif // SFML_WINDOWIMPLXXX_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImpl_8cpp-source.htm b/doc/html/WindowImpl_8cpp-source.htm
deleted file mode 100755
index 312187c..0000000
--- a/doc/html/WindowImpl_8cpp-source.htm
+++ /dev/null
@@ -1,246 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImpl.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Window/WindowListener.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;cmath&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="preprocessor">#if defined(SFML_SYSTEM_WINDOWS)</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;SFML/Window/Win32/WindowImplWin32.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="keyword">typedef</span> sf::priv::WindowImplWin32 WindowImplType;
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="preprocessor">#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span>
-<a name="l00041"></a>00041 <span class="preprocessor"> #include &lt;SFML/Window/Linux/WindowImplX11.hpp&gt;</span>
-<a name="l00042"></a>00042 <span class="keyword">typedef</span> sf::priv::WindowImplX11 WindowImplType;
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="preprocessor">#elif defined(SFML_SYSTEM_MACOS)</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span>
-<a name="l00046"></a>00046 <span class="preprocessor"> #include &lt;SFML/Window/Cocoa/WindowImplCocoa.hpp&gt;</span>
-<a name="l00047"></a>00047 <span class="keyword">typedef</span> sf::priv::WindowImplCocoa WindowImplType;
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="preprocessor">#endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keyword">namespace </span>sf
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="keyword">namespace </span>priv
-<a name="l00055"></a>00055 {
-<a name="l00059"></a>00059 WindowImpl* WindowImpl::New()
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="keywordflow">return</span> <span class="keyword">new</span> WindowImplType();
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064
-<a name="l00068"></a>00068 WindowImpl* WindowImpl::New(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> <span class="keyword">new</span> WindowImplType(Mode, Title, WindowStyle, Params);
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00077"></a>00077 WindowImpl* WindowImpl::New(WindowHandle Handle, WindowSettings&amp; Params)
-<a name="l00078"></a>00078 {
-<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">new</span> WindowImplType(Handle, Params);
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082
-<a name="l00086"></a>00086 WindowImpl::WindowImpl() :
-<a name="l00087"></a>00087 myWidth (0),
-<a name="l00088"></a>00088 myHeight (0),
-<a name="l00089"></a>00089 myJoyThreshold(0.1f)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00097"></a>00097 WindowImpl::~WindowImpl()
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="comment">// Nothing to do</span>
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102
-<a name="l00106"></a>00106 <span class="keywordtype">void</span> WindowImpl::AddListener(WindowListener* Listener)
-<a name="l00107"></a>00107 {
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (Listener)
-<a name="l00109"></a>00109 myListeners.insert(Listener);
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112
-<a name="l00116"></a>00116 <span class="keywordtype">void</span> WindowImpl::RemoveListener(WindowListener* Listener)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 myListeners.erase(Listener);
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121
-<a name="l00125"></a>00125 <span class="keywordtype">void</span> WindowImpl::Initialize()
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="comment">// Initialize the joysticks</span>
-<a name="l00128"></a>00128 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>; ++i)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 myJoysticks[i].Initialize(i);
-<a name="l00131"></a>00131 myJoyStates[i] = myJoysticks[i].UpdateState();
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135
-<a name="l00139"></a>00139 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowImpl::GetWidth()<span class="keyword"> const</span>
-<a name="l00140"></a>00140 <span class="keyword"></span>{
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> myWidth;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144
-<a name="l00148"></a>00148 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> WindowImpl::GetHeight()<span class="keyword"> const</span>
-<a name="l00149"></a>00149 <span class="keyword"></span>{
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> myHeight;
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153
-<a name="l00158"></a>00158 <span class="keywordtype">void</span> WindowImpl::SetJoystickThreshold(<span class="keywordtype">float</span> Threshold)
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 myJoyThreshold = Threshold;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163
-<a name="l00167"></a>00167 <span class="keywordtype">void</span> WindowImpl::DoEvents()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="comment">// Read the joysticks state and generate the appropriate events</span>
-<a name="l00170"></a>00170 ProcessJoystickEvents();
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="comment">// Let the derived class process other events</span>
-<a name="l00173"></a>00173 ProcessEvents();
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00180"></a>00180 <span class="keywordtype">bool</span> WindowImpl::IsContextActive()
-<a name="l00181"></a>00181 {
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> WindowImplType::IsContextActive();
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185
-<a name="l00189"></a>00189 <span class="keywordtype">void</span> WindowImpl::SendEvent(<span class="keyword">const</span> Event&amp; EventToSend)
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="keywordflow">for</span> (std::set&lt;WindowListener*&gt;::iterator i = myListeners.begin(); i != myListeners.end(); ++i)
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 (*i)-&gt;OnEvent(EventToSend);
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197
-<a name="l00203"></a>00203 <span class="keywordtype">int</span> WindowImpl::EvaluateConfig(<span class="keyword">const</span> VideoMode&amp; Mode, <span class="keyword">const</span> WindowSettings&amp; Settings, <span class="keywordtype">int</span> ColorBits, <span class="keywordtype">int</span> DepthBits, <span class="keywordtype">int</span> StencilBits, <span class="keywordtype">int</span> Antialiasing)
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 <span class="keywordflow">return</span> abs(static_cast&lt;int&gt;(Mode.BitsPerPixel - ColorBits)) +
-<a name="l00206"></a>00206 abs(static_cast&lt;int&gt;(Settings.DepthBits - DepthBits)) +
-<a name="l00207"></a>00207 abs(static_cast&lt;int&gt;(Settings.StencilBits - StencilBits)) +
-<a name="l00208"></a>00208 abs(static_cast&lt;int&gt;(Settings.AntialiasingLevel - Antialiasing));
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211
-<a name="l00215"></a>00215 <span class="keywordtype">void</span> WindowImpl::ProcessJoystickEvents()
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; Joy::Count; ++i)
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="comment">// Copy the previous state of the joystick and get the new one</span>
-<a name="l00220"></a>00220 JoystickState PreviousState = myJoyStates[i];
-<a name="l00221"></a>00221 myJoyStates[i] = myJoysticks[i].UpdateState();
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 <span class="comment">// Axis</span>
-<a name="l00224"></a>00224 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; Joy::AxisCount; ++j)
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 Joy::Axis Axis = <span class="keyword">static_cast&lt;</span>Joy::Axis<span class="keyword">&gt;</span>(j);
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (myJoysticks[i].HasAxis(Axis))
-<a name="l00228"></a>00228 {
-<a name="l00229"></a>00229 <span class="keywordtype">float</span> PrevPos = PreviousState.Axis[j];
-<a name="l00230"></a>00230 <span class="keywordtype">float</span> CurrPos = myJoyStates[i].Axis[j];
-<a name="l00231"></a>00231 <span class="keywordflow">if</span> (fabs(CurrPos - PrevPos) &gt;= myJoyThreshold)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 Event Event;
-<a name="l00234"></a>00234 Event.Type = Event::JoyMoved;
-<a name="l00235"></a>00235 Event.JoyMove.JoystickId = i;
-<a name="l00236"></a>00236 Event.JoyMove.Axis = Axis;
-<a name="l00237"></a>00237 Event.JoyMove.Position = CurrPos;
-<a name="l00238"></a>00238 SendEvent(Event);
-<a name="l00239"></a>00239 }
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241 }
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 <span class="comment">// Buttons</span>
-<a name="l00244"></a>00244 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; myJoysticks[i].GetButtonsCount(); ++j)
-<a name="l00245"></a>00245 {
-<a name="l00246"></a>00246 <span class="keywordtype">bool</span> PrevPressed = PreviousState.Buttons[j];
-<a name="l00247"></a>00247 <span class="keywordtype">bool</span> CurrPressed = myJoyStates[i].Buttons[j];
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> ((!PrevPressed &amp;&amp; CurrPressed) || (PrevPressed &amp;&amp; !CurrPressed))
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 Event Event;
-<a name="l00252"></a>00252 Event.Type = CurrPressed ? Event::JoyButtonPressed : Event::JoyButtonReleased;
-<a name="l00253"></a>00253 Event.JoyButton.JoystickId = i;
-<a name="l00254"></a>00254 Event.JoyButton.Button = j;
-<a name="l00255"></a>00255 SendEvent(Event);
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 } <span class="comment">// namespace priv</span>
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowImpl_8hpp-source.htm b/doc/html/WindowImpl_8hpp-source.htm
deleted file mode 100755
index b4fc02a..0000000
--- a/doc/html/WindowImpl_8hpp-source.htm
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowImpl.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWIMPL_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWIMPL_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Window/Joystick.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Window/WindowHandle.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Window/WindowSettings.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;set&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="keyword">namespace </span>sf
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">class </span>Event;
-<a name="l00044"></a>00044 <span class="keyword">class </span>WindowListener;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>priv
-<a name="l00047"></a>00047 {
-<a name="l00051"></a>00051 <span class="keyword">class </span>WindowImpl : NonCopyable
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="keyword">public</span> :
-<a name="l00054"></a>00054
-<a name="l00061"></a>00061 <span class="keyword">static</span> WindowImpl* New();
-<a name="l00062"></a>00062
-<a name="l00074"></a>00074 <span class="keyword">static</span> WindowImpl* New(VideoMode Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, WindowSettings&amp; Params);
-<a name="l00075"></a>00075
-<a name="l00085"></a>00085 <span class="keyword">static</span> WindowImpl* New(WindowHandle Handle, WindowSettings&amp; Params);
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keyword">public</span> :
-<a name="l00088"></a>00088
-<a name="l00093"></a>00093 <span class="keyword">virtual</span> ~WindowImpl();
-<a name="l00094"></a>00094
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> AddListener(WindowListener* Listener);
-<a name="l00102"></a>00102
-<a name="l00109"></a>00109 <span class="keywordtype">void</span> RemoveListener(WindowListener* Listener);
-<a name="l00110"></a>00110
-<a name="l00115"></a>00115 <span class="keywordtype">void</span> Initialize();
-<a name="l00116"></a>00116
-<a name="l00123"></a>00123 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetWidth() <span class="keyword">const</span>;
-<a name="l00124"></a>00124
-<a name="l00131"></a>00131 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetHeight() <span class="keyword">const</span>;
-<a name="l00132"></a>00132
-<a name="l00140"></a>00140 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetActive(<span class="keywordtype">bool</span> Active = <span class="keyword">true</span>) <span class="keyword">const</span> = 0;
-<a name="l00141"></a>00141
-<a name="l00149"></a>00149 <span class="keywordtype">void</span> SetJoystickThreshold(<span class="keywordtype">float</span> Threshold);
-<a name="l00150"></a>00150
-<a name="l00155"></a>00155 <span class="keywordtype">void</span> DoEvents();
-<a name="l00156"></a>00156
-<a name="l00163"></a>00163 <span class="keyword">static</span> <span class="keywordtype">bool</span> IsContextActive();
-<a name="l00164"></a>00164
-<a name="l00169"></a>00169 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Display() = 0;
-<a name="l00170"></a>00170
-<a name="l00177"></a>00177 <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseVerticalSync(<span class="keywordtype">bool</span> Enabled) = 0;
-<a name="l00178"></a>00178
-<a name="l00185"></a>00185 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ShowMouseCursor(<span class="keywordtype">bool</span> Show) = 0;
-<a name="l00186"></a>00186
-<a name="l00194"></a>00194 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top) = 0;
-<a name="l00195"></a>00195
-<a name="l00203"></a>00203 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top) = 0;
-<a name="l00204"></a>00204
-<a name="l00212"></a>00212 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height) = 0;
-<a name="l00213"></a>00213
-<a name="l00220"></a>00220 <span class="keyword">virtual</span> <span class="keywordtype">void</span> Show(<span class="keywordtype">bool</span> State) = 0;
-<a name="l00221"></a>00221
-<a name="l00228"></a>00228 <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled) = 0;
-<a name="l00229"></a>00229
-<a name="l00238"></a>00238 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels) = 0;
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="keyword">protected</span> :
-<a name="l00241"></a>00241
-<a name="l00246"></a>00246 WindowImpl();
-<a name="l00247"></a>00247
-<a name="l00254"></a>00254 <span class="keywordtype">void</span> SendEvent(<span class="keyword">const</span> Event&amp; EventToSend);
-<a name="l00255"></a>00255
-<a name="l00271"></a>00271 <span class="keyword">static</span> <span class="keywordtype">int</span> EvaluateConfig(<span class="keyword">const</span> VideoMode&amp; Mode, <span class="keyword">const</span> WindowSettings&amp; Settings, <span class="keywordtype">int</span> ColorBits, <span class="keywordtype">int</span> DepthBits, <span class="keywordtype">int</span> StencilBits, <span class="keywordtype">int</span> Antialiasing);
-<a name="l00272"></a>00272
-<a name="l00274"></a>00274 <span class="comment">// Member data</span>
-<a name="l00276"></a>00276 <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myWidth;
-<a name="l00277"></a>00277 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myHeight;
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="keyword">private</span> :
-<a name="l00280"></a>00280
-<a name="l00285"></a>00285 <span class="keywordtype">void</span> ProcessJoystickEvents();
-<a name="l00286"></a>00286
-<a name="l00291"></a>00291 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessEvents() = 0;
-<a name="l00292"></a>00292
-<a name="l00294"></a>00294 <span class="comment">// Member data</span>
-<a name="l00296"></a>00296 <span class="comment"></span> std::set&lt;WindowListener*&gt; myListeners;
-<a name="l00297"></a>00297 Joystick myJoysticks[<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>];
-<a name="l00298"></a>00298 JoystickState myJoyStates[<a class="code" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" title="Total number of supported joysticks.">Joy::Count</a>];
-<a name="l00299"></a>00299 <span class="keywordtype">float</span> myJoyThreshold;
-<a name="l00300"></a>00300 };
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 } <span class="comment">// namespace priv</span>
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 } <span class="comment">// namespace sf</span>
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 <span class="preprocessor">#endif // SFML_WINDOWIMPL_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowListener_8hpp-source.htm b/doc/html/WindowListener_8hpp-source.htm
deleted file mode 100755
index 94725dd..0000000
--- a/doc/html/WindowListener_8hpp-source.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowListener.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWLISTENER_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWLISTENER_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Config.hpp&gt;</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>sf
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036 <span class="keyword">class </span>Event;
-<a name="l00037"></a>00037
-<a name="l00042"></a><a class="code" href="classsf_1_1WindowListener.htm">00042</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1WindowListener.htm" title="Base class for classes that want to receive events from a window (for internal use...">WindowListener</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">public</span> :
-<a name="l00045"></a>00045
-<a name="l00052"></a>00052 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEvent(<span class="keyword">const</span> <a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived) = 0;
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">protected</span> :
-<a name="l00055"></a>00055
-<a name="l00060"></a><a class="code" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">00060</a> <span class="keyword">virtual</span> <a class="code" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0" title="Destructor.">~WindowListener</a>() {}
-<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 } <span class="comment">// namespace sf</span>
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="preprocessor">#endif // SFML_WINDOWLISTENER_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowSettings_8hpp-source.htm b/doc/html/WindowSettings_8hpp-source.htm
deleted file mode 100755
index def8856..0000000
--- a/doc/html/WindowSettings_8hpp-source.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowSettings.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWSETTINGS_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWSETTINGS_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>sf
-<a name="l00030"></a>00030 {
-<a name="l00034"></a><a class="code" href="structsf_1_1WindowSettings.htm">00034</a> <span class="keyword">struct </span><a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>
-<a name="l00035"></a>00035 {
-<a name="l00044"></a><a class="code" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb">00044</a> <span class="keyword">explicit</span> <a class="code" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb" title="Default constructor.">WindowSettings</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Depth = 24, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Stencil = 8, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Antialiasing = 0) :
-<a name="l00045"></a>00045 <a class="code" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6" title="Bits of the depth buffer.">DepthBits</a> (Depth),
-<a name="l00046"></a>00046 <a class="code" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08" title="Bits of the stencil buffer.">StencilBits</a> (Stencil),
-<a name="l00047"></a>00047 <a class="code" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f" title="Level of antialiasing.">AntialiasingLevel</a>(Antialiasing)
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00052"></a>00052 <span class="comment">// Member data</span>
-<a name="l00054"></a><a class="code" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">00054</a> <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6" title="Bits of the depth buffer.">DepthBits</a>;
-<a name="l00055"></a><a class="code" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">00055</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08" title="Bits of the stencil buffer.">StencilBits</a>;
-<a name="l00056"></a><a class="code" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">00056</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f" title="Level of antialiasing.">AntialiasingLevel</a>;
-<a name="l00057"></a>00057 };
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 } <span class="comment">// namespace sf</span>
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="preprocessor">#endif // SFML_WINDOWSETTINGS_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/WindowStyle_8hpp-source.htm b/doc/html/WindowStyle_8hpp-source.htm
deleted file mode 100755
index 762e62f..0000000
--- a/doc/html/WindowStyle_8hpp-source.htm
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>WindowStyle.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOWSTYLE_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOWSTYLE_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>sf
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031
-<a name="l00035"></a><a class="code" href="namespacesf_1_1Style.htm">00035</a> <span class="keyword">namespace </span>Style
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">enum</span>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a><a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422">00039</a> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422" title="No border / title bar (this flag and all others are mutually exclusive).">None</a> = 0,
-<a name="l00040"></a><a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6">00040</a> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6" title="Title bar + fixed border.">Titlebar</a> = 1 &lt;&lt; 0,
-<a name="l00041"></a><a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f">00041</a> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Resize</a> = 1 &lt;&lt; 1,
-<a name="l00042"></a><a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493">00042</a> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Close</a> = 1 &lt;&lt; 2,
-<a name="l00043"></a><a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d">00043</a> <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d" title="Fullscreen mode (this flag and all others are mutually exclusive).">Fullscreen</a> = 1 &lt;&lt; 3
-<a name="l00044"></a>00044 };
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 } <span class="comment">// namespace sf</span>
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="preprocessor">#endif // SFML_WINDOWSTYLE_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Window_2Window_8hpp-source.htm b/doc/html/Window_2Window_8hpp-source.htm
deleted file mode 100755
index cf73634..0000000
--- a/doc/html/Window_2Window_8hpp-source.htm
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Window.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_WINDOW_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_WINDOW_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/Window/Input.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Window/WindowHandle.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Window/WindowListener.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Window/WindowSettings.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/Window/WindowStyle.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/System/Clock.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/System/NonCopyable.hpp&gt;</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;queue&gt;</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keyword">namespace </span>sf
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>priv
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">class </span>WindowImpl;
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00055"></a><a class="code" href="classsf_1_1Window.htm">00055</a> <span class="keyword">class </span>SFML_API <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> : <span class="keyword">public</span> <a class="code" href="classsf_1_1WindowListener.htm" title="Base class for classes that want to receive events from a window (for internal use...">WindowListener</a>, <a class="code" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a>
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keyword">public</span> :
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>();
-<a name="l00064"></a>00064
-<a name="l00074"></a>00074 <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle = <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Style::Resize</a> | <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Style::Close</a>, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00075"></a>00075
-<a name="l00083"></a>00083 <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00084"></a>00084
-<a name="l00089"></a>00089 <span class="keyword">virtual</span> ~<a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a>();
-<a name="l00090"></a>00090
-<a name="l00100"></a>00100 <span class="keywordtype">void</span> Create(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle = <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Style::Resize</a> | <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Style::Close</a>, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00101"></a>00101
-<a name="l00109"></a>00109 <span class="keywordtype">void</span> Create(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params = <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>());
-<a name="l00110"></a>00110
-<a name="l00117"></a>00117 <span class="keywordtype">void</span> Close();
-<a name="l00118"></a>00118
-<a name="l00127"></a>00127 <span class="keywordtype">bool</span> IsOpened() <span class="keyword">const</span>;
-<a name="l00128"></a>00128
-<a name="l00135"></a>00135 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetWidth() <span class="keyword">const</span>;
-<a name="l00136"></a>00136
-<a name="l00143"></a>00143 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetHeight() <span class="keyword">const</span>;
-<a name="l00144"></a>00144
-<a name="l00151"></a>00151 <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; GetSettings() <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00161"></a>00161 <span class="keywordtype">bool</span> GetEvent(<a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived);
-<a name="l00162"></a>00162
-<a name="l00169"></a>00169 <span class="keywordtype">void</span> UseVerticalSync(<span class="keywordtype">bool</span> Enabled);
-<a name="l00170"></a>00170
-<a name="l00177"></a>00177 <span class="keywordtype">void</span> ShowMouseCursor(<span class="keywordtype">bool</span> Show);
-<a name="l00178"></a>00178
-<a name="l00186"></a>00186 <span class="keywordtype">void</span> SetCursorPosition(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top);
-<a name="l00187"></a>00187
-<a name="l00196"></a>00196 <span class="keywordtype">void</span> SetPosition(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top);
-<a name="l00197"></a>00197
-<a name="l00205"></a>00205 <span class="keywordtype">void</span> SetSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height);
-<a name="l00206"></a>00206
-<a name="l00213"></a>00213 <span class="keywordtype">void</span> Show(<span class="keywordtype">bool</span> State);
-<a name="l00214"></a>00214
-<a name="l00222"></a>00222 <span class="keywordtype">void</span> EnableKeyRepeat(<span class="keywordtype">bool</span> Enabled);
-<a name="l00223"></a>00223
-<a name="l00232"></a>00232 <span class="keywordtype">void</span> SetIcon(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels);
-<a name="l00233"></a>00233
-<a name="l00243"></a>00243 <span class="keywordtype">bool</span> SetActive(<span class="keywordtype">bool</span> Active = <span class="keyword">true</span>) <span class="keyword">const</span>;
-<a name="l00244"></a>00244
-<a name="l00249"></a>00249 <span class="keywordtype">void</span> Display();
-<a name="l00250"></a>00250
-<a name="l00257"></a>00257 <span class="keyword">const</span> <a class="code" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a>&amp; GetInput() <span class="keyword">const</span>;
-<a name="l00258"></a>00258
-<a name="l00265"></a>00265 <span class="keywordtype">void</span> SetFramerateLimit(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Limit);
-<a name="l00266"></a>00266
-<a name="l00273"></a>00273 <span class="keywordtype">float</span> GetFrameTime() <span class="keyword">const</span>;
-<a name="l00274"></a>00274
-<a name="l00282"></a>00282 <span class="keywordtype">void</span> SetJoystickThreshold(<span class="keywordtype">float</span> Threshold);
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 <span class="keyword">private</span> :
-<a name="l00285"></a>00285
-<a name="l00290"></a>00290 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCreate();
-<a name="l00291"></a>00291
-<a name="l00298"></a>00298 <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEvent(<span class="keyword">const</span> <a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived);
-<a name="l00299"></a>00299
-<a name="l00306"></a>00306 <span class="keywordtype">void</span> Initialize(priv::WindowImpl* Impl);
-<a name="l00307"></a>00307
-<a name="l00309"></a>00309 <span class="comment">// Member data</span>
-<a name="l00311"></a>00311 <span class="comment"></span> priv::WindowImpl* myWindow;
-<a name="l00312"></a>00312 std::queue&lt;Event&gt; myEvents;
-<a name="l00313"></a>00313 <a class="code" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a> myInput;
-<a name="l00314"></a>00314 <a class="code" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a> myClock;
-<a name="l00315"></a>00315 <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a> mySettings;
-<a name="l00316"></a>00316 <span class="keywordtype">float</span> myLastFrameTime;
-<a name="l00317"></a>00317 <span class="keywordtype">bool</span> myIsExternal;
-<a name="l00318"></a>00318 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> myFramerateLimit;
-<a name="l00319"></a>00319 <span class="keywordtype">int</span> mySetCursorPosX;
-<a name="l00320"></a>00320 <span class="keywordtype">int</span> mySetCursorPosY;
-<a name="l00321"></a>00321 };
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 } <span class="comment">// namespace sf</span>
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 <span class="preprocessor">#endif // SFML_WINDOW_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Window_8cpp-source.htm b/doc/html/Window_8cpp-source.htm
deleted file mode 100755
index 8eb6b75..0000000
--- a/doc/html/Window_8cpp-source.htm
+++ /dev/null
@@ -1,410 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Window.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00026"></a>00026 <span class="comment">// Headers</span>
-<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Window/Window.hpp&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Window/Context.hpp&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Window/WindowImpl.hpp&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;SFML/System/Sleep.hpp&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;iostream&gt;</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034
-<a name="l00036"></a>00036 <span class="comment">// Private data</span>
-<a name="l00038"></a>00038 <span class="comment"></span><span class="keyword">namespace</span>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">const</span> <a class="code" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a>* FullscreenWindow = NULL;
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keyword">namespace </span>sf
-<a name="l00045"></a>00045 {
-<a name="l00049"></a><a class="code" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4">00049</a> <a class="code" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4" title="Default constructor.">Window::Window</a>() :
-<a name="l00050"></a>00050 myWindow (NULL),
-<a name="l00051"></a>00051 myLastFrameTime (0.f),
-<a name="l00052"></a>00052 myIsExternal (false),
-<a name="l00053"></a>00053 myFramerateLimit(0),
-<a name="l00054"></a>00054 mySetCursorPosX (0xFFFF),
-<a name="l00055"></a>00055 mySetCursorPosY (0xFFFF)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00064"></a><a class="code" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">00064</a> <a class="code" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4" title="Default constructor.">Window::Window</a>(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params) :
-<a name="l00065"></a>00065 myWindow (NULL),
-<a name="l00066"></a>00066 myLastFrameTime (0.f),
-<a name="l00067"></a>00067 myIsExternal (false),
-<a name="l00068"></a>00068 myFramerateLimit(0),
-<a name="l00069"></a>00069 mySetCursorPosX (0xFFFF),
-<a name="l00070"></a>00070 mySetCursorPosY (0xFFFF)
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Create</a>(Mode, Title, WindowStyle, Params);
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075
-<a name="l00079"></a><a class="code" href="classsf_1_1Window.htm#ef6c45b1d53ed4a884ccb9c609d2456a">00079</a> <a class="code" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4" title="Default constructor.">Window::Window</a>(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params) :
-<a name="l00080"></a>00080 myWindow (NULL),
-<a name="l00081"></a>00081 myLastFrameTime (0.f),
-<a name="l00082"></a>00082 myIsExternal (true),
-<a name="l00083"></a>00083 myFramerateLimit(0),
-<a name="l00084"></a>00084 mySetCursorPosX (0xFFFF),
-<a name="l00085"></a>00085 mySetCursorPosY (0xFFFF)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Create</a>(Handle, Params);
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090
-<a name="l00094"></a><a class="code" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">00094</a> <a class="code" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008" title="Destructor.">Window::~Window</a>()
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="comment">// Close the window</span>
-<a name="l00097"></a>00097 <a class="code" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c" title="Close (destroy) the window.">Close</a>();
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100
-<a name="l00104"></a><a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">00104</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Window::Create</a>(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> Mode, <span class="keyword">const</span> std::string&amp; Title, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> WindowStyle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <span class="comment">// Destroy the previous window implementation</span>
-<a name="l00107"></a>00107 <a class="code" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c" title="Close (destroy) the window.">Close</a>();
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">// Fullscreen style requires some tests</span>
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d" title="Fullscreen mode (this flag and all others are mutually exclusive).">Style::Fullscreen</a>)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="comment">// Make sure there's not already a fullscreen window (only one is allowed)</span>
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (FullscreenWindow)
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 std::cerr &lt;&lt; <span class="stringliteral">"Creating two fullscreen windows is not allowed, switching to windowed mode"</span> &lt;&lt; std::endl;
-<a name="l00116"></a>00116 WindowStyle &amp;= ~Style::Fullscreen;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 <span class="keywordflow">else</span>
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="comment">// Make sure the chosen video mode is compatible</span>
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!Mode.<a class="code" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c" title="Tell whether or not the video mode is supported.">IsValid</a>())
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 std::cerr &lt;&lt; <span class="stringliteral">"The requested video mode is not available, switching to a valid mode"</span> &lt;&lt; std::endl;
-<a name="l00124"></a>00124 Mode = <a class="code" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2" title="Get a valid video mode Index must be in range [0, GetModesCount()[ Modes are sorted...">VideoMode::GetMode</a>(0);
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="comment">// Update the fullscreen window</span>
-<a name="l00128"></a>00128 FullscreenWindow = <span class="keyword">this</span>;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="comment">// Check validity of style</span>
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> ((WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" title="Titlebar + close button.">Style::Close</a>) || (WindowStyle &amp; <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" title="Titlebar + resizable border + maximize button.">Style::Resize</a>))
-<a name="l00134"></a>00134 WindowStyle |= <a class="code" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6" title="Title bar + fixed border.">Style::Titlebar</a>;
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="comment">// Activate the global context</span>
-<a name="l00137"></a>00137 <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">Context::GetGlobal</a>().<a class="code" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7" title="Activate or deactivate the context.">SetActive</a>(<span class="keyword">true</span>);
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 mySettings = Params;
-<a name="l00140"></a>00140 Initialize(priv::WindowImpl::New(Mode, Title, WindowStyle, mySettings));
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143
-<a name="l00147"></a><a class="code" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">00147</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61" title="Create (or recreate) the window.">Window::Create</a>(WindowHandle Handle, <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; Params)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="comment">// Destroy the previous window implementation</span>
-<a name="l00150"></a>00150 <a class="code" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c" title="Close (destroy) the window.">Close</a>();
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="comment">// Activate the global context</span>
-<a name="l00153"></a>00153 <a class="code" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692" title="Get the global context.">Context::GetGlobal</a>().<a class="code" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7" title="Activate or deactivate the context.">SetActive</a>(<span class="keyword">true</span>);
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 mySettings = Params;
-<a name="l00156"></a>00156 Initialize(priv::WindowImpl::New(Handle, mySettings));
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159
-<a name="l00165"></a><a class="code" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">00165</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c" title="Close (destroy) the window.">Window::Close</a>()
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 <span class="comment">// Delete the window implementation</span>
-<a name="l00168"></a>00168 <span class="keyword">delete</span> myWindow;
-<a name="l00169"></a>00169 myWindow = NULL;
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="comment">// Update the fullscreen window</span>
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (<span class="keyword">this</span> == FullscreenWindow)
-<a name="l00173"></a>00173 FullscreenWindow = NULL;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00182"></a><a class="code" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">00182</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d" title="Tell whether or not the window is opened (ie.">Window::IsOpened</a>()<span class="keyword"> const</span>
-<a name="l00183"></a>00183 <span class="keyword"></span>{
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> myWindow != NULL;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187
-<a name="l00191"></a><a class="code" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22">00191</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22" title="Get the width of the rendering region of the window.">Window::GetWidth</a>()<span class="keyword"> const</span>
-<a name="l00192"></a>00192 <span class="keyword"></span>{
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> myWindow ? myWindow-&gt;GetWidth() : 0;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196
-<a name="l00200"></a><a class="code" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947">00200</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947" title="Get the height of the rendering region of the window.">Window::GetHeight</a>()<span class="keyword"> const</span>
-<a name="l00201"></a>00201 <span class="keyword"></span>{
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> myWindow ? myWindow-&gt;GetHeight() : 0;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205
-<a name="l00209"></a><a class="code" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">00209</a> <span class="keyword">const</span> <a class="code" href="structsf_1_1WindowSettings.htm" title="Structure defining the creation settings of windows.">WindowSettings</a>&amp; <a class="code" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f" title="Get the creation settings of the window.">Window::GetSettings</a>()<span class="keyword"> const</span>
-<a name="l00210"></a>00210 <span class="keyword"></span>{
-<a name="l00211"></a>00211 <span class="keywordflow">return</span> mySettings;
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214
-<a name="l00218"></a><a class="code" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">00218</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8" title="Get the event on top of events stack, if any, and pop it.">Window::GetEvent</a>(<a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a>&amp; EventReceived)
-<a name="l00219"></a>00219 {
-<a name="l00220"></a>00220 <span class="comment">// Let the window implementation process incoming events if the events queue is empty</span>
-<a name="l00221"></a>00221 <span class="keywordflow">if</span> (myWindow &amp;&amp; myEvents.empty())
-<a name="l00222"></a>00222 myWindow-&gt;DoEvents();
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="comment">// Pop first event of queue, if not empty</span>
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (!myEvents.empty())
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 EventReceived = myEvents.front();
-<a name="l00228"></a>00228 myEvents.pop();
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236
-<a name="l00240"></a><a class="code" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">00240</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5" title="Enable / disable vertical synchronization.">Window::UseVerticalSync</a>(<span class="keywordtype">bool</span> Enabled)
-<a name="l00241"></a>00241 {
-<a name="l00242"></a>00242 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>())
-<a name="l00243"></a>00243 myWindow-&gt;UseVerticalSync(Enabled);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246
-<a name="l00250"></a><a class="code" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">00250</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0" title="Show or hide the mouse cursor.">Window::ShowMouseCursor</a>(<span class="keywordtype">bool</span> Show)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (myWindow)
-<a name="l00253"></a>00253 myWindow-&gt;ShowMouseCursor(Show);
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256
-<a name="l00260"></a><a class="code" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">00260</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55" title="Change the position of the mouse cursor.">Window::SetCursorPosition</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Left, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Top)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <span class="keywordflow">if</span> (myWindow)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 <span class="comment">// Keep coordinates for later checking (to reject the generated MouseMoved event)</span>
-<a name="l00265"></a>00265 mySetCursorPosX = Left;
-<a name="l00266"></a>00266 mySetCursorPosY = Top;
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 myWindow-&gt;SetCursorPosition(Left, Top);
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272
-<a name="l00276"></a><a class="code" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">00276</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058" title="Change the position of the window on screen.">Window::SetPosition</a>(<span class="keywordtype">int</span> Left, <span class="keywordtype">int</span> Top)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 <span class="keywordflow">if</span> (!myIsExternal)
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 <span class="keywordflow">if</span> (myWindow)
-<a name="l00281"></a>00281 myWindow-&gt;SetPosition(Left, Top);
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283 <span class="keywordflow">else</span>
-<a name="l00284"></a>00284 {
-<a name="l00285"></a>00285 std::cerr &lt;&lt; <span class="stringliteral">"Warning : trying to change the position of an external SFML window, which is not allowed"</span> &lt;&lt; std::endl;
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287 }
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289
-<a name="l00293"></a><a class="code" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">00293</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef" title="Change the size of the rendering region of the window.">Window::SetSize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height)
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (myWindow)
-<a name="l00296"></a>00296 myWindow-&gt;SetSize(Width, Height);
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299
-<a name="l00303"></a><a class="code" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">00303</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de" title="Show or hide the window.">Window::Show</a>(<span class="keywordtype">bool</span> State)
-<a name="l00304"></a>00304 {
-<a name="l00305"></a>00305 <span class="keywordflow">if</span> (!myIsExternal)
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (myWindow)
-<a name="l00308"></a>00308 myWindow-&gt;Show(State);
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312
-<a name="l00317"></a><a class="code" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">00317</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0" title="Enable or disable automatic key-repeat.">Window::EnableKeyRepeat</a>(<span class="keywordtype">bool</span> Enabled)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="keywordflow">if</span> (myWindow)
-<a name="l00320"></a>00320 myWindow-&gt;EnableKeyRepeat(Enabled);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323
-<a name="l00327"></a><a class="code" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">00327</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa" title="Change the window&amp;#39;s icon.">Window::SetIcon</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Height, <span class="keyword">const</span> Uint8* Pixels)
-<a name="l00328"></a>00328 {
-<a name="l00329"></a>00329 <span class="keywordflow">if</span> (myWindow)
-<a name="l00330"></a>00330 myWindow-&gt;SetIcon(Width, Height, Pixels);
-<a name="l00331"></a>00331 }
-<a name="l00332"></a>00332
-<a name="l00333"></a>00333
-<a name="l00338"></a><a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">00338</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">Window::SetActive</a>(<span class="keywordtype">bool</span> Active)<span class="keyword"> const</span>
-<a name="l00339"></a>00339 <span class="keyword"></span>{
-<a name="l00340"></a>00340 <span class="keywordflow">if</span> (myWindow)
-<a name="l00341"></a>00341 {
-<a name="l00342"></a>00342 myWindow-&gt;SetActive(Active);
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00347"></a>00347 }
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349
-<a name="l00353"></a><a class="code" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">00353</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435" title="Display the window on screen.">Window::Display</a>()
-<a name="l00354"></a>00354 {
-<a name="l00355"></a>00355 <span class="comment">// Limit the framerate if needed</span>
-<a name="l00356"></a>00356 <span class="keywordflow">if</span> (myFramerateLimit &gt; 0)
-<a name="l00357"></a>00357 {
-<a name="l00358"></a>00358 <span class="keywordtype">float</span> RemainingTime = 1.f / myFramerateLimit - myClock.<a class="code" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995" title="Get the time elapsed since last reset.">GetElapsedTime</a>();
-<a name="l00359"></a>00359 <span class="keywordflow">if</span> (RemainingTime &gt; 0)
-<a name="l00360"></a>00360 Sleep(RemainingTime);
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362
-<a name="l00363"></a>00363 <span class="comment">// Measure the time elapsed since last frame</span>
-<a name="l00364"></a>00364 myLastFrameTime = myClock.<a class="code" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995" title="Get the time elapsed since last reset.">GetElapsedTime</a>();
-<a name="l00365"></a>00365 myClock.<a class="code" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec" title="Restart the timer.">Reset</a>();
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <span class="comment">// Display the backbuffer on screen</span>
-<a name="l00368"></a>00368 <span class="keywordflow">if</span> (<a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>())
-<a name="l00369"></a>00369 myWindow-&gt;Display();
-<a name="l00370"></a>00370 }
-<a name="l00371"></a>00371
-<a name="l00372"></a>00372
-<a name="l00376"></a><a class="code" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">00376</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a>&amp; <a class="code" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919" title="Get the input manager of the window.">Window::GetInput</a>()<span class="keyword"> const</span>
-<a name="l00377"></a>00377 <span class="keyword"></span>{
-<a name="l00378"></a>00378 <span class="keywordflow">return</span> myInput;
-<a name="l00379"></a>00379 }
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381
-<a name="l00385"></a><a class="code" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">00385</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33" title="Limit the framerate to a maximum fixed frequency.">Window::SetFramerateLimit</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Limit)
-<a name="l00386"></a>00386 {
-<a name="l00387"></a>00387 myFramerateLimit = Limit;
-<a name="l00388"></a>00388 }
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390
-<a name="l00394"></a><a class="code" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">00394</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254" title="Get time elapsed since last frame.">Window::GetFrameTime</a>()<span class="keyword"> const</span>
-<a name="l00395"></a>00395 <span class="keyword"></span>{
-<a name="l00396"></a>00396 <span class="keywordflow">return</span> myLastFrameTime;
-<a name="l00397"></a>00397 }
-<a name="l00398"></a>00398
-<a name="l00399"></a>00399
-<a name="l00404"></a><a class="code" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">00404</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91" title="Change the joystick threshold, ie.">Window::SetJoystickThreshold</a>(<span class="keywordtype">float</span> Threshold)
-<a name="l00405"></a>00405 {
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (myWindow)
-<a name="l00407"></a>00407 myWindow-&gt;SetJoystickThreshold(Threshold);
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410
-<a name="l00414"></a>00414 <span class="keywordtype">void</span> Window::OnCreate()
-<a name="l00415"></a>00415 {
-<a name="l00416"></a>00416 <span class="comment">// Nothing by default</span>
-<a name="l00417"></a>00417 }
-<a name="l00418"></a>00418
-<a name="l00419"></a>00419
-<a name="l00423"></a>00423 <span class="keywordtype">void</span> Window::OnEvent(<span class="keyword">const</span> Event&amp; EventReceived)
-<a name="l00424"></a>00424 {
-<a name="l00425"></a>00425 <span class="comment">// Discard MouseMove events generated by SetCursorPosition</span>
-<a name="l00426"></a>00426 <span class="keywordflow">if</span> ((EventReceived.Type == Event::MouseMoved) &amp;&amp;
-<a name="l00427"></a>00427 (EventReceived.MouseMove.X == mySetCursorPosX) &amp;&amp;
-<a name="l00428"></a>00428 (EventReceived.MouseMove.Y == mySetCursorPosY))
-<a name="l00429"></a>00429 {
-<a name="l00430"></a>00430 mySetCursorPosX = 0xFFFF;
-<a name="l00431"></a>00431 mySetCursorPosY = 0xFFFF;
-<a name="l00432"></a>00432 <span class="keywordflow">return</span>;
-<a name="l00433"></a>00433 }
-<a name="l00434"></a>00434
-<a name="l00435"></a>00435 myEvents.push(EventReceived);
-<a name="l00436"></a>00436 }
-<a name="l00437"></a>00437
-<a name="l00438"></a>00438
-<a name="l00442"></a>00442 <span class="keywordtype">void</span> Window::Initialize(priv::WindowImpl* Window)
-<a name="l00443"></a>00443 {
-<a name="l00444"></a>00444 <span class="comment">// Assign and initialize the new window</span>
-<a name="l00445"></a>00445 myWindow = Window;
-<a name="l00446"></a>00446 myWindow-&gt;Initialize();
-<a name="l00447"></a>00447
-<a name="l00448"></a>00448 <span class="comment">// Clear the event queue</span>
-<a name="l00449"></a>00449 <span class="keywordflow">while</span> (!myEvents.empty())
-<a name="l00450"></a>00450 myEvents.pop();
-<a name="l00451"></a>00451
-<a name="l00452"></a>00452 <span class="comment">// Listen to events from the new window</span>
-<a name="l00453"></a>00453 myWindow-&gt;AddListener(<span class="keyword">this</span>);
-<a name="l00454"></a>00454 myWindow-&gt;AddListener(&amp;myInput);
-<a name="l00455"></a>00455
-<a name="l00456"></a>00456 <span class="comment">// Setup default behaviours (to get a consistent behaviour across different implementations)</span>
-<a name="l00457"></a>00457 <a class="code" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de" title="Show or hide the window.">Show</a>(<span class="keyword">true</span>);
-<a name="l00458"></a>00458 <a class="code" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5" title="Enable / disable vertical synchronization.">UseVerticalSync</a>(<span class="keyword">false</span>);
-<a name="l00459"></a>00459 <a class="code" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0" title="Show or hide the mouse cursor.">ShowMouseCursor</a>(<span class="keyword">true</span>);
-<a name="l00460"></a>00460 <a class="code" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0" title="Enable or disable automatic key-repeat.">EnableKeyRepeat</a>(<span class="keyword">true</span>);
-<a name="l00461"></a>00461
-<a name="l00462"></a>00462 <span class="comment">// Reset frame time</span>
-<a name="l00463"></a>00463 myClock.Reset();
-<a name="l00464"></a>00464 myLastFrameTime = 0.f;
-<a name="l00465"></a>00465
-<a name="l00466"></a>00466 <span class="comment">// Activate the window</span>
-<a name="l00467"></a>00467 <a class="code" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675" title="Activate of deactivate the window as the current target for rendering.">SetActive</a>(<span class="keyword">true</span>);
-<a name="l00468"></a>00468
-<a name="l00469"></a>00469 <span class="comment">// Notify the derived class</span>
-<a name="l00470"></a>00470 OnCreate();
-<a name="l00471"></a>00471 }
-<a name="l00472"></a>00472
-<a name="l00473"></a>00473 } <span class="comment">// namespace sf</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/Window_8hpp-source.htm b/doc/html/Window_8hpp-source.htm
deleted file mode 100755
index 688b8f9..0000000
--- a/doc/html/Window_8hpp-source.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-<h1>Window.hpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
-<a name="l00005"></a>00005 <span class="comment">//</span>
-<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
-<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
-<a name="l00008"></a>00008 <span class="comment">//</span>
-<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
-<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
-<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
-<a name="l00012"></a>00012 <span class="comment">//</span>
-<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
-<a name="l00014"></a>00014 <span class="comment">// you must not claim that you wrote the original software.</span>
-<a name="l00015"></a>00015 <span class="comment">// If you use this software in a product, an acknowledgment</span>
-<a name="l00016"></a>00016 <span class="comment">// in the product documentation would be appreciated but is not required.</span>
-<a name="l00017"></a>00017 <span class="comment">//</span>
-<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
-<a name="l00019"></a>00019 <span class="comment">// and must not be misrepresented as being the original software.</span>
-<a name="l00020"></a>00020 <span class="comment">//</span>
-<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
-<a name="l00022"></a>00022 <span class="comment">//</span>
-<a name="l00024"></a>00024 <span class="comment"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#ifndef SFML_SFML_WINDOW_HPP</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define SFML_SFML_WINDOW_HPP</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="comment">// Headers</span>
-<a name="l00031"></a>00031 <span class="comment"></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;SFML/System.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;SFML/Window/Context.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;SFML/Window/Event.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;SFML/Window/Input.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;SFML/Window/VideoMode.hpp&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;SFML/Window/Window.hpp&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;SFML/Window/WindowListener.hpp&gt;</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;SFML/Window/WindowStyle.hpp&gt;</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;SFML/Window/OpenGL.hpp&gt;</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="preprocessor">#endif // SFML_SFML_WINDOW_HPP</span>
-</pre></div></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/annotated.htm b/doc/html/annotated.htm
deleted file mode 100755
index 7d2feeb..0000000
--- a/doc/html/annotated.htm
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td class="indexvalue">Abstract base class for every class that owns a device-dependant resource -- allow them to initialize / shutdown even when the audio context is not created </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Clock.htm">sf::Clock</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a> is an utility class for manipulating time </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> is an utility class for manipulating 32-bits RGBA colors </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td class="indexvalue">Class wrapping an OpenGL context </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td class="indexvalue">Abstract base class for every object that can be drawn into a render window </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> defines a system event and its parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a></td><td class="indexvalue">Joystick buttons events parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a></td><td class="indexvalue">Joystick axis move event parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a></td><td class="indexvalue">Keyboard event parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a></td><td class="indexvalue"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> buttons events parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a></td><td class="indexvalue"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> move event parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">sf::Event::Event::MouseWheelEvent</a></td><td class="indexvalue"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> wheel events parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a></td><td class="indexvalue">Size events parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1Event_1_1TextEvent.htm">sf::Event::Event::TextEvent</a></td><td class="indexvalue">Text event parameters </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> is the low-level class for loading and manipulating character fonts </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td class="indexvalue">This class provides methods for manipulating the FTP protocol (described in RFC 959) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">sf::Ftp::Ftp::DirectoryResponse</a></td><td class="indexvalue">Specialization of FTP response returning a directory </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a></td><td class="indexvalue">Specialization of FTP response returning a filename lisiting </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td class="indexvalue">This class wraps a FTP response, which is basically :<ul>
-<li>a status code</li><li>a message </li></ul>
-</td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a></td><td class="indexvalue">Structure describing a glyph (a visual character) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Http.htm">sf::Http</a></td><td class="indexvalue">This class provides methods for manipulating the HTTP protocol (described in RFC 1945) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td class="indexvalue">This class wraps an HTTP request, which is basically :<ul>
-<li>a header with a method, a target URI, and a set of field/value pairs</li><li>an optional body (for POST requests) </li></ul>
-</td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td class="indexvalue">This class wraps an HTTP response, which is basically :<ul>
-<li>a header with a status code and a set of field/value pairs</li><li>a body (the content of the requested resource) </li></ul>
-</td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> is the low-level class for loading and manipulating images </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a> handles real-time input from keyboard and mouse </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td class="indexvalue"><a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> provides easy manipulation of IP v4 addresses </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Listener.htm" title="Listener is a global interface for defining the audio listener properties ; the audio...">Listener</a> is a global interface for defining the audio listener properties ; the audio listener is the point in the scene from where all the sounds are heard </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Lock.htm">sf::Lock</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> is an exception-safe automatic wrapper for locking and unlocking mutexes </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td class="indexvalue">Utility class to manipulate 3x3 matrices representing 2D transformations </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a> defines a big sound played using streaming, so usually what we call a music :) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a> defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical instructions to avoid simultaneous access with other threads </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td class="indexvalue">Utility base class to easily declare non-copyable classes </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> wraps data to send / to receive through the network </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td class="indexvalue"><a class="el" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a> is used to apply a post effect to a window </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Randomizer.htm" title="Randomizer is an utility class for generating pseudo-random numbers.">Randomizer</a> is an utility class for generating pseudo-random numbers </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a> is an utility class for manipulating rectangles </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td class="indexvalue">Base class for all render targets (window, image, </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td class="indexvalue">Simple wrapper for <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> that allows easy 2D rendering </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td class="indexvalue">Base class for every resource that needs to notify dependent classes about its destruction </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td class="indexvalue">Safe pointer to a T resource (inheriting from sf::Resource&lt;T&gt;), its pointer is automatically reseted when the resource is destroyed </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a> allow reading from multiple sockets without blocking </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td class="indexvalue">Private base class for selectors </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> defines a drawable convex shape ; it also defines helper functions to draw simple shapes like lines, rectangles, circles, etc </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td class="indexvalue">This class defines helper functions to do all the non-portable socket stuff </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td class="indexvalue"><a class="el" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a> wraps a socket using TCP protocol to send data safely (but a bit slower) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td class="indexvalue"><a class="el" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a> wraps a socket using UDP protocol to send data fastly (but with less safety) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> defines the properties of a sound such as position, volume, pitch, etc </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td class="indexvalue"><a class="el" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> is the low-level for loading and manipulating sound buffers </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SoundBufferRecorder.htm">sf::SoundBufferRecorder</a></td><td class="indexvalue">Specialized <a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> which saves the captured audio data into a sound buffer </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td class="indexvalue"><a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> is an interface for capturing sound data, it is meant to be used as a base class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td class="indexvalue"><a class="el" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a> is a streamed sound, ie samples are acquired while the sound is playing </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">sf::SoundStream::SoundStream::Chunk</a></td><td class="indexvalue">Structure defining a chunk of audio data to stream </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a> defines a sprite : texture, transformations, color, and draw on screen </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td class="indexvalue"><a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> defines a graphical 2D text, that can be drawn on screen </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> defines an easy way to manipulate a thread </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td class="indexvalue">Provides utility functions to convert from and to any unicode and ASCII encoding </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td class="indexvalue">This class is an abstract definition of a unicode text, it can be converted from and to any kind of string and encoding </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2</a> is an utility class for manipulating 2 dimensional vectors </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3</a> is an utility class for manipulating 3 dimensional vectors </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td class="indexvalue"><a class="el" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> defines a video mode (width, height, bpp, frequency) and provides static functions for getting modes supported by the display device </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td class="indexvalue">This class defines a view (position, size, etc </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td class="indexvalue"><a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> is a rendering window ; it can create a new window or connect to an existing one </td></tr>
- <tr><td class="indexkey"><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td class="indexvalue">Base class for classes that want to receive events from a window (for internal use only) </td></tr>
- <tr><td class="indexkey"><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a></td><td class="indexvalue">Structure defining the creation settings of windows </td></tr>
-</table>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classes.htm b/doc/html/classes.htm
deleted file mode 100755
index 6912b51..0000000
--- a/doc/html/classes.htm
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li class="current"><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a></div><p>
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structsf_1_1Event_1_1TextEvent.htm">Event::TextEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1RenderWindow.htm">RenderWindow</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Sprite.htm">Sprite</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classsf_1_1AudioResource.htm">AudioResource</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Listener.htm">Listener</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Resource.htm">Resource</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1String.htm">String</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Font.htm">Font</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Lock.htm">Lock</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classsf_1_1Clock.htm">Clock</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Ftp.htm">Ftp</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Thread.htm">Thread</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classsf_1_1Color.htm">Color</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">Ftp::DirectoryResponse</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Selector.htm">Selector</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classsf_1_1Context.htm">Context</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">Ftp::ListingResponse</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Music.htm">Music</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1SelectorBase.htm">SelectorBase</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Unicode.htm">Unicode</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Mutex.htm">Mutex</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Shape.htm">Shape</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classsf_1_1Drawable.htm">Drawable</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;N&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1SocketHelper.htm">SocketHelper</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;E&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Glyph.htm">Glyph</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structsf_1_1NonCopyable.htm">NonCopyable</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Vector2.htm">Vector2</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classsf_1_1Event.htm">Event</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Vector3.htm">Vector3</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">Event::JoyButtonEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Http.htm">Http</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Packet.htm">Packet</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Sound.htm">Sound</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">Event::JoyMoveEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">Http::Request</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1PostFX.htm">PostFX</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1View.htm">View</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">Event::KeyEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">Http::Response</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1SoundBufferRecorder.htm">SoundBufferRecorder</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">Event::MouseButtonEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classsf_1_1Randomizer.htm">Randomizer</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">SoundRecorder</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Window.htm">Window</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">Event::MouseMoveEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Image.htm">Image</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Rect.htm">Rect</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1SoundStream.htm">SoundStream</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1WindowListener.htm">WindowListener</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">Event::MouseWheelEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1Input.htm">Input</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">SoundStream::Chunk</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">Event::SizeEvent</a> (sf)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> (sf)&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a></div><p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1AudioResource-members.htm b/doc/html/classsf_1_1AudioResource-members.htm
deleted file mode 100755
index 7ce04c0..0000000
--- a/doc/html/classsf_1_1AudioResource-members.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::AudioResource Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">AudioResource</a>(const AudioResource &amp;)</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">~AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1AudioResource.htm b/doc/html/classsf_1_1AudioResource.htm
deleted file mode 100755
index 95ae561..0000000
--- a/doc/html/classsf_1_1AudioResource.htm
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1AudioResource.htm">AudioResource</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::AudioResource Class Reference</h1><!-- doxytag: class="sf::AudioResource" -->Abstract base class for every class that owns a device-dependant resource -- allow them to initialize / shutdown even when the audio context is not created.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="AudioResource_8hpp-source.htm">AudioResource.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::AudioResource:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1AudioResource.png" usemap="#sf::AudioResource_map" border="0" alt=""></center>
-<map name="sf::AudioResource_map">
-<area href="classsf_1_1Sound.htm" alt="sf::Sound" shape="rect" coords="0,56,115,80">
-<area href="classsf_1_1SoundBuffer.htm" alt="sf::SoundBuffer" shape="rect" coords="125,56,240,80">
-<area href="classsf_1_1SoundStream.htm" alt="sf::SoundStream" shape="rect" coords="0,112,115,136">
-<area href="classsf_1_1Music.htm" alt="sf::Music" shape="rect" coords="0,168,115,192">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1AudioResource-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">AudioResource</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#cdff57800064eb0d6ca5ce1773182705"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">AudioResource</a> (const <a class="el" href="classsf_1_1AudioResource.htm">AudioResource</a> &amp;)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#72180730c0d811d1a9c5d0c9c9a71907"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">~AudioResource</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#b637cc0e1ff4770a3ac3be48f83d6702"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Abstract base class for every class that owns a device-dependant resource -- allow them to initialize / shutdown even when the audio context is not created.
-<p>Definition at line <a class="el" href="AudioResource_8hpp-source.htm#l00041">41</a> of file <a class="el" href="AudioResource_8hpp-source.htm">AudioResource.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="cdff57800064eb0d6ca5ce1773182705"></a><!-- doxytag: member="sf::AudioResource::AudioResource" ref="cdff57800064eb0d6ca5ce1773182705" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::AudioResource::AudioResource </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="AudioResource_8cpp-source.htm#l00037">37</a> of file <a class="el" href="AudioResource_8cpp-source.htm">AudioResource.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="72180730c0d811d1a9c5d0c9c9a71907"></a><!-- doxytag: member="sf::AudioResource::AudioResource" ref="72180730c0d811d1a9c5d0c9c9a71907" args="(const AudioResource &amp;)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::AudioResource::AudioResource </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1AudioResource.htm">AudioResource</a> &amp;&nbsp;</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-
-<p>Definition at line <a class="el" href="AudioResource_8cpp-source.htm#l00046">46</a> of file <a class="el" href="AudioResource_8cpp-source.htm">AudioResource.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b637cc0e1ff4770a3ac3be48f83d6702"></a><!-- doxytag: member="sf::AudioResource::~AudioResource" ref="b637cc0e1ff4770a3ac3be48f83d6702" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::AudioResource::~AudioResource </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="AudioResource_8cpp-source.htm#l00055">55</a> of file <a class="el" href="AudioResource_8cpp-source.htm">AudioResource.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="AudioResource_8hpp-source.htm">AudioResource.hpp</a><li><a class="el" href="AudioResource_8cpp-source.htm">AudioResource.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1AudioResource.png b/doc/html/classsf_1_1AudioResource.png
deleted file mode 100755
index ebca8e2..0000000
--- a/doc/html/classsf_1_1AudioResource.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Clock-members.htm b/doc/html/classsf_1_1Clock-members.htm
deleted file mode 100755
index 78ed547..0000000
--- a/doc/html/classsf_1_1Clock-members.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Clock Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Clock.htm">sf::Clock</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd">Clock</a>()</td><td><a class="el" href="classsf_1_1Clock.htm">sf::Clock</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995">GetElapsedTime</a>() const </td><td><a class="el" href="classsf_1_1Clock.htm">sf::Clock</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec">Reset</a>()</td><td><a class="el" href="classsf_1_1Clock.htm">sf::Clock</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Clock.htm b/doc/html/classsf_1_1Clock.htm
deleted file mode 100755
index 880781b..0000000
--- a/doc/html/classsf_1_1Clock.htm
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Clock.htm">Clock</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Clock Class Reference</h1><!-- doxytag: class="sf::Clock" --><a class="el" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a> is an utility class for manipulating time.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Clock_8hpp-source.htm">Clock.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Clock-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd">Clock</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#bbc959c7830ca7c3a4da133cb506d3fd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995">GetElapsedTime</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the time elapsed since last reset. <a href="#e9a02135879afbd38d034ac4a357a995"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec">Reset</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Restart the timer. <a href="#e7d8de6876d51fa16675a64c649570ec"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Clock.htm" title="Clock is an utility class for manipulating time.">Clock</a> is an utility class for manipulating time.
-<p>Definition at line <a class="el" href="Clock_8hpp-source.htm#l00039">39</a> of file <a class="el" href="Clock_8hpp-source.htm">Clock.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="bbc959c7830ca7c3a4da133cb506d3fd"></a><!-- doxytag: member="sf::Clock::Clock" ref="bbc959c7830ca7c3a4da133cb506d3fd" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Clock::Clock </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Clock_8cpp-source.htm#l00037">37</a> of file <a class="el" href="Clock_8cpp-source.htm">Clock.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="e9a02135879afbd38d034ac4a357a995"></a><!-- doxytag: member="sf::Clock::GetElapsedTime" ref="e9a02135879afbd38d034ac4a357a995" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Clock::GetElapsedTime </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the time elapsed since last reset.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Time elapsed, in seconds </dd></dl>
-
-<p>Definition at line <a class="el" href="Clock_8cpp-source.htm#l00046">46</a> of file <a class="el" href="Clock_8cpp-source.htm">Clock.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e7d8de6876d51fa16675a64c649570ec"></a><!-- doxytag: member="sf::Clock::Reset" ref="e7d8de6876d51fa16675a64c649570ec" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Clock::Reset </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Restart the timer.
-<p>
-
-<p>Definition at line <a class="el" href="Clock_8cpp-source.htm#l00055">55</a> of file <a class="el" href="Clock_8cpp-source.htm">Clock.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Clock_8hpp-source.htm">Clock.hpp</a><li><a class="el" href="Clock_8cpp-source.htm">Clock.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Color-members.htm b/doc/html/classsf_1_1Color-members.htm
deleted file mode 100755
index 61b9adf..0000000
--- a/doc/html/classsf_1_1Color-members.htm
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Color Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Color.htm">sf::Color</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">a</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">b</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">Black</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">Blue</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4">Color</a>()</td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#35b792f22f04696b82a93e36530ca32c">Color</a>(Uint8 R, Uint8 G, Uint8 B, Uint8 A=255)</td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">Cyan</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">g</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">Green</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">Magenta</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5">operator!=</a>(const Color &amp;Other) const </td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386">operator*=</a>(const Color &amp;Other)</td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf">operator+=</a>(const Color &amp;Other)</td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955">operator==</a>(const Color &amp;Other) const </td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">r</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">Red</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">White</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">Yellow</a></td><td><a class="el" href="classsf_1_1Color.htm">sf::Color</a></td><td><code> [static]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Color.htm b/doc/html/classsf_1_1Color.htm
deleted file mode 100755
index fbe7fec..0000000
--- a/doc/html/classsf_1_1Color.htm
+++ /dev/null
@@ -1,542 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Color.htm">Color</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Color Class Reference</h1><!-- doxytag: class="sf::Color" --><a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> is an utility class for manipulating 32-bits RGBA colors.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Color_8hpp-source.htm">Color.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Color-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4">Color</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#c2eb4393fb11ad3fa3ccf34e92fe08e4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#35b792f22f04696b82a93e36530ca32c">Color</a> (Uint8 R, Uint8 G, Uint8 B, Uint8 A=255)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the color from its 4 RGBA components. <a href="#35b792f22f04696b82a93e36530ca32c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf">operator+=</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator += overload to add a color. <a href="#bad27a2aa8db0ee9322955e69a842ddf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386">operator*=</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator *= overload to modulate a color. <a href="#0b85298f8e6cfe53a8365e1924f6a386"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955">operator==</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two colors (for equality). <a href="#67a77ba62d5ce56aa618b5117f26e955"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5">operator!=</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two colors (for difference). <a href="#058388f4f0cd47b93c08c545d6ac39c5"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Uint8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">r</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Red component. <a href="#6a5256ca24a4f9f0e0808f6fc23e01e1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Uint8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">g</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Green component. <a href="#591daf9c3c55dea830c76c962d6ba1a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Uint8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">b</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Blue component. <a href="#6707aedd0609c8920e12df5d7abc53cb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Uint8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">a</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alpha (transparency) component. <a href="#56dbdb47d5f040d9b78ac6a0b8b3a831"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">Black</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Black predefined color. <a href="#77c688197b981338f0b19dc58bd2facd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">White</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">White predefined color. <a href="#4fd874712178d9e206f53226002aa4ca"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">Red</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Red predefined color. <a href="#127dbf55db9c07d0fa8f4bfcbb97594a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">Green</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Green predefined color. <a href="#95629b30de8c6856aa7d3afed12eb865"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">Blue</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Blue predefined color. <a href="#b03770d4817426b2614cfc33cf0e245c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">Yellow</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yellow predefined color. <a href="#f8896b5f56650935f5b9d72d528802c7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">Magenta</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Magenta predefined color. <a href="#6fe70d90b65b2163dd066a84ac00426c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">Cyan</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cyan predefined color. <a href="#64ae9beb0b9a5865dd811cda4bb18340"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> is an utility class for manipulating 32-bits RGBA colors.
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00040">40</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="c2eb4393fb11ad3fa3ccf34e92fe08e4"></a><!-- doxytag: member="sf::Color::Color" ref="c2eb4393fb11ad3fa3ccf34e92fe08e4" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Color::Color </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00050">50</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="35b792f22f04696b82a93e36530ca32c"></a><!-- doxytag: member="sf::Color::Color" ref="35b792f22f04696b82a93e36530ca32c" args="(Uint8 R, Uint8 G, Uint8 B, Uint8 A=255)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Color::Color </td>
- <td>(</td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>R</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>G</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>A</em> = <code>255</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the color from its 4 RGBA components.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>: Red component (0 .. 255) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>G</em>&nbsp;</td><td>: Green component (0 .. 255) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em>&nbsp;</td><td>: Blue component (0 .. 255) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>A</em>&nbsp;</td><td>: Alpha component (0 .. 255) (255 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00063">63</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="058388f4f0cd47b93c08c545d6ac39c5"></a><!-- doxytag: member="sf::Color::operator!=" ref="058388f4f0cd47b93c08c545d6ac39c5" args="(const Color &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Color::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Compare two colors (for difference).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if colors are different </dd></dl>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00113">113</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b85298f8e6cfe53a8365e1924f6a386"></a><!-- doxytag: member="sf::Color::operator*=" ref="0b85298f8e6cfe53a8365e1924f6a386" args="(const Color &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Color::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator *= overload to modulate a color.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to modulate</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Component-wise multiplication of the two colors </dd></dl>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00090">90</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bad27a2aa8db0ee9322955e69a842ddf"></a><!-- doxytag: member="sf::Color::operator+=" ref="bad27a2aa8db0ee9322955e69a842ddf" args="(const Color &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Color::operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator += overload to add a color.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to add</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Component-wise saturated addition of the two colors </dd></dl>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00076">76</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="67a77ba62d5ce56aa618b5117f26e955"></a><!-- doxytag: member="sf::Color::operator==" ref="67a77ba62d5ce56aa618b5117f26e955" args="(const Color &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Color::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Compare two colors (for equality).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if colors are equal </dd></dl>
-
-<p>Definition at line <a class="el" href="Color_8cpp-source.htm#l00104">104</a> of file <a class="el" href="Color_8cpp-source.htm">Color.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="56dbdb47d5f040d9b78ac6a0b8b3a831"></a><!-- doxytag: member="sf::Color::a" ref="56dbdb47d5f040d9b78ac6a0b8b3a831" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Uint8 <a class="el" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">sf::Color::a</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Alpha (transparency) component.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00119">119</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6707aedd0609c8920e12df5d7abc53cb"></a><!-- doxytag: member="sf::Color::b" ref="6707aedd0609c8920e12df5d7abc53cb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Uint8 <a class="el" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">sf::Color::b</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Blue component.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00118">118</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="77c688197b981338f0b19dc58bd2facd"></a><!-- doxytag: member="sf::Color::Black" ref="77c688197b981338f0b19dc58bd2facd" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">sf::Color::Black</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Black predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00104">104</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b03770d4817426b2614cfc33cf0e245c"></a><!-- doxytag: member="sf::Color::Blue" ref="b03770d4817426b2614cfc33cf0e245c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">sf::Color::Blue</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Blue predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00108">108</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="64ae9beb0b9a5865dd811cda4bb18340"></a><!-- doxytag: member="sf::Color::Cyan" ref="64ae9beb0b9a5865dd811cda4bb18340" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">sf::Color::Cyan</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Cyan predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00111">111</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="591daf9c3c55dea830c76c962d6ba1a5"></a><!-- doxytag: member="sf::Color::g" ref="591daf9c3c55dea830c76c962d6ba1a5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Uint8 <a class="el" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">sf::Color::g</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Green component.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00117">117</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="95629b30de8c6856aa7d3afed12eb865"></a><!-- doxytag: member="sf::Color::Green" ref="95629b30de8c6856aa7d3afed12eb865" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">sf::Color::Green</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Green predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00107">107</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6fe70d90b65b2163dd066a84ac00426c"></a><!-- doxytag: member="sf::Color::Magenta" ref="6fe70d90b65b2163dd066a84ac00426c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">sf::Color::Magenta</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Magenta predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00110">110</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6a5256ca24a4f9f0e0808f6fc23e01e1"></a><!-- doxytag: member="sf::Color::r" ref="6a5256ca24a4f9f0e0808f6fc23e01e1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Uint8 <a class="el" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">sf::Color::r</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Red component.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00116">116</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="127dbf55db9c07d0fa8f4bfcbb97594a"></a><!-- doxytag: member="sf::Color::Red" ref="127dbf55db9c07d0fa8f4bfcbb97594a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">sf::Color::Red</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Red predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00106">106</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4fd874712178d9e206f53226002aa4ca"></a><!-- doxytag: member="sf::Color::White" ref="4fd874712178d9e206f53226002aa4ca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">sf::Color::White</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-White predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00105">105</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f8896b5f56650935f5b9d72d528802c7"></a><!-- doxytag: member="sf::Color::Yellow" ref="f8896b5f56650935f5b9d72d528802c7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> <a class="el" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">sf::Color::Yellow</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Yellow predefined color.
-<p>
-
-<p>Definition at line <a class="el" href="Color_8hpp-source.htm#l00109">109</a> of file <a class="el" href="Color_8hpp-source.htm">Color.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Color_8hpp-source.htm">Color.hpp</a><li><a class="el" href="Color_8cpp-source.htm">Color.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Context-members.htm b/doc/html/classsf_1_1Context-members.htm
deleted file mode 100755
index 54cbc3a..0000000
--- a/doc/html/classsf_1_1Context-members.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Context Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Context.htm">sf::Context</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555">Context</a>()</td><td><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692">GetGlobal</a>()</td><td><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27">IsContextActive</a>()</td><td><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7">SetActive</a>(bool Active)</td><td><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b">~Context</a>()</td><td><a class="el" href="classsf_1_1Context.htm">sf::Context</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Context.htm b/doc/html/classsf_1_1Context.htm
deleted file mode 100755
index f9a003a..0000000
--- a/doc/html/classsf_1_1Context.htm
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Context.htm">Context</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Context Class Reference</h1><!-- doxytag: class="sf::Context" --><!-- doxytag: inherits="sf::NonCopyable" -->Class wrapping an OpenGL context.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Context_8hpp-source.htm">Context.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Context:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Context.png" usemap="#sf::Context_map" border="0" alt=""></center>
-<map name="sf::Context_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="0,0,105,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Context-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555">Context</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor, create the context. <a href="#ba22797a790706ca2c5c04ee39f2b555"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b">~Context</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor, destroy the context. <a href="#805b1bbdb3e52b1fda7c9bf2cd6ca86b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7">SetActive</a> (bool Active)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Activate or deactivate the context. <a href="#b1d95acf0b2e5f1464c3a0471a54a8f7"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27">IsContextActive</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if there's a context bound to the current thread. <a href="#73f11548c8501093558b6052f48f0e27"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Context.htm">Context</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692">GetGlobal</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the global context. <a href="#2a92bd6864df0f75d33bd38ac1b81692"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Class wrapping an OpenGL context.
-<p>
-All SFML windows already have their own context, so this class is more a helper for specific issues involving OpenGL and multi-threading. It's meant to be used internally.
-<p>Definition at line <a class="el" href="Context_8hpp-source.htm#l00049">49</a> of file <a class="el" href="Context_8hpp-source.htm">Context.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="ba22797a790706ca2c5c04ee39f2b555"></a><!-- doxytag: member="sf::Context::Context" ref="ba22797a790706ca2c5c04ee39f2b555" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Context::Context </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor, create the context.
-<p>
-
-<p>Definition at line <a class="el" href="Context_8cpp-source.htm#l00044">44</a> of file <a class="el" href="Context_8cpp-source.htm">Context.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="805b1bbdb3e52b1fda7c9bf2cd6ca86b"></a><!-- doxytag: member="sf::Context::~Context" ref="805b1bbdb3e52b1fda7c9bf2cd6ca86b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Context::~Context </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor, destroy the context.
-<p>
-
-<p>Definition at line <a class="el" href="Context_8cpp-source.htm#l00053">53</a> of file <a class="el" href="Context_8cpp-source.htm">Context.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="2a92bd6864df0f75d33bd38ac1b81692"></a><!-- doxytag: member="sf::Context::GetGlobal" ref="2a92bd6864df0f75d33bd38ac1b81692" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Context.htm">Context</a> &amp; sf::Context::GetGlobal </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the global context.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the global context </dd></dl>
-
-<p>Definition at line <a class="el" href="Context_8cpp-source.htm#l00080">80</a> of file <a class="el" href="Context_8cpp-source.htm">Context.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="73f11548c8501093558b6052f48f0e27"></a><!-- doxytag: member="sf::Context::IsContextActive" ref="73f11548c8501093558b6052f48f0e27" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Context::IsContextActive </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Check if there's a context bound to the current thread.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if there's a context bound to the current thread </dd></dl>
-
-<p>Definition at line <a class="el" href="Context_8cpp-source.htm#l00071">71</a> of file <a class="el" href="Context_8cpp-source.htm">Context.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b1d95acf0b2e5f1464c3a0471a54a8f7"></a><!-- doxytag: member="sf::Context::SetActive" ref="b1d95acf0b2e5f1464c3a0471a54a8f7" args="(bool Active)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Context::SetActive </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Active</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Activate or deactivate the context.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Active</em>&nbsp;</td><td>: True to activate the context, false to deactivate it </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Context_8cpp-source.htm#l00062">62</a> of file <a class="el" href="Context_8cpp-source.htm">Context.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Context_8hpp-source.htm">Context.hpp</a><li><a class="el" href="Context_8cpp-source.htm">Context.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Context.png b/doc/html/classsf_1_1Context.png
deleted file mode 100755
index cb7366a..0000000
--- a/doc/html/classsf_1_1Context.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Drawable-members.htm b/doc/html/classsf_1_1Drawable-members.htm
deleted file mode 100755
index 8f22560..0000000
--- a/doc/html/classsf_1_1Drawable-members.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Drawable Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a>(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a>(const Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>RenderTarget</b> (defined in <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a>(float Angle)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a>(float FactorX, float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a>(const Vector2f &amp;Factor)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a>(Blend::Mode Mode)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a>(float CenterX, float CenterY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a>(const Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a>(const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a>(const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a>(float Rotation)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a>(float ScaleX, float ScaleY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a>(const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a>(float FactorX)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a>(float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a>(float X)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a>(float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a>()</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Drawable.htm b/doc/html/classsf_1_1Drawable.htm
deleted file mode 100755
index 308e7b6..0000000
--- a/doc/html/classsf_1_1Drawable.htm
+++ /dev/null
@@ -1,1077 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Drawable.htm">Drawable</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Drawable Class Reference</h1><!-- doxytag: class="sf::Drawable" -->Abstract base class for every object that can be drawn into a render window.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Drawable_8hpp-source.htm">Drawable.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Drawable:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Drawable.png" usemap="#sf::Drawable_map" border="0" alt=""></center>
-<map name="sf::Drawable_map">
-<area href="classsf_1_1PostFX.htm" alt="sf::PostFX" shape="rect" coords="0,56,82,80">
-<area href="classsf_1_1Shape.htm" alt="sf::Shape" shape="rect" coords="92,56,174,80">
-<area href="classsf_1_1Sprite.htm" alt="sf::Sprite" shape="rect" coords="184,56,266,80">
-<area href="classsf_1_1String.htm" alt="sf::String" shape="rect" coords="276,56,358,80">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Drawable-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position=<a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale=<a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(1, 1), float Rotation=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(255, 255, 255, 255))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#712de01505e04a03b93cf33ae004cdbc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <a href="#28141b9ba1e4b432313339546669817a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take 2 values). <a href="#419da954b1f2ad1ac2ae0b9ab6e72589"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take a 2D vector). <a href="#d2a279f3b13abf57cc25b2b4bd3b81ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a> (float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X position of the object. <a href="#c8de7bfe092736083dcf23b0dbd22b1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a> (float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y position of the object. <a href="#83fecebe749c1aca9070eafd63e1a0c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a> (float ScaleX, float ScaleY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take 2 values). <a href="#0b486c56c2bd137bac629f72fea66769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take a 2D vector). <a href="#84876c5ef7fa628c85c3c9e000e50aa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a> (float FactorX)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X scale factor of the object. <a href="#0cafae61a1d23bddb059d64df0e1502f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a> (float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y scale factor of the object. <a href="#89e7793c74c656e5850b71d0ab34b8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a> (float CenterX, float CenterY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take 2 values). <a href="#11ba1d92bc863af6d95831d216802f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector). <a href="#235e438555d8161f4995615f24fa0b11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a> (float Rotation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of the object. <a href="#6d06383770eb01ffecf3d1cae6fec0ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of the object. <a href="#8cae9f22220985e368a1b38af7644ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a> (<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the blending mode for the object. <a href="#aa6558b1ae27e29cb825028473707da5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of the object. <a href="#9ad52594fd5e835cbd03b79098d70e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current scale of the object. <a href="#fa4d6b97e7c10a82430ff9ee56009c97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the object. <a href="#de634efe8d6264282acc564fa5ea77c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the orientation of the object. <a href="#4e82bec096673bccf7ceac5207617017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of the object. <a href="#a2a028c4a975b5ed6d5a560a1c44e0c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current blending mode. <a href="#b6446c4717a2800cad85db55cb55409a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take 2 values). <a href="#501df9af956362b3e3769d80381c051b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take a 2D vector). <a href="#3c0ac0851d6b0ebed80ae9641ff93161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a> (float FactorX, float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take 2 values). <a href="#2a132c9f2f3736b7d0f6ea80303caacd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take a 2D vector). <a href="#c969d85eaf63f072de9e963bd973e91a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a> (float Angle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the object. <a href="#3e7d558d0ef488485a2d3f885ff2b419"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point). <a href="#809f25ae0b3a2015ec8a44fe9f5a0008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point). <a href="#fe3cb6e62921ce13806c27dc727f8945"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transform matrix of the drawable. <a href="#c659a89e42063d13aa9ebe2b534d404e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse transform matrix of the drawable. <a href="#48238d5726104ba7ddb42f21fc5d5b2f"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5afc6f82b7b587ed5ada4d227ce32aa"></a><!-- doxytag: member="sf::Drawable::RenderTarget" ref="a5afc6f82b7b587ed5ada4d227ce32aa" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>RenderTarget</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Abstract base class for every object that can be drawn into a render window.
-<p>Definition at line <a class="el" href="Drawable_8hpp-source.htm#l00058">58</a> of file <a class="el" href="Drawable_8hpp-source.htm">Drawable.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="712de01505e04a03b93cf33ae004cdbc"></a><!-- doxytag: member="sf::Drawable::Drawable" ref="712de01505e04a03b93cf33ae004cdbc" args="(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Drawable::Drawable </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> = <code><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(0,&nbsp;0)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> = <code><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(1,&nbsp;1)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(255,&nbsp;255,&nbsp;255,&nbsp;255)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position of the object (0, 0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: Scale factor (1, 1 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Orientation, in degrees (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of the object (white by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00039">39</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="28141b9ba1e4b432313339546669817a"></a><!-- doxytag: member="sf::Drawable::~Drawable" ref="28141b9ba1e4b432313339546669817a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Drawable::~Drawable </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Virtual destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00056">56</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b6446c4717a2800cad85db55cb55409a"></a><!-- doxytag: member="sf::Drawable::GetBlendMode" ref="b6446c4717a2800cad85db55cb55409a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> sf::Drawable::GetBlendMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current blending mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current blending mode </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="de634efe8d6264282acc564fa5ea77c0"></a><!-- doxytag: member="sf::Drawable::GetCenter" ref="de634efe8d6264282acc564fa5ea77c0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position of the center </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a2a028c4a975b5ed6d5a560a1c44e0c8"></a><!-- doxytag: member="sf::Drawable::GetColor" ref="a2a028c4a975b5ed6d5a560a1c44e0c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Drawable::GetColor </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current color </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="48238d5726104ba7ddb42f21fc5d5b2f"></a><!-- doxytag: member="sf::Drawable::GetInverseMatrix" ref="48238d5726104ba7ddb42f21fc5d5b2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetInverseMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the inverse transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Inverse transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00350">350</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c659a89e42063d13aa9ebe2b534d404e"></a><!-- doxytag: member="sf::Drawable::GetMatrix" ref="c659a89e42063d13aa9ebe2b534d404e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00334">334</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9ad52594fd5e835cbd03b79098d70e0b"></a><!-- doxytag: member="sf::Drawable::GetPosition" ref="9ad52594fd5e835cbd03b79098d70e0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00213">213</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e82bec096673bccf7ceac5207617017"></a><!-- doxytag: member="sf::Drawable::GetRotation" ref="4e82bec096673bccf7ceac5207617017" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Drawable::GetRotation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the orientation of the object.
-<p>
-Rotation is always in the range [0, 360]<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current rotation, in degrees </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fa4d6b97e7c10a82430ff9ee56009c97"></a><!-- doxytag: member="sf::Drawable::GetScale" ref="fa4d6b97e7c10a82430ff9ee56009c97" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetScale </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current scale of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current scale factor (always positive) </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3c0ac0851d6b0ebed80ae9641ff93161"></a><!-- doxytag: member="sf::Drawable::Move" ref="3c0ac0851d6b0ebed80ae9641ff93161" args="(const Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Amount of units to move the object of </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00278">278</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="501df9af956362b3e3769d80381c051b"></a><!-- doxytag: member="sf::Drawable::Move" ref="501df9af956362b3e3769d80381c051b" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: X offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Y offset</td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00268">268</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3e7d558d0ef488485a2d3f885ff2b419"></a><!-- doxytag: member="sf::Drawable::Rotate" ref="3e7d558d0ef488485a2d3f885ff2b419" args="(float Angle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Rotate </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Angle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rotate the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Angle</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00306">306</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c969d85eaf63f072de9e963bd973e91a"></a><!-- doxytag: member="sf::Drawable::Scale" ref="c969d85eaf63f072de9e963bd973e91a" args="(const Vector2f &amp;Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Scaling factors (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00297">297</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a132c9f2f3736b7d0f6ea80303caacd"></a><!-- doxytag: member="sf::Drawable::Scale" ref="2a132c9f2f3736b7d0f6ea80303caacd" args="(float FactorX, float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FactorX</em>&nbsp;</td><td>: Scaling factor on X (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>FactorY</em>&nbsp;</td><td>: Scaling factor on Y (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00287">287</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa6558b1ae27e29cb825028473707da5"></a><!-- doxytag: member="sf::Drawable::SetBlendMode" ref="aa6558b1ae27e29cb825028473707da5" args="(Blend::Mode Mode)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetBlendMode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the blending mode for the object.
-<p>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: New blending mode</td></tr>
- </table>
-</dl>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a>
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00204">204</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="235e438555d8161f4995615f24fa0b11"></a><!-- doxytag: member="sf::Drawable::SetCenter" ref="235e438555d8161f4995615f24fa0b11" args="(const Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00171">171</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11ba1d92bc863af6d95831d216802f61"></a><!-- doxytag: member="sf::Drawable::SetCenter" ref="11ba1d92bc863af6d95831d216802f61" args="(float CenterX, float CenterY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CenterX</em>&nbsp;</td><td>: X coordinate of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CenterY</em>&nbsp;</td><td>: Y coordinate of the center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cae9f22220985e368a1b38af7644ffb"></a><!-- doxytag: member="sf::Drawable::SetColor" ref="8cae9f22220985e368a1b38af7644ffb" args="(const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetColor </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of the object.
-<p>
-The default color is white<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color</td></tr>
- </table>
-</dl>
-The default color is white
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00194">194</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d2a279f3b13abf57cc25b2b4bd3b81ae"></a><!-- doxytag: member="sf::Drawable::SetPosition" ref="d2a279f3b13abf57cc25b2b4bd3b81ae" args="(const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00075">75</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="419da954b1f2ad1ac2ae0b9ab6e72589"></a><!-- doxytag: member="sf::Drawable::SetPosition" ref="419da954b1f2ad1ac2ae0b9ab6e72589" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d06383770eb01ffecf3d1cae6fec0ec"></a><!-- doxytag: member="sf::Drawable::SetRotation" ref="6d06383770eb01ffecf3d1cae6fec0ec" args="(float Rotation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetRotation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the orientation of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="84876c5ef7fa628c85c3c9e000e50aa1"></a><!-- doxytag: member="sf::Drawable::SetScale" ref="84876c5ef7fa628c85c3c9e000e50aa1" args="(const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: New scale (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00117">117</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b486c56c2bd137bac629f72fea66769"></a><!-- doxytag: member="sf::Drawable::SetScale" ref="0b486c56c2bd137bac629f72fea66769" args="(float ScaleX, float ScaleY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ScaleX</em>&nbsp;</td><td>: New horizontal scale (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ScaleY</em>&nbsp;</td><td>: New vertical scale (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00107">107</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cafae61a1d23bddb059d64df0e1502f"></a><!-- doxytag: member="sf::Drawable::SetScaleX" ref="0cafae61a1d23bddb059d64df0e1502f" args="(float FactorX)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00127">127</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="89e7793c74c656e5850b71d0ab34b8bf"></a><!-- doxytag: member="sf::Drawable::SetScaleY" ref="89e7793c74c656e5850b71d0ab34b8bf" args="(float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00141">141</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8de7bfe092736083dcf23b0dbd22b1e"></a><!-- doxytag: member="sf::Drawable::SetX" ref="c8de7bfe092736083dcf23b0dbd22b1e" args="(float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="83fecebe749c1aca9070eafd63e1a0c9"></a><!-- doxytag: member="sf::Drawable::SetY" ref="83fecebe749c1aca9070eafd63e1a0c9" args="(float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe3cb6e62921ce13806c27dc727f8945"></a><!-- doxytag: member="sf::Drawable::TransformToGlobal" ref="fe3cb6e62921ce13806c27dc727f8945" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToGlobal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00325">325</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="809f25ae0b3a2015ec8a44fe9f5a0008"></a><!-- doxytag: member="sf::Drawable::TransformToLocal" ref="809f25ae0b3a2015ec8a44fe9f5a0008" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToLocal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00316">316</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Drawable_8hpp-source.htm">Drawable.hpp</a><li><a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Drawable.png b/doc/html/classsf_1_1Drawable.png
deleted file mode 100755
index e7edba9..0000000
--- a/doc/html/classsf_1_1Drawable.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Event-members.htm b/doc/html/classsf_1_1Event-members.htm
deleted file mode 100755
index ebc01c3..0000000
--- a/doc/html/classsf_1_1Event-members.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Event.htm">sf::Event</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Closed</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Count</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">EventType</a> enum name</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>GainedFocus</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoyButton</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoyButtonPressed</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoyButtonReleased</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoyMove</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoyMoved</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Key</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>KeyPressed</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>KeyReleased</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>LostFocus</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseButton</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseButtonPressed</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseButtonReleased</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseEntered</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseLeft</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseMove</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseMoved</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseWheel</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>MouseWheelMoved</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Resized</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Size</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b> (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>TextEntered</b> enum value (defined in <a class="el" href="classsf_1_1Event.htm">sf::Event</a>)</td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">Type</a></td><td><a class="el" href="classsf_1_1Event.htm">sf::Event</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Event.htm b/doc/html/classsf_1_1Event.htm
deleted file mode 100755
index 7aa5513..0000000
--- a/doc/html/classsf_1_1Event.htm
+++ /dev/null
@@ -1,187 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event Class Reference</h1><!-- doxytag: class="sf::Event" --><a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> defines a system event and its parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Event-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">JoyButtonEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Joystick buttons events parameters. <a href="structsf_1_1Event_1_1JoyButtonEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">JoyMoveEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Joystick axis move event parameters. <a href="structsf_1_1Event_1_1JoyMoveEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">KeyEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Keyboard event parameters. <a href="structsf_1_1Event_1_1KeyEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">MouseButtonEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> buttons events parameters. <a href="structsf_1_1Event_1_1MouseButtonEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">MouseMoveEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> move event parameters. <a href="structsf_1_1Event_1_1MouseMoveEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">MouseWheelEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> wheel events parameters. <a href="structsf_1_1Event_1_1MouseWheelEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">SizeEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Size events parameters. <a href="structsf_1_1Event_1_1SizeEvent.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1Event_1_1TextEvent.htm">TextEvent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Text event parameters. <a href="structsf_1_1Event_1_1TextEvent.htm#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">EventType</a> { <br>
-&nbsp;&nbsp;<b>Closed</b>,
-<br>
-&nbsp;&nbsp;<b>Resized</b>,
-<br>
-&nbsp;&nbsp;<b>LostFocus</b>,
-<br>
-&nbsp;&nbsp;<b>GainedFocus</b>,
-<br>
-&nbsp;&nbsp;<b>TextEntered</b>,
-<br>
-&nbsp;&nbsp;<b>KeyPressed</b>,
-<br>
-&nbsp;&nbsp;<b>KeyReleased</b>,
-<br>
-&nbsp;&nbsp;<b>MouseWheelMoved</b>,
-<br>
-&nbsp;&nbsp;<b>MouseButtonPressed</b>,
-<br>
-&nbsp;&nbsp;<b>MouseButtonReleased</b>,
-<br>
-&nbsp;&nbsp;<b>MouseMoved</b>,
-<br>
-&nbsp;&nbsp;<b>MouseEntered</b>,
-<br>
-&nbsp;&nbsp;<b>MouseLeft</b>,
-<br>
-&nbsp;&nbsp;<b>JoyButtonPressed</b>,
-<br>
-&nbsp;&nbsp;<b>JoyButtonReleased</b>,
-<br>
-&nbsp;&nbsp;<b>JoyMoved</b>,
-<br>
-&nbsp;&nbsp;<b>Count</b>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of the different types of events. <a href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">EventType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">Type</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type of the event. <a href="#90d5da29dd2f49d13dc10e7a402c0b65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap><a class="anchor" name="c85e6edc63848641f444ddb19c39ac82"></a><!-- doxytag: member="sf::Event::@3" ref="c85e6edc63848641f444ddb19c39ac82" args="" -->
-union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">KeyEvent</a>&nbsp;&nbsp;&nbsp;<b>Key</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1TextEvent.htm">TextEvent</a>&nbsp;&nbsp;&nbsp;<b>Text</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">MouseMoveEvent</a>&nbsp;&nbsp;&nbsp;<b>MouseMove</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">MouseButtonEvent</a>&nbsp;&nbsp;&nbsp;<b>MouseButton</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">MouseWheelEvent</a>&nbsp;&nbsp;&nbsp;<b>MouseWheel</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">JoyMoveEvent</a>&nbsp;&nbsp;&nbsp;<b>JoyMove</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">JoyButtonEvent</a>&nbsp;&nbsp;&nbsp;<b>JoyButton</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">SizeEvent</a>&nbsp;&nbsp;&nbsp;<b>Size</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap valign="top">};&nbsp;</td><td class="memItemRight" valign="bottom"></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> defines a system event and its parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00197">197</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="f41fa9ed45c02449030699f671331d4a"></a><!-- doxytag: member="sf::Event::EventType" ref="f41fa9ed45c02449030699f671331d4a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">sf::Event::EventType</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumeration of the different types of events.
-<p>
-
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00278">278</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="90d5da29dd2f49d13dc10e7a402c0b65"></a><!-- doxytag: member="sf::Event::Type" ref="90d5da29dd2f49d13dc10e7a402c0b65" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">EventType</a> <a class="el" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">sf::Event::Type</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Type of the event.
-<p>
-
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00303">303</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Font-members.htm b/doc/html/classsf_1_1Font-members.htm
deleted file mode 100755
index 75799c1..0000000
--- a/doc/html/classsf_1_1Font-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Font Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Font.htm">sf::Font</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583">Font</a>()</td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc">GetCharacterSize</a>() const </td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36">GetDefaultFont</a>()</td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6">GetGlyph</a>(Uint32 CodePoint) const </td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8">GetImage</a>() const </td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5">LoadFromFile</a>(const std::string &amp;Filename, unsigned int CharSize=30, const Unicode::Text &amp;Charset=ourDefaultCharset)</td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b">LoadFromMemory</a>(const char *Data, std::size_t SizeInBytes, unsigned int CharSize=30, const Unicode::Text &amp;Charset=ourDefaultCharset)</td><td><a class="el" href="classsf_1_1Font.htm">sf::Font</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">operator=</a>(const Resource&lt; Font &gt; &amp;Other)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Font &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Font &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#59a0a5ddb77f7fe059bd32dee5f792d0">Resource</a>(const Resource&lt; Font &gt; &amp;Copy)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Font &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">~Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Font &gt;</a></td><td><code> [protected]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Font.htm b/doc/html/classsf_1_1Font.htm
deleted file mode 100755
index 40e2339..0000000
--- a/doc/html/classsf_1_1Font.htm
+++ /dev/null
@@ -1,322 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Font.htm">Font</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Font Class Reference</h1><!-- doxytag: class="sf::Font" --><!-- doxytag: inherits="Resource&lt; Font &gt;" --><a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> is the low-level class for loading and manipulating character fonts.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Font_8hpp-source.htm">Font.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Font:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Font.png" usemap="#sf::Font_map" border="0" alt=""></center>
-<map name="sf::Font_map">
-<area href="classsf_1_1Resource.htm" alt="sf::Resource< Font >" shape="rect" coords="0,0,131,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Font-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583">Font</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#506404655b8869ed60d1e7709812f583"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5">LoadFromFile</a> (const std::string &amp;Filename, unsigned int CharSize=30, const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;Charset=ourDefaultCharset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the font from a file. <a href="#c1f0de973bdb9485b5f0bf4aacb717e5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b">LoadFromMemory</a> (const char *Data, std::size_t SizeInBytes, unsigned int CharSize=30, const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;Charset=ourDefaultCharset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the font from a file in memory. <a href="#ecee6a8f62a20424a803508522e3607b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc">GetCharacterSize</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the base size of characters in the font; All glyphs dimensions are based on this value. <a href="#85bd25d6eac95cd20ccc2e9d17ab90bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Glyph.htm">Glyph</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6">GetGlyph</a> (Uint32 CodePoint) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the description of a glyph (character) given by its unicode value. <a href="#044159ab533345fd030430c822cd2bd6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8">GetImage</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the image containing the rendered characters (glyphs). <a href="#e499022bb1bc6f8ce26096a05ab8a8e8"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36">GetDefaultFont</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the SFML default built-in font (Arial). <a href="#128c377d51263288be98565771c48e36"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> is the low-level class for loading and manipulating character fonts.
-<p>
-This class is meant to be used by <a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">sf::String</a>
-<p>Definition at line <a class="el" href="Font_8hpp-source.htm#l00054">54</a> of file <a class="el" href="Font_8hpp-source.htm">Font.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="506404655b8869ed60d1e7709812f583"></a><!-- doxytag: member="sf::Font::Font" ref="506404655b8869ed60d1e7709812f583" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Font::Font </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00064">64</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="85bd25d6eac95cd20ccc2e9d17ab90bc"></a><!-- doxytag: member="sf::Font::GetCharacterSize" ref="85bd25d6eac95cd20ccc2e9d17ab90bc" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Font::GetCharacterSize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the base size of characters in the font; All glyphs dimensions are based on this value.
-<p>
-Get the base size of characters in the font; All glyphs dimensions are based on this value.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Base size of characters </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00120">120</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="128c377d51263288be98565771c48e36"></a><!-- doxytag: member="sf::Font::GetDefaultFont" ref="128c377d51263288be98565771c48e36" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp; sf::Font::GetDefaultFont </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the SFML default built-in font (Arial).
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Instance of the default font </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00159">159</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="044159ab533345fd030430c822cd2bd6"></a><!-- doxytag: member="sf::Font::GetGlyph" ref="044159ab533345fd030430c822cd2bd6" args="(Uint32 CodePoint) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Glyph.htm">Glyph</a> &amp; sf::Font::GetGlyph </td>
- <td>(</td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>CodePoint</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the description of a glyph (character) given by its unicode value.
-<p>
-Get the description of a glyph (character) given by its unicode value.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CodePoint</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Unicode.htm" title="Provides utility functions to convert from and to any unicode and ASCII encoding...">Unicode</a> value of the character to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Glyph's visual settings, or an invalid glyph if character not found </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00130">130</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e499022bb1bc6f8ce26096a05ab8a8e8"></a><!-- doxytag: member="sf::Font::GetImage" ref="e499022bb1bc6f8ce26096a05ab8a8e8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp; sf::Font::GetImage </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the image containing the rendered characters (glyphs).
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> containing glyphs </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00150">150</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c1f0de973bdb9485b5f0bf4aacb717e5"></a><!-- doxytag: member="sf::Font::LoadFromFile" ref="c1f0de973bdb9485b5f0bf4aacb717e5" args="(const std::string &amp;Filename, unsigned int CharSize=30, const Unicode::Text &amp;Charset=ourDefaultCharset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Font::LoadFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>CharSize</em> = <code>30</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Charset</em> = <code>ourDefaultCharset</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the font from a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> file to load </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CharSize</em>&nbsp;</td><td>: Size of characters in bitmap - the bigger, the higher quality (30 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Charset</em>&nbsp;</td><td>: Characters set to generate (by default, contains the ISO-8859-1 printable characters)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00074">74</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ecee6a8f62a20424a803508522e3607b"></a><!-- doxytag: member="sf::Font::LoadFromMemory" ref="ecee6a8f62a20424a803508522e3607b" args="(const char *Data, std::size_t SizeInBytes, unsigned int CharSize=30, const Unicode::Text &amp;Charset=ourDefaultCharset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Font::LoadFromMemory </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SizeInBytes</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>CharSize</em> = <code>30</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Charset</em> = <code>ourDefaultCharset</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the font from a file in memory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the data to load </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeInBytes</em>&nbsp;</td><td>: Size of the data, in bytes </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CharSize</em>&nbsp;</td><td>: Size of characters in bitmap - the bigger, the higher quality (30 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Charset</em>&nbsp;</td><td>: Characters set to generate (by default, contains the ISO-8859-1 printable characters)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Font_8cpp-source.htm#l00093">93</a> of file <a class="el" href="Font_8cpp-source.htm">Font.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Font_8hpp-source.htm">Font.hpp</a><li><a class="el" href="Font_8cpp-source.htm">Font.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Font.png b/doc/html/classsf_1_1Font.png
deleted file mode 100755
index 6088fcf..0000000
--- a/doc/html/classsf_1_1Font.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Ftp-members.htm b/doc/html/classsf_1_1Ftp-members.htm
deleted file mode 100755
index 7bb7cca..0000000
--- a/doc/html/classsf_1_1Ftp-members.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2">Ascii</a> enum value</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee">Binary</a> enum value</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc">ChangeDirectory</a>(const std::string &amp;Directory)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c">Connect</a>(const IPAddress &amp;Server, unsigned short Port=21, float Timeout=0.f)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>DataChannel</b> (defined in <a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a>)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32">DeleteDirectory</a>(const std::string &amp;Name)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9">DeleteFile</a>(const std::string &amp;Name)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc">Disconnect</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886">Download</a>(const std::string &amp;DistantFile, const std::string &amp;DestPath, TransferMode Mode=Binary)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4">Ebcdic</a> enum value</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357">GetDirectoryListing</a>(const std::string &amp;Directory=&quot;&quot;)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde">GetWorkingDirectory</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4">KeepAlive</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf">Login</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#1ed080612214df38a5f740d1ee49f082">Login</a>(const std::string &amp;UserName, const std::string &amp;Password)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071">MakeDirectory</a>(const std::string &amp;Name)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6">ParentDirectory</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c">RenameFile</a>(const std::string &amp;File, const std::string &amp;NewName)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> enum name</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528">Upload</a>(const std::string &amp;LocalFile, const std::string &amp;DestPath, TransferMode Mode=Binary)</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52">~Ftp</a>()</td><td><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp.htm b/doc/html/classsf_1_1Ftp.htm
deleted file mode 100755
index d9e38d2..0000000
--- a/doc/html/classsf_1_1Ftp.htm
+++ /dev/null
@@ -1,694 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Ftp.htm">Ftp</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp Class Reference</h1><!-- doxytag: class="sf::Ftp" --><!-- doxytag: inherits="sf::NonCopyable" -->This class provides methods for manipulating the FTP protocol (described in RFC 959).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Ftp:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Ftp.png" usemap="#sf::Ftp_map" border="0" alt=""></center>
-<map name="sf::Ftp_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="0,0,105,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Ftp-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>DataChannel</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specialization of FTP response returning a directory. <a href="classsf_1_1Ftp_1_1DirectoryResponse.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specialization of FTP response returning a filename lisiting. <a href="classsf_1_1Ftp_1_1ListingResponse.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class wraps a FTP response, which is basically :<ul>
-<li>a status code</li><li>a message. </li></ul>
- <a href="classsf_1_1Ftp_1_1Response.htm#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee">Binary</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2">Ascii</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4">Ebcdic</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of transfer modes. <a href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52">~Ftp</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor -- close the connection with the server. <a href="#2edfa8e9009caf27bce74459ae76dc52"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c">Connect</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Server, unsigned short Port=21, float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to the specified FTP server. <a href="#f566dc8b2595722dd08c312677c3f26c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf">Login</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Log in using anonymous account. <a href="#cee25f564e7dbab511e46e61d14bb0cf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#1ed080612214df38a5f740d1ee49f082">Login</a> (const std::string &amp;UserName, const std::string &amp;Password)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Log in using a username and a password. <a href="#1ed080612214df38a5f740d1ee49f082"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc">Disconnect</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the connection with FTP server. <a href="#5ec762168457a0b6385ad1104f5869bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4">KeepAlive</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a null command just to prevent from being disconnected. <a href="#0ee896f69d6fdaa18d65df83e7347ab4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde">GetWorkingDirectory</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current working directory. <a href="#c7ae66df8800b2dffadaa293b80f3dde"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357">GetDirectoryListing</a> (const std::string &amp;Directory=&quot;&quot;)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the contents of the given directory (subdirectories and files). <a href="#2d68f88694c0b12f1b2bfdb23246c357"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc">ChangeDirectory</a> (const std::string &amp;Directory)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the current working directory. <a href="#6b7e5a6d2f6d3a8cac82d759502f2fbc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6">ParentDirectory</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Go to the parent directory of the current one. <a href="#327e052e0c352d743804d7146a7eb6f6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071">MakeDirectory</a> (const std::string &amp;Name)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new directory. <a href="#302127842055302365b0982077f11071"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32">DeleteDirectory</a> (const std::string &amp;Name)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an existing directory. <a href="#c90d9da996773cb3eed1b715fbb85d32"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c">RenameFile</a> (const std::string &amp;File, const std::string &amp;NewName)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rename a file. <a href="#85075cbe59e9cc2ac0f8ca0b6c0e982c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9">DeleteFile</a> (const std::string &amp;Name)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an existing file. <a href="#eb6d5688700b36ea2a34a8e0dbcf43a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886">Download</a> (const std::string &amp;DistantFile, const std::string &amp;DestPath, <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> Mode=Binary)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Download a file from the server. <a href="#17e6cc8f6ce7c1904d598d5bb6a2d886"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528">Upload</a> (const std::string &amp;LocalFile, const std::string &amp;DestPath, <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> Mode=Binary)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Upload a file to the server. <a href="#32240c75993a64710da8a29804bd6528"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8dee57337b6a7e183bfe21d178757b0c"></a><!-- doxytag: member="sf::Ftp::DataChannel" ref="8dee57337b6a7e183bfe21d178757b0c" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>DataChannel</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class provides methods for manipulating the FTP protocol (described in RFC 959).
-<p>
-It provides easy access and transfers to remote directories and files on a FTP server
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00047">47</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="1cd6b89ad23253f6d97e6d4ca4d558cb"></a><!-- doxytag: member="sf::Ftp::TransferMode" ref="1cd6b89ad23253f6d97e6d4ca4d558cb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">sf::Ftp::TransferMode</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumeration of transfer modes.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee"></a><!-- doxytag: member="Binary" ref="1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee" args="" -->Binary</em>&nbsp;</td><td>
-Binary mode (file is transfered as a sequence of bytes). </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2"></a><!-- doxytag: member="Ascii" ref="1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2" args="" -->Ascii</em>&nbsp;</td><td>
-Text mode using ASCII encoding. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4"></a><!-- doxytag: member="Ebcdic" ref="1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4" args="" -->Ebcdic</em>&nbsp;</td><td>
-Text mode using EBCDIC encoding. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00054">54</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="2edfa8e9009caf27bce74459ae76dc52"></a><!-- doxytag: member="sf::Ftp::~Ftp" ref="2edfa8e9009caf27bce74459ae76dc52" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Ftp::~Ftp </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor -- close the connection with the server.
-<p>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00186">186</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="6b7e5a6d2f6d3a8cac82d759502f2fbc"></a><!-- doxytag: member="sf::Ftp::ChangeDirectory" ref="6b7e5a6d2f6d3a8cac82d759502f2fbc" args="(const std::string &amp;Directory)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::ChangeDirectory </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Directory</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the current working directory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Directory</em>&nbsp;</td><td>: New directory, relative to the current one</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00291">291</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f566dc8b2595722dd08c312677c3f26c"></a><!-- doxytag: member="sf::Ftp::Connect" ref="f566dc8b2595722dd08c312677c3f26c" args="(const IPAddress &amp;Server, unsigned short Port=21, float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Connect </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Server</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em> = <code>21</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Connect to the specified FTP server.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Server</em>&nbsp;</td><td>: FTP server to connect to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port used for connection (21 by default, standard FTP port) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Maximum time to wait, in seconds (0 by default, means no timeout)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00195">195</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c90d9da996773cb3eed1b715fbb85d32"></a><!-- doxytag: member="sf::Ftp::DeleteDirectory" ref="c90d9da996773cb3eed1b715fbb85d32" args="(const std::string &amp;Name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::DeleteDirectory </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove an existing directory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Name of the directory to remove</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00318">318</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="eb6d5688700b36ea2a34a8e0dbcf43a9"></a><!-- doxytag: member="sf::Ftp::DeleteFile" ref="eb6d5688700b36ea2a34a8e0dbcf43a9" args="(const std::string &amp;Name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::DeleteFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove an existing file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: File to remove</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00340">340</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5ec762168457a0b6385ad1104f5869bc"></a><!-- doxytag: member="sf::Ftp::Disconnect" ref="5ec762168457a0b6385ad1104f5869bc" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Disconnect </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close the connection with FTP server.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="17e6cc8f6ce7c1904d598d5bb6a2d886"></a><!-- doxytag: member="sf::Ftp::Download" ref="17e6cc8f6ce7c1904d598d5bb6a2d886" args="(const std::string &amp;DistantFile, const std::string &amp;DestPath, TransferMode Mode=Binary)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Download </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>DistantFile</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>DestPath</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> = <code>Binary</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Download a file from the server.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>DistantFile</em>&nbsp;</td><td>: Path of the distant file to download </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DestPath</em>&nbsp;</td><td>: Where to put to file on the local computer </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Transfer mode (binary by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00349">349</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2d68f88694c0b12f1b2bfdb23246c357"></a><!-- doxytag: member="sf::Ftp::GetDirectoryListing" ref="2d68f88694c0b12f1b2bfdb23246c357" args="(const std::string &amp;Directory=&quot;&quot;)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">Ftp::ListingResponse</a> sf::Ftp::GetDirectoryListing </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Directory</em> = <code>&quot;&quot;</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the contents of the given directory (subdirectories and files).
-<p>
-Get the contents of the given directory (subdirectories and files).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Directory</em>&nbsp;</td><td>: Directory to list ("" by default, the current one)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00264">264</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c7ae66df8800b2dffadaa293b80f3dde"></a><!-- doxytag: member="sf::Ftp::GetWorkingDirectory" ref="c7ae66df8800b2dffadaa293b80f3dde" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">Ftp::DirectoryResponse</a> sf::Ftp::GetWorkingDirectory </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current working directory.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00254">254</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0ee896f69d6fdaa18d65df83e7347ab4"></a><!-- doxytag: member="sf::Ftp::KeepAlive" ref="0ee896f69d6fdaa18d65df83e7347ab4" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::KeepAlive </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send a null command just to prevent from being disconnected.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00245">245</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1ed080612214df38a5f740d1ee49f082"></a><!-- doxytag: member="sf::Ftp::Login" ref="1ed080612214df38a5f740d1ee49f082" args="(const std::string &amp;UserName, const std::string &amp;Password)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Login </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>UserName</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Password</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Log in using a username and a password.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>UserName</em>&nbsp;</td><td>: User name </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Password</em>&nbsp;</td><td>: Password</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00218">218</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cee25f564e7dbab511e46e61d14bb0cf"></a><!-- doxytag: member="sf::Ftp::Login" ref="cee25f564e7dbab511e46e61d14bb0cf" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Login </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Log in using anonymous account.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00209">209</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="302127842055302365b0982077f11071"></a><!-- doxytag: member="sf::Ftp::MakeDirectory" ref="302127842055302365b0982077f11071" args="(const std::string &amp;Name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::MakeDirectory </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a new directory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Name of the directory to create</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00309">309</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="327e052e0c352d743804d7146a7eb6f6"></a><!-- doxytag: member="sf::Ftp::ParentDirectory" ref="327e052e0c352d743804d7146a7eb6f6" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::ParentDirectory </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Go to the parent directory of the current one.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00300">300</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="85075cbe59e9cc2ac0f8ca0b6c0e982c"></a><!-- doxytag: member="sf::Ftp::RenameFile" ref="85075cbe59e9cc2ac0f8ca0b6c0e982c" args="(const std::string &amp;File, const std::string &amp;NewName)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::RenameFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>File</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>NewName</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rename a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>File</em>&nbsp;</td><td>: File to rename </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NewName</em>&nbsp;</td><td>: New name</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00327">327</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="32240c75993a64710da8a29804bd6528"></a><!-- doxytag: member="sf::Ftp::Upload" ref="32240c75993a64710da8a29804bd6528" args="(const std::string &amp;LocalFile, const std::string &amp;DestPath, TransferMode Mode=Binary)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a> sf::Ftp::Upload </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>LocalFile</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>DestPath</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> = <code>Binary</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Upload a file to the server.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LocalFile</em>&nbsp;</td><td>: Path of the local file to upload </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DestPath</em>&nbsp;</td><td>: Where to put to file on the server </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Transfer mode (binary by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server response to the request </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00396">396</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a><li><a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp.png b/doc/html/classsf_1_1Ftp.png
deleted file mode 100755
index 19061e1..0000000
--- a/doc/html/classsf_1_1Ftp.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.htm b/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.htm
deleted file mode 100755
index a7ba319..0000000
--- a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse-members.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::DirectoryResponse Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">sf::Ftp::Ftp::DirectoryResponse</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc">DirectoryResponse</a>(Response Resp)</td><td><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">sf::Ftp::Ftp::DirectoryResponse</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799">GetDirectory</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">sf::Ftp::Ftp::DirectoryResponse</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">Response</a>(Status Code=InvalidResponse, const std::string &amp;Message=&quot;&quot;)</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> enum name</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.htm b/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.htm
deleted file mode 100755
index 44cce8a..0000000
--- a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.htm
+++ /dev/null
@@ -1,412 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Ftp.htm">Ftp</a>::<a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::DirectoryResponse Class Reference</h1><!-- doxytag: class="sf::Ftp::DirectoryResponse" --><!-- doxytag: inherits="sf::Ftp::Response" -->Specialization of FTP response returning a directory.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Ftp::Ftp::DirectoryResponse:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Ftp_1_1DirectoryResponse.png" usemap="#sf::Ftp::Ftp::DirectoryResponse_map" border="0" alt=""></center>
-<map name="sf::Ftp::Ftp::DirectoryResponse_map">
-<area href="classsf_1_1Ftp_1_1Response.htm" alt="sf::Ftp::Ftp::Response" shape="rect" coords="0,0,184,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Ftp_1_1DirectoryResponse-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> = 110,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> = 120,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> = 125,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> = 150,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> = 200,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> = 202,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> = 211,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> = 212,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> = 213,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> = 214,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> = 215,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> = 220,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> = 221,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> = 225,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> = 226,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> = 227,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> = 230,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> = 250,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> = 257,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> = 331,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> = 332,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> = 350,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> = 421,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> = 425,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> = 426,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> = 450,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> = 451,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> = 452,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> = 500,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> = 501,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> = 502,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> = 503,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> = 504,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> = 530,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> = 532,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> = 550,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> = 551,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> = 552,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> = 553,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> = 1000,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> = 1001,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> = 1002,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> = 1003
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate all the valid status codes returned in a FTP response. <a href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc">DirectoryResponse</a> (<a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> Resp)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#2f98f685d1aa56d3c341d38cfb2798bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799">GetDirectory</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the directory returned in the response. <a href="#a07297cc8acc9276ce5c0cfa58bac799"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function to check if the response status code means a success. <a href="#a04c49e1f6a19c5b879838d8d5f3c134"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the response status code. <a href="#8f507094af1fd34e4786d075cce102ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the full message contained in the response. <a href="#eafd573beafd242460b1a7d516d503b5"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Specialization of FTP response returning a directory.
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00182">182</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="f81738f06b6f571761696291276acb3b"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::Status" ref="f81738f06b6f571761696291276acb3b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">sf::Ftp::Response::Status</a><code> [inherited]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate all the valid status codes returned in a FTP response.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"></a><!-- doxytag: member="RestartMarkerReply" ref="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9" args="" -->RestartMarkerReply</em>&nbsp;</td><td>
-Restart marker reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"></a><!-- doxytag: member="ServiceReadySoon" ref="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e" args="" -->ServiceReadySoon</em>&nbsp;</td><td>
-Service ready in N minutes. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"></a><!-- doxytag: member="DataConnectionAlreadyOpened" ref="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f" args="" -->DataConnectionAlreadyOpened</em>&nbsp;</td><td>
-Data connection already opened, transfer starting. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"></a><!-- doxytag: member="OpeningDataConnection" ref="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf" args="" -->OpeningDataConnection</em>&nbsp;</td><td>
-File status ok, about to open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"></a><!-- doxytag: member="Ok" ref="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204" args="" -->Ok</em>&nbsp;</td><td>
-Command ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"></a><!-- doxytag: member="PointlessCommand" ref="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861" args="" -->PointlessCommand</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"></a><!-- doxytag: member="SystemStatus" ref="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165" args="" -->SystemStatus</em>&nbsp;</td><td>
-System status, or system help reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"></a><!-- doxytag: member="DirectoryStatus" ref="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680" args="" -->DirectoryStatus</em>&nbsp;</td><td>
-Directory status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"></a><!-- doxytag: member="FileStatus" ref="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0" args="" -->FileStatus</em>&nbsp;</td><td>
-File status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"></a><!-- doxytag: member="HelpMessage" ref="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017" args="" -->HelpMessage</em>&nbsp;</td><td>
-Help message. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"></a><!-- doxytag: member="SystemType" ref="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd" args="" -->SystemType</em>&nbsp;</td><td>
-NAME system type, where NAME is an official system name from the list in the Assigned Numbers document. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"></a><!-- doxytag: member="ServiceReady" ref="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2" args="" -->ServiceReady</em>&nbsp;</td><td>
-Service ready for new user. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"></a><!-- doxytag: member="ClosingConnection" ref="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78" args="" -->ClosingConnection</em>&nbsp;</td><td>
-Service closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"></a><!-- doxytag: member="DataConnectionOpened" ref="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c" args="" -->DataConnectionOpened</em>&nbsp;</td><td>
-Data connection open, no transfer in progress. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"></a><!-- doxytag: member="ClosingDataConnection" ref="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601" args="" -->ClosingDataConnection</em>&nbsp;</td><td>
-Closing data connection, requested file action successful. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"></a><!-- doxytag: member="EnteringPassiveMode" ref="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db" args="" -->EnteringPassiveMode</em>&nbsp;</td><td>
-Entering passive mode. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"></a><!-- doxytag: member="LoggedIn" ref="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac" args="" -->LoggedIn</em>&nbsp;</td><td>
-User logged in, proceed. Logged out if appropriate. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"></a><!-- doxytag: member="FileActionOk" ref="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b" args="" -->FileActionOk</em>&nbsp;</td><td>
-Requested file action ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"></a><!-- doxytag: member="DirectoryOk" ref="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab" args="" -->DirectoryOk</em>&nbsp;</td><td>
-PATHNAME created. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"></a><!-- doxytag: member="NeedPassword" ref="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b" args="" -->NeedPassword</em>&nbsp;</td><td>
-User name ok, need password. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"></a><!-- doxytag: member="NeedAccountToLogIn" ref="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0" args="" -->NeedAccountToLogIn</em>&nbsp;</td><td>
-Need account for login. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"></a><!-- doxytag: member="NeedInformation" ref="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1" args="" -->NeedInformation</em>&nbsp;</td><td>
-Requested file action pending further information. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"></a><!-- doxytag: member="ServiceUnavailable" ref="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740" args="" -->ServiceUnavailable</em>&nbsp;</td><td>
-Service not available, closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"></a><!-- doxytag: member="DataConnectionUnavailable" ref="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48" args="" -->DataConnectionUnavailable</em>&nbsp;</td><td>
-Can't open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"></a><!-- doxytag: member="TransferAborted" ref="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7" args="" -->TransferAborted</em>&nbsp;</td><td>
-Connection closed, transfer aborted. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"></a><!-- doxytag: member="FileActionAborted" ref="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664" args="" -->FileActionAborted</em>&nbsp;</td><td>
-Requested file action not taken. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"></a><!-- doxytag: member="LocalError" ref="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535" args="" -->LocalError</em>&nbsp;</td><td>
-Requested action aborted, local error in processing. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"></a><!-- doxytag: member="InsufficientStorageSpace" ref="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee" args="" -->InsufficientStorageSpace</em>&nbsp;</td><td>
-Requested action not taken; insufficient storage space in system, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"></a><!-- doxytag: member="CommandUnknown" ref="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9" args="" -->CommandUnknown</em>&nbsp;</td><td>
-Syntax error, command unrecognized. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"></a><!-- doxytag: member="ParametersUnknown" ref="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05" args="" -->ParametersUnknown</em>&nbsp;</td><td>
-Syntax error in parameters or arguments. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"></a><!-- doxytag: member="CommandNotImplemented" ref="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56" args="" -->CommandNotImplemented</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"></a><!-- doxytag: member="BadCommandSequence" ref="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb" args="" -->BadCommandSequence</em>&nbsp;</td><td>
-Bad sequence of commands. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"></a><!-- doxytag: member="ParameterNotImplemented" ref="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450" args="" -->ParameterNotImplemented</em>&nbsp;</td><td>
-Command not implemented for that parameter. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"></a><!-- doxytag: member="NotLoggedIn" ref="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69" args="" -->NotLoggedIn</em>&nbsp;</td><td>
-Not logged in. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"></a><!-- doxytag: member="NeedAccountToStore" ref="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4" args="" -->NeedAccountToStore</em>&nbsp;</td><td>
-Need account for storing files. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"></a><!-- doxytag: member="FileUnavailable" ref="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1" args="" -->FileUnavailable</em>&nbsp;</td><td>
-Requested action not taken, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"></a><!-- doxytag: member="PageTypeUnknown" ref="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a" args="" -->PageTypeUnknown</em>&nbsp;</td><td>
-Requested action aborted, page type unknown. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"></a><!-- doxytag: member="NotEnoughMemory" ref="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3" args="" -->NotEnoughMemory</em>&nbsp;</td><td>
-Requested file action aborted, exceeded storage allocation. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"></a><!-- doxytag: member="FilenameNotAllowed" ref="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86" args="" -->FilenameNotAllowed</em>&nbsp;</td><td>
-Requested action not taken, file name not allowed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"></a><!-- doxytag: member="InvalidResponse" ref="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b" args="" -->InvalidResponse</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> is not a valid FTP one. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"></a><!-- doxytag: member="ConnectionFailed" ref="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c" args="" -->ConnectionFailed</em>&nbsp;</td><td>
-Connection with server failed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"></a><!-- doxytag: member="ConnectionClosed" ref="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6" args="" -->ConnectionClosed</em>&nbsp;</td><td>
-Connection with server closed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"></a><!-- doxytag: member="InvalidFile" ref="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935" args="" -->InvalidFile</em>&nbsp;</td><td>
-Invalid file to upload / download. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00074">74</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="2f98f685d1aa56d3c341d38cfb2798bc"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::DirectoryResponse" ref="2f98f685d1aa56d3c341d38cfb2798bc" args="(Response Resp)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Ftp::Ftp::DirectoryResponse::DirectoryResponse </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a>&nbsp;</td>
- <td class="paramname"> <em>Resp</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Resp</em>&nbsp;</td><td>: Source response </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00123">123</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a07297cc8acc9276ce5c0cfa58bac799"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::GetDirectory" ref="a07297cc8acc9276ce5c0cfa58bac799" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Ftp::Ftp::DirectoryResponse::GetDirectory </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the directory returned in the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Directory name </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00139">139</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="eafd573beafd242460b1a7d516d503b5"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::GetMessage" ref="eafd573beafd242460b1a7d516d503b5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Ftp::Ftp::Response::GetMessage </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the full message contained in the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The response message </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00114">114</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8f507094af1fd34e4786d075cce102ee"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::GetStatus" ref="8f507094af1fd34e4786d075cce102ee" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Ftp::Response::Status</a> sf::Ftp::Ftp::Response::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the response status code.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00105">105</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a04c49e1f6a19c5b879838d8d5f3c134"></a><!-- doxytag: member="sf::Ftp::DirectoryResponse::IsOk" ref="a04c49e1f6a19c5b879838d8d5f3c134" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Ftp::Ftp::Response::IsOk </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convenience function to check if the response status code means a success.
-<p>
-Convenience function to check if the response status code means a success.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if status is success (code &lt; 400) </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a><li><a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png b/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png
deleted file mode 100755
index 0d84566..0000000
--- a/doc/html/classsf_1_1Ftp_1_1DirectoryResponse.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Ftp_1_1ListingResponse-members.htm b/doc/html/classsf_1_1Ftp_1_1ListingResponse-members.htm
deleted file mode 100755
index 1b872f5..0000000
--- a/doc/html/classsf_1_1Ftp_1_1ListingResponse-members.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::ListingResponse Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522">GetCount</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922">GetFilename</a>(std::size_t Index) const </td><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5">ListingResponse</a>(Response Resp, const std::vector&lt; char &gt; &amp;Data)</td><td><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">Response</a>(Status Code=InvalidResponse, const std::string &amp;Message=&quot;&quot;)</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> enum name</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1ListingResponse.htm b/doc/html/classsf_1_1Ftp_1_1ListingResponse.htm
deleted file mode 100755
index 99ab1a5..0000000
--- a/doc/html/classsf_1_1Ftp_1_1ListingResponse.htm
+++ /dev/null
@@ -1,455 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Ftp.htm">Ftp</a>::<a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::ListingResponse Class Reference</h1><!-- doxytag: class="sf::Ftp::ListingResponse" --><!-- doxytag: inherits="sf::Ftp::Response" -->Specialization of FTP response returning a filename lisiting.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Ftp::Ftp::ListingResponse:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Ftp_1_1ListingResponse.png" usemap="#sf::Ftp::Ftp::ListingResponse_map" border="0" alt=""></center>
-<map name="sf::Ftp::Ftp::ListingResponse_map">
-<area href="classsf_1_1Ftp_1_1Response.htm" alt="sf::Ftp::Ftp::Response" shape="rect" coords="0,0,167,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Ftp_1_1ListingResponse-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> = 110,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> = 120,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> = 125,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> = 150,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> = 200,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> = 202,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> = 211,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> = 212,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> = 213,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> = 214,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> = 215,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> = 220,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> = 221,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> = 225,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> = 226,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> = 227,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> = 230,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> = 250,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> = 257,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> = 331,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> = 332,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> = 350,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> = 421,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> = 425,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> = 426,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> = 450,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> = 451,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> = 452,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> = 500,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> = 501,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> = 502,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> = 503,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> = 504,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> = 530,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> = 532,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> = 550,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> = 551,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> = 552,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> = 553,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> = 1000,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> = 1001,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> = 1002,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> = 1003
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate all the valid status codes returned in a FTP response. <a href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5">ListingResponse</a> (<a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> Resp, const std::vector&lt; char &gt; &amp;Data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#2815303ca236427cf5bd1c09469f7db5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522">GetCount</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of filenames in the listing. <a href="#6c4b942fe9e3da2c7104de7d8a13e522"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922">GetFilename</a> (std::size_t Index) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Index-th filename in the directory. <a href="#11b761b5fa04b5e2c3bac972cf4a8922"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function to check if the response status code means a success. <a href="#a04c49e1f6a19c5b879838d8d5f3c134"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the response status code. <a href="#8f507094af1fd34e4786d075cce102ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the full message contained in the response. <a href="#eafd573beafd242460b1a7d516d503b5"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Specialization of FTP response returning a filename lisiting.
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00214">214</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="f81738f06b6f571761696291276acb3b"></a><!-- doxytag: member="sf::Ftp::ListingResponse::Status" ref="f81738f06b6f571761696291276acb3b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">sf::Ftp::Response::Status</a><code> [inherited]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate all the valid status codes returned in a FTP response.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"></a><!-- doxytag: member="RestartMarkerReply" ref="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9" args="" -->RestartMarkerReply</em>&nbsp;</td><td>
-Restart marker reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"></a><!-- doxytag: member="ServiceReadySoon" ref="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e" args="" -->ServiceReadySoon</em>&nbsp;</td><td>
-Service ready in N minutes. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"></a><!-- doxytag: member="DataConnectionAlreadyOpened" ref="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f" args="" -->DataConnectionAlreadyOpened</em>&nbsp;</td><td>
-Data connection already opened, transfer starting. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"></a><!-- doxytag: member="OpeningDataConnection" ref="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf" args="" -->OpeningDataConnection</em>&nbsp;</td><td>
-File status ok, about to open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"></a><!-- doxytag: member="Ok" ref="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204" args="" -->Ok</em>&nbsp;</td><td>
-Command ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"></a><!-- doxytag: member="PointlessCommand" ref="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861" args="" -->PointlessCommand</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"></a><!-- doxytag: member="SystemStatus" ref="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165" args="" -->SystemStatus</em>&nbsp;</td><td>
-System status, or system help reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"></a><!-- doxytag: member="DirectoryStatus" ref="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680" args="" -->DirectoryStatus</em>&nbsp;</td><td>
-Directory status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"></a><!-- doxytag: member="FileStatus" ref="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0" args="" -->FileStatus</em>&nbsp;</td><td>
-File status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"></a><!-- doxytag: member="HelpMessage" ref="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017" args="" -->HelpMessage</em>&nbsp;</td><td>
-Help message. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"></a><!-- doxytag: member="SystemType" ref="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd" args="" -->SystemType</em>&nbsp;</td><td>
-NAME system type, where NAME is an official system name from the list in the Assigned Numbers document. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"></a><!-- doxytag: member="ServiceReady" ref="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2" args="" -->ServiceReady</em>&nbsp;</td><td>
-Service ready for new user. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"></a><!-- doxytag: member="ClosingConnection" ref="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78" args="" -->ClosingConnection</em>&nbsp;</td><td>
-Service closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"></a><!-- doxytag: member="DataConnectionOpened" ref="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c" args="" -->DataConnectionOpened</em>&nbsp;</td><td>
-Data connection open, no transfer in progress. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"></a><!-- doxytag: member="ClosingDataConnection" ref="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601" args="" -->ClosingDataConnection</em>&nbsp;</td><td>
-Closing data connection, requested file action successful. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"></a><!-- doxytag: member="EnteringPassiveMode" ref="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db" args="" -->EnteringPassiveMode</em>&nbsp;</td><td>
-Entering passive mode. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"></a><!-- doxytag: member="LoggedIn" ref="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac" args="" -->LoggedIn</em>&nbsp;</td><td>
-User logged in, proceed. Logged out if appropriate. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"></a><!-- doxytag: member="FileActionOk" ref="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b" args="" -->FileActionOk</em>&nbsp;</td><td>
-Requested file action ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"></a><!-- doxytag: member="DirectoryOk" ref="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab" args="" -->DirectoryOk</em>&nbsp;</td><td>
-PATHNAME created. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"></a><!-- doxytag: member="NeedPassword" ref="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b" args="" -->NeedPassword</em>&nbsp;</td><td>
-User name ok, need password. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"></a><!-- doxytag: member="NeedAccountToLogIn" ref="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0" args="" -->NeedAccountToLogIn</em>&nbsp;</td><td>
-Need account for login. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"></a><!-- doxytag: member="NeedInformation" ref="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1" args="" -->NeedInformation</em>&nbsp;</td><td>
-Requested file action pending further information. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"></a><!-- doxytag: member="ServiceUnavailable" ref="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740" args="" -->ServiceUnavailable</em>&nbsp;</td><td>
-Service not available, closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"></a><!-- doxytag: member="DataConnectionUnavailable" ref="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48" args="" -->DataConnectionUnavailable</em>&nbsp;</td><td>
-Can't open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"></a><!-- doxytag: member="TransferAborted" ref="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7" args="" -->TransferAborted</em>&nbsp;</td><td>
-Connection closed, transfer aborted. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"></a><!-- doxytag: member="FileActionAborted" ref="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664" args="" -->FileActionAborted</em>&nbsp;</td><td>
-Requested file action not taken. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"></a><!-- doxytag: member="LocalError" ref="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535" args="" -->LocalError</em>&nbsp;</td><td>
-Requested action aborted, local error in processing. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"></a><!-- doxytag: member="InsufficientStorageSpace" ref="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee" args="" -->InsufficientStorageSpace</em>&nbsp;</td><td>
-Requested action not taken; insufficient storage space in system, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"></a><!-- doxytag: member="CommandUnknown" ref="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9" args="" -->CommandUnknown</em>&nbsp;</td><td>
-Syntax error, command unrecognized. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"></a><!-- doxytag: member="ParametersUnknown" ref="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05" args="" -->ParametersUnknown</em>&nbsp;</td><td>
-Syntax error in parameters or arguments. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"></a><!-- doxytag: member="CommandNotImplemented" ref="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56" args="" -->CommandNotImplemented</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"></a><!-- doxytag: member="BadCommandSequence" ref="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb" args="" -->BadCommandSequence</em>&nbsp;</td><td>
-Bad sequence of commands. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"></a><!-- doxytag: member="ParameterNotImplemented" ref="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450" args="" -->ParameterNotImplemented</em>&nbsp;</td><td>
-Command not implemented for that parameter. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"></a><!-- doxytag: member="NotLoggedIn" ref="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69" args="" -->NotLoggedIn</em>&nbsp;</td><td>
-Not logged in. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"></a><!-- doxytag: member="NeedAccountToStore" ref="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4" args="" -->NeedAccountToStore</em>&nbsp;</td><td>
-Need account for storing files. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"></a><!-- doxytag: member="FileUnavailable" ref="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1" args="" -->FileUnavailable</em>&nbsp;</td><td>
-Requested action not taken, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"></a><!-- doxytag: member="PageTypeUnknown" ref="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a" args="" -->PageTypeUnknown</em>&nbsp;</td><td>
-Requested action aborted, page type unknown. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"></a><!-- doxytag: member="NotEnoughMemory" ref="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3" args="" -->NotEnoughMemory</em>&nbsp;</td><td>
-Requested file action aborted, exceeded storage allocation. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"></a><!-- doxytag: member="FilenameNotAllowed" ref="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86" args="" -->FilenameNotAllowed</em>&nbsp;</td><td>
-Requested action not taken, file name not allowed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"></a><!-- doxytag: member="InvalidResponse" ref="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b" args="" -->InvalidResponse</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> is not a valid FTP one. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"></a><!-- doxytag: member="ConnectionFailed" ref="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c" args="" -->ConnectionFailed</em>&nbsp;</td><td>
-Connection with server failed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"></a><!-- doxytag: member="ConnectionClosed" ref="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6" args="" -->ConnectionClosed</em>&nbsp;</td><td>
-Connection with server closed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"></a><!-- doxytag: member="InvalidFile" ref="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935" args="" -->InvalidFile</em>&nbsp;</td><td>
-Invalid file to upload / download. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00074">74</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="2815303ca236427cf5bd1c09469f7db5"></a><!-- doxytag: member="sf::Ftp::ListingResponse::ListingResponse" ref="2815303ca236427cf5bd1c09469f7db5" args="(Response Resp, const std::vector&lt; char &gt; &amp;Data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Ftp::Ftp::ListingResponse::ListingResponse </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Ftp::Response</a>&nbsp;</td>
- <td class="paramname"> <em>Resp</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::vector&lt; char &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Data</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Resp</em>&nbsp;</td><td>: Source response </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Data containing the raw listing </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00148">148</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="6c4b942fe9e3da2c7104de7d8a13e522"></a><!-- doxytag: member="sf::Ftp::ListingResponse::GetCount" ref="6c4b942fe9e3da2c7104de7d8a13e522" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::Ftp::Ftp::ListingResponse::GetCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of filenames in the listing.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Total number of filenames </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00168">168</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11b761b5fa04b5e2c3bac972cf4a8922"></a><!-- doxytag: member="sf::Ftp::ListingResponse::GetFilename" ref="11b761b5fa04b5e2c3bac972cf4a8922" args="(std::size_t Index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Ftp::Ftp::ListingResponse::GetFilename </td>
- <td>(</td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the Index-th filename in the directory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the filename to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Index-th filename </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00177">177</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="eafd573beafd242460b1a7d516d503b5"></a><!-- doxytag: member="sf::Ftp::ListingResponse::GetMessage" ref="eafd573beafd242460b1a7d516d503b5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Ftp::Ftp::Response::GetMessage </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the full message contained in the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The response message </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00114">114</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8f507094af1fd34e4786d075cce102ee"></a><!-- doxytag: member="sf::Ftp::ListingResponse::GetStatus" ref="8f507094af1fd34e4786d075cce102ee" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Ftp::Response::Status</a> sf::Ftp::Ftp::Response::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the response status code.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00105">105</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a04c49e1f6a19c5b879838d8d5f3c134"></a><!-- doxytag: member="sf::Ftp::ListingResponse::IsOk" ref="a04c49e1f6a19c5b879838d8d5f3c134" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Ftp::Ftp::Response::IsOk </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convenience function to check if the response status code means a success.
-<p>
-Convenience function to check if the response status code means a success.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if status is success (code &lt; 400) </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a><li><a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1ListingResponse.png b/doc/html/classsf_1_1Ftp_1_1ListingResponse.png
deleted file mode 100755
index 3ea6a38..0000000
--- a/doc/html/classsf_1_1Ftp_1_1ListingResponse.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Ftp_1_1Response-members.htm b/doc/html/classsf_1_1Ftp_1_1Response-members.htm
deleted file mode 100755
index e8f3948..0000000
--- a/doc/html/classsf_1_1Ftp_1_1Response-members.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::Response Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a>() const </td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">Response</a>(Status Code=InvalidResponse, const std::string &amp;Message=&quot;&quot;)</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> enum name</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> enum value</td><td><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1Response.htm b/doc/html/classsf_1_1Ftp_1_1Response.htm
deleted file mode 100755
index 913cc41..0000000
--- a/doc/html/classsf_1_1Ftp_1_1Response.htm
+++ /dev/null
@@ -1,400 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Ftp.htm">Ftp</a>::<a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Ftp::Ftp::Response Class Reference</h1><!-- doxytag: class="sf::Ftp::Response" -->This class wraps a FTP response, which is basically :<ul>
-<li>a status code</li><li>a message. </li></ul>
-
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Ftp::Ftp::Response:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Ftp_1_1Response.png" usemap="#sf::Ftp::Ftp::Response_map" border="0" alt=""></center>
-<map name="sf::Ftp::Ftp::Response_map">
-<area href="classsf_1_1Ftp_1_1DirectoryResponse.htm" alt="sf::Ftp::Ftp::DirectoryResponse" shape="rect" coords="0,56,184,80">
-<area href="classsf_1_1Ftp_1_1ListingResponse.htm" alt="sf::Ftp::Ftp::ListingResponse" shape="rect" coords="194,56,378,80">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Ftp_1_1Response-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">RestartMarkerReply</a> = 110,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">ServiceReadySoon</a> = 120,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">DataConnectionAlreadyOpened</a> = 125,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">OpeningDataConnection</a> = 150,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">Ok</a> = 200,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">PointlessCommand</a> = 202,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">SystemStatus</a> = 211,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">DirectoryStatus</a> = 212,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">FileStatus</a> = 213,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">HelpMessage</a> = 214,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">SystemType</a> = 215,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">ServiceReady</a> = 220,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">ClosingConnection</a> = 221,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">DataConnectionOpened</a> = 225,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">ClosingDataConnection</a> = 226,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">EnteringPassiveMode</a> = 227,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">LoggedIn</a> = 230,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">FileActionOk</a> = 250,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">DirectoryOk</a> = 257,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">NeedPassword</a> = 331,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">NeedAccountToLogIn</a> = 332,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">NeedInformation</a> = 350,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">ServiceUnavailable</a> = 421,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">DataConnectionUnavailable</a> = 425,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">TransferAborted</a> = 426,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">FileActionAborted</a> = 450,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">LocalError</a> = 451,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">InsufficientStorageSpace</a> = 452,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">CommandUnknown</a> = 500,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">ParametersUnknown</a> = 501,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">CommandNotImplemented</a> = 502,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">BadCommandSequence</a> = 503,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">ParameterNotImplemented</a> = 504,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">NotLoggedIn</a> = 530,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">NeedAccountToStore</a> = 532,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">FileUnavailable</a> = 550,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">PageTypeUnknown</a> = 551,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">NotEnoughMemory</a> = 552,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">FilenameNotAllowed</a> = 553,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">InvalidResponse</a> = 1000,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">ConnectionFailed</a> = 1001,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">ConnectionClosed</a> = 1002,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">InvalidFile</a> = 1003
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate all the valid status codes returned in a FTP response. <a href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">Response</a> (<a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a> Code=InvalidResponse, const std::string &amp;Message=&quot;&quot;)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#b11ecf1c327da80f3e89e265ac741fc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">IsOk</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function to check if the response status code means a success. <a href="#a04c49e1f6a19c5b879838d8d5f3c134"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the response status code. <a href="#8f507094af1fd34e4786d075cce102ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">GetMessage</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the full message contained in the response. <a href="#eafd573beafd242460b1a7d516d503b5"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class wraps a FTP response, which is basically :<ul>
-<li>a status code</li><li>a message. </li></ul>
-
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00066">66</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="f81738f06b6f571761696291276acb3b"></a><!-- doxytag: member="sf::Ftp::Response::Status" ref="f81738f06b6f571761696291276acb3b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">sf::Ftp::Response::Status</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate all the valid status codes returned in a FTP response.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"></a><!-- doxytag: member="RestartMarkerReply" ref="f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9" args="" -->RestartMarkerReply</em>&nbsp;</td><td>
-Restart marker reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"></a><!-- doxytag: member="ServiceReadySoon" ref="f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e" args="" -->ServiceReadySoon</em>&nbsp;</td><td>
-Service ready in N minutes. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"></a><!-- doxytag: member="DataConnectionAlreadyOpened" ref="f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f" args="" -->DataConnectionAlreadyOpened</em>&nbsp;</td><td>
-Data connection already opened, transfer starting. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"></a><!-- doxytag: member="OpeningDataConnection" ref="f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf" args="" -->OpeningDataConnection</em>&nbsp;</td><td>
-File status ok, about to open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"></a><!-- doxytag: member="Ok" ref="f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204" args="" -->Ok</em>&nbsp;</td><td>
-Command ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"></a><!-- doxytag: member="PointlessCommand" ref="f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861" args="" -->PointlessCommand</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"></a><!-- doxytag: member="SystemStatus" ref="f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165" args="" -->SystemStatus</em>&nbsp;</td><td>
-System status, or system help reply. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"></a><!-- doxytag: member="DirectoryStatus" ref="f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680" args="" -->DirectoryStatus</em>&nbsp;</td><td>
-Directory status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"></a><!-- doxytag: member="FileStatus" ref="f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0" args="" -->FileStatus</em>&nbsp;</td><td>
-File status. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"></a><!-- doxytag: member="HelpMessage" ref="f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017" args="" -->HelpMessage</em>&nbsp;</td><td>
-Help message. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"></a><!-- doxytag: member="SystemType" ref="f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd" args="" -->SystemType</em>&nbsp;</td><td>
-NAME system type, where NAME is an official system name from the list in the Assigned Numbers document. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"></a><!-- doxytag: member="ServiceReady" ref="f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2" args="" -->ServiceReady</em>&nbsp;</td><td>
-Service ready for new user. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"></a><!-- doxytag: member="ClosingConnection" ref="f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78" args="" -->ClosingConnection</em>&nbsp;</td><td>
-Service closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"></a><!-- doxytag: member="DataConnectionOpened" ref="f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c" args="" -->DataConnectionOpened</em>&nbsp;</td><td>
-Data connection open, no transfer in progress. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"></a><!-- doxytag: member="ClosingDataConnection" ref="f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601" args="" -->ClosingDataConnection</em>&nbsp;</td><td>
-Closing data connection, requested file action successful. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"></a><!-- doxytag: member="EnteringPassiveMode" ref="f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db" args="" -->EnteringPassiveMode</em>&nbsp;</td><td>
-Entering passive mode. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"></a><!-- doxytag: member="LoggedIn" ref="f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac" args="" -->LoggedIn</em>&nbsp;</td><td>
-User logged in, proceed. Logged out if appropriate. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"></a><!-- doxytag: member="FileActionOk" ref="f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b" args="" -->FileActionOk</em>&nbsp;</td><td>
-Requested file action ok. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"></a><!-- doxytag: member="DirectoryOk" ref="f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab" args="" -->DirectoryOk</em>&nbsp;</td><td>
-PATHNAME created. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"></a><!-- doxytag: member="NeedPassword" ref="f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b" args="" -->NeedPassword</em>&nbsp;</td><td>
-User name ok, need password. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"></a><!-- doxytag: member="NeedAccountToLogIn" ref="f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0" args="" -->NeedAccountToLogIn</em>&nbsp;</td><td>
-Need account for login. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"></a><!-- doxytag: member="NeedInformation" ref="f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1" args="" -->NeedInformation</em>&nbsp;</td><td>
-Requested file action pending further information. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"></a><!-- doxytag: member="ServiceUnavailable" ref="f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740" args="" -->ServiceUnavailable</em>&nbsp;</td><td>
-Service not available, closing control connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"></a><!-- doxytag: member="DataConnectionUnavailable" ref="f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48" args="" -->DataConnectionUnavailable</em>&nbsp;</td><td>
-Can't open data connection. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"></a><!-- doxytag: member="TransferAborted" ref="f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7" args="" -->TransferAborted</em>&nbsp;</td><td>
-Connection closed, transfer aborted. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"></a><!-- doxytag: member="FileActionAborted" ref="f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664" args="" -->FileActionAborted</em>&nbsp;</td><td>
-Requested file action not taken. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"></a><!-- doxytag: member="LocalError" ref="f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535" args="" -->LocalError</em>&nbsp;</td><td>
-Requested action aborted, local error in processing. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"></a><!-- doxytag: member="InsufficientStorageSpace" ref="f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee" args="" -->InsufficientStorageSpace</em>&nbsp;</td><td>
-Requested action not taken; insufficient storage space in system, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"></a><!-- doxytag: member="CommandUnknown" ref="f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9" args="" -->CommandUnknown</em>&nbsp;</td><td>
-Syntax error, command unrecognized. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"></a><!-- doxytag: member="ParametersUnknown" ref="f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05" args="" -->ParametersUnknown</em>&nbsp;</td><td>
-Syntax error in parameters or arguments. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"></a><!-- doxytag: member="CommandNotImplemented" ref="f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56" args="" -->CommandNotImplemented</em>&nbsp;</td><td>
-Command not implemented. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"></a><!-- doxytag: member="BadCommandSequence" ref="f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb" args="" -->BadCommandSequence</em>&nbsp;</td><td>
-Bad sequence of commands. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"></a><!-- doxytag: member="ParameterNotImplemented" ref="f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450" args="" -->ParameterNotImplemented</em>&nbsp;</td><td>
-Command not implemented for that parameter. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"></a><!-- doxytag: member="NotLoggedIn" ref="f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69" args="" -->NotLoggedIn</em>&nbsp;</td><td>
-Not logged in. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"></a><!-- doxytag: member="NeedAccountToStore" ref="f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4" args="" -->NeedAccountToStore</em>&nbsp;</td><td>
-Need account for storing files. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"></a><!-- doxytag: member="FileUnavailable" ref="f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1" args="" -->FileUnavailable</em>&nbsp;</td><td>
-Requested action not taken, file unavailable. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"></a><!-- doxytag: member="PageTypeUnknown" ref="f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a" args="" -->PageTypeUnknown</em>&nbsp;</td><td>
-Requested action aborted, page type unknown. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"></a><!-- doxytag: member="NotEnoughMemory" ref="f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3" args="" -->NotEnoughMemory</em>&nbsp;</td><td>
-Requested file action aborted, exceeded storage allocation. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"></a><!-- doxytag: member="FilenameNotAllowed" ref="f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86" args="" -->FilenameNotAllowed</em>&nbsp;</td><td>
-Requested action not taken, file name not allowed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"></a><!-- doxytag: member="InvalidResponse" ref="f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b" args="" -->InvalidResponse</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> is not a valid FTP one. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"></a><!-- doxytag: member="ConnectionFailed" ref="f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c" args="" -->ConnectionFailed</em>&nbsp;</td><td>
-Connection with server failed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"></a><!-- doxytag: member="ConnectionClosed" ref="f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6" args="" -->ConnectionClosed</em>&nbsp;</td><td>
-Connection with server closed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"></a><!-- doxytag: member="InvalidFile" ref="f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935" args="" -->InvalidFile</em>&nbsp;</td><td>
-Invalid file to upload / download. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8hpp-source.htm#l00074">74</a> of file <a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="b11ecf1c327da80f3e89e265ac741fc2"></a><!-- doxytag: member="sf::Ftp::Response::Response" ref="b11ecf1c327da80f3e89e265ac741fc2" args="(Status Code=InvalidResponse, const std::string &amp;Message=&quot;&quot;)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Ftp::Ftp::Response::Response </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Status</a>&nbsp;</td>
- <td class="paramname"> <em>Code</em> = <code>InvalidResponse</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Message</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Code</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> status code (InvalidResponse by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Message</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="This class wraps a FTP response, which is basically :a status codea message.">Response</a> message (empty by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00084">84</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="eafd573beafd242460b1a7d516d503b5"></a><!-- doxytag: member="sf::Ftp::Response::GetMessage" ref="eafd573beafd242460b1a7d516d503b5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Ftp::Ftp::Response::GetMessage </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the full message contained in the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The response message </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00114">114</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8f507094af1fd34e4786d075cce102ee"></a><!-- doxytag: member="sf::Ftp::Response::GetStatus" ref="8f507094af1fd34e4786d075cce102ee" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">Ftp::Response::Status</a> sf::Ftp::Ftp::Response::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the response status code.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00105">105</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a04c49e1f6a19c5b879838d8d5f3c134"></a><!-- doxytag: member="sf::Ftp::Response::IsOk" ref="a04c49e1f6a19c5b879838d8d5f3c134" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Ftp::Ftp::Response::IsOk </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convenience function to check if the response status code means a success.
-<p>
-Convenience function to check if the response status code means a success.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if status is success (code &lt; 400) </dd></dl>
-
-<p>Definition at line <a class="el" href="Ftp_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Ftp_8hpp-source.htm">Ftp.hpp</a><li><a class="el" href="Ftp_8cpp-source.htm">Ftp.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Ftp_1_1Response.png b/doc/html/classsf_1_1Ftp_1_1Response.png
deleted file mode 100755
index e8eb47a..0000000
--- a/doc/html/classsf_1_1Ftp_1_1Response.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Glyph-members.htm b/doc/html/classsf_1_1Glyph-members.htm
deleted file mode 100755
index c7cb40c..0000000
--- a/doc/html/classsf_1_1Glyph-members.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Glyph Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">Advance</a></td><td><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b">Glyph</a>()</td><td><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">Rectangle</a></td><td><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">TexCoords</a></td><td><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Glyph.htm b/doc/html/classsf_1_1Glyph.htm
deleted file mode 100755
index 83fc112..0000000
--- a/doc/html/classsf_1_1Glyph.htm
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Glyph.htm">Glyph</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Glyph Class Reference</h1><!-- doxytag: class="sf::Glyph" -->Structure describing a glyph (a visual character).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Glyph-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b">Glyph</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#b15cfc37eb7b40a94b3b3aedf934010b"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">Advance</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset to move horizontically to the next character. <a href="#72adc6b808a530da296581f11e26bcc6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Rect.htm">IntRect</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">Rectangle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bounding rectangle of the glyph, in relative coordinates. <a href="#3bf41b651a39c09ac8a7355167410f76"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">TexCoords</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Texture coordinates of the glyph inside the bitmap font. <a href="#90bedab27a26b2b0cb7e661bdccf3370"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Structure describing a glyph (a visual character).
-<p>Definition at line <a class="el" href="Glyph_8hpp-source.htm#l00040">40</a> of file <a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="b15cfc37eb7b40a94b3b3aedf934010b"></a><!-- doxytag: member="sf::Glyph::Glyph" ref="b15cfc37eb7b40a94b3b3aedf934010b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Glyph::Glyph </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Glyph_8hpp-source.htm#l00048">48</a> of file <a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="72adc6b808a530da296581f11e26bcc6"></a><!-- doxytag: member="sf::Glyph::Advance" ref="72adc6b808a530da296581f11e26bcc6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">sf::Glyph::Advance</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Offset to move horizontically to the next character.
-<p>
-
-<p>Definition at line <a class="el" href="Glyph_8hpp-source.htm#l00053">53</a> of file <a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3bf41b651a39c09ac8a7355167410f76"></a><!-- doxytag: member="sf::Glyph::Rectangle" ref="3bf41b651a39c09ac8a7355167410f76" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">IntRect</a> <a class="el" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">sf::Glyph::Rectangle</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bounding rectangle of the glyph, in relative coordinates.
-<p>
-
-<p>Definition at line <a class="el" href="Glyph_8hpp-source.htm#l00054">54</a> of file <a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="90bedab27a26b2b0cb7e661bdccf3370"></a><!-- doxytag: member="sf::Glyph::TexCoords" ref="90bedab27a26b2b0cb7e661bdccf3370" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a> <a class="el" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">sf::Glyph::TexCoords</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Texture coordinates of the glyph inside the bitmap font.
-<p>
-
-<p>Definition at line <a class="el" href="Glyph_8hpp-source.htm#l00055">55</a> of file <a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Glyph_8hpp-source.htm">Glyph.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http-members.htm b/doc/html/classsf_1_1Http-members.htm
deleted file mode 100755
index f24a719..0000000
--- a/doc/html/classsf_1_1Http-members.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Http.htm">sf::Http</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067">Http</a>()</td><td><a class="el" href="classsf_1_1Http.htm">sf::Http</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http.htm#283ce40b04ef678916834b8032796677">Http</a>(const std::string &amp;Host, unsigned short Port=0)</td><td><a class="el" href="classsf_1_1Http.htm">sf::Http</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61">SendRequest</a>(const Request &amp;Req, float Timeout=0.f)</td><td><a class="el" href="classsf_1_1Http.htm">sf::Http</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f">SetHost</a>(const std::string &amp;Host, unsigned short Port=0)</td><td><a class="el" href="classsf_1_1Http.htm">sf::Http</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http.htm b/doc/html/classsf_1_1Http.htm
deleted file mode 100755
index 96a61c3..0000000
--- a/doc/html/classsf_1_1Http.htm
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Http.htm">Http</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http Class Reference</h1><!-- doxytag: class="sf::Http" --><!-- doxytag: inherits="sf::NonCopyable" -->This class provides methods for manipulating the HTTP protocol (described in RFC 1945).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Http_8hpp-source.htm">Http.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Http:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Http.png" usemap="#sf::Http_map" border="0" alt=""></center>
-<map name="sf::Http_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="0,0,105,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Http-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm">Request</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class wraps an HTTP request, which is basically :<ul>
-<li>a header with a method, a target URI, and a set of field/value pairs</li><li>an optional body (for POST requests). </li></ul>
- <a href="classsf_1_1Http_1_1Request.htm#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm">Response</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class wraps an HTTP response, which is basically :<ul>
-<li>a header with a status code and a set of field/value pairs</li><li>a body (the content of the requested resource). </li></ul>
- <a href="classsf_1_1Http_1_1Response.htm#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067">Http</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#be2360194f99bdde402c9f97a85cf067"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http.htm#283ce40b04ef678916834b8032796677">Http</a> (const std::string &amp;Host, unsigned short Port=0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the <a class="el" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a> instance with the target host. <a href="#283ce40b04ef678916834b8032796677"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f">SetHost</a> (const std::string &amp;Host, unsigned short Port=0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the target host. <a href="#233fb3eabfeb22a442a0db92e38aee1f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Http_1_1Response.htm">Response</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61">SendRequest</a> (const <a class="el" href="classsf_1_1Http_1_1Request.htm">Request</a> &amp;Req, float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a HTTP request and return the server's response. <a href="#25a88ce405f43feb9faf4480ea3c2d61"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class provides methods for manipulating the HTTP protocol (described in RFC 1945).
-<p>
-It can connect to a website, get its files, send requests, etc.
-<p>Definition at line <a class="el" href="Http_8hpp-source.htm#l00045">45</a> of file <a class="el" href="Http_8hpp-source.htm">Http.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="be2360194f99bdde402c9f97a85cf067"></a><!-- doxytag: member="sf::Http::Http" ref="be2360194f99bdde402c9f97a85cf067" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Http::Http </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00307">307</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="283ce40b04ef678916834b8032796677"></a><!-- doxytag: member="sf::Http::Http" ref="283ce40b04ef678916834b8032796677" args="(const std::string &amp;Host, unsigned short Port=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Http::Http </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Host</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the <a class="el" href="classsf_1_1Http.htm" title="This class provides methods for manipulating the HTTP protocol (described in RFC...">Http</a> instance with the target host.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Host</em>&nbsp;</td><td>: Web server to connect to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to use for connection (0 by default -- use the standard port of the protocol used) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00318">318</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="25a88ce405f43feb9faf4480ea3c2d61"></a><!-- doxytag: member="sf::Http::SendRequest" ref="25a88ce405f43feb9faf4480ea3c2d61" args="(const Request &amp;Req, float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Http_1_1Response.htm">Http::Response</a> sf::Http::SendRequest </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Http_1_1Request.htm">Request</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Req</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send a HTTP request and return the server's response.
-<p>
-You must be connected to a host before sending requests. Any missing mandatory header field will be added with an appropriate value. Warning : this function waits for the server's response and may not return instantly; use a thread if you don't want to block your application.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Req</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a> to send </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Maximum time to wait, in seconds (0 by default, means no timeout)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Server's response</dd></dl>
-You must be connected to a host before sending requests. Any missing mandatory header field will be added with an appropriate value. Warning : this function waits for the server's response and may not return instantly; use a thread if you don't want to block your application.
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00366">366</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="233fb3eabfeb22a442a0db92e38aee1f"></a><!-- doxytag: member="sf::Http::SetHost" ref="233fb3eabfeb22a442a0db92e38aee1f" args="(const std::string &amp;Host, unsigned short Port=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::SetHost </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Host</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the target host.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Host</em>&nbsp;</td><td>: Web server to connect to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to use for connection (0 by default -- use the standard port of the protocol used) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00327">327</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Http_8hpp-source.htm">Http.hpp</a><li><a class="el" href="Http_8cpp-source.htm">Http.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http.png b/doc/html/classsf_1_1Http.png
deleted file mode 100755
index c10567c..0000000
--- a/doc/html/classsf_1_1Http.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Http_1_1Request-members.htm b/doc/html/classsf_1_1Http_1_1Request-members.htm
deleted file mode 100755
index ba394bb..0000000
--- a/doc/html/classsf_1_1Http_1_1Request-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http::Http::Request Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00">Get</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5">Head</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Http</b> (defined in <a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a>)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a> enum name</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138">Post</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72">Request</a>(Method RequestMethod=Get, const std::string &amp;URI=&quot;/&quot;, const std::string &amp;Body=&quot;&quot;)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46">SetBody</a>(const std::string &amp;Body)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e">SetField</a>(const std::string &amp;Field, const std::string &amp;Value)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd">SetHttpVersion</a>(unsigned int Major, unsigned int Minor)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53">SetMethod</a>(Method RequestMethod)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac">SetURI</a>(const std::string &amp;URI)</td><td><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http_1_1Request.htm b/doc/html/classsf_1_1Http_1_1Request.htm
deleted file mode 100755
index b598f5c..0000000
--- a/doc/html/classsf_1_1Http_1_1Request.htm
+++ /dev/null
@@ -1,343 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Http.htm">Http</a>::<a class="el" href="classsf_1_1Http_1_1Request.htm">Request</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http::Http::Request Class Reference</h1><!-- doxytag: class="sf::Http::Request" -->This class wraps an HTTP request, which is basically :<ul>
-<li>a header with a method, a target URI, and a set of field/value pairs</li><li>an optional body (for POST requests). </li></ul>
-
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Http_8hpp-source.htm">Http.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Http_1_1Request-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00">Get</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138">Post</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5">Head</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate the available HTTP methods for a request. <a href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72">Request</a> (<a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a> RequestMethod=Get, const std::string &amp;URI=&quot;/&quot;, const std::string &amp;Body=&quot;&quot;)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#55e79368ff0d72568150b3823ee0eb72"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e">SetField</a> (const std::string &amp;Field, const std::string &amp;Value)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the value of a field; the field is added if it doesn't exist. <a href="#a48d6b67d701622333564dfa1094b41e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53">SetMethod</a> (<a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a> RequestMethod)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the request method. <a href="#2b17bdbb01172b4bfc8bea4a661a1c53"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac">SetURI</a> (const std::string &amp;URI)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the target URI of the request. <a href="#2d92b4bf89606acb3e6ac8443b427aac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd">SetHttpVersion</a> (unsigned int Major, unsigned int Minor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the HTTP version of the request. <a href="#a168e9482ea54c26868676b0eda6dabd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46">SetBody</a> (const std::string &amp;Body)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body of the request. <a href="#8f8b740b23e13d757e8dabd634eb8e46"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ba95e2a7762bb5df986048b05d03a22e"></a><!-- doxytag: member="sf::Http::Request::Http" ref="ba95e2a7762bb5df986048b05d03a22e" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Http</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class wraps an HTTP request, which is basically :<ul>
-<li>a header with a method, a target URI, and a set of field/value pairs</li><li>an optional body (for POST requests). </li></ul>
-
-<p>Definition at line <a class="el" href="Http_8hpp-source.htm#l00054">54</a> of file <a class="el" href="Http_8hpp-source.htm">Http.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="620f8bff6f43e1378f321bf53fbf5598"></a><!-- doxytag: member="sf::Http::Request::Method" ref="620f8bff6f43e1378f321bf53fbf5598" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">sf::Http::Request::Method</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate the available HTTP methods for a request.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00"></a><!-- doxytag: member="Get" ref="620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00" args="" -->Get</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a> in get mode, standard method to retrieve a page. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138"></a><!-- doxytag: member="Post" ref="620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138" args="" -->Post</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a> in post mode, usually to send data to a page. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5"></a><!-- doxytag: member="Head" ref="620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5" args="" -->Head</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Http_1_1Request.htm" title="This class wraps an HTTP request, which is basically :a header with a method, a target...">Request</a> a page's header only. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8hpp-source.htm#l00061">61</a> of file <a class="el" href="Http_8hpp-source.htm">Http.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="55e79368ff0d72568150b3823ee0eb72"></a><!-- doxytag: member="sf::Http::Request::Request" ref="55e79368ff0d72568150b3823ee0eb72" args="(Method RequestMethod=Get, const std::string &amp;URI=&quot;/&quot;, const std::string &amp;Body=&quot;&quot;)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Http::Http::Request::Request </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a>&nbsp;</td>
- <td class="paramname"> <em>RequestMethod</em> = <code>Get</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>URI</em> = <code>&quot;/&quot;</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Body</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>RequestMethod</em>&nbsp;</td><td>: Method to use for the request (Get by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>URI</em>&nbsp;</td><td>: Target URI ("/" by default -- index page) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Body</em>&nbsp;</td><td>: Content of the request's body (empty by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00056">56</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="8f8b740b23e13d757e8dabd634eb8e46"></a><!-- doxytag: member="sf::Http::Request::SetBody" ref="8f8b740b23e13d757e8dabd634eb8e46" args="(const std::string &amp;Body)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::Http::Request::SetBody </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Body</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the body of the request.
-<p>
-This parameter is optional and makes sense only for POST requests. This parameter is empty by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Body</em>&nbsp;</td><td>: Content of the request body</td></tr>
- </table>
-</dl>
-This parameter is optional and makes sense only for POST requests. This parameter is empty by default
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00114">114</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a48d6b67d701622333564dfa1094b41e"></a><!-- doxytag: member="sf::Http::Request::SetField" ref="a48d6b67d701622333564dfa1094b41e" args="(const std::string &amp;Field, const std::string &amp;Value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::Http::Request::SetField </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Field</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Value</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the value of a field; the field is added if it doesn't exist.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Field</em>&nbsp;</td><td>: Name of the field to set (case-insensitive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>: Value of the field </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00068">68</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a168e9482ea54c26868676b0eda6dabd"></a><!-- doxytag: member="sf::Http::Request::SetHttpVersion" ref="a168e9482ea54c26868676b0eda6dabd" args="(unsigned int Major, unsigned int Minor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::Http::Request::SetHttpVersion </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Major</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Minor</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the HTTP version of the request.
-<p>
-This parameter is 1.0 by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Major</em>&nbsp;</td><td>: Major version number </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Minor</em>&nbsp;</td><td>: Minor version number</td></tr>
- </table>
-</dl>
-This parameter is 1.0 by default
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00102">102</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2b17bdbb01172b4bfc8bea4a661a1c53"></a><!-- doxytag: member="sf::Http::Request::SetMethod" ref="2b17bdbb01172b4bfc8bea4a661a1c53" args="(Method RequestMethod)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::Http::Request::SetMethod </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">Method</a>&nbsp;</td>
- <td class="paramname"> <em>RequestMethod</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the request method.
-<p>
-This parameter is <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00" title="Request in get mode, standard method to retrieve a page.">Http::Request::Get</a> by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>RequestMethod</em>&nbsp;</td><td>: Method to use for the request</td></tr>
- </table>
-</dl>
-This parameter is Get by default
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00078">78</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2d92b4bf89606acb3e6ac8443b427aac"></a><!-- doxytag: member="sf::Http::Request::SetURI" ref="2d92b4bf89606acb3e6ac8443b427aac" args="(const std::string &amp;URI)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Http::Http::Request::SetURI </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>URI</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the target URI of the request.
-<p>
-This parameter is "/" by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>URI</em>&nbsp;</td><td>: URI to request, local to the host</td></tr>
- </table>
-</dl>
-This parameter is "/" by default
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00088">88</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Http_8hpp-source.htm">Http.hpp</a><li><a class="el" href="Http_8cpp-source.htm">Http.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http_1_1Response-members.htm b/doc/html/classsf_1_1Http_1_1Response-members.htm
deleted file mode 100755
index 73d10af..0000000
--- a/doc/html/classsf_1_1Http_1_1Response-members.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http::Http::Response Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae">Accepted</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9">BadGateway</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa">BadRequest</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa">ConnectionFailed</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0">Created</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf">Forbidden</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179">GetBody</a>() const </td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330">GetField</a>(const std::string &amp;Field) const </td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a">GetMajorHttpVersion</a>() const </td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b">GetMinorHttpVersion</a>() const </td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Http</b> (defined in <a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a>)</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a">InternalServerError</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8">InvalidResponse</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0">MovedPermanently</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015">MovedTemporarily</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2">MultipleChoices</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3">NoContent</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41">NotFound</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf">NotImplemented</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56">NotModified</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5">Ok</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2">Response</a>()</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c">ServiceNotAvailable</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">Status</a> enum name</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e">Unauthorized</a> enum value</td><td><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Http_1_1Response.htm b/doc/html/classsf_1_1Http_1_1Response.htm
deleted file mode 100755
index 7b29dc9..0000000
--- a/doc/html/classsf_1_1Http_1_1Response.htm
+++ /dev/null
@@ -1,342 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Http.htm">Http</a>::<a class="el" href="classsf_1_1Http_1_1Response.htm">Response</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Http::Http::Response Class Reference</h1><!-- doxytag: class="sf::Http::Response" -->This class wraps an HTTP response, which is basically :<ul>
-<li>a header with a status code and a set of field/value pairs</li><li>a body (the content of the requested resource). </li></ul>
-
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Http_8hpp-source.htm">Http.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Http_1_1Response-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">Status</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5">Ok</a> = 200,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0">Created</a> = 201,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae">Accepted</a> = 202,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3">NoContent</a> = 204,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2">MultipleChoices</a> = 300,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0">MovedPermanently</a> = 301,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015">MovedTemporarily</a> = 302,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56">NotModified</a> = 304,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa">BadRequest</a> = 400,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e">Unauthorized</a> = 401,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf">Forbidden</a> = 403,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41">NotFound</a> = 404,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a">InternalServerError</a> = 500,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf">NotImplemented</a> = 501,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9">BadGateway</a> = 502,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c">ServiceNotAvailable</a> = 503,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8">InvalidResponse</a> = 1000,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa">ConnectionFailed</a> = 1001
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate all the valid status codes returned in a HTTP response. <a href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2">Response</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#25f38ccd0ae7b485e5a061dfbbbe3dc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330">GetField</a> (const std::string &amp;Field) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the value of a field. <a href="#d785737dcbb5c2bd686482d483f8a330"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the header's status code. <a href="#542d55a3e0a88f0dfecb8811373669eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a">GetMajorHttpVersion</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the major HTTP version number of the response. <a href="#6a4f633420eb8a2e44b5accc4dc4e82a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b">GetMinorHttpVersion</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the major HTTP version number of the response. <a href="#6a8663adab1be819683ec8d1ecb57a3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179">GetBody</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the body of the response. <a href="#e9d26d9ec2e1c98b3880d7d01c49c179"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ba95e2a7762bb5df986048b05d03a22e"></a><!-- doxytag: member="sf::Http::Response::Http" ref="ba95e2a7762bb5df986048b05d03a22e" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Http</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class wraps an HTTP response, which is basically :<ul>
-<li>a header with a status code and a set of field/value pairs</li><li>a body (the content of the requested resource). </li></ul>
-
-<p>Definition at line <a class="el" href="Http_8hpp-source.htm#l00168">168</a> of file <a class="el" href="Http_8hpp-source.htm">Http.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="663e071978e30fbbeb20ed045be874d8"></a><!-- doxytag: member="sf::Http::Response::Status" ref="663e071978e30fbbeb20ed045be874d8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">sf::Http::Response::Status</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate all the valid status codes returned in a HTTP response.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5"></a><!-- doxytag: member="Ok" ref="663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5" args="" -->Ok</em>&nbsp;</td><td>
-Most common code returned when operation was successful. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0"></a><!-- doxytag: member="Created" ref="663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0" args="" -->Created</em>&nbsp;</td><td>
-The resource has successfully been created. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae"></a><!-- doxytag: member="Accepted" ref="663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae" args="" -->Accepted</em>&nbsp;</td><td>
-The request has been accepted, but will be processed later by the server. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3"></a><!-- doxytag: member="NoContent" ref="663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3" args="" -->NoContent</em>&nbsp;</td><td>
-Sent when the server didn't send any data in return. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2"></a><!-- doxytag: member="MultipleChoices" ref="663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2" args="" -->MultipleChoices</em>&nbsp;</td><td>
-The requested page can be accessed from several locations. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0"></a><!-- doxytag: member="MovedPermanently" ref="663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0" args="" -->MovedPermanently</em>&nbsp;</td><td>
-The requested page has permanently moved to a new location. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015"></a><!-- doxytag: member="MovedTemporarily" ref="663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015" args="" -->MovedTemporarily</em>&nbsp;</td><td>
-The requested page has temporarily moved to a new location. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56"></a><!-- doxytag: member="NotModified" ref="663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56" args="" -->NotModified</em>&nbsp;</td><td>
-For conditionnal requests, means the requested page hasn't changed and doesn't need to be refreshed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa"></a><!-- doxytag: member="BadRequest" ref="663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa" args="" -->BadRequest</em>&nbsp;</td><td>
-The server couldn't understand the request (syntax error). </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e"></a><!-- doxytag: member="Unauthorized" ref="663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e" args="" -->Unauthorized</em>&nbsp;</td><td>
-The requested page needs an authentification to be accessed. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf"></a><!-- doxytag: member="Forbidden" ref="663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf" args="" -->Forbidden</em>&nbsp;</td><td>
-The requested page cannot be accessed at all, even with authentification. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41"></a><!-- doxytag: member="NotFound" ref="663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41" args="" -->NotFound</em>&nbsp;</td><td>
-The requested page doesn't exist. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a"></a><!-- doxytag: member="InternalServerError" ref="663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a" args="" -->InternalServerError</em>&nbsp;</td><td>
-The server encountered an unexpected error. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf"></a><!-- doxytag: member="NotImplemented" ref="663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf" args="" -->NotImplemented</em>&nbsp;</td><td>
-The server doesn't implement a requested feature. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9"></a><!-- doxytag: member="BadGateway" ref="663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9" args="" -->BadGateway</em>&nbsp;</td><td>
-The gateway server has received an error from the source server. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c"></a><!-- doxytag: member="ServiceNotAvailable" ref="663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c" args="" -->ServiceNotAvailable</em>&nbsp;</td><td>
-The server is temporarily unavailable (overloaded, in maintenance, ...). </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8"></a><!-- doxytag: member="InvalidResponse" ref="663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8" args="" -->InvalidResponse</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Http_1_1Response.htm" title="This class wraps an HTTP response, which is basically :a header with a status code...">Response</a> is not a valid HTTP one. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa"></a><!-- doxytag: member="ConnectionFailed" ref="663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa" args="" -->ConnectionFailed</em>&nbsp;</td><td>
-Connection with server failed. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Http_8hpp-source.htm#l00176">176</a> of file <a class="el" href="Http_8hpp-source.htm">Http.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="25f38ccd0ae7b485e5a061dfbbbe3dc2"></a><!-- doxytag: member="sf::Http::Response::Response" ref="25f38ccd0ae7b485e5a061dfbbbe3dc2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Http::Http::Response::Response </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00169">169</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="e9d26d9ec2e1c98b3880d7d01c49c179"></a><!-- doxytag: member="sf::Http::Response::GetBody" ref="e9d26d9ec2e1c98b3880d7d01c49c179" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Http::Http::Response::GetBody </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the body of the response.
-<p>
-The body can contain :<ul>
-<li>the requested page (for GET requests)</li><li>a response from the server (for POST requests)</li><li>nothing (for HEAD requests)</li><li>an error message (in case of an error)</li></ul>
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The response body</dd></dl>
-The body can contain :<ul>
-<li>the requested page (for GET requests)</li><li>a response from the server (for POST requests)</li><li>nothing (for HEAD requests)</li><li>an error message (in case of an error) </li></ul>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00230">230</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d785737dcbb5c2bd686482d483f8a330"></a><!-- doxytag: member="sf::Http::Response::GetField" ref="d785737dcbb5c2bd686482d483f8a330" args="(const std::string &amp;Field) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string &amp; sf::Http::Http::Response::GetField </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Field</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the value of a field.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Field</em>&nbsp;</td><td>: Name of the field to get (case-insensitive)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Value of the field, or empty string if not found </dd></dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00181">181</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6a4f633420eb8a2e44b5accc4dc4e82a"></a><!-- doxytag: member="sf::Http::Response::GetMajorHttpVersion" ref="6a4f633420eb8a2e44b5accc4dc4e82a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Http::Http::Response::GetMajorHttpVersion </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the major HTTP version number of the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Major version number </dd></dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00208">208</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6a8663adab1be819683ec8d1ecb57a3b"></a><!-- doxytag: member="sf::Http::Response::GetMinorHttpVersion" ref="6a8663adab1be819683ec8d1ecb57a3b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Http::Http::Response::GetMinorHttpVersion </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the major HTTP version number of the response.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Major version number </dd></dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00217">217</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="542d55a3e0a88f0dfecb8811373669eb"></a><!-- doxytag: member="sf::Http::Response::GetStatus" ref="542d55a3e0a88f0dfecb8811373669eb" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">Http::Response::Status</a> sf::Http::Http::Response::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the header's status code.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Header's status code </dd></dl>
-
-<p>Definition at line <a class="el" href="Http_8cpp-source.htm#l00199">199</a> of file <a class="el" href="Http_8cpp-source.htm">Http.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Http_8hpp-source.htm">Http.hpp</a><li><a class="el" href="Http_8cpp-source.htm">Http.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1IPAddress-members.htm b/doc/html/classsf_1_1IPAddress-members.htm
deleted file mode 100755
index bc461cb..0000000
--- a/doc/html/classsf_1_1IPAddress-members.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::IPAddress Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e">GetLocalAddress</a>()</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956">GetPublicAddress</a>(float Timeout=0.f)</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831">IPAddress</a>()</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#df8d2e87ea8076b627c3e7254b5e4039">IPAddress</a>(const std::string &amp;Address)</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#00c1b422265e1261509d5030534bfb0f">IPAddress</a>(const char *Address)</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#16fa44fa881e32a03b67006d90db0c39">IPAddress</a>(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3)</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#d692d581e4b96ae3377e95947abb7565">IPAddress</a>(Uint32 Address)</td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697">IsValid</a>() const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">LocalHost</a></td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104">operator!=</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e">operator&lt;</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be">operator&lt;=</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48">operator==</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0">operator&gt;</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b">operator&gt;=</a>(const IPAddress &amp;Other) const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c">ToInteger</a>() const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643">ToString</a>() const </td><td><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1IPAddress.htm b/doc/html/classsf_1_1IPAddress.htm
deleted file mode 100755
index 53e5480..0000000
--- a/doc/html/classsf_1_1IPAddress.htm
+++ /dev/null
@@ -1,605 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::IPAddress Class Reference</h1><!-- doxytag: class="sf::IPAddress" --><a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> provides easy manipulation of IP v4 addresses.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="IPAddress_8hpp-source.htm">IPAddress.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1IPAddress-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831">IPAddress</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor -- constructs an invalid address. <a href="#d0d6a00a3fd597aab4b86f2bc5a85831"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#df8d2e87ea8076b627c3e7254b5e4039">IPAddress</a> (const std::string &amp;Address)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the address from a string. <a href="#df8d2e87ea8076b627c3e7254b5e4039"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#00c1b422265e1261509d5030534bfb0f">IPAddress</a> (const char *Address)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the address from a C-style string ; Needed for implicit conversions from literal strings to <a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> to work. <a href="#00c1b422265e1261509d5030534bfb0f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#16fa44fa881e32a03b67006d90db0c39">IPAddress</a> (Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the address from 4 bytes. <a href="#16fa44fa881e32a03b67006d90db0c39"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#d692d581e4b96ae3377e95947abb7565">IPAddress</a> (Uint32 Address)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the address from a 32-bits integer. <a href="#d692d581e4b96ae3377e95947abb7565"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697">IsValid</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the address is a valid one. <a href="#943e91f407afa5d9ae9b988492385697"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643">ToString</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a string representation of the address. <a href="#76eadca85be545b5c1c68a4d0dc1c643"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Uint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c">ToInteger</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an integer representation of the address. <a href="#ec6999cce584d3b275072cb6da839c3c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48">operator==</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator ==. <a href="#326dc00d3ab26ada6ed3168460545b48"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104">operator!=</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator !=. <a href="#dcab830aa4008d469c235582d90ae104"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e">operator&lt;</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &lt;. <a href="#90ca315772725588df2a5fe73565cb3e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0">operator&gt;</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &gt;. <a href="#6cd4ab449515009f0d1ab0cd41ddbab0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be">operator&lt;=</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &lt;=. <a href="#d9159e1fbdfffb81b45ac2518143c2be"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b">operator&gt;=</a> (const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &gt;=. <a href="#7b0f3e471d2286737023d80220a1313b"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e">GetLocalAddress</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the computer's local IP address (from the LAN point of view). <a href="#c17d4ad5721ad2bbe5ab14fc1522668e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956">GetPublicAddress</a> (float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the computer's public IP address (from the web point of view). <a href="#d025962b430dd6da4e10ea3e69551956"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">LocalHost</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Local host address (to connect to the same computer). <a href="#3529ec93755712b038fe6b1456c4f7e0"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> provides easy manipulation of IP v4 addresses.
-<p>Definition at line <a class="el" href="IPAddress_8hpp-source.htm#l00042">42</a> of file <a class="el" href="IPAddress_8hpp-source.htm">IPAddress.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="d0d6a00a3fd597aab4b86f2bc5a85831"></a><!-- doxytag: member="sf::IPAddress::IPAddress" ref="d0d6a00a3fd597aab4b86f2bc5a85831" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::IPAddress::IPAddress </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor -- constructs an invalid address.
-<p>
-Default constructor.
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00045">45</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="df8d2e87ea8076b627c3e7254b5e4039"></a><!-- doxytag: member="sf::IPAddress::IPAddress" ref="df8d2e87ea8076b627c3e7254b5e4039" args="(const std::string &amp;Address)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::IPAddress::IPAddress </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Address</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the address from a string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: IP address ("xxx.xxx.xxx.xxx") or network name </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00055">55</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="00c1b422265e1261509d5030534bfb0f"></a><!-- doxytag: member="sf::IPAddress::IPAddress" ref="00c1b422265e1261509d5030534bfb0f" args="(const char *Address)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::IPAddress::IPAddress </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Address</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the address from a C-style string ; Needed for implicit conversions from literal strings to <a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> to work.
-<p>
-Construct the address from a C-style string ; Needed for implicit conversions from literal strings to <a class="el" href="classsf_1_1IPAddress.htm" title="IPAddress provides easy manipulation of IP v4 addresses.">IPAddress</a> to work.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: IP address ("xxx.xxx.xxx.xxx") or network name </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00082">82</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="16fa44fa881e32a03b67006d90db0c39"></a><!-- doxytag: member="sf::IPAddress::IPAddress" ref="16fa44fa881e32a03b67006d90db0c39" args="(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::IPAddress::IPAddress </td>
- <td>(</td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Byte0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Byte1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Byte2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Byte3</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the address from 4 bytes.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Byte0</em>&nbsp;</td><td>: First byte of the address </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Byte1</em>&nbsp;</td><td>: Second byte of the address </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Byte2</em>&nbsp;</td><td>: Third byte of the address </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Byte3</em>&nbsp;</td><td>: Fourth byte of the address </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00108">108</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d692d581e4b96ae3377e95947abb7565"></a><!-- doxytag: member="sf::IPAddress::IPAddress" ref="d692d581e4b96ae3377e95947abb7565" args="(Uint32 Address)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::IPAddress::IPAddress </td>
- <td>(</td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>Address</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the address from a 32-bits integer.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: 4 bytes of the address packed into a 32-bits integer </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00117">117</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="c17d4ad5721ad2bbe5ab14fc1522668e"></a><!-- doxytag: member="sf::IPAddress::GetLocalAddress" ref="c17d4ad5721ad2bbe5ab14fc1522668e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> sf::IPAddress::GetLocalAddress </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the computer's local IP address (from the LAN point of view).
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Local IP address </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00156">156</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d025962b430dd6da4e10ea3e69551956"></a><!-- doxytag: member="sf::IPAddress::GetPublicAddress" ref="d025962b430dd6da4e10ea3e69551956" args="(float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> sf::IPAddress::GetPublicAddress </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the computer's public IP address (from the web point of view).
-<p>
-The only way to get a public address is to ask it to a distant website ; as a consequence, this function may be very slow -- use it as few as possible !<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Maximum time to wait, in seconds (0 by default : no timeout)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Public IP address </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00204">204</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="943e91f407afa5d9ae9b988492385697"></a><!-- doxytag: member="sf::IPAddress::IsValid" ref="943e91f407afa5d9ae9b988492385697" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::IsValid </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell if the address is a valid one.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if address has a valid syntax </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00126">126</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dcab830aa4008d469c235582d90ae104"></a><!-- doxytag: member="sf::IPAddress::operator!=" ref="dcab830aa4008d469c235582d90ae104" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator !=.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this != Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00235">235</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="90ca315772725588df2a5fe73565cb3e"></a><!-- doxytag: member="sf::IPAddress::operator&lt;" ref="90ca315772725588df2a5fe73565cb3e" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &lt;.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &lt; Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00244">244</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d9159e1fbdfffb81b45ac2518143c2be"></a><!-- doxytag: member="sf::IPAddress::operator&lt;=" ref="d9159e1fbdfffb81b45ac2518143c2be" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator&lt;= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &lt;=.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &lt;= Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00262">262</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="326dc00d3ab26ada6ed3168460545b48"></a><!-- doxytag: member="sf::IPAddress::operator==" ref="326dc00d3ab26ada6ed3168460545b48" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator ==.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this == Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00226">226</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6cd4ab449515009f0d1ab0cd41ddbab0"></a><!-- doxytag: member="sf::IPAddress::operator&gt;" ref="6cd4ab449515009f0d1ab0cd41ddbab0" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator&gt; </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &gt;.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &gt; Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00253">253</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7b0f3e471d2286737023d80220a1313b"></a><!-- doxytag: member="sf::IPAddress::operator&gt;=" ref="7b0f3e471d2286737023d80220a1313b" args="(const IPAddress &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::IPAddress::operator&gt;= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &gt;=.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Address to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &gt;= Other </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00271">271</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ec6999cce584d3b275072cb6da839c3c"></a><!-- doxytag: member="sf::IPAddress::ToInteger" ref="ec6999cce584d3b275072cb6da839c3c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Uint32 sf::IPAddress::ToInteger </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get an integer representation of the address.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>32-bits integer containing the 4 bytes of the address, in system endianness </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00147">147</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="76eadca85be545b5c1c68a4d0dc1c643"></a><!-- doxytag: member="sf::IPAddress::ToString" ref="76eadca85be545b5c1c68a4d0dc1c643" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string sf::IPAddress::ToString </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a string representation of the address.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> representation of the IP address ("xxx.xxx.xxx.xxx") </dd></dl>
-
-<p>Definition at line <a class="el" href="IPAddress_8cpp-source.htm#l00135">135</a> of file <a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="3529ec93755712b038fe6b1456c4f7e0"></a><!-- doxytag: member="sf::IPAddress::LocalHost" ref="3529ec93755712b038fe6b1456c4f7e0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> <a class="el" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">sf::IPAddress::LocalHost</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Local host address (to connect to the same computer).
-<p>
-Static member data.
-<p>Definition at line <a class="el" href="IPAddress_8hpp-source.htm#l00196">196</a> of file <a class="el" href="IPAddress_8hpp-source.htm">IPAddress.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="IPAddress_8hpp-source.htm">IPAddress.hpp</a><li><a class="el" href="IPAddress_8cpp-source.htm">IPAddress.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Image-members.htm b/doc/html/classsf_1_1Image-members.htm
deleted file mode 100755
index 2a6f0d7..0000000
--- a/doc/html/classsf_1_1Image-members.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Image Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Image.htm">sf::Image</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7">Bind</a>() const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2">Copy</a>(const Image &amp;Source, unsigned int DestX, unsigned int DestY, const IntRect &amp;SourceRect=IntRect(0, 0, 0, 0), bool ApplyAlpha=false)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974">CopyScreen</a>(RenderWindow &amp;Window, const IntRect &amp;SourceRect=IntRect(0, 0, 0, 0))</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde">Create</a>(unsigned int Width, unsigned int Height, Color Col=Color(0, 0, 0, 255))</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50">CreateMaskFromColor</a>(Color ColorKey, Uint8 Alpha=0)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89">GetHeight</a>() const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4">GetPixel</a>(unsigned int X, unsigned int Y) const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022">GetPixelsPtr</a>() const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56">GetTexCoords</a>(const IntRect &amp;Rect) const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488">GetValidTextureSize</a>(unsigned int Size)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7">GetWidth</a>() const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12">Image</a>()</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#a38cae7c1c704aa0175b9e73645cb210">Image</a>(const Image &amp;Copy)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#2a4c0ec448863784f83e9931d25dada2">Image</a>(unsigned int Width, unsigned int Height, const Color &amp;Col=Color(0, 0, 0, 255))</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#7092ba80cc19c053bf356e98a4743acb">Image</a>(unsigned int Width, unsigned int Height, const Uint8 *Data)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3">IsSmooth</a>() const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b">LoadFromFile</a>(const std::string &amp;Filename)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486">LoadFromMemory</a>(const char *Data, std::size_t SizeInBytes)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c">LoadFromPixels</a>(unsigned int Width, unsigned int Height, const Uint8 *Data)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3">operator=</a>(const Image &amp;Other)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">Resource&lt; Image &gt;::operator=</a>(const Resource&lt; Image &gt; &amp;Other)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Image &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Image &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#59a0a5ddb77f7fe059bd32dee5f792d0">Resource</a>(const Resource&lt; Image &gt; &amp;Copy)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Image &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08">SaveToFile</a>(const std::string &amp;Filename) const </td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584">SetPixel</a>(unsigned int X, unsigned int Y, const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452">SetSmooth</a>(bool Smooth)</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83">~Image</a>()</td><td><a class="el" href="classsf_1_1Image.htm">sf::Image</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">~Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Image &gt;</a></td><td><code> [protected]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Image.htm b/doc/html/classsf_1_1Image.htm
deleted file mode 100755
index dff4c46..0000000
--- a/doc/html/classsf_1_1Image.htm
+++ /dev/null
@@ -1,973 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Image.htm">Image</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Image Class Reference</h1><!-- doxytag: class="sf::Image" --><!-- doxytag: inherits="Resource&lt; Image &gt;" --><a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> is the low-level class for loading and manipulating images.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Image_8hpp-source.htm">Image.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Image:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Image.png" usemap="#sf::Image_map" border="0" alt=""></center>
-<map name="sf::Image_map">
-<area href="classsf_1_1Resource.htm" alt="sf::Resource< Image >" shape="rect" coords="0,0,139,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Image-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12">Image</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#bb4caf3cb167b613345ebe36fc883f12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#a38cae7c1c704aa0175b9e73645cb210">Image</a> (const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#a38cae7c1c704aa0175b9e73645cb210"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#2a4c0ec448863784f83e9931d25dada2">Image</a> (unsigned int Width, unsigned int Height, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0, 255))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an empty image. <a href="#2a4c0ec448863784f83e9931d25dada2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#7092ba80cc19c053bf356e98a4743acb">Image</a> (unsigned int Width, unsigned int Height, const Uint8 *Data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the image from pixels in memory. <a href="#7092ba80cc19c053bf356e98a4743acb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83">~Image</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#0ba22a38e6c96e3b37dd88198046de83"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b">LoadFromFile</a> (const std::string &amp;Filename)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the image from a file. <a href="#7cf6316aa5d022e0bdd95f1e79c9f50b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486">LoadFromMemory</a> (const char *Data, std::size_t SizeInBytes)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the image from a file in memory. <a href="#72565ffabe12dfb2602e209c2e6f0486"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c">LoadFromPixels</a> (unsigned int Width, unsigned int Height, const Uint8 *Data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the image directly from an array of pixels. <a href="#67d65c552c9bcba989a061e9c5b5d10c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08">SaveToFile</a> (const std::string &amp;Filename) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save the content of the image to a file. <a href="#50eed54ef8e9f3aeef5bb7f19144aa08"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde">Create</a> (unsigned int Width, unsigned int Height, <a class="el" href="classsf_1_1Color.htm">Color</a> Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0, 255))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an empty image. <a href="#4e2ce8821e8de36462604bbf99f39cde"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50">CreateMaskFromColor</a> (<a class="el" href="classsf_1_1Color.htm">Color</a> ColorKey, Uint8 Alpha=0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create transparency mask from a specified colorkey. <a href="#e9a15fe9a4750295845b5ae081c2ec50"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2">Copy</a> (const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;Source, unsigned int DestX, unsigned int DestY, const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;SourceRect=<a class="el" href="classsf_1_1Rect.htm">IntRect</a>(0, 0, 0, 0), bool ApplyAlpha=false)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy pixels from another image onto this one. <a href="#408c40c8675363adfa96a8b9a9576bc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974">CopyScreen</a> (<a class="el" href="classsf_1_1RenderWindow.htm">RenderWindow</a> &amp;<a class="el" href="classsf_1_1Window.htm">Window</a>, const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;SourceRect=<a class="el" href="classsf_1_1Rect.htm">IntRect</a>(0, 0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the image from the current contents of the given window. <a href="#96597746f70ce1925ec82d2df8ae6974"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584">SetPixel</a> (unsigned int X, unsigned int Y, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the color of a pixel. <a href="#623f2379b30307b4ee4eb08d517d9584"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4">GetPixel</a> (unsigned int X, unsigned int Y) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pixel from the image. <a href="#b7590e372a153ace848cf8a6081c8bc4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const Uint8 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022">GetPixelsPtr</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a read-only pointer to the array of pixels (RGBA 8 bits integers components) Array size is <a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth()</a> x <a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight()</a> x 4 This pointer becomes invalid if you reload or resize the image. <a href="#85355b09f946aa4b985f9d2a1d620022"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7">Bind</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind the image for rendering. <a href="#74bda6dc927849ff25f8fce5143918e7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452">SetSmooth</a> (bool Smooth)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable image smooth filter. <a href="#d167422fd331cd069674391fb16e8452"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7">GetWidth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the width of the image. <a href="#896f09a4eb769b5b866b6dde9c1a25e7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89">GetHeight</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the height of the image. <a href="#f2131512b6290fd96fd10c539723fe89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3">IsSmooth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells whether the smooth filtering is enabled or not. <a href="#d175b4c9110549c5df324ba61c580ce3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56">GetTexCoords</a> (const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;<a class="el" href="classsf_1_1Rect.htm">Rect</a>) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a subrect expressed in pixels, into float texture coordinates. <a href="#066704507bcaabe27db17170bf02bd56"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3">operator=</a> (const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#5f9927e407bbe34172553ecfff2f54f3"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488">GetValidTextureSize</a> (unsigned int Size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a valid texture size according to hardware support. <a href="#b41056600a1a4848833cc8b5239a9488"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> is the low-level class for loading and manipulating images.
-<p>Definition at line <a class="el" href="Image_8hpp-source.htm#l00046">46</a> of file <a class="el" href="Image_8hpp-source.htm">Image.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="bb4caf3cb167b613345ebe36fc883f12"></a><!-- doxytag: member="sf::Image::Image" ref="bb4caf3cb167b613345ebe36fc883f12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Image::Image </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00043">43</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a38cae7c1c704aa0175b9e73645cb210"></a><!-- doxytag: member="sf::Image::Image" ref="a38cae7c1c704aa0175b9e73645cb210" args="(const Image &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Image::Image </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: instance to copy </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00060">60</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a4c0ec448863784f83e9931d25dada2"></a><!-- doxytag: member="sf::Image::Image" ref="2a4c0ec448863784f83e9931d25dada2" args="(unsigned int Width, unsigned int Height, const Color &amp;Col=Color(0, 0, 0, 255))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Image::Image </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0,&nbsp;255)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct an empty image.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> height </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> color (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00079">79</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7092ba80cc19c053bf356e98a4743acb"></a><!-- doxytag: member="sf::Image::Image" ref="7092ba80cc19c053bf356e98a4743acb" args="(unsigned int Width, unsigned int Height, const Uint8 *Data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Image::Image </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const Uint8 *&nbsp;</td>
- <td class="paramname"> <em>Data</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the image from pixels in memory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> height </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the pixels in memory (assumed format is RGBA) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0ba22a38e6c96e3b37dd88198046de83"></a><!-- doxytag: member="sf::Image::~Image" ref="0ba22a38e6c96e3b37dd88198046de83" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Image::~Image </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00113">113</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="74bda6dc927849ff25f8fce5143918e7"></a><!-- doxytag: member="sf::Image::Bind" ref="74bda6dc927849ff25f8fce5143918e7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Image::Bind </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bind the image for rendering.
-<p>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00473">473</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="408c40c8675363adfa96a8b9a9576bc2"></a><!-- doxytag: member="sf::Image::Copy" ref="408c40c8675363adfa96a8b9a9576bc2" args="(const Image &amp;Source, unsigned int DestX, unsigned int DestY, const IntRect &amp;SourceRect=IntRect(0, 0, 0, 0), bool ApplyAlpha=false)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Image::Copy </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Source</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>DestX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>DestY</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>SourceRect</em> = <code><a class="el" href="classsf_1_1Rect.htm">IntRect</a>(0,&nbsp;0,&nbsp;0,&nbsp;0)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>ApplyAlpha</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy pixels from another image onto this one.
-<p>
-This function does a slow pixel copy and should only be used at initialization time<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Source</em>&nbsp;</td><td>: Source image to copy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DestX</em>&nbsp;</td><td>: X coordinate of the destination position </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DestY</em>&nbsp;</td><td>: Y coordinate of the destination position </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SourceRect</em>&nbsp;</td><td>: Sub-rectangle of the source image to copy (empty by default - entire image) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ApplyAlpha</em>&nbsp;</td><td>: Should the copy take in account the source transparency? (false by default)</td></tr>
- </table>
-</dl>
-This function does a slow pixel copy and should only be used at initialization time
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00270">270</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="96597746f70ce1925ec82d2df8ae6974"></a><!-- doxytag: member="sf::Image::CopyScreen" ref="96597746f70ce1925ec82d2df8ae6974" args="(RenderWindow &amp;Window, const IntRect &amp;SourceRect=IntRect(0, 0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::CopyScreen </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1RenderWindow.htm">RenderWindow</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Window</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>SourceRect</em> = <code><a class="el" href="classsf_1_1Rect.htm">IntRect</a>(0,&nbsp;0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create the image from the current contents of the given window.
-<p>
-Create the image from the current contents of the given window.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a></em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> to capture </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SourceRect</em>&nbsp;</td><td>: Sub-rectangle of the screen to copy (empty by default - entire image)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if copy was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00358">358</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e2ce8821e8de36462604bbf99f39cde"></a><!-- doxytag: member="sf::Image::Create" ref="4e2ce8821e8de36462604bbf99f39cde" args="(unsigned int Width, unsigned int Height, Color Col=Color(0, 0, 0, 255))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::Create </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0,&nbsp;255)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create an empty image.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> height </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> color (black by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if creation was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e9a15fe9a4750295845b5ae081c2ec50"></a><!-- doxytag: member="sf::Image::CreateMaskFromColor" ref="e9a15fe9a4750295845b5ae081c2ec50" args="(Color ColorKey, Uint8 Alpha=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Image::CreateMaskFromColor </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td>
- <td class="paramname"> <em>ColorKey</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Alpha</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create transparency mask from a specified colorkey.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ColorKey</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to become transparent </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Alpha</em>&nbsp;</td><td>: Alpha value to use for transparent pixels (0 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f2131512b6290fd96fd10c539723fe89"></a><!-- doxytag: member="sf::Image::GetHeight" ref="f2131512b6290fd96fd10c539723fe89" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Image::GetHeight </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the height of the image.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Height in pixels </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00526">526</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b7590e372a153ace848cf8a6081c8bc4"></a><!-- doxytag: member="sf::Image::GetPixel" ref="b7590e372a153ace848cf8a6081c8bc4" args="(unsigned int X, unsigned int Y) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Image::GetPixel </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a pixel from the image.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate of pixel in the image </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate of pixel in the image</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of pixel (X, Y) </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00431">431</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="85355b09f946aa4b985f9d2a1d620022"></a><!-- doxytag: member="sf::Image::GetPixelsPtr" ref="85355b09f946aa4b985f9d2a1d620022" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const Uint8 * sf::Image::GetPixelsPtr </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a read-only pointer to the array of pixels (RGBA 8 bits integers components) Array size is <a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth()</a> x <a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight()</a> x 4 This pointer becomes invalid if you reload or resize the image.
-<p>
-Get a read-only pointer to the array of pixels (RGBA 8 bits integers components) Array size is <a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7" title="Return the width of the image.">GetWidth()</a> x <a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89" title="Return the height of the image.">GetHeight()</a> x 4 This pointer becomes invalid if you reload or resize the image.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Const pointer to the array of pixels </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00453">453</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="066704507bcaabe27db17170bf02bd56"></a><!-- doxytag: member="sf::Image::GetTexCoords" ref="066704507bcaabe27db17170bf02bd56" args="(const IntRect &amp;Rect) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a> sf::Image::GetTexCoords </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Rect</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convert a subrect expressed in pixels, into float texture coordinates.
-<p>
-Convert a subrect expressed in pixels, into float texture coordinates.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a></em>&nbsp;</td><td>: Sub-rectangle of image to convert</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Texture coordinates corresponding to the sub-rectangle </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00545">545</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b41056600a1a4848833cc8b5239a9488"></a><!-- doxytag: member="sf::Image::GetValidTextureSize" ref="b41056600a1a4848833cc8b5239a9488" args="(unsigned int Size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Image::GetValidTextureSize </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Size</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a valid texture size according to hardware support.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: Size to convert</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Valid nearest size (greater than or equal to specified size) </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00560">560</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="896f09a4eb769b5b866b6dde9c1a25e7"></a><!-- doxytag: member="sf::Image::GetWidth" ref="896f09a4eb769b5b866b6dde9c1a25e7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Image::GetWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the width of the image.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Width in pixels </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00517">517</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d175b4c9110549c5df324ba61c580ce3"></a><!-- doxytag: member="sf::Image::IsSmooth" ref="d175b4c9110549c5df324ba61c580ce3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::IsSmooth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tells whether the smooth filtering is enabled or not.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if image smoothing is enabled </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00535">535</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7cf6316aa5d022e0bdd95f1e79c9f50b"></a><!-- doxytag: member="sf::Image::LoadFromFile" ref="7cf6316aa5d022e0bdd95f1e79c9f50b" args="(const std::string &amp;Filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::LoadFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the image from a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the image file to load</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00123">123</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="72565ffabe12dfb2602e209c2e6f0486"></a><!-- doxytag: member="sf::Image::LoadFromMemory" ref="72565ffabe12dfb2602e209c2e6f0486" args="(const char *Data, std::size_t SizeInBytes)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::LoadFromMemory </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SizeInBytes</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the image from a file in memory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the file data in memory </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeInBytes</em>&nbsp;</td><td>: Size of the data to load, in bytes</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00145">145</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="67d65c552c9bcba989a061e9c5b5d10c"></a><!-- doxytag: member="sf::Image::LoadFromPixels" ref="67d65c552c9bcba989a061e9c5b5d10c" args="(unsigned int Width, unsigned int Height, const Uint8 *Data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::LoadFromPixels </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const Uint8 *&nbsp;</td>
- <td class="paramname"> <em>Data</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the image directly from an array of pixels.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> height </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the pixels in memory (assumed format is RGBA)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00174">174</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5f9927e407bbe34172553ecfff2f54f3"></a><!-- doxytag: member="sf::Image::operator=" ref="5f9927e407bbe34172553ecfff2f54f3" args="(const Image &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Image.htm">Image</a> &amp; sf::Image::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: instance to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the image </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00585">585</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="50eed54ef8e9f3aeef5bb7f19144aa08"></a><!-- doxytag: member="sf::Image::SaveToFile" ref="50eed54ef8e9f3aeef5bb7f19144aa08" args="(const std::string &amp;Filename) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Image::SaveToFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Save the content of the image to a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the file to save (overwritten if already exist)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if saving was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00209">209</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="623f2379b30307b4ee4eb08d517d9584"></a><!-- doxytag: member="sf::Image::SetPixel" ref="623f2379b30307b4ee4eb08d517d9584" args="(unsigned int X, unsigned int Y, const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Image::SetPixel </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the color of a pixel.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate of pixel in the image </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate of pixel in the image </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color for pixel (X, Y) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00408">408</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d167422fd331cd069674391fb16e8452"></a><!-- doxytag: member="sf::Image::SetSmooth" ref="d167422fd331cd069674391fb16e8452" args="(bool Smooth)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Image::SetSmooth </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Smooth</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable or disable image smooth filter.
-<p>
-Enable or disable image smoothing filter.<p>
-This parameter is enabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Smooth</em>&nbsp;</td><td>: True to enable smoothing filter, false to disable it </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Image_8cpp-source.htm#l00490">490</a> of file <a class="el" href="Image_8cpp-source.htm">Image.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Image_8hpp-source.htm">Image.hpp</a><li><a class="el" href="Image_8cpp-source.htm">Image.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Image.png b/doc/html/classsf_1_1Image.png
deleted file mode 100755
index 269a41c..0000000
--- a/doc/html/classsf_1_1Image.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Input-members.htm b/doc/html/classsf_1_1Input-members.htm
deleted file mode 100755
index 169403d..0000000
--- a/doc/html/classsf_1_1Input-members.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Input Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Input.htm">sf::Input</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896">GetJoystickAxis</a>(unsigned int JoyId, Joy::Axis Axis) const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3">GetMouseX</a>() const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796">GetMouseY</a>() const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f">Input</a>()</td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08">IsJoystickButtonDown</a>(unsigned int JoyId, unsigned int Button) const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a">IsKeyDown</a>(Key::Code KeyCode) const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea">IsMouseButtonDown</a>(Mouse::Button Button) const </td><td><a class="el" href="classsf_1_1Input.htm">sf::Input</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">~WindowListener</a>()</td><td><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td><code> [inline, protected, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Input.htm b/doc/html/classsf_1_1Input.htm
deleted file mode 100755
index b24f6c7..0000000
--- a/doc/html/classsf_1_1Input.htm
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Input.htm">Input</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Input Class Reference</h1><!-- doxytag: class="sf::Input" --><!-- doxytag: inherits="sf::WindowListener,sf::NonCopyable" --><a class="el" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a> handles real-time input from keyboard and mouse.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Input_8hpp-source.htm">Input.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Input:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Input.png" usemap="#sf::Input_map" border="0" alt=""></center>
-<map name="sf::Input_map">
-<area href="classsf_1_1WindowListener.htm" alt="sf::WindowListener" shape="rect" coords="0,0,117,24">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="127,0,244,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Input-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f">Input</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#35393e09fc92f7523e52af1c203b958f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a">IsKeyDown</a> (<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a> KeyCode) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the state of a key. <a href="#5312ed524e1f2837aa4597978553876a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea">IsMouseButtonDown</a> (Mouse::Button Button) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the state of a mouse button. <a href="#28c36d05d76f2263faf803e29ffa9dea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08">IsJoystickButtonDown</a> (unsigned int JoyId, unsigned int Button) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the state of a joystick button. <a href="#715d9533617ef9fc25152ebd6b7ece08"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3">GetMouseX</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the mouse X position. <a href="#2100db642800d4d3e21579c72bed99b3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796">GetMouseY</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the mouse Y position. <a href="#fe8a8e65be0a5840de9865054aaa5796"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896">GetJoystickAxis</a> (unsigned int JoyId, Joy::Axis Axis) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a joystick axis position. <a href="#4edf71238ae3d311c4b6e5e6895c6896"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Input.htm" title="Input handles real-time input from keyboard and mouse.">Input</a> handles real-time input from keyboard and mouse.
-<p>
-Use it instead of events to handle continuous moves and more game-friendly inputs
-<p>Definition at line <a class="el" href="Input_8hpp-source.htm#l00044">44</a> of file <a class="el" href="Input_8hpp-source.htm">Input.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="35393e09fc92f7523e52af1c203b958f"></a><!-- doxytag: member="sf::Input::Input" ref="35393e09fc92f7523e52af1c203b958f" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Input::Input </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00036">36</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="4edf71238ae3d311c4b6e5e6895c6896"></a><!-- doxytag: member="sf::Input::GetJoystickAxis" ref="4edf71238ae3d311c4b6e5e6895c6896" args="(unsigned int JoyId, Joy::Axis Axis) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Input::GetJoystickAxis </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>JoyId</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Joy::Axis&nbsp;</td>
- <td class="paramname"> <em>Axis</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a joystick axis position.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>JoyId</em>&nbsp;</td><td>: Identifier of the joystick to check (0 or 1) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Axis</em>&nbsp;</td><td>: Axis to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current axis position, in the range [-100, 100] (except for POV, which is [0, 360]) </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00095">95</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2100db642800d4d3e21579c72bed99b3"></a><!-- doxytag: member="sf::Input::GetMouseX" ref="2100db642800d4d3e21579c72bed99b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int sf::Input::GetMouseX </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the mouse X position.
-<p>
-Get the mouse left position.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current mouse left position, relative to owner window </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00077">77</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe8a8e65be0a5840de9865054aaa5796"></a><!-- doxytag: member="sf::Input::GetMouseY" ref="fe8a8e65be0a5840de9865054aaa5796" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int sf::Input::GetMouseY </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the mouse Y position.
-<p>
-Get the mouse top position.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current mouse top position, relative to owner window </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00086">86</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="715d9533617ef9fc25152ebd6b7ece08"></a><!-- doxytag: member="sf::Input::IsJoystickButtonDown" ref="715d9533617ef9fc25152ebd6b7ece08" args="(unsigned int JoyId, unsigned int Button) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Input::IsJoystickButtonDown </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>JoyId</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Button</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the state of a joystick button.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>JoyId</em>&nbsp;</td><td>: Identifier of the joystick to check (0 or 1) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Button</em>&nbsp;</td><td>: Button to check</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if button is down, false if button is up </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5312ed524e1f2837aa4597978553876a"></a><!-- doxytag: member="sf::Input::IsKeyDown" ref="5312ed524e1f2837aa4597978553876a" args="(Key::Code KeyCode) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Input::IsKeyDown </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a>&nbsp;</td>
- <td class="paramname"> <em>KeyCode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the state of a key.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>KeyCode</em>&nbsp;</td><td>: <a class="el" href="namespacesf_1_1Key.htm" title="Definition of key codes for keyboard events.">Key</a> to check</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if key is down, false if key is up </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00047">47</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="28c36d05d76f2263faf803e29ffa9dea"></a><!-- doxytag: member="sf::Input::IsMouseButtonDown" ref="28c36d05d76f2263faf803e29ffa9dea" args="(Mouse::Button Button) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Input::IsMouseButtonDown </td>
- <td>(</td>
- <td class="paramtype">Mouse::Button&nbsp;</td>
- <td class="paramname"> <em>Button</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the state of a mouse button.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Button</em>&nbsp;</td><td>: Button to check</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if button is down, false if button is up </dd></dl>
-
-<p>Definition at line <a class="el" href="Input_8cpp-source.htm#l00056">56</a> of file <a class="el" href="Input_8cpp-source.htm">Input.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Input_8hpp-source.htm">Input.hpp</a><li><a class="el" href="Input_8cpp-source.htm">Input.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Input.png b/doc/html/classsf_1_1Input.png
deleted file mode 100755
index d7d2105..0000000
--- a/doc/html/classsf_1_1Input.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Listener-members.htm b/doc/html/classsf_1_1Listener-members.htm
deleted file mode 100755
index ff25e60..0000000
--- a/doc/html/classsf_1_1Listener-members.htm
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Listener Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Listener.htm">sf::Listener</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19">GetGlobalVolume</a>()</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251">GetPosition</a>()</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a">GetTarget</a>()</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84">SetGlobalVolume</a>(float Volume)</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48">SetPosition</a>(float X, float Y, float Z)</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#e461aa59bf5aa43eb3e1fcf7cb2dbfd0">SetPosition</a>(const Vector3f &amp;Position)</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf">SetTarget</a>(float X, float Y, float Z)</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Listener.htm#e8191c90eb8d96e8d3cc578850c91b02">SetTarget</a>(const Vector3f &amp;Target)</td><td><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a></td><td><code> [static]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Listener.htm b/doc/html/classsf_1_1Listener.htm
deleted file mode 100755
index 88741aa..0000000
--- a/doc/html/classsf_1_1Listener.htm
+++ /dev/null
@@ -1,339 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Listener.htm">Listener</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Listener Class Reference</h1><!-- doxytag: class="sf::Listener" --><a class="el" href="classsf_1_1Listener.htm" title="Listener is a global interface for defining the audio listener properties ; the audio...">Listener</a> is a global interface for defining the audio listener properties ; the audio listener is the point in the scene from where all the sounds are heard.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Listener_8hpp-source.htm">Listener.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Listener-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84">SetGlobalVolume</a> (float Volume)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the global volume of all the sounds. <a href="#0f8f05ffede8dd5f075fa120c41bec84"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19">GetGlobalVolume</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current value of the global volume of all the sounds. <a href="#eaffa5db15e6e790a4c20e014a8cfa19"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48">SetPosition</a> (float X, float Y, float Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the listener (take 3 values). <a href="#c54f7441ee2511079df71c1107242b48"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#e461aa59bf5aa43eb3e1fcf7cb2dbfd0">SetPosition</a> (const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the listener (take a 3D vector). <a href="#e461aa59bf5aa43eb3e1fcf7cb2dbfd0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251">GetPosition</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current position of the listener. <a href="#c36493661fa0784df73e6efc429bb251"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf">SetTarget</a> (float X, float Y, float Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the orientation of the listener (the point he must look at) (take 3 values). <a href="#4638a9c80c9a2027e93b44acdc48a8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#e8191c90eb8d96e8d3cc578850c91b02">SetTarget</a> (const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;Target)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the orientation of the listener (the point he must look at) (take a 3D vector). <a href="#e8191c90eb8d96e8d3cc578850c91b02"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a">GetTarget</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current orientation of the listener (the point he's looking at). <a href="#322a2f7a68893559c40e3ab2a324293a"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Listener.htm" title="Listener is a global interface for defining the audio listener properties ; the audio...">Listener</a> is a global interface for defining the audio listener properties ; the audio listener is the point in the scene from where all the sounds are heard.
-<p>Definition at line <a class="el" href="Listener_8hpp-source.htm#l00042">42</a> of file <a class="el" href="Listener_8hpp-source.htm">Listener.hpp</a>.</p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="eaffa5db15e6e790a4c20e014a8cfa19"></a><!-- doxytag: member="sf::Listener::GetGlobalVolume" ref="eaffa5db15e6e790a4c20e014a8cfa19" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Listener::GetGlobalVolume </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current value of the global volume of all the sounds.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current global volume, in the range [0, 100] </dd></dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00046">46</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c36493661fa0784df73e6efc429bb251"></a><!-- doxytag: member="sf::Listener::GetPosition" ref="c36493661fa0784df73e6efc429bb251" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> sf::Listener::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current position of the listener.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Position of the listener in the world </dd></dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00076">76</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="322a2f7a68893559c40e3ab2a324293a"></a><!-- doxytag: member="sf::Listener::GetTarget" ref="322a2f7a68893559c40e3ab2a324293a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> sf::Listener::GetTarget </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current orientation of the listener (the point he's looking at).
-<p>
-Get the current orientation of the listener (the point he's looking at).<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>: Position of the point the listener is looking at </dd></dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00110">110</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0f8f05ffede8dd5f075fa120c41bec84"></a><!-- doxytag: member="sf::Listener::SetGlobalVolume" ref="0f8f05ffede8dd5f075fa120c41bec84" args="(float Volume)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Listener::SetGlobalVolume </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Volume</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the global volume of all the sounds.
-<p>
-The default volume is 100<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Volume</em>&nbsp;</td><td>: New global volume, in the range [0, 100] </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00037">37</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e461aa59bf5aa43eb3e1fcf7cb2dbfd0"></a><!-- doxytag: member="sf::Listener::SetPosition" ref="e461aa59bf5aa43eb3e1fcf7cb2dbfd0" args="(const Vector3f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Listener::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the listener (take a 3D vector).
-<p>
-The default position is (0, 0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position of the listener in the world </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00067">67</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c54f7441ee2511079df71c1107242b48"></a><!-- doxytag: member="sf::Listener::SetPosition" ref="c54f7441ee2511079df71c1107242b48" args="(float X, float Y, float Z)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Listener::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Z</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the listener (take 3 values).
-<p>
-The default position is (0, 0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X,Y,Z</em>&nbsp;</td><td>: Position of the listener in the world </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00058">58</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e8191c90eb8d96e8d3cc578850c91b02"></a><!-- doxytag: member="sf::Listener::SetTarget" ref="e8191c90eb8d96e8d3cc578850c91b02" args="(const Vector3f &amp;Target)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Listener::SetTarget </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Target</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the orientation of the listener (the point he must look at) (take a 3D vector).
-<p>
-Change the orientation of the listener (the point he must look at) (take a 3D vector).<p>
-The default target is (0, 0, -1)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Target</em>&nbsp;</td><td>: Position of the point the listener must look at </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00100">100</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4638a9c80c9a2027e93b44acdc48a8bf"></a><!-- doxytag: member="sf::Listener::SetTarget" ref="4638a9c80c9a2027e93b44acdc48a8bf" args="(float X, float Y, float Z)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Listener::SetTarget </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Z</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the orientation of the listener (the point he must look at) (take 3 values).
-<p>
-Change the orientation of the listener (the point he must look at) (take 3 values).<p>
-The default target is (0, 0, -1)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X,Y,Z</em>&nbsp;</td><td>: Position of the point the listener must look at </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Listener_8cpp-source.htm#l00089">89</a> of file <a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Listener_8hpp-source.htm">Listener.hpp</a><li><a class="el" href="Listener_8cpp-source.htm">Listener.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Lock-members.htm b/doc/html/classsf_1_1Lock-members.htm
deleted file mode 100755
index 0e82fc2..0000000
--- a/doc/html/classsf_1_1Lock-members.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Lock Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Lock.htm">sf::Lock</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857">Lock</a>(Mutex &amp;Mutex)</td><td><a class="el" href="classsf_1_1Lock.htm">sf::Lock</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5">~Lock</a>()</td><td><a class="el" href="classsf_1_1Lock.htm">sf::Lock</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Lock.htm b/doc/html/classsf_1_1Lock.htm
deleted file mode 100755
index 0a9a882..0000000
--- a/doc/html/classsf_1_1Lock.htm
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Lock.htm">Lock</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Lock Class Reference</h1><!-- doxytag: class="sf::Lock" --><!-- doxytag: inherits="sf::NonCopyable" --><a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> is an exception-safe automatic wrapper for locking and unlocking mutexes.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Lock_8hpp-source.htm">Lock.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Lock:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Lock.png" usemap="#sf::Lock_map" border="0" alt=""></center>
-<map name="sf::Lock_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="0,0,105,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Lock-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857">Lock</a> (<a class="el" href="classsf_1_1Mutex.htm">Mutex</a> &amp;<a class="el" href="classsf_1_1Mutex.htm">Mutex</a>)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the lock with a target mutex (lock it). <a href="#197d1b7c85c9c6fd2d6512bd82653857"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5">~Lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor (unlocks the mutex). <a href="#8168b36323a18ccf5b6bc531d964aec5"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> is an exception-safe automatic wrapper for locking and unlocking mutexes.
-<p>Definition at line <a class="el" href="Lock_8hpp-source.htm#l00042">42</a> of file <a class="el" href="Lock_8hpp-source.htm">Lock.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="197d1b7c85c9c6fd2d6512bd82653857"></a><!-- doxytag: member="sf::Lock::Lock" ref="197d1b7c85c9c6fd2d6512bd82653857" args="(Mutex &amp;Mutex)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Lock::Lock </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Mutex.htm">Mutex</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Mutex</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the lock with a target mutex (lock it).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a></em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a> to lock </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Lock_8cpp-source.htm#l00037">37</a> of file <a class="el" href="Lock_8cpp-source.htm">Lock.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8168b36323a18ccf5b6bc531d964aec5"></a><!-- doxytag: member="sf::Lock::~Lock" ref="8168b36323a18ccf5b6bc531d964aec5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Lock::~Lock </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor (unlocks the mutex).
-<p>
-
-<p>Definition at line <a class="el" href="Lock_8cpp-source.htm#l00047">47</a> of file <a class="el" href="Lock_8cpp-source.htm">Lock.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Lock_8hpp-source.htm">Lock.hpp</a><li><a class="el" href="Lock_8cpp-source.htm">Lock.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Lock.png b/doc/html/classsf_1_1Lock.png
deleted file mode 100755
index f84237c..0000000
--- a/doc/html/classsf_1_1Lock.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Matrix3-members.htm b/doc/html/classsf_1_1Matrix3-members.htm
deleted file mode 100755
index d33fbb8..0000000
--- a/doc/html/classsf_1_1Matrix3-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Matrix3 Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1">Get4x4Elements</a>() const </td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e">GetInverse</a>() const </td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">Identity</a></td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c">Matrix3</a>()</td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#e0dc2db05f945d1e170f6d540193b309">Matrix3</a>(float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)</td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8">operator()</a>(unsigned int Row, unsigned int Col) const </td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator()</b>(unsigned int Row, unsigned int Col) (defined in <a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a>)</td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28">operator*</a>(const Matrix3 &amp;Mat) const </td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966">operator*=</a>(const Matrix3 &amp;Mat)</td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d">SetFromTransformations</a>(const Vector2f &amp;Center, const Vector2f &amp;Translation, float Rotation, const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151">Transform</a>(const Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Matrix3.htm b/doc/html/classsf_1_1Matrix3.htm
deleted file mode 100755
index 6974cee..0000000
--- a/doc/html/classsf_1_1Matrix3.htm
+++ /dev/null
@@ -1,426 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Matrix3 Class Reference</h1><!-- doxytag: class="sf::Matrix3" -->Utility class to manipulate 3x3 matrices representing 2D transformations.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Matrix3_8hpp-source.htm">Matrix3.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Matrix3-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c">Matrix3</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor (builds an identity matrix). <a href="#c91b75704a916deb3febe39e06962b4c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#e0dc2db05f945d1e170f6d540193b309">Matrix3</a> (float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a matrix from its 9 elements. <a href="#e0dc2db05f945d1e170f6d540193b309"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d">SetFromTransformations</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Translation, float Rotation, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Build a matrix from a set of transformations. <a href="#beb18b51c51229e809725e4cd5741b2d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151">Transform</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point by the matrix. <a href="#8cb1106305307a8fbf8450f4aa6f4151"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e">GetInverse</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the inverse of the matrix. <a href="#fa7b544f401812b55ace055043385e8e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1">Get4x4Elements</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the elements of the matrix as a 4x4, in an array of 16 floats. <a href="#ff23cbd3d056d404a566a62dea4c98c1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8">operator()</a> (unsigned int Row, unsigned int Col) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator () overloads to access the matrix elements. <a href="#fffc96664df9bfc7aff4b95a6b11aea8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="124eb681c1ecb8f98c3e69b173c85545"></a><!-- doxytag: member="sf::Matrix3::operator()" ref="124eb681c1ecb8f98c3e69b173c85545" args="(unsigned int Row, unsigned int Col)" -->
-float &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (unsigned int Row, unsigned int Col)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28">operator*</a> (const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;Mat) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator * overload to multiply two matrices. <a href="#695f753f4aa2cd617c1cecdfa0212e28"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966">operator*=</a> (const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;Mat)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator *= overload to multiply-assign two matrices. <a href="#ac08a84563176fb77613c43adf402966"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">Identity</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Identity matrix. <a href="#fa5a43545e529d8b8628ca42289ef40a"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Utility class to manipulate 3x3 matrices representing 2D transformations.
-<p>Definition at line <a class="el" href="Matrix3_8hpp-source.htm#l00042">42</a> of file <a class="el" href="Matrix3_8hpp-source.htm">Matrix3.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="c91b75704a916deb3febe39e06962b4c"></a><!-- doxytag: member="sf::Matrix3::Matrix3" ref="c91b75704a916deb3febe39e06962b4c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Matrix3::Matrix3 </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor (builds an identity matrix).
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e0dc2db05f945d1e170f6d540193b309"></a><!-- doxytag: member="sf::Matrix3::Matrix3" ref="e0dc2db05f945d1e170f6d540193b309" args="(float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Matrix3::Matrix3 </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a00</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a01</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a02</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a12</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a20</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a21</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>a22</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct a matrix from its 9 elements.
-<p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="ff23cbd3d056d404a566a62dea4c98c1"></a><!-- doxytag: member="sf::Matrix3::Get4x4Elements" ref="ff23cbd3d056d404a566a62dea4c98c1" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const float* sf::Matrix3::Get4x4Elements </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the elements of the matrix as a 4x4, in an array of 16 floats.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the 4x4 matrix elements </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="fa7b544f401812b55ace055043385e8e"></a><!-- doxytag: member="sf::Matrix3::GetInverse" ref="fa7b544f401812b55ace055043385e8e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> sf::Matrix3::GetInverse </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the inverse of the matrix.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>A new matrix which is the inverse of this </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="fffc96664df9bfc7aff4b95a6b11aea8"></a><!-- doxytag: member="sf::Matrix3::operator()" ref="fffc96664df9bfc7aff4b95a6b11aea8" args="(unsigned int Row, unsigned int Col) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Matrix3::operator() </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Row</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Col</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator () overloads to access the matrix elements.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Row</em>&nbsp;</td><td>: Element row (0 based) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: Element column (0 based)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Matrix element (Row, Col) </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="695f753f4aa2cd617c1cecdfa0212e28"></a><!-- doxytag: member="sf::Matrix3::operator*" ref="695f753f4aa2cd617c1cecdfa0212e28" args="(const Matrix3 &amp;Mat) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> sf::Matrix3::operator* </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Mat</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator * overload to multiply two matrices.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mat</em>&nbsp;</td><td>: Matrix to multiply</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>this * Mat </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ac08a84563176fb77613c43adf402966"></a><!-- doxytag: member="sf::Matrix3::operator*=" ref="ac08a84563176fb77613c43adf402966" args="(const Matrix3 &amp;Mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a>&amp; sf::Matrix3::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Mat</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator *= overload to multiply-assign two matrices.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mat</em>&nbsp;</td><td>: Matrix to multiply</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>this * Mat </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="beb18b51c51229e809725e4cd5741b2d"></a><!-- doxytag: member="sf::Matrix3::SetFromTransformations" ref="beb18b51c51229e809725e4cd5741b2d" args="(const Vector2f &amp;Center, const Vector2f &amp;Translation, float Rotation, const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Matrix3::SetFromTransformations </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Translation</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Build a matrix from a set of transformations.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: Origin for the transformations </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Translation</em>&nbsp;</td><td>: Translation offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Rotation angle in degrees </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: Scaling factors </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="8cb1106305307a8fbf8450f4aa6f4151"></a><!-- doxytag: member="sf::Matrix3::Transform" ref="8cb1106305307a8fbf8450f4aa6f4151" args="(const Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> sf::Matrix3::Transform </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point by the matrix.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="fa5a43545e529d8b8628ca42289ef40a"></a><!-- doxytag: member="sf::Matrix3::Identity" ref="fa5a43545e529d8b8628ca42289ef40a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> <a class="el" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">sf::Matrix3::Identity</a><code> [static]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Identity matrix.
-<p>
-
-<p>Definition at line <a class="el" href="Matrix3_8hpp-source.htm#l00133">133</a> of file <a class="el" href="Matrix3_8hpp-source.htm">Matrix3.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Matrix3_8hpp-source.htm">Matrix3.hpp</a><li><a class="el" href="Matrix3_8cpp-source.htm">Matrix3.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Music-members.htm b/doc/html/classsf_1_1Music-members.htm
deleted file mode 100755
index 5b73e6e..0000000
--- a/doc/html/classsf_1_1Music-members.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Music Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Music.htm">sf::Music</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">GetChannelsCount</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50">GetDuration</a>() const </td><td><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">GetLoop</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">GetPlayingOffset</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">GetSampleRate</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">Initialize</a>(unsigned int ChannelsCount, unsigned int SampleRate)</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6">Music</a>(std::size_t BufferSize=44100)</td><td><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db">OpenFromFile</a>(const std::string &amp;Filename)</td><td><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017">OpenFromMemory</a>(const char *Data, std::size_t SizeInBytes)</td><td><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">Play</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">SetLoop</a>(bool Loop)</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">SoundStream</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">Status</a> enum name</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">Stop</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b">~Music</a>()</td><td><a class="el" href="classsf_1_1Music.htm">sf::Music</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">~SoundStream</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Music.htm b/doc/html/classsf_1_1Music.htm
deleted file mode 100755
index 20304be..0000000
--- a/doc/html/classsf_1_1Music.htm
+++ /dev/null
@@ -1,539 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Music.htm">Music</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Music Class Reference</h1><!-- doxytag: class="sf::Music" --><!-- doxytag: inherits="sf::SoundStream" --><a class="el" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a> defines a big sound played using streaming, so usually what we call a music :).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Music_8hpp-source.htm">Music.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Music:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Music.png" usemap="#sf::Music_map" border="0" alt=""></center>
-<map name="sf::Music_map">
-<area href="classsf_1_1SoundStream.htm" alt="sf::SoundStream" shape="rect" coords="56,56,159,80">
-<area href="classsf_1_1Thread.htm" alt="sf::Thread" shape="rect" coords="0,0,103,24">
-<area href="classsf_1_1Sound.htm" alt="sf::Sound" shape="rect" coords="113,0,216,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Music-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">Status</a> </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of the sound states. <a href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6">Music</a> (std::size_t BufferSize=44100)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the music with a buffer size. <a href="#18db20495fc566e5f9c26fcfe1a5dff6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b">~Music</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#4c65860fed2f01d0eaa6c4199870414b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db">OpenFromFile</a> (const std::string &amp;Filename)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a music file (doesn't play it -- call <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a> for that). <a href="#26986766bc5674a87da1bcb10bef59db"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017">OpenFromMemory</a> (const char *Data, std::size_t SizeInBytes)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a music file from memory (doesn't play it -- call <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a> for that). <a href="#07896cadcaf54e2998e0f91fb2d6d017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50">GetDuration</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the music duration. <a href="#dbda9cff41ec10cb85db056cf67e5e50"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">Play</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start playing the audio stream. <a href="#4d8437ef9a952fe3798bd239ff20d9bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">Stop</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop playing the audio stream. <a href="#53c9e9b160bcbcc89c93c1682b4525df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">GetChannelsCount</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of channels (1 = mono, 2 = stereo). <a href="#bdcb5c8f3b5884a27e2eb013f5e36858"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">GetSampleRate</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the stream sample rate. <a href="#74dabd1177bb60c8bd64bb6bbedb64bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the status of the stream (stopped, paused, playing). <a href="#cef2468ca4bc3e8ced76b11fb95c7ef2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">GetPlayingOffset</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current playing position of the stream. <a href="#d11fee9eb4baba68d6ed9f44bc6170ac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">SetLoop</a> (bool Loop)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the stream loop state. <a href="#1072090152b10d83f43f0cd6bbd82b4e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">GetLoop</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the stream is looping. <a href="#caecb1c68af4a9d75f9e9ad2d42afa78"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">Initialize</a> (unsigned int ChannelsCount, unsigned int SampleRate)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the audio stream parameters, you must call it before <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a>. <a href="#ed9b6b06c0fa9c2d0b8c094eb2826793"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a> defines a big sound played using streaming, so usually what we call a music :).
-<p>Definition at line <a class="el" href="Music_8hpp-source.htm#l00047">47</a> of file <a class="el" href="Music_8hpp-source.htm">Music.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="28ad2186cde78fed2c79c867b9622195"></a><!-- doxytag: member="sf::Music::Status" ref="28ad2186cde78fed2c79c867b9622195" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">sf::Sound::Status</a><code> [inherited]</code> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumeration of the sound states.
-<p>
-
-<p>Definition at line <a class="el" href="Sound_8hpp-source.htm#l00052">52</a> of file <a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="18db20495fc566e5f9c26fcfe1a5dff6"></a><!-- doxytag: member="sf::Music::Music" ref="18db20495fc566e5f9c26fcfe1a5dff6" args="(std::size_t BufferSize=44100)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Music::Music </td>
- <td>(</td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>BufferSize</em> = <code>44100</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the music with a buffer size.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>BufferSize</em>&nbsp;</td><td>: Size of the internal buffer, expressed in number of samples (ie. size taken by the music in memory) (44100 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Music_8cpp-source.htm#l00040">40</a> of file <a class="el" href="Music_8cpp-source.htm">Music.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4c65860fed2f01d0eaa6c4199870414b"></a><!-- doxytag: member="sf::Music::~Music" ref="4c65860fed2f01d0eaa6c4199870414b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Music::~Music </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Music_8cpp-source.htm#l00052">52</a> of file <a class="el" href="Music_8cpp-source.htm">Music.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="bdcb5c8f3b5884a27e2eb013f5e36858"></a><!-- doxytag: member="sf::Music::GetChannelsCount" ref="bdcb5c8f3b5884a27e2eb013f5e36858" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundStream::GetChannelsCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the number of channels (1 = mono, 2 = stereo).
-<p>
-Return the number of channels (1 = mono, 2 = stereo, .<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of channels</dd></dl>
-..)
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00126">126</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dbda9cff41ec10cb85db056cf67e5e50"></a><!-- doxytag: member="sf::Music::GetDuration" ref="dbda9cff41ec10cb85db056cf67e5e50" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Music::GetDuration </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the music duration.
-<p>
-Get the sound duration.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a> duration, in seconds </dd></dl>
-
-<p>Definition at line <a class="el" href="Music_8cpp-source.htm#l00148">148</a> of file <a class="el" href="Music_8cpp-source.htm">Music.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="caecb1c68af4a9d75f9e9ad2d42afa78"></a><!-- doxytag: member="sf::Music::GetLoop" ref="caecb1c68af4a9d75f9e9ad2d42afa78" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundStream::GetLoop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the stream is looping.
-<p>
-Tell whether or not the music is looping.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the music is looping, false otherwise </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00180">180</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d11fee9eb4baba68d6ed9f44bc6170ac"></a><!-- doxytag: member="sf::Music::GetPlayingOffset" ref="d11fee9eb4baba68d6ed9f44bc6170ac" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::SoundStream::GetPlayingOffset </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current playing position of the stream.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current playing position, expressed in seconds<p>
-Current playing position, expressed in seconds </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00162">162</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="74dabd1177bb60c8bd64bb6bbedb64bc"></a><!-- doxytag: member="sf::Music::GetSampleRate" ref="74dabd1177bb60c8bd64bb6bbedb64bc" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundStream::GetSampleRate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the stream sample rate.
-<p>
-Get the sound frequency (sample rate).<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Stream frequency (number of samples per second) </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00135">135</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cef2468ca4bc3e8ced76b11fb95c7ef2"></a><!-- doxytag: member="sf::Music::GetStatus" ref="cef2468ca4bc3e8ced76b11fb95c7ef2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Sound::Status</a> sf::SoundStream::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the status of the stream (stopped, paused, playing).
-<p>
-Get the status of the sound (stopped, paused, playing).<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current status of the sound </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00144">144</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ed9b6b06c0fa9c2d0b8c094eb2826793"></a><!-- doxytag: member="sf::Music::Initialize" ref="ed9b6b06c0fa9c2d0b8c094eb2826793" args="(unsigned int ChannelsCount, unsigned int SampleRate)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Initialize </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ChannelsCount</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>SampleRate</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the audio stream parameters, you must call it before <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a>.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ChannelsCount</em>&nbsp;</td><td>: Number of channels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SampleRate</em>&nbsp;</td><td>: Sample rate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00064">64</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="26986766bc5674a87da1bcb10bef59db"></a><!-- doxytag: member="sf::Music::OpenFromFile" ref="26986766bc5674a87da1bcb10bef59db" args="(const std::string &amp;Filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Music::OpenFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Open a music file (doesn't play it -- call <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a> for that).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the music file to open</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Music_8cpp-source.htm#l00064">64</a> of file <a class="el" href="Music_8cpp-source.htm">Music.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="07896cadcaf54e2998e0f91fb2d6d017"></a><!-- doxytag: member="sf::Music::OpenFromMemory" ref="07896cadcaf54e2998e0f91fb2d6d017" args="(const char *Data, std::size_t SizeInBytes)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Music::OpenFromMemory </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SizeInBytes</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Open a music file from memory (doesn't play it -- call <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a> for that).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the file data in memory </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeInBytes</em>&nbsp;</td><td>: Size of the data to load, in bytes</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Music_8cpp-source.htm#l00091">91</a> of file <a class="el" href="Music_8cpp-source.htm">Music.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4d8437ef9a952fe3798bd239ff20d9bf"></a><!-- doxytag: member="sf::Music::Play" ref="4d8437ef9a952fe3798bd239ff20d9bf" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Play </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Start playing the audio stream.
-<p>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00085">85</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1072090152b10d83f43f0cd6bbd82b4e"></a><!-- doxytag: member="sf::Music::SetLoop" ref="1072090152b10d83f43f0cd6bbd82b4e" args="(bool Loop)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::SetLoop </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Loop</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the stream loop state.
-<p>
-Set the music loop state.<p>
-This parameter is disabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Loop</em>&nbsp;</td><td>: True to play in loop, false to play once </td></tr>
- </table>
-</dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00171">171</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="53c9e9b160bcbcc89c93c1682b4525df"></a><!-- doxytag: member="sf::Music::Stop" ref="53c9e9b160bcbcc89c93c1682b4525df" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Stop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Stop playing the audio stream.
-<p>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00115">115</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Music_8hpp-source.htm">Music.hpp</a><li><a class="el" href="Music_8cpp-source.htm">Music.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Music.png b/doc/html/classsf_1_1Music.png
deleted file mode 100755
index a767454..0000000
--- a/doc/html/classsf_1_1Music.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Mutex-members.htm b/doc/html/classsf_1_1Mutex-members.htm
deleted file mode 100755
index 81c0d71..0000000
--- a/doc/html/classsf_1_1Mutex-members.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Mutex Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab">Lock</a>()</td><td><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e">Mutex</a>()</td><td><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a">Unlock</a>()</td><td><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2">~Mutex</a>()</td><td><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Mutex.htm b/doc/html/classsf_1_1Mutex.htm
deleted file mode 100755
index ce03034..0000000
--- a/doc/html/classsf_1_1Mutex.htm
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Mutex.htm">Mutex</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Mutex Class Reference</h1><!-- doxytag: class="sf::Mutex" --><!-- doxytag: inherits="sf::NonCopyable" --><a class="el" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a> defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical instructions to avoid simultaneous access with other threads.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Win32_2Mutex_8hpp-source.htm">Mutex.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Mutex:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Mutex.png" usemap="#sf::Mutex_map" border="0" alt=""></center>
-<map name="sf::Mutex_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="0,0,105,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Mutex-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e">Mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#9bd52a48320fd7b6db8a78037aad276e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2">~Mutex</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#9f76a67b7b6d3918131a692179b4e3f2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab">Lock</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> the mutex. <a href="#73a2d7ffaa72fb1175d8787aa47550ab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a">Unlock</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock the mutex. <a href="#d4e1dd36cdec588e4f4d64434866d53a"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Mutex.htm" title="Mutex defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical...">Mutex</a> defines a mutex (MUTual EXclusion) object, that allows a thread to lock critical instructions to avoid simultaneous access with other threads.
-<p>
-The Win32 version uses critical sections, as it is faster than mutexes.<br>
- See <a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> for an efficient way of using it.
-<p>Definition at line <a class="el" href="Win32_2Mutex_8hpp-source.htm#l00045">45</a> of file <a class="el" href="Win32_2Mutex_8hpp-source.htm">Win32/Mutex.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="9bd52a48320fd7b6db8a78037aad276e"></a><!-- doxytag: member="sf::Mutex::Mutex" ref="9bd52a48320fd7b6db8a78037aad276e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Mutex::Mutex </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Mutex_8cpp-source.htm#l00036">36</a> of file <a class="el" href="Mutex_8cpp-source.htm">Mutex.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9f76a67b7b6d3918131a692179b4e3f2"></a><!-- doxytag: member="sf::Mutex::~Mutex" ref="9f76a67b7b6d3918131a692179b4e3f2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Mutex::~Mutex </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Mutex_8cpp-source.htm#l00045">45</a> of file <a class="el" href="Mutex_8cpp-source.htm">Mutex.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="73a2d7ffaa72fb1175d8787aa47550ab"></a><!-- doxytag: member="sf::Mutex::Lock" ref="73a2d7ffaa72fb1175d8787aa47550ab" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Mutex::Lock </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-<a class="el" href="classsf_1_1Lock.htm" title="Lock is an exception-safe automatic wrapper for locking and unlocking mutexes.">Lock</a> the mutex.
-<p>
-
-<p>Definition at line <a class="el" href="Mutex_8cpp-source.htm#l00054">54</a> of file <a class="el" href="Mutex_8cpp-source.htm">Mutex.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d4e1dd36cdec588e4f4d64434866d53a"></a><!-- doxytag: member="sf::Mutex::Unlock" ref="d4e1dd36cdec588e4f4d64434866d53a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Mutex::Unlock </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Unlock the mutex.
-<p>
-
-<p>Definition at line <a class="el" href="Mutex_8cpp-source.htm#l00063">63</a> of file <a class="el" href="Mutex_8cpp-source.htm">Mutex.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Win32_2Mutex_8hpp-source.htm">Win32/Mutex.hpp</a><li><a class="el" href="Mutex_8cpp-source.htm">Mutex.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Mutex.png b/doc/html/classsf_1_1Mutex.png
deleted file mode 100755
index 37d355f..0000000
--- a/doc/html/classsf_1_1Mutex.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Packet-members.htm b/doc/html/classsf_1_1Packet-members.htm
deleted file mode 100755
index 5ed4d0d..0000000
--- a/doc/html/classsf_1_1Packet-members.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Packet Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64">Append</a>(const void *Data, std::size_t SizeInBytes)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da">Clear</a>()</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36">EndOfPacket</a>() const </td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a">GetData</a>() const </td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d">GetDataSize</a>() const </td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6">operator bool</a>() const </td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550">operator&lt;&lt;</a>(bool Data)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Int8 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Uint8 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Int16 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Uint16 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Int32 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(Uint32 Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(float Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(double Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(const char *Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(const std::string &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(const wchar_t *Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&lt;&lt;</b>(const std::wstring &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16">operator&gt;&gt;</a>(bool &amp;Data)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Int8 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Uint8 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Int16 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Uint16 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Int32 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(Uint32 &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(float &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(double &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(char *Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(std::string &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(wchar_t *Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator&gt;&gt;</b>(std::wstring &amp;Data) (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858">Packet</a>()</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>SocketTCP</b> (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td><code> [friend]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>SocketUDP</b> (defined in <a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>)</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5">~Packet</a>()</td><td><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Packet.htm b/doc/html/classsf_1_1Packet.htm
deleted file mode 100755
index bfc150a..0000000
--- a/doc/html/classsf_1_1Packet.htm
+++ /dev/null
@@ -1,424 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Packet.htm">Packet</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Packet Class Reference</h1><!-- doxytag: class="sf::Packet" --><a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> wraps data to send / to receive through the network.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Packet_8hpp-source.htm">Packet.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Packet-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858">Packet</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#786e5d4ced83992ceefa1799963ea858"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5">~Packet</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <a href="#bd57f3b7a6e0e9119f4021754b5b19e5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64">Append</a> (const void *Data, std::size_t SizeInBytes)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append data to the end of the packet. <a href="#aaa020852bd7be75625b9f64b3a77c64"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da">Clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear the packet data. <a href="#3a7a30fb7a39e59df0cbd773756f60da"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a">GetData</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the data contained in the packet Warning : the returned pointer may be invalid after you append data to the packet. <a href="#78286172beef1f89bd2a77edb7118c7a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d">GetDataSize</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of the data contained in the packet. <a href="#4e6fcdc0ff42ad45b33cea22be253b0d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36">EndOfPacket</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the reading position has reached the end of the packet. <a href="#8d587905fb63e62419f1cc338eceed36"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6">operator bool</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the validity of packet. <a href="#087ae98bb7e93f8c82b29b88aee2f8d6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16">operator&gt;&gt;</a> (bool &amp;Data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator &gt;&gt; overloads to extract data from the packet. <a href="#8dfd4b8767cfd705a71d79b76d12ee16"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aae75c289e3719ed8bed8e38113a2173"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="aae75c289e3719ed8bed8e38113a2173" args="(Int8 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Int8 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f94175e49e7de4f0ad0182cc1a8d6e9d"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="f94175e49e7de4f0ad0182cc1a8d6e9d" args="(Uint8 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Uint8 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7555b63985eeb8e4c84c4cd4d366c912"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="7555b63985eeb8e4c84c4cd4d366c912" args="(Int16 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Int16 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="616d87ff0ef554ebb40cf03e21e1a098"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="616d87ff0ef554ebb40cf03e21e1a098" args="(Uint16 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Uint16 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3207d48a8f67d97c47feba75ced003b1"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="3207d48a8f67d97c47feba75ced003b1" args="(Int32 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Int32 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7046e2ca352612fc733c53e593f62254"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="7046e2ca352612fc733c53e593f62254" args="(Uint32 &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (Uint32 &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="92ae7aea969f9464b8e060ceaf111eb4"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="92ae7aea969f9464b8e060ceaf111eb4" args="(float &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (float &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b19341a5f43de09c6756ecca7134b716"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="b19341a5f43de09c6756ecca7134b716" args="(double &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (double &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a53e1bf31bc9b7c24fbbee317109aed2"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="a53e1bf31bc9b7c24fbbee317109aed2" args="(char *Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (char *Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="071a9e306370c58ff629faac35bd2c8f"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="071a9e306370c58ff629faac35bd2c8f" args="(std::string &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (std::string &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6a4a58d98d14b8b6b519f405da4a6b65"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="6a4a58d98d14b8b6b519f405da4a6b65" args="(wchar_t *Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (wchar_t *Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="57b2fb61a444a4ef782b8cbdeea2b250"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="57b2fb61a444a4ef782b8cbdeea2b250" args="(std::wstring &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (std::wstring &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550">operator&lt;&lt;</a> (bool Data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator &lt;&lt; overloads to put data into the packet. <a href="#63d813d3e0e7f8438ad15a0130b4f550"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9347ec41af2959871aed0402081e1776"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="9347ec41af2959871aed0402081e1776" args="(Int8 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Int8 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="503dbc5fcb30dafad82f4ba03122ca15"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="503dbc5fcb30dafad82f4ba03122ca15" args="(Uint8 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Uint8 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="652c760093d4d99957b65504ee10a8f8"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="652c760093d4d99957b65504ee10a8f8" args="(Int16 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Int16 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3bff4e704ea629291ba68c9e5e30843c"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="3bff4e704ea629291ba68c9e5e30843c" args="(Uint16 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Uint16 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="49b57b56fc00355aaca3ff6f92fd14c1"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="49b57b56fc00355aaca3ff6f92fd14c1" args="(Int32 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Int32 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="efa8ac0dd13312872c78a9eada54dd5a"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="efa8ac0dd13312872c78a9eada54dd5a" args="(Uint32 Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (Uint32 Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a401cc304feedeb5841cc31d27198fc"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="2a401cc304feedeb5841cc31d27198fc" args="(float Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (float Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2ffe815c2515026437b674201121be16"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="2ffe815c2515026437b674201121be16" args="(double Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (double Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31d185239d6e99120bd08ea833e63462"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="31d185239d6e99120bd08ea833e63462" args="(const char *Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (const char *Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8523cea4df1dbd52bae71c9c4f4e98e6"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="8523cea4df1dbd52bae71c9c4f4e98e6" args="(const std::string &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (const std::string &amp;Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="13e8c5fda6973f905e67107bb568f259"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="13e8c5fda6973f905e67107bb568f259" args="(const wchar_t *Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (const wchar_t *Data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cbc23fdf72e8ef25d6a6e04fc46393ed"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="cbc23fdf72e8ef25d6a6e04fc46393ed" args="(const std::wstring &amp;Data)" -->
-<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (const std::wstring &amp;Data)</td></tr>
-
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="96e899eb92ab68761ba10f3bcd3101bb"></a><!-- doxytag: member="sf::Packet::SocketTCP" ref="96e899eb92ab68761ba10f3bcd3101bb" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>SocketTCP</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="89a79a0a0dd881f68463c69c9e980412"></a><!-- doxytag: member="sf::Packet::SocketUDP" ref="89a79a0a0dd881f68463c69c9e980412" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>SocketUDP</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> wraps data to send / to receive through the network.
-<p>Definition at line <a class="el" href="Packet_8hpp-source.htm#l00041">41</a> of file <a class="el" href="Packet_8hpp-source.htm">Packet.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="786e5d4ced83992ceefa1799963ea858"></a><!-- doxytag: member="sf::Packet::Packet" ref="786e5d4ced83992ceefa1799963ea858" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Packet::Packet </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00038">38</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bd57f3b7a6e0e9119f4021754b5b19e5"></a><!-- doxytag: member="sf::Packet::~Packet" ref="bd57f3b7a6e0e9119f4021754b5b19e5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Packet::~Packet </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Virtual destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00049">49</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="aaa020852bd7be75625b9f64b3a77c64"></a><!-- doxytag: member="sf::Packet::Append" ref="aaa020852bd7be75625b9f64b3a77c64" args="(const void *Data, std::size_t SizeInBytes)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Packet::Append </td>
- <td>(</td>
- <td class="paramtype">const void *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SizeInBytes</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Append data to the end of the packet.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the bytes to append </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeInBytes</em>&nbsp;</td><td>: Number of bytes to append </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00058">58</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3a7a30fb7a39e59df0cbd773756f60da"></a><!-- doxytag: member="sf::Packet::Clear" ref="3a7a30fb7a39e59df0cbd773756f60da" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Packet::Clear </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Clear the packet data.
-<p>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00072">72</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8d587905fb63e62419f1cc338eceed36"></a><!-- doxytag: member="sf::Packet::EndOfPacket" ref="8d587905fb63e62419f1cc338eceed36" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Packet::EndOfPacket </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell if the reading position has reached the end of the packet.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if all data have been read into the packet </dd></dl>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00103">103</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="78286172beef1f89bd2a77edb7118c7a"></a><!-- doxytag: member="sf::Packet::GetData" ref="78286172beef1f89bd2a77edb7118c7a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char * sf::Packet::GetData </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a pointer to the data contained in the packet Warning : the returned pointer may be invalid after you append data to the packet.
-<p>
-Get a pointer to the data contained in the packet Warning : the returned pointer may be invalid after you append data to the packet.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the data </dd></dl>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e6fcdc0ff42ad45b33cea22be253b0d"></a><!-- doxytag: member="sf::Packet::GetDataSize" ref="4e6fcdc0ff42ad45b33cea22be253b0d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::Packet::GetDataSize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the size of the data contained in the packet.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Data size, in bytes </dd></dl>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00094">94</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="087ae98bb7e93f8c82b29b88aee2f8d6"></a><!-- doxytag: member="sf::Packet::operator bool" ref="087ae98bb7e93f8c82b29b88aee2f8d6" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Packet::operator bool </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the validity of packet.
-<p>
-Tell if the packet is valid for reading.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if last data extraction from packet was successful </dd></dl>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00112">112</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="63d813d3e0e7f8438ad15a0130b4f550"></a><!-- doxytag: member="sf::Packet::operator&lt;&lt;" ref="63d813d3e0e7f8438ad15a0130b4f550" args="(bool Data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp; sf::Packet::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Data</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator &lt;&lt; overloads to put data into the packet.
-<p>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00290">290</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8dfd4b8767cfd705a71d79b76d12ee16"></a><!-- doxytag: member="sf::Packet::operator&gt;&gt;" ref="8dfd4b8767cfd705a71d79b76d12ee16" args="(bool &amp;Data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp; sf::Packet::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype">bool &amp;&nbsp;</td>
- <td class="paramname"> <em>Data</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator &gt;&gt; overloads to extract data from the packet.
-<p>
-
-<p>Definition at line <a class="el" href="Packet_8cpp-source.htm#l00121">121</a> of file <a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Packet_8hpp-source.htm">Packet.hpp</a><li><a class="el" href="Packet_8cpp-source.htm">Packet.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1PostFX-members.htm b/doc/html/classsf_1_1PostFX-members.htm
deleted file mode 100755
index f04507b..0000000
--- a/doc/html/classsf_1_1PostFX-members.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::PostFX Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e">CanUsePostFX</a>()</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a>(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92">LoadFromFile</a>(const std::string &amp;Filename)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6">LoadFromMemory</a>(const std::string &amp;Effect)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a>(const Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba">operator=</a>(const PostFX &amp;Other)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb">PostFX</a>()</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#4ec47ed9e2539b589695854e2b259b47">PostFX</a>(const PostFX &amp;Copy)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc">Render</a>(RenderTarget &amp;Target) const </td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a>(float Angle)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a>(float FactorX, float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a>(const Vector2f &amp;Factor)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a>(Blend::Mode Mode)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a>(float CenterX, float CenterY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a>(const Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a>(const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a">SetParameter</a>(const std::string &amp;Name, float X)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#a92c8a3f203a64d816c6844bdfad2393">SetParameter</a>(const std::string &amp;Name, float X, float Y)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#031c257687c3115d6f524e7922e32d67">SetParameter</a>(const std::string &amp;Name, float X, float Y, float Z)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#3bc85737080c281148a247fccb8e06de">SetParameter</a>(const std::string &amp;Name, float X, float Y, float Z, float W)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a>(const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a>(float Rotation)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a>(float ScaleX, float ScaleY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a>(const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a>(float FactorX)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a>(float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1">SetTexture</a>(const std::string &amp;Name, Image *Texture)</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a>(float X)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a>(float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a>()</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63">~PostFX</a>()</td><td><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1PostFX.htm b/doc/html/classsf_1_1PostFX.htm
deleted file mode 100755
index 4ae5e92..0000000
--- a/doc/html/classsf_1_1PostFX.htm
+++ /dev/null
@@ -1,1474 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1PostFX.htm">PostFX</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::PostFX Class Reference</h1><!-- doxytag: class="sf::PostFX" --><!-- doxytag: inherits="sf::Drawable" --><a class="el" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a> is used to apply a post effect to a window.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="PostFX_8hpp-source.htm">PostFX.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::PostFX:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1PostFX.png" usemap="#sf::PostFX_map" border="0" alt=""></center>
-<map name="sf::PostFX_map">
-<area href="classsf_1_1Drawable.htm" alt="sf::Drawable" shape="rect" coords="0,0,82,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1PostFX-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb">PostFX</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#205bffbe841cf3804447e8d3e684f7eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#4ec47ed9e2539b589695854e2b259b47">PostFX</a> (const <a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#4ec47ed9e2539b589695854e2b259b47"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63">~PostFX</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#b9349387988368fe8a2c66e4b3220d63"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92">LoadFromFile</a> (const std::string &amp;Filename)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the effect from a file. <a href="#03c9aa065a98750335780213aff2be92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6">LoadFromMemory</a> (const std::string &amp;Effect)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the effect from a text in memory. <a href="#53b9df4741e52bd4978d642153e492b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a">SetParameter</a> (const std::string &amp;Name, float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change a parameter of the effect (1 float). <a href="#4d7e11f6ecf159d09460220ecc43e45a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#a92c8a3f203a64d816c6844bdfad2393">SetParameter</a> (const std::string &amp;Name, float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change a parameter of the effect (2 floats). <a href="#a92c8a3f203a64d816c6844bdfad2393"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#031c257687c3115d6f524e7922e32d67">SetParameter</a> (const std::string &amp;Name, float X, float Y, float Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change a parameter of the effect (3 floats). <a href="#031c257687c3115d6f524e7922e32d67"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#3bc85737080c281148a247fccb8e06de">SetParameter</a> (const std::string &amp;Name, float X, float Y, float Z, float W)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change a parameter of the effect (4 floats). <a href="#3bc85737080c281148a247fccb8e06de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1">SetTexture</a> (const std::string &amp;Name, <a class="el" href="classsf_1_1Image.htm">Image</a> *Texture)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a texture parameter. <a href="#4b9d05ec45df72151d0a5284cbf88fa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba">operator=</a> (const <a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#e4f7f8c7b1b28f80a41f3e9680248eba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take 2 values). <a href="#419da954b1f2ad1ac2ae0b9ab6e72589"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take a 2D vector). <a href="#d2a279f3b13abf57cc25b2b4bd3b81ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a> (float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X position of the object. <a href="#c8de7bfe092736083dcf23b0dbd22b1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a> (float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y position of the object. <a href="#83fecebe749c1aca9070eafd63e1a0c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a> (float ScaleX, float ScaleY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take 2 values). <a href="#0b486c56c2bd137bac629f72fea66769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take a 2D vector). <a href="#84876c5ef7fa628c85c3c9e000e50aa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a> (float FactorX)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X scale factor of the object. <a href="#0cafae61a1d23bddb059d64df0e1502f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a> (float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y scale factor of the object. <a href="#89e7793c74c656e5850b71d0ab34b8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a> (float CenterX, float CenterY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take 2 values). <a href="#11ba1d92bc863af6d95831d216802f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector). <a href="#235e438555d8161f4995615f24fa0b11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a> (float Rotation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of the object. <a href="#6d06383770eb01ffecf3d1cae6fec0ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of the object. <a href="#8cae9f22220985e368a1b38af7644ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a> (<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the blending mode for the object. <a href="#aa6558b1ae27e29cb825028473707da5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of the object. <a href="#9ad52594fd5e835cbd03b79098d70e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current scale of the object. <a href="#fa4d6b97e7c10a82430ff9ee56009c97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the object. <a href="#de634efe8d6264282acc564fa5ea77c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the orientation of the object. <a href="#4e82bec096673bccf7ceac5207617017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of the object. <a href="#a2a028c4a975b5ed6d5a560a1c44e0c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current blending mode. <a href="#b6446c4717a2800cad85db55cb55409a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take 2 values). <a href="#501df9af956362b3e3769d80381c051b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take a 2D vector). <a href="#3c0ac0851d6b0ebed80ae9641ff93161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a> (float FactorX, float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take 2 values). <a href="#2a132c9f2f3736b7d0f6ea80303caacd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take a 2D vector). <a href="#c969d85eaf63f072de9e963bd973e91a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a> (float Angle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the object. <a href="#3e7d558d0ef488485a2d3f885ff2b419"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point). <a href="#809f25ae0b3a2015ec8a44fe9f5a0008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point). <a href="#fe3cb6e62921ce13806c27dc727f8945"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e">CanUsePostFX</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the system supports post-effects. <a href="#617259ccc0f380c4818f92b7779c128e"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc">Render</a> (<a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;Target) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">/see Drawable::Render <a href="#c059bb07500cf27ffa1536512b8a24cc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transform matrix of the drawable. <a href="#c659a89e42063d13aa9ebe2b534d404e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse transform matrix of the drawable. <a href="#48238d5726104ba7ddb42f21fc5d5b2f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1PostFX.htm" title="PostFX is used to apply a post effect to a window.">PostFX</a> is used to apply a post effect to a window.
-<p>Definition at line <a class="el" href="PostFX_8hpp-source.htm#l00043">43</a> of file <a class="el" href="PostFX_8hpp-source.htm">PostFX.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="205bffbe841cf3804447e8d3e684f7eb"></a><!-- doxytag: member="sf::PostFX::PostFX" ref="205bffbe841cf3804447e8d3e684f7eb" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::PostFX::PostFX </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00043">43</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4ec47ed9e2539b589695854e2b259b47"></a><!-- doxytag: member="sf::PostFX::PostFX" ref="4ec47ed9e2539b589695854e2b259b47" args="(const PostFX &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::PostFX::PostFX </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: Instance to copy </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00054">54</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b9349387988368fe8a2c66e4b3220d63"></a><!-- doxytag: member="sf::PostFX::~PostFX" ref="b9349387988368fe8a2c66e4b3220d63" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::PostFX::~PostFX </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00073">73</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="617259ccc0f380c4818f92b7779c128e"></a><!-- doxytag: member="sf::PostFX::CanUsePostFX" ref="617259ccc0f380c4818f92b7779c128e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::PostFX::CanUsePostFX </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the system supports post-effects.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the system can use post-effects </dd></dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00265">265</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b6446c4717a2800cad85db55cb55409a"></a><!-- doxytag: member="sf::PostFX::GetBlendMode" ref="b6446c4717a2800cad85db55cb55409a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> sf::Drawable::GetBlendMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current blending mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current blending mode </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="de634efe8d6264282acc564fa5ea77c0"></a><!-- doxytag: member="sf::PostFX::GetCenter" ref="de634efe8d6264282acc564fa5ea77c0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position of the center </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a2a028c4a975b5ed6d5a560a1c44e0c8"></a><!-- doxytag: member="sf::PostFX::GetColor" ref="a2a028c4a975b5ed6d5a560a1c44e0c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Drawable::GetColor </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current color </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="48238d5726104ba7ddb42f21fc5d5b2f"></a><!-- doxytag: member="sf::PostFX::GetInverseMatrix" ref="48238d5726104ba7ddb42f21fc5d5b2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetInverseMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the inverse transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Inverse transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00350">350</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c659a89e42063d13aa9ebe2b534d404e"></a><!-- doxytag: member="sf::PostFX::GetMatrix" ref="c659a89e42063d13aa9ebe2b534d404e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00334">334</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9ad52594fd5e835cbd03b79098d70e0b"></a><!-- doxytag: member="sf::PostFX::GetPosition" ref="9ad52594fd5e835cbd03b79098d70e0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00213">213</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e82bec096673bccf7ceac5207617017"></a><!-- doxytag: member="sf::PostFX::GetRotation" ref="4e82bec096673bccf7ceac5207617017" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Drawable::GetRotation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the orientation of the object.
-<p>
-Rotation is always in the range [0, 360]<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current rotation, in degrees </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fa4d6b97e7c10a82430ff9ee56009c97"></a><!-- doxytag: member="sf::PostFX::GetScale" ref="fa4d6b97e7c10a82430ff9ee56009c97" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetScale </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current scale of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current scale factor (always positive) </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="03c9aa065a98750335780213aff2be92"></a><!-- doxytag: member="sf::PostFX::LoadFromFile" ref="03c9aa065a98750335780213aff2be92" args="(const std::string &amp;Filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::PostFX::LoadFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the effect from a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the effect file to load</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True on success </dd></dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00089">89</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="53b9df4741e52bd4978d642153e492b6"></a><!-- doxytag: member="sf::PostFX::LoadFromMemory" ref="53b9df4741e52bd4978d642153e492b6" args="(const std::string &amp;Effect)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::PostFX::LoadFromMemory </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Effect</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the effect from a text in memory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Effect</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> containing the effect code</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True on success </dd></dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00112">112</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3c0ac0851d6b0ebed80ae9641ff93161"></a><!-- doxytag: member="sf::PostFX::Move" ref="3c0ac0851d6b0ebed80ae9641ff93161" args="(const Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Amount of units to move the object of </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00278">278</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="501df9af956362b3e3769d80381c051b"></a><!-- doxytag: member="sf::PostFX::Move" ref="501df9af956362b3e3769d80381c051b" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: X offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Y offset</td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00268">268</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e4f7f8c7b1b28f80a41f3e9680248eba"></a><!-- doxytag: member="sf::PostFX::operator=" ref="e4f7f8c7b1b28f80a41f3e9680248eba" args="(const PostFX &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp; sf::PostFX::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1PostFX.htm">PostFX</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Instance to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the post-effect </dd></dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00249">249</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c059bb07500cf27ffa1536512b8a24cc"></a><!-- doxytag: member="sf::PostFX::Render" ref="c059bb07500cf27ffa1536512b8a24cc" args="(RenderTarget &amp;Target) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::Render </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Target</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-/see Drawable::Render
-<p>
-
-<p>Implements <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>.</p>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00280">280</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3e7d558d0ef488485a2d3f885ff2b419"></a><!-- doxytag: member="sf::PostFX::Rotate" ref="3e7d558d0ef488485a2d3f885ff2b419" args="(float Angle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Rotate </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Angle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rotate the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Angle</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00306">306</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c969d85eaf63f072de9e963bd973e91a"></a><!-- doxytag: member="sf::PostFX::Scale" ref="c969d85eaf63f072de9e963bd973e91a" args="(const Vector2f &amp;Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Scaling factors (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00297">297</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a132c9f2f3736b7d0f6ea80303caacd"></a><!-- doxytag: member="sf::PostFX::Scale" ref="2a132c9f2f3736b7d0f6ea80303caacd" args="(float FactorX, float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FactorX</em>&nbsp;</td><td>: Scaling factor on X (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>FactorY</em>&nbsp;</td><td>: Scaling factor on Y (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00287">287</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa6558b1ae27e29cb825028473707da5"></a><!-- doxytag: member="sf::PostFX::SetBlendMode" ref="aa6558b1ae27e29cb825028473707da5" args="(Blend::Mode Mode)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetBlendMode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the blending mode for the object.
-<p>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: New blending mode</td></tr>
- </table>
-</dl>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a>
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00204">204</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="235e438555d8161f4995615f24fa0b11"></a><!-- doxytag: member="sf::PostFX::SetCenter" ref="235e438555d8161f4995615f24fa0b11" args="(const Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00171">171</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11ba1d92bc863af6d95831d216802f61"></a><!-- doxytag: member="sf::PostFX::SetCenter" ref="11ba1d92bc863af6d95831d216802f61" args="(float CenterX, float CenterY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CenterX</em>&nbsp;</td><td>: X coordinate of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CenterY</em>&nbsp;</td><td>: Y coordinate of the center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cae9f22220985e368a1b38af7644ffb"></a><!-- doxytag: member="sf::PostFX::SetColor" ref="8cae9f22220985e368a1b38af7644ffb" args="(const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetColor </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of the object.
-<p>
-The default color is white<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color</td></tr>
- </table>
-</dl>
-The default color is white
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00194">194</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3bc85737080c281148a247fccb8e06de"></a><!-- doxytag: member="sf::PostFX::SetParameter" ref="3bc85737080c281148a247fccb8e06de" args="(const std::string &amp;Name, float X, float Y, float Z, float W)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::SetParameter </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>W</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change a parameter of the effect (4 floats).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Parameter name in the effect </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>X,Y,Z,W</em>&nbsp;</td><td>: Values to assign </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00199">199</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="031c257687c3115d6f524e7922e32d67"></a><!-- doxytag: member="sf::PostFX::SetParameter" ref="031c257687c3115d6f524e7922e32d67" args="(const std::string &amp;Name, float X, float Y, float Z)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::SetParameter </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Z</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change a parameter of the effect (3 floats).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Parameter name in the effect </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>X,Y,Z</em>&nbsp;</td><td>: Values to assign </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00176">176</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a92c8a3f203a64d816c6844bdfad2393"></a><!-- doxytag: member="sf::PostFX::SetParameter" ref="a92c8a3f203a64d816c6844bdfad2393" args="(const std::string &amp;Name, float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::SetParameter </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change a parameter of the effect (2 floats).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Parameter name in the effect </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>X,Y</em>&nbsp;</td><td>: Values to assign </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00153">153</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4d7e11f6ecf159d09460220ecc43e45a"></a><!-- doxytag: member="sf::PostFX::SetParameter" ref="4d7e11f6ecf159d09460220ecc43e45a" args="(const std::string &amp;Name, float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::SetParameter </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change a parameter of the effect (1 float).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Parameter name in the effect </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: Value to assign </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00130">130</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d2a279f3b13abf57cc25b2b4bd3b81ae"></a><!-- doxytag: member="sf::PostFX::SetPosition" ref="d2a279f3b13abf57cc25b2b4bd3b81ae" args="(const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00075">75</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="419da954b1f2ad1ac2ae0b9ab6e72589"></a><!-- doxytag: member="sf::PostFX::SetPosition" ref="419da954b1f2ad1ac2ae0b9ab6e72589" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d06383770eb01ffecf3d1cae6fec0ec"></a><!-- doxytag: member="sf::PostFX::SetRotation" ref="6d06383770eb01ffecf3d1cae6fec0ec" args="(float Rotation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetRotation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the orientation of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="84876c5ef7fa628c85c3c9e000e50aa1"></a><!-- doxytag: member="sf::PostFX::SetScale" ref="84876c5ef7fa628c85c3c9e000e50aa1" args="(const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: New scale (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00117">117</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b486c56c2bd137bac629f72fea66769"></a><!-- doxytag: member="sf::PostFX::SetScale" ref="0b486c56c2bd137bac629f72fea66769" args="(float ScaleX, float ScaleY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ScaleX</em>&nbsp;</td><td>: New horizontal scale (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ScaleY</em>&nbsp;</td><td>: New vertical scale (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00107">107</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cafae61a1d23bddb059d64df0e1502f"></a><!-- doxytag: member="sf::PostFX::SetScaleX" ref="0cafae61a1d23bddb059d64df0e1502f" args="(float FactorX)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00127">127</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="89e7793c74c656e5850b71d0ab34b8bf"></a><!-- doxytag: member="sf::PostFX::SetScaleY" ref="89e7793c74c656e5850b71d0ab34b8bf" args="(float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00141">141</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4b9d05ec45df72151d0a5284cbf88fa1"></a><!-- doxytag: member="sf::PostFX::SetTexture" ref="4b9d05ec45df72151d0a5284cbf88fa1" args="(const std::string &amp;Name, Image *Texture)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::PostFX::SetTexture </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1Image.htm">Image</a> *&nbsp;</td>
- <td class="paramname"> <em>Texture</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a texture parameter.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>: Texture name in the effect </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Texture</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> to set (pass NULL to use content of current framebuffer) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="PostFX_8cpp-source.htm#l00222">222</a> of file <a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8de7bfe092736083dcf23b0dbd22b1e"></a><!-- doxytag: member="sf::PostFX::SetX" ref="c8de7bfe092736083dcf23b0dbd22b1e" args="(float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="83fecebe749c1aca9070eafd63e1a0c9"></a><!-- doxytag: member="sf::PostFX::SetY" ref="83fecebe749c1aca9070eafd63e1a0c9" args="(float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe3cb6e62921ce13806c27dc727f8945"></a><!-- doxytag: member="sf::PostFX::TransformToGlobal" ref="fe3cb6e62921ce13806c27dc727f8945" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToGlobal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00325">325</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="809f25ae0b3a2015ec8a44fe9f5a0008"></a><!-- doxytag: member="sf::PostFX::TransformToLocal" ref="809f25ae0b3a2015ec8a44fe9f5a0008" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToLocal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00316">316</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="PostFX_8hpp-source.htm">PostFX.hpp</a><li><a class="el" href="PostFX_8cpp-source.htm">PostFX.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1PostFX.png b/doc/html/classsf_1_1PostFX.png
deleted file mode 100755
index ffc8273..0000000
--- a/doc/html/classsf_1_1PostFX.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Randomizer-members.htm b/doc/html/classsf_1_1Randomizer-members.htm
deleted file mode 100755
index 4851ce2..0000000
--- a/doc/html/classsf_1_1Randomizer-members.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Randomizer Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48">GetSeed</a>()</td><td><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575">Random</a>(float Begin, float End)</td><td><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Randomizer.htm#d019beb93fc4779ab8e13af833fac237">Random</a>(int Begin, int End)</td><td><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937">SetSeed</a>(unsigned int Seed)</td><td><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a></td><td><code> [static]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Randomizer.htm b/doc/html/classsf_1_1Randomizer.htm
deleted file mode 100755
index 439f5fd..0000000
--- a/doc/html/classsf_1_1Randomizer.htm
+++ /dev/null
@@ -1,198 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Randomizer.htm">Randomizer</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Randomizer Class Reference</h1><!-- doxytag: class="sf::Randomizer" --><a class="el" href="classsf_1_1Randomizer.htm" title="Randomizer is an utility class for generating pseudo-random numbers.">Randomizer</a> is an utility class for generating pseudo-random numbers.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Randomizer_8hpp-source.htm">Randomizer.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Randomizer-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937">SetSeed</a> (unsigned int Seed)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the seed for the generator. <a href="#4cba1a8faeedf65ec732febef8aac937"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48">GetSeed</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the seed used to generate random numbers the generator. <a href="#490911d5e87a4d3043b85def7b2c0d48"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575">Random</a> (float Begin, float End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a random float number in a given range. <a href="#d788e20470b24935fa3fff4aa9f1b575"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Randomizer.htm#d019beb93fc4779ab8e13af833fac237">Random</a> (int Begin, int End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a random integer number in a given range. <a href="#d019beb93fc4779ab8e13af833fac237"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Randomizer.htm" title="Randomizer is an utility class for generating pseudo-random numbers.">Randomizer</a> is an utility class for generating pseudo-random numbers.
-<p>Definition at line <a class="el" href="Randomizer_8hpp-source.htm#l00040">40</a> of file <a class="el" href="Randomizer_8hpp-source.htm">Randomizer.hpp</a>.</p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="490911d5e87a4d3043b85def7b2c0d48"></a><!-- doxytag: member="sf::Randomizer::GetSeed" ref="490911d5e87a4d3043b85def7b2c0d48" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Randomizer::GetSeed </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the seed used to generate random numbers the generator.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current seed </dd></dl>
-
-<p>Definition at line <a class="el" href="Randomizer_8cpp-source.htm#l00067">67</a> of file <a class="el" href="Randomizer_8cpp-source.htm">Randomizer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d019beb93fc4779ab8e13af833fac237"></a><!-- doxytag: member="sf::Randomizer::Random" ref="d019beb93fc4779ab8e13af833fac237" args="(int Begin, int End)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int sf::Randomizer::Random </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a random integer number in a given range.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Start : Start of the range <p>
-End : End of the range<p>
-Random number in [Begin, End] </dd></dl>
-
-<p>Definition at line <a class="el" href="Randomizer_8cpp-source.htm#l00088">88</a> of file <a class="el" href="Randomizer_8cpp-source.htm">Randomizer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d788e20470b24935fa3fff4aa9f1b575"></a><!-- doxytag: member="sf::Randomizer::Random" ref="d788e20470b24935fa3fff4aa9f1b575" args="(float Begin, float End)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Randomizer::Random </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a random float number in a given range.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Start : Start of the range <p>
-End : End of the range<p>
-Random number in [Begin, End] </dd></dl>
-
-<p>Definition at line <a class="el" href="Randomizer_8cpp-source.htm#l00076">76</a> of file <a class="el" href="Randomizer_8cpp-source.htm">Randomizer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4cba1a8faeedf65ec732febef8aac937"></a><!-- doxytag: member="sf::Randomizer::SetSeed" ref="4cba1a8faeedf65ec732febef8aac937" args="(unsigned int Seed)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Randomizer::SetSeed </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Seed</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the seed for the generator.
-<p>
-Using a known seed allows you to reproduce the same sequence of random number<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Seed</em>&nbsp;</td><td>: Number to use as the seed</td></tr>
- </table>
-</dl>
-Using a known seed allows you to reproduce the same sequence of random number
-<p>Definition at line <a class="el" href="Randomizer_8cpp-source.htm#l00057">57</a> of file <a class="el" href="Randomizer_8cpp-source.htm">Randomizer.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Randomizer_8hpp-source.htm">Randomizer.hpp</a><li><a class="el" href="Randomizer_8cpp-source.htm">Randomizer.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Rect-members.htm b/doc/html/classsf_1_1Rect-members.htm
deleted file mode 100755
index fba80f5..0000000
--- a/doc/html/classsf_1_1Rect-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Rect&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">Bottom</a></td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7">Contains</a>(T X, T Y) const </td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75">GetHeight</a>() const </td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087">GetWidth</a>() const </td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272">Intersects</a>(const Rect&lt; T &gt; &amp;Rectangle, Rect&lt; T &gt; *OverlappingRect=NULL) const </td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">Left</a></td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd">Offset</a>(T OffsetX, T OffsetY)</td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37">Rect</a>()</td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#0f19f5cf78eb52f122b904fb258acfce">Rect</a>(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord)</td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">Right</a></td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">Top</a></td><td><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Rect.htm b/doc/html/classsf_1_1Rect.htm
deleted file mode 100755
index 1df103a..0000000
--- a/doc/html/classsf_1_1Rect.htm
+++ /dev/null
@@ -1,428 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Rect.htm">Rect</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Rect&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="sf::Rect" --><a class="el" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a> is an utility class for manipulating rectangles.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Rect-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37">Rect</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#0f87ebaef9722a6222fd2e04ce8efb37"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#0f19f5cf78eb52f122b904fb258acfce">Rect</a> (T LeftCoord, T TopCoord, T RightCoord, T BottomCoord)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the rectangle from its coordinates. <a href="#0f19f5cf78eb52f122b904fb258acfce"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087">GetWidth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width of the rectangle. <a href="#6a8c09ef44123228aa44aff8f0b09087"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75">GetHeight</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the rectangle. <a href="#a3c1ca9c959dae33d2eec290b2e48d75"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd">Offset</a> (T OffsetX, T OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the whole rectangle by the given offset. <a href="#bacc8c95dd784ad3e19d94474bee24cd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7">Contains</a> (T X, T Y) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a point is inside the rectangle's area. <a href="#b56c71b17e5edfaf4e4c839b8b4dfcb7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272">Intersects</a> (const <a class="el" href="classsf_1_1Rect.htm">Rect</a>&lt; T &gt; &amp;Rectangle, <a class="el" href="classsf_1_1Rect.htm">Rect</a>&lt; T &gt; *OverlappingRect=NULL) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check intersection between two rectangles. <a href="#703256dda71eb3a5e748f5b0265e9272"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">Left</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Left coordinate of the rectangle. <a href="#9619c6b9741163c86eea6a0b84b2f9b3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">Top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Top coordinate of the rectangle. <a href="#4addcc0bf656fb5f2f80d406cf90c047"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">Right</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Right coordinate of the rectangle. <a href="#6ce87895496327187a20a46dc2479383"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">Bottom</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bottom coordinate of the rectangle. <a href="#b234b311011892cfd8a3e831dec341a8"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename T&gt;<br>
- class sf::Rect&lt; T &gt;</h3>
-
-<a class="el" href="classsf_1_1Rect.htm" title="Rect is an utility class for manipulating rectangles.">Rect</a> is an utility class for manipulating rectangles.
-<p>
-Template parameter defines the type of coordinates (integer, float, ...)
-<p>Definition at line <a class="el" href="Rect_8hpp-source.htm#l00041">41</a> of file <a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="0f87ebaef9722a6222fd2e04ce8efb37"></a><!-- doxytag: member="sf::Rect::Rect" ref="0f87ebaef9722a6222fd2e04ce8efb37" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm">Rect</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0f19f5cf78eb52f122b904fb258acfce"></a><!-- doxytag: member="sf::Rect::Rect" ref="0f19f5cf78eb52f122b904fb258acfce" args="(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm">Rect</a> </td>
- <td>(</td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>LeftCoord</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>TopCoord</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>RightCoord</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>BottomCoord</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the rectangle from its coordinates.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LeftCoord</em>&nbsp;</td><td>: Left coordinate of the rectangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>TopCoord</em>&nbsp;</td><td>: Top coordinate of the rectangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RightCoord</em>&nbsp;</td><td>: Right coordinate of the rectangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>BottomCoord</em>&nbsp;</td><td>: Bottom coordinate of the rectangle </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b56c71b17e5edfaf4e4c839b8b4dfcb7"></a><!-- doxytag: member="sf::Rect::Contains" ref="b56c71b17e5edfaf4e4c839b8b4dfcb7" args="(T X, T Y) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::Contains </td>
- <td>(</td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Check if a point is inside the rectangle's area.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate of the point to test </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate of the point to test</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the point is inside </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="a3c1ca9c959dae33d2eec290b2e48d75"></a><!-- doxytag: member="sf::Rect::GetHeight" ref="a3c1ca9c959dae33d2eec290b2e48d75" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::GetHeight </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the height of the rectangle.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Height of rectangle </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="6a8c09ef44123228aa44aff8f0b09087"></a><!-- doxytag: member="sf::Rect::GetWidth" ref="6a8c09ef44123228aa44aff8f0b09087" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::GetWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the width of the rectangle.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Width of rectangle </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="703256dda71eb3a5e748f5b0265e9272"></a><!-- doxytag: member="sf::Rect::Intersects" ref="703256dda71eb3a5e748f5b0265e9272" args="(const Rect&lt; T &gt; &amp;Rectangle, Rect&lt; T &gt; *OverlappingRect=NULL) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::Intersects </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">Rect</a>&lt; T &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Rectangle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1Rect.htm">Rect</a>&lt; T &gt; *&nbsp;</td>
- <td class="paramname"> <em>OverlappingRect</em> = <code>NULL</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Check intersection between two rectangles.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rectangle</em>&nbsp;</td><td>: Rectangle to test </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OverlappingRect</em>&nbsp;</td><td>: Rectangle to be filled with overlapping rect (NULL by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if rectangles overlap </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="bacc8c95dd784ad3e19d94474bee24cd"></a><!-- doxytag: member="sf::Rect::Offset" ref="bacc8c95dd784ad3e19d94474bee24cd" args="(T OffsetX, T OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::Offset </td>
- <td>(</td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the whole rectangle by the given offset.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: Horizontal offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Vertical offset </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="b234b311011892cfd8a3e831dec341a8"></a><!-- doxytag: member="sf::Rect::Bottom" ref="b234b311011892cfd8a3e831dec341a8" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">Bottom</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bottom coordinate of the rectangle.
-<p>
-
-<p>Definition at line <a class="el" href="Rect_8hpp-source.htm#l00115">115</a> of file <a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9619c6b9741163c86eea6a0b84b2f9b3"></a><!-- doxytag: member="sf::Rect::Left" ref="9619c6b9741163c86eea6a0b84b2f9b3" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">Left</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Left coordinate of the rectangle.
-<p>
-
-<p>Definition at line <a class="el" href="Rect_8hpp-source.htm#l00112">112</a> of file <a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6ce87895496327187a20a46dc2479383"></a><!-- doxytag: member="sf::Rect::Right" ref="6ce87895496327187a20a46dc2479383" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">Right</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Right coordinate of the rectangle.
-<p>
-
-<p>Definition at line <a class="el" href="Rect_8hpp-source.htm#l00114">114</a> of file <a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4addcc0bf656fb5f2f80d406cf90c047"></a><!-- doxytag: member="sf::Rect::Top" ref="4addcc0bf656fb5f2f80d406cf90c047" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Rect.htm">sf::Rect</a>&lt; T &gt;::<a class="el" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">Top</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Top coordinate of the rectangle.
-<p>
-
-<p>Definition at line <a class="el" href="Rect_8hpp-source.htm#l00113">113</a> of file <a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Rect_8hpp-source.htm">Rect.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1RenderTarget-members.htm b/doc/html/classsf_1_1RenderTarget-members.htm
deleted file mode 100755
index dd1524d..0000000
--- a/doc/html/classsf_1_1RenderTarget-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::RenderTarget Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">Clear</a>(const Color &amp;FillColor=Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">Draw</a>(const Drawable &amp;Object)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">GetDefaultView</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a">GetHeight</a>() const =0</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">GetView</a>() const </td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681">GetWidth</a>() const =0</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">Initialize</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">PreserveOpenGLStates</a>(bool Preserve)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">RenderTarget</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">SetView</a>(const View &amp;NewView)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">~RenderTarget</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1RenderTarget.htm b/doc/html/classsf_1_1RenderTarget.htm
deleted file mode 100755
index 5c9f16b..0000000
--- a/doc/html/classsf_1_1RenderTarget.htm
+++ /dev/null
@@ -1,390 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::RenderTarget Class Reference</h1><!-- doxytag: class="sf::RenderTarget" -->Base class for all render targets (window, image, .
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RenderTarget_8hpp-source.htm">RenderTarget.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::RenderTarget:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1RenderTarget.png" usemap="#sf::RenderTarget_map" border="0" alt=""></center>
-<map name="sf::RenderTarget_map">
-<area href="classsf_1_1RenderWindow.htm" alt="sf::RenderWindow" shape="rect" coords="0,56,113,80">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1RenderTarget-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">~RenderTarget</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#45414a2f09b257db7e7b37861d70c5a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">Clear</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;FillColor=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear the entire target with a single color. <a href="#125645088d7b2df07599ea36fbb8b87e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">Draw</a> (const <a class="el" href="classsf_1_1Drawable.htm">Drawable</a> &amp;Object)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw something into the target. <a href="#18678bb6afe22b7462e2cf08f701d2ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681">GetWidth</a> () const =0</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width of the rendering region of the target. <a href="#4df749ecfddb5355d8357afe719cf681"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a">GetHeight</a> () const =0</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the rendering region of the target. <a href="#9495774c371e0dd9ad9835ad2f34a03a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">SetView</a> (const <a class="el" href="classsf_1_1View.htm">View</a> &amp;NewView)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the current active view. <a href="#7060ca19e685d8d5b7c6f5dd9b5906e1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">GetView</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current view. <a href="#d426b7ba51cc6970fb828a2bef020274"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">GetDefaultView</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the default view of the window for read / write. <a href="#16db9179a7f035c59b8ecdd10cc2e699"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">PreserveOpenGLStates</a> (bool Preserve)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell SFML to preserve external OpenGL states, at the expense of more CPU charge. <a href="#b763d16f00166b516fead600d8824c71"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">RenderTarget</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#2997c96cbd93cb8ce0aba2ddae35b86f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">Initialize</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by the derived class when it's ready to be initialized. <a href="#3d9265548b6903ab7f645d12177bba24"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class for all render targets (window, image, .
-<p>
-..)
-<p>Definition at line <a class="el" href="RenderTarget_8hpp-source.htm#l00043">43</a> of file <a class="el" href="RenderTarget_8hpp-source.htm">RenderTarget.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="45414a2f09b257db7e7b37861d70c5a0"></a><!-- doxytag: member="sf::RenderTarget::~RenderTarget" ref="45414a2f09b257db7e7b37861d70c5a0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderTarget::~RenderTarget </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00051">51</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2997c96cbd93cb8ce0aba2ddae35b86f"></a><!-- doxytag: member="sf::RenderTarget::RenderTarget" ref="2997c96cbd93cb8ce0aba2ddae35b86f" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderTarget::RenderTarget </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00039">39</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="125645088d7b2df07599ea36fbb8b87e"></a><!-- doxytag: member="sf::RenderTarget::Clear" ref="125645088d7b2df07599ea36fbb8b87e" args="(const Color &amp;FillColor=Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Clear </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>FillColor</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0)</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Clear the entire target with a single color.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FillColor</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to use to clear the render target </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00060">60</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="18678bb6afe22b7462e2cf08f701d2ff"></a><!-- doxytag: member="sf::RenderTarget::Draw" ref="18678bb6afe22b7462e2cf08f701d2ff" args="(const Drawable &amp;Object)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Draw </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Drawable.htm">Drawable</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Object</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Draw something into the target.
-<p>
-Draw something on the window.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>: Object to draw </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00076">76</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="16db9179a7f035c59b8ecdd10cc2e699"></a><!-- doxytag: member="sf::RenderTarget::GetDefaultView" ref="16db9179a7f035c59b8ecdd10cc2e699" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1View.htm">View</a> &amp; sf::RenderTarget::GetDefaultView </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the default view of the window for read / write.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Default view </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00147">147</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9495774c371e0dd9ad9835ad2f34a03a"></a><!-- doxytag: member="sf::RenderTarget::GetHeight" ref="9495774c371e0dd9ad9835ad2f34a03a" args="() const =0" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">virtual unsigned int sf::RenderTarget::GetHeight </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [pure virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the height of the rendering region of the target.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Height in pixels </dd></dl>
-
-<p>Implemented in <a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">sf::RenderWindow</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d426b7ba51cc6970fb828a2bef020274"></a><!-- doxytag: member="sf::RenderTarget::GetView" ref="d426b7ba51cc6970fb828a2bef020274" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1View.htm">View</a> &amp; sf::RenderTarget::GetView </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current view.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current view active in the window </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00138">138</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4df749ecfddb5355d8357afe719cf681"></a><!-- doxytag: member="sf::RenderTarget::GetWidth" ref="4df749ecfddb5355d8357afe719cf681" args="() const =0" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">virtual unsigned int sf::RenderTarget::GetWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [pure virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the width of the rendering region of the target.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Width in pixels </dd></dl>
-
-<p>Implemented in <a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">sf::RenderWindow</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3d9265548b6903ab7f645d12177bba24"></a><!-- doxytag: member="sf::RenderTarget::Initialize" ref="3d9265548b6903ab7f645d12177bba24" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Initialize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Called by the derived class when it's ready to be initialized.
-<p>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00170">170</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b763d16f00166b516fead600d8824c71"></a><!-- doxytag: member="sf::RenderTarget::PreserveOpenGLStates" ref="b763d16f00166b516fead600d8824c71" args="(bool Preserve)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::PreserveOpenGLStates </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Preserve</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell SFML to preserve external OpenGL states, at the expense of more CPU charge.
-<p>
-Tell SFML to preserve external OpenGL states, at the expense of more CPU charge.<p>
-Use this function if you don't want SFML to mess up your own OpenGL states (if any). Don't enable state preservation if not needed, as it will allow SFML to do internal optimizations and improve performances. This parameter is false by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Preserve</em>&nbsp;</td><td>: True to preserve OpenGL states, false to let SFML optimize</td></tr>
- </table>
-</dl>
-Use this function if you don't want SFML to mess up your own OpenGL states (if any). Don't enable state preservation if not needed, as it will allow SFML to do internal optimizations and improve performances. This parameter is false by default
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00161">161</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7060ca19e685d8d5b7c6f5dd9b5906e1"></a><!-- doxytag: member="sf::RenderTarget::SetView" ref="7060ca19e685d8d5b7c6f5dd9b5906e1" args="(const View &amp;NewView)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::SetView </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>NewView</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the current active view.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>NewView</em>&nbsp;</td><td>: New view to use (pass <a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699" title="Get the default view of the window for read / write.">GetDefaultView()</a> to set the default view) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00129">129</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="RenderTarget_8hpp-source.htm">RenderTarget.hpp</a><li><a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1RenderTarget.png b/doc/html/classsf_1_1RenderTarget.png
deleted file mode 100755
index f69c5c1..0000000
--- a/doc/html/classsf_1_1RenderTarget.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1RenderWindow-members.htm b/doc/html/classsf_1_1RenderWindow-members.htm
deleted file mode 100755
index 9b44990..0000000
--- a/doc/html/classsf_1_1RenderWindow-members.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::RenderWindow Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a">Capture</a>() const </td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">Clear</a>(const Color &amp;FillColor=Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">Close</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17">ConvertCoords</a>(unsigned int WindowX, unsigned int WindowY, const View *TargetView=NULL) const </td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">Create</a>(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">Create</a>(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">Display</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">Draw</a>(const Drawable &amp;Object)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">EnableKeyRepeat</a>(bool Enabled)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">GetDefaultView</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">GetEvent</a>(Event &amp;EventReceived)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">GetFrameTime</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">GetHeight</a>() const </td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">GetInput</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">GetSettings</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">GetView</a>() const </td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">GetWidth</a>() const </td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">Initialize</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">IsOpened</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">PreserveOpenGLStates</a>(bool Preserve)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">RenderTarget</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021">RenderWindow</a>()</td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#da5aeec63eddbfacb6ee093ed0fff082">RenderWindow</a>(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#b35dccdc0c735f50edba3acb0cfbea03">RenderWindow</a>(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">SetActive</a>(bool Active=true) const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">SetCursorPosition</a>(unsigned int Left, unsigned int Top)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">SetFramerateLimit</a>(unsigned int Limit)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">SetIcon</a>(unsigned int Width, unsigned int Height, const Uint8 *Pixels)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">SetJoystickThreshold</a>(float Threshold)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">SetPosition</a>(int Left, int Top)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">SetSize</a>(unsigned int Width, unsigned int Height)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">SetView</a>(const View &amp;NewView)</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">Show</a>(bool State)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">ShowMouseCursor</a>(bool Show)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">UseVerticalSync</a>(bool Enabled)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4">Window</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">Window</a>(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#ef6c45b1d53ed4a884ccb9c609d2456a">Window</a>(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">~RenderTarget</a>()</td><td><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020">~RenderWindow</a>()</td><td><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">~Window</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">~WindowListener</a>()</td><td><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td><code> [inline, protected, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1RenderWindow.htm b/doc/html/classsf_1_1RenderWindow.htm
deleted file mode 100755
index 0371b84..0000000
--- a/doc/html/classsf_1_1RenderWindow.htm
+++ /dev/null
@@ -1,1271 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1RenderWindow.htm">RenderWindow</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::RenderWindow Class Reference</h1><!-- doxytag: class="sf::RenderWindow" --><!-- doxytag: inherits="sf::Window,sf::RenderTarget" -->Simple wrapper for <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> that allows easy 2D rendering.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RenderWindow_8hpp-source.htm">RenderWindow.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::RenderWindow:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1RenderWindow.png" usemap="#sf::RenderWindow_map" border="0" alt=""></center>
-<map name="sf::RenderWindow_map">
-<area href="classsf_1_1Window.htm" alt="sf::Window" shape="rect" coords="63,56,180,80">
-<area href="classsf_1_1RenderTarget.htm" alt="sf::RenderTarget" shape="rect" coords="190,56,307,80">
-<area href="classsf_1_1WindowListener.htm" alt="sf::WindowListener" shape="rect" coords="0,0,117,24">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="127,0,244,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1RenderWindow-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021">RenderWindow</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#839bbf336bdcafb084dafc3076fc9021"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#da5aeec63eddbfacb6ee093ed0fff082">RenderWindow</a> (<a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the window. <a href="#da5aeec63eddbfacb6ee093ed0fff082"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#b35dccdc0c735f50edba3acb0cfbea03">RenderWindow</a> (WindowHandle Handle, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the window from an existing control. <a href="#b35dccdc0c735f50edba3acb0cfbea03"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020">~RenderWindow</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#b95277816e7237146ebfeb6d35f85020"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">GetWidth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width of the rendering region of the window. <a href="#e2b04f655a655b7c4bfac22958266e0c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">GetHeight</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the rendering region of the window. <a href="#efa842a47f9c2415d1f8e93543ed2447"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Image.htm">Image</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a">Capture</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save the content of the window to an image. <a href="#7066f80705fb53c2c4a9fe068fc47a8a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17">ConvertCoords</a> (unsigned int WindowX, unsigned int WindowY, const <a class="el" href="classsf_1_1View.htm">View</a> *TargetView=NULL) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a point in window coordinates into view coordinates. <a href="#05c614a2cdc2c2c4e3b473e39b3b9a17"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">Create</a> (<a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create (or recreate) the window. <a href="#a891f1cbd7d77c4dc02ac950b6e76f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">Create</a> (WindowHandle Handle, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create (or recreate) the window from an existing control. <a href="#58e264c181fd70e67986d26fea69a71d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">Close</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close (destroy) the window. <a href="#b04439f6fb9fdfe40f882676fdb2938c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">IsOpened</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the window is opened (ie. <a href="#5c4c82e1fdb4252108314fcbe462ad8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">GetSettings</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the creation settings of the window. <a href="#27321006595f9f6a482b26b13800695f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">GetEvent</a> (<a class="el" href="classsf_1_1Event.htm">Event</a> &amp;EventReceived)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the event on top of events stack, if any, and pop it. <a href="#65cb14f66a870f459bd66e11e52fbfe8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">UseVerticalSync</a> (bool Enabled)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable / disable vertical synchronization. <a href="#cb8391cc93ff730288e2a8dd6b0bb7b5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">ShowMouseCursor</a> (bool Show)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Show or hide the mouse cursor. <a href="#6142e38cb60901e6604284425714f3f0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">SetCursorPosition</a> (unsigned int Left, unsigned int Top)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the mouse cursor. <a href="#369d1764893c6fde8979fcf04142dc55"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">SetPosition</a> (int Left, int Top)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the window on screen. <a href="#3a6d2908a624a8afda4b2fdd9ef46058"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">SetSize</a> (unsigned int Width, unsigned int Height)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the size of the rendering region of the window. <a href="#dc4461bfaa9b4ff0fd0364a5079a47ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">Show</a> (bool State)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Show or hide the window. <a href="#727c01602c86710fd935f9892946b2de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">EnableKeyRepeat</a> (bool Enabled)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable automatic key-repeat. <a href="#43ac767f0b7b697b392444d639b909e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">SetIcon</a> (unsigned int Width, unsigned int Height, const Uint8 *Pixels)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the window's icon. <a href="#36fa09e52af66878b8b826457b8f1dfa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">SetActive</a> (bool Active=true) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Activate of deactivate the window as the current target for rendering. <a href="#9fc1e745594d5cf6a30225ec9ea36675"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">Display</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display the window on screen. <a href="#ee37843c5c882f7b3a0788b310308435"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Input.htm">Input</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">GetInput</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the input manager of the window. <a href="#49db47a79ca98b7d65087adeea06e919"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">SetFramerateLimit</a> (unsigned int Limit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Limit the framerate to a maximum fixed frequency. <a href="#5544031f1d2965c00532fb5660763f33"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">GetFrameTime</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time elapsed since last frame. <a href="#63571ef14c9351899bcd605fb101c254"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">SetJoystickThreshold</a> (float Threshold)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the joystick threshold, ie. <a href="#d685eed68b85a66c8000a08e9a28aa91"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">Clear</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;FillColor=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear the entire target with a single color. <a href="#125645088d7b2df07599ea36fbb8b87e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">Draw</a> (const <a class="el" href="classsf_1_1Drawable.htm">Drawable</a> &amp;Object)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw something into the target. <a href="#18678bb6afe22b7462e2cf08f701d2ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">SetView</a> (const <a class="el" href="classsf_1_1View.htm">View</a> &amp;NewView)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the current active view. <a href="#7060ca19e685d8d5b7c6f5dd9b5906e1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">GetView</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current view. <a href="#d426b7ba51cc6970fb828a2bef020274"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">GetDefaultView</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the default view of the window for read / write. <a href="#16db9179a7f035c59b8ecdd10cc2e699"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">PreserveOpenGLStates</a> (bool Preserve)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell SFML to preserve external OpenGL states, at the expense of more CPU charge. <a href="#b763d16f00166b516fead600d8824c71"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">Initialize</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by the derived class when it's ready to be initialized. <a href="#3d9265548b6903ab7f645d12177bba24"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Simple wrapper for <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> that allows easy 2D rendering.
-<p>Definition at line <a class="el" href="RenderWindow_8hpp-source.htm#l00045">45</a> of file <a class="el" href="RenderWindow_8hpp-source.htm">RenderWindow.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="839bbf336bdcafb084dafc3076fc9021"></a><!-- doxytag: member="sf::RenderWindow::RenderWindow" ref="839bbf336bdcafb084dafc3076fc9021" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderWindow::RenderWindow </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00040">40</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="da5aeec63eddbfacb6ee093ed0fff082"></a><!-- doxytag: member="sf::RenderWindow::RenderWindow" ref="da5aeec63eddbfacb6ee093ed0fff082" args="(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderWindow::RenderWindow </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Title</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long&nbsp;</td>
- <td class="paramname"> <em>WindowStyle</em> = <code>Style::Resize&nbsp;|&nbsp;Style::Close</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Video mode to use </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>: Title of the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>WindowStyle</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> style, see <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">sf::Style</a> (Resize | Close by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00049">49</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b35dccdc0c735f50edba3acb0cfbea03"></a><!-- doxytag: member="sf::RenderWindow::RenderWindow" ref="b35dccdc0c735f50edba3acb0cfbea03" args="(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderWindow::RenderWindow </td>
- <td>(</td>
- <td class="paramtype">WindowHandle&nbsp;</td>
- <td class="paramname"> <em>Handle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the window from an existing control.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Handle</em>&nbsp;</td><td>: Platform-specific handle of the control </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00058">58</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b95277816e7237146ebfeb6d35f85020"></a><!-- doxytag: member="sf::RenderWindow::~RenderWindow" ref="b95277816e7237146ebfeb6d35f85020" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::RenderWindow::~RenderWindow </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00067">67</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="7066f80705fb53c2c4a9fe068fc47a8a"></a><!-- doxytag: member="sf::RenderWindow::Capture" ref="7066f80705fb53c2c4a9fe068fc47a8a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Image.htm">Image</a> sf::RenderWindow::Capture </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Save the content of the window to an image.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> instance containing the contents of the screen </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00107">107</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="125645088d7b2df07599ea36fbb8b87e"></a><!-- doxytag: member="sf::RenderWindow::Clear" ref="125645088d7b2df07599ea36fbb8b87e" args="(const Color &amp;FillColor=Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Clear </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>FillColor</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0)</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Clear the entire target with a single color.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FillColor</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> to use to clear the render target </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00060">60</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b04439f6fb9fdfe40f882676fdb2938c"></a><!-- doxytag: member="sf::RenderWindow::Close" ref="b04439f6fb9fdfe40f882676fdb2938c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Close </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close (destroy) the window.
-<p>
-The <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> instance remains valid and you can call Create to recreate the window<p>
-The <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> instance remains valid and you can call Create to recreate the window
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00165">165</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="05c614a2cdc2c2c4e3b473e39b3b9a17"></a><!-- doxytag: member="sf::RenderWindow::ConvertCoords" ref="05c614a2cdc2c2c4e3b473e39b3b9a17" args="(unsigned int WindowX, unsigned int WindowY, const View *TargetView=NULL) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::RenderWindow::ConvertCoords </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>WindowX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>WindowY</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1View.htm">View</a> *&nbsp;</td>
- <td class="paramname"> <em>TargetView</em> = <code>NULL</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convert a point in window coordinates into view coordinates.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>WindowX</em>&nbsp;</td><td>: X coordinate of the point to convert, relative to the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>WindowY</em>&nbsp;</td><td>: Y coordinate of the point to convert, relative to the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>TargetView</em>&nbsp;</td><td>: Target view to convert the point to (NULL by default -- uses the current view)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Converted point </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00142">142</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="58e264c181fd70e67986d26fea69a71d"></a><!-- doxytag: member="sf::RenderWindow::Create" ref="58e264c181fd70e67986d26fea69a71d" args="(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Create </td>
- <td>(</td>
- <td class="paramtype">WindowHandle&nbsp;</td>
- <td class="paramname"> <em>Handle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create (or recreate) the window from an existing control.
-<p>
-Create the window from an existing control.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Handle</em>&nbsp;</td><td>: Platform-specific handle of the control </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00147">147</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a891f1cbd7d77c4dc02ac950b6e76f61"></a><!-- doxytag: member="sf::RenderWindow::Create" ref="a891f1cbd7d77c4dc02ac950b6e76f61" args="(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Create </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Title</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long&nbsp;</td>
- <td class="paramname"> <em>WindowStyle</em> = <code>Style::Resize&nbsp;|&nbsp;Style::Close</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create (or recreate) the window.
-<p>
-Create the window.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Video mode to use </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>: Title of the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>WindowStyle</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> style, see <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">sf::Style</a> (Resize | Close by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00104">104</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ee37843c5c882f7b3a0788b310308435"></a><!-- doxytag: member="sf::RenderWindow::Display" ref="ee37843c5c882f7b3a0788b310308435" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Display </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Display the window on screen.
-<p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00353">353</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="18678bb6afe22b7462e2cf08f701d2ff"></a><!-- doxytag: member="sf::RenderWindow::Draw" ref="18678bb6afe22b7462e2cf08f701d2ff" args="(const Drawable &amp;Object)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Draw </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Drawable.htm">Drawable</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Object</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Draw something into the target.
-<p>
-Draw something on the window.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Object</em>&nbsp;</td><td>: Object to draw </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00076">76</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="43ac767f0b7b697b392444d639b909e0"></a><!-- doxytag: member="sf::RenderWindow::EnableKeyRepeat" ref="43ac767f0b7b697b392444d639b909e0" args="(bool Enabled)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::EnableKeyRepeat </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enabled</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable or disable automatic key-repeat.
-<p>
-Automatic key-repeat is enabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enabled</em>&nbsp;</td><td>: True to enable, false to disable</td></tr>
- </table>
-</dl>
-Automatic key-repeat is enabled by default
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00317">317</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="16db9179a7f035c59b8ecdd10cc2e699"></a><!-- doxytag: member="sf::RenderWindow::GetDefaultView" ref="16db9179a7f035c59b8ecdd10cc2e699" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1View.htm">View</a> &amp; sf::RenderTarget::GetDefaultView </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the default view of the window for read / write.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Default view </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00147">147</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="65cb14f66a870f459bd66e11e52fbfe8"></a><!-- doxytag: member="sf::RenderWindow::GetEvent" ref="65cb14f66a870f459bd66e11e52fbfe8" args="(Event &amp;EventReceived)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::GetEvent </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Event.htm">Event</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>EventReceived</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the event on top of events stack, if any, and pop it.
-<p>
-Get the event on top of events stack, if any.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>EventReceived</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> to fill, if any</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if an event was returned, false if events stack was empty </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00218">218</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="63571ef14c9351899bcd605fb101c254"></a><!-- doxytag: member="sf::RenderWindow::GetFrameTime" ref="63571ef14c9351899bcd605fb101c254" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Window::GetFrameTime </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get time elapsed since last frame.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Time elapsed, in seconds </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00394">394</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="efa842a47f9c2415d1f8e93543ed2447"></a><!-- doxytag: member="sf::RenderWindow::GetHeight" ref="efa842a47f9c2415d1f8e93543ed2447" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::RenderWindow::GetHeight </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the height of the rendering region of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Height in pixels </dd></dl>
-
-<p>Implements <a class="el" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a">sf::RenderTarget</a>.</p>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00098">98</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="49db47a79ca98b7d65087adeea06e919"></a><!-- doxytag: member="sf::RenderWindow::GetInput" ref="49db47a79ca98b7d65087adeea06e919" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Input.htm">Input</a> &amp; sf::Window::GetInput </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the input manager of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the input </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00376">376</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="27321006595f9f6a482b26b13800695f"></a><!-- doxytag: member="sf::RenderWindow::GetSettings" ref="27321006595f9f6a482b26b13800695f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp; sf::Window::GetSettings </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the creation settings of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Structure containing the creation settings </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00209">209</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d426b7ba51cc6970fb828a2bef020274"></a><!-- doxytag: member="sf::RenderWindow::GetView" ref="d426b7ba51cc6970fb828a2bef020274" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1View.htm">View</a> &amp; sf::RenderTarget::GetView </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current view.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current view active in the window </dd></dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00138">138</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e2b04f655a655b7c4bfac22958266e0c"></a><!-- doxytag: member="sf::RenderWindow::GetWidth" ref="e2b04f655a655b7c4bfac22958266e0c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::RenderWindow::GetWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the width of the rendering region of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Width in pixels </dd></dl>
-
-<p>Implements <a class="el" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681">sf::RenderTarget</a>.</p>
-
-<p>Definition at line <a class="el" href="RenderWindow_8cpp-source.htm#l00089">89</a> of file <a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3d9265548b6903ab7f645d12177bba24"></a><!-- doxytag: member="sf::RenderWindow::Initialize" ref="3d9265548b6903ab7f645d12177bba24" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::Initialize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Called by the derived class when it's ready to be initialized.
-<p>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00170">170</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5c4c82e1fdb4252108314fcbe462ad8d"></a><!-- doxytag: member="sf::RenderWindow::IsOpened" ref="5c4c82e1fdb4252108314fcbe462ad8d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::IsOpened </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the window is opened (ie.
-<p>
-has been created). Note that a hidden window (Show(false)) will still return true<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the window is opened</dd></dl>
-has been created). Note that a hidden window (Show(false)) will still return true
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00182">182</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b763d16f00166b516fead600d8824c71"></a><!-- doxytag: member="sf::RenderWindow::PreserveOpenGLStates" ref="b763d16f00166b516fead600d8824c71" args="(bool Preserve)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::PreserveOpenGLStates </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Preserve</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell SFML to preserve external OpenGL states, at the expense of more CPU charge.
-<p>
-Tell SFML to preserve external OpenGL states, at the expense of more CPU charge.<p>
-Use this function if you don't want SFML to mess up your own OpenGL states (if any). Don't enable state preservation if not needed, as it will allow SFML to do internal optimizations and improve performances. This parameter is false by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Preserve</em>&nbsp;</td><td>: True to preserve OpenGL states, false to let SFML optimize</td></tr>
- </table>
-</dl>
-Use this function if you don't want SFML to mess up your own OpenGL states (if any). Don't enable state preservation if not needed, as it will allow SFML to do internal optimizations and improve performances. This parameter is false by default
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00161">161</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9fc1e745594d5cf6a30225ec9ea36675"></a><!-- doxytag: member="sf::RenderWindow::SetActive" ref="9fc1e745594d5cf6a30225ec9ea36675" args="(bool Active=true) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::SetActive </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Active</em> = <code>true</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Activate of deactivate the window as the current target for rendering.
-<p>
-Activate of deactivate the window as the current target for rendering.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Active</em>&nbsp;</td><td>: True to activate, false to deactivate (true by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successful, false otherwise </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00338">338</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="369d1764893c6fde8979fcf04142dc55"></a><!-- doxytag: member="sf::RenderWindow::SetCursorPosition" ref="369d1764893c6fde8979fcf04142dc55" args="(unsigned int Left, unsigned int Top)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetCursorPosition </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Top</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the mouse cursor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Left</em>&nbsp;</td><td>: Left coordinate of the cursor, relative to the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Top</em>&nbsp;</td><td>: Top coordinate of the cursor, relative to the window </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00260">260</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5544031f1d2965c00532fb5660763f33"></a><!-- doxytag: member="sf::RenderWindow::SetFramerateLimit" ref="5544031f1d2965c00532fb5660763f33" args="(unsigned int Limit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetFramerateLimit </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Limit</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Limit the framerate to a maximum fixed frequency.
-<p>
-Set the framerate at a fixed frequency.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Limit</em>&nbsp;</td><td>: Framerate limit, in frames per seconds (use 0 to disable limit) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00385">385</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="36fa09e52af66878b8b826457b8f1dfa"></a><!-- doxytag: member="sf::RenderWindow::SetIcon" ref="36fa09e52af66878b8b826457b8f1dfa" args="(unsigned int Width, unsigned int Height, const Uint8 *Pixels)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetIcon </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const Uint8 *&nbsp;</td>
- <td class="paramname"> <em>Pixels</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the window's icon.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: Icon's width, in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: Icon's height, in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Pixels</em>&nbsp;</td><td>: Pointer to the pixels in memory, format must be RGBA 32 bits </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00327">327</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d685eed68b85a66c8000a08e9a28aa91"></a><!-- doxytag: member="sf::RenderWindow::SetJoystickThreshold" ref="d685eed68b85a66c8000a08e9a28aa91" args="(float Threshold)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetJoystickThreshold </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Threshold</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the joystick threshold, ie.
-<p>
-the value below which no move event will be generated<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Threshold</em>&nbsp;</td><td>: New threshold, in range [0, 100]</td></tr>
- </table>
-</dl>
-the value below which no move event will be generated
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00404">404</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3a6d2908a624a8afda4b2fdd9ef46058"></a><!-- doxytag: member="sf::RenderWindow::SetPosition" ref="3a6d2908a624a8afda4b2fdd9ef46058" args="(int Left, int Top)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetPosition </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>Left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>Top</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the window on screen.
-<p>
-Only works for top-level windows<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Left</em>&nbsp;</td><td>: Left position </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Top</em>&nbsp;</td><td>: Top position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00276">276</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dc4461bfaa9b4ff0fd0364a5079a47ef"></a><!-- doxytag: member="sf::RenderWindow::SetSize" ref="dc4461bfaa9b4ff0fd0364a5079a47ef" args="(unsigned int Width, unsigned int Height)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetSize </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the size of the rendering region of the window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: New width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: New height </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00293">293</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7060ca19e685d8d5b7c6f5dd9b5906e1"></a><!-- doxytag: member="sf::RenderWindow::SetView" ref="7060ca19e685d8d5b7c6f5dd9b5906e1" args="(const View &amp;NewView)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::RenderTarget::SetView </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1View.htm">View</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>NewView</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the current active view.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>NewView</em>&nbsp;</td><td>: New view to use (pass <a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699" title="Get the default view of the window for read / write.">GetDefaultView()</a> to set the default view) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="RenderTarget_8cpp-source.htm#l00129">129</a> of file <a class="el" href="RenderTarget_8cpp-source.htm">RenderTarget.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="727c01602c86710fd935f9892946b2de"></a><!-- doxytag: member="sf::RenderWindow::Show" ref="727c01602c86710fd935f9892946b2de" args="(bool State)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Show </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>State</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Show or hide the window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>State</em>&nbsp;</td><td>: True to show, false to hide </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00303">303</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6142e38cb60901e6604284425714f3f0"></a><!-- doxytag: member="sf::RenderWindow::ShowMouseCursor" ref="6142e38cb60901e6604284425714f3f0" args="(bool Show)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::ShowMouseCursor </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Show</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Show or hide the mouse cursor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Show</em>&nbsp;</td><td>: True to show, false to hide </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00250">250</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cb8391cc93ff730288e2a8dd6b0bb7b5"></a><!-- doxytag: member="sf::RenderWindow::UseVerticalSync" ref="cb8391cc93ff730288e2a8dd6b0bb7b5" args="(bool Enabled)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::UseVerticalSync </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enabled</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable / disable vertical synchronization.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enabled</em>&nbsp;</td><td>: True to enable v-sync, false to deactivate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="RenderWindow_8hpp-source.htm">RenderWindow.hpp</a><li><a class="el" href="RenderWindow_8cpp-source.htm">RenderWindow.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1RenderWindow.png b/doc/html/classsf_1_1RenderWindow.png
deleted file mode 100755
index 4b879da..0000000
--- a/doc/html/classsf_1_1RenderWindow.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Resource-members.htm b/doc/html/classsf_1_1Resource-members.htm
deleted file mode 100755
index 5f5499a..0000000
--- a/doc/html/classsf_1_1Resource-members.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Resource&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">operator=</a>(const Resource&lt; T &gt; &amp;Other)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#59a0a5ddb77f7fe059bd32dee5f792d0">Resource</a>(const Resource&lt; T &gt; &amp;Copy)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>ResourcePtr&lt; T &gt;</b> (defined in <a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a>)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">~Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a></td><td><code> [protected]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Resource.htm b/doc/html/classsf_1_1Resource.htm
deleted file mode 100755
index 9842a4c..0000000
--- a/doc/html/classsf_1_1Resource.htm
+++ /dev/null
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Resource.htm">Resource</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Resource&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="sf::Resource" -->Base class for every resource that needs to notify dependent classes about its destruction.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Resource-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">Resource</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#a044d32edfcd9b6aebd50d03658e8130"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Resource.htm#59a0a5ddb77f7fe059bd32dee5f792d0">Resource</a> (const <a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt; T &gt; &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#59a0a5ddb77f7fe059bd32dee5f792d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">~Resource</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#0e83e83339851d7b3246939bde3fc1ac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt; T &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">operator=</a> (const <a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt; T &gt; &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#772badbe4813a5b459f588698ac7ad60"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="de3b43c17f4363c6c1867d90ce13406c"></a><!-- doxytag: member="sf::Resource::ResourcePtr&lt; T &gt;" ref="de3b43c17f4363c6c1867d90ce13406c" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>ResourcePtr&lt; T &gt;</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename T&gt;<br>
- class sf::Resource&lt; T &gt;</h3>
-
-Base class for every resource that needs to notify dependent classes about its destruction.
-<p>Definition at line <a class="el" href="Resource_8hpp-source.htm#l00050">50</a> of file <a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="a044d32edfcd9b6aebd50d03658e8130"></a><!-- doxytag: member="sf::Resource::Resource" ref="a044d32edfcd9b6aebd50d03658e8130" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Resource.htm">sf::Resource</a>&lt; T &gt;::<a class="el" href="classsf_1_1Resource.htm">Resource</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="59a0a5ddb77f7fe059bd32dee5f792d0"></a><!-- doxytag: member="sf::Resource::Resource" ref="59a0a5ddb77f7fe059bd32dee5f792d0" args="(const Resource&lt; T &gt; &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Resource.htm">sf::Resource</a>&lt; T &gt;::<a class="el" href="classsf_1_1Resource.htm">Resource</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt; T &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a> to copy </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="0e83e83339851d7b3246939bde3fc1ac"></a><!-- doxytag: member="sf::Resource::~Resource" ref="0e83e83339851d7b3246939bde3fc1ac" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Resource.htm">sf::Resource</a>&lt; T &gt;::~<a class="el" href="classsf_1_1Resource.htm">Resource</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="772badbe4813a5b459f588698ac7ad60"></a><!-- doxytag: member="sf::Resource::operator=" ref="772badbe4813a5b459f588698ac7ad60" args="(const Resource&lt; T &gt; &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt;T&gt;&amp; <a class="el" href="classsf_1_1Resource.htm">sf::Resource</a>&lt; T &gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Resource.htm">Resource</a>&lt; T &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a> to copy</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to this </dd></dl>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1ResourcePtr-members.htm b/doc/html/classsf_1_1ResourcePtr-members.htm
deleted file mode 100755
index 47e1159..0000000
--- a/doc/html/classsf_1_1ResourcePtr-members.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::ResourcePtr&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9">OnResourceDestroyed</a>()</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de">operator const T *</a>() const </td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071">operator*</a>() const </td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a">operator-&gt;</a>() const </td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574">operator=</a>(const ResourcePtr&lt; T &gt; &amp;Other)</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#23a9350a7565a26f0cc1bbadb917248d">operator=</a>(const T *Resource)</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140">ResourcePtr</a>()</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#86ce8beb23f6c4d32e79192a39207c1e">ResourcePtr</a>(const T *Resource)</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#d773b258e867b27f654673fa2147728b">ResourcePtr</a>(const ResourcePtr&lt; T &gt; &amp;Copy)</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd">~ResourcePtr</a>()</td><td><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1ResourcePtr.htm b/doc/html/classsf_1_1ResourcePtr.htm
deleted file mode 100755
index 8f84713..0000000
--- a/doc/html/classsf_1_1ResourcePtr.htm
+++ /dev/null
@@ -1,354 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::ResourcePtr&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="sf::ResourcePtr" -->Safe pointer to a T resource (inheriting from sf::Resource&lt;T&gt;), its pointer is automatically reseted when the resource is destroyed.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1ResourcePtr-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140">ResourcePtr</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#48ddcd15ed75e9ee3ea88e4d29402140"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#86ce8beb23f6c4d32e79192a39207c1e">ResourcePtr</a> (const T *<a class="el" href="classsf_1_1Resource.htm">Resource</a>)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct from a raw resource. <a href="#86ce8beb23f6c4d32e79192a39207c1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#d773b258e867b27f654673fa2147728b">ResourcePtr</a> (const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#d773b258e867b27f654673fa2147728b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd">~ResourcePtr</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#0ec69fdecccd1240030b24385f6884dd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574">operator=</a> (const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator from another <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&lt;T&gt;), its pointer...">ResourcePtr</a>. <a href="#efd17640cfe8d96934435fb8f2b40574"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#23a9350a7565a26f0cc1bbadb917248d">operator=</a> (const T *<a class="el" href="classsf_1_1Resource.htm">Resource</a>)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator from a raw resource. <a href="#23a9350a7565a26f0cc1bbadb917248d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de">operator const T *</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cast operator to implicitely convert the resource pointer to its raw pointer type. <a href="#7af0f407f121bff6e4dcf71c7c7955de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const T &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071">operator*</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator * overload to return a reference to the actual resource. <a href="#4e5401c5a07347a35cc3b9192e11b071"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const T *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a">operator-&gt;</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator -&gt; overload to return a pointer to the actual resource. <a href="#e58ea517eee0a97a778c3c59e4c3fe3a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9">OnResourceDestroyed</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function called when the observed resource is about to be destroyed. <a href="#e7e9d9ed819db0f541a7c22f5a28abf9"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename T&gt;<br>
- class sf::ResourcePtr&lt; T &gt;</h3>
-
-Safe pointer to a T resource (inheriting from sf::Resource&lt;T&gt;), its pointer is automatically reseted when the resource is destroyed.
-<p>Definition at line <a class="el" href="Resource_8hpp-source.htm#l00116">116</a> of file <a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="48ddcd15ed75e9ee3ea88e4d29402140"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="48ddcd15ed75e9ee3ea88e4d29402140" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="86ce8beb23f6c4d32e79192a39207c1e"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="86ce8beb23f6c4d32e79192a39207c1e" args="(const T *Resource)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td>
- <td>(</td>
- <td class="paramtype">const T *&nbsp;</td>
- <td class="paramname"> <em>Resource</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct from a raw resource.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a></em>&nbsp;</td><td>: Internal resource </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="d773b258e867b27f654673fa2147728b"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="d773b258e867b27f654673fa2147728b" args="(const ResourcePtr&lt; T &gt; &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: Instance to copy </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="0ec69fdecccd1240030b24385f6884dd"></a><!-- doxytag: member="sf::ResourcePtr::~ResourcePtr" ref="0ec69fdecccd1240030b24385f6884dd" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::~<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="e7e9d9ed819db0f541a7c22f5a28abf9"></a><!-- doxytag: member="sf::ResourcePtr::OnResourceDestroyed" ref="e7e9d9ed819db0f541a7c22f5a28abf9" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::OnResourceDestroyed </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Function called when the observed resource is about to be destroyed.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7af0f407f121bff6e4dcf71c7c7955de"></a><!-- doxytag: member="sf::ResourcePtr::operator const T *" ref="7af0f407f121bff6e4dcf71c7c7955de" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::operator const T * </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Cast operator to implicitely convert the resource pointer to its raw pointer type.
-<p>
-This might be dangerous in the general case, but in this context it is safe enough to define this operator<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the actual resource </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="4e5401c5a07347a35cc3b9192e11b071"></a><!-- doxytag: member="sf::ResourcePtr::operator*" ref="4e5401c5a07347a35cc3b9192e11b071" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const T&amp; <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::operator* </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator * overload to return a reference to the actual resource.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the internal resource </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="e58ea517eee0a97a778c3c59e4c3fe3a"></a><!-- doxytag: member="sf::ResourcePtr::operator&#45;&gt;" ref="e58ea517eee0a97a778c3c59e4c3fe3a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const T* <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::operator-&gt; </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator -&gt; overload to return a pointer to the actual resource.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the internal resource </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="23a9350a7565a26f0cc1bbadb917248d"></a><!-- doxytag: member="sf::ResourcePtr::operator=" ref="23a9350a7565a26f0cc1bbadb917248d" args="(const T *Resource)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt;T&gt;&amp; <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">const T *&nbsp;</td>
- <td class="paramname"> <em>Resource</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator from a raw resource.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a></em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a> to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to this </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="efd17640cfe8d96934435fb8f2b40574"></a><!-- doxytag: member="sf::ResourcePtr::operator=" ref="efd17640cfe8d96934435fb8f2b40574" args="(const ResourcePtr&lt; T &gt; &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt;T&gt;&amp; <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>&lt; T &gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>&lt; T &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator from another <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a T resource (inheriting from sf::Resource&lt;T&gt;), its pointer...">ResourcePtr</a>.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Resource.htm" title="Base class for every resource that needs to notify dependent classes about its destruction...">Resource</a> pointer to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to this </dd></dl>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Resource_8hpp-source.htm">Resource.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Selector-members.htm b/doc/html/classsf_1_1Selector-members.htm
deleted file mode 100755
index ba27211..0000000
--- a/doc/html/classsf_1_1Selector-members.htm
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Selector&lt; Type &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71">Add</a>(Type Socket)</td><td><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">sf::SelectorBase::Add</a>(SocketHelper::SocketType Socket)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4">Clear</a>()</td><td><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9">GetSocketReady</a>(unsigned int Index)</td><td><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6">Remove</a>(Type Socket)</td><td><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">sf::SelectorBase::Remove</a>(SocketHelper::SocketType Socket)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">SelectorBase</a>()</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b">Wait</a>(float Timeout=0.f)</td><td><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Selector.htm b/doc/html/classsf_1_1Selector.htm
deleted file mode 100755
index f747b01..0000000
--- a/doc/html/classsf_1_1Selector.htm
+++ /dev/null
@@ -1,245 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Selector.htm">Selector</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Selector&lt; Type &gt; Class Template Reference</h1><!-- doxytag: class="sf::Selector" --><!-- doxytag: inherits="sf::SelectorBase" --><a class="el" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a> allow reading from multiple sockets without blocking.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Selector_8hpp-source.htm">Selector.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Selector&lt; Type &gt;:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Selector.png" usemap="#sf::Selector< Type >_map" border="0" alt=""></center>
-<map name="sf::Selector< Type >_map">
-<area href="classsf_1_1SelectorBase.htm" alt="sf::SelectorBase" shape="rect" coords="0,0,127,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Selector-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71">Add</a> (Type Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a socket to watch. <a href="#3c164bc6a0e397e069cdba2a29c75d71"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6">Remove</a> (Type Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a socket. <a href="#20ea502da25dcb9610effab8a91bcbc6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4">Clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove all sockets. <a href="#92dcaf012e8effb02262717b10b1c6f4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b">Wait</a> (float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait and collect sockets which are ready for reading. <a href="#c259fdd26dd0fb2a29a73b1f08093e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Type&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9">GetSocketReady</a> (unsigned int Index)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">After a call to <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">Wait()</a>, get the Index-th socket which is ready for reading. <a href="#c9000a3e909b4db03961e220d4c6f9d9"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">Add</a> (SocketHelper::SocketType Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a socket to watch. <a href="#42b4a3dc10eec94f7c2631f624ea087f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">Remove</a> (SocketHelper::SocketType Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a socket. <a href="#319664dddf8c2170ef5b6908c39de80e"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename Type&gt;<br>
- class sf::Selector&lt; Type &gt;</h3>
-
-<a class="el" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a> allow reading from multiple sockets without blocking.
-<p>
-It's a kind of multiplexer
-<p>Definition at line <a class="el" href="Selector_8hpp-source.htm#l00044">44</a> of file <a class="el" href="Selector_8hpp-source.htm">Selector.hpp</a>.</p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="3c164bc6a0e397e069cdba2a29c75d71"></a><!-- doxytag: member="sf::Selector::Add" ref="3c164bc6a0e397e069cdba2a29c75d71" args="(Type Socket)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classsf_1_1Selector.htm">sf::Selector</a>&lt; Type &gt;::Add </td>
- <td>(</td>
- <td class="paramtype">Type&nbsp;</td>
- <td class="paramname"> <em>Socket</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add a socket to watch.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to add </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="92dcaf012e8effb02262717b10b1c6f4"></a><!-- doxytag: member="sf::Selector::Clear" ref="92dcaf012e8effb02262717b10b1c6f4" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classsf_1_1Selector.htm">sf::Selector</a>&lt; Type &gt;::Clear </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove all sockets.
-<p>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">sf::SelectorBase</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c9000a3e909b4db03961e220d4c6f9d9"></a><!-- doxytag: member="sf::Selector::GetSocketReady" ref="c9000a3e909b4db03961e220d4c6f9d9" args="(unsigned int Index)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Type <a class="el" href="classsf_1_1Selector.htm">sf::Selector</a>&lt; Type &gt;::GetSocketReady </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-After a call to <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">Wait()</a>, get the Index-th socket which is ready for reading.
-<p>
-The total number of sockets ready is the integer returned by the previous call to <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b" title="Wait and collect sockets which are ready for reading.">Wait()</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the socket to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The Index-th socket </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">sf::SelectorBase</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="20ea502da25dcb9610effab8a91bcbc6"></a><!-- doxytag: member="sf::Selector::Remove" ref="20ea502da25dcb9610effab8a91bcbc6" args="(Type Socket)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classsf_1_1Selector.htm">sf::Selector</a>&lt; Type &gt;::Remove </td>
- <td>(</td>
- <td class="paramtype">Type&nbsp;</td>
- <td class="paramname"> <em>Socket</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove a socket.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to remove </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="c259fdd26dd0fb2a29a73b1f08093e0b"></a><!-- doxytag: member="sf::Selector::Wait" ref="c259fdd26dd0fb2a29a73b1f08093e0b" args="(float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="classsf_1_1Selector.htm">sf::Selector</a>&lt; Type &gt;::Wait </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wait and collect sockets which are ready for reading.
-<p>
-This functions will return either when at least one socket is ready, or when the given time is out<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Timeout, in seconds (0 by default : no timeout)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of sockets ready to be read </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">sf::SelectorBase</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Selector_8hpp-source.htm">Selector.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Selector.png b/doc/html/classsf_1_1Selector.png
deleted file mode 100755
index 4bb21f3..0000000
--- a/doc/html/classsf_1_1Selector.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SelectorBase-members.htm b/doc/html/classsf_1_1SelectorBase-members.htm
deleted file mode 100755
index 0717cdf..0000000
--- a/doc/html/classsf_1_1SelectorBase-members.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SelectorBase Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">Add</a>(SocketHelper::SocketType Socket)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">Clear</a>()</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">GetSocketReady</a>(unsigned int Index)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">Remove</a>(SocketHelper::SocketType Socket)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">SelectorBase</a>()</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">Wait</a>(float Timeout=0.f)</td><td><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SelectorBase.htm b/doc/html/classsf_1_1SelectorBase.htm
deleted file mode 100755
index bd4a87c..0000000
--- a/doc/html/classsf_1_1SelectorBase.htm
+++ /dev/null
@@ -1,263 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SelectorBase.htm">SelectorBase</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SelectorBase Class Reference</h1><!-- doxytag: class="sf::SelectorBase" -->Private base class for selectors.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SelectorBase_8hpp-source.htm">SelectorBase.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::SelectorBase:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1SelectorBase.png" usemap="#sf::SelectorBase_map" border="0" alt=""></center>
-<map name="sf::SelectorBase_map">
-<area href="classsf_1_1Selector.htm" alt="sf::Selector< Type >" shape="rect" coords="0,56,127,80">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1SelectorBase-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">SelectorBase</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#9e09a7275fbbffc8519dc8462a7bbf8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">Add</a> (SocketHelper::SocketType Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a socket to watch. <a href="#42b4a3dc10eec94f7c2631f624ea087f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">Remove</a> (SocketHelper::SocketType Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a socket. <a href="#319664dddf8c2170ef5b6908c39de80e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">Clear</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove all sockets. <a href="#e24ec8c1ac981b8411c1c209daf788d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">Wait</a> (float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait and collect sockets which are ready for reading. <a href="#22ba5625f8b644effa55e1a1c43efa4f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">SocketHelper::SocketType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">GetSocketReady</a> (unsigned int Index)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">After a call to <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">Wait()</a>, get the Index-th socket which is ready for reading. <a href="#36e6a8d623f97a3c91701113931a0389"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Private base class for selectors.
-<p>
-As <a class="el" href="classsf_1_1Selector.htm" title="Selector allow reading from multiple sockets without blocking.">Selector</a> is a template class, this base is needed so that every system call get compiled in SFML (not inlined)
-<p>Definition at line <a class="el" href="SelectorBase_8hpp-source.htm#l00043">43</a> of file <a class="el" href="SelectorBase_8hpp-source.htm">SelectorBase.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="9e09a7275fbbffc8519dc8462a7bbf8d"></a><!-- doxytag: member="sf::SelectorBase::SelectorBase" ref="9e09a7275fbbffc8519dc8462a7bbf8d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SelectorBase::SelectorBase </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00040">40</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="42b4a3dc10eec94f7c2631f624ea087f"></a><!-- doxytag: member="sf::SelectorBase::Add" ref="42b4a3dc10eec94f7c2631f624ea087f" args="(SocketHelper::SocketType Socket)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SelectorBase::Add </td>
- <td>(</td>
- <td class="paramtype">SocketHelper::SocketType&nbsp;</td>
- <td class="paramname"> <em>Socket</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add a socket to watch.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to add </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00050">50</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e24ec8c1ac981b8411c1c209daf788d0"></a><!-- doxytag: member="sf::SelectorBase::Clear" ref="e24ec8c1ac981b8411c1c209daf788d0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SelectorBase::Clear </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove all sockets.
-<p>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4">sf::Selector&lt; Type &gt;</a>.</p>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00072">72</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="36e6a8d623f97a3c91701113931a0389"></a><!-- doxytag: member="sf::SelectorBase::GetSocketReady" ref="36e6a8d623f97a3c91701113931a0389" args="(unsigned int Index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SocketHelper::SocketType sf::SelectorBase::GetSocketReady </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-After a call to <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">Wait()</a>, get the Index-th socket which is ready for reading.
-<p>
-After a call to <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">Wait()</a>, get the Index-th socket which is ready for reading.<p>
-The total number of sockets ready is the integer returned by the previous call to <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">Wait()</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the socket to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The Index-th socket</dd></dl>
-The total number of sockets ready is the integer returned by the previous call to <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f" title="Wait and collect sockets which are ready for reading.">Wait()</a>
-<p>Reimplemented in <a class="el" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9">sf::Selector&lt; Type &gt;</a>.</p>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00108">108</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="319664dddf8c2170ef5b6908c39de80e"></a><!-- doxytag: member="sf::SelectorBase::Remove" ref="319664dddf8c2170ef5b6908c39de80e" args="(SocketHelper::SocketType Socket)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SelectorBase::Remove </td>
- <td>(</td>
- <td class="paramtype">SocketHelper::SocketType&nbsp;</td>
- <td class="paramname"> <em>Socket</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Remove a socket.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to remove </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00063">63</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="22ba5625f8b644effa55e1a1c43efa4f"></a><!-- doxytag: member="sf::SelectorBase::Wait" ref="22ba5625f8b644effa55e1a1c43efa4f" args="(float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SelectorBase::Wait </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wait and collect sockets which are ready for reading.
-<p>
-This functions will return either when at least one socket is ready, or when the given time is out<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Timeout, in seconds (0 by default : no timeout)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of sockets ready to be read</dd></dl>
-This functions will return either when at least one socket is ready, or when the given time is out
-<p>Reimplemented in <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b">sf::Selector&lt; Type &gt;</a>.</p>
-
-<p>Definition at line <a class="el" href="SelectorBase_8cpp-source.htm#l00086">86</a> of file <a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SelectorBase_8hpp-source.htm">SelectorBase.hpp</a><li><a class="el" href="SelectorBase_8cpp-source.htm">SelectorBase.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SelectorBase.png b/doc/html/classsf_1_1SelectorBase.png
deleted file mode 100755
index eda9ab7..0000000
--- a/doc/html/classsf_1_1SelectorBase.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Shape-members.htm b/doc/html/classsf_1_1Shape-members.htm
deleted file mode 100755
index f96b864..0000000
--- a/doc/html/classsf_1_1Shape-members.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Shape Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Shape.htm">sf::Shape</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92">AddPoint</a>(float X, float Y, const Color &amp;Col=Color(255, 255, 255), const Color &amp;OutlineCol=Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#212f5b1d630e820989a53dcbf46d33e4">AddPoint</a>(const Vector2f &amp;Position, const Color &amp;Col=Color(255, 255, 255), const Color &amp;OutlineCol=Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0">Circle</a>(float X, float Y, float Radius, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#b7b5082c253cf624b76de040f9c017d4">Circle</a>(const Vector2f &amp;Center, float Radius, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a>(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae">EnableFill</a>(bool Enable)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26">EnableOutline</a>(bool Enable)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350">GetNbPoints</a>() const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087">GetOutlineWidth</a>() const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92">GetPointColor</a>(unsigned int Index) const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8">GetPointOutlineColor</a>(unsigned int Index) const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436">GetPointPosition</a>(unsigned int Index) const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f">Line</a>(float P1X, float P1Y, float P2X, float P2Y, float Thickness, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#264e5374cac72a520fcf69c3bbdfe688">Line</a>(const Vector2f &amp;P1, const Vector2f &amp;P2, float Thickness, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a>(const Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498">Rectangle</a>(float P1X, float P1Y, float P2X, float P2Y, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#7273d55fb2e6ede4d901428a97579169">Rectangle</a>(const Vector2f &amp;P1, const Vector2f &amp;P2, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31">Render</a>(RenderTarget &amp;Target) const </td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a>(float Angle)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a>(float FactorX, float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a>(const Vector2f &amp;Factor)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a>(Blend::Mode Mode)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a>(float CenterX, float CenterY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a>(const Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a>(const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65">SetOutlineWidth</a>(float Width)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769">SetPointColor</a>(unsigned int Index, const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe">SetPointOutlineColor</a>(unsigned int Index, const Color &amp;OutlineCol)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e">SetPointPosition</a>(unsigned int Index, const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#e3000e995446507929c24b3abbcce18c">SetPointPosition</a>(unsigned int Index, float X, float Y)</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a>(const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a>(float Rotation)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a>(float ScaleX, float ScaleY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a>(const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a>(float FactorX)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a>(float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a>(float X)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a>(float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960">Shape</a>()</td><td><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a>()</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Shape.htm b/doc/html/classsf_1_1Shape.htm
deleted file mode 100755
index d67631f..0000000
--- a/doc/html/classsf_1_1Shape.htm
+++ /dev/null
@@ -1,2007 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Shape.htm">Shape</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Shape Class Reference</h1><!-- doxytag: class="sf::Shape" --><!-- doxytag: inherits="sf::Drawable" --><a class="el" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> defines a drawable convex shape ; it also defines helper functions to draw simple shapes like lines, rectangles, circles, etc.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Shape_8hpp-source.htm">Shape.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Shape:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Shape.png" usemap="#sf::Shape_map" border="0" alt=""></center>
-<map name="sf::Shape_map">
-<area href="classsf_1_1Drawable.htm" alt="sf::Drawable" shape="rect" coords="0,0,82,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Shape-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>Point</b></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Defines a simple 2D point. <br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960">Shape</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#413a457f720835b9f5d8e97ca8b80960"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92">AddPoint</a> (float X, float Y, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(255, 255, 255), const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a point to the shape. <a href="#b28fab6a7d2b596f15ef5c0611341c92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#212f5b1d630e820989a53dcbf46d33e4">AddPoint</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(255, 255, 255), const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a point to the shape. <a href="#212f5b1d630e820989a53dcbf46d33e4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350">GetNbPoints</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of points composing the shape. <a href="#8bafa82b4f42937d897c5c5aecd22350"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae">EnableFill</a> (bool Enable)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable filling the shape. <a href="#6370770e5f1d1c1b1abfeef80d6296ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26">EnableOutline</a> (bool Enable)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable drawing the shape outline. <a href="#f65abf11c7faa1a78c6d203e68a35a26"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e">SetPointPosition</a> (unsigned int Index, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of a point. <a href="#f3eaee50b3af95d9884b41fc3996567e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#e3000e995446507929c24b3abbcce18c">SetPointPosition</a> (unsigned int Index, float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of a point. <a href="#e3000e995446507929c24b3abbcce18c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769">SetPointColor</a> (unsigned int Index, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of a point. <a href="#d55eab90a2fb9fd0bcc1dd695b0bc769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe">SetPointOutlineColor</a> (unsigned int Index, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the outline color of a point. <a href="#d28205b9e4784ae0adcc2209669572fe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65">SetOutlineWidth</a> (float Width)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the width of the shape outline. <a href="#77ce4ef6cf1944768b2bc88c98a98b65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436">GetPointPosition</a> (unsigned int Index) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of a point. <a href="#2b3cf65f5453a84466f749b97e611436"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92">GetPointColor</a> (unsigned int Index) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of a point. <a href="#f22db94719a2e359cb02dd4108e6ea92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8">GetPointOutlineColor</a> (unsigned int Index) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the outline color of a point. <a href="#f9a40ea9b28f96f183533991e6f811b8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087">GetOutlineWidth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width of the shape outline. <a href="#ed31da968d6d4bc8f6a3b4bf808c1087"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take 2 values). <a href="#419da954b1f2ad1ac2ae0b9ab6e72589"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take a 2D vector). <a href="#d2a279f3b13abf57cc25b2b4bd3b81ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a> (float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X position of the object. <a href="#c8de7bfe092736083dcf23b0dbd22b1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a> (float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y position of the object. <a href="#83fecebe749c1aca9070eafd63e1a0c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a> (float ScaleX, float ScaleY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take 2 values). <a href="#0b486c56c2bd137bac629f72fea66769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take a 2D vector). <a href="#84876c5ef7fa628c85c3c9e000e50aa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a> (float FactorX)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X scale factor of the object. <a href="#0cafae61a1d23bddb059d64df0e1502f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a> (float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y scale factor of the object. <a href="#89e7793c74c656e5850b71d0ab34b8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a> (float CenterX, float CenterY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take 2 values). <a href="#11ba1d92bc863af6d95831d216802f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector). <a href="#235e438555d8161f4995615f24fa0b11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a> (float Rotation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of the object. <a href="#6d06383770eb01ffecf3d1cae6fec0ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of the object. <a href="#8cae9f22220985e368a1b38af7644ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a> (<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the blending mode for the object. <a href="#aa6558b1ae27e29cb825028473707da5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of the object. <a href="#9ad52594fd5e835cbd03b79098d70e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current scale of the object. <a href="#fa4d6b97e7c10a82430ff9ee56009c97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the object. <a href="#de634efe8d6264282acc564fa5ea77c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the orientation of the object. <a href="#4e82bec096673bccf7ceac5207617017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of the object. <a href="#a2a028c4a975b5ed6d5a560a1c44e0c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current blending mode. <a href="#b6446c4717a2800cad85db55cb55409a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take 2 values). <a href="#501df9af956362b3e3769d80381c051b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take a 2D vector). <a href="#3c0ac0851d6b0ebed80ae9641ff93161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a> (float FactorX, float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take 2 values). <a href="#2a132c9f2f3736b7d0f6ea80303caacd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take a 2D vector). <a href="#c969d85eaf63f072de9e963bd973e91a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a> (float Angle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the object. <a href="#3e7d558d0ef488485a2d3f885ff2b419"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point). <a href="#809f25ae0b3a2015ec8a44fe9f5a0008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point). <a href="#fe3cb6e62921ce13806c27dc727f8945"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f">Line</a> (float P1X, float P1Y, float P2X, float P2Y, float Thickness, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single line (use floats). <a href="#90fe51b17c8029ed528d8590595a3f1f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#264e5374cac72a520fcf69c3bbdfe688">Line</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;P1, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;P2, float Thickness, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single line (use vectors). <a href="#264e5374cac72a520fcf69c3bbdfe688"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498">Rectangle</a> (float P1X, float P1Y, float P2X, float P2Y, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single rectangle (use floats). <a href="#aec9c0468a77871f6410aea757105498"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#7273d55fb2e6ede4d901428a97579169">Rectangle</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;P1, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;P2, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single rectangle (use vectors). <a href="#7273d55fb2e6ede4d901428a97579169"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0">Circle</a> (float X, float Y, float Radius, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single circle (use floats). <a href="#10ccaef12679a28cf4d3003fceffc2f0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1Shape.htm">Shape</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#b7b5082c253cf624b76de040f9c017d4">Circle</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center, float Radius, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col, float Outline=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;OutlineCol=<a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a shape made of a single circle (use vectors). <a href="#b7b5082c253cf624b76de040f9c017d4"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31">Render</a> (<a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;Target) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">/see Drawable::Render <a href="#b32d683b125efd3bd7ccf878b1f50a31"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transform matrix of the drawable. <a href="#c659a89e42063d13aa9ebe2b534d404e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse transform matrix of the drawable. <a href="#48238d5726104ba7ddb42f21fc5d5b2f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Shape.htm" title="Shape defines a drawable convex shape ; it also defines helper functions to draw...">Shape</a> defines a drawable convex shape ; it also defines helper functions to draw simple shapes like lines, rectangles, circles, etc.
-<p>Definition at line <a class="el" href="Shape_8hpp-source.htm#l00043">43</a> of file <a class="el" href="Shape_8hpp-source.htm">Shape.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="413a457f720835b9f5d8e97ca8b80960"></a><!-- doxytag: member="sf::Shape::Shape" ref="413a457f720835b9f5d8e97ca8b80960" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Shape::Shape </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00038">38</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="212f5b1d630e820989a53dcbf46d33e4"></a><!-- doxytag: member="sf::Shape::AddPoint" ref="212f5b1d630e820989a53dcbf46d33e4" args="(const Vector2f &amp;Position, const Color &amp;Col=Color(255, 255, 255), const Color &amp;OutlineCol=Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::AddPoint </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(255,&nbsp;255,&nbsp;255)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add a point to the shape.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position of the point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of the point (white by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: Outline color of the point (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00061">61</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b28fab6a7d2b596f15ef5c0611341c92"></a><!-- doxytag: member="sf::Shape::AddPoint" ref="b28fab6a7d2b596f15ef5c0611341c92" args="(float X, float Y, const Color &amp;Col=Color(255, 255, 255), const Color &amp;OutlineCol=Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::AddPoint </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(255,&nbsp;255,&nbsp;255)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add a point to the shape.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X,Y</em>&nbsp;</td><td>: Position of the point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of the point (white by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: Outline color of the point (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00052">52</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b7b5082c253cf624b76de040f9c017d4"></a><!-- doxytag: member="sf::Shape::Circle" ref="b7b5082c253cf624b76de040f9c017d4" args="(const Vector2f &amp;Center, float Radius, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Circle </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Radius</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single circle (use vectors).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: Position of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Radius</em>&nbsp;</td><td>: Radius </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to fill the circle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00276">276</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="10ccaef12679a28cf4d3003fceffc2f0"></a><!-- doxytag: member="sf::Shape::Circle" ref="10ccaef12679a28cf4d3003fceffc2f0" args="(float X, float Y, float Radius, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Circle </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Radius</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single circle (use floats).
-<p>
-Create a shape made of a single circle.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X,Y</em>&nbsp;</td><td>: Position of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Radius</em>&nbsp;</td><td>: Radius </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to fill the circle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00250">250</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6370770e5f1d1c1b1abfeef80d6296ae"></a><!-- doxytag: member="sf::Shape::EnableFill" ref="6370770e5f1d1c1b1abfeef80d6296ae" args="(bool Enable)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::EnableFill </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enable</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable or disable filling the shape.
-<p>
-Fill is enabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enable</em>&nbsp;</td><td>: True to enable, false to disable</td></tr>
- </table>
-</dl>
-Fill is enabled by default
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00081">81</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f65abf11c7faa1a78c6d203e68a35a26"></a><!-- doxytag: member="sf::Shape::EnableOutline" ref="f65abf11c7faa1a78c6d203e68a35a26" args="(bool Enable)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::EnableOutline </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enable</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable or disable drawing the shape outline.
-<p>
-Outline is enabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enable</em>&nbsp;</td><td>: True to enable, false to disable</td></tr>
- </table>
-</dl>
-Outline is enabled by default
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00091">91</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b6446c4717a2800cad85db55cb55409a"></a><!-- doxytag: member="sf::Shape::GetBlendMode" ref="b6446c4717a2800cad85db55cb55409a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> sf::Drawable::GetBlendMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current blending mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current blending mode </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="de634efe8d6264282acc564fa5ea77c0"></a><!-- doxytag: member="sf::Shape::GetCenter" ref="de634efe8d6264282acc564fa5ea77c0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position of the center </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a2a028c4a975b5ed6d5a560a1c44e0c8"></a><!-- doxytag: member="sf::Shape::GetColor" ref="a2a028c4a975b5ed6d5a560a1c44e0c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Drawable::GetColor </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current color </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="48238d5726104ba7ddb42f21fc5d5b2f"></a><!-- doxytag: member="sf::Shape::GetInverseMatrix" ref="48238d5726104ba7ddb42f21fc5d5b2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetInverseMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the inverse transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Inverse transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00350">350</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c659a89e42063d13aa9ebe2b534d404e"></a><!-- doxytag: member="sf::Shape::GetMatrix" ref="c659a89e42063d13aa9ebe2b534d404e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00334">334</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8bafa82b4f42937d897c5c5aecd22350"></a><!-- doxytag: member="sf::Shape::GetNbPoints" ref="8bafa82b4f42937d897c5c5aecd22350" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Shape::GetNbPoints </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of points composing the shape.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Total</em>&nbsp;</td><td>number of points </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00071">71</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ed31da968d6d4bc8f6a3b4bf808c1087"></a><!-- doxytag: member="sf::Shape::GetOutlineWidth" ref="ed31da968d6d4bc8f6a3b4bf808c1087" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Shape::GetOutlineWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the width of the shape outline.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current outline width </dd></dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00175">175</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f22db94719a2e359cb02dd4108e6ea92"></a><!-- doxytag: member="sf::Shape::GetPointColor" ref="f22db94719a2e359cb02dd4108e6ea92" args="(unsigned int Index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Shape::GetPointColor </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1]</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of the Index-th point </dd></dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f9a40ea9b28f96f183533991e6f811b8"></a><!-- doxytag: member="sf::Shape::GetPointOutlineColor" ref="f9a40ea9b28f96f183533991e6f811b8" args="(unsigned int Index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Shape::GetPointOutlineColor </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the outline color of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1]</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Outline color of the Index-th point </dd></dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00166">166</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2b3cf65f5453a84466f749b97e611436"></a><!-- doxytag: member="sf::Shape::GetPointPosition" ref="2b3cf65f5453a84466f749b97e611436" args="(unsigned int Index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Shape::GetPointPosition </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1]</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Position of the Index-th point </dd></dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00148">148</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9ad52594fd5e835cbd03b79098d70e0b"></a><!-- doxytag: member="sf::Shape::GetPosition" ref="9ad52594fd5e835cbd03b79098d70e0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00213">213</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e82bec096673bccf7ceac5207617017"></a><!-- doxytag: member="sf::Shape::GetRotation" ref="4e82bec096673bccf7ceac5207617017" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Drawable::GetRotation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the orientation of the object.
-<p>
-Rotation is always in the range [0, 360]<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current rotation, in degrees </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fa4d6b97e7c10a82430ff9ee56009c97"></a><!-- doxytag: member="sf::Shape::GetScale" ref="fa4d6b97e7c10a82430ff9ee56009c97" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetScale </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current scale of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current scale factor (always positive) </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="264e5374cac72a520fcf69c3bbdfe688"></a><!-- doxytag: member="sf::Shape::Line" ref="264e5374cac72a520fcf69c3bbdfe688" args="(const Vector2f &amp;P1, const Vector2f &amp;P2, float Thickness, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Line </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>P1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>P2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Thickness</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single line (use vectors).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>P1X,P1Y</em>&nbsp;</td><td>: Position of the first point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>P2X,P2Y</em>&nbsp;</td><td>: Position second point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Thickness</em>&nbsp;</td><td>: Line thickness </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the line </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00212">212</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="90fe51b17c8029ed528d8590595a3f1f"></a><!-- doxytag: member="sf::Shape::Line" ref="90fe51b17c8029ed528d8590595a3f1f" args="(float P1X, float P1Y, float P2X, float P2Y, float Thickness, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Line </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P1X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P1Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P2X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P2Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Thickness</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single line (use floats).
-<p>
-Create a shape made of a single line.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>P1X,P1Y</em>&nbsp;</td><td>: Position of the first point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>P2X,P2Y</em>&nbsp;</td><td>: Position second point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Thickness</em>&nbsp;</td><td>: Line thickness </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the line </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00184">184</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3c0ac0851d6b0ebed80ae9641ff93161"></a><!-- doxytag: member="sf::Shape::Move" ref="3c0ac0851d6b0ebed80ae9641ff93161" args="(const Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Amount of units to move the object of </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00278">278</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="501df9af956362b3e3769d80381c051b"></a><!-- doxytag: member="sf::Shape::Move" ref="501df9af956362b3e3769d80381c051b" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: X offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Y offset</td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00268">268</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7273d55fb2e6ede4d901428a97579169"></a><!-- doxytag: member="sf::Shape::Rectangle" ref="7273d55fb2e6ede4d901428a97579169" args="(const Vector2f &amp;P1, const Vector2f &amp;P2, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Rectangle </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>P1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>P2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single rectangle (use vectors).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>P1</em>&nbsp;</td><td>: Position of the first point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>P2</em>&nbsp;</td><td>: Position second point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to fill the rectangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00241">241</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aec9c0468a77871f6410aea757105498"></a><!-- doxytag: member="sf::Shape::Rectangle" ref="aec9c0468a77871f6410aea757105498" args="(float P1X, float P1Y, float P2X, float P2Y, const Color &amp;Col, float Outline=0.f, const Color &amp;OutlineCol=sf::Color(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Shape.htm">Shape</a> sf::Shape::Rectangle </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P1X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P1Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P2X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>P2Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Outline</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em> = <code><a class="el" href="classsf_1_1Color.htm">sf::Color</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a shape made of a single rectangle (use floats).
-<p>
-Create a shape made of a single rectangle.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>P1X,P1Y</em>&nbsp;</td><td>: Position of the first point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>P2X,P2Y</em>&nbsp;</td><td>: Position second point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to fill the rectangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Outline</em>&nbsp;</td><td>: Outline width (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> used to draw the outline (black by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00221">221</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b32d683b125efd3bd7ccf878b1f50a31"></a><!-- doxytag: member="sf::Shape::Render" ref="b32d683b125efd3bd7ccf878b1f50a31" args="(RenderTarget &amp;Target) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::Render </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Target</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-/see Drawable::Render
-<p>
-
-<p>Implements <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>.</p>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00285">285</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3e7d558d0ef488485a2d3f885ff2b419"></a><!-- doxytag: member="sf::Shape::Rotate" ref="3e7d558d0ef488485a2d3f885ff2b419" args="(float Angle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Rotate </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Angle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rotate the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Angle</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00306">306</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c969d85eaf63f072de9e963bd973e91a"></a><!-- doxytag: member="sf::Shape::Scale" ref="c969d85eaf63f072de9e963bd973e91a" args="(const Vector2f &amp;Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Scaling factors (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00297">297</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a132c9f2f3736b7d0f6ea80303caacd"></a><!-- doxytag: member="sf::Shape::Scale" ref="2a132c9f2f3736b7d0f6ea80303caacd" args="(float FactorX, float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FactorX</em>&nbsp;</td><td>: Scaling factor on X (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>FactorY</em>&nbsp;</td><td>: Scaling factor on Y (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00287">287</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa6558b1ae27e29cb825028473707da5"></a><!-- doxytag: member="sf::Shape::SetBlendMode" ref="aa6558b1ae27e29cb825028473707da5" args="(Blend::Mode Mode)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetBlendMode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the blending mode for the object.
-<p>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: New blending mode</td></tr>
- </table>
-</dl>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a>
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00204">204</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="235e438555d8161f4995615f24fa0b11"></a><!-- doxytag: member="sf::Shape::SetCenter" ref="235e438555d8161f4995615f24fa0b11" args="(const Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00171">171</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11ba1d92bc863af6d95831d216802f61"></a><!-- doxytag: member="sf::Shape::SetCenter" ref="11ba1d92bc863af6d95831d216802f61" args="(float CenterX, float CenterY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CenterX</em>&nbsp;</td><td>: X coordinate of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CenterY</em>&nbsp;</td><td>: Y coordinate of the center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cae9f22220985e368a1b38af7644ffb"></a><!-- doxytag: member="sf::Shape::SetColor" ref="8cae9f22220985e368a1b38af7644ffb" args="(const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetColor </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of the object.
-<p>
-The default color is white<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color</td></tr>
- </table>
-</dl>
-The default color is white
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00194">194</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="77ce4ef6cf1944768b2bc88c98a98b65"></a><!-- doxytag: member="sf::Shape::SetOutlineWidth" ref="77ce4ef6cf1944768b2bc88c98a98b65" args="(float Width)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::SetOutlineWidth </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Width</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the width of the shape outline.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: New width </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00139">139</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d55eab90a2fb9fd0bcc1dd695b0bc769"></a><!-- doxytag: member="sf::Shape::SetPointColor" ref="d55eab90a2fb9fd0bcc1dd695b0bc769" args="(unsigned int Index, const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::SetPointColor </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color of the Index-th point </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00119">119</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d28205b9e4784ae0adcc2209669572fe"></a><!-- doxytag: member="sf::Shape::SetPointOutlineColor" ref="d28205b9e4784ae0adcc2209669572fe" args="(unsigned int Index, const Color &amp;OutlineCol)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::SetPointOutlineColor </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>OutlineCol</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the outline color of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OutlineCol</em>&nbsp;</td><td>: New outline color of the Index-th point </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00129">129</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e3000e995446507929c24b3abbcce18c"></a><!-- doxytag: member="sf::Shape::SetPointPosition" ref="e3000e995446507929c24b3abbcce18c" args="(unsigned int Index, float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::SetPointPosition </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate of the Index-th point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate of the Index-th point </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00110">110</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f3eaee50b3af95d9884b41fc3996567e"></a><!-- doxytag: member="sf::Shape::SetPointPosition" ref="f3eaee50b3af95d9884b41fc3996567e" args="(unsigned int Index, const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Shape::SetPointPosition </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of a point.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the point, in range [0, <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350" title="Get the number of points composing the shape.">GetNbPoints()</a> - 1] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position of the Index-th point </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Shape_8cpp-source.htm#l00100">100</a> of file <a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d2a279f3b13abf57cc25b2b4bd3b81ae"></a><!-- doxytag: member="sf::Shape::SetPosition" ref="d2a279f3b13abf57cc25b2b4bd3b81ae" args="(const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00075">75</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="419da954b1f2ad1ac2ae0b9ab6e72589"></a><!-- doxytag: member="sf::Shape::SetPosition" ref="419da954b1f2ad1ac2ae0b9ab6e72589" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d06383770eb01ffecf3d1cae6fec0ec"></a><!-- doxytag: member="sf::Shape::SetRotation" ref="6d06383770eb01ffecf3d1cae6fec0ec" args="(float Rotation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetRotation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the orientation of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="84876c5ef7fa628c85c3c9e000e50aa1"></a><!-- doxytag: member="sf::Shape::SetScale" ref="84876c5ef7fa628c85c3c9e000e50aa1" args="(const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: New scale (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00117">117</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b486c56c2bd137bac629f72fea66769"></a><!-- doxytag: member="sf::Shape::SetScale" ref="0b486c56c2bd137bac629f72fea66769" args="(float ScaleX, float ScaleY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ScaleX</em>&nbsp;</td><td>: New horizontal scale (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ScaleY</em>&nbsp;</td><td>: New vertical scale (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00107">107</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cafae61a1d23bddb059d64df0e1502f"></a><!-- doxytag: member="sf::Shape::SetScaleX" ref="0cafae61a1d23bddb059d64df0e1502f" args="(float FactorX)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00127">127</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="89e7793c74c656e5850b71d0ab34b8bf"></a><!-- doxytag: member="sf::Shape::SetScaleY" ref="89e7793c74c656e5850b71d0ab34b8bf" args="(float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00141">141</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8de7bfe092736083dcf23b0dbd22b1e"></a><!-- doxytag: member="sf::Shape::SetX" ref="c8de7bfe092736083dcf23b0dbd22b1e" args="(float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="83fecebe749c1aca9070eafd63e1a0c9"></a><!-- doxytag: member="sf::Shape::SetY" ref="83fecebe749c1aca9070eafd63e1a0c9" args="(float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe3cb6e62921ce13806c27dc727f8945"></a><!-- doxytag: member="sf::Shape::TransformToGlobal" ref="fe3cb6e62921ce13806c27dc727f8945" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToGlobal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00325">325</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="809f25ae0b3a2015ec8a44fe9f5a0008"></a><!-- doxytag: member="sf::Shape::TransformToLocal" ref="809f25ae0b3a2015ec8a44fe9f5a0008" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToLocal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00316">316</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Shape_8hpp-source.htm">Shape.hpp</a><li><a class="el" href="Shape_8cpp-source.htm">Shape.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Shape.png b/doc/html/classsf_1_1Shape.png
deleted file mode 100755
index 7ec85c7..0000000
--- a/doc/html/classsf_1_1Shape.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SocketHelper-members.htm b/doc/html/classsf_1_1SocketHelper-members.htm
deleted file mode 100755
index 8b3bed7..0000000
--- a/doc/html/classsf_1_1SocketHelper-members.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketHelper Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232">Close</a>(SocketType Socket)</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83">GetErrorStatus</a>()</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458">InvalidSocket</a>()</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>LengthType</b> typedef (defined in <a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a>)</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8">SetBlocking</a>(SocketType Socket, bool Block)</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>SocketType</b> typedef (defined in <a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a>)</td><td><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SocketHelper.htm b/doc/html/classsf_1_1SocketHelper.htm
deleted file mode 100755
index 03650ed..0000000
--- a/doc/html/classsf_1_1SocketHelper.htm
+++ /dev/null
@@ -1,198 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SocketHelper.htm">SocketHelper</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketHelper Class Reference</h1><!-- doxytag: class="sf::SocketHelper" -->This class defines helper functions to do all the non-portable socket stuff.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Win32_2SocketHelper_8hpp-source.htm">SocketHelper.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1SocketHelper-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="097d978a4a15af5f17089099edc23afa"></a><!-- doxytag: member="sf::SocketHelper::SocketType" ref="097d978a4a15af5f17089099edc23afa" args="" -->
-typedef SOCKET&nbsp;</td><td class="memItemRight" valign="bottom"><b>SocketType</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a18a7737423675d9dc270a0bc7e159de"></a><!-- doxytag: member="sf::SocketHelper::LengthType" ref="a18a7737423675d9dc270a0bc7e159de" args="" -->
-typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><b>LengthType</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static SocketType&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458">InvalidSocket</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the value of the invalid socket. <a href="#99e426a217cc8847264f837632b4e458"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232">Close</a> (SocketType Socket)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close / destroy a socket. <a href="#ec266cafe3270d1f2e210909b9b6d232"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8">SetBlocking</a> (SocketType Socket, bool Block)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a socket as blocking or non-blocking. <a href="#4815bb2bb615b3a4fd9ad597813697b8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83">GetErrorStatus</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the last socket error status. <a href="#7e634801c53a5a1b2ee16757e2d96a83"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class defines helper functions to do all the non-portable socket stuff.
-<p>
-This class is meant for internal use only
-<p>Definition at line <a class="el" href="Win32_2SocketHelper_8hpp-source.htm#l00041">41</a> of file <a class="el" href="Win32_2SocketHelper_8hpp-source.htm">Win32/SocketHelper.hpp</a>.</p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="ec266cafe3270d1f2e210909b9b6d232"></a><!-- doxytag: member="sf::SocketHelper::Close" ref="ec266cafe3270d1f2e210909b9b6d232" args="(SocketType Socket)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketHelper::Close </td>
- <td>(</td>
- <td class="paramtype">SocketHelper::SocketType&nbsp;</td>
- <td class="paramname"> <em>Socket</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close / destroy a socket.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to close</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True on success </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketHelper_8cpp-source.htm#l00045">45</a> of file <a class="el" href="SocketHelper_8cpp-source.htm">SocketHelper.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7e634801c53a5a1b2ee16757e2d96a83"></a><!-- doxytag: member="sf::SocketHelper::GetErrorStatus" ref="7e634801c53a5a1b2ee16757e2d96a83" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketHelper::GetErrorStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the last socket error status.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status corresponding to the last socket error </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketHelper_8cpp-source.htm#l00064">64</a> of file <a class="el" href="SocketHelper_8cpp-source.htm">SocketHelper.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="99e426a217cc8847264f837632b4e458"></a><!-- doxytag: member="sf::SocketHelper::InvalidSocket" ref="99e426a217cc8847264f837632b4e458" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SocketHelper::SocketType sf::SocketHelper::InvalidSocket </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the value of the invalid socket.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Unique value of the invalid socket </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketHelper_8cpp-source.htm#l00036">36</a> of file <a class="el" href="SocketHelper_8cpp-source.htm">SocketHelper.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4815bb2bb615b3a4fd9ad597813697b8"></a><!-- doxytag: member="sf::SocketHelper::SetBlocking" ref="4815bb2bb615b3a4fd9ad597813697b8" args="(SocketType Socket, bool Block)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SocketHelper::SetBlocking </td>
- <td>(</td>
- <td class="paramtype">SocketHelper::SocketType&nbsp;</td>
- <td class="paramname"> <em>Socket</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Block</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a socket as blocking or non-blocking.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Socket</em>&nbsp;</td><td>: Socket to modify </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Block</em>&nbsp;</td><td>: New blocking state of the socket </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SocketHelper_8cpp-source.htm#l00054">54</a> of file <a class="el" href="SocketHelper_8cpp-source.htm">SocketHelper.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Win32_2SocketHelper_8hpp-source.htm">Win32/SocketHelper.hpp</a><li><a class="el" href="SocketHelper_8cpp-source.htm">SocketHelper.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SocketTCP-members.htm b/doc/html/classsf_1_1SocketTCP-members.htm
deleted file mode 100755
index 7bfae7d..0000000
--- a/doc/html/classsf_1_1SocketTCP-members.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketTCP Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107">Accept</a>(SocketTCP &amp;Connected, IPAddress *Address=NULL)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044">Close</a>()</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f">Connect</a>(unsigned short Port, const IPAddress &amp;HostAddress, float Timeout=0.f)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124">IsValid</a>() const </td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39">Listen</a>(unsigned short Port)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e">operator!=</a>(const SocketTCP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce">operator&lt;</a>(const SocketTCP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1">operator==</a>(const SocketTCP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0">Receive</a>(char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#4389aa92523e0a6b3f2d6517cbde74fa">Receive</a>(Packet &amp;PacketToReceive)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Selector&lt; SocketTCP &gt;</b> (defined in <a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a>)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21">Send</a>(const char *Data, std::size_t Size)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#a1825883276970b3d2f9b1d61763e5c7">Send</a>(Packet &amp;PacketToSend)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9">SetBlocking</a>(bool Blocking)</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa">SocketTCP</a>()</td><td><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SocketTCP.htm b/doc/html/classsf_1_1SocketTCP.htm
deleted file mode 100755
index 8b0c248..0000000
--- a/doc/html/classsf_1_1SocketTCP.htm
+++ /dev/null
@@ -1,567 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketTCP Class Reference</h1><!-- doxytag: class="sf::SocketTCP" --><a class="el" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a> wraps a socket using TCP protocol to send data safely (but a bit slower).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SocketTCP_8hpp-source.htm">SocketTCP.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1SocketTCP-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa">SocketTCP</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#098157a901a6f355b499085a3fb97afa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9">SetBlocking</a> (bool Blocking)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the blocking state of the socket. <a href="#a80f7711b15fe33a5c7005acedae43c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f">Connect</a> (unsigned short Port, const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;HostAddress, float Timeout=0.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to another computer on a specified port. <a href="#dd590d0119fa8edbe8da1574b6c8f07f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39">Listen</a> (unsigned short Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Listen to a specified port for incoming data or connections. <a href="#3153062e1fb2a7afe9e0ed80f9204b39"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107">Accept</a> (<a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;Connected, <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> *Address=NULL)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait for a connection (must be listening to a port). <a href="#70beb8cda69c4e9212fd5987f0d04107"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21">Send</a> (const char *Data, std::size_t Size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array of bytes to the host (must be connected first). <a href="#4debed568966f75e3e63a70f08e67c21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0">Receive</a> (char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive an array of bytes from the host (must be connected first). <a href="#47027b00ab5589017a5c235f2deb3ab0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#a1825883276970b3d2f9b1d61763e5c7">Send</a> (<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;PacketToSend)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a packet of data to the host (must be connected first). <a href="#a1825883276970b3d2f9b1d61763e5c7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#4389aa92523e0a6b3f2d6517cbde74fa">Receive</a> (<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;PacketToReceive)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive a packet from the host (must be connected first). <a href="#4389aa92523e0a6b3f2d6517cbde74fa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044">Close</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the socket. <a href="#70a5111cbddd1edbfa6cbd6017c6d044"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124">IsValid</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK. <a href="#098d613057a72d9e5cfa76a77b5f7124"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1">operator==</a> (const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator ==. <a href="#ae32dcf5042a50544848140ec1f94ed1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e">operator!=</a> (const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator !=. <a href="#4d4dd9e422c485b8a8b390d1f210e84e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce">operator&lt;</a> (const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &lt;. <a href="#dbcfa2c662f98a92beb509d3e5ebb1ce"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9820f8c2c218ce480ae8c891f29df668"></a><!-- doxytag: member="sf::SocketTCP::Selector&lt; SocketTCP &gt;" ref="9820f8c2c218ce480ae8c891f29df668" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Selector&lt; SocketTCP &gt;</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1SocketTCP.htm" title="SocketTCP wraps a socket using TCP protocol to send data safely (but a bit slower)...">SocketTCP</a> wraps a socket using TCP protocol to send data safely (but a bit slower).
-<p>Definition at line <a class="el" href="SocketTCP_8hpp-source.htm#l00045">45</a> of file <a class="el" href="SocketTCP_8hpp-source.htm">SocketTCP.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="098157a901a6f355b499085a3fb97afa"></a><!-- doxytag: member="sf::SocketTCP::SocketTCP" ref="098157a901a6f355b499085a3fb97afa" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SocketTCP::SocketTCP </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00047">47</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="70beb8cda69c4e9212fd5987f0d04107"></a><!-- doxytag: member="sf::SocketTCP::Accept" ref="70beb8cda69c4e9212fd5987f0d04107" args="(SocketTCP &amp;Connected, IPAddress *Address=NULL)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Accept </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Connected</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> *&nbsp;</td>
- <td class="paramname"> <em>Address</em> = <code>NULL</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wait for a connection (must be listening to a port).
-<p>
-This function will block if the socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Connected</em>&nbsp;</td><td>: Socket containing the connection with the connected client </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: Pointer to an address to fill with client infos (NULL by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code</dd></dl>
-This function will block if the socket is blocking
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00206">206</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="70a5111cbddd1edbfa6cbd6017c6d044"></a><!-- doxytag: member="sf::SocketTCP::Close" ref="70a5111cbddd1edbfa6cbd6017c6d044" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::Close </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close the socket.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00406">406</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dd590d0119fa8edbe8da1574b6c8f07f"></a><!-- doxytag: member="sf::SocketTCP::Connect" ref="dd590d0119fa8edbe8da1574b6c8f07f" args="(unsigned short Port, const IPAddress &amp;HostAddress, float Timeout=0.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Connect </td>
- <td>(</td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>HostAddress</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Timeout</em> = <code>0.f</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Connect to another computer on a specified port.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to use for transfers (warning : ports &lt; 1024 are reserved) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HostAddress</em>&nbsp;</td><td>: IP Address of the host to connect to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Timeout</em>&nbsp;</td><td>: Maximum time to wait, in seconds (0 by default : no timeout) (this parameter is ignored for non-blocking sockets)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00070">70</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="098d613057a72d9e5cfa76a77b5f7124"></a><!-- doxytag: member="sf::SocketTCP::IsValid" ref="098d613057a72d9e5cfa76a77b5f7124" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::IsValid </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK.
-<p>
-Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the socket is valid </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00429">429</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3153062e1fb2a7afe9e0ed80f9204b39"></a><!-- doxytag: member="sf::SocketTCP::Listen" ref="3153062e1fb2a7afe9e0ed80f9204b39" args="(unsigned short Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::Listen </td>
- <td>(</td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Listen to a specified port for incoming data or connections.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to listen to</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00169">169</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4d4dd9e422c485b8a8b390d1f210e84e"></a><!-- doxytag: member="sf::SocketTCP::operator!=" ref="4d4dd9e422c485b8a8b390d1f210e84e" args="(const SocketTCP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator !=.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this != Other </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00447">447</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dbcfa2c662f98a92beb509d3e5ebb1ce"></a><!-- doxytag: member="sf::SocketTCP::operator&lt;" ref="dbcfa2c662f98a92beb509d3e5ebb1ce" args="(const SocketTCP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &lt;.
-<p>
-Provided for compatibility with standard containers, as comparing two sockets doesn't make much sense...<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &lt; Other</dd></dl>
-Provided for compatibility with standard containers, as comparing two sockets doesn't make much sense...
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00458">458</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ae32dcf5042a50544848140ec1f94ed1"></a><!-- doxytag: member="sf::SocketTCP::operator==" ref="ae32dcf5042a50544848140ec1f94ed1" args="(const SocketTCP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketTCP::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketTCP.htm">SocketTCP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator ==.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this == Other </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00438">438</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4389aa92523e0a6b3f2d6517cbde74fa"></a><!-- doxytag: member="sf::SocketTCP::Receive" ref="4389aa92523e0a6b3f2d6517cbde74fa" args="(Packet &amp;PacketToReceive)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Receive </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>PacketToReceive</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Receive a packet from the host (must be connected first).
-<p>
-This function will block if the socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>PacketToReceive</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> to fill with received data</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code</dd></dl>
-This function will block if the socket is blocking
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00340">340</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="47027b00ab5589017a5c235f2deb3ab0"></a><!-- doxytag: member="sf::SocketTCP::Receive" ref="47027b00ab5589017a5c235f2deb3ab0" args="(char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Receive </td>
- <td>(</td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>MaxSize</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t &amp;&nbsp;</td>
- <td class="paramname"> <em>SizeReceived</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Receive an array of bytes from the host (must be connected first).
-<p>
-This function will block if the socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to a byte array to fill (make sure it is big enough) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxSize</em>&nbsp;</td><td>: Maximum number of bytes to read </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeReceived</em>&nbsp;</td><td>: Number of bytes received</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code</dd></dl>
-This function will block if the socket is blocking
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00272">272</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a1825883276970b3d2f9b1d61763e5c7"></a><!-- doxytag: member="sf::SocketTCP::Send" ref="a1825883276970b3d2f9b1d61763e5c7" args="(Packet &amp;PacketToSend)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Send </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>PacketToSend</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send a packet of data to the host (must be connected first).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>PacketToSend</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> to send</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00314">314</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4debed568966f75e3e63a70f08e67c21"></a><!-- doxytag: member="sf::SocketTCP::Send" ref="4debed568966f75e3e63a70f08e67c21" args="(const char *Data, std::size_t Size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketTCP::Send </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>Size</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send an array of bytes to the host (must be connected first).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the bytes to send </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: Number of bytes to send</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00235">235</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a80f7711b15fe33a5c7005acedae43c9"></a><!-- doxytag: member="sf::SocketTCP::SetBlocking" ref="a80f7711b15fe33a5c7005acedae43c9" args="(bool Blocking)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SocketTCP::SetBlocking </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Blocking</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the blocking state of the socket.
-<p>
-The default behaviour of a socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Blocking</em>&nbsp;</td><td>: Pass true to set the socket as blocking, or false for non-blocking </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SocketTCP_8cpp-source.htm#l00056">56</a> of file <a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SocketTCP_8hpp-source.htm">SocketTCP.hpp</a><li><a class="el" href="SocketTCP_8cpp-source.htm">SocketTCP.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SocketUDP-members.htm b/doc/html/classsf_1_1SocketUDP-members.htm
deleted file mode 100755
index 27b3e2d..0000000
--- a/doc/html/classsf_1_1SocketUDP-members.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketUDP Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d">Bind</a>(unsigned short Port)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58">Close</a>()</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd">GetPort</a>() const </td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f">IsValid</a>() const </td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24">operator!=</a>(const SocketUDP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95">operator&lt;</a>(const SocketUDP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0">operator==</a>(const SocketUDP &amp;Other) const </td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996">Receive</a>(char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived, IPAddress &amp;Address, unsigned short &amp;Port)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#463bbd635513f2653f072c2f220d2495">Receive</a>(Packet &amp;PacketToReceive, IPAddress &amp;Address, unsigned short &amp;Port)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Selector&lt; SocketUDP &gt;</b> (defined in <a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a>)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2">Send</a>(const char *Data, std::size_t Size, const IPAddress &amp;Address, unsigned short Port)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#fef698f2544ac0364d422e1e1ba7a5b6">Send</a>(Packet &amp;PacketToSend, const IPAddress &amp;Address, unsigned short Port)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6">SetBlocking</a>(bool Blocking)</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901">SocketUDP</a>()</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c">Unbind</a>()</td><td><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SocketUDP.htm b/doc/html/classsf_1_1SocketUDP.htm
deleted file mode 100755
index ab7dff7..0000000
--- a/doc/html/classsf_1_1SocketUDP.htm
+++ /dev/null
@@ -1,590 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SocketUDP Class Reference</h1><!-- doxytag: class="sf::SocketUDP" --><a class="el" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a> wraps a socket using UDP protocol to send data fastly (but with less safety).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SocketUDP_8hpp-source.htm">SocketUDP.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1SocketUDP-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901">SocketUDP</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#844e648922eccd86d4815d19472bb901"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6">SetBlocking</a> (bool Blocking)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the blocking state of the socket. <a href="#128ebfff7472dfdd330b46b719e06fd6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d">Bind</a> (unsigned short Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind the socket to a specific port. <a href="#4a7e364fd39aa7338f0822d849323a5d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c">Unbind</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unbind the socket from its previous port, if any. <a href="#6f6b448b8ab63913dad5d6906645081c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2">Send</a> (const char *Data, std::size_t Size, const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Address, unsigned short Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array of bytes. <a href="#bce9f533dd86c0fd8fbe26b7efce3bc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996">Receive</a> (char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived, <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Address, unsigned short &amp;Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive an array of bytes. <a href="#c6928928fa1d6242db1f8d4176369996"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#fef698f2544ac0364d422e1e1ba7a5b6">Send</a> (<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;PacketToSend, const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Address, unsigned short Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a packet of data. <a href="#fef698f2544ac0364d422e1e1ba7a5b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">Socket::Status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#463bbd635513f2653f072c2f220d2495">Receive</a> (<a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;PacketToReceive, <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;Address, unsigned short &amp;Port)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive a packet. <a href="#463bbd635513f2653f072c2f220d2495"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58">Close</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the socket. <a href="#c9abf54c9ced16b55ddef46973cd1a58"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f">IsValid</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK. <a href="#ffecb97b84b51dea691934f9195abc1f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd">GetPort</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the port the socket is currently bound to. <a href="#14f2c68a57a163a5d142acd0c4b022dd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0">operator==</a> (const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator ==. <a href="#5e6df73d3b4acf5890bd48229b2d2fa0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24">operator!=</a> (const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator !=. <a href="#2cb8111d79d32e456f047132e61acd24"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95">operator&lt;</a> (const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator &lt;. <a href="#fc35043831c10528cc3e97b959438b95"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f750d7515f80120fe802531753208caf"></a><!-- doxytag: member="sf::SocketUDP::Selector&lt; SocketUDP &gt;" ref="f750d7515f80120fe802531753208caf" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Selector&lt; SocketUDP &gt;</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1SocketUDP.htm" title="SocketUDP wraps a socket using UDP protocol to send data fastly (but with less safety)...">SocketUDP</a> wraps a socket using UDP protocol to send data fastly (but with less safety).
-<p>Definition at line <a class="el" href="SocketUDP_8hpp-source.htm#l00045">45</a> of file <a class="el" href="SocketUDP_8hpp-source.htm">SocketUDP.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="844e648922eccd86d4815d19472bb901"></a><!-- doxytag: member="sf::SocketUDP::SocketUDP" ref="844e648922eccd86d4815d19472bb901" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SocketUDP::SocketUDP </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00041">41</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="4a7e364fd39aa7338f0822d849323a5d"></a><!-- doxytag: member="sf::SocketUDP::Bind" ref="4a7e364fd39aa7338f0822d849323a5d" args="(unsigned short Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::Bind </td>
- <td>(</td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bind the socket to a specific port.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to bind the socket to</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00064">64</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c9abf54c9ced16b55ddef46973cd1a58"></a><!-- doxytag: member="sf::SocketUDP::Close" ref="c9abf54c9ced16b55ddef46973cd1a58" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::Close </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close the socket.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00316">316</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="14f2c68a57a163a5d142acd0c4b022dd"></a><!-- doxytag: member="sf::SocketUDP::GetPort" ref="14f2c68a57a163a5d142acd0c4b022dd" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned short sf::SocketUDP::GetPort </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the port the socket is currently bound to.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current port (0 means the socket is not bound) </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00349">349</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ffecb97b84b51dea691934f9195abc1f"></a><!-- doxytag: member="sf::SocketUDP::IsValid" ref="ffecb97b84b51dea691934f9195abc1f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::IsValid </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK.
-<p>
-Check if the socket is in a valid state ; this function can be called any time to check if the socket is OK.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the socket is valid </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00340">340</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2cb8111d79d32e456f047132e61acd24"></a><!-- doxytag: member="sf::SocketUDP::operator!=" ref="2cb8111d79d32e456f047132e61acd24" args="(const SocketUDP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator !=.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this != Other </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00367">367</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fc35043831c10528cc3e97b959438b95"></a><!-- doxytag: member="sf::SocketUDP::operator&lt;" ref="fc35043831c10528cc3e97b959438b95" args="(const SocketUDP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator &lt;.
-<p>
-Provided for compatibility with standard containers, as comparing two sockets doesn't make much sense...<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this &lt; Other</dd></dl>
-Provided for compatibility with standard containers, as comparing two sockets doesn't make much sense...
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00378">378</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5e6df73d3b4acf5890bd48229b2d2fa0"></a><!-- doxytag: member="sf::SocketUDP::operator==" ref="5e6df73d3b4acf5890bd48229b2d2fa0" args="(const SocketUDP &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SocketUDP.htm">SocketUDP</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator ==.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Socket to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if *this == Other </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00358">358</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="463bbd635513f2653f072c2f220d2495"></a><!-- doxytag: member="sf::SocketUDP::Receive" ref="463bbd635513f2653f072c2f220d2495" args="(Packet &amp;PacketToReceive, IPAddress &amp;Address, unsigned short &amp;Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketUDP::Receive </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>PacketToReceive</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Address</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short &amp;&nbsp;</td>
- <td class="paramname"> <em>Port</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Receive a packet.
-<p>
-This function will block if the socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>PacketToReceive</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> to fill with received data </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: Address of the computer which sent the packet </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port on which the remote computer sent the data</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code</dd></dl>
-This function will block if the socket is blocking
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00245">245</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c6928928fa1d6242db1f8d4176369996"></a><!-- doxytag: member="sf::SocketUDP::Receive" ref="c6928928fa1d6242db1f8d4176369996" args="(char *Data, std::size_t MaxSize, std::size_t &amp;SizeReceived, IPAddress &amp;Address, unsigned short &amp;Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketUDP::Receive </td>
- <td>(</td>
- <td class="paramtype">char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>MaxSize</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t &amp;&nbsp;</td>
- <td class="paramname"> <em>SizeReceived</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Address</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short &amp;&nbsp;</td>
- <td class="paramname"> <em>Port</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Receive an array of bytes.
-<p>
-This function will block if the socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to a byte array to fill (make sure it is big enough) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxSize</em>&nbsp;</td><td>: Maximum number of bytes to read </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeReceived</em>&nbsp;</td><td>: Number of bytes received </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: Address of the computer which sent the data </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port on which the remote computer sent the data</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code</dd></dl>
-This function will block if the socket is blocking
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00162">162</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fef698f2544ac0364d422e1e1ba7a5b6"></a><!-- doxytag: member="sf::SocketUDP::Send" ref="fef698f2544ac0364d422e1e1ba7a5b6" args="(Packet &amp;PacketToSend, const IPAddress &amp;Address, unsigned short Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketUDP::Send </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Packet.htm">Packet</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>PacketToSend</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Address</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send a packet of data.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>PacketToSend</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Packet.htm" title="Packet wraps data to send / to receive through the network.">Packet</a> to send </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: Address of the computer to send the packet to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to send the data to</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00219">219</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bce9f533dd86c0fd8fbe26b7efce3bc2"></a><!-- doxytag: member="sf::SocketUDP::Send" ref="bce9f533dd86c0fd8fbe26b7efce3bc2" args="(const char *Data, std::size_t Size, const IPAddress &amp;Address, unsigned short Port)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Socket::Status sf::SocketUDP::Send </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>Size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1IPAddress.htm">IPAddress</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Address</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned short&nbsp;</td>
- <td class="paramname"> <em>Port</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Send an array of bytes.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the bytes to send </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: Number of bytes to send </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Address</em>&nbsp;</td><td>: Address of the computer to send the packet to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Port</em>&nbsp;</td><td>: Port to send the data to</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Status code </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00118">118</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="128ebfff7472dfdd330b46b719e06fd6"></a><!-- doxytag: member="sf::SocketUDP::SetBlocking" ref="128ebfff7472dfdd330b46b719e06fd6" args="(bool Blocking)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SocketUDP::SetBlocking </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Blocking</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the blocking state of the socket.
-<p>
-The default behaviour of a socket is blocking<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Blocking</em>&nbsp;</td><td>: Pass true to set the socket as blocking, or false for non-blocking </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00050">50</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6f6b448b8ab63913dad5d6906645081c"></a><!-- doxytag: member="sf::SocketUDP::Unbind" ref="6f6b448b8ab63913dad5d6906645081c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SocketUDP::Unbind </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Unbind the socket from its previous port, if any.
-<p>
-Unbind the socket to its previous port.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SocketUDP_8cpp-source.htm#l00101">101</a> of file <a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SocketUDP_8hpp-source.htm">SocketUDP.hpp</a><li><a class="el" href="SocketUDP_8cpp-source.htm">SocketUDP.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Sound-members.htm b/doc/html/classsf_1_1Sound-members.htm
deleted file mode 100755
index c6dfdd1..0000000
--- a/doc/html/classsf_1_1Sound-members.htm
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Sound Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Sound.htm">sf::Sound</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">AudioResource</a>(const AudioResource &amp;)</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">GetAttenuation</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">GetBuffer</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">GetLoop</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">GetMinDistance</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">GetPitch</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">GetPlayingOffset</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">GetVolume</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">IsRelativeToListener</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">operator=</a>(const Sound &amp;Other)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">Pause</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">Paused</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">Play</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">Playing</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">ResetBuffer</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">SetAttenuation</a>(float Attenuation)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">SetBuffer</a>(const SoundBuffer &amp;Buffer)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">SetLoop</a>(bool Loop)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">SetMinDistance</a>(float MinDistance)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">SetPitch</a>(float Pitch)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">SetPlayingOffset</a>(float TimeOffset)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">SetPosition</a>(float X, float Y, float Z)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">SetPosition</a>(const Vector3f &amp;Position)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">SetRelativeToListener</a>(bool Relative)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">SetVolume</a>(float Volume)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282">Sound</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#45aff03dc5bf87647eba6bed7c1ced29">Sound</a>(const SoundBuffer &amp;Buffer, bool Loop=false, float Pitch=1.f, float Volume=100.f, const Vector3f &amp;Position=Vector3f(0, 0, 0))</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">Sound</a>(const Sound &amp;Copy)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>SoundStream</b> (defined in <a class="el" href="classsf_1_1Sound.htm">sf::Sound</a>)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Status</a> enum name</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">Stop</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">Stopped</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">~AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">~Sound</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Sound.htm b/doc/html/classsf_1_1Sound.htm
deleted file mode 100755
index 9843531..0000000
--- a/doc/html/classsf_1_1Sound.htm
+++ /dev/null
@@ -1,1030 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Sound.htm">Sound</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Sound Class Reference</h1><!-- doxytag: class="sf::Sound" --><!-- doxytag: inherits="sf::AudioResource" --><a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> defines the properties of a sound such as position, volume, pitch, etc.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Sound:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Sound.png" usemap="#sf::Sound_map" border="0" alt=""></center>
-<map name="sf::Sound_map">
-<area href="classsf_1_1AudioResource.htm" alt="sf::AudioResource" shape="rect" coords="0,0,115,24">
-<area href="classsf_1_1SoundStream.htm" alt="sf::SoundStream" shape="rect" coords="0,112,115,136">
-<area href="classsf_1_1Music.htm" alt="sf::Music" shape="rect" coords="0,168,115,192">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Sound-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Status</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">Stopped</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">Paused</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">Playing</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of the sound states. <a href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282">Sound</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#36ab74beaaa953d9879c933ddd246282"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#45aff03dc5bf87647eba6bed7c1ced29">Sound</a> (const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;Buffer, bool Loop=false, float Pitch=1.f, float Volume=100.f, const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;Position=<a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>(0, 0, 0))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the sound from its parameters. <a href="#45aff03dc5bf87647eba6bed7c1ced29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">Sound</a> (const <a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#a930dcf53775f501ce43d44bf54c0ce4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">~Sound</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#d0792c35310eba2dffd8489c80fad076"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">Play</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Play the sound. <a href="#fdafa7970587f04d3833b4095c2de1db"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">Pause</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pause the sound. <a href="#6a712910ac1340f32e3ec3a04295ebd3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">Stop</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop the sound. <a href="#b1f5f103f737c52ceb0b1a067b4d0630"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">SetBuffer</a> (const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;Buffer)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the source buffer. <a href="#9dbc27c54f0ee633c831a0b6e24ecc55"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">SetLoop</a> (bool Loop)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound loop state. <a href="#4eb9966b7289c69623a39cc0125012f4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">SetPitch</a> (float Pitch)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound pitch. <a href="#f93301feb88770789ba7cd993c9dd3a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">SetVolume</a> (float Volume)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound volume. <a href="#1536095045923a2332dd9eed6bf8e96a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">SetPosition</a> (float X, float Y, float Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound position (take 3 values). <a href="#b445e8738218525d8dd067628bc70c78"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">SetPosition</a> (const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound position (take a 3D vector). <a href="#0d8c6f11281a574b781c53d62a4af776"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">SetRelativeToListener</a> (bool Relative)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Make the sound's position relative to the listener's position, or absolute. <a href="#7604f576d184ba8031789beee96d04d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">SetMinDistance</a> (float MinDistance)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the minimum distance - closer than this distance, the listener will hear the sound at its maximum volume. <a href="#0a545d8dca68d85a03390f6da7c446a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">SetAttenuation</a> (float Attenuation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the attenuation factor - the higher the attenuation, the more the sound will be attenuated with distance from listener. <a href="#c3743f1fb53bf9818fbab6e9220bd7b9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">SetPlayingOffset</a> (float TimeOffset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the current playing position of the sound. <a href="#e779b4fa3d8d98a1490334dbd32e8d62"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">GetBuffer</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the source buffer. <a href="#bb46557ecfb32c4538fedad28cc59d9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">GetLoop</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the sound is looping. <a href="#5cdc44ade7bda8db2d0431701d72495e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">GetPitch</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the pitch. <a href="#42333202ed0586f434d852cc35b9d4ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">GetVolume</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the volume. <a href="#018e78cd6c50d653fffff1005a350782"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sound position. <a href="#b1adb173ee12a86f261fb765be050643"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">IsRelativeToListener</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the sound's position is relative to the listener's position, or if it's absolute. <a href="#f0278152abf6e3f195353ce3c270f34e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">GetMinDistance</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the minimum distance. <a href="#07f37119f7b3b00f274ac0263a4bc58b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">GetAttenuation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the attenuation factor. <a href="#f594211c35d6ac7a9df083c226749c42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the status of the sound (stopped, paused, playing). <a href="#76c97fca3a5092db606eb66461f063af"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">GetPlayingOffset</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current playing position of the sound. <a href="#0e80c736a6865123be0c19e99f36467f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">operator=</a> (const <a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#b794404f8facdad9578c31eff25110a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">ResetBuffer</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset the internal buffer. <a href="#0fe562f8a52994658398c61796cde331"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22d0a4fe764bba1f30b58224b1f8855e"></a><!-- doxytag: member="sf::Sound::SoundStream" ref="22d0a4fe764bba1f30b58224b1f8855e" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>SoundStream</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> defines the properties of a sound such as position, volume, pitch, etc.
-<p>Definition at line <a class="el" href="Sound_8hpp-source.htm#l00045">45</a> of file <a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="28ad2186cde78fed2c79c867b9622195"></a><!-- doxytag: member="sf::Sound::Status" ref="28ad2186cde78fed2c79c867b9622195" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">sf::Sound::Status</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumeration of the sound states.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9"></a><!-- doxytag: member="Stopped" ref="28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" args="" -->Stopped</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> is not playing. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f"></a><!-- doxytag: member="Paused" ref="28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f" args="" -->Paused</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> is paused. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288"></a><!-- doxytag: member="Playing" ref="28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288" args="" -->Playing</em>&nbsp;</td><td>
-<a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> is playing. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8hpp-source.htm#l00052">52</a> of file <a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="36ab74beaaa953d9879c933ddd246282"></a><!-- doxytag: member="sf::Sound::Sound" ref="36ab74beaaa953d9879c933ddd246282" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sound::Sound </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00038">38</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="45aff03dc5bf87647eba6bed7c1ced29"></a><!-- doxytag: member="sf::Sound::Sound" ref="45aff03dc5bf87647eba6bed7c1ced29" args="(const SoundBuffer &amp;Buffer, bool Loop=false, float Pitch=1.f, float Volume=100.f, const Vector3f &amp;Position=Vector3f(0, 0, 0))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sound::Sound </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Buffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Loop</em> = <code>false</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Pitch</em> = <code>1.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Volume</em> = <code>100.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> = <code><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>(0,&nbsp;0,&nbsp;0)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the sound from its parameters.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Buffer</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> buffer to play (NULL by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Loop</em>&nbsp;</td><td>: Loop flag (false by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Pitch</em>&nbsp;</td><td>: Value of the pitch (1 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Volume</em>&nbsp;</td><td>: Volume (100 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position (0, 0, 0 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00048">48</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a930dcf53775f501ce43d44bf54c0ce4"></a><!-- doxytag: member="sf::Sound::Sound" ref="a930dcf53775f501ce43d44bf54c0ce4" args="(const Sound &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sound::Sound </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: Instance to copy </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00064">64</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d0792c35310eba2dffd8489c80fad076"></a><!-- doxytag: member="sf::Sound::~Sound" ref="d0792c35310eba2dffd8489c80fad076" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sound::~Sound </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="f594211c35d6ac7a9df083c226749c42"></a><!-- doxytag: member="sf::Sound::GetAttenuation" ref="f594211c35d6ac7a9df083c226749c42" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Sound::GetAttenuation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the attenuation factor.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Attenuation factor of the sound </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00319">319</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bb46557ecfb32c4538fedad28cc59d9e"></a><!-- doxytag: member="sf::Sound::GetBuffer" ref="bb46557ecfb32c4538fedad28cc59d9e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> * sf::Sound::GetBuffer </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the source buffer.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> buffer bound to the sound (can be NULL) </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00237">237</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5cdc44ade7bda8db2d0431701d72495e"></a><!-- doxytag: member="sf::Sound::GetLoop" ref="5cdc44ade7bda8db2d0431701d72495e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Sound::GetLoop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the sound is looping.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the sound is looping, false otherwise </dd></dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00246">246</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="07f37119f7b3b00f274ac0263a4bc58b"></a><!-- doxytag: member="sf::Sound::GetMinDistance" ref="07f37119f7b3b00f274ac0263a4bc58b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Sound::GetMinDistance </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the minimum distance.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Minimum distance for the sound </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00307">307</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="42333202ed0586f434d852cc35b9d4ef"></a><!-- doxytag: member="sf::Sound::GetPitch" ref="42333202ed0586f434d852cc35b9d4ef" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Sound::GetPitch </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the pitch.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pitch value </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0e80c736a6865123be0c19e99f36467f"></a><!-- doxytag: member="sf::Sound::GetPlayingOffset" ref="0e80c736a6865123be0c19e99f36467f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Sound::GetPlayingOffset </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current playing position of the sound.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current playing position, expressed in seconds </dd></dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00331">331</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b1adb173ee12a86f261fb765be050643"></a><!-- doxytag: member="sf::Sound::GetPosition" ref="b1adb173ee12a86f261fb765be050643" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> sf::Sound::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sound position.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Position of the sound in the world </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00282">282</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="76c97fca3a5092db606eb66461f063af"></a><!-- doxytag: member="sf::Sound::GetStatus" ref="76c97fca3a5092db606eb66461f063af" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Sound::Status</a> sf::Sound::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the status of the sound (stopped, paused, playing).
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current status of the sound </dd></dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00343">343</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="018e78cd6c50d653fffff1005a350782"></a><!-- doxytag: member="sf::Sound::GetVolume" ref="018e78cd6c50d653fffff1005a350782" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Sound::GetVolume </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the volume.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Volume value (in range [1, 100]) </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00270">270</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f0278152abf6e3f195353ce3c270f34e"></a><!-- doxytag: member="sf::Sound::IsRelativeToListener" ref="f0278152abf6e3f195353ce3c270f34e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Sound::IsRelativeToListener </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell if the sound's position is relative to the listener's position, or if it's absolute.
-<p>
-Tell if the sound's position is relative to the listener's position, or if it's absolute.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the position is relative, false if it's absolute </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00295">295</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b794404f8facdad9578c31eff25110a7"></a><!-- doxytag: member="sf::Sound::operator=" ref="b794404f8facdad9578c31eff25110a7" args="(const Sound &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp; sf::Sound::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Sound.htm">Sound</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Instance to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the sound </dd></dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00363">363</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6a712910ac1340f32e3ec3a04295ebd3"></a><!-- doxytag: member="sf::Sound::Pause" ref="6a712910ac1340f32e3ec3a04295ebd3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::Pause </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Pause the sound.
-<p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00112">112</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fdafa7970587f04d3833b4095c2de1db"></a><!-- doxytag: member="sf::Sound::Play" ref="fdafa7970587f04d3833b4095c2de1db" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::Play </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Play the sound.
-<p>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00103">103</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0fe562f8a52994658398c61796cde331"></a><!-- doxytag: member="sf::Sound::ResetBuffer" ref="0fe562f8a52994658398c61796cde331" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::ResetBuffer </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Reset the internal buffer.
-<p>
-This function is for internal use only, you don't have to use it.
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00394">394</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c3743f1fb53bf9818fbab6e9220bd7b9"></a><!-- doxytag: member="sf::Sound::SetAttenuation" ref="c3743f1fb53bf9818fbab6e9220bd7b9" args="(float Attenuation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetAttenuation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Attenuation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the attenuation factor - the higher the attenuation, the more the sound will be attenuated with distance from listener.
-<p>
-Set the attenuation factor - the higher the attenuation, the more the sound will be attenuated with distance from listener.<p>
-The default attenuation factor 1.0<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Attenuation</em>&nbsp;</td><td>: New attenuation factor for the sound</td></tr>
- </table>
-</dl>
-The default attenuation factor 1.0
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00219">219</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9dbc27c54f0ee633c831a0b6e24ecc55"></a><!-- doxytag: member="sf::Sound::SetBuffer" ref="9dbc27c54f0ee633c831a0b6e24ecc55" args="(const SoundBuffer &amp;Buffer)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetBuffer </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Buffer</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the source buffer.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Buffer</em>&nbsp;</td><td>: New sound buffer to bind to the sound </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00130">130</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4eb9966b7289c69623a39cc0125012f4"></a><!-- doxytag: member="sf::Sound::SetLoop" ref="4eb9966b7289c69623a39cc0125012f4" args="(bool Loop)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetLoop </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Loop</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sound loop state.
-<p>
-This parameter is disabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Loop</em>&nbsp;</td><td>: True to play in loop, false to play once </td></tr>
- </table>
-</dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00149">149</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0a545d8dca68d85a03390f6da7c446a9"></a><!-- doxytag: member="sf::Sound::SetMinDistance" ref="0a545d8dca68d85a03390f6da7c446a9" args="(float MinDistance)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetMinDistance </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>MinDistance</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the minimum distance - closer than this distance, the listener will hear the sound at its maximum volume.
-<p>
-Set the minimum distance - closer than this distance, the listener will hear the sound at its maximum volume.<p>
-The default minimum distance is 1.0<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>MinDistance</em>&nbsp;</td><td>: New minimum distance for the sound</td></tr>
- </table>
-</dl>
-The default minimum distance is 1.0
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00208">208</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f93301feb88770789ba7cd993c9dd3a0"></a><!-- doxytag: member="sf::Sound::SetPitch" ref="f93301feb88770789ba7cd993c9dd3a0" args="(float Pitch)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetPitch </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Pitch</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sound pitch.
-<p>
-The default pitch is 1<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Pitch</em>&nbsp;</td><td>: New pitch </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00158">158</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e779b4fa3d8d98a1490334dbd32e8d62"></a><!-- doxytag: member="sf::Sound::SetPlayingOffset" ref="e779b4fa3d8d98a1490334dbd32e8d62" args="(float TimeOffset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetPlayingOffset </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>TimeOffset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the current playing position of the sound.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>TimeOffset</em>&nbsp;</td><td>: New playing position, expressed in seconds </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00228">228</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0d8c6f11281a574b781c53d62a4af776"></a><!-- doxytag: member="sf::Sound::SetPosition" ref="0d8c6f11281a574b781c53d62a4af776" args="(const Vector3f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sound position (take a 3D vector).
-<p>
-The default position is (0, 0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position of the sound in the world</td></tr>
- </table>
-</dl>
-The default position is (0, 0, 0)
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00186">186</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b445e8738218525d8dd067628bc70c78"></a><!-- doxytag: member="sf::Sound::SetPosition" ref="b445e8738218525d8dd067628bc70c78" args="(float X, float Y, float Z)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Z</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sound position (take 3 values).
-<p>
-The default position is (0, 0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X,Y,Z</em>&nbsp;</td><td>: Position of the sound in the world</td></tr>
- </table>
-</dl>
-The default position is (0, 0, 0)
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00176">176</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7604f576d184ba8031789beee96d04d3"></a><!-- doxytag: member="sf::Sound::SetRelativeToListener" ref="7604f576d184ba8031789beee96d04d3" args="(bool Relative)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetRelativeToListener </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Relative</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Make the sound's position relative to the listener's position, or absolute.
-<p>
-Make the sound's position relative to the listener's position, or absolute.<p>
-The default value is false (absolute)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Relative</em>&nbsp;</td><td>: True to set the position relative, false to set it absolute</td></tr>
- </table>
-</dl>
-The default value is false (absolute)
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00197">197</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1536095045923a2332dd9eed6bf8e96a"></a><!-- doxytag: member="sf::Sound::SetVolume" ref="1536095045923a2332dd9eed6bf8e96a" args="(float Volume)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::SetVolume </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Volume</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sound volume.
-<p>
-The default volume is 100<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Volume</em>&nbsp;</td><td>: Volume (in range [0, 100]) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00167">167</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b1f5f103f737c52ceb0b1a067b4d0630"></a><!-- doxytag: member="sf::Sound::Stop" ref="b1f5f103f737c52ceb0b1a067b4d0630" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sound::Stop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Stop the sound.
-<p>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">sf::SoundStream</a>.</p>
-
-<p>Definition at line <a class="el" href="Sound_8cpp-source.htm#l00121">121</a> of file <a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a><li><a class="el" href="Sound_8cpp-source.htm">Sound.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Sound.png b/doc/html/classsf_1_1Sound.png
deleted file mode 100755
index 3c40696..0000000
--- a/doc/html/classsf_1_1Sound.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SoundBuffer-members.htm b/doc/html/classsf_1_1SoundBuffer-members.htm
deleted file mode 100755
index e2aca70..0000000
--- a/doc/html/classsf_1_1SoundBuffer-members.htm
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundBuffer Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">AudioResource</a>(const AudioResource &amp;)</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f">GetChannelsCount</a>() const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984">GetDuration</a>() const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571">GetSampleRate</a>() const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0">GetSamples</a>() const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789">GetSamplesCount</a>() const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4">LoadFromFile</a>(const std::string &amp;Filename)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3">LoadFromMemory</a>(const char *Data, std::size_t SizeInBytes)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc">LoadFromSamples</a>(const Int16 *Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49">operator=</a>(const SoundBuffer &amp;Other)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">Resource&lt; SoundBuffer &gt;::operator=</a>(const Resource&lt; SoundBuffer &gt; &amp;Other)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; SoundBuffer &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; SoundBuffer &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#59a0a5ddb77f7fe059bd32dee5f792d0">Resource</a>(const Resource&lt; SoundBuffer &gt; &amp;Copy)</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; SoundBuffer &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239">SaveToFile</a>(const std::string &amp;Filename) const </td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Sound</b> (defined in <a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a>)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233">SoundBuffer</a>()</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#deb60002d4c4a4d8511fb5aa7225224b">SoundBuffer</a>(const SoundBuffer &amp;Copy)</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">~AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">~Resource</a>()</td><td><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; SoundBuffer &gt;</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5">~SoundBuffer</a>()</td><td><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundBuffer.htm b/doc/html/classsf_1_1SoundBuffer.htm
deleted file mode 100755
index 2659363..0000000
--- a/doc/html/classsf_1_1SoundBuffer.htm
+++ /dev/null
@@ -1,495 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundBuffer Class Reference</h1><!-- doxytag: class="sf::SoundBuffer" --><!-- doxytag: inherits="sf::AudioResource,Resource&lt; SoundBuffer &gt;" --><a class="el" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> is the low-level for loading and manipulating sound buffers.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SoundBuffer_8hpp-source.htm">SoundBuffer.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::SoundBuffer:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1SoundBuffer.png" usemap="#sf::SoundBuffer_map" border="0" alt=""></center>
-<map name="sf::SoundBuffer_map">
-<area href="classsf_1_1AudioResource.htm" alt="sf::AudioResource" shape="rect" coords="0,0,177,24">
-<area href="classsf_1_1Resource.htm" alt="sf::Resource< SoundBuffer >" shape="rect" coords="187,0,364,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1SoundBuffer-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233">SoundBuffer</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#0cabfbfe19b831bf7d5c9592d92ef233"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#deb60002d4c4a4d8511fb5aa7225224b">SoundBuffer</a> (const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;Copy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#deb60002d4c4a4d8511fb5aa7225224b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5">~SoundBuffer</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#ea240161724ffba74a0d6a9e277d3cd5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4">LoadFromFile</a> (const std::string &amp;Filename)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the sound buffer from a file. <a href="#232bb58d0910729a542cc2af473c8aa4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3">LoadFromMemory</a> (const char *Data, std::size_t SizeInBytes)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the sound buffer from a file in memory. <a href="#694c43f4ee7b2c6277c1ead496d266f3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc">LoadFromSamples</a> (const Int16 *Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the sound buffer from an array of samples - assumed format for samples is 16 bits signed integer. <a href="#5efd0d42e07a4c7841b6d4f30849d7dc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239">SaveToFile</a> (const std::string &amp;Filename) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save the sound buffer to a file. <a href="#f4515a797138382cf98a4d9cd5047239"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const Int16 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0">GetSamples</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the sound samples. <a href="#26b7f93c9d02c34545ff3f1b37206fe0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789">GetSamplesCount</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the samples count. <a href="#5da93e162669ec8c03b902f622261789"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571">GetSampleRate</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sample rate. <a href="#c4b1b885e3720689c6cbc22ff6cbe571"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f">GetChannelsCount</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of channels (1 = mono, 2 = stereo, . <a href="#cfea4667cb8a5e72b1061fa2647af30f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984">GetDuration</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sound duration. <a href="#525731db309fb7d5b9781e65bc4e0984"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49">operator=</a> (const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;Other)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#cfdc7a2357c06e2e15c408a4fa21bd49"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="50914f77c7cf4fb97616c898c5291f4b"></a><!-- doxytag: member="sf::SoundBuffer::Sound" ref="50914f77c7cf4fb97616c898c5291f4b" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Sound</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a> is the low-level for loading and manipulating sound buffers.
-<p>Definition at line <a class="el" href="SoundBuffer_8hpp-source.htm#l00046">46</a> of file <a class="el" href="SoundBuffer_8hpp-source.htm">SoundBuffer.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="0cabfbfe19b831bf7d5c9592d92ef233"></a><!-- doxytag: member="sf::SoundBuffer::SoundBuffer" ref="0cabfbfe19b831bf7d5c9592d92ef233" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundBuffer::SoundBuffer </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00042">42</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="deb60002d4c4a4d8511fb5aa7225224b"></a><!-- doxytag: member="sf::SoundBuffer::SoundBuffer" ref="deb60002d4c4a4d8511fb5aa7225224b" args="(const SoundBuffer &amp;Copy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundBuffer::SoundBuffer </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Copy</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Copy constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Copy</em>&nbsp;</td><td>: Instance to copy </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00054">54</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ea240161724ffba74a0d6a9e277d3cd5"></a><!-- doxytag: member="sf::SoundBuffer::~SoundBuffer" ref="ea240161724ffba74a0d6a9e277d3cd5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundBuffer::~SoundBuffer </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00073">73</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="cfea4667cb8a5e72b1061fa2647af30f"></a><!-- doxytag: member="sf::SoundBuffer::GetChannelsCount" ref="cfea4667cb8a5e72b1061fa2647af30f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundBuffer::GetChannelsCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the number of channels (1 = mono, 2 = stereo, .
-<p>
-..)<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of channels</dd></dl>
-..)
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00253">253</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="525731db309fb7d5b9781e65bc4e0984"></a><!-- doxytag: member="sf::SoundBuffer::GetDuration" ref="525731db309fb7d5b9781e65bc4e0984" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::SoundBuffer::GetDuration </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sound duration.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> duration, in seconds </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00265">265</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c4b1b885e3720689c6cbc22ff6cbe571"></a><!-- doxytag: member="sf::SoundBuffer::GetSampleRate" ref="c4b1b885e3720689c6cbc22ff6cbe571" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundBuffer::GetSampleRate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sample rate.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> frequency (number of samples per second) </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00241">241</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="26b7f93c9d02c34545ff3f1b37206fe0"></a><!-- doxytag: member="sf::SoundBuffer::GetSamples" ref="26b7f93c9d02c34545ff3f1b37206fe0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const Int16 * sf::SoundBuffer::GetSamples </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the sound samples.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the array of sound samples, in 16 bits signed integer format </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00223">223</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5da93e162669ec8c03b902f622261789"></a><!-- doxytag: member="sf::SoundBuffer::GetSamplesCount" ref="5da93e162669ec8c03b902f622261789" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::SoundBuffer::GetSamplesCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the samples count.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of samples </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00232">232</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="232bb58d0910729a542cc2af473c8aa4"></a><!-- doxytag: member="sf::SoundBuffer::LoadFromFile" ref="232bb58d0910729a542cc2af473c8aa4" args="(const std::string &amp;Filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundBuffer::LoadFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the sound buffer from a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the sound file to load</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00088">88</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="694c43f4ee7b2c6277c1ead496d266f3"></a><!-- doxytag: member="sf::SoundBuffer::LoadFromMemory" ref="694c43f4ee7b2c6277c1ead496d266f3" args="(const char *Data, std::size_t SizeInBytes)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundBuffer::LoadFromMemory </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Data</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SizeInBytes</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the sound buffer from a file in memory.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>: Pointer to the file data in memory </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SizeInBytes</em>&nbsp;</td><td>: Size of the data to load, in bytes</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00129">129</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5efd0d42e07a4c7841b6d4f30849d7dc"></a><!-- doxytag: member="sf::SoundBuffer::LoadFromSamples" ref="5efd0d42e07a4c7841b6d4f30849d7dc" args="(const Int16 *Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundBuffer::LoadFromSamples </td>
- <td>(</td>
- <td class="paramtype">const Int16 *&nbsp;</td>
- <td class="paramname"> <em>Samples</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>SamplesCount</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ChannelsCount</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>SampleRate</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Load the sound buffer from an array of samples - assumed format for samples is 16 bits signed integer.
-<p>
-Load the sound buffer from an array of samples - assumed format for samples is 16 bits signed integer.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Samples</em>&nbsp;</td><td>: Pointer to the samples in memory </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SamplesCount</em>&nbsp;</td><td>: Number of samples pointed by Samples </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ChannelsCount</em>&nbsp;</td><td>: Number of channels (1 = mono, 2 = stereo, ...) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SampleRate</em>&nbsp;</td><td>: Frequency (number of samples to play per second)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if loading has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00171">171</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cfdc7a2357c06e2e15c408a4fa21bd49"></a><!-- doxytag: member="sf::SoundBuffer::operator=" ref="cfdc7a2357c06e2e15c408a4fa21bd49" args="(const SoundBuffer &amp;Other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp; sf::SoundBuffer::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Assignment operator.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Instance to assign</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the sound buffer </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00274">274</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f4515a797138382cf98a4d9cd5047239"></a><!-- doxytag: member="sf::SoundBuffer::SaveToFile" ref="f4515a797138382cf98a4d9cd5047239" args="(const std::string &amp;Filename) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundBuffer::SaveToFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Filename</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Save the sound buffer to a file.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Filename</em>&nbsp;</td><td>: Path of the sound file to write</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if saving has been successful </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBuffer_8cpp-source.htm#l00199">199</a> of file <a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SoundBuffer_8hpp-source.htm">SoundBuffer.hpp</a><li><a class="el" href="SoundBuffer_8cpp-source.htm">SoundBuffer.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundBuffer.png b/doc/html/classsf_1_1SoundBuffer.png
deleted file mode 100755
index b27786c..0000000
--- a/doc/html/classsf_1_1SoundBuffer.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SoundBufferRecorder-members.htm b/doc/html/classsf_1_1SoundBufferRecorder-members.htm
deleted file mode 100755
index 1e5645c..0000000
--- a/doc/html/classsf_1_1SoundBufferRecorder-members.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundBufferRecorder Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SoundBufferRecorder.htm">sf::SoundBufferRecorder</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">CanCapture</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8">GetBuffer</a>() const </td><td><a class="el" href="classsf_1_1SoundBufferRecorder.htm">sf::SoundBufferRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">GetSampleRate</a>() const </td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">SoundRecorder</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">Start</a>(unsigned int SampleRate=44100)</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">Stop</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">~SoundRecorder</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundBufferRecorder.htm b/doc/html/classsf_1_1SoundBufferRecorder.htm
deleted file mode 100755
index 2e58bd5..0000000
--- a/doc/html/classsf_1_1SoundBufferRecorder.htm
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SoundBufferRecorder.htm">SoundBufferRecorder</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundBufferRecorder Class Reference</h1><!-- doxytag: class="sf::SoundBufferRecorder" --><!-- doxytag: inherits="sf::SoundRecorder" -->Specialized <a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> which saves the captured audio data into a sound buffer.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SoundBufferRecorder_8hpp-source.htm">SoundBufferRecorder.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::SoundBufferRecorder:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1SoundBufferRecorder.png" usemap="#sf::SoundBufferRecorder_map" border="0" alt=""></center>
-<map name="sf::SoundBufferRecorder_map">
-<area href="classsf_1_1SoundRecorder.htm" alt="sf::SoundRecorder" shape="rect" coords="0,56,152,80">
-<area href="classsf_1_1Thread.htm" alt="sf::Thread" shape="rect" coords="0,0,152,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1SoundBufferRecorder-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8">GetBuffer</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sound buffer containing the captured audio data. <a href="#b49f9684043acfc42fcc7b6b1094f5c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">Start</a> (unsigned int SampleRate=44100)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start the capture. <a href="#6693c1ac2c0d1677f798539b0643eac6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">Stop</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop the capture. <a href="#9d51c7ef42bcdd4ad53e995d57f90733"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">GetSampleRate</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sample rate. <a href="#bab8a7f4ba28658c4bf707639f11a6c5"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">CanCapture</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the system supports sound capture. <a href="#436acab98f3f95d146b3ffe24fbf3fc5"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Specialized <a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> which saves the captured audio data into a sound buffer.
-<p>Definition at line <a class="el" href="SoundBufferRecorder_8hpp-source.htm#l00042">42</a> of file <a class="el" href="SoundBufferRecorder_8hpp-source.htm">SoundBufferRecorder.hpp</a>.</p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="436acab98f3f95d146b3ffe24fbf3fc5"></a><!-- doxytag: member="sf::SoundBufferRecorder::CanCapture" ref="436acab98f3f95d146b3ffe24fbf3fc5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundRecorder::CanCapture </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell if the system supports sound capture.
-<p>
-If not, this class won't be usable<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if audio capture is supported</dd></dl>
-If not, this class won't be usable
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00136">136</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b49f9684043acfc42fcc7b6b1094f5c8"></a><!-- doxytag: member="sf::SoundBufferRecorder::GetBuffer" ref="b49f9684043acfc42fcc7b6b1094f5c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp; sf::SoundBufferRecorder::GetBuffer </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sound buffer containing the captured audio data.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Constant reference to the sound buffer </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundBufferRecorder_8cpp-source.htm#l00070">70</a> of file <a class="el" href="SoundBufferRecorder_8cpp-source.htm">SoundBufferRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bab8a7f4ba28658c4bf707639f11a6c5"></a><!-- doxytag: member="sf::SoundBufferRecorder::GetSampleRate" ref="bab8a7f4ba28658c4bf707639f11a6c5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundRecorder::GetSampleRate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sample rate.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Frequency, in samples per second </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00126">126</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6693c1ac2c0d1677f798539b0643eac6"></a><!-- doxytag: member="sf::SoundBufferRecorder::Start" ref="6693c1ac2c0d1677f798539b0643eac6" args="(unsigned int SampleRate=44100)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundRecorder::Start </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>SampleRate</em> = <code>44100</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Start the capture.
-<p>
-Warning : only one capture can happen at the same time<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SampleRate</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> frequency (the more samples, the higher the quality) (44100 by default = CD quality)</td></tr>
- </table>
-</dl>
-Warning : only one capture can happen at the same time
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00069">69</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9d51c7ef42bcdd4ad53e995d57f90733"></a><!-- doxytag: member="sf::SoundBufferRecorder::Stop" ref="9d51c7ef42bcdd4ad53e995d57f90733" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundRecorder::Stop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Stop the capture.
-<p>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00115">115</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SoundBufferRecorder_8hpp-source.htm">SoundBufferRecorder.hpp</a><li><a class="el" href="SoundBufferRecorder_8cpp-source.htm">SoundBufferRecorder.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundBufferRecorder.png b/doc/html/classsf_1_1SoundBufferRecorder.png
deleted file mode 100755
index c79a401..0000000
--- a/doc/html/classsf_1_1SoundBufferRecorder.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SoundRecorder-members.htm b/doc/html/classsf_1_1SoundRecorder-members.htm
deleted file mode 100755
index 00a671c..0000000
--- a/doc/html/classsf_1_1SoundRecorder-members.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundRecorder Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">CanCapture</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>FuncType</b> typedef (defined in <a class="el" href="classsf_1_1Thread.htm">sf::Thread</a>)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">GetSampleRate</a>() const </td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">SoundRecorder</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">Start</a>(unsigned int SampleRate=44100)</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">Stop</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">Thread</a>(FuncType Function, void *UserData=NULL)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2">Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">~SoundRecorder</a>()</td><td><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">~Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundRecorder.htm b/doc/html/classsf_1_1SoundRecorder.htm
deleted file mode 100755
index a2c0f9e..0000000
--- a/doc/html/classsf_1_1SoundRecorder.htm
+++ /dev/null
@@ -1,253 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SoundRecorder.htm">SoundRecorder</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundRecorder Class Reference</h1><!-- doxytag: class="sf::SoundRecorder" --><!-- doxytag: inherits="sf::Thread" --><a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> is an interface for capturing sound data, it is meant to be used as a base class.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SoundRecorder_8hpp-source.htm">SoundRecorder.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::SoundRecorder:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1SoundRecorder.png" usemap="#sf::SoundRecorder_map" border="0" alt=""></center>
-<map name="sf::SoundRecorder_map">
-<area href="classsf_1_1Thread.htm" alt="sf::Thread" shape="rect" coords="0,0,152,24">
-<area href="classsf_1_1SoundBufferRecorder.htm" alt="sf::SoundBufferRecorder" shape="rect" coords="0,112,152,136">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1SoundRecorder-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">~SoundRecorder</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <a href="#e83953cce24c5245c0672d150d280b64"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">Start</a> (unsigned int SampleRate=44100)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start the capture. <a href="#6693c1ac2c0d1677f798539b0643eac6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">Stop</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop the capture. <a href="#9d51c7ef42bcdd4ad53e995d57f90733"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">GetSampleRate</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sample rate. <a href="#bab8a7f4ba28658c4bf707639f11a6c5"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">CanCapture</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the system supports sound capture. <a href="#436acab98f3f95d146b3ffe24fbf3fc5"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">SoundRecorder</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#50ebad413c4f157408a0fa49f23212a9"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab6e6f11eb38f106cd7c1149763a11b8"></a><!-- doxytag: member="sf::SoundRecorder::FuncType" ref="ab6e6f11eb38f106cd7c1149763a11b8" args=")(void *)" -->
-typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>FuncType</b> )(void *)</td></tr>
-
-<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create and run the thread. <a href="#046df871f73d3cf452d1c72bcc143642"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until the thread finishes. <a href="#67f3c609fdf99688531dbfae461ea4d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the thread Terminating a thread with this function is not safe, you should rather try to make the thread function terminate by itself. <a href="#603d9493c6a845188f05c2eca48dc41b"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1SoundRecorder.htm" title="SoundRecorder is an interface for capturing sound data, it is meant to be used as...">SoundRecorder</a> is an interface for capturing sound data, it is meant to be used as a base class.
-<p>Definition at line <a class="el" href="SoundRecorder_8hpp-source.htm#l00041">41</a> of file <a class="el" href="SoundRecorder_8hpp-source.htm">SoundRecorder.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="e83953cce24c5245c0672d150d280b64"></a><!-- doxytag: member="sf::SoundRecorder::~SoundRecorder" ref="e83953cce24c5245c0672d150d280b64" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundRecorder::~SoundRecorder </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Virtual destructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00059">59</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="50ebad413c4f157408a0fa49f23212a9"></a><!-- doxytag: member="sf::SoundRecorder::SoundRecorder" ref="50ebad413c4f157408a0fa49f23212a9" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundRecorder::SoundRecorder </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00048">48</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="436acab98f3f95d146b3ffe24fbf3fc5"></a><!-- doxytag: member="sf::SoundRecorder::CanCapture" ref="436acab98f3f95d146b3ffe24fbf3fc5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundRecorder::CanCapture </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell if the system supports sound capture.
-<p>
-If not, this class won't be usable<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if audio capture is supported</dd></dl>
-If not, this class won't be usable
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00136">136</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bab8a7f4ba28658c4bf707639f11a6c5"></a><!-- doxytag: member="sf::SoundRecorder::GetSampleRate" ref="bab8a7f4ba28658c4bf707639f11a6c5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundRecorder::GetSampleRate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sample rate.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Frequency, in samples per second </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00126">126</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6693c1ac2c0d1677f798539b0643eac6"></a><!-- doxytag: member="sf::SoundRecorder::Start" ref="6693c1ac2c0d1677f798539b0643eac6" args="(unsigned int SampleRate=44100)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundRecorder::Start </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>SampleRate</em> = <code>44100</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Start the capture.
-<p>
-Warning : only one capture can happen at the same time<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SampleRate</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> frequency (the more samples, the higher the quality) (44100 by default = CD quality)</td></tr>
- </table>
-</dl>
-Warning : only one capture can happen at the same time
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00069">69</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9d51c7ef42bcdd4ad53e995d57f90733"></a><!-- doxytag: member="sf::SoundRecorder::Stop" ref="9d51c7ef42bcdd4ad53e995d57f90733" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundRecorder::Stop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Stop the capture.
-<p>
-
-<p>Definition at line <a class="el" href="SoundRecorder_8cpp-source.htm#l00115">115</a> of file <a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SoundRecorder_8hpp-source.htm">SoundRecorder.hpp</a><li><a class="el" href="SoundRecorder_8cpp-source.htm">SoundRecorder.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundRecorder.png b/doc/html/classsf_1_1SoundRecorder.png
deleted file mode 100755
index 452b28b..0000000
--- a/doc/html/classsf_1_1SoundRecorder.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1SoundStream-members.htm b/doc/html/classsf_1_1SoundStream-members.htm
deleted file mode 100755
index ce9a2d2..0000000
--- a/doc/html/classsf_1_1SoundStream-members.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundStream Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705">AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">AudioResource</a>(const AudioResource &amp;)</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [private]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>FuncType</b> typedef (defined in <a class="el" href="classsf_1_1Thread.htm">sf::Thread</a>)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">GetAttenuation</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">GetBuffer</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">GetChannelsCount</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">GetLoop</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">GetMinDistance</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">GetPitch</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">GetPlayingOffset</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">GetSampleRate</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">GetStatus</a>() const </td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">GetVolume</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">Initialize</a>(unsigned int ChannelsCount, unsigned int SampleRate)</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">IsRelativeToListener</a>() const </td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">operator=</a>(const Sound &amp;Other)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">Pause</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">Paused</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">Play</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">Playing</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">ResetBuffer</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">SetAttenuation</a>(float Attenuation)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">SetBuffer</a>(const SoundBuffer &amp;Buffer)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">SetLoop</a>(bool Loop)</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">SetMinDistance</a>(float MinDistance)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">SetPitch</a>(float Pitch)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">SetPlayingOffset</a>(float TimeOffset)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">SetPosition</a>(float X, float Y, float Z)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">SetPosition</a>(const Vector3f &amp;Position)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">SetRelativeToListener</a>(bool Relative)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">SetVolume</a>(float Volume)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282">Sound</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#45aff03dc5bf87647eba6bed7c1ced29">Sound</a>(const SoundBuffer &amp;Buffer, bool Loop=false, float Pitch=1.f, float Volume=100.f, const Vector3f &amp;Position=Vector3f(0, 0, 0))</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [explicit, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">Sound</a>(const Sound &amp;Copy)</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">SoundStream</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">Status</a> enum name</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">Stop</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">Stopped</a> enum value</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">Thread</a>(FuncType Function, void *UserData=NULL)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2">Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">~AudioResource</a>()</td><td><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a></td><td><code> [private, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">~Sound</a>()</td><td><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a></td><td><code> [private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">~SoundStream</a>()</td><td><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">~Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [private, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundStream.htm b/doc/html/classsf_1_1SoundStream.htm
deleted file mode 100755
index b81c5d9..0000000
--- a/doc/html/classsf_1_1SoundStream.htm
+++ /dev/null
@@ -1,503 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SoundStream.htm">SoundStream</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundStream Class Reference</h1><!-- doxytag: class="sf::SoundStream" --><!-- doxytag: inherits="sf::Thread,sf::Sound" --><a class="el" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a> is a streamed sound, ie samples are acquired while the sound is playing.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::SoundStream:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1SoundStream.png" usemap="#sf::SoundStream_map" border="0" alt=""></center>
-<map name="sf::SoundStream_map">
-<area href="classsf_1_1Thread.htm" alt="sf::Thread" shape="rect" coords="0,0,103,24">
-<area href="classsf_1_1Sound.htm" alt="sf::Sound" shape="rect" coords="113,0,216,24">
-<area href="classsf_1_1Music.htm" alt="sf::Music" shape="rect" coords="56,112,159,136">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1SoundStream-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">Chunk</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure defining a chunk of audio data to stream. <a href="structsf_1_1SoundStream_1_1Chunk.htm#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">Status</a> </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration of the sound states. <a href="classsf_1_1SoundStream.htm#28ad2186cde78fed2c79c867b9622195">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">~SoundStream</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <a href="#5b14ec6669440e4dbd5650f0fb6b0674"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">Play</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start playing the audio stream. <a href="#4d8437ef9a952fe3798bd239ff20d9bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">Stop</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop playing the audio stream. <a href="#53c9e9b160bcbcc89c93c1682b4525df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">GetChannelsCount</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of channels (1 = mono, 2 = stereo). <a href="#bdcb5c8f3b5884a27e2eb013f5e36858"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">GetSampleRate</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the stream sample rate. <a href="#74dabd1177bb60c8bd64bb6bbedb64bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">GetStatus</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the status of the stream (stopped, paused, playing). <a href="#cef2468ca4bc3e8ced76b11fb95c7ef2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">GetPlayingOffset</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current playing position of the stream. <a href="#d11fee9eb4baba68d6ed9f44bc6170ac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">SetLoop</a> (bool Loop)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the stream loop state. <a href="#1072090152b10d83f43f0cd6bbd82b4e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">GetLoop</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the stream is looping. <a href="#caecb1c68af4a9d75f9e9ad2d42afa78"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">SoundStream</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#769d08f4c3c6b4340ef3a838329d2e5c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">Initialize</a> (unsigned int ChannelsCount, unsigned int SampleRate)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the audio stream parameters, you must call it before <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a>. <a href="#ed9b6b06c0fa9c2d0b8c094eb2826793"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab6e6f11eb38f106cd7c1149763a11b8"></a><!-- doxytag: member="sf::SoundStream::FuncType" ref="ab6e6f11eb38f106cd7c1149763a11b8" args=")(void *)" -->
-typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>FuncType</b> )(void *)</td></tr>
-
-<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create and run the thread. <a href="#046df871f73d3cf452d1c72bcc143642"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until the thread finishes. <a href="#67f3c609fdf99688531dbfae461ea4d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the thread Terminating a thread with this function is not safe, you should rather try to make the thread function terminate by itself. <a href="#603d9493c6a845188f05c2eca48dc41b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">Pause</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pause the sound. <a href="#6a712910ac1340f32e3ec3a04295ebd3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">SetBuffer</a> (const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> &amp;Buffer)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the source buffer. <a href="#9dbc27c54f0ee633c831a0b6e24ecc55"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">SetPitch</a> (float Pitch)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound pitch. <a href="#f93301feb88770789ba7cd993c9dd3a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">SetVolume</a> (float Volume)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound volume. <a href="#1536095045923a2332dd9eed6bf8e96a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">SetPosition</a> (float X, float Y, float Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound position (take 3 values). <a href="#b445e8738218525d8dd067628bc70c78"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">SetPosition</a> (const <a class="el" href="classsf_1_1Vector3.htm">Vector3f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sound position (take a 3D vector). <a href="#0d8c6f11281a574b781c53d62a4af776"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">SetRelativeToListener</a> (bool Relative)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Make the sound's position relative to the listener's position, or absolute. <a href="#7604f576d184ba8031789beee96d04d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">SetMinDistance</a> (float MinDistance)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the minimum distance - closer than this distance, the listener will hear the sound at its maximum volume. <a href="#0a545d8dca68d85a03390f6da7c446a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">SetAttenuation</a> (float Attenuation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the attenuation factor - the higher the attenuation, the more the sound will be attenuated with distance from listener. <a href="#c3743f1fb53bf9818fbab6e9220bd7b9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">SetPlayingOffset</a> (float TimeOffset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the current playing position of the sound. <a href="#e779b4fa3d8d98a1490334dbd32e8d62"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1SoundBuffer.htm">SoundBuffer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">GetBuffer</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the source buffer. <a href="#bb46557ecfb32c4538fedad28cc59d9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">GetPitch</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the pitch. <a href="#42333202ed0586f434d852cc35b9d4ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">GetVolume</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the volume. <a href="#018e78cd6c50d653fffff1005a350782"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector3.htm">Vector3f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sound position. <a href="#b1adb173ee12a86f261fb765be050643"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">IsRelativeToListener</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell if the sound's position is relative to the listener's position, or if it's absolute. <a href="#f0278152abf6e3f195353ce3c270f34e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">GetMinDistance</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the minimum distance. <a href="#07f37119f7b3b00f274ac0263a4bc58b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">GetAttenuation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the attenuation factor. <a href="#f594211c35d6ac7a9df083c226749c42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">ResetBuffer</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset the internal buffer. <a href="#0fe562f8a52994658398c61796cde331"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1SoundStream.htm" title="SoundStream is a streamed sound, ie samples are acquired while the sound is playing...">SoundStream</a> is a streamed sound, ie samples are acquired while the sound is playing.
-<p>
-Use it for big sounds that would require hundreds of MB in memory (see <a class="el" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">Music</a>), or for streaming sound from the network
-<p>Definition at line <a class="el" href="SoundStream_8hpp-source.htm#l00044">44</a> of file <a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="28ad2186cde78fed2c79c867b9622195"></a><!-- doxytag: member="sf::SoundStream::Status" ref="28ad2186cde78fed2c79c867b9622195" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">sf::Sound::Status</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumeration of the sound states.
-<p>
-
-<p>Definition at line <a class="el" href="Sound_8hpp-source.htm#l00052">52</a> of file <a class="el" href="Sound_8hpp-source.htm">Sound.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="5b14ec6669440e4dbd5650f0fb6b0674"></a><!-- doxytag: member="sf::SoundStream::~SoundStream" ref="5b14ec6669440e4dbd5650f0fb6b0674" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundStream::~SoundStream </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Virtual destructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00054">54</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="769d08f4c3c6b4340ef3a838329d2e5c"></a><!-- doxytag: member="sf::SoundStream::SoundStream" ref="769d08f4c3c6b4340ef3a838329d2e5c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::SoundStream::SoundStream </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00039">39</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="bdcb5c8f3b5884a27e2eb013f5e36858"></a><!-- doxytag: member="sf::SoundStream::GetChannelsCount" ref="bdcb5c8f3b5884a27e2eb013f5e36858" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundStream::GetChannelsCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the number of channels (1 = mono, 2 = stereo).
-<p>
-Return the number of channels (1 = mono, 2 = stereo, .<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of channels</dd></dl>
-..)
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00126">126</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="caecb1c68af4a9d75f9e9ad2d42afa78"></a><!-- doxytag: member="sf::SoundStream::GetLoop" ref="caecb1c68af4a9d75f9e9ad2d42afa78" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::SoundStream::GetLoop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the stream is looping.
-<p>
-Tell whether or not the music is looping.<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the music is looping, false otherwise </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00180">180</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d11fee9eb4baba68d6ed9f44bc6170ac"></a><!-- doxytag: member="sf::SoundStream::GetPlayingOffset" ref="d11fee9eb4baba68d6ed9f44bc6170ac" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::SoundStream::GetPlayingOffset </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current playing position of the stream.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current playing position, expressed in seconds<p>
-Current playing position, expressed in seconds </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00162">162</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="74dabd1177bb60c8bd64bb6bbedb64bc"></a><!-- doxytag: member="sf::SoundStream::GetSampleRate" ref="74dabd1177bb60c8bd64bb6bbedb64bc" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::SoundStream::GetSampleRate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the stream sample rate.
-<p>
-Get the sound frequency (sample rate).<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Stream frequency (number of samples per second) </dd></dl>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00135">135</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cef2468ca4bc3e8ced76b11fb95c7ef2"></a><!-- doxytag: member="sf::SoundStream::GetStatus" ref="cef2468ca4bc3e8ced76b11fb95c7ef2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">Sound::Status</a> sf::SoundStream::GetStatus </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the status of the stream (stopped, paused, playing).
-<p>
-Get the status of the sound (stopped, paused, playing).<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current status of the sound </dd></dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00144">144</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ed9b6b06c0fa9c2d0b8c094eb2826793"></a><!-- doxytag: member="sf::SoundStream::Initialize" ref="ed9b6b06c0fa9c2d0b8c094eb2826793" args="(unsigned int ChannelsCount, unsigned int SampleRate)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Initialize </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ChannelsCount</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>SampleRate</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the audio stream parameters, you must call it before <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play()</a>.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ChannelsCount</em>&nbsp;</td><td>: Number of channels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SampleRate</em>&nbsp;</td><td>: Sample rate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00064">64</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4d8437ef9a952fe3798bd239ff20d9bf"></a><!-- doxytag: member="sf::SoundStream::Play" ref="4d8437ef9a952fe3798bd239ff20d9bf" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Play </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Start playing the audio stream.
-<p>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00085">85</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1072090152b10d83f43f0cd6bbd82b4e"></a><!-- doxytag: member="sf::SoundStream::SetLoop" ref="1072090152b10d83f43f0cd6bbd82b4e" args="(bool Loop)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::SetLoop </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Loop</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the stream loop state.
-<p>
-Set the music loop state.<p>
-This parameter is disabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Loop</em>&nbsp;</td><td>: True to play in loop, false to play once </td></tr>
- </table>
-</dl>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00171">171</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="53c9e9b160bcbcc89c93c1682b4525df"></a><!-- doxytag: member="sf::SoundStream::Stop" ref="53c9e9b160bcbcc89c93c1682b4525df" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::SoundStream::Stop </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Stop playing the audio stream.
-<p>
-
-<p>Reimplemented from <a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">sf::Sound</a>.</p>
-
-<p>Definition at line <a class="el" href="SoundStream_8cpp-source.htm#l00115">115</a> of file <a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a><li><a class="el" href="SoundStream_8cpp-source.htm">SoundStream.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1SoundStream.png b/doc/html/classsf_1_1SoundStream.png
deleted file mode 100755
index f7d044e..0000000
--- a/doc/html/classsf_1_1SoundStream.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Sprite-members.htm b/doc/html/classsf_1_1Sprite-members.htm
deleted file mode 100755
index bdcee55..0000000
--- a/doc/html/classsf_1_1Sprite-members.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Sprite Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a>(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b">FlipX</a>(bool Flipped)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97">FlipY</a>(bool Flipped)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca">GetImage</a>() const </td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c">GetPixel</a>(unsigned int X, unsigned int Y) const </td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e">GetSize</a>() const </td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941">GetSubRect</a>() const </td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a>(const Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b">Render</a>(RenderTarget &amp;Target) const </td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32">Resize</a>(float Width, float Height)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#7cc9df731a61f91ecd16b4a84de499aa">Resize</a>(const Vector2f &amp;Size)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a>(float Angle)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a>(float FactorX, float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a>(const Vector2f &amp;Factor)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a>(Blend::Mode Mode)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a>(float CenterX, float CenterY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a>(const Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a>(const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c">SetImage</a>(const Image &amp;Img)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a>(const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a>(float Rotation)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a>(float ScaleX, float ScaleY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a>(const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a>(float FactorX)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a>(float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df">SetSubRect</a>(const IntRect &amp;SubRect)</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a>(float X)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a>(float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984">Sprite</a>()</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Sprite.htm#6992dc47da2f9349bbe691db532f2436">Sprite</a>(const Image &amp;Img, const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a>()</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Sprite.htm b/doc/html/classsf_1_1Sprite.htm
deleted file mode 100755
index a193803..0000000
--- a/doc/html/classsf_1_1Sprite.htm
+++ /dev/null
@@ -1,1438 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Sprite.htm">Sprite</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Sprite Class Reference</h1><!-- doxytag: class="sf::Sprite" --><!-- doxytag: inherits="sf::Drawable" --><a class="el" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a> defines a sprite : texture, transformations, color, and draw on screen.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Sprite_8hpp-source.htm">Sprite.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Sprite:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Sprite.png" usemap="#sf::Sprite_map" border="0" alt=""></center>
-<map name="sf::Sprite_map">
-<area href="classsf_1_1Drawable.htm" alt="sf::Drawable" shape="rect" coords="0,0,82,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Sprite-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984">Sprite</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#92559fbca895a96758abf5eabab96984"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#6992dc47da2f9349bbe691db532f2436">Sprite</a> (const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;Img, const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position=<a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(0, 0), const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale=<a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(1, 1), float Rotation=0.f, const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col=<a class="el" href="classsf_1_1Color.htm">Color</a>(255, 255, 255, 255))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the sprite from a source image. <a href="#6992dc47da2f9349bbe691db532f2436"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c">SetImage</a> (const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;Img)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the image of the sprite. <a href="#3674c4c0556e4e19cb307d52f254b53c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df">SetSubRect</a> (const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;SubRect)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the sub-rectangle of the sprite inside the source image. <a href="#54bf1e6b425c40b00dd544a9c4fb77df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32">Resize</a> (float Width, float Height)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resize the sprite (by changing its scale factors) (take 2 values). <a href="#44a5075036963d312f3463caa2444e32"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#7cc9df731a61f91ecd16b4a84de499aa">Resize</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resize the sprite (by changing its scale factors) (take a 2D vector). <a href="#7cc9df731a61f91ecd16b4a84de499aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b">FlipX</a> (bool Flipped)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flip the sprite horizontally. <a href="#262e7dfd12caa5c434d546b68e5ff71b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97">FlipY</a> (bool Flipped)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flip the sprite vertically. <a href="#88e999eade1c55aadd5f618f1f17ec97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Image.htm">Image</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca">GetImage</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the source image of the sprite. <a href="#e2b23a9536486aa7ea3abc5801984aca"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941">GetSubRect</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sub-rectangle of the sprite inside the source image. <a href="#524cc0591bd56e48d8f0e0e5f9c9e941"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e">GetSize</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sprite size. <a href="#386e09c5f321a69707393851ae026f7e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Color.htm">Color</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c">GetPixel</a> (unsigned int X, unsigned int Y) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of a given pixel in the sprite (point is in local coordinates). <a href="#5a54b2a7c2fd5464a499ea8ac7348c1c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take 2 values). <a href="#419da954b1f2ad1ac2ae0b9ab6e72589"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take a 2D vector). <a href="#d2a279f3b13abf57cc25b2b4bd3b81ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a> (float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X position of the object. <a href="#c8de7bfe092736083dcf23b0dbd22b1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a> (float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y position of the object. <a href="#83fecebe749c1aca9070eafd63e1a0c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a> (float ScaleX, float ScaleY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take 2 values). <a href="#0b486c56c2bd137bac629f72fea66769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take a 2D vector). <a href="#84876c5ef7fa628c85c3c9e000e50aa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a> (float FactorX)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X scale factor of the object. <a href="#0cafae61a1d23bddb059d64df0e1502f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a> (float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y scale factor of the object. <a href="#89e7793c74c656e5850b71d0ab34b8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a> (float CenterX, float CenterY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take 2 values). <a href="#11ba1d92bc863af6d95831d216802f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector). <a href="#235e438555d8161f4995615f24fa0b11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a> (float Rotation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of the object. <a href="#6d06383770eb01ffecf3d1cae6fec0ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of the object. <a href="#8cae9f22220985e368a1b38af7644ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a> (<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the blending mode for the object. <a href="#aa6558b1ae27e29cb825028473707da5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of the object. <a href="#9ad52594fd5e835cbd03b79098d70e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current scale of the object. <a href="#fa4d6b97e7c10a82430ff9ee56009c97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the object. <a href="#de634efe8d6264282acc564fa5ea77c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the orientation of the object. <a href="#4e82bec096673bccf7ceac5207617017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of the object. <a href="#a2a028c4a975b5ed6d5a560a1c44e0c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current blending mode. <a href="#b6446c4717a2800cad85db55cb55409a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take 2 values). <a href="#501df9af956362b3e3769d80381c051b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take a 2D vector). <a href="#3c0ac0851d6b0ebed80ae9641ff93161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a> (float FactorX, float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take 2 values). <a href="#2a132c9f2f3736b7d0f6ea80303caacd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take a 2D vector). <a href="#c969d85eaf63f072de9e963bd973e91a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a> (float Angle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the object. <a href="#3e7d558d0ef488485a2d3f885ff2b419"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point). <a href="#809f25ae0b3a2015ec8a44fe9f5a0008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point). <a href="#fe3cb6e62921ce13806c27dc727f8945"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b">Render</a> (<a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;Target) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">/see Drawable::Render <a href="#0f52de16559efc4bf748a14f43318c7b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transform matrix of the drawable. <a href="#c659a89e42063d13aa9ebe2b534d404e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse transform matrix of the drawable. <a href="#48238d5726104ba7ddb42f21fc5d5b2f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">Sprite</a> defines a sprite : texture, transformations, color, and draw on screen.
-<p>Definition at line <a class="el" href="Sprite_8hpp-source.htm#l00044">44</a> of file <a class="el" href="Sprite_8hpp-source.htm">Sprite.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="92559fbca895a96758abf5eabab96984"></a><!-- doxytag: member="sf::Sprite::Sprite" ref="92559fbca895a96758abf5eabab96984" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sprite::Sprite </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00038">38</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6992dc47da2f9349bbe691db532f2436"></a><!-- doxytag: member="sf::Sprite::Sprite" ref="6992dc47da2f9349bbe691db532f2436" args="(const Image &amp;Img, const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Sprite::Sprite </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Img</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> = <code><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(0,&nbsp;0)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> = <code><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a>(1,&nbsp;1)</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> = <code>0.f</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> = <code><a class="el" href="classsf_1_1Color.htm">Color</a>(255,&nbsp;255,&nbsp;255,&nbsp;255)</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the sprite from a source image.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Img</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">Image</a> of the sprite </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: Position of the sprite (0, 0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: Scale factor (1, 1 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Orientation, in degrees (0 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of the sprite (white by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00050">50</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="262e7dfd12caa5c434d546b68e5ff71b"></a><!-- doxytag: member="sf::Sprite::FlipX" ref="262e7dfd12caa5c434d546b68e5ff71b" args="(bool Flipped)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::FlipX </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Flipped</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Flip the sprite horizontally.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Flipped</em>&nbsp;</td><td>: True to flip the sprite </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00112">112</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="88e999eade1c55aadd5f618f1f17ec97"></a><!-- doxytag: member="sf::Sprite::FlipY" ref="88e999eade1c55aadd5f618f1f17ec97" args="(bool Flipped)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::FlipY </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Flipped</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Flip the sprite vertically.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Flipped</em>&nbsp;</td><td>: True to flip the sprite </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00121">121</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b6446c4717a2800cad85db55cb55409a"></a><!-- doxytag: member="sf::Sprite::GetBlendMode" ref="b6446c4717a2800cad85db55cb55409a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> sf::Drawable::GetBlendMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current blending mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current blending mode </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="de634efe8d6264282acc564fa5ea77c0"></a><!-- doxytag: member="sf::Sprite::GetCenter" ref="de634efe8d6264282acc564fa5ea77c0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position of the center </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a2a028c4a975b5ed6d5a560a1c44e0c8"></a><!-- doxytag: member="sf::Sprite::GetColor" ref="a2a028c4a975b5ed6d5a560a1c44e0c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Drawable::GetColor </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current color </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e2b23a9536486aa7ea3abc5801984aca"></a><!-- doxytag: member="sf::Sprite::GetImage" ref="e2b23a9536486aa7ea3abc5801984aca" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Image.htm">Image</a> * sf::Sprite::GetImage </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the source image of the sprite.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the image (can be NULL) </dd></dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00130">130</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="48238d5726104ba7ddb42f21fc5d5b2f"></a><!-- doxytag: member="sf::Sprite::GetInverseMatrix" ref="48238d5726104ba7ddb42f21fc5d5b2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetInverseMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the inverse transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Inverse transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00350">350</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c659a89e42063d13aa9ebe2b534d404e"></a><!-- doxytag: member="sf::Sprite::GetMatrix" ref="c659a89e42063d13aa9ebe2b534d404e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00334">334</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5a54b2a7c2fd5464a499ea8ac7348c1c"></a><!-- doxytag: member="sf::Sprite::GetPixel" ref="5a54b2a7c2fd5464a499ea8ac7348c1c" args="(unsigned int X, unsigned int Y) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Color.htm">Color</a> sf::Sprite::GetPixel </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of a given pixel in the sprite (point is in local coordinates).
-<p>
-Get the color of a given pixel in the sprite (point is in local coordinates).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate of the pixel to get </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate of the pixel to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Color.htm" title="Color is an utility class for manipulating 32-bits RGBA colors.">Color</a> of pixel (X, Y) </dd></dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00158">158</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9ad52594fd5e835cbd03b79098d70e0b"></a><!-- doxytag: member="sf::Sprite::GetPosition" ref="9ad52594fd5e835cbd03b79098d70e0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00213">213</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e82bec096673bccf7ceac5207617017"></a><!-- doxytag: member="sf::Sprite::GetRotation" ref="4e82bec096673bccf7ceac5207617017" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Drawable::GetRotation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the orientation of the object.
-<p>
-Rotation is always in the range [0, 360]<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current rotation, in degrees </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fa4d6b97e7c10a82430ff9ee56009c97"></a><!-- doxytag: member="sf::Sprite::GetScale" ref="fa4d6b97e7c10a82430ff9ee56009c97" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetScale </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current scale of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current scale factor (always positive) </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="386e09c5f321a69707393851ae026f7e"></a><!-- doxytag: member="sf::Sprite::GetSize" ref="386e09c5f321a69707393851ae026f7e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> sf::Sprite::GetSize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sprite size.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Size of the sprite </dd></dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00148">148</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="524cc0591bd56e48d8f0e0e5f9c9e941"></a><!-- doxytag: member="sf::Sprite::GetSubRect" ref="524cc0591bd56e48d8f0e0e5f9c9e941" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp; sf::Sprite::GetSubRect </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the sub-rectangle of the sprite inside the source image.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Sub-rectangle </dd></dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00139">139</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3c0ac0851d6b0ebed80ae9641ff93161"></a><!-- doxytag: member="sf::Sprite::Move" ref="3c0ac0851d6b0ebed80ae9641ff93161" args="(const Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Amount of units to move the object of </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00278">278</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="501df9af956362b3e3769d80381c051b"></a><!-- doxytag: member="sf::Sprite::Move" ref="501df9af956362b3e3769d80381c051b" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: X offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Y offset</td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00268">268</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0f52de16559efc4bf748a14f43318c7b"></a><!-- doxytag: member="sf::Sprite::Render" ref="0f52de16559efc4bf748a14f43318c7b" args="(RenderTarget &amp;Target) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::Render </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Target</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-/see Drawable::Render
-<p>
-/see sfDrawable::Render
-<p>Implements <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>.</p>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7cc9df731a61f91ecd16b4a84de499aa"></a><!-- doxytag: member="sf::Sprite::Resize" ref="7cc9df731a61f91ecd16b4a84de499aa" args="(const Vector2f &amp;Size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::Resize </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Size</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Resize the sprite (by changing its scale factors) (take a 2D vector).
-<p>
-Resize the object (by changing its scale factors) (take a 2D vector) The default size is defined by the subrect.<p>
-The default size is defined by the subrect<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: New size (both coordinates must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00103">103</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="44a5075036963d312f3463caa2444e32"></a><!-- doxytag: member="sf::Sprite::Resize" ref="44a5075036963d312f3463caa2444e32" args="(float Width, float Height)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::Resize </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Height</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Resize the sprite (by changing its scale factors) (take 2 values).
-<p>
-The default size is defined by the subrect<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: New width (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: New height (must be strictly positive)</td></tr>
- </table>
-</dl>
-The default size is defined by the subrect
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00089">89</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3e7d558d0ef488485a2d3f885ff2b419"></a><!-- doxytag: member="sf::Sprite::Rotate" ref="3e7d558d0ef488485a2d3f885ff2b419" args="(float Angle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Rotate </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Angle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rotate the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Angle</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00306">306</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c969d85eaf63f072de9e963bd973e91a"></a><!-- doxytag: member="sf::Sprite::Scale" ref="c969d85eaf63f072de9e963bd973e91a" args="(const Vector2f &amp;Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Scaling factors (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00297">297</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a132c9f2f3736b7d0f6ea80303caacd"></a><!-- doxytag: member="sf::Sprite::Scale" ref="2a132c9f2f3736b7d0f6ea80303caacd" args="(float FactorX, float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FactorX</em>&nbsp;</td><td>: Scaling factor on X (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>FactorY</em>&nbsp;</td><td>: Scaling factor on Y (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00287">287</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa6558b1ae27e29cb825028473707da5"></a><!-- doxytag: member="sf::Sprite::SetBlendMode" ref="aa6558b1ae27e29cb825028473707da5" args="(Blend::Mode Mode)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetBlendMode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the blending mode for the object.
-<p>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: New blending mode</td></tr>
- </table>
-</dl>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a>
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00204">204</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="235e438555d8161f4995615f24fa0b11"></a><!-- doxytag: member="sf::Sprite::SetCenter" ref="235e438555d8161f4995615f24fa0b11" args="(const Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00171">171</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11ba1d92bc863af6d95831d216802f61"></a><!-- doxytag: member="sf::Sprite::SetCenter" ref="11ba1d92bc863af6d95831d216802f61" args="(float CenterX, float CenterY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CenterX</em>&nbsp;</td><td>: X coordinate of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CenterY</em>&nbsp;</td><td>: Y coordinate of the center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cae9f22220985e368a1b38af7644ffb"></a><!-- doxytag: member="sf::Sprite::SetColor" ref="8cae9f22220985e368a1b38af7644ffb" args="(const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetColor </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of the object.
-<p>
-The default color is white<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color</td></tr>
- </table>
-</dl>
-The default color is white
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00194">194</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3674c4c0556e4e19cb307d52f254b53c"></a><!-- doxytag: member="sf::Sprite::SetImage" ref="3674c4c0556e4e19cb307d52f254b53c" args="(const Image &amp;Img)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::SetImage </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Image.htm">Image</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Img</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the image of the sprite.
-<p>
-Set the image of the sprite.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Img</em>&nbsp;</td><td>: New image </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00063">63</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d2a279f3b13abf57cc25b2b4bd3b81ae"></a><!-- doxytag: member="sf::Sprite::SetPosition" ref="d2a279f3b13abf57cc25b2b4bd3b81ae" args="(const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00075">75</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="419da954b1f2ad1ac2ae0b9ab6e72589"></a><!-- doxytag: member="sf::Sprite::SetPosition" ref="419da954b1f2ad1ac2ae0b9ab6e72589" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d06383770eb01ffecf3d1cae6fec0ec"></a><!-- doxytag: member="sf::Sprite::SetRotation" ref="6d06383770eb01ffecf3d1cae6fec0ec" args="(float Rotation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetRotation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the orientation of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="84876c5ef7fa628c85c3c9e000e50aa1"></a><!-- doxytag: member="sf::Sprite::SetScale" ref="84876c5ef7fa628c85c3c9e000e50aa1" args="(const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: New scale (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00117">117</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b486c56c2bd137bac629f72fea66769"></a><!-- doxytag: member="sf::Sprite::SetScale" ref="0b486c56c2bd137bac629f72fea66769" args="(float ScaleX, float ScaleY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ScaleX</em>&nbsp;</td><td>: New horizontal scale (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ScaleY</em>&nbsp;</td><td>: New vertical scale (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00107">107</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cafae61a1d23bddb059d64df0e1502f"></a><!-- doxytag: member="sf::Sprite::SetScaleX" ref="0cafae61a1d23bddb059d64df0e1502f" args="(float FactorX)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00127">127</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="89e7793c74c656e5850b71d0ab34b8bf"></a><!-- doxytag: member="sf::Sprite::SetScaleY" ref="89e7793c74c656e5850b71d0ab34b8bf" args="(float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00141">141</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="54bf1e6b425c40b00dd544a9c4fb77df"></a><!-- doxytag: member="sf::Sprite::SetSubRect" ref="54bf1e6b425c40b00dd544a9c4fb77df" args="(const IntRect &amp;SubRect)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Sprite::SetSubRect </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">IntRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>SubRect</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the sub-rectangle of the sprite inside the source image.
-<p>
-By default, the subrect covers the entire source image<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SubRect</em>&nbsp;</td><td>: New sub-rectangle </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Sprite_8cpp-source.htm#l00079">79</a> of file <a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8de7bfe092736083dcf23b0dbd22b1e"></a><!-- doxytag: member="sf::Sprite::SetX" ref="c8de7bfe092736083dcf23b0dbd22b1e" args="(float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="83fecebe749c1aca9070eafd63e1a0c9"></a><!-- doxytag: member="sf::Sprite::SetY" ref="83fecebe749c1aca9070eafd63e1a0c9" args="(float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe3cb6e62921ce13806c27dc727f8945"></a><!-- doxytag: member="sf::Sprite::TransformToGlobal" ref="fe3cb6e62921ce13806c27dc727f8945" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToGlobal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00325">325</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="809f25ae0b3a2015ec8a44fe9f5a0008"></a><!-- doxytag: member="sf::Sprite::TransformToLocal" ref="809f25ae0b3a2015ec8a44fe9f5a0008" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToLocal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00316">316</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Sprite_8hpp-source.htm">Sprite.hpp</a><li><a class="el" href="Sprite_8cpp-source.htm">Sprite.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Sprite.png b/doc/html/classsf_1_1Sprite.png
deleted file mode 100755
index 1344667..0000000
--- a/doc/html/classsf_1_1Sprite.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1String-members.htm b/doc/html/classsf_1_1String-members.htm
deleted file mode 100755
index 8d0d35e..0000000
--- a/doc/html/classsf_1_1String-members.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::String Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1String.htm">sf::String</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0">Bold</a> enum value</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">Drawable</a>(const Vector2f &amp;Position=Vector2f(0, 0), const Vector2f &amp;Scale=Vector2f(1, 1), float Rotation=0.f, const Color &amp;Col=Color(255, 255, 255, 255))</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210">GetCharacterPos</a>(std::size_t Index) const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11">GetFont</a>() const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d">GetRect</a>() const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a>() const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff">GetSize</a>() const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df">GetStyle</a>() const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620">GetText</a>() const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234">Italic</a> enum value</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a>(const Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204">Regular</a> enum value</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908">Render</a>(RenderTarget &amp;Target) const </td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td><code> [protected, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a>(float Angle)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a>(float FactorX, float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a>(const Vector2f &amp;Factor)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a>(Blend::Mode Mode)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a>(float CenterX, float CenterY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a>(const Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a>(const Color &amp;Col)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003">SetFont</a>(const Font &amp;CharFont)</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a>(const Vector2f &amp;Position)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a>(float Rotation)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a>(float ScaleX, float ScaleY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a>(const Vector2f &amp;Scale)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a>(float FactorX)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a>(float FactorY)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb">SetSize</a>(float Size)</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c">SetStyle</a>(unsigned long TextStyle)</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8">SetText</a>(const Unicode::Text &amp;Text)</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a>(float X)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a>(float Y)</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692">String</a>()</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#30f985ba0047a5fbe7f9aca68083212c">String</a>(const Unicode::Text &amp;Text, const Font &amp;CharFont=Font::GetDefaultFont(), float Size=30.f)</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">Style</a> enum name</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a>(const sf::Vector2f &amp;Point) const </td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e">Underlined</a> enum value</td><td><a class="el" href="classsf_1_1String.htm">sf::String</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">~Drawable</a>()</td><td><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1String.htm b/doc/html/classsf_1_1String.htm
deleted file mode 100755
index fc25643..0000000
--- a/doc/html/classsf_1_1String.htm
+++ /dev/null
@@ -1,1436 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1String.htm">String</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::String Class Reference</h1><!-- doxytag: class="sf::String" --><!-- doxytag: inherits="sf::Drawable" --><a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> defines a graphical 2D text, that can be drawn on screen.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="String_8hpp-source.htm">String.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::String:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1String.png" usemap="#sf::String_map" border="0" alt=""></center>
-<map name="sf::String_map">
-<area href="classsf_1_1Drawable.htm" alt="sf::Drawable" shape="rect" coords="0,0,82,24">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1String-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">Style</a> { <br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204">Regular</a> = 0,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0">Bold</a> = 1 &lt;&lt; 0,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234">Italic</a> = 1 &lt;&lt; 1,
-<br>
-&nbsp;&nbsp;<a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e">Underlined</a> = 1 &lt;&lt; 2
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate the string drawing styles. <a href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692">String</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#9563a4e93f692e0c8e8702b374ef8692"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#30f985ba0047a5fbe7f9aca68083212c">String</a> (const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;Text, const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;CharFont=Font::GetDefaultFont(), float Size=30.f)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the string from any kind of text. <a href="#30f985ba0047a5fbe7f9aca68083212c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8">SetText</a> (const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;Text)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the text (from any kind of string). <a href="#a4b56eae5ca5f6f42c6b1c53c0fa83a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003">SetFont</a> (const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;CharFont)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the font of the string. <a href="#134ccb47176e51916bbe6b0708a21003"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb">SetSize</a> (float Size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size of the string The default size is 30. <a href="#20b0ca616784aa81c64d6af5a0cebafb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c">SetStyle</a> (unsigned long TextStyle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the style of the text The default style is Regular. <a href="#93846bbdb49ba0171fe4c53eb9a84a6c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620">GetText</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the text (the returned text can be converted implicitely to any kind of string). <a href="#97246cca36ef4d5a978b71d9f6f94620"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11">GetFont</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the font used by the string. <a href="#6018108988612822d2b3c1b1f57d2f11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff">GetSize</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of the characters. <a href="#d1e689d0ff657da70de23b101b38d9ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df">GetStyle</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the style of the text. <a href="#61581f8e8a8c8d86debf9364380e33df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210">GetCharacterPos</a> (std::size_t Index) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the visual position of the Index-th character of the string, in coordinates relative to the string (note : translation, center, rotation and scale are not applied). <a href="#d471fee3d4dda7fefb9ff610d049f210"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d">GetRect</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string rectangle on screen. <a href="#1a5283b36b1cfba41d1dcd42ff33002d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">SetPosition</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take 2 values). <a href="#419da954b1f2ad1ac2ae0b9ab6e72589"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">SetPosition</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Position)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position of the object (take a 2D vector). <a href="#d2a279f3b13abf57cc25b2b4bd3b81ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">SetX</a> (float X)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X position of the object. <a href="#c8de7bfe092736083dcf23b0dbd22b1e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">SetY</a> (float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y position of the object. <a href="#83fecebe749c1aca9070eafd63e1a0c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">SetScale</a> (float ScaleX, float ScaleY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take 2 values). <a href="#0b486c56c2bd137bac629f72fea66769"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#84876c5ef7fa628c85c3c9e000e50aa1">SetScale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Scale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the scale of the object (take a 2D vector). <a href="#84876c5ef7fa628c85c3c9e000e50aa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">SetScaleX</a> (float FactorX)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the X scale factor of the object. <a href="#0cafae61a1d23bddb059d64df0e1502f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">SetScaleY</a> (float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Y scale factor of the object. <a href="#89e7793c74c656e5850b71d0ab34b8bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">SetCenter</a> (float CenterX, float CenterY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take 2 values). <a href="#11ba1d92bc863af6d95831d216802f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#235e438555d8161f4995615f24fa0b11">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector). <a href="#235e438555d8161f4995615f24fa0b11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">SetRotation</a> (float Rotation)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of the object. <a href="#6d06383770eb01ffecf3d1cae6fec0ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">SetColor</a> (const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;Col)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color of the object. <a href="#8cae9f22220985e368a1b38af7644ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">SetBlendMode</a> (<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> Mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the blending mode for the object. <a href="#aa6558b1ae27e29cb825028473707da5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">GetPosition</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of the object. <a href="#9ad52594fd5e835cbd03b79098d70e0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">GetScale</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current scale of the object. <a href="#fa4d6b97e7c10a82430ff9ee56009c97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the object. <a href="#de634efe8d6264282acc564fa5ea77c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">GetRotation</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the orientation of the object. <a href="#4e82bec096673bccf7ceac5207617017"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">GetColor</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the color of the object. <a href="#a2a028c4a975b5ed6d5a560a1c44e0c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">GetBlendMode</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current blending mode. <a href="#b6446c4717a2800cad85db55cb55409a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take 2 values). <a href="#501df9af956362b3e3769d80381c051b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3c0ac0851d6b0ebed80ae9641ff93161">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the object of a given offset (take a 2D vector). <a href="#3c0ac0851d6b0ebed80ae9641ff93161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">Scale</a> (float FactorX, float FactorY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take 2 values). <a href="#2a132c9f2f3736b7d0f6ea80303caacd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">Scale</a> (const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scale the object (take a 2D vector). <a href="#c969d85eaf63f072de9e963bd973e91a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">Rotate</a> (float Angle)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the object. <a href="#3e7d558d0ef488485a2d3f885ff2b419"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">TransformToLocal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point). <a href="#809f25ae0b3a2015ec8a44fe9f5a0008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">TransformToGlobal</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Point) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point). <a href="#fe3cb6e62921ce13806c27dc727f8945"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908">Render</a> (<a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;Target) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">/see Drawable::Render <a href="#f11de71bf9d73a75c468d1e161181908"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">GetMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transform matrix of the drawable. <a href="#c659a89e42063d13aa9ebe2b534d404e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">GetInverseMatrix</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse transform matrix of the drawable. <a href="#48238d5726104ba7ddb42f21fc5d5b2f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> defines a graphical 2D text, that can be drawn on screen.
-<p>Definition at line <a class="el" href="String_8hpp-source.htm#l00044">44</a> of file <a class="el" href="String_8hpp-source.htm">String.hpp</a>.</p>
-<hr><h2>Member Enumeration Documentation</h2>
-<a class="anchor" name="eedf6f2453ae7b88ddf0f7427968a6d8"></a><!-- doxytag: member="sf::String::Style" ref="eedf6f2453ae7b88ddf0f7427968a6d8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">sf::String::Style</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enumerate the string drawing styles.
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204"></a><!-- doxytag: member="Regular" ref="eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204" args="" -->Regular</em>&nbsp;</td><td>
-Regular characters, no style. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0"></a><!-- doxytag: member="Bold" ref="eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0" args="" -->Bold</em>&nbsp;</td><td>
-Characters are bold. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234"></a><!-- doxytag: member="Italic" ref="eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234" args="" -->Italic</em>&nbsp;</td><td>
-Characters are in italic. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e"></a><!-- doxytag: member="Underlined" ref="eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e" args="" -->Underlined</em>&nbsp;</td><td>
-Characters are underlined. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8hpp-source.htm#l00051">51</a> of file <a class="el" href="String_8hpp-source.htm">String.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="9563a4e93f692e0c8e8702b374ef8692"></a><!-- doxytag: member="sf::String::String" ref="9563a4e93f692e0c8e8702b374ef8692" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::String::String </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00039">39</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="30f985ba0047a5fbe7f9aca68083212c"></a><!-- doxytag: member="sf::String::String" ref="30f985ba0047a5fbe7f9aca68083212c" args="(const Unicode::Text &amp;Text, const Font &amp;CharFont=Font::GetDefaultFont(), float Size=30.f)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::String::String </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Text</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>CharFont</em> = <code>Font::GetDefaultFont()</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Size</em> = <code>30.f</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the string from any kind of text.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Text</em>&nbsp;</td><td>: Text assigned to the string </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a></em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> used to draw the string (SFML built-in font by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: Characters size (30 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00052">52</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b6446c4717a2800cad85db55cb55409a"></a><!-- doxytag: member="sf::String::GetBlendMode" ref="b6446c4717a2800cad85db55cb55409a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a> sf::Drawable::GetBlendMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current blending mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current blending mode </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00258">258</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="de634efe8d6264282acc564fa5ea77c0"></a><!-- doxytag: member="sf::String::GetCenter" ref="de634efe8d6264282acc564fa5ea77c0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position of the center </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00231">231</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d471fee3d4dda7fefb9ff610d049f210"></a><!-- doxytag: member="sf::String::GetCharacterPos" ref="d471fee3d4dda7fefb9ff610d049f210" args="(std::size_t Index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::String::GetCharacterPos </td>
- <td>(</td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Return the visual position of the Index-th character of the string, in coordinates relative to the string (note : translation, center, rotation and scale are not applied).
-<p>
-Return the visual position of the Index-th character of the string, in coordinates relative to the string (note : translation, center, rotation and scale are not applied).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of the character</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Position of the Index-th character (end of string if Index is out of range) </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00153">153</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a2a028c4a975b5ed6d5a560a1c44e0c8"></a><!-- doxytag: member="sf::String::GetColor" ref="a2a028c4a975b5ed6d5a560a1c44e0c8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp; sf::Drawable::GetColor </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the color of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current color </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00249">249</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6018108988612822d2b3c1b1f57d2f11"></a><!-- doxytag: member="sf::String::GetFont" ref="6018108988612822d2b3c1b1f57d2f11" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp; sf::String::GetFont </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the font used by the string.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> used </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00124">124</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="48238d5726104ba7ddb42f21fc5d5b2f"></a><!-- doxytag: member="sf::String::GetInverseMatrix" ref="48238d5726104ba7ddb42f21fc5d5b2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetInverseMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the inverse transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Inverse transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00350">350</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c659a89e42063d13aa9ebe2b534d404e"></a><!-- doxytag: member="sf::String::GetMatrix" ref="c659a89e42063d13aa9ebe2b534d404e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Matrix3.htm">Matrix3</a> &amp; sf::Drawable::GetMatrix </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the transform matrix of the drawable.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transform matrix </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00334">334</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9ad52594fd5e835cbd03b79098d70e0b"></a><!-- doxytag: member="sf::String::GetPosition" ref="9ad52594fd5e835cbd03b79098d70e0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetPosition </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the position of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current position </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00213">213</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1a5283b36b1cfba41d1dcd42ff33002d"></a><!-- doxytag: member="sf::String::GetRect" ref="1a5283b36b1cfba41d1dcd42ff33002d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Rect.htm">FloatRect</a> sf::String::GetRect </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the string rectangle on screen.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Rectangle contaning the string in screen coordinates </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00195">195</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="4e82bec096673bccf7ceac5207617017"></a><!-- doxytag: member="sf::String::GetRotation" ref="4e82bec096673bccf7ceac5207617017" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Drawable::GetRotation </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the orientation of the object.
-<p>
-Rotation is always in the range [0, 360]<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current rotation, in degrees </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fa4d6b97e7c10a82430ff9ee56009c97"></a><!-- doxytag: member="sf::String::GetScale" ref="fa4d6b97e7c10a82430ff9ee56009c97" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp; sf::Drawable::GetScale </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current scale of the object.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current scale factor (always positive) </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00222">222</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d1e689d0ff657da70de23b101b38d9ff"></a><!-- doxytag: member="sf::String::GetSize" ref="d1e689d0ff657da70de23b101b38d9ff" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::String::GetSize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the size of the characters.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Size of the characters </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00133">133</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="61581f8e8a8c8d86debf9364380e33df"></a><!-- doxytag: member="sf::String::GetStyle" ref="61581f8e8a8c8d86debf9364380e33df" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned long sf::String::GetStyle </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the style of the text.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current string style (combination of <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">Style</a> enum values) </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00142">142</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="97246cca36ef4d5a978b71d9f6f94620"></a><!-- doxytag: member="sf::String::GetText" ref="97246cca36ef4d5a978b71d9f6f94620" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp; sf::String::GetText </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the text (the returned text can be converted implicitely to any kind of string).
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>String's text </dd></dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00115">115</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3c0ac0851d6b0ebed80ae9641ff93161"></a><!-- doxytag: member="sf::String::Move" ref="3c0ac0851d6b0ebed80ae9641ff93161" args="(const Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Amount of units to move the object of </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00278">278</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="501df9af956362b3e3769d80381c051b"></a><!-- doxytag: member="sf::String::Move" ref="501df9af956362b3e3769d80381c051b" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the object of a given offset (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: X offset </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Y offset</td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00268">268</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f11de71bf9d73a75c468d1e161181908"></a><!-- doxytag: member="sf::String::Render" ref="f11de71bf9d73a75c468d1e161181908" args="(RenderTarget &amp;Target) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::String::Render </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1RenderTarget.htm">RenderTarget</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Target</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-/see Drawable::Render
-<p>
-/see sfDrawable::Render
-<p>Implements <a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>.</p>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00213">213</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3e7d558d0ef488485a2d3f885ff2b419"></a><!-- doxytag: member="sf::String::Rotate" ref="3e7d558d0ef488485a2d3f885ff2b419" args="(float Angle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Rotate </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Angle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rotate the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Angle</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00306">306</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c969d85eaf63f072de9e963bd973e91a"></a><!-- doxytag: member="sf::String::Scale" ref="c969d85eaf63f072de9e963bd973e91a" args="(const Vector2f &amp;Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Scaling factors (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00297">297</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2a132c9f2f3736b7d0f6ea80303caacd"></a><!-- doxytag: member="sf::String::Scale" ref="2a132c9f2f3736b7d0f6ea80303caacd" args="(float FactorX, float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::Scale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scale the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>FactorX</em>&nbsp;</td><td>: Scaling factor on X (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>FactorY</em>&nbsp;</td><td>: Scaling factor on Y (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00287">287</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa6558b1ae27e29cb825028473707da5"></a><!-- doxytag: member="sf::String::SetBlendMode" ref="aa6558b1ae27e29cb825028473707da5" args="(Blend::Mode Mode)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetBlendMode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Blend::Mode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the blending mode for the object.
-<p>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a><p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: New blending mode</td></tr>
- </table>
-</dl>
-The default blend mode is <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" title="Pixel = Src * a + Dest * (1 - a).">Blend::Alpha</a>
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00204">204</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="235e438555d8161f4995615f24fa0b11"></a><!-- doxytag: member="sf::String::SetCenter" ref="235e438555d8161f4995615f24fa0b11" args="(const Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take a 2D vector).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00171">171</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="11ba1d92bc863af6d95831d216802f61"></a><!-- doxytag: member="sf::String::SetCenter" ref="11ba1d92bc863af6d95831d216802f61" args="(float CenterX, float CenterY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>CenterY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).
-<p>
-Set the center of the object, in coordinates relative to the top-left of the object (take 2 values).<p>
-The default center is (0, 0)<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>CenterX</em>&nbsp;</td><td>: X coordinate of the center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CenterY</em>&nbsp;</td><td>: Y coordinate of the center</td></tr>
- </table>
-</dl>
-The default center is (0, 0)
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00157">157</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cae9f22220985e368a1b38af7644ffb"></a><!-- doxytag: member="sf::String::SetColor" ref="8cae9f22220985e368a1b38af7644ffb" args="(const Color &amp;Col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetColor </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Color.htm">Color</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Col</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the color of the object.
-<p>
-The default color is white<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Col</em>&nbsp;</td><td>: New color</td></tr>
- </table>
-</dl>
-The default color is white
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00194">194</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="134ccb47176e51916bbe6b0708a21003"></a><!-- doxytag: member="sf::String::SetFont" ref="134ccb47176e51916bbe6b0708a21003" args="(const Font &amp;CharFont)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::String::SetFont </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Font.htm">Font</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>CharFont</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the font of the string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a></em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">Font</a> to use </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00075">75</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d2a279f3b13abf57cc25b2b4bd3b81ae"></a><!-- doxytag: member="sf::String::SetPosition" ref="d2a279f3b13abf57cc25b2b4bd3b81ae" args="(const Vector2f &amp;Position)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Position</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Position</em>&nbsp;</td><td>: New position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00075">75</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="419da954b1f2ad1ac2ae0b9ab6e72589"></a><!-- doxytag: member="sf::String::SetPosition" ref="419da954b1f2ad1ac2ae0b9ab6e72589" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetPosition </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the position of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00065">65</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d06383770eb01ffecf3d1cae6fec0ec"></a><!-- doxytag: member="sf::String::SetRotation" ref="6d06383770eb01ffecf3d1cae6fec0ec" args="(float Rotation)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetRotation </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Rotation</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the orientation of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Rotation</em>&nbsp;</td><td>: Angle of rotation, in degrees </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00180">180</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="84876c5ef7fa628c85c3c9e000e50aa1"></a><!-- doxytag: member="sf::String::SetScale" ref="84876c5ef7fa628c85c3c9e000e50aa1" args="(const Vector2f &amp;Scale)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Scale</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take a 2D vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Scale</em>&nbsp;</td><td>: New scale (both values must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00117">117</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b486c56c2bd137bac629f72fea66769"></a><!-- doxytag: member="sf::String::SetScale" ref="0b486c56c2bd137bac629f72fea66769" args="(float ScaleX, float ScaleY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScale </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>ScaleY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the scale of the object (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ScaleX</em>&nbsp;</td><td>: New horizontal scale (must be strictly positive) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ScaleY</em>&nbsp;</td><td>: New vertical scale (must be strictly positive) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00107">107</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cafae61a1d23bddb059d64df0e1502f"></a><!-- doxytag: member="sf::String::SetScaleX" ref="0cafae61a1d23bddb059d64df0e1502f" args="(float FactorX)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorX</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00127">127</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="89e7793c74c656e5850b71d0ab34b8bf"></a><!-- doxytag: member="sf::String::SetScaleY" ref="89e7793c74c656e5850b71d0ab34b8bf" args="(float FactorY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetScaleY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>FactorY</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y scale factor of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y scale factor </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00141">141</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="20b0ca616784aa81c64d6af5a0cebafb"></a><!-- doxytag: member="sf::String::SetSize" ref="20b0ca616784aa81c64d6af5a0cebafb" args="(float Size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::String::SetSize </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Size</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the size of the string The default size is 30.
-<p>
-Set the size of the string.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>: New size, in pixels </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00088">88</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="93846bbdb49ba0171fe4c53eb9a84a6c"></a><!-- doxytag: member="sf::String::SetStyle" ref="93846bbdb49ba0171fe4c53eb9a84a6c" args="(unsigned long TextStyle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::String::SetStyle </td>
- <td>(</td>
- <td class="paramtype">unsigned long&nbsp;</td>
- <td class="paramname"> <em>TextStyle</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the style of the text The default style is Regular.
-<p>
-Set the style of the text The default style is Regular.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>TextStyle</em>&nbsp;</td><td>: New text style, (combination of <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">Style</a> enum values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00102">102</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a4b56eae5ca5f6f42c6b1c53c0fa83a8"></a><!-- doxytag: member="sf::String::SetText" ref="a4b56eae5ca5f6f42c6b1c53c0fa83a8" args="(const Unicode::Text &amp;Text)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::String::SetText </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Unicode_1_1Text.htm">Unicode::Text</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Text</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the text (from any kind of string).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Text</em>&nbsp;</td><td>: New text </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="String_8cpp-source.htm#l00065">65</a> of file <a class="el" href="String_8cpp-source.htm">String.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8de7bfe092736083dcf23b0dbd22b1e"></a><!-- doxytag: member="sf::String::SetX" ref="c8de7bfe092736083dcf23b0dbd22b1e" args="(float X)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetX </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the X position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: New X coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00085">85</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="83fecebe749c1aca9070eafd63e1a0c9"></a><!-- doxytag: member="sf::String::SetY" ref="83fecebe749c1aca9070eafd63e1a0c9" args="(float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Drawable::SetY </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the Y position of the object.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: New Y coordinate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00096">96</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe3cb6e62921ce13806c27dc727f8945"></a><!-- doxytag: member="sf::String::TransformToGlobal" ref="fe3cb6e62921ce13806c27dc727f8945" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToGlobal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from local coordinates into global coordinates (ie it applies the object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00325">325</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="809f25ae0b3a2015ec8a44fe9f5a0008"></a><!-- doxytag: member="sf::String::TransformToLocal" ref="809f25ae0b3a2015ec8a44fe9f5a0008" args="(const sf::Vector2f &amp;Point) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> sf::Drawable::TransformToLocal </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Point</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inherited]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).
-<p>
-Transform a point from global coordinates into local coordinates (ie it applies the inverse of object's center, translation, rotation and scale to the point).<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Point</em>&nbsp;</td><td>: Point to transform</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Transformed point </dd></dl>
-
-<p>Definition at line <a class="el" href="Drawable_8cpp-source.htm#l00316">316</a> of file <a class="el" href="Drawable_8cpp-source.htm">Drawable.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="String_8hpp-source.htm">String.hpp</a><li><a class="el" href="String_8cpp-source.htm">String.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1String.png b/doc/html/classsf_1_1String.png
deleted file mode 100755
index 428e946..0000000
--- a/doc/html/classsf_1_1String.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Thread-members.htm b/doc/html/classsf_1_1Thread-members.htm
deleted file mode 100755
index 8948ed7..0000000
--- a/doc/html/classsf_1_1Thread-members.htm
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Thread Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Thread.htm">sf::Thread</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>FuncType</b> typedef (defined in <a class="el" href="classsf_1_1Thread.htm">sf::Thread</a>)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">Thread</a>(FuncType Function, void *UserData=NULL)</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2">Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">~Thread</a>()</td><td><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a></td><td><code> [virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Thread.htm b/doc/html/classsf_1_1Thread.htm
deleted file mode 100755
index e582f63..0000000
--- a/doc/html/classsf_1_1Thread.htm
+++ /dev/null
@@ -1,255 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Thread.htm">Thread</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Thread Class Reference</h1><!-- doxytag: class="sf::Thread" --><!-- doxytag: inherits="sf::NonCopyable" --><a class="el" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> defines an easy way to manipulate a thread.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Win32_2Thread_8hpp-source.htm">Thread.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Thread:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Thread.png" usemap="#sf::Thread_map" border="0" alt=""></center>
-<map name="sf::Thread_map">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="81,0,233,24">
-<area href="classsf_1_1SoundRecorder.htm" alt="sf::SoundRecorder" shape="rect" coords="0,112,152,136">
-<area href="classsf_1_1SoundStream.htm" alt="sf::SoundStream" shape="rect" coords="162,112,314,136">
-<area href="classsf_1_1SoundBufferRecorder.htm" alt="sf::SoundBufferRecorder" shape="rect" coords="0,168,152,192">
-<area href="classsf_1_1Music.htm" alt="sf::Music" shape="rect" coords="162,168,314,192">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Thread-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab6e6f11eb38f106cd7c1149763a11b8"></a><!-- doxytag: member="sf::Thread::FuncType" ref="ab6e6f11eb38f106cd7c1149763a11b8" args=")(void *)" -->
-typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>FuncType</b> )(void *)</td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">Thread</a> (FuncType Function, void *UserData=NULL)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the thread from a function pointer. <a href="#5a5f6a41323c0983d6c0f4e496f4a173"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">~Thread</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <a href="#f77942fc1730af7c31bc4c3a913a9c1d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">Launch</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create and run the thread. <a href="#046df871f73d3cf452d1c72bcc143642"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">Wait</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until the thread finishes. <a href="#67f3c609fdf99688531dbfae461ea4d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">Terminate</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the thread Terminating a thread with this function is not safe, you should rather try to make the thread function terminate by itself. <a href="#603d9493c6a845188f05c2eca48dc41b"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Thread.htm#d719b83ce7b02b56db919d423a69f1a2">Thread</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#d719b83ce7b02b56db919d423a69f1a2"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> defines an easy way to manipulate a thread.
-<p>
-There are two ways to use <a class="el" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> :<ul>
-<li>Inherit from it and override the Run() virtual function</li><li>Construct a <a class="el" href="classsf_1_1Thread.htm" title="Thread defines an easy way to manipulate a thread.">Thread</a> instance and pass it a function pointer to call </li></ul>
-
-<p>Definition at line <a class="el" href="Win32_2Thread_8hpp-source.htm#l00044">44</a> of file <a class="el" href="Win32_2Thread_8hpp-source.htm">Win32/Thread.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="5a5f6a41323c0983d6c0f4e496f4a173"></a><!-- doxytag: member="sf::Thread::Thread" ref="5a5f6a41323c0983d6c0f4e496f4a173" args="(FuncType Function, void *UserData=NULL)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Thread::Thread </td>
- <td>(</td>
- <td class="paramtype">Thread::FuncType&nbsp;</td>
- <td class="paramname"> <em>Function</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">void *&nbsp;</td>
- <td class="paramname"> <em>UserData</em> = <code>NULL</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the thread from a function pointer.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Function</em>&nbsp;</td><td>: Entry point of the thread </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>UserData</em>&nbsp;</td><td>: Data to pass to the thread function (NULL by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00050">50</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f77942fc1730af7c31bc4c3a913a9c1d"></a><!-- doxytag: member="sf::Thread::~Thread" ref="f77942fc1730af7c31bc4c3a913a9c1d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Thread::~Thread </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Virtual destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00062">62</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d719b83ce7b02b56db919d423a69f1a2"></a><!-- doxytag: member="sf::Thread::Thread" ref="d719b83ce7b02b56db919d423a69f1a2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Thread::Thread </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00038">38</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="046df871f73d3cf452d1c72bcc143642"></a><!-- doxytag: member="sf::Thread::Launch" ref="046df871f73d3cf452d1c72bcc143642" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Thread::Launch </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create and run the thread.
-<p>
-
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00072">72</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="603d9493c6a845188f05c2eca48dc41b"></a><!-- doxytag: member="sf::Thread::Terminate" ref="603d9493c6a845188f05c2eca48dc41b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Thread::Terminate </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Terminate the thread Terminating a thread with this function is not safe, you should rather try to make the thread function terminate by itself.
-<p>
-Terminate the thread Terminating a thread with this function is not safe, you should rather try to make the thread function terminate by itself.
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00109">109</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="67f3c609fdf99688531dbfae461ea4d2"></a><!-- doxytag: member="sf::Thread::Wait" ref="67f3c609fdf99688531dbfae461ea4d2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Thread::Wait </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wait until the thread finishes.
-<p>
-
-<p>Definition at line <a class="el" href="Thread_8cpp-source.htm#l00089">89</a> of file <a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Win32_2Thread_8hpp-source.htm">Win32/Thread.hpp</a><li><a class="el" href="Thread_8cpp-source.htm">Thread.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Thread.png b/doc/html/classsf_1_1Thread.png
deleted file mode 100755
index baba4d5..0000000
--- a/doc/html/classsf_1_1Thread.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1Unicode-members.htm b/doc/html/classsf_1_1Unicode-members.htm
deleted file mode 100755
index 4717ecf..0000000
--- a/doc/html/classsf_1_1Unicode-members.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Unicode Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1">ANSIToUTF32</a>(In Begin, In End, Out Output, const std::locale &amp;Locale=GetDefaultLocale())</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a">ANSIToUTF32</a>(In Begin, In End, Out Output, const std::locale &amp;Locale)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#42fea8bee18a53d10bf858273e4714a5">GetUTF16Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995">GetUTF16Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#f5c502326c638af92a8ef7d40b119637">GetUTF32Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#65205382fffa75bbc3137b89be329845">GetUTF32Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#3fc67af453a678d16c4913197ddbe5c3">GetUTF8Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#e527bd860c1755db62bd30153abf06cd">GetUTF8Length</a>(In Begin, In End)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>UTF16String</b> typedef (defined in <a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a>)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73">UTF16ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8">UTF16ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#ffa58d1796721da957505354d48e2e74">UTF16ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56">UTF16ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>UTF32String</b> typedef (defined in <a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a>)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#f6acf0453625fe05fc7a86f4cc9a5cf1">UTF32ToANSI</a>(In Begin, In End, Out Output, char Replacement= '?', const std::locale &amp;Locale=GetDefaultLocale())</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#37628016674129d709a01a7e82cc19d4">UTF32ToANSI</a>(In Begin, In End, Out Output, char Replacement, const std::locale &amp;Locale)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b">UTF32ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#c11fc704e8e94baf623553807fe1ddde">UTF32ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#46bba10d3a323183c29b4cb288d053c1">UTF32ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081">UTF32ToUTF8</a>(In Begin, In End, Out Output, Uint8 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">UTF8String</a> typedef</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#576b17100b065f65f3594c50a070b378">UTF8ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e">UTF8ToUTF16</a>(In Begin, In End, Out Output, Uint16 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545">UTF8ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement= '?')</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode.htm#6dc3254ad3495eeca06443cbee0298be">UTF8ToUTF32</a>(In Begin, In End, Out Output, Uint32 Replacement)</td><td><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Unicode.htm b/doc/html/classsf_1_1Unicode.htm
deleted file mode 100755
index f5d5fe0..0000000
--- a/doc/html/classsf_1_1Unicode.htm
+++ /dev/null
@@ -1,1229 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Unicode.htm">Unicode</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Unicode Class Reference</h1><!-- doxytag: class="sf::Unicode" -->Provides utility functions to convert from and to any unicode and ASCII encoding.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Unicode-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode_1_1Text.htm">Text</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class is an abstract definition of a unicode text, it can be converted from and to any kind of string and encoding. <a href="classsf_1_1Unicode_1_1Text.htm#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::basic_string&lt; Uint8 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">UTF8String</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element doesn't necessarily maps to one character ; only an UTF32 element is wide enough to hold all possible unicode values. <a href="#3c6081f88e93693ff8e713053982a9f9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="44c61ac017ac0b9d2cba69dd9b1f475e"></a><!-- doxytag: member="sf::Unicode::UTF16String" ref="44c61ac017ac0b9d2cba69dd9b1f475e" args="" -->
-typedef std::basic_string&lt; Uint16 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>UTF16String</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a928ecac4c3ace69888bb209bc75ffae"></a><!-- doxytag: member="sf::Unicode::UTF32String" ref="a928ecac4c3ace69888bb209bc75ffae" args="" -->
-typedef std::basic_string&lt; Uint32 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>UTF32String</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#37628016674129d709a01a7e82cc19d4">UTF32ToANSI</a> (In Begin, In End, Out Output, char Replacement, const std::locale &amp;Locale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an ANSI characters range, using the given locale. <a href="#37628016674129d709a01a7e82cc19d4"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a">ANSIToUTF32</a> (In Begin, In End, Out Output, const std::locale &amp;Locale)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an ANSI characters range to an UTF-32 characters range, using the given locale. <a href="#5390e635f81fe5961899080c91b1c40a"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e">UTF8ToUTF16</a> (In Begin, In End, Out Output, Uint16 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-8 characters range to an UTF-16 characters range, using the given locale. <a href="#86ba5a2f4d2a85b287d1f0ff94f1eb5e"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#6dc3254ad3495eeca06443cbee0298be">UTF8ToUTF32</a> (In Begin, In End, Out Output, Uint32 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-8 characters range to an UTF-32 characters range, using the given locale. <a href="#6dc3254ad3495eeca06443cbee0298be"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56">UTF16ToUTF8</a> (In Begin, In End, Out Output, Uint8 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-16 characters range to an UTF-8 characters range, using the given locale. <a href="#70dd49ecc62e55bcda250d789371dc56"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8">UTF16ToUTF32</a> (In Begin, In End, Out Output, Uint32 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-16 characters range to an UTF-32 characters range, using the given locale. <a href="#836263c4d41ef7b2d146e6564a9e0fe8"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081">UTF32ToUTF8</a> (In Begin, In End, Out Output, Uint8 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an UTF-8 characters range, using the given locale. <a href="#456a48adebef490996f82f4841e26081"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#c11fc704e8e94baf623553807fe1ddde">UTF32ToUTF16</a> (In Begin, In End, Out Output, Uint16 Replacement)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an UTF-16 characters range, using the given locale. <a href="#c11fc704e8e94baf623553807fe1ddde"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#e527bd860c1755db62bd30153abf06cd">GetUTF8Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-8 string. <a href="#e527bd860c1755db62bd30153abf06cd"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995">GetUTF16Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-16 string. <a href="#27699a022a186db9eb6a8d3c973ec995"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#65205382fffa75bbc3137b89be329845">GetUTF32Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-32 string. <a href="#65205382fffa75bbc3137b89be329845"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#f6acf0453625fe05fc7a86f4cc9a5cf1">UTF32ToANSI</a> (In Begin, In End, Out Output, char Replacement= '?', const std::locale &amp;Locale=GetDefaultLocale())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an ANSI characters range, using the given locale. <a href="#f6acf0453625fe05fc7a86f4cc9a5cf1"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1">ANSIToUTF32</a> (In Begin, In End, Out Output, const std::locale &amp;Locale=GetDefaultLocale())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an ANSI characters range to an UTF-32 characters range, using the given locale. <a href="#164436a4e19c18cc518e9d8d921481f1"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#576b17100b065f65f3594c50a070b378">UTF8ToUTF16</a> (In Begin, In End, Out Output, Uint16 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-8 characters range to an UTF-16 characters range, using the given locale. <a href="#576b17100b065f65f3594c50a070b378"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545">UTF8ToUTF32</a> (In Begin, In End, Out Output, Uint32 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-8 characters range to an UTF-32 characters range, using the given locale. <a href="#c4a67f01b57053b697c573b0ab6a9545"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#ffa58d1796721da957505354d48e2e74">UTF16ToUTF8</a> (In Begin, In End, Out Output, Uint8 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-16 characters range to an UTF-8 characters range, using the given locale. <a href="#ffa58d1796721da957505354d48e2e74"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73">UTF16ToUTF32</a> (In Begin, In End, Out Output, Uint32 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-16 characters range to an UTF-32 characters range, using the given locale. <a href="#5e9edaac35984964ef3ad353f98f9f73"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#46bba10d3a323183c29b4cb288d053c1">UTF32ToUTF8</a> (In Begin, In End, Out Output, Uint8 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an UTF-8 characters range, using the given locale. <a href="#46bba10d3a323183c29b4cb288d053c1"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In , typename Out &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static Out&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b">UTF32ToUTF16</a> (In Begin, In End, Out Output, Uint16 Replacement= '?')</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic function to convert an UTF-32 characters range to an UTF-16 characters range, using the given locale. <a href="#b4b5c6e82a1ab1d9ed775653f082d58b"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#3fc67af453a678d16c4913197ddbe5c3">GetUTF8Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-8 string. <a href="#3fc67af453a678d16c4913197ddbe5c3"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#42fea8bee18a53d10bf858273e4714a5">GetUTF16Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-16 string. <a href="#42fea8bee18a53d10bf858273e4714a5"></a><br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename In &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">static std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode.htm#f5c502326c638af92a8ef7d40b119637">GetUTF32Length</a> (In Begin, In End)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of characters composing an UTF-32 string. <a href="#f5c502326c638af92a8ef7d40b119637"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides utility functions to convert from and to any unicode and ASCII encoding.
-<p>Definition at line <a class="el" href="Unicode_8hpp-source.htm#l00044">44</a> of file <a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a>.</p>
-<hr><h2>Member Typedef Documentation</h2>
-<a class="anchor" name="3c6081f88e93693ff8e713053982a9f9"></a><!-- doxytag: member="sf::Unicode::UTF8String" ref="3c6081f88e93693ff8e713053982a9f9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef std::basic_string&lt;Uint8&gt; <a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">sf::Unicode::UTF8String</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Define a string type for each encoding Warning : in UTF8 and UTF16 strings, one element doesn't necessarily maps to one character ; only an UTF32 element is wide enough to hold all possible unicode values.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8hpp-source.htm#l00054">54</a> of file <a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="5390e635f81fe5961899080c91b1c40a"></a><!-- doxytag: member="sf::Unicode::ANSIToUTF32" ref="5390e635f81fe5961899080c91b1c40a" args="(In Begin, In End, Out Output, const std::locale &amp;Locale)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::ANSIToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::locale &amp;&nbsp;</td>
- <td class="paramname"> <em>Locale</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an ANSI characters range to an UTF-32 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00067">67</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="164436a4e19c18cc518e9d8d921481f1"></a><!-- doxytag: member="sf::Unicode::ANSIToUTF32" ref="164436a4e19c18cc518e9d8d921481f1" args="(In Begin, In End, Out Output, const std::locale &amp;Locale=GetDefaultLocale())" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::ANSIToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::locale &amp;&nbsp;</td>
- <td class="paramname"> <em>Locale</em> = <code>GetDefaultLocale()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an ANSI characters range to an UTF-32 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Locale</em>&nbsp;</td><td>: Locale to use for conversion (uses the current one by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="27699a022a186db9eb6a8d3c973ec995"></a><!-- doxytag: member="sf::Unicode::GetUTF16Length" ref="27699a022a186db9eb6a8d3c973ec995" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::Unicode::GetUTF16Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-16 string.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00442">442</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="42fea8bee18a53d10bf858273e4714a5"></a><!-- doxytag: member="sf::Unicode::GetUTF16Length" ref="42fea8bee18a53d10bf858273e4714a5" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static std::size_t sf::Unicode::GetUTF16Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-16 string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of the characters in the string </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="65205382fffa75bbc3137b89be329845"></a><!-- doxytag: member="sf::Unicode::GetUTF32Length" ref="65205382fffa75bbc3137b89be329845" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::Unicode::GetUTF32Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-32 string.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00471">471</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f5c502326c638af92a8ef7d40b119637"></a><!-- doxytag: member="sf::Unicode::GetUTF32Length" ref="f5c502326c638af92a8ef7d40b119637" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static std::size_t sf::Unicode::GetUTF32Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-32 string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of the characters in the string </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="e527bd860c1755db62bd30153abf06cd"></a><!-- doxytag: member="sf::Unicode::GetUTF8Length" ref="e527bd860c1755db62bd30153abf06cd" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::Unicode::GetUTF8Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-8 string.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00422">422</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3fc67af453a678d16c4913197ddbe5c3"></a><!-- doxytag: member="sf::Unicode::GetUTF8Length" ref="3fc67af453a678d16c4913197ddbe5c3" args="(In Begin, In End)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static std::size_t sf::Unicode::GetUTF8Length </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the number of characters composing an UTF-8 string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of the characters in the string </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="836263c4d41ef7b2d146e6564a9e0fe8"></a><!-- doxytag: member="sf::Unicode::UTF16ToUTF32" ref="836263c4d41ef7b2d146e6564a9e0fe8" args="(In Begin, In End, Out Output, Uint32 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF16ToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-16 characters range to an UTF-32 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00280">280</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5e9edaac35984964ef3ad353f98f9f73"></a><!-- doxytag: member="sf::Unicode::UTF16ToUTF32" ref="5e9edaac35984964ef3ad353f98f9f73" args="(In Begin, In End, Out Output, Uint32 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF16ToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-16 characters range to an UTF-32 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="70dd49ecc62e55bcda250d789371dc56"></a><!-- doxytag: member="sf::Unicode::UTF16ToUTF8" ref="70dd49ecc62e55bcda250d789371dc56" args="(In Begin, In End, Out Output, Uint8 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF16ToUTF8 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-16 characters range to an UTF-8 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00207">207</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ffa58d1796721da957505354d48e2e74"></a><!-- doxytag: member="sf::Unicode::UTF16ToUTF8" ref="ffa58d1796721da957505354d48e2e74" args="(In Begin, In End, Out Output, Uint8 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF16ToUTF8 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-16 characters range to an UTF-8 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="37628016674129d709a01a7e82cc19d4"></a><!-- doxytag: member="sf::Unicode::UTF32ToANSI" ref="37628016674129d709a01a7e82cc19d4" args="(In Begin, In End, Out Output, char Replacement, const std::locale &amp;Locale)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF32ToANSI </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char&nbsp;</td>
- <td class="paramname"> <em>Replacement</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::locale &amp;&nbsp;</td>
- <td class="paramname"> <em>Locale</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an ANSI characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00031">31</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f6acf0453625fe05fc7a86f4cc9a5cf1"></a><!-- doxytag: member="sf::Unicode::UTF32ToANSI" ref="f6acf0453625fe05fc7a86f4cc9a5cf1" args="(In Begin, In End, Out Output, char Replacement= '?', const std::locale &amp;Locale=GetDefaultLocale())" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF32ToANSI </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::locale &amp;&nbsp;</td>
- <td class="paramname"> <em>Locale</em> = <code>GetDefaultLocale()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an ANSI characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Locale</em>&nbsp;</td><td>: Locale to use for conversion (uses the current one by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="c11fc704e8e94baf623553807fe1ddde"></a><!-- doxytag: member="sf::Unicode::UTF32ToUTF16" ref="c11fc704e8e94baf623553807fe1ddde" args="(In Begin, In End, Out Output, Uint16 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF32ToUTF16 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint16&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an UTF-16 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00379">379</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b4b5c6e82a1ab1d9ed775653f082d58b"></a><!-- doxytag: member="sf::Unicode::UTF32ToUTF16" ref="b4b5c6e82a1ab1d9ed775653f082d58b" args="(In Begin, In End, Out Output, Uint16 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF32ToUTF16 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint16&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an UTF-16 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="456a48adebef490996f82f4841e26081"></a><!-- doxytag: member="sf::Unicode::UTF32ToUTF8" ref="456a48adebef490996f82f4841e26081" args="(In Begin, In End, Out Output, Uint8 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF32ToUTF8 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an UTF-8 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00326">326</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="46bba10d3a323183c29b4cb288d053c1"></a><!-- doxytag: member="sf::Unicode::UTF32ToUTF8" ref="46bba10d3a323183c29b4cb288d053c1" args="(In Begin, In End, Out Output, Uint8 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF32ToUTF8 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint8&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-32 characters range to an UTF-8 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="86ba5a2f4d2a85b287d1f0ff94f1eb5e"></a><!-- doxytag: member="sf::Unicode::UTF8ToUTF16" ref="86ba5a2f4d2a85b287d1f0ff94f1eb5e" args="(In Begin, In End, Out Output, Uint16 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF8ToUTF16 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint16&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-8 characters range to an UTF-16 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00102">102</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="576b17100b065f65f3594c50a070b378"></a><!-- doxytag: member="sf::Unicode::UTF8ToUTF16" ref="576b17100b065f65f3594c50a070b378" args="(In Begin, In End, Out Output, Uint16 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF8ToUTF16 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint16&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-8 characters range to an UTF-16 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="6dc3254ad3495eeca06443cbee0298be"></a><!-- doxytag: member="sf::Unicode::UTF8ToUTF32" ref="6dc3254ad3495eeca06443cbee0298be" args="(In Begin, In End, Out Output, Uint32 Replacement)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Out sf::Unicode::UTF8ToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>Replacement</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-8 characters range to an UTF-32 characters range, using the given locale.
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8inl-source.htm#l00163">163</a> of file <a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c4a67f01b57053b697c573b0ab6a9545"></a><!-- doxytag: member="sf::Unicode::UTF8ToUTF32" ref="c4a67f01b57053b697c573b0ab6a9545" args="(In Begin, In End, Out Output, Uint32 Replacement= '?')" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename In , typename Out &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static Out sf::Unicode::UTF8ToUTF32 </td>
- <td>(</td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>Begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">In&nbsp;</td>
- <td class="paramname"> <em>End</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Out&nbsp;</td>
- <td class="paramname"> <em>Output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">Uint32&nbsp;</td>
- <td class="paramname"> <em>Replacement</em> = <code>'?'</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Generic function to convert an UTF-8 characters range to an UTF-32 characters range, using the given locale.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Begin</em>&nbsp;</td><td>: Iterator pointing to the beginning of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>End</em>&nbsp;</td><td>: Iterator pointing to the end of the input sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Output</em>&nbsp;</td><td>: Iterator pointing to the beginning of the output sequence </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Replacement</em>&nbsp;</td><td>: Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Iterator to the end of the output sequence which has been written </dd></dl>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a><li><a class="el" href="Unicode_8inl-source.htm">Unicode.inl</a><li><a class="el" href="Unicode_8cpp-source.htm">Unicode.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Unicode_1_1Text-members.htm b/doc/html/classsf_1_1Unicode_1_1Text-members.htm
deleted file mode 100755
index c953e03..0000000
--- a/doc/html/classsf_1_1Unicode_1_1Text-members.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Unicode::Unicode::Text Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>operator const Unicode::UTF32String &amp;</b>() const (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb">operator std::string</a>() const </td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator std::wstring</b>() const (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator Unicode::UTF16String</b>() const (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>operator Unicode::UTF8String</b>() const (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d">Text</a>()</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm#ce4c2b97e31442ab88ea8eabf75ff4e6">Text</a>(const char *Str)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const wchar_t *Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Uint8 *Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Uint16 *Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Uint32 *Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const std::string &amp;Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const std::wstring &amp;Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Unicode::UTF8String &amp;Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Unicode::UTF16String &amp;Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Text</b>(const Unicode::UTF32String &amp;Str) (defined in <a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>)</td><td><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Unicode_1_1Text.htm b/doc/html/classsf_1_1Unicode_1_1Text.htm
deleted file mode 100755
index 31bf90a..0000000
--- a/doc/html/classsf_1_1Unicode_1_1Text.htm
+++ /dev/null
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Unicode.htm">Unicode</a>::<a class="el" href="classsf_1_1Unicode_1_1Text.htm">Text</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Unicode::Unicode::Text Class Reference</h1><!-- doxytag: class="sf::Unicode::Text" -->This class is an abstract definition of a unicode text, it can be converted from and to any kind of string and encoding.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Unicode_1_1Text-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d">Text</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor (empty text). <a href="#aa04a48e0feb1243b06b32e00e1b572d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode_1_1Text.htm#ce4c2b97e31442ab88ea8eabf75ff4e6">Text</a> (const char *Str)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the unicode text from any type of string. <a href="#ce4c2b97e31442ab88ea8eabf75ff4e6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a32b3fa93201a7c6e16d4fdc4534f563"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="a32b3fa93201a7c6e16d4fdc4534f563" args="(const wchar_t *Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const wchar_t *Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1df67235106325799c0f34eeae58d4bd"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="1df67235106325799c0f34eeae58d4bd" args="(const Uint8 *Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const Uint8 *Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6c54d4e1f1714bfb9a2dc9c6b4f581a"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="e6c54d4e1f1714bfb9a2dc9c6b4f581a" args="(const Uint16 *Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const Uint16 *Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="01ceb0da58b2216e0d209aa3ae4f2f92"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="01ceb0da58b2216e0d209aa3ae4f2f92" args="(const Uint32 *Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const Uint32 *Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="10d7ada2959c4440d9744e354b2c3a80"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="10d7ada2959c4440d9744e354b2c3a80" args="(const std::string &amp;Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const std::string &amp;Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="90d966d1fe756ccfb5602ec649f1a99c"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="90d966d1fe756ccfb5602ec649f1a99c" args="(const std::wstring &amp;Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const std::wstring &amp;Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="89e76d560e304345dbd2b00ab5587281"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="89e76d560e304345dbd2b00ab5587281" args="(const Unicode::UTF8String &amp;Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const <a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">Unicode::UTF8String</a> &amp;Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5518a325ff4ee5f9624380e596039be7"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="5518a325ff4ee5f9624380e596039be7" args="(const Unicode::UTF16String &amp;Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const Unicode::UTF16String &amp;Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="94205bf2285356b01dc26bdc5d7ecec2"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="94205bf2285356b01dc26bdc5d7ecec2" args="(const Unicode::UTF32String &amp;Str)" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>Text</b> (const Unicode::UTF32String &amp;Str)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb">operator std::string</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operator to cast the text to any type of string. <a href="#8dafdb0f8af7aa8fd93a6357d14e7dfb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="68bbdd96744b5372811cff614c9fdb64"></a><!-- doxytag: member="sf::Unicode::Text::operator std::wstring" ref="68bbdd96744b5372811cff614c9fdb64" args="() const " -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator std::wstring</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="86457507c8fa810bf4164e5845a5e06a"></a><!-- doxytag: member="sf::Unicode::Text::operator Unicode::UTF8String" ref="86457507c8fa810bf4164e5845a5e06a" args="() const " -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator Unicode::UTF8String</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c9c79a567e9331ce90307a3d679fe65c"></a><!-- doxytag: member="sf::Unicode::Text::operator Unicode::UTF16String" ref="c9c79a567e9331ce90307a3d679fe65c" args="() const " -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator Unicode::UTF16String</b> () const </td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5dc8644be465e51f38e515e525ee4753"></a><!-- doxytag: member="sf::Unicode::Text::operator const Unicode::UTF32String &amp;" ref="5dc8644be465e51f38e515e525ee4753" args="() const " -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator const Unicode::UTF32String &amp;</b> () const </td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class is an abstract definition of a unicode text, it can be converted from and to any kind of string and encoding.
-<p>Definition at line <a class="el" href="Unicode_8hpp-source.htm#l00063">63</a> of file <a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="aa04a48e0feb1243b06b32e00e1b572d"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="aa04a48e0feb1243b06b32e00e1b572d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Unicode::Unicode::Text::Text </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor (empty text).
-<p>
-
-<p>Definition at line <a class="el" href="Unicode_8cpp-source.htm#l00105">105</a> of file <a class="el" href="Unicode_8cpp-source.htm">Unicode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ce4c2b97e31442ab88ea8eabf75ff4e6"></a><!-- doxytag: member="sf::Unicode::Text::Text" ref="ce4c2b97e31442ab88ea8eabf75ff4e6" args="(const char *Str)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Unicode::Unicode::Text::Text </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>Str</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the unicode text from any type of string.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Str</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">String</a> to convert </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Unicode_8cpp-source.htm#l00114">114</a> of file <a class="el" href="Unicode_8cpp-source.htm">Unicode.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="8dafdb0f8af7aa8fd93a6357d14e7dfb"></a><!-- doxytag: member="sf::Unicode::Text::operator std::string" ref="8dafdb0f8af7aa8fd93a6357d14e7dfb" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Unicode::Unicode::Text::operator std::string </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Operator to cast the text to any type of string.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Converted string </dd></dl>
-
-<p>Definition at line <a class="el" href="Unicode_8cpp-source.htm#l00227">227</a> of file <a class="el" href="Unicode_8cpp-source.htm">Unicode.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Unicode_8hpp-source.htm">Unicode.hpp</a><li><a class="el" href="Unicode_8cpp-source.htm">Unicode.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Vector2-members.htm b/doc/html/classsf_1_1Vector2-members.htm
deleted file mode 100755
index 09b3487..0000000
--- a/doc/html/classsf_1_1Vector2-members.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Vector2&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988">Vector2</a>()</td><td><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector2.htm#ed26a72164e59e8a4a0aeee2049568f1">Vector2</a>(T X, T Y)</td><td><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">x</a></td><td><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">y</a></td><td><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Vector2.htm b/doc/html/classsf_1_1Vector2.htm
deleted file mode 100755
index b67eecf..0000000
--- a/doc/html/classsf_1_1Vector2.htm
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Vector2.htm">Vector2</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Vector2&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="sf::Vector2" --><a class="el" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2</a> is an utility class for manipulating 2 dimensional vectors.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Vector2_8hpp-source.htm">Vector2.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Vector2-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988">Vector2</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#58c32383b5291380db4b43a289f75988"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector2.htm#ed26a72164e59e8a4a0aeee2049568f1">Vector2</a> (T X, T Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the vector from its coordinates. <a href="#ed26a72164e59e8a4a0aeee2049568f1"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">x</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">X coordinate of the vector. <a href="#1e6ad77fa155f3753bfb92699bd28141"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">y</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Y coordinate of the vector. <a href="#420f2481b015f4eb929c75f2af564299"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename T&gt;<br>
- class sf::Vector2&lt; T &gt;</h3>
-
-<a class="el" href="classsf_1_1Vector2.htm" title="Vector2 is an utility class for manipulating 2 dimensional vectors.">Vector2</a> is an utility class for manipulating 2 dimensional vectors.
-<p>
-Template parameter defines the type of coordinates (integer, float, ...)
-<p>Definition at line <a class="el" href="Vector2_8hpp-source.htm#l00037">37</a> of file <a class="el" href="Vector2_8hpp-source.htm">Vector2.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="58c32383b5291380db4b43a289f75988"></a><!-- doxytag: member="sf::Vector2::Vector2" ref="58c32383b5291380db4b43a289f75988" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector2.htm">Vector2</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ed26a72164e59e8a4a0aeee2049568f1"></a><!-- doxytag: member="sf::Vector2::Vector2" ref="ed26a72164e59e8a4a0aeee2049568f1" args="(T X, T Y)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector2.htm">Vector2</a> </td>
- <td>(</td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the vector from its coordinates.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="1e6ad77fa155f3753bfb92699bd28141"></a><!-- doxytag: member="sf::Vector2::x" ref="1e6ad77fa155f3753bfb92699bd28141" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">x</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-X coordinate of the vector.
-<p>
-
-<p>Definition at line <a class="el" href="Vector2_8hpp-source.htm#l00059">59</a> of file <a class="el" href="Vector2_8hpp-source.htm">Vector2.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="420f2481b015f4eb929c75f2af564299"></a><!-- doxytag: member="sf::Vector2::y" ref="420f2481b015f4eb929c75f2af564299" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">y</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Y coordinate of the vector.
-<p>
-
-<p>Definition at line <a class="el" href="Vector2_8hpp-source.htm#l00060">60</a> of file <a class="el" href="Vector2_8hpp-source.htm">Vector2.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Vector2_8hpp-source.htm">Vector2.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Vector3-members.htm b/doc/html/classsf_1_1Vector3-members.htm
deleted file mode 100755
index c9ea7ba..0000000
--- a/doc/html/classsf_1_1Vector3-members.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Vector3&lt; T &gt; Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9">Vector3</a>()</td><td><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector3.htm#99ed75b68f58adfa3e9fa0561b424bf6">Vector3</a>(T X, T Y, T Z)</td><td><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">x</a></td><td><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">y</a></td><td><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">z</a></td><td><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Vector3.htm b/doc/html/classsf_1_1Vector3.htm
deleted file mode 100755
index 3a78cea..0000000
--- a/doc/html/classsf_1_1Vector3.htm
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Vector3.htm">Vector3</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Vector3&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="sf::Vector3" --><a class="el" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3</a> is an utility class for manipulating 3 dimensional vectors.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1Vector3-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9">Vector3</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#ee8be1985c6e45e381ad4071265636f9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector3.htm#99ed75b68f58adfa3e9fa0561b424bf6">Vector3</a> (T X, T Y, T Z)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the vector from its coordinates. <a href="#99ed75b68f58adfa3e9fa0561b424bf6"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">x</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">X coordinate of the vector. <a href="#3cb0c769390bc37c346bb1a69e510d16"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">y</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Y coordinate of the vector. <a href="#6590d50ccb862c5efc5512e974e9b794"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">z</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Z coordinate of the vector. <a href="#2f36ab4b552c028e3a9734c1ad4df7d1"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename T&gt;<br>
- class sf::Vector3&lt; T &gt;</h3>
-
-<a class="el" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3</a> is an utility class for manipulating 3 dimensional vectors.
-<p>
-Template parameter defines the type of coordinates (integer, float, ...)
-<p>Definition at line <a class="el" href="Vector3_8hpp-source.htm#l00037">37</a> of file <a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="ee8be1985c6e45e381ad4071265636f9"></a><!-- doxytag: member="sf::Vector3::Vector3" ref="ee8be1985c6e45e381ad4071265636f9" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector3.htm">Vector3</a> </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="99ed75b68f58adfa3e9fa0561b424bf6"></a><!-- doxytag: member="sf::Vector3::Vector3" ref="99ed75b68f58adfa3e9fa0561b424bf6" args="(T X, T Y, T Z)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector3.htm">Vector3</a> </td>
- <td>(</td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>Y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T&nbsp;</td>
- <td class="paramname"> <em>Z</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the vector from its coordinates.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Z</em>&nbsp;</td><td>: Z coordinate </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="3cb0c769390bc37c346bb1a69e510d16"></a><!-- doxytag: member="sf::Vector3::x" ref="3cb0c769390bc37c346bb1a69e510d16" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Vector3.htm">sf::Vector3</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">x</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-X coordinate of the vector.
-<p>
-
-<p>Definition at line <a class="el" href="Vector3_8hpp-source.htm#l00060">60</a> of file <a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6590d50ccb862c5efc5512e974e9b794"></a><!-- doxytag: member="sf::Vector3::y" ref="6590d50ccb862c5efc5512e974e9b794" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Vector3.htm">sf::Vector3</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">y</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Y coordinate of the vector.
-<p>
-
-<p>Definition at line <a class="el" href="Vector3_8hpp-source.htm#l00061">61</a> of file <a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2f36ab4b552c028e3a9734c1ad4df7d1"></a><!-- doxytag: member="sf::Vector3::z" ref="2f36ab4b552c028e3a9734c1ad4df7d1" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">T <a class="el" href="classsf_1_1Vector3.htm">sf::Vector3</a>&lt; T &gt;::<a class="el" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">z</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Z coordinate of the vector.
-<p>
-
-<p>Definition at line <a class="el" href="Vector3_8hpp-source.htm#l00062">62</a> of file <a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="Vector3_8hpp-source.htm">Vector3.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1VideoMode-members.htm b/doc/html/classsf_1_1VideoMode-members.htm
deleted file mode 100755
index 792b91e..0000000
--- a/doc/html/classsf_1_1VideoMode-members.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::VideoMode Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">BitsPerPixel</a></td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea">GetDesktopMode</a>()</td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2">GetMode</a>(std::size_t Index)</td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723">GetModesCount</a>()</td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">Height</a></td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c">IsValid</a>() const </td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821">operator!=</a>(const VideoMode &amp;Other) const </td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1">operator==</a>(const VideoMode &amp;Other) const </td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1">VideoMode</a>()</td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#9478572db06121f70260e6b9dc21704e">VideoMode</a>(unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp=32)</td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">Width</a></td><td><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1VideoMode.htm b/doc/html/classsf_1_1VideoMode.htm
deleted file mode 100755
index fb51e6c..0000000
--- a/doc/html/classsf_1_1VideoMode.htm
+++ /dev/null
@@ -1,386 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::VideoMode Class Reference</h1><!-- doxytag: class="sf::VideoMode" --><a class="el" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> defines a video mode (width, height, bpp, frequency) and provides static functions for getting modes supported by the display device.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1VideoMode-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1">VideoMode</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#04c9417e5c304510bef5f6aeb03f6ce1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#9478572db06121f70260e6b9dc21704e">VideoMode</a> (unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp=32)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the video mode with its attributes. <a href="#9478572db06121f70260e6b9dc21704e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c">IsValid</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the video mode is supported. <a href="#13ccf1d15900d7251659f871ea362c7c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1">operator==</a> (const <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator overload -- tell if two video modes are equal. <a href="#497c88cd2475d941f27a0ac2a0541fa1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821">operator!=</a> (const <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> &amp;Other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comparison operator overload -- tell if two video modes are different. <a href="#7db70f110d4a1404e38ed8a909d77821"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea">GetDesktopMode</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current desktop video mode. <a href="#0b29193258c4855f75337e62f2b56eea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2">GetMode</a> (std::size_t Index)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a valid video mode Index must be in range [0, <a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723" title="Get valid video modes count.">GetModesCount()</a>[ Modes are sorted from best to worst. <a href="#50e64232abd41b7ee1016948b41ea5a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">static std::size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723">GetModesCount</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get valid video modes count. <a href="#1700d0b9230f34533cadd88f5cc61723"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">Width</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Video mode width, in pixels. <a href="#bee130381af7a465b29ea5cdb3927203"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">Height</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Video mode height, in pixels. <a href="#c890fbaecc5d9b82b44123a0d5b3c0f5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">BitsPerPixel</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Video mode pixel depth, in bits per pixels. <a href="#c2aa4a809527fd9da6b70c9479d02c7a"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">VideoMode</a> defines a video mode (width, height, bpp, frequency) and provides static functions for getting modes supported by the display device.
-<p>Definition at line <a class="el" href="VideoMode_8hpp-source.htm#l00042">42</a> of file <a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="04c9417e5c304510bef5f6aeb03f6ce1"></a><!-- doxytag: member="sf::VideoMode::VideoMode" ref="04c9417e5c304510bef5f6aeb03f6ce1" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::VideoMode::VideoMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00067">67</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9478572db06121f70260e6b9dc21704e"></a><!-- doxytag: member="sf::VideoMode::VideoMode" ref="9478572db06121f70260e6b9dc21704e" args="(unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp=32)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::VideoMode::VideoMode </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ModeWidth</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ModeHeight</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>ModeBpp</em> = <code>32</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the video mode with its attributes.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ModeWidth</em>&nbsp;</td><td>: Width in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ModeHeight</em>&nbsp;</td><td>: Height in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ModeBpp</em>&nbsp;</td><td>: Pixel depths in bits per pixel (32 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00079">79</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="0b29193258c4855f75337e62f2b56eea"></a><!-- doxytag: member="sf::VideoMode::GetDesktopMode" ref="0b29193258c4855f75337e62f2b56eea" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> sf::VideoMode::GetDesktopMode </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the current desktop video mode.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Current desktop video mode </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00091">91</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="50e64232abd41b7ee1016948b41ea5a2"></a><!-- doxytag: member="sf::VideoMode::GetMode" ref="50e64232abd41b7ee1016948b41ea5a2" args="(std::size_t Index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> sf::VideoMode::GetMode </td>
- <td>(</td>
- <td class="paramtype">std::size_t&nbsp;</td>
- <td class="paramname"> <em>Index</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a valid video mode Index must be in range [0, <a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723" title="Get valid video modes count.">GetModesCount()</a>[ Modes are sorted from best to worst.
-<p>
-Get a valid video mode Index must be in range [0, <a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723" title="Get valid video modes count.">GetModesCount()</a>[.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Index</em>&nbsp;</td><td>: Index of video mode to get</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Corresponding video mode (invalid mode if index is out of range) </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00102">102</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="1700d0b9230f34533cadd88f5cc61723"></a><!-- doxytag: member="sf::VideoMode::GetModesCount" ref="1700d0b9230f34533cadd88f5cc61723" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::VideoMode::GetModesCount </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get valid video modes count.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of valid video modes available </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00117">117</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="13ccf1d15900d7251659f871ea362c7c"></a><!-- doxytag: member="sf::VideoMode::IsValid" ref="13ccf1d15900d7251659f871ea362c7c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::VideoMode::IsValid </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the video mode is supported.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if video mode is supported, false otherwise </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00129">129</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="7db70f110d4a1404e38ed8a909d77821"></a><!-- doxytag: member="sf::VideoMode::operator!=" ref="7db70f110d4a1404e38ed8a909d77821" args="(const VideoMode &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::VideoMode::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator overload -- tell if two video modes are different.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Video mode to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if modes are different </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00152">152</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="497c88cd2475d941f27a0ac2a0541fa1"></a><!-- doxytag: member="sf::VideoMode::operator==" ref="497c88cd2475d941f27a0ac2a0541fa1" args="(const VideoMode &amp;Other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::VideoMode::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Comparison operator overload -- tell if two video modes are equal.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Other</em>&nbsp;</td><td>: Video mode to compare</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if modes are equal </dd></dl>
-
-<p>Definition at line <a class="el" href="VideoMode_8cpp-source.htm#l00141">141</a> of file <a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="c2aa4a809527fd9da6b70c9479d02c7a"></a><!-- doxytag: member="sf::VideoMode::BitsPerPixel" ref="c2aa4a809527fd9da6b70c9479d02c7a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">sf::VideoMode::BitsPerPixel</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Video mode pixel depth, in bits per pixels.
-<p>
-
-<p>Definition at line <a class="el" href="VideoMode_8hpp-source.htm#l00123">123</a> of file <a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c890fbaecc5d9b82b44123a0d5b3c0f5"></a><!-- doxytag: member="sf::VideoMode::Height" ref="c890fbaecc5d9b82b44123a0d5b3c0f5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">sf::VideoMode::Height</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Video mode height, in pixels.
-<p>
-
-<p>Definition at line <a class="el" href="VideoMode_8hpp-source.htm#l00122">122</a> of file <a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="bee130381af7a465b29ea5cdb3927203"></a><!-- doxytag: member="sf::VideoMode::Width" ref="bee130381af7a465b29ea5cdb3927203" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">sf::VideoMode::Width</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Video mode width, in pixels.
-<p>
-
-<p>Definition at line <a class="el" href="VideoMode_8hpp-source.htm#l00121">121</a> of file <a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="VideoMode_8hpp-source.htm">VideoMode.hpp</a><li><a class="el" href="VideoMode_8cpp-source.htm">VideoMode.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1View-members.htm b/doc/html/classsf_1_1View-members.htm
deleted file mode 100755
index 6de189f..0000000
--- a/doc/html/classsf_1_1View-members.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::View Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1View.htm">sf::View</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd">GetCenter</a>() const </td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47">GetHalfSize</a>() const </td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd">GetRect</a>() const </td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c">Move</a>(float OffsetX, float OffsetY)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#e065331d6f2d450b3482c623c7506ced">Move</a>(const sf::Vector2f &amp;Offset)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>RenderTarget</b> (defined in <a class="el" href="classsf_1_1View.htm">sf::View</a>)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td><code> [friend]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86">SetCenter</a>(float X, float Y)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#fc62a34d1bb3c7a64ab5cc11941967cb">SetCenter</a>(const sf::Vector2f &amp;Center)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee">SetFromRect</a>(const FloatRect &amp;ViewRect)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a">SetHalfSize</a>(float HalfWidth, float HalfHeight)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#ce6e0d15b8fe1f2f0066d8438c01f1d3">SetHalfSize</a>(const sf::Vector2f &amp;HalfSize)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc">View</a>(const FloatRect &amp;ViewRect=FloatRect(0, 0, 1000, 1000))</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#0323ca80f81ad7feb877d328a0fdbb60">View</a>(const sf::Vector2f &amp;Center, const sf::Vector2f &amp;HalfSize)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1">Zoom</a>(float Factor)</td><td><a class="el" href="classsf_1_1View.htm">sf::View</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1View.htm b/doc/html/classsf_1_1View.htm
deleted file mode 100755
index aa4908c..0000000
--- a/doc/html/classsf_1_1View.htm
+++ /dev/null
@@ -1,508 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1View.htm">View</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::View Class Reference</h1><!-- doxytag: class="sf::View" -->This class defines a view (position, size, etc.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="View_8hpp-source.htm">View.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="classsf_1_1View-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc">View</a> (const <a class="el" href="classsf_1_1Rect.htm">FloatRect</a> &amp;ViewRect=<a class="el" href="classsf_1_1Rect.htm">FloatRect</a>(0, 0, 1000, 1000))</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the view from a rectangle. <a href="#884afd75948366ba6c0f760b276496cc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#0323ca80f81ad7feb877d328a0fdbb60">View</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Center, const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;HalfSize)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the view from its center and half-size. <a href="#0323ca80f81ad7feb877d328a0fdbb60"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86">SetCenter</a> (float X, float Y)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the center of the view (take 2 values). <a href="#f357e9c647672b94b8b8f584eaff1e86"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#fc62a34d1bb3c7a64ab5cc11941967cb">SetCenter</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Center)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the center of the view (take a vector). <a href="#fc62a34d1bb3c7a64ab5cc11941967cb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a">SetHalfSize</a> (float HalfWidth, float HalfHeight)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the half-size of the view (take 2 values). <a href="#5e1a8e0c729daf4be95c1f27ba275a2a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#ce6e0d15b8fe1f2f0066d8438c01f1d3">SetHalfSize</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;HalfSize)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the half-size of the view (take a vector). <a href="#ce6e0d15b8fe1f2f0066d8438c01f1d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee">SetFromRect</a> (const <a class="el" href="classsf_1_1Rect.htm">FloatRect</a> &amp;ViewRect)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rebuild the view from a rectangle. <a href="#a5c2ac8985a573632f9a1e95d56cc2ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd">GetCenter</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the center of the view. <a href="#edfc422283cb9dbd89c2beb70261b7fd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47">GetHalfSize</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the half-size of the view. <a href="#2fa0eb90604dd90ffdaf2405be276d47"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Rect.htm">sf::FloatRect</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd">GetRect</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the bounding rectangle of the view. <a href="#af368a69233ee426a5fbd63dde1cc4bd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c">Move</a> (float OffsetX, float OffsetY)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the view (take 2 values). <a href="#8f1bfbae90991ab777994cad4f4bfa9c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#e065331d6f2d450b3482c623c7506ced">Move</a> (const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;Offset)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the view (take a vector). <a href="#e065331d6f2d450b3482c623c7506ced"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1">Zoom</a> (float Factor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resize the view rectangle to simulate a zoom / unzoom effect. <a href="#2bc9321a19bc371b3f29d8c9f25bcbb1"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5afc6f82b7b587ed5ada4d227ce32aa"></a><!-- doxytag: member="sf::View::RenderTarget" ref="a5afc6f82b7b587ed5ada4d227ce32aa" args="" -->
-class&nbsp;</td><td class="memItemRight" valign="bottom"><b>RenderTarget</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This class defines a view (position, size, etc.
-<p>
-) ; you can consider it as a 2D camera
-<p>Definition at line <a class="el" href="View_8hpp-source.htm#l00045">45</a> of file <a class="el" href="View_8hpp-source.htm">View.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="884afd75948366ba6c0f760b276496cc"></a><!-- doxytag: member="sf::View::View" ref="884afd75948366ba6c0f760b276496cc" args="(const FloatRect &amp;ViewRect=FloatRect(0, 0, 1000, 1000))" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::View::View </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">FloatRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>ViewRect</em> = <code><a class="el" href="classsf_1_1Rect.htm">FloatRect</a>(0,&nbsp;0,&nbsp;1000,&nbsp;1000)</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the view from a rectangle.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ViewRect</em>&nbsp;</td><td>: Rectangle defining the position and size of the view (1000x1000 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00037">37</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="0323ca80f81ad7feb877d328a0fdbb60"></a><!-- doxytag: member="sf::View::View" ref="0323ca80f81ad7feb877d328a0fdbb60" args="(const sf::Vector2f &amp;Center, const sf::Vector2f &amp;HalfSize)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::View::View </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>HalfSize</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the view from its center and half-size.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: Center of the view </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HalfSize</em>&nbsp;</td><td>: Half-size of the view (from center to corner) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00046">46</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="edfc422283cb9dbd89c2beb70261b7fd"></a><!-- doxytag: member="sf::View::GetCenter" ref="edfc422283cb9dbd89c2beb70261b7fd" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp; sf::View::GetCenter </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the center of the view.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Center of the view </dd></dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00108">108</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2fa0eb90604dd90ffdaf2405be276d47"></a><!-- doxytag: member="sf::View::GetHalfSize" ref="2fa0eb90604dd90ffdaf2405be276d47" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp; sf::View::GetHalfSize </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the half-size of the view.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Half-size of the view </dd></dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00117">117</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="af368a69233ee426a5fbd63dde1cc4bd"></a><!-- doxytag: member="sf::View::GetRect" ref="af368a69233ee426a5fbd63dde1cc4bd" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Rect.htm">sf::FloatRect</a> &amp; sf::View::GetRect </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the bounding rectangle of the view.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Bounding rectangle of the view </dd></dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00126">126</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="e065331d6f2d450b3482c623c7506ced"></a><!-- doxytag: member="sf::View::Move" ref="e065331d6f2d450b3482c623c7506ced" args="(const sf::Vector2f &amp;Offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::Move </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Offset</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the view (take a vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Offset</em>&nbsp;</td><td>: Offset to move the view </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00150">150</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8f1bfbae90991ab777994cad4f4bfa9c"></a><!-- doxytag: member="sf::View::Move" ref="8f1bfbae90991ab777994cad4f4bfa9c" args="(float OffsetX, float OffsetY)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::Move </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetX</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>OffsetY</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Move the view (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OffsetX</em>&nbsp;</td><td>: Offset to move the view, on X axis </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OffsetY</em>&nbsp;</td><td>: Offset to move the view, on Y axis </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00139">139</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="fc62a34d1bb3c7a64ab5cc11941967cb"></a><!-- doxytag: member="sf::View::SetCenter" ref="fc62a34d1bb3c7a64ab5cc11941967cb" args="(const sf::Vector2f &amp;Center)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::SetCenter </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Center</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the center of the view (take a vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Center</em>&nbsp;</td><td>: New center </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00069">69</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="f357e9c647672b94b8b8f584eaff1e86"></a><!-- doxytag: member="sf::View::SetCenter" ref="f357e9c647672b94b8b8f584eaff1e86" args="(float X, float Y)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::SetCenter </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>X</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Y</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the center of the view (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>X</em>&nbsp;</td><td>: X coordinate of the new center </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Y</em>&nbsp;</td><td>: Y coordinate of the new center </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00058">58</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a5c2ac8985a573632f9a1e95d56cc2ee"></a><!-- doxytag: member="sf::View::SetFromRect" ref="a5c2ac8985a573632f9a1e95d56cc2ee" args="(const FloatRect &amp;ViewRect)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::SetFromRect </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Rect.htm">FloatRect</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>ViewRect</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rebuild the view from a rectangle.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ViewRect</em>&nbsp;</td><td>: Rectangle defining the position and size of the view </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00098">98</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ce6e0d15b8fe1f2f0066d8438c01f1d3"></a><!-- doxytag: member="sf::View::SetHalfSize" ref="ce6e0d15b8fe1f2f0066d8438c01f1d3" args="(const sf::Vector2f &amp;HalfSize)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::SetHalfSize </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Vector2.htm">sf::Vector2f</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>HalfSize</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the half-size of the view (take a vector).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>HalfSize</em>&nbsp;</td><td>: New half-size </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00089">89</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5e1a8e0c729daf4be95c1f27ba275a2a"></a><!-- doxytag: member="sf::View::SetHalfSize" ref="5e1a8e0c729daf4be95c1f27ba275a2a" args="(float HalfWidth, float HalfHeight)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::SetHalfSize </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>HalfWidth</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>HalfHeight</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the half-size of the view (take 2 values).
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>HalfWidth</em>&nbsp;</td><td>: New half-width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HalfHeight</em>&nbsp;</td><td>: New half-height </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00078">78</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="2bc9321a19bc371b3f29d8c9f25bcbb1"></a><!-- doxytag: member="sf::View::Zoom" ref="2bc9321a19bc371b3f29d8c9f25bcbb1" args="(float Factor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::View::Zoom </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Factor</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Resize the view rectangle to simulate a zoom / unzoom effect.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Factor</em>&nbsp;</td><td>: Zoom factor to apply, relative to the current zoom </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="View_8cpp-source.htm#l00159">159</a> of file <a class="el" href="View_8cpp-source.htm">View.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="View_8hpp-source.htm">View.hpp</a><li><a class="el" href="View_8cpp-source.htm">View.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Window-members.htm b/doc/html/classsf_1_1Window-members.htm
deleted file mode 100755
index 02478a9..0000000
--- a/doc/html/classsf_1_1Window-members.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Window Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1Window.htm">sf::Window</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">Close</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">Create</a>(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">Create</a>(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">Display</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">EnableKeyRepeat</a>(bool Enabled)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">GetEvent</a>(Event &amp;EventReceived)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">GetFrameTime</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947">GetHeight</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">GetInput</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">GetSettings</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22">GetWidth</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">IsOpened</a>() const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, private]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">SetActive</a>(bool Active=true) const </td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">SetCursorPosition</a>(unsigned int Left, unsigned int Top)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">SetFramerateLimit</a>(unsigned int Limit)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">SetIcon</a>(unsigned int Width, unsigned int Height, const Uint8 *Pixels)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">SetJoystickThreshold</a>(float Threshold)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">SetPosition</a>(int Left, int Top)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">SetSize</a>(unsigned int Width, unsigned int Height)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">Show</a>(bool State)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">ShowMouseCursor</a>(bool Show)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">UseVerticalSync</a>(bool Enabled)</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4">Window</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">Window</a>(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#ef6c45b1d53ed4a884ccb9c609d2456a">Window</a>(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">~Window</a>()</td><td><a class="el" href="classsf_1_1Window.htm">sf::Window</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">~WindowListener</a>()</td><td><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td><code> [inline, protected, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Window.htm b/doc/html/classsf_1_1Window.htm
deleted file mode 100755
index fffdc04..0000000
--- a/doc/html/classsf_1_1Window.htm
+++ /dev/null
@@ -1,981 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Window.htm">Window</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Window Class Reference</h1><!-- doxytag: class="sf::Window" --><!-- doxytag: inherits="sf::WindowListener,sf::NonCopyable" --><a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> is a rendering window ; it can create a new window or connect to an existing one.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Window_2Window_8hpp-source.htm">Window.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::Window:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1Window.png" usemap="#sf::Window_map" border="0" alt=""></center>
-<map name="sf::Window_map">
-<area href="classsf_1_1WindowListener.htm" alt="sf::WindowListener" shape="rect" coords="0,0,117,24">
-<area href="structsf_1_1NonCopyable.htm" alt="sf::NonCopyable" shape="rect" coords="127,0,244,24">
-<area href="classsf_1_1RenderWindow.htm" alt="sf::RenderWindow" shape="rect" coords="63,112,180,136">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1Window-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4">Window</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#5359122166b4dc492c3d25caf08ccfc4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">Window</a> (<a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new window. <a href="#8a89aba8776a4eeb5393522a0e6513c9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#ef6c45b1d53ed4a884ccb9c609d2456a">Window</a> (WindowHandle Handle, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct the window from an existing control. <a href="#ef6c45b1d53ed4a884ccb9c609d2456a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">~Window</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#6d5a00ce5cc93a2c0bc8ae0e317f5008"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">Create</a> (<a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a> Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create (or recreate) the window. <a href="#a891f1cbd7d77c4dc02ac950b6e76f61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">Create</a> (WindowHandle Handle, const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;Params=<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>())</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create (or recreate) the window from an existing control. <a href="#58e264c181fd70e67986d26fea69a71d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">Close</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close (destroy) the window. <a href="#b04439f6fb9fdfe40f882676fdb2938c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">IsOpened</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell whether or not the window is opened (ie. <a href="#5c4c82e1fdb4252108314fcbe462ad8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22">GetWidth</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the width of the rendering region of the window. <a href="#c5dfd4d7df394e3638b567352ec69e22"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947">GetHeight</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the height of the rendering region of the window. <a href="#913a7ae79631eaa8ef6a1ad8cd0c5947"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">GetSettings</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the creation settings of the window. <a href="#27321006595f9f6a482b26b13800695f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">GetEvent</a> (<a class="el" href="classsf_1_1Event.htm">Event</a> &amp;EventReceived)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the event on top of events stack, if any, and pop it. <a href="#65cb14f66a870f459bd66e11e52fbfe8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">UseVerticalSync</a> (bool Enabled)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable / disable vertical synchronization. <a href="#cb8391cc93ff730288e2a8dd6b0bb7b5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">ShowMouseCursor</a> (bool Show)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Show or hide the mouse cursor. <a href="#6142e38cb60901e6604284425714f3f0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">SetCursorPosition</a> (unsigned int Left, unsigned int Top)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the mouse cursor. <a href="#369d1764893c6fde8979fcf04142dc55"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">SetPosition</a> (int Left, int Top)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the position of the window on screen. <a href="#3a6d2908a624a8afda4b2fdd9ef46058"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">SetSize</a> (unsigned int Width, unsigned int Height)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the size of the rendering region of the window. <a href="#dc4461bfaa9b4ff0fd0364a5079a47ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">Show</a> (bool State)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Show or hide the window. <a href="#727c01602c86710fd935f9892946b2de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">EnableKeyRepeat</a> (bool Enabled)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable automatic key-repeat. <a href="#43ac767f0b7b697b392444d639b909e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">SetIcon</a> (unsigned int Width, unsigned int Height, const Uint8 *Pixels)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the window's icon. <a href="#36fa09e52af66878b8b826457b8f1dfa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">SetActive</a> (bool Active=true) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Activate of deactivate the window as the current target for rendering. <a href="#9fc1e745594d5cf6a30225ec9ea36675"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">Display</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display the window on screen. <a href="#ee37843c5c882f7b3a0788b310308435"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classsf_1_1Input.htm">Input</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">GetInput</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the input manager of the window. <a href="#49db47a79ca98b7d65087adeea06e919"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">SetFramerateLimit</a> (unsigned int Limit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Limit the framerate to a maximum fixed frequency. <a href="#5544031f1d2965c00532fb5660763f33"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">GetFrameTime</a> () const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time elapsed since last frame. <a href="#63571ef14c9351899bcd605fb101c254"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">SetJoystickThreshold</a> (float Threshold)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the joystick threshold, ie. <a href="#d685eed68b85a66c8000a08e9a28aa91"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> is a rendering window ; it can create a new window or connect to an existing one.
-<p>Definition at line <a class="el" href="Window_2Window_8hpp-source.htm#l00055">55</a> of file <a class="el" href="Window_2Window_8hpp-source.htm">Window/Window.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="5359122166b4dc492c3d25caf08ccfc4"></a><!-- doxytag: member="sf::Window::Window" ref="5359122166b4dc492c3d25caf08ccfc4" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Window::Window </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00049">49</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="8a89aba8776a4eeb5393522a0e6513c9"></a><!-- doxytag: member="sf::Window::Window" ref="8a89aba8776a4eeb5393522a0e6513c9" args="(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Window::Window </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Title</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long&nbsp;</td>
- <td class="paramname"> <em>WindowStyle</em> = <code>Style::Resize&nbsp;|&nbsp;Style::Close</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct a new window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Video mode to use </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>: Title of the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>WindowStyle</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> style, see <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">sf::Style</a> (Resize | Close by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00064">64</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ef6c45b1d53ed4a884ccb9c609d2456a"></a><!-- doxytag: member="sf::Window::Window" ref="ef6c45b1d53ed4a884ccb9c609d2456a" args="(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Window::Window </td>
- <td>(</td>
- <td class="paramtype">WindowHandle&nbsp;</td>
- <td class="paramname"> <em>Handle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Construct the window from an existing control.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Handle</em>&nbsp;</td><td>: Platform-specific handle of the control </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00079">79</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d5a00ce5cc93a2c0bc8ae0e317f5008"></a><!-- doxytag: member="sf::Window::~Window" ref="6d5a00ce5cc93a2c0bc8ae0e317f5008" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::Window::~Window </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00094">94</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b04439f6fb9fdfe40f882676fdb2938c"></a><!-- doxytag: member="sf::Window::Close" ref="b04439f6fb9fdfe40f882676fdb2938c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Close </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Close (destroy) the window.
-<p>
-The <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> instance remains valid and you can call Create to recreate the window<p>
-The <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">sf::Window</a> instance remains valid and you can call Create to recreate the window
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00165">165</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="58e264c181fd70e67986d26fea69a71d"></a><!-- doxytag: member="sf::Window::Create" ref="58e264c181fd70e67986d26fea69a71d" args="(WindowHandle Handle, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Create </td>
- <td>(</td>
- <td class="paramtype">WindowHandle&nbsp;</td>
- <td class="paramname"> <em>Handle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create (or recreate) the window from an existing control.
-<p>
-Create the window from an existing control.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Handle</em>&nbsp;</td><td>: Platform-specific handle of the control </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00147">147</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="a891f1cbd7d77c4dc02ac950b6e76f61"></a><!-- doxytag: member="sf::Window::Create" ref="a891f1cbd7d77c4dc02ac950b6e76f61" args="(VideoMode Mode, const std::string &amp;Title, unsigned long WindowStyle=Style::Resize|Style::Close, const WindowSettings &amp;Params=WindowSettings())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Create </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1VideoMode.htm">VideoMode</a>&nbsp;</td>
- <td class="paramname"> <em>Mode</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>Title</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long&nbsp;</td>
- <td class="paramname"> <em>WindowStyle</em> = <code>Style::Resize&nbsp;|&nbsp;Style::Close</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>Params</em> = <code><a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>()</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create (or recreate) the window.
-<p>
-Create the window.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>: Video mode to use </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Title</em>&nbsp;</td><td>: Title of the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>WindowStyle</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Window.htm" title="Window is a rendering window ; it can create a new window or connect to an existing...">Window</a> style, see <a class="el" href="namespacesf_1_1Style.htm" title="Enumeration of window creation styles.">sf::Style</a> (Resize | Close by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Params</em>&nbsp;</td><td>: Creation parameters (see default constructor for default values) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00104">104</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ee37843c5c882f7b3a0788b310308435"></a><!-- doxytag: member="sf::Window::Display" ref="ee37843c5c882f7b3a0788b310308435" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Display </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Display the window on screen.
-<p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00353">353</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="43ac767f0b7b697b392444d639b909e0"></a><!-- doxytag: member="sf::Window::EnableKeyRepeat" ref="43ac767f0b7b697b392444d639b909e0" args="(bool Enabled)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::EnableKeyRepeat </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enabled</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable or disable automatic key-repeat.
-<p>
-Automatic key-repeat is enabled by default<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enabled</em>&nbsp;</td><td>: True to enable, false to disable</td></tr>
- </table>
-</dl>
-Automatic key-repeat is enabled by default
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00317">317</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="65cb14f66a870f459bd66e11e52fbfe8"></a><!-- doxytag: member="sf::Window::GetEvent" ref="65cb14f66a870f459bd66e11e52fbfe8" args="(Event &amp;EventReceived)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::GetEvent </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classsf_1_1Event.htm">Event</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>EventReceived</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the event on top of events stack, if any, and pop it.
-<p>
-Get the event on top of events stack, if any.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>EventReceived</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> to fill, if any</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if an event was returned, false if events stack was empty </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00218">218</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="63571ef14c9351899bcd605fb101c254"></a><!-- doxytag: member="sf::Window::GetFrameTime" ref="63571ef14c9351899bcd605fb101c254" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float sf::Window::GetFrameTime </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get time elapsed since last frame.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Time elapsed, in seconds </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00394">394</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="913a7ae79631eaa8ef6a1ad8cd0c5947"></a><!-- doxytag: member="sf::Window::GetHeight" ref="913a7ae79631eaa8ef6a1ad8cd0c5947" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Window::GetHeight </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the height of the rendering region of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Height in pixels </dd></dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">sf::RenderWindow</a>.</p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00200">200</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="49db47a79ca98b7d65087adeea06e919"></a><!-- doxytag: member="sf::Window::GetInput" ref="49db47a79ca98b7d65087adeea06e919" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classsf_1_1Input.htm">Input</a> &amp; sf::Window::GetInput </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the input manager of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Reference to the input </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00376">376</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="27321006595f9f6a482b26b13800695f"></a><!-- doxytag: member="sf::Window::GetSettings" ref="27321006595f9f6a482b26b13800695f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a> &amp; sf::Window::GetSettings </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the creation settings of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Structure containing the creation settings </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00209">209</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="c5dfd4d7df394e3638b567352ec69e22"></a><!-- doxytag: member="sf::Window::GetWidth" ref="c5dfd4d7df394e3638b567352ec69e22" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int sf::Window::GetWidth </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the width of the rendering region of the window.
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>Width in pixels </dd></dl>
-
-<p>Reimplemented in <a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">sf::RenderWindow</a>.</p>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00191">191</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5c4c82e1fdb4252108314fcbe462ad8d"></a><!-- doxytag: member="sf::Window::IsOpened" ref="5c4c82e1fdb4252108314fcbe462ad8d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::IsOpened </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tell whether or not the window is opened (ie.
-<p>
-has been created). Note that a hidden window (Show(false)) will still return true<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the window is opened</dd></dl>
-has been created). Note that a hidden window (Show(false)) will still return true
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00182">182</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="9fc1e745594d5cf6a30225ec9ea36675"></a><!-- doxytag: member="sf::Window::SetActive" ref="9fc1e745594d5cf6a30225ec9ea36675" args="(bool Active=true) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool sf::Window::SetActive </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Active</em> = <code>true</code> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Activate of deactivate the window as the current target for rendering.
-<p>
-Activate of deactivate the window as the current target for rendering.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Active</em>&nbsp;</td><td>: True to activate, false to deactivate (true by default)</td></tr>
- </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if operation was successful, false otherwise </dd></dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00338">338</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="369d1764893c6fde8979fcf04142dc55"></a><!-- doxytag: member="sf::Window::SetCursorPosition" ref="369d1764893c6fde8979fcf04142dc55" args="(unsigned int Left, unsigned int Top)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetCursorPosition </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Top</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the mouse cursor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Left</em>&nbsp;</td><td>: Left coordinate of the cursor, relative to the window </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Top</em>&nbsp;</td><td>: Top coordinate of the cursor, relative to the window </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00260">260</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="5544031f1d2965c00532fb5660763f33"></a><!-- doxytag: member="sf::Window::SetFramerateLimit" ref="5544031f1d2965c00532fb5660763f33" args="(unsigned int Limit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetFramerateLimit </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Limit</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Limit the framerate to a maximum fixed frequency.
-<p>
-Set the framerate at a fixed frequency.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Limit</em>&nbsp;</td><td>: Framerate limit, in frames per seconds (use 0 to disable limit) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00385">385</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="36fa09e52af66878b8b826457b8f1dfa"></a><!-- doxytag: member="sf::Window::SetIcon" ref="36fa09e52af66878b8b826457b8f1dfa" args="(unsigned int Width, unsigned int Height, const Uint8 *Pixels)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetIcon </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const Uint8 *&nbsp;</td>
- <td class="paramname"> <em>Pixels</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the window's icon.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: Icon's width, in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: Icon's height, in pixels </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Pixels</em>&nbsp;</td><td>: Pointer to the pixels in memory, format must be RGBA 32 bits </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00327">327</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="d685eed68b85a66c8000a08e9a28aa91"></a><!-- doxytag: member="sf::Window::SetJoystickThreshold" ref="d685eed68b85a66c8000a08e9a28aa91" args="(float Threshold)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetJoystickThreshold </td>
- <td>(</td>
- <td class="paramtype">float&nbsp;</td>
- <td class="paramname"> <em>Threshold</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the joystick threshold, ie.
-<p>
-the value below which no move event will be generated<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Threshold</em>&nbsp;</td><td>: New threshold, in range [0, 100]</td></tr>
- </table>
-</dl>
-the value below which no move event will be generated
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00404">404</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="3a6d2908a624a8afda4b2fdd9ef46058"></a><!-- doxytag: member="sf::Window::SetPosition" ref="3a6d2908a624a8afda4b2fdd9ef46058" args="(int Left, int Top)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetPosition </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>Left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"> <em>Top</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the position of the window on screen.
-<p>
-Only works for top-level windows<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Left</em>&nbsp;</td><td>: Left position </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Top</em>&nbsp;</td><td>: Top position </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00276">276</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="dc4461bfaa9b4ff0fd0364a5079a47ef"></a><!-- doxytag: member="sf::Window::SetSize" ref="dc4461bfaa9b4ff0fd0364a5079a47ef" args="(unsigned int Width, unsigned int Height)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::SetSize </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Height</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Change the size of the rendering region of the window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td>: New width </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td>: New height </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00293">293</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="727c01602c86710fd935f9892946b2de"></a><!-- doxytag: member="sf::Window::Show" ref="727c01602c86710fd935f9892946b2de" args="(bool State)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::Show </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>State</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Show or hide the window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>State</em>&nbsp;</td><td>: True to show, false to hide </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00303">303</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="6142e38cb60901e6604284425714f3f0"></a><!-- doxytag: member="sf::Window::ShowMouseCursor" ref="6142e38cb60901e6604284425714f3f0" args="(bool Show)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::ShowMouseCursor </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Show</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Show or hide the mouse cursor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Show</em>&nbsp;</td><td>: True to show, false to hide </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00250">250</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="cb8391cc93ff730288e2a8dd6b0bb7b5"></a><!-- doxytag: member="sf::Window::UseVerticalSync" ref="cb8391cc93ff730288e2a8dd6b0bb7b5" args="(bool Enabled)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void sf::Window::UseVerticalSync </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>Enabled</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Enable / disable vertical synchronization.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Enabled</em>&nbsp;</td><td>: True to enable v-sync, false to deactivate </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="Window_8cpp-source.htm#l00240">240</a> of file <a class="el" href="Window_8cpp-source.htm">Window.cpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Window_2Window_8hpp-source.htm">Window/Window.hpp</a><li><a class="el" href="Window_8cpp-source.htm">Window.cpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1Window.png b/doc/html/classsf_1_1Window.png
deleted file mode 100755
index 2249b7b..0000000
--- a/doc/html/classsf_1_1Window.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/classsf_1_1WindowListener-members.htm b/doc/html/classsf_1_1WindowListener-members.htm
deleted file mode 100755
index 4c2bc14..0000000
--- a/doc/html/classsf_1_1WindowListener-members.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::WindowListener Member List</h1>This is the complete list of members for <a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f">OnEvent</a>(const Event &amp;EventReceived)=0</td><td><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">~WindowListener</a>()</td><td><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a></td><td><code> [inline, protected, virtual]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1WindowListener.htm b/doc/html/classsf_1_1WindowListener.htm
deleted file mode 100755
index 537ca5f..0000000
--- a/doc/html/classsf_1_1WindowListener.htm
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1WindowListener.htm">WindowListener</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::WindowListener Class Reference</h1><!-- doxytag: class="sf::WindowListener" -->Base class for classes that want to receive events from a window (for internal use only).
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="WindowListener_8hpp-source.htm">WindowListener.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::WindowListener:</div>
-<div class="dynsection">
-
-<p><center><img src="classsf_1_1WindowListener.png" usemap="#sf::WindowListener_map" border="0" alt=""></center>
-<map name="sf::WindowListener_map">
-<area href="classsf_1_1Input.htm" alt="sf::Input" shape="rect" coords="0,56,117,80">
-<area href="classsf_1_1Window.htm" alt="sf::Window" shape="rect" coords="127,56,244,80">
-<area href="classsf_1_1RenderWindow.htm" alt="sf::RenderWindow" shape="rect" coords="127,112,244,136">
-</map>
-</div>
-
-<p>
-<a href="classsf_1_1WindowListener-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f">OnEvent</a> (const <a class="el" href="classsf_1_1Event.htm">Event</a> &amp;EventReceived)=0</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called each time an event is received from attached window. <a href="#4703ddfaaa6604e38e1ff0d89e2cd00f"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">~WindowListener</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#0c5603bbe6dc4980cc4ed55019952ec0"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Base class for classes that want to receive events from a window (for internal use only).
-<p>Definition at line <a class="el" href="WindowListener_8hpp-source.htm#l00042">42</a> of file <a class="el" href="WindowListener_8hpp-source.htm">WindowListener.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="0c5603bbe6dc4980cc4ed55019952ec0"></a><!-- doxytag: member="sf::WindowListener::~WindowListener" ref="0c5603bbe6dc4980cc4ed55019952ec0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">virtual sf::WindowListener::~WindowListener </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, protected, virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destructor.
-<p>
-
-<p>Definition at line <a class="el" href="WindowListener_8hpp-source.htm#l00060">60</a> of file <a class="el" href="WindowListener_8hpp-source.htm">WindowListener.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="4703ddfaaa6604e38e1ff0d89e2cd00f"></a><!-- doxytag: member="sf::WindowListener::OnEvent" ref="4703ddfaaa6604e38e1ff0d89e2cd00f" args="(const Event &amp;EventReceived)=0" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">virtual void sf::WindowListener::OnEvent </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classsf_1_1Event.htm">Event</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>EventReceived</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [pure virtual]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Called each time an event is received from attached window.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>EventReceived</em>&nbsp;</td><td>: <a class="el" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">Event</a> received </td></tr>
- </table>
-</dl>
-
-</div>
-</div><p>
-<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="WindowListener_8hpp-source.htm">WindowListener.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/classsf_1_1WindowListener.png b/doc/html/classsf_1_1WindowListener.png
deleted file mode 100755
index 5cd43e5..0000000
--- a/doc/html/classsf_1_1WindowListener.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
deleted file mode 100755
index 3f2e69f..0000000
--- a/doc/html/doxygen.css
+++ /dev/null
@@ -1,384 +0,0 @@
-div#logo
-{
- margin-bottom : 1em;
- background : url("./logo-bg.jpg") repeat-x;
-}
-
-div#logo a
-{
- display : block;
-}
-
-p#footer
-{
- text-decoration : overline;
- color : #606060;
- padding-top : 1em;
- text-align : center;
- font-size : smaller;
-}
-
-p#footer a
-{
- color : #007298;
- text-decoration : none;
-}
-
-BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
- font-family: Geneva, Arial, Helvetica, sans-serif;
-}
-BODY,TD {
- font-size: 90%;
-}
-H1 {
- text-align : center;
- margin-top : 0px;
- color : #2090B0;
- font-size : 160%;
-}
-H2 {
- font-size: 120%;
-}
-H3 {
- font-size: 100%;
-}
-CAPTION { font-weight: bold }
-DIV.qindex {
- width: 100%;
- background-color: #E0FFE0;
- border: 1px dotted #808080;
- text-align: center;
- margin: 2px;
- padding: 2px;
- line-height: 140%;
-}
-DIV.nav {
- width: 100%;
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- padding: 2px;
- line-height: 140%;
-}
-DIV.navtab {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-TD.navtab {
- font-size: 70%;
-}
-A.qindex {
- text-decoration: none;
- font-weight: bold;
-}
-A.qindex:visited {
- text-decoration: none;
- font-weight: bold;
-}
-A.qindex:hover {
- text-decoration: none;
- background-color: #ddddff;
-}
-A.qindexHL {
- text-decoration: none;
- font-weight: bold;
- background-color: #6666cc;
- color: #ffffff;
- border: 1px double #9295C2;
-}
-A.qindexHL:hover {
- text-decoration: none;
- background-color: #6666cc;
- color: #ffffff;
-}
-A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code:link { text-decoration: none; font-weight: normal; border-bottom : 1px dotted #808080; color: black;}
-A.code:visited { text-decoration: none; font-weight: normal; border-bottom : 1px dotted #808080; color: black;}
-A.codeRef:link { font-weight: normal; color: #0000FF}
-A.codeRef:visited { font-weight: normal; color: #0000FF}
-/*A:hover { text-decoration: none; background-color: #f2f2ff }*/
-DL.el { margin-left: -1cm }
-.fragment {
- font-family: monospace, fixed;
- font-size: 95%;
-}
-PRE.fragment {
- border: 1px solid #CCCCCC;
- background-color: #f5f5f5;
- margin-top: 4px;
- margin-bottom: 4px;
- margin-left: 2px;
- margin-right: 8px;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-
-DIV.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- margin-bottom: 6px;
- font-weight: bold;
-}
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
-BODY {
- background: white;
- color: black;
- margin-right: 20px;
- margin-left: 20px;
-}
-TD.indexkey {
- background-color: #e8eef2;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px;
- border: 1px solid #CCCCCC;
-}
-TD.indexvalue {
- background-color: #e8eef2;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px;
- border: 1px solid #CCCCCC;
-}
-TR.memlist {
- background-color: #f0f0f0;
-}
-P.formulaDsp { text-align: center; }
-IMG.formulaDsp { }
-IMG.formulaInl { vertical-align: middle; }
-SPAN.keyword { color: #0000FF }
-SPAN.keywordtype { color: #0000FF }
-SPAN.keywordflow { color: #0000FF }
-SPAN.comment { color: #008000 }
-SPAN.preprocessor { color: #008080 }
-SPAN.stringliteral { color: #008080 }
-SPAN.charliteral { color: #008080 }
-.mdescLeft {
- padding: 0px 8px 4px 8px;
- font-size: 80%;
- font-style: italic;
- background-color: #FAFAFA;
- border-top: 1px none #E0E0E0;
- border-right: 1px none #E0E0E0;
- border-bottom: 1px none #E0E0E0;
- border-left: 1px none #E0E0E0;
- margin: 0px;
-}
-.mdescRight {
- padding: 0px 8px 4px 8px;
- font-size: 80%;
- font-style: italic;
- background-color: #FAFAFA;
- border-top: 1px none #E0E0E0;
- border-right: 1px none #E0E0E0;
- border-bottom: 1px none #E0E0E0;
- border-left: 1px none #E0E0E0;
- margin: 0px;
-}
-.memItemLeft {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
-}
-.memItemRight {
- padding: 1px 8px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
-}
-.memTemplItemLeft {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: none;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
-}
-.memTemplItemRight {
- padding: 1px 8px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: none;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- background-color: #FAFAFA;
- font-size: 80%;
-}
-.memTemplParams {
- padding: 1px 0px 0px 8px;
- margin: 4px;
- border-top-width: 1px;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-left-width: 1px;
- border-top-color: #E0E0E0;
- border-right-color: #E0E0E0;
- border-bottom-color: #E0E0E0;
- border-left-color: #E0E0E0;
- border-top-style: solid;
- border-right-style: none;
- border-bottom-style: none;
- border-left-style: none;
- color: #606060;
- background-color: #FAFAFA;
- font-size: 80%;
-}
-.search { color: #003399;
- font-weight: bold;
-}
-FORM.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-INPUT.search { font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-TD.tiny { font-size: 75%;
-}
-a {
- color: #2090B0;
-}
-a:visited {
- color: #2090B0;
-}
-.dirtab { padding: 4px;
- border-collapse: collapse;
- border: 1px solid #84b0c7;
-}
-TH.dirtab { background: #e8eef2;
- font-weight: bold;
-}
-HR { height: 1px;
- border: none;
- border-top: 1px solid black;
-}
-
-/* Style for detailed member documentation */
-.memtemplate {
- font-size: 80%;
- color: #606060;
- font-weight: normal;
-}
-.memnav {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-.memitem {
- /*padding: 4px;*/
- background-color: #F0FFF0;
- border-width: 1px;
- border-style: solid;
- border-color: #808080;
- /*-moz-border-radius: 8px 8px 8px 8px;*/
-}
-.memname {
- white-space: nowrap;
- font-weight: bold;
-}
-.memdoc{
- padding-left: 10px;
-}
-.memproto {
- background-color: #D0FFD0;
- width: 100%;
- border-bottom-width: 1px;
- border-bottom-style: dotted;
- border-bottom-color: #808080;
- font-weight: bold;
- /*-moz-border-radius: 8px 8px 8px 8px;*/
-}
-.paramkey {
- text-align: right;
-}
-.paramtype {
- white-space: nowrap;
-}
-.paramname {
- color: #602020;
- font-style: italic;
- white-space: nowrap;
-}
-/* End Styling for detailed member documentation */
-
-/* for the tree view */
-.ftvtree {
- font-family: sans-serif;
- margin:0.5em;
-}
-.directory { font-size: 9pt; font-weight: bold; }
-.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
-.directory > h3 { margin-top: 0; }
-.directory p { margin: 0px; white-space: nowrap; }
-.directory div { display: none; margin: 0px; }
-.directory img { vertical-align: -30%; }
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
deleted file mode 100755
index f0a274b..0000000
--- a/doc/html/doxygen.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/files.htm b/doc/html/files.htm
deleted file mode 100755
index f3c88d5..0000000
--- a/doc/html/files.htm
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li class="current"><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="files.htm"><span>File&nbsp;List</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>File List</h1>Here is a list of all documented files with brief descriptions:<table>
- <tr><td class="indexkey"><b>Arial.hpp</b> <a href="Arial_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Audio.hpp</b> <a href="Audio_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>AudioDevice.cpp</b> <a href="AudioDevice_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>AudioDevice.hpp</b> <a href="AudioDevice_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>AudioResource.cpp</b> <a href="AudioResource_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>AudioResource.hpp</b> <a href="AudioResource_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Clock.cpp</b> <a href="Clock_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Clock.hpp</b> <a href="Clock_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Color.cpp</b> <a href="Color_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Color.hpp</b> <a href="Color_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Config.hpp</b> <a href="Config_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Context.cpp</b> <a href="Context_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Context.hpp</b> <a href="Context_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Doxygen.hpp</b> <a href="Doxygen_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Drawable.cpp</b> <a href="Drawable_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Drawable.hpp</b> <a href="Drawable_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Event.hpp</b> <a href="Event_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Font.cpp</b> <a href="Font_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Font.hpp</b> <a href="Font_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>FontLoader.cpp</b> <a href="FontLoader_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>FontLoader.hpp</b> <a href="FontLoader_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Ftp.cpp</b> <a href="Ftp_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Ftp.hpp</b> <a href="Ftp_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Glyph.hpp</b> <a href="Glyph_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Graphics.hpp</b> <a href="Graphics_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>GraphicsContext.cpp</b> <a href="GraphicsContext_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>GraphicsContext.hpp</b> <a href="GraphicsContext_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Http.cpp</b> <a href="Http_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Http.hpp</b> <a href="Http_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Image.cpp</b> <a href="Image_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Image.hpp</b> <a href="Image_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>ImageLoader.cpp</b> <a href="ImageLoader_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>ImageLoader.hpp</b> <a href="ImageLoader_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Input.cpp</b> <a href="Input_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Input.hpp</b> <a href="Input_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>IPAddress.cpp</b> <a href="IPAddress_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>IPAddress.hpp</b> <a href="IPAddress_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Cocoa/Joystick.cpp</b> <a href="Cocoa_2Joystick_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Template for new ports/Joystick.cpp</b> <a href="Template_01for_01new_01ports_2Joystick_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/Joystick.cpp</b> <a href="Win32_2Joystick_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Cocoa/Joystick.hpp</b> <a href="Cocoa_2Joystick_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Joystick.hpp</b> <a href="Joystick_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Template for new ports/Joystick.hpp</b> <a href="Template_01for_01new_01ports_2Joystick_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/Joystick.hpp</b> <a href="Win32_2Joystick_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Listener.cpp</b> <a href="Listener_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Listener.hpp</b> <a href="Listener_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Lock.cpp</b> <a href="Lock_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Lock.hpp</b> <a href="Lock_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Matrix3.cpp</b> <a href="Matrix3_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Matrix3.hpp</b> <a href="Matrix3_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Matrix3.inl</b> <a href="Matrix3_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Music.cpp</b> <a href="Music_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Music.hpp</b> <a href="Music_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Mutex.cpp</b> <a href="Mutex_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Mutex.hpp</b> <a href="Mutex_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/Mutex.hpp</b> <a href="Win32_2Mutex_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Network.hpp</b> <a href="Network_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>NonCopyable.hpp</b> <a href="NonCopyable_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>OpenAL.hpp</b> <a href="OpenAL_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>OpenGL.hpp</b> <a href="OpenGL_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Packet.cpp</b> <a href="Packet_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Packet.hpp</b> <a href="Packet_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Platform.cpp</b> <a href="Platform_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Platform.hpp</b> <a href="Platform_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/Platform.hpp</b> <a href="Win32_2Platform_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>PostFX.cpp</b> <a href="PostFX_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>PostFX.hpp</b> <a href="PostFX_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Randomizer.cpp</b> <a href="Randomizer_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Randomizer.hpp</b> <a href="Randomizer_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Rect.hpp</b> <a href="Rect_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Rect.inl</b> <a href="Rect_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RenderTarget.cpp</b> <a href="RenderTarget_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RenderTarget.hpp</b> <a href="RenderTarget_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RenderWindow.cpp</b> <a href="RenderWindow_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RenderWindow.hpp</b> <a href="RenderWindow_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Resource.hpp</b> <a href="Resource_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Resource.inl</b> <a href="Resource_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>ResourcePtr.inl</b> <a href="ResourcePtr_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Selector.hpp</b> <a href="Selector_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Selector.inl</b> <a href="Selector_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SelectorBase.cpp</b> <a href="SelectorBase_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SelectorBase.hpp</b> <a href="SelectorBase_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SFML_Main.cpp</b> <a href="SFML__Main_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Shape.cpp</b> <a href="Shape_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Shape.hpp</b> <a href="Shape_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sleep.cpp</b> <a href="Sleep_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sleep.hpp</b> <a href="Sleep_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketHelper.cpp</b> <a href="SocketHelper_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketHelper.hpp</b> <a href="SocketHelper_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/SocketHelper.hpp</b> <a href="Win32_2SocketHelper_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sockets.hpp</b> <a href="Sockets_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketTCP.cpp</b> <a href="SocketTCP_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketTCP.hpp</b> <a href="SocketTCP_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketUDP.cpp</b> <a href="SocketUDP_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SocketUDP.hpp</b> <a href="SocketUDP_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sound.cpp</b> <a href="Sound_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sound.hpp</b> <a href="Sound_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundBuffer.cpp</b> <a href="SoundBuffer_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundBuffer.hpp</b> <a href="SoundBuffer_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundBufferRecorder.cpp</b> <a href="SoundBufferRecorder_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundBufferRecorder.hpp</b> <a href="SoundBufferRecorder_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFile.cpp</b> <a href="SoundFile_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFile.hpp</b> <a href="SoundFile_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFileDefault.cpp</b> <a href="SoundFileDefault_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFileDefault.hpp</b> <a href="SoundFileDefault_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFileOgg.cpp</b> <a href="SoundFileOgg_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundFileOgg.hpp</b> <a href="SoundFileOgg_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundRecorder.cpp</b> <a href="SoundRecorder_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundRecorder.hpp</b> <a href="SoundRecorder_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundStream.cpp</b> <a href="SoundStream_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>SoundStream.hpp</b> <a href="SoundStream_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sprite.cpp</b> <a href="Sprite_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Sprite.hpp</b> <a href="Sprite_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>String.cpp</b> <a href="String_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>String.hpp</b> <a href="String_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>System.hpp</b> <a href="System_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Thread.cpp</b> <a href="Thread_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Thread.hpp</b> <a href="Thread_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/Thread.hpp</b> <a href="Win32_2Thread_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Unicode.cpp</b> <a href="Unicode_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Unicode.hpp</b> <a href="Unicode_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Unicode.inl</b> <a href="Unicode_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Vector2.hpp</b> <a href="Vector2_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Vector2.inl</b> <a href="Vector2_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Vector3.hpp</b> <a href="Vector3_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Vector3.inl</b> <a href="Vector3_8inl-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>VideoMode.cpp</b> <a href="VideoMode_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>VideoMode.hpp</b> <a href="VideoMode_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Cocoa/VideoModeSupport.cpp</b> <a href="Cocoa_2VideoModeSupport_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Template for new ports/VideoModeSupport.cpp</b> <a href="Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/VideoModeSupport.cpp</b> <a href="Win32_2VideoModeSupport_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Cocoa/VideoModeSupport.hpp</b> <a href="Cocoa_2VideoModeSupport_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Template for new ports/VideoModeSupport.hpp</b> <a href="Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>VideoModeSupport.hpp</b> <a href="VideoModeSupport_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Win32/VideoModeSupport.hpp</b> <a href="Win32_2VideoModeSupport_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>View.cpp</b> <a href="View_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>View.hpp</b> <a href="View_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Window.cpp</b> <a href="Window_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Window/Window.hpp</b> <a href="Window_2Window_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Window.hpp</b> <a href="Window_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowHandle.hpp</b> <a href="WindowHandle_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImpl.cpp</b> <a href="WindowImpl_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImpl.hpp</b> <a href="WindowImpl_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImplCocoa.hpp</b> <a href="WindowImplCocoa_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImplWin32.cpp</b> <a href="WindowImplWin32_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImplWin32.hpp</b> <a href="WindowImplWin32_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImplXXX.cpp</b> <a href="WindowImplXXX_8cpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowImplXXX.hpp</b> <a href="WindowImplXXX_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowListener.hpp</b> <a href="WindowListener_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowSettings.hpp</b> <a href="WindowSettings_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>WindowStyle.hpp</b> <a href="WindowStyle_8hpp-source.htm">[code]</a></td><td class="indexvalue"></td></tr>
-</table>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions.htm b/doc/html/functions.htm
deleted file mode 100755
index b248e39..0000000
--- a/doc/html/functions.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>a
-: <a class="el" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">sf::Color</a>
-<li>Accept()
-: <a class="el" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107">sf::SocketTCP</a>
-<li>Accepted
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae">sf::Http::Http::Response</a>
-<li>Add()
-: <a class="el" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">sf::SelectorBase</a>
-<li>AddPoint()
-: <a class="el" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92">sf::Shape</a>
-<li>Advance
-: <a class="el" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">sf::Glyph</a>
-<li>ANSIToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#164436a4e19c18cc518e9d8d921481f1">sf::Unicode</a>
-<li>AntialiasingLevel
-: <a class="el" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">sf::WindowSettings</a>
-<li>Append()
-: <a class="el" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64">sf::Packet</a>
-<li>Ascii
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2">sf::Ftp</a>
-<li>AudioResource()
-: <a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">sf::AudioResource</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x62.htm b/doc/html/functions_0x62.htm
deleted file mode 100755
index 0c810ab..0000000
--- a/doc/html/functions_0x62.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li class="current"><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>b
-: <a class="el" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">sf::Color</a>
-<li>BadCommandSequence
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">sf::Ftp::Ftp::Response</a>
-<li>BadGateway
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9">sf::Http::Http::Response</a>
-<li>BadRequest
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa">sf::Http::Http::Response</a>
-<li>Binary
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee">sf::Ftp</a>
-<li>Bind()
-: <a class="el" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7">sf::Image</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d">sf::SocketUDP</a>
-<li>BitsPerPixel
-: <a class="el" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">sf::VideoMode</a>
-<li>Black
-: <a class="el" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">sf::Color</a>
-<li>Blue
-: <a class="el" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">sf::Color</a>
-<li>Bold
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0">sf::String</a>
-<li>Bottom
-: <a class="el" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">sf::Rect&lt; T &gt;</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x63.htm b/doc/html/functions_0x63.htm
deleted file mode 100755
index f3bdb0b..0000000
--- a/doc/html/functions_0x63.htm
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li class="current"><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>CanCapture()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">sf::SoundRecorder</a>
-<li>CanUsePostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e">sf::PostFX</a>
-<li>Capture()
-: <a class="el" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a">sf::RenderWindow</a>
-<li>ChangeDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc">sf::Ftp</a>
-<li>Circle()
-: <a class="el" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0">sf::Shape</a>
-<li>Clear()
-: <a class="el" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da">sf::Packet</a>
-, <a class="el" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">sf::RenderTarget</a>
-<li>Clock()
-: <a class="el" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd">sf::Clock</a>
-<li>Close()
-: <a class="el" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232">sf::SocketHelper</a>
-, <a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">sf::Window</a>
-<li>ClosingConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">sf::Ftp::Ftp::Response</a>
-<li>ClosingDataConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">sf::Ftp::Ftp::Response</a>
-<li>Color()
-: <a class="el" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4">sf::Color</a>
-<li>CommandNotImplemented
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">sf::Ftp::Ftp::Response</a>
-<li>CommandUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">sf::Ftp::Ftp::Response</a>
-<li>Connect()
-: <a class="el" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c">sf::Ftp</a>
-<li>ConnectionClosed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">sf::Ftp::Ftp::Response</a>
-<li>ConnectionFailed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa">sf::Http::Http::Response</a>
-<li>Contains()
-: <a class="el" href="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7">sf::Rect&lt; T &gt;</a>
-<li>Context()
-: <a class="el" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555">sf::Context</a>
-<li>ConvertCoords()
-: <a class="el" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17">sf::RenderWindow</a>
-<li>Copy()
-: <a class="el" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2">sf::Image</a>
-<li>CopyScreen()
-: <a class="el" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974">sf::Image</a>
-<li>Create()
-: <a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">sf::Window</a>
-, <a class="el" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde">sf::Image</a>
-, <a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">sf::Window</a>
-<li>Created
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0">sf::Http::Http::Response</a>
-<li>CreateMaskFromColor()
-: <a class="el" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50">sf::Image</a>
-<li>Cyan
-: <a class="el" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">sf::Color</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x64.htm b/doc/html/functions_0x64.htm
deleted file mode 100755
index 4979e9d..0000000
--- a/doc/html/functions_0x64.htm
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li class="current"><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DataConnectionAlreadyOpened
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">sf::Ftp::Ftp::Response</a>
-<li>DataConnectionOpened
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">sf::Ftp::Ftp::Response</a>
-<li>DataConnectionUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">sf::Ftp::Ftp::Response</a>
-<li>DeleteDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32">sf::Ftp</a>
-<li>DeleteFile()
-: <a class="el" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9">sf::Ftp</a>
-<li>DepthBits
-: <a class="el" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">sf::WindowSettings</a>
-<li>DirectoryOk
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">sf::Ftp::Ftp::Response</a>
-<li>DirectoryResponse()
-: <a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc">sf::Ftp::Ftp::DirectoryResponse</a>
-<li>DirectoryStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">sf::Ftp::Ftp::Response</a>
-<li>Disconnect()
-: <a class="el" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc">sf::Ftp</a>
-<li>Display()
-: <a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">sf::Window</a>
-<li>Download()
-: <a class="el" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886">sf::Ftp</a>
-<li>Draw()
-: <a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">sf::RenderTarget</a>
-<li>Drawable()
-: <a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">sf::Drawable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x65.htm b/doc/html/functions_0x65.htm
deleted file mode 100755
index d485fa9..0000000
--- a/doc/html/functions_0x65.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li class="current"><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Ebcdic
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4">sf::Ftp</a>
-<li>EnableFill()
-: <a class="el" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae">sf::Shape</a>
-<li>EnableKeyRepeat()
-: <a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">sf::Window</a>
-<li>EnableOutline()
-: <a class="el" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26">sf::Shape</a>
-<li>EndOfPacket()
-: <a class="el" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36">sf::Packet</a>
-<li>EnteringPassiveMode
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">sf::Ftp::Ftp::Response</a>
-<li>EventType
-: <a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">sf::Event</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x66.htm b/doc/html/functions_0x66.htm
deleted file mode 100755
index 1cee73f..0000000
--- a/doc/html/functions_0x66.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li class="current"><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>FileActionAborted
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">sf::Ftp::Ftp::Response</a>
-<li>FileActionOk
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">sf::Ftp::Ftp::Response</a>
-<li>FilenameNotAllowed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">sf::Ftp::Ftp::Response</a>
-<li>FileStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">sf::Ftp::Ftp::Response</a>
-<li>FileUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">sf::Ftp::Ftp::Response</a>
-<li>FlipX()
-: <a class="el" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b">sf::Sprite</a>
-<li>FlipY()
-: <a class="el" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97">sf::Sprite</a>
-<li>Font()
-: <a class="el" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583">sf::Font</a>
-<li>Forbidden
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf">sf::Http::Http::Response</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x67.htm b/doc/html/functions_0x67.htm
deleted file mode 100755
index c106f84..0000000
--- a/doc/html/functions_0x67.htm
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li class="current"><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>g
-: <a class="el" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">sf::Color</a>
-<li>Get
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00">sf::Http::Http::Request</a>
-<li>Get4x4Elements()
-: <a class="el" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1">sf::Matrix3</a>
-<li>GetAttenuation()
-: <a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">sf::Sound</a>
-<li>GetBlendMode()
-: <a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">sf::Drawable</a>
-<li>GetBody()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179">sf::Http::Http::Response</a>
-<li>GetBuffer()
-: <a class="el" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8">sf::SoundBufferRecorder</a>
-, <a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">sf::Sound</a>
-<li>GetCenter()
-: <a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">sf::Drawable</a>
-, <a class="el" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd">sf::View</a>
-<li>GetChannelsCount()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">sf::SoundStream</a>
-<li>GetCharacterPos()
-: <a class="el" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210">sf::String</a>
-<li>GetCharacterSize()
-: <a class="el" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc">sf::Font</a>
-<li>GetColor()
-: <a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">sf::Drawable</a>
-<li>GetCount()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522">sf::Ftp::Ftp::ListingResponse</a>
-<li>GetData()
-: <a class="el" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a">sf::Packet</a>
-<li>GetDataSize()
-: <a class="el" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d">sf::Packet</a>
-<li>GetDefaultFont()
-: <a class="el" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36">sf::Font</a>
-<li>GetDefaultView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">sf::RenderTarget</a>
-<li>GetDesktopMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea">sf::VideoMode</a>
-<li>GetDirectory()
-: <a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799">sf::Ftp::Ftp::DirectoryResponse</a>
-<li>GetDirectoryListing()
-: <a class="el" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357">sf::Ftp</a>
-<li>GetDuration()
-: <a class="el" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50">sf::Music</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984">sf::SoundBuffer</a>
-<li>GetElapsedTime()
-: <a class="el" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995">sf::Clock</a>
-<li>GetErrorStatus()
-: <a class="el" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83">sf::SocketHelper</a>
-<li>GetEvent()
-: <a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">sf::Window</a>
-<li>GetField()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330">sf::Http::Http::Response</a>
-<li>GetFilename()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922">sf::Ftp::Ftp::ListingResponse</a>
-<li>GetFont()
-: <a class="el" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11">sf::String</a>
-<li>GetFrameTime()
-: <a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">sf::Window</a>
-<li>GetGlobal()
-: <a class="el" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692">sf::Context</a>
-<li>GetGlobalVolume()
-: <a class="el" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19">sf::Listener</a>
-<li>GetGlyph()
-: <a class="el" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6">sf::Font</a>
-<li>GetHalfSize()
-: <a class="el" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47">sf::View</a>
-<li>GetHeight()
-: <a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89">sf::Image</a>
-, <a class="el" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75">sf::Rect&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a">sf::RenderTarget</a>
-, <a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">sf::RenderWindow</a>
-, <a class="el" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947">sf::Window</a>
-<li>GetImage()
-: <a class="el" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8">sf::Font</a>
-, <a class="el" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca">sf::Sprite</a>
-<li>GetInput()
-: <a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">sf::Window</a>
-<li>GetInverse()
-: <a class="el" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e">sf::Matrix3</a>
-<li>GetInverseMatrix()
-: <a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">sf::Drawable</a>
-<li>GetJoystickAxis()
-: <a class="el" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896">sf::Input</a>
-<li>GetLocalAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e">sf::IPAddress</a>
-<li>GetLoop()
-: <a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">sf::SoundStream</a>
-<li>GetMajorHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a">sf::Http::Http::Response</a>
-<li>GetMatrix()
-: <a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">sf::Drawable</a>
-<li>GetMessage()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">sf::Ftp::Ftp::Response</a>
-<li>GetMinDistance()
-: <a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">sf::Sound</a>
-<li>GetMinorHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b">sf::Http::Http::Response</a>
-<li>GetMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2">sf::VideoMode</a>
-<li>GetModesCount()
-: <a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723">sf::VideoMode</a>
-<li>GetMouseX()
-: <a class="el" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3">sf::Input</a>
-<li>GetMouseY()
-: <a class="el" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796">sf::Input</a>
-<li>GetNbPoints()
-: <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350">sf::Shape</a>
-<li>GetOutlineWidth()
-: <a class="el" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087">sf::Shape</a>
-<li>GetPitch()
-: <a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">sf::Sound</a>
-<li>GetPixel()
-: <a class="el" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c">sf::Sprite</a>
-, <a class="el" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4">sf::Image</a>
-<li>GetPixelsPtr()
-: <a class="el" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022">sf::Image</a>
-<li>GetPlayingOffset()
-: <a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">sf::SoundStream</a>
-<li>GetPointColor()
-: <a class="el" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92">sf::Shape</a>
-<li>GetPointOutlineColor()
-: <a class="el" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8">sf::Shape</a>
-<li>GetPointPosition()
-: <a class="el" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436">sf::Shape</a>
-<li>GetPort()
-: <a class="el" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd">sf::SocketUDP</a>
-<li>GetPosition()
-: <a class="el" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251">sf::Listener</a>
-, <a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">sf::Sound</a>
-, <a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">sf::Drawable</a>
-<li>GetPublicAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956">sf::IPAddress</a>
-<li>GetRect()
-: <a class="el" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d">sf::String</a>
-, <a class="el" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd">sf::View</a>
-<li>GetRotation()
-: <a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">sf::Drawable</a>
-<li>GetSampleRate()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">sf::SoundRecorder</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571">sf::SoundBuffer</a>
-<li>GetSamples()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0">sf::SoundBuffer</a>
-<li>GetSamplesCount()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789">sf::SoundBuffer</a>
-<li>GetScale()
-: <a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">sf::Drawable</a>
-<li>GetSeed()
-: <a class="el" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48">sf::Randomizer</a>
-<li>GetSettings()
-: <a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">sf::Window</a>
-<li>GetSize()
-: <a class="el" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff">sf::String</a>
-, <a class="el" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e">sf::Sprite</a>
-<li>GetSocketReady()
-: <a class="el" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9">sf::Selector&lt; Type &gt;</a>
-<li>GetStatus()
-: <a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb">sf::Http::Http::Response</a>
-, <a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">sf::Sound</a>
-<li>GetStyle()
-: <a class="el" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df">sf::String</a>
-<li>GetSubRect()
-: <a class="el" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941">sf::Sprite</a>
-<li>GetTarget()
-: <a class="el" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a">sf::Listener</a>
-<li>GetTexCoords()
-: <a class="el" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56">sf::Image</a>
-<li>GetText()
-: <a class="el" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620">sf::String</a>
-<li>GetUTF16Length()
-: <a class="el" href="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995">sf::Unicode</a>
-<li>GetUTF32Length()
-: <a class="el" href="classsf_1_1Unicode.htm#f5c502326c638af92a8ef7d40b119637">sf::Unicode</a>
-<li>GetUTF8Length()
-: <a class="el" href="classsf_1_1Unicode.htm#3fc67af453a678d16c4913197ddbe5c3">sf::Unicode</a>
-<li>GetValidTextureSize()
-: <a class="el" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488">sf::Image</a>
-<li>GetView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">sf::RenderTarget</a>
-<li>GetVolume()
-: <a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">sf::Sound</a>
-<li>GetWidth()
-: <a class="el" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22">sf::Window</a>
-, <a class="el" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087">sf::Rect&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7">sf::Image</a>
-, <a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">sf::RenderWindow</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681">sf::RenderTarget</a>
-<li>GetWorkingDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde">sf::Ftp</a>
-<li>Glyph()
-: <a class="el" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b">sf::Glyph</a>
-<li>Green
-: <a class="el" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">sf::Color</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x68.htm b/doc/html/functions_0x68.htm
deleted file mode 100755
index fd21abb..0000000
--- a/doc/html/functions_0x68.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li class="current"><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>Head
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5">sf::Http::Http::Request</a>
-<li>Height
-: <a class="el" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">sf::VideoMode</a>
-<li>HelpMessage
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">sf::Ftp::Ftp::Response</a>
-<li>Http()
-: <a class="el" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067">sf::Http</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x69.htm b/doc/html/functions_0x69.htm
deleted file mode 100755
index ce76a17..0000000
--- a/doc/html/functions_0x69.htm
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li class="current"><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>Identity
-: <a class="el" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">sf::Matrix3</a>
-<li>Image()
-: <a class="el" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12">sf::Image</a>
-<li>Initialize()
-: <a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">sf::RenderTarget</a>
-<li>Input()
-: <a class="el" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f">sf::Input</a>
-<li>InsufficientStorageSpace
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">sf::Ftp::Ftp::Response</a>
-<li>InternalServerError
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a">sf::Http::Http::Response</a>
-<li>Intersects()
-: <a class="el" href="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272">sf::Rect&lt; T &gt;</a>
-<li>InvalidFile
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">sf::Ftp::Ftp::Response</a>
-<li>InvalidResponse
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8">sf::Http::Http::Response</a>
-<li>InvalidSocket()
-: <a class="el" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458">sf::SocketHelper</a>
-<li>IPAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#16fa44fa881e32a03b67006d90db0c39">sf::IPAddress</a>
-<li>IsContextActive()
-: <a class="el" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27">sf::Context</a>
-<li>IsJoystickButtonDown()
-: <a class="el" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08">sf::Input</a>
-<li>IsKeyDown()
-: <a class="el" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a">sf::Input</a>
-<li>IsMouseButtonDown()
-: <a class="el" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea">sf::Input</a>
-<li>IsOk()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">sf::Ftp::Ftp::Response</a>
-<li>IsOpened()
-: <a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">sf::Window</a>
-<li>IsRelativeToListener()
-: <a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">sf::Sound</a>
-<li>IsSmooth()
-: <a class="el" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3">sf::Image</a>
-<li>IsValid()
-: <a class="el" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c">sf::VideoMode</a>
-<li>Italic
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234">sf::String</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x6b.htm b/doc/html/functions_0x6b.htm
deleted file mode 100755
index 72442b1..0000000
--- a/doc/html/functions_0x6b.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li class="current"><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>KeepAlive()
-: <a class="el" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4">sf::Ftp</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x6c.htm b/doc/html/functions_0x6c.htm
deleted file mode 100755
index 2d340df..0000000
--- a/doc/html/functions_0x6c.htm
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li class="current"><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>Launch()
-: <a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">sf::Thread</a>
-<li>Left
-: <a class="el" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">sf::Rect&lt; T &gt;</a>
-<li>Line()
-: <a class="el" href="classsf_1_1Shape.htm#264e5374cac72a520fcf69c3bbdfe688">sf::Shape</a>
-<li>Listen()
-: <a class="el" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39">sf::SocketTCP</a>
-<li>ListingResponse()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5">sf::Ftp::Ftp::ListingResponse</a>
-<li>LoadFromFile()
-: <a class="el" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5">sf::Font</a>
-, <a class="el" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b">sf::Image</a>
-, <a class="el" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92">sf::PostFX</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4">sf::SoundBuffer</a>
-<li>LoadFromMemory()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b">sf::Font</a>
-, <a class="el" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486">sf::Image</a>
-, <a class="el" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6">sf::PostFX</a>
-<li>LoadFromPixels()
-: <a class="el" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c">sf::Image</a>
-<li>LoadFromSamples()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc">sf::SoundBuffer</a>
-<li>LocalError
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">sf::Ftp::Ftp::Response</a>
-<li>LocalHost
-: <a class="el" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">sf::IPAddress</a>
-<li>Lock()
-: <a class="el" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857">sf::Lock</a>
-, <a class="el" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab">sf::Mutex</a>
-<li>LoggedIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">sf::Ftp::Ftp::Response</a>
-<li>Login()
-: <a class="el" href="classsf_1_1Ftp.htm#1ed080612214df38a5f740d1ee49f082">sf::Ftp</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x6d.htm b/doc/html/functions_0x6d.htm
deleted file mode 100755
index e74aa84..0000000
--- a/doc/html/functions_0x6d.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li class="current"><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Magenta
-: <a class="el" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">sf::Color</a>
-<li>MakeDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071">sf::Ftp</a>
-<li>Matrix3()
-: <a class="el" href="classsf_1_1Matrix3.htm#e0dc2db05f945d1e170f6d540193b309">sf::Matrix3</a>
-<li>Method
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">sf::Http::Http::Request</a>
-<li>Move()
-: <a class="el" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c">sf::View</a>
-, <a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">sf::Drawable</a>
-<li>MovedPermanently
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0">sf::Http::Http::Response</a>
-<li>MovedTemporarily
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015">sf::Http::Http::Response</a>
-<li>MultipleChoices
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2">sf::Http::Http::Response</a>
-<li>Music()
-: <a class="el" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6">sf::Music</a>
-<li>Mutex()
-: <a class="el" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e">sf::Mutex</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x6e.htm b/doc/html/functions_0x6e.htm
deleted file mode 100755
index e7ae430..0000000
--- a/doc/html/functions_0x6e.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li class="current"><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NbSamples
-: <a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf">sf::SoundStream::SoundStream::Chunk</a>
-<li>NeedAccountToLogIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">sf::Ftp::Ftp::Response</a>
-<li>NeedAccountToStore
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">sf::Ftp::Ftp::Response</a>
-<li>NeedInformation
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">sf::Ftp::Ftp::Response</a>
-<li>NeedPassword
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">sf::Ftp::Ftp::Response</a>
-<li>NoContent
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3">sf::Http::Http::Response</a>
-<li>NonCopyable()
-: <a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">sf::NonCopyable</a>
-<li>NotEnoughMemory
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">sf::Ftp::Ftp::Response</a>
-<li>NotFound
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41">sf::Http::Http::Response</a>
-<li>NotImplemented
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf">sf::Http::Http::Response</a>
-<li>NotLoggedIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">sf::Ftp::Ftp::Response</a>
-<li>NotModified
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56">sf::Http::Http::Response</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x6f.htm b/doc/html/functions_0x6f.htm
deleted file mode 100755
index cde433d..0000000
--- a/doc/html/functions_0x6f.htm
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li class="current"><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>Offset()
-: <a class="el" href="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd">sf::Rect&lt; T &gt;</a>
-<li>Ok
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5">sf::Http::Http::Response</a>
-<li>OnEvent()
-: <a class="el" href="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f">sf::WindowListener</a>
-<li>OnResourceDestroyed()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9">sf::ResourcePtr&lt; T &gt;</a>
-<li>OpenFromFile()
-: <a class="el" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db">sf::Music</a>
-<li>OpenFromMemory()
-: <a class="el" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017">sf::Music</a>
-<li>OpeningDataConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">sf::Ftp::Ftp::Response</a>
-<li>operator bool()
-: <a class="el" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6">sf::Packet</a>
-<li>operator const T *()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de">sf::ResourcePtr&lt; T &gt;</a>
-<li>operator std::string()
-: <a class="el" href="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb">sf::Unicode::Unicode::Text</a>
-<li>operator!=()
-: <a class="el" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821">sf::VideoMode</a>
-, <a class="el" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5">sf::Color</a>
-, <a class="el" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24">sf::SocketUDP</a>
-<li>operator()()
-: <a class="el" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8">sf::Matrix3</a>
-<li>operator*()
-: <a class="el" href="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28">sf::Matrix3</a>
-, <a class="el" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071">sf::ResourcePtr&lt; T &gt;</a>
-<li>operator*=()
-: <a class="el" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386">sf::Color</a>
-, <a class="el" href="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966">sf::Matrix3</a>
-<li>operator+=()
-: <a class="el" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf">sf::Color</a>
-<li>operator-&gt;()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a">sf::ResourcePtr&lt; T &gt;</a>
-<li>operator&lt;()
-: <a class="el" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95">sf::SocketUDP</a>
-<li>operator&lt;&lt;()
-: <a class="el" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550">sf::Packet</a>
-<li>operator&lt;=()
-: <a class="el" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be">sf::IPAddress</a>
-<li>operator=()
-: <a class="el" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba">sf::PostFX</a>
-, <a class="el" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3">sf::Image</a>
-, <a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">sf::Resource&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574">sf::ResourcePtr&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49">sf::SoundBuffer</a>
-<li>operator==()
-: <a class="el" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955">sf::Color</a>
-, <a class="el" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1">sf::VideoMode</a>
-<li>operator&gt;()
-: <a class="el" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0">sf::IPAddress</a>
-<li>operator&gt;=()
-: <a class="el" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b">sf::IPAddress</a>
-<li>operator&gt;&gt;()
-: <a class="el" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16">sf::Packet</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x70.htm b/doc/html/functions_0x70.htm
deleted file mode 100755
index 8ece1bf..0000000
--- a/doc/html/functions_0x70.htm
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li class="current"><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>Packet()
-: <a class="el" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858">sf::Packet</a>
-<li>PageTypeUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">sf::Ftp::Ftp::Response</a>
-<li>ParameterNotImplemented
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">sf::Ftp::Ftp::Response</a>
-<li>ParametersUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">sf::Ftp::Ftp::Response</a>
-<li>ParentDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6">sf::Ftp</a>
-<li>Pause()
-: <a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">sf::Sound</a>
-<li>Paused
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">sf::Sound</a>
-<li>Play()
-: <a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">sf::SoundStream</a>
-<li>Playing
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">sf::Sound</a>
-<li>PointlessCommand
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">sf::Ftp::Ftp::Response</a>
-<li>Post
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138">sf::Http::Http::Request</a>
-<li>PostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#4ec47ed9e2539b589695854e2b259b47">sf::PostFX</a>
-<li>PreserveOpenGLStates()
-: <a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">sf::RenderTarget</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x72.htm b/doc/html/functions_0x72.htm
deleted file mode 100755
index 7b202b6..0000000
--- a/doc/html/functions_0x72.htm
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li class="current"><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>r
-: <a class="el" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">sf::Color</a>
-<li>Random()
-: <a class="el" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575">sf::Randomizer</a>
-<li>Receive()
-: <a class="el" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996">sf::SocketUDP</a>
-<li>Rect()
-: <a class="el" href="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37">sf::Rect&lt; T &gt;</a>
-<li>Rectangle
-: <a class="el" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">sf::Glyph</a>
-, <a class="el" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498">sf::Shape</a>
-<li>Red
-: <a class="el" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">sf::Color</a>
-<li>Regular
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204">sf::String</a>
-<li>Remove()
-: <a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6">sf::Selector&lt; Type &gt;</a>
-<li>RenameFile()
-: <a class="el" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c">sf::Ftp</a>
-<li>Render()
-: <a class="el" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc">sf::PostFX</a>
-, <a class="el" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31">sf::Shape</a>
-, <a class="el" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b">sf::Sprite</a>
-, <a class="el" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908">sf::String</a>
-<li>RenderTarget()
-: <a class="el" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">sf::RenderTarget</a>
-<li>RenderWindow()
-: <a class="el" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021">sf::RenderWindow</a>
-<li>Request()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72">sf::Http::Http::Request</a>
-<li>Reset()
-: <a class="el" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec">sf::Clock</a>
-<li>ResetBuffer()
-: <a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">sf::Sound</a>
-<li>Resize()
-: <a class="el" href="classsf_1_1Sprite.htm#7cc9df731a61f91ecd16b4a84de499aa">sf::Sprite</a>
-<li>Resource()
-: <a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">sf::Resource&lt; T &gt;</a>
-<li>ResourcePtr()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#d773b258e867b27f654673fa2147728b">sf::ResourcePtr&lt; T &gt;</a>
-<li>Response()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2">sf::Http::Http::Response</a>
-<li>RestartMarkerReply
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">sf::Ftp::Ftp::Response</a>
-<li>Right
-: <a class="el" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">sf::Rect&lt; T &gt;</a>
-<li>Rotate()
-: <a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">sf::Drawable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x73.htm b/doc/html/functions_0x73.htm
deleted file mode 100755
index 7d4056e..0000000
--- a/doc/html/functions_0x73.htm
+++ /dev/null
@@ -1,261 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li class="current"><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>Samples
-: <a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449">sf::SoundStream::SoundStream::Chunk</a>
-<li>SaveToFile()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08">sf::Image</a>
-<li>Scale()
-: <a class="el" href="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd">sf::Drawable</a>
-<li>SelectorBase()
-: <a class="el" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">sf::SelectorBase</a>
-<li>Send()
-: <a class="el" href="classsf_1_1SocketTCP.htm#a1825883276970b3d2f9b1d61763e5c7">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21">sf::SocketTCP</a>
-<li>SendRequest()
-: <a class="el" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61">sf::Http</a>
-<li>ServiceNotAvailable
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c">sf::Http::Http::Response</a>
-<li>ServiceReady
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">sf::Ftp::Ftp::Response</a>
-<li>ServiceReadySoon
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">sf::Ftp::Ftp::Response</a>
-<li>ServiceUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">sf::Ftp::Ftp::Response</a>
-<li>SetActive()
-: <a class="el" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7">sf::Context</a>
-, <a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">sf::Window</a>
-<li>SetAttenuation()
-: <a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">sf::Sound</a>
-<li>SetBlendMode()
-: <a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">sf::Drawable</a>
-<li>SetBlocking()
-: <a class="el" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8">sf::SocketHelper</a>
-<li>SetBody()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46">sf::Http::Http::Request</a>
-<li>SetBuffer()
-: <a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">sf::Sound</a>
-<li>SetCenter()
-: <a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">sf::Drawable</a>
-, <a class="el" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86">sf::View</a>
-<li>SetColor()
-: <a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">sf::Drawable</a>
-<li>SetCursorPosition()
-: <a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">sf::Window</a>
-<li>SetField()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e">sf::Http::Http::Request</a>
-<li>SetFont()
-: <a class="el" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003">sf::String</a>
-<li>SetFramerateLimit()
-: <a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">sf::Window</a>
-<li>SetFromRect()
-: <a class="el" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee">sf::View</a>
-<li>SetFromTransformations()
-: <a class="el" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d">sf::Matrix3</a>
-<li>SetGlobalVolume()
-: <a class="el" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84">sf::Listener</a>
-<li>SetHalfSize()
-: <a class="el" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a">sf::View</a>
-<li>SetHost()
-: <a class="el" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f">sf::Http</a>
-<li>SetHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd">sf::Http::Http::Request</a>
-<li>SetIcon()
-: <a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">sf::Window</a>
-<li>SetImage()
-: <a class="el" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c">sf::Sprite</a>
-<li>SetJoystickThreshold()
-: <a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">sf::Window</a>
-<li>SetLoop()
-: <a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">sf::SoundStream</a>
-<li>SetMethod()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53">sf::Http::Http::Request</a>
-<li>SetMinDistance()
-: <a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">sf::Sound</a>
-<li>SetOutlineWidth()
-: <a class="el" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65">sf::Shape</a>
-<li>SetParameter()
-: <a class="el" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a">sf::PostFX</a>
-<li>SetPitch()
-: <a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">sf::Sound</a>
-<li>SetPixel()
-: <a class="el" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584">sf::Image</a>
-<li>SetPlayingOffset()
-: <a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">sf::Sound</a>
-<li>SetPointColor()
-: <a class="el" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769">sf::Shape</a>
-<li>SetPointOutlineColor()
-: <a class="el" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe">sf::Shape</a>
-<li>SetPointPosition()
-: <a class="el" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e">sf::Shape</a>
-<li>SetPosition()
-: <a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">sf::Drawable</a>
-, <a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">sf::Window</a>
-, <a class="el" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">sf::Sound</a>
-, <a class="el" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48">sf::Listener</a>
-, <a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">sf::Sound</a>
-<li>SetRelativeToListener()
-: <a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">sf::Sound</a>
-<li>SetRotation()
-: <a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">sf::Drawable</a>
-<li>SetScale()
-: <a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">sf::Drawable</a>
-<li>SetScaleX()
-: <a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">sf::Drawable</a>
-<li>SetScaleY()
-: <a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">sf::Drawable</a>
-<li>SetSeed()
-: <a class="el" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937">sf::Randomizer</a>
-<li>SetSize()
-: <a class="el" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb">sf::String</a>
-, <a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">sf::Window</a>
-<li>SetSmooth()
-: <a class="el" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452">sf::Image</a>
-<li>SetStyle()
-: <a class="el" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c">sf::String</a>
-<li>SetSubRect()
-: <a class="el" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df">sf::Sprite</a>
-<li>SetTarget()
-: <a class="el" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf">sf::Listener</a>
-<li>SetText()
-: <a class="el" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8">sf::String</a>
-<li>SetTexture()
-: <a class="el" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1">sf::PostFX</a>
-<li>SetURI()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac">sf::Http::Http::Request</a>
-<li>SetView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">sf::RenderTarget</a>
-<li>SetVolume()
-: <a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">sf::Sound</a>
-<li>SetX()
-: <a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">sf::Drawable</a>
-<li>SetY()
-: <a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">sf::Drawable</a>
-<li>Shape()
-: <a class="el" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960">sf::Shape</a>
-<li>Show()
-: <a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">sf::Window</a>
-<li>ShowMouseCursor()
-: <a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">sf::Window</a>
-<li>SocketTCP()
-: <a class="el" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa">sf::SocketTCP</a>
-<li>SocketUDP()
-: <a class="el" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901">sf::SocketUDP</a>
-<li>Sound()
-: <a class="el" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">sf::Sound</a>
-<li>SoundBuffer()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233">sf::SoundBuffer</a>
-<li>SoundRecorder()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">sf::SoundRecorder</a>
-<li>SoundStream()
-: <a class="el" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">sf::SoundStream</a>
-<li>Sprite()
-: <a class="el" href="classsf_1_1Sprite.htm#6992dc47da2f9349bbe691db532f2436">sf::Sprite</a>
-<li>Start()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">sf::SoundRecorder</a>
-<li>Status
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">sf::Http::Http::Response</a>
-, <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">sf::Sound</a>
-, <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">sf::Ftp::Ftp::Response</a>
-<li>StencilBits
-: <a class="el" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">sf::WindowSettings</a>
-<li>Stop()
-: <a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">sf::SoundRecorder</a>
-, <a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">sf::Sound</a>
-<li>Stopped
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">sf::Sound</a>
-<li>String()
-: <a class="el" href="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692">sf::String</a>
-<li>Style
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">sf::String</a>
-<li>SystemStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">sf::Ftp::Ftp::Response</a>
-<li>SystemType
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">sf::Ftp::Ftp::Response</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x74.htm b/doc/html/functions_0x74.htm
deleted file mode 100755
index 182082d..0000000
--- a/doc/html/functions_0x74.htm
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li class="current"><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Terminate()
-: <a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">sf::Thread</a>
-<li>TexCoords
-: <a class="el" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">sf::Glyph</a>
-<li>Text()
-: <a class="el" href="classsf_1_1Unicode_1_1Text.htm#ce4c2b97e31442ab88ea8eabf75ff4e6">sf::Unicode::Unicode::Text</a>
-<li>Thread()
-: <a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">sf::Thread</a>
-<li>ToInteger()
-: <a class="el" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c">sf::IPAddress</a>
-<li>Top
-: <a class="el" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">sf::Rect&lt; T &gt;</a>
-<li>ToString()
-: <a class="el" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643">sf::IPAddress</a>
-<li>TransferAborted
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">sf::Ftp::Ftp::Response</a>
-<li>TransferMode
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">sf::Ftp</a>
-<li>Transform()
-: <a class="el" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151">sf::Matrix3</a>
-<li>TransformToGlobal()
-: <a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">sf::Drawable</a>
-<li>TransformToLocal()
-: <a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">sf::Drawable</a>
-<li>Type
-: <a class="el" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">sf::Event</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x75.htm b/doc/html/functions_0x75.htm
deleted file mode 100755
index b779161..0000000
--- a/doc/html/functions_0x75.htm
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li class="current"><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>Unauthorized
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e">sf::Http::Http::Response</a>
-<li>Unbind()
-: <a class="el" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c">sf::SocketUDP</a>
-<li>Underlined
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e">sf::String</a>
-<li>Unlock()
-: <a class="el" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a">sf::Mutex</a>
-<li>Upload()
-: <a class="el" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528">sf::Ftp</a>
-<li>UseVerticalSync()
-: <a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">sf::Window</a>
-<li>UTF16ToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8">sf::Unicode</a>
-<li>UTF16ToUTF8()
-: <a class="el" href="classsf_1_1Unicode.htm#ffa58d1796721da957505354d48e2e74">sf::Unicode</a>
-<li>UTF32ToANSI()
-: <a class="el" href="classsf_1_1Unicode.htm#f6acf0453625fe05fc7a86f4cc9a5cf1">sf::Unicode</a>
-<li>UTF32ToUTF16()
-: <a class="el" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b">sf::Unicode</a>
-<li>UTF32ToUTF8()
-: <a class="el" href="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081">sf::Unicode</a>
-<li>UTF8String
-: <a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">sf::Unicode</a>
-<li>UTF8ToUTF16()
-: <a class="el" href="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e">sf::Unicode</a>
-<li>UTF8ToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545">sf::Unicode</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x76.htm b/doc/html/functions_0x76.htm
deleted file mode 100755
index d2befe3..0000000
--- a/doc/html/functions_0x76.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li class="current"><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>Vector2()
-: <a class="el" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988">sf::Vector2&lt; T &gt;</a>
-<li>Vector3()
-: <a class="el" href="classsf_1_1Vector3.htm#99ed75b68f58adfa3e9fa0561b424bf6">sf::Vector3&lt; T &gt;</a>
-<li>VideoMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1">sf::VideoMode</a>
-<li>View()
-: <a class="el" href="classsf_1_1View.htm#0323ca80f81ad7feb877d328a0fdbb60">sf::View</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x77.htm b/doc/html/functions_0x77.htm
deleted file mode 100755
index 105c9c9..0000000
--- a/doc/html/functions_0x77.htm
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li class="current"><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>Wait()
-: <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">sf::Thread</a>
-<li>White
-: <a class="el" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">sf::Color</a>
-<li>Width
-: <a class="el" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">sf::VideoMode</a>
-<li>Window()
-: <a class="el" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">sf::Window</a>
-<li>WindowSettings()
-: <a class="el" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb">sf::WindowSettings</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x78.htm b/doc/html/functions_0x78.htm
deleted file mode 100755
index 2dbc7b1..0000000
--- a/doc/html/functions_0x78.htm
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li class="current"><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>x
-: <a class="el" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">sf::Vector2&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">sf::Vector3&lt; T &gt;</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x79.htm b/doc/html/functions_0x79.htm
deleted file mode 100755
index 0def73d..0000000
--- a/doc/html/functions_0x79.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li class="current"><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
-<li>y
-: <a class="el" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">sf::Vector2&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">sf::Vector3&lt; T &gt;</a>
-<li>Yellow
-: <a class="el" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">sf::Color</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x7a.htm b/doc/html/functions_0x7a.htm
deleted file mode 100755
index 0c094e9..0000000
--- a/doc/html/functions_0x7a.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li class="current"><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_z">- z -</a></h3><ul>
-<li>z
-: <a class="el" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">sf::Vector3&lt; T &gt;</a>
-<li>Zoom()
-: <a class="el" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1">sf::View</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_0x7e.htm b/doc/html/functions_0x7e.htm
deleted file mode 100755
index 5f359eb..0000000
--- a/doc/html/functions_0x7e.htm
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_0x78.htm#index_x"><span>x</span></a></li>
- <li><a href="functions_0x79.htm#index_y"><span>y</span></a></li>
- <li><a href="functions_0x7a.htm#index_z"><span>z</span></a></li>
- <li class="current"><a href="functions_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented class members with links to the class documentation for each member:
-<p>
-<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~AudioResource()
-: <a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">sf::AudioResource</a>
-<li>~Context()
-: <a class="el" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b">sf::Context</a>
-<li>~Drawable()
-: <a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">sf::Drawable</a>
-<li>~Ftp()
-: <a class="el" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52">sf::Ftp</a>
-<li>~Image()
-: <a class="el" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83">sf::Image</a>
-<li>~Lock()
-: <a class="el" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5">sf::Lock</a>
-<li>~Music()
-: <a class="el" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b">sf::Music</a>
-<li>~Mutex()
-: <a class="el" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2">sf::Mutex</a>
-<li>~Packet()
-: <a class="el" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5">sf::Packet</a>
-<li>~PostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63">sf::PostFX</a>
-<li>~RenderTarget()
-: <a class="el" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">sf::RenderTarget</a>
-<li>~RenderWindow()
-: <a class="el" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020">sf::RenderWindow</a>
-<li>~Resource()
-: <a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">sf::Resource&lt; T &gt;</a>
-<li>~ResourcePtr()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd">sf::ResourcePtr&lt; T &gt;</a>
-<li>~Sound()
-: <a class="el" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">sf::Sound</a>
-<li>~SoundBuffer()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5">sf::SoundBuffer</a>
-<li>~SoundRecorder()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">sf::SoundRecorder</a>
-<li>~SoundStream()
-: <a class="el" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">sf::SoundStream</a>
-<li>~Thread()
-: <a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">sf::Thread</a>
-<li>~Window()
-: <a class="el" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">sf::Window</a>
-<li>~WindowListener()
-: <a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">sf::WindowListener</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_enum.htm b/doc/html/functions_enum.htm
deleted file mode 100755
index 0b3bb6b..0000000
--- a/doc/html/functions_enum.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li class="current"><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>EventType
-: <a class="el" href="classsf_1_1Event.htm#f41fa9ed45c02449030699f671331d4a">sf::Event</a>
-<li>Method
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598">sf::Http::Http::Request</a>
-<li>Status
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195">sf::Sound</a>
-, <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8">sf::Http::Http::Response</a>
-<li>Style
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d8">sf::String</a>
-<li>TransferMode
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb">sf::Ftp</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_eval.htm b/doc/html/functions_eval.htm
deleted file mode 100755
index afd25f1..0000000
--- a/doc/html/functions_eval.htm
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li class="current"><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_u"><span>u</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>Accepted
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae">sf::Http::Http::Response</a>
-<li>Ascii
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2">sf::Ftp</a>
-</ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>BadCommandSequence
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb">sf::Ftp::Ftp::Response</a>
-<li>BadGateway
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9">sf::Http::Http::Response</a>
-<li>BadRequest
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa">sf::Http::Http::Response</a>
-<li>Binary
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee">sf::Ftp</a>
-<li>Bold
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0">sf::String</a>
-</ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>ClosingConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78">sf::Ftp::Ftp::Response</a>
-<li>ClosingDataConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601">sf::Ftp::Ftp::Response</a>
-<li>CommandNotImplemented
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56">sf::Ftp::Ftp::Response</a>
-<li>CommandUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9">sf::Ftp::Ftp::Response</a>
-<li>ConnectionClosed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6">sf::Ftp::Ftp::Response</a>
-<li>ConnectionFailed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa">sf::Http::Http::Response</a>
-<li>Created
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0">sf::Http::Http::Response</a>
-</ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DataConnectionAlreadyOpened
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f">sf::Ftp::Ftp::Response</a>
-<li>DataConnectionOpened
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c">sf::Ftp::Ftp::Response</a>
-<li>DataConnectionUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48">sf::Ftp::Ftp::Response</a>
-<li>DirectoryOk
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab">sf::Ftp::Ftp::Response</a>
-<li>DirectoryStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Ebcdic
-: <a class="el" href="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4">sf::Ftp</a>
-<li>EnteringPassiveMode
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>FileActionAborted
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664">sf::Ftp::Ftp::Response</a>
-<li>FileActionOk
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b">sf::Ftp::Ftp::Response</a>
-<li>FilenameNotAllowed
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86">sf::Ftp::Ftp::Response</a>
-<li>FileStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0">sf::Ftp::Ftp::Response</a>
-<li>FileUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1">sf::Ftp::Ftp::Response</a>
-<li>Forbidden
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf">sf::Http::Http::Response</a>
-</ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>Get
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00">sf::Http::Http::Request</a>
-</ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>Head
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5">sf::Http::Http::Request</a>
-<li>HelpMessage
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>InsufficientStorageSpace
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee">sf::Ftp::Ftp::Response</a>
-<li>InternalServerError
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a">sf::Http::Http::Response</a>
-<li>InvalidFile
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935">sf::Ftp::Ftp::Response</a>
-<li>InvalidResponse
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8">sf::Http::Http::Response</a>
-<li>Italic
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234">sf::String</a>
-</ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>LocalError
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535">sf::Ftp::Ftp::Response</a>
-<li>LoggedIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>MovedPermanently
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0">sf::Http::Http::Response</a>
-<li>MovedTemporarily
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015">sf::Http::Http::Response</a>
-<li>MultipleChoices
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2">sf::Http::Http::Response</a>
-</ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NeedAccountToLogIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0">sf::Ftp::Ftp::Response</a>
-<li>NeedAccountToStore
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4">sf::Ftp::Ftp::Response</a>
-<li>NeedInformation
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1">sf::Ftp::Ftp::Response</a>
-<li>NeedPassword
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b">sf::Ftp::Ftp::Response</a>
-<li>NoContent
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3">sf::Http::Http::Response</a>
-<li>NotEnoughMemory
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3">sf::Ftp::Ftp::Response</a>
-<li>NotFound
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41">sf::Http::Http::Response</a>
-<li>NotImplemented
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf">sf::Http::Http::Response</a>
-<li>NotLoggedIn
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69">sf::Ftp::Ftp::Response</a>
-<li>NotModified
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56">sf::Http::Http::Response</a>
-</ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>Ok
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5">sf::Http::Http::Response</a>
-<li>OpeningDataConnection
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>PageTypeUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a">sf::Ftp::Ftp::Response</a>
-<li>ParameterNotImplemented
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450">sf::Ftp::Ftp::Response</a>
-<li>ParametersUnknown
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05">sf::Ftp::Ftp::Response</a>
-<li>Paused
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f">sf::Sound</a>
-<li>Playing
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288">sf::Sound</a>
-<li>PointlessCommand
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861">sf::Ftp::Ftp::Response</a>
-<li>Post
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138">sf::Http::Http::Request</a>
-</ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>Regular
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204">sf::String</a>
-<li>RestartMarkerReply
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>ServiceNotAvailable
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c">sf::Http::Http::Response</a>
-<li>ServiceReady
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2">sf::Ftp::Ftp::Response</a>
-<li>ServiceReadySoon
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e">sf::Ftp::Ftp::Response</a>
-<li>ServiceUnavailable
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740">sf::Ftp::Ftp::Response</a>
-<li>Stopped
-: <a class="el" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9">sf::Sound</a>
-<li>SystemStatus
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165">sf::Ftp::Ftp::Response</a>
-<li>SystemType
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>TransferAborted
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7">sf::Ftp::Ftp::Response</a>
-</ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>Unauthorized
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e">sf::Http::Http::Response</a>
-<li>Underlined
-: <a class="el" href="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e">sf::String</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func.htm b/doc/html/functions_func.htm
deleted file mode 100755
index 7fad326..0000000
--- a/doc/html/functions_func.htm
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>Accept()
-: <a class="el" href="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107">sf::SocketTCP</a>
-<li>Add()
-: <a class="el" href="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f">sf::SelectorBase</a>
-<li>AddPoint()
-: <a class="el" href="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92">sf::Shape</a>
-<li>ANSIToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a">sf::Unicode</a>
-<li>Append()
-: <a class="el" href="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64">sf::Packet</a>
-<li>AudioResource()
-: <a class="el" href="classsf_1_1AudioResource.htm#72180730c0d811d1a9c5d0c9c9a71907">sf::AudioResource</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x62.htm b/doc/html/functions_func_0x62.htm
deleted file mode 100755
index b2e0a11..0000000
--- a/doc/html/functions_func_0x62.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li class="current"><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>Bind()
-: <a class="el" href="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7">sf::Image</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d">sf::SocketUDP</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x63.htm b/doc/html/functions_func_0x63.htm
deleted file mode 100755
index a6ac075..0000000
--- a/doc/html/functions_func_0x63.htm
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li class="current"><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>CanCapture()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5">sf::SoundRecorder</a>
-<li>CanUsePostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e">sf::PostFX</a>
-<li>Capture()
-: <a class="el" href="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a">sf::RenderWindow</a>
-<li>ChangeDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc">sf::Ftp</a>
-<li>Circle()
-: <a class="el" href="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0">sf::Shape</a>
-<li>Clear()
-: <a class="el" href="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da">sf::Packet</a>
-, <a class="el" href="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e">sf::RenderTarget</a>
-<li>Clock()
-: <a class="el" href="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd">sf::Clock</a>
-<li>Close()
-: <a class="el" href="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232">sf::SocketHelper</a>
-, <a class="el" href="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c">sf::Window</a>
-<li>Color()
-: <a class="el" href="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4">sf::Color</a>
-<li>Connect()
-: <a class="el" href="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c">sf::Ftp</a>
-<li>Contains()
-: <a class="el" href="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7">sf::Rect&lt; T &gt;</a>
-<li>Context()
-: <a class="el" href="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555">sf::Context</a>
-<li>ConvertCoords()
-: <a class="el" href="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17">sf::RenderWindow</a>
-<li>Copy()
-: <a class="el" href="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2">sf::Image</a>
-<li>CopyScreen()
-: <a class="el" href="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974">sf::Image</a>
-<li>Create()
-: <a class="el" href="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61">sf::Window</a>
-, <a class="el" href="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde">sf::Image</a>
-, <a class="el" href="classsf_1_1Window.htm#58e264c181fd70e67986d26fea69a71d">sf::Window</a>
-<li>CreateMaskFromColor()
-: <a class="el" href="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50">sf::Image</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x64.htm b/doc/html/functions_func_0x64.htm
deleted file mode 100755
index 231f906..0000000
--- a/doc/html/functions_func_0x64.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li class="current"><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DeleteDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32">sf::Ftp</a>
-<li>DeleteFile()
-: <a class="el" href="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9">sf::Ftp</a>
-<li>DirectoryResponse()
-: <a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc">sf::Ftp::Ftp::DirectoryResponse</a>
-<li>Disconnect()
-: <a class="el" href="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc">sf::Ftp</a>
-<li>Display()
-: <a class="el" href="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435">sf::Window</a>
-<li>Download()
-: <a class="el" href="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886">sf::Ftp</a>
-<li>Draw()
-: <a class="el" href="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff">sf::RenderTarget</a>
-<li>Drawable()
-: <a class="el" href="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc">sf::Drawable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x65.htm b/doc/html/functions_func_0x65.htm
deleted file mode 100755
index fadf439..0000000
--- a/doc/html/functions_func_0x65.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li class="current"><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>EnableFill()
-: <a class="el" href="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae">sf::Shape</a>
-<li>EnableKeyRepeat()
-: <a class="el" href="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0">sf::Window</a>
-<li>EnableOutline()
-: <a class="el" href="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26">sf::Shape</a>
-<li>EndOfPacket()
-: <a class="el" href="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36">sf::Packet</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x66.htm b/doc/html/functions_func_0x66.htm
deleted file mode 100755
index 6a75178..0000000
--- a/doc/html/functions_func_0x66.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li class="current"><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>FlipX()
-: <a class="el" href="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b">sf::Sprite</a>
-<li>FlipY()
-: <a class="el" href="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97">sf::Sprite</a>
-<li>Font()
-: <a class="el" href="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583">sf::Font</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x67.htm b/doc/html/functions_func_0x67.htm
deleted file mode 100755
index 1e2f37c..0000000
--- a/doc/html/functions_func_0x67.htm
+++ /dev/null
@@ -1,276 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li class="current"><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>Get4x4Elements()
-: <a class="el" href="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1">sf::Matrix3</a>
-<li>GetAttenuation()
-: <a class="el" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">sf::Sound</a>
-<li>GetBlendMode()
-: <a class="el" href="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a">sf::Drawable</a>
-<li>GetBody()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179">sf::Http::Http::Response</a>
-<li>GetBuffer()
-: <a class="el" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8">sf::SoundBufferRecorder</a>
-<li>GetCenter()
-: <a class="el" href="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd">sf::View</a>
-, <a class="el" href="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0">sf::Drawable</a>
-<li>GetChannelsCount()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858">sf::SoundStream</a>
-<li>GetCharacterPos()
-: <a class="el" href="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210">sf::String</a>
-<li>GetCharacterSize()
-: <a class="el" href="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc">sf::Font</a>
-<li>GetColor()
-: <a class="el" href="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8">sf::Drawable</a>
-<li>GetCount()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522">sf::Ftp::Ftp::ListingResponse</a>
-<li>GetData()
-: <a class="el" href="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a">sf::Packet</a>
-<li>GetDataSize()
-: <a class="el" href="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d">sf::Packet</a>
-<li>GetDefaultFont()
-: <a class="el" href="classsf_1_1Font.htm#128c377d51263288be98565771c48e36">sf::Font</a>
-<li>GetDefaultView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699">sf::RenderTarget</a>
-<li>GetDesktopMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea">sf::VideoMode</a>
-<li>GetDirectory()
-: <a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799">sf::Ftp::Ftp::DirectoryResponse</a>
-<li>GetDirectoryListing()
-: <a class="el" href="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357">sf::Ftp</a>
-<li>GetDuration()
-: <a class="el" href="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50">sf::Music</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984">sf::SoundBuffer</a>
-<li>GetElapsedTime()
-: <a class="el" href="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995">sf::Clock</a>
-<li>GetErrorStatus()
-: <a class="el" href="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83">sf::SocketHelper</a>
-<li>GetEvent()
-: <a class="el" href="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8">sf::Window</a>
-<li>GetField()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330">sf::Http::Http::Response</a>
-<li>GetFilename()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922">sf::Ftp::Ftp::ListingResponse</a>
-<li>GetFont()
-: <a class="el" href="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11">sf::String</a>
-<li>GetFrameTime()
-: <a class="el" href="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254">sf::Window</a>
-<li>GetGlobal()
-: <a class="el" href="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692">sf::Context</a>
-<li>GetGlobalVolume()
-: <a class="el" href="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19">sf::Listener</a>
-<li>GetGlyph()
-: <a class="el" href="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6">sf::Font</a>
-<li>GetHalfSize()
-: <a class="el" href="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47">sf::View</a>
-<li>GetHeight()
-: <a class="el" href="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89">sf::Image</a>
-, <a class="el" href="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75">sf::Rect&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a">sf::RenderTarget</a>
-, <a class="el" href="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447">sf::RenderWindow</a>
-, <a class="el" href="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947">sf::Window</a>
-<li>GetImage()
-: <a class="el" href="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8">sf::Font</a>
-, <a class="el" href="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca">sf::Sprite</a>
-<li>GetInput()
-: <a class="el" href="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919">sf::Window</a>
-<li>GetInverse()
-: <a class="el" href="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e">sf::Matrix3</a>
-<li>GetInverseMatrix()
-: <a class="el" href="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f">sf::Drawable</a>
-<li>GetJoystickAxis()
-: <a class="el" href="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896">sf::Input</a>
-<li>GetLocalAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e">sf::IPAddress</a>
-<li>GetLoop()
-: <a class="el" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78">sf::SoundStream</a>
-<li>GetMajorHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a">sf::Http::Http::Response</a>
-<li>GetMatrix()
-: <a class="el" href="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e">sf::Drawable</a>
-<li>GetMessage()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5">sf::Ftp::Ftp::Response</a>
-<li>GetMinDistance()
-: <a class="el" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">sf::Sound</a>
-<li>GetMinorHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b">sf::Http::Http::Response</a>
-<li>GetMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2">sf::VideoMode</a>
-<li>GetModesCount()
-: <a class="el" href="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723">sf::VideoMode</a>
-<li>GetMouseX()
-: <a class="el" href="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3">sf::Input</a>
-<li>GetMouseY()
-: <a class="el" href="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796">sf::Input</a>
-<li>GetNbPoints()
-: <a class="el" href="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350">sf::Shape</a>
-<li>GetOutlineWidth()
-: <a class="el" href="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087">sf::Shape</a>
-<li>GetPitch()
-: <a class="el" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">sf::Sound</a>
-<li>GetPixel()
-: <a class="el" href="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4">sf::Image</a>
-, <a class="el" href="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c">sf::Sprite</a>
-<li>GetPixelsPtr()
-: <a class="el" href="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022">sf::Image</a>
-<li>GetPlayingOffset()
-: <a class="el" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac">sf::SoundStream</a>
-<li>GetPointColor()
-: <a class="el" href="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92">sf::Shape</a>
-<li>GetPointOutlineColor()
-: <a class="el" href="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8">sf::Shape</a>
-<li>GetPointPosition()
-: <a class="el" href="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436">sf::Shape</a>
-<li>GetPort()
-: <a class="el" href="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd">sf::SocketUDP</a>
-<li>GetPosition()
-: <a class="el" href="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251">sf::Listener</a>
-, <a class="el" href="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b">sf::Drawable</a>
-, <a class="el" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">sf::Sound</a>
-<li>GetPublicAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956">sf::IPAddress</a>
-<li>GetRect()
-: <a class="el" href="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d">sf::String</a>
-, <a class="el" href="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd">sf::View</a>
-<li>GetRotation()
-: <a class="el" href="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017">sf::Drawable</a>
-<li>GetSampleRate()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5">sf::SoundRecorder</a>
-<li>GetSamples()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0">sf::SoundBuffer</a>
-<li>GetSamplesCount()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789">sf::SoundBuffer</a>
-<li>GetScale()
-: <a class="el" href="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97">sf::Drawable</a>
-<li>GetSeed()
-: <a class="el" href="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48">sf::Randomizer</a>
-<li>GetSettings()
-: <a class="el" href="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f">sf::Window</a>
-<li>GetSize()
-: <a class="el" href="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff">sf::String</a>
-, <a class="el" href="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e">sf::Sprite</a>
-<li>GetSocketReady()
-: <a class="el" href="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9">sf::Selector&lt; Type &gt;</a>
-<li>GetStatus()
-: <a class="el" href="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb">sf::Http::Http::Response</a>
-, <a class="el" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">sf::Sound</a>
-, <a class="el" href="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee">sf::Ftp::Ftp::Response</a>
-<li>GetStyle()
-: <a class="el" href="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df">sf::String</a>
-<li>GetSubRect()
-: <a class="el" href="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941">sf::Sprite</a>
-<li>GetTarget()
-: <a class="el" href="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a">sf::Listener</a>
-<li>GetTexCoords()
-: <a class="el" href="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56">sf::Image</a>
-<li>GetText()
-: <a class="el" href="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620">sf::String</a>
-<li>GetUTF16Length()
-: <a class="el" href="classsf_1_1Unicode.htm#42fea8bee18a53d10bf858273e4714a5">sf::Unicode</a>
-<li>GetUTF32Length()
-: <a class="el" href="classsf_1_1Unicode.htm#f5c502326c638af92a8ef7d40b119637">sf::Unicode</a>
-<li>GetUTF8Length()
-: <a class="el" href="classsf_1_1Unicode.htm#3fc67af453a678d16c4913197ddbe5c3">sf::Unicode</a>
-<li>GetValidTextureSize()
-: <a class="el" href="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488">sf::Image</a>
-<li>GetView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274">sf::RenderTarget</a>
-<li>GetVolume()
-: <a class="el" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">sf::Sound</a>
-<li>GetWidth()
-: <a class="el" href="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22">sf::Window</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681">sf::RenderTarget</a>
-, <a class="el" href="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087">sf::Rect&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7">sf::Image</a>
-, <a class="el" href="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c">sf::RenderWindow</a>
-<li>GetWorkingDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde">sf::Ftp</a>
-<li>Glyph()
-: <a class="el" href="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b">sf::Glyph</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x68.htm b/doc/html/functions_func_0x68.htm
deleted file mode 100755
index a40f5e3..0000000
--- a/doc/html/functions_func_0x68.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li class="current"><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>Http()
-: <a class="el" href="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067">sf::Http</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x69.htm b/doc/html/functions_func_0x69.htm
deleted file mode 100755
index 85bf47e..0000000
--- a/doc/html/functions_func_0x69.htm
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li class="current"><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>Image()
-: <a class="el" href="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12">sf::Image</a>
-<li>Initialize()
-: <a class="el" href="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24">sf::RenderTarget</a>
-<li>Input()
-: <a class="el" href="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f">sf::Input</a>
-<li>Intersects()
-: <a class="el" href="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272">sf::Rect&lt; T &gt;</a>
-<li>InvalidSocket()
-: <a class="el" href="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458">sf::SocketHelper</a>
-<li>IPAddress()
-: <a class="el" href="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831">sf::IPAddress</a>
-<li>IsContextActive()
-: <a class="el" href="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27">sf::Context</a>
-<li>IsJoystickButtonDown()
-: <a class="el" href="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08">sf::Input</a>
-<li>IsKeyDown()
-: <a class="el" href="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a">sf::Input</a>
-<li>IsMouseButtonDown()
-: <a class="el" href="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea">sf::Input</a>
-<li>IsOk()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134">sf::Ftp::Ftp::Response</a>
-<li>IsOpened()
-: <a class="el" href="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d">sf::Window</a>
-<li>IsRelativeToListener()
-: <a class="el" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">sf::Sound</a>
-<li>IsSmooth()
-: <a class="el" href="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3">sf::Image</a>
-<li>IsValid()
-: <a class="el" href="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c">sf::VideoMode</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f">sf::SocketUDP</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x6b.htm b/doc/html/functions_func_0x6b.htm
deleted file mode 100755
index 3f3342f..0000000
--- a/doc/html/functions_func_0x6b.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li class="current"><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>KeepAlive()
-: <a class="el" href="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4">sf::Ftp</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x6c.htm b/doc/html/functions_func_0x6c.htm
deleted file mode 100755
index e004a66..0000000
--- a/doc/html/functions_func_0x6c.htm
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li class="current"><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>Launch()
-: <a class="el" href="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642">sf::Thread</a>
-<li>Line()
-: <a class="el" href="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f">sf::Shape</a>
-<li>Listen()
-: <a class="el" href="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39">sf::SocketTCP</a>
-<li>ListingResponse()
-: <a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5">sf::Ftp::Ftp::ListingResponse</a>
-<li>LoadFromFile()
-: <a class="el" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b">sf::Image</a>
-, <a class="el" href="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92">sf::PostFX</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5">sf::Font</a>
-<li>LoadFromMemory()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b">sf::Font</a>
-, <a class="el" href="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486">sf::Image</a>
-, <a class="el" href="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6">sf::PostFX</a>
-<li>LoadFromPixels()
-: <a class="el" href="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c">sf::Image</a>
-<li>LoadFromSamples()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc">sf::SoundBuffer</a>
-<li>Lock()
-: <a class="el" href="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab">sf::Mutex</a>
-, <a class="el" href="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857">sf::Lock</a>
-<li>Login()
-: <a class="el" href="classsf_1_1Ftp.htm#1ed080612214df38a5f740d1ee49f082">sf::Ftp</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x6d.htm b/doc/html/functions_func_0x6d.htm
deleted file mode 100755
index 6a2da27..0000000
--- a/doc/html/functions_func_0x6d.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li class="current"><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>MakeDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#302127842055302365b0982077f11071">sf::Ftp</a>
-<li>Matrix3()
-: <a class="el" href="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c">sf::Matrix3</a>
-<li>Move()
-: <a class="el" href="classsf_1_1View.htm#e065331d6f2d450b3482c623c7506ced">sf::View</a>
-, <a class="el" href="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b">sf::Drawable</a>
-, <a class="el" href="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c">sf::View</a>
-<li>Music()
-: <a class="el" href="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6">sf::Music</a>
-<li>Mutex()
-: <a class="el" href="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e">sf::Mutex</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x6e.htm b/doc/html/functions_func_0x6e.htm
deleted file mode 100755
index b66624f..0000000
--- a/doc/html/functions_func_0x6e.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li class="current"><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NonCopyable()
-: <a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">sf::NonCopyable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x6f.htm b/doc/html/functions_func_0x6f.htm
deleted file mode 100755
index 8736a8e..0000000
--- a/doc/html/functions_func_0x6f.htm
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li class="current"><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>Offset()
-: <a class="el" href="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd">sf::Rect&lt; T &gt;</a>
-<li>OnEvent()
-: <a class="el" href="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f">sf::WindowListener</a>
-<li>OnResourceDestroyed()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9">sf::ResourcePtr&lt; T &gt;</a>
-<li>OpenFromFile()
-: <a class="el" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db">sf::Music</a>
-<li>OpenFromMemory()
-: <a class="el" href="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017">sf::Music</a>
-<li>operator bool()
-: <a class="el" href="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6">sf::Packet</a>
-<li>operator const T *()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de">sf::ResourcePtr&lt; T &gt;</a>
-<li>operator std::string()
-: <a class="el" href="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb">sf::Unicode::Unicode::Text</a>
-<li>operator!=()
-: <a class="el" href="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5">sf::Color</a>
-, <a class="el" href="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821">sf::VideoMode</a>
-<li>operator()()
-: <a class="el" href="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8">sf::Matrix3</a>
-<li>operator*()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071">sf::ResourcePtr&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28">sf::Matrix3</a>
-<li>operator*=()
-: <a class="el" href="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386">sf::Color</a>
-, <a class="el" href="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966">sf::Matrix3</a>
-<li>operator+=()
-: <a class="el" href="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf">sf::Color</a>
-<li>operator-&gt;()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a">sf::ResourcePtr&lt; T &gt;</a>
-<li>operator&lt;()
-: <a class="el" href="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce">sf::SocketTCP</a>
-<li>operator&lt;&lt;()
-: <a class="el" href="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550">sf::Packet</a>
-<li>operator&lt;=()
-: <a class="el" href="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be">sf::IPAddress</a>
-<li>operator=()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574">sf::ResourcePtr&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba">sf::PostFX</a>
-, <a class="el" href="classsf_1_1ResourcePtr.htm#23a9350a7565a26f0cc1bbadb917248d">sf::ResourcePtr&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60">sf::Resource&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">sf::Sound</a>
-, <a class="el" href="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3">sf::Image</a>
-<li>operator==()
-: <a class="el" href="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48">sf::IPAddress</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955">sf::Color</a>
-, <a class="el" href="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1">sf::VideoMode</a>
-<li>operator&gt;()
-: <a class="el" href="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0">sf::IPAddress</a>
-<li>operator&gt;=()
-: <a class="el" href="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b">sf::IPAddress</a>
-<li>operator&gt;&gt;()
-: <a class="el" href="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16">sf::Packet</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x70.htm b/doc/html/functions_func_0x70.htm
deleted file mode 100755
index 0650b00..0000000
--- a/doc/html/functions_func_0x70.htm
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li class="current"><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>Packet()
-: <a class="el" href="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858">sf::Packet</a>
-<li>ParentDirectory()
-: <a class="el" href="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6">sf::Ftp</a>
-<li>Pause()
-: <a class="el" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">sf::Sound</a>
-<li>Play()
-: <a class="el" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf">sf::SoundStream</a>
-<li>PostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb">sf::PostFX</a>
-<li>PreserveOpenGLStates()
-: <a class="el" href="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71">sf::RenderTarget</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x72.htm b/doc/html/functions_func_0x72.htm
deleted file mode 100755
index c386ca1..0000000
--- a/doc/html/functions_func_0x72.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li class="current"><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>Random()
-: <a class="el" href="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575">sf::Randomizer</a>
-<li>Receive()
-: <a class="el" href="classsf_1_1SocketTCP.htm#4389aa92523e0a6b3f2d6517cbde74fa">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0">sf::SocketTCP</a>
-, <a class="el" href="classsf_1_1SocketUDP.htm#463bbd635513f2653f072c2f220d2495">sf::SocketUDP</a>
-<li>Rect()
-: <a class="el" href="classsf_1_1Rect.htm#0f19f5cf78eb52f122b904fb258acfce">sf::Rect&lt; T &gt;</a>
-<li>Rectangle()
-: <a class="el" href="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498">sf::Shape</a>
-<li>Remove()
-: <a class="el" href="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e">sf::SelectorBase</a>
-<li>RenameFile()
-: <a class="el" href="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c">sf::Ftp</a>
-<li>Render()
-: <a class="el" href="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b">sf::Sprite</a>
-, <a class="el" href="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908">sf::String</a>
-, <a class="el" href="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc">sf::PostFX</a>
-, <a class="el" href="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31">sf::Shape</a>
-<li>RenderTarget()
-: <a class="el" href="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f">sf::RenderTarget</a>
-<li>RenderWindow()
-: <a class="el" href="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021">sf::RenderWindow</a>
-<li>Request()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72">sf::Http::Http::Request</a>
-<li>Reset()
-: <a class="el" href="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec">sf::Clock</a>
-<li>ResetBuffer()
-: <a class="el" href="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331">sf::Sound</a>
-<li>Resize()
-: <a class="el" href="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32">sf::Sprite</a>
-<li>Resource()
-: <a class="el" href="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130">sf::Resource&lt; T &gt;</a>
-<li>ResourcePtr()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#86ce8beb23f6c4d32e79192a39207c1e">sf::ResourcePtr&lt; T &gt;</a>
-<li>Response()
-: <a class="el" href="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2">sf::Ftp::Ftp::Response</a>
-, <a class="el" href="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2">sf::Http::Http::Response</a>
-<li>Rotate()
-: <a class="el" href="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419">sf::Drawable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x73.htm b/doc/html/functions_func_0x73.htm
deleted file mode 100755
index c4d74f5..0000000
--- a/doc/html/functions_func_0x73.htm
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li class="current"><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SaveToFile()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239">sf::SoundBuffer</a>
-, <a class="el" href="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08">sf::Image</a>
-<li>Scale()
-: <a class="el" href="classsf_1_1Drawable.htm#c969d85eaf63f072de9e963bd973e91a">sf::Drawable</a>
-<li>SelectorBase()
-: <a class="el" href="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d">sf::SelectorBase</a>
-<li>Send()
-: <a class="el" href="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21">sf::SocketTCP</a>
-<li>SendRequest()
-: <a class="el" href="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61">sf::Http</a>
-<li>SetActive()
-: <a class="el" href="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7">sf::Context</a>
-, <a class="el" href="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675">sf::Window</a>
-<li>SetAttenuation()
-: <a class="el" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">sf::Sound</a>
-<li>SetBlendMode()
-: <a class="el" href="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5">sf::Drawable</a>
-<li>SetBlocking()
-: <a class="el" href="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6">sf::SocketUDP</a>
-, <a class="el" href="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8">sf::SocketHelper</a>
-, <a class="el" href="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9">sf::SocketTCP</a>
-<li>SetBody()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46">sf::Http::Http::Request</a>
-<li>SetBuffer()
-: <a class="el" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">sf::Sound</a>
-<li>SetCenter()
-: <a class="el" href="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61">sf::Drawable</a>
-, <a class="el" href="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86">sf::View</a>
-<li>SetColor()
-: <a class="el" href="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb">sf::Drawable</a>
-<li>SetCursorPosition()
-: <a class="el" href="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55">sf::Window</a>
-<li>SetField()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e">sf::Http::Http::Request</a>
-<li>SetFont()
-: <a class="el" href="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003">sf::String</a>
-<li>SetFramerateLimit()
-: <a class="el" href="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33">sf::Window</a>
-<li>SetFromRect()
-: <a class="el" href="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee">sf::View</a>
-<li>SetFromTransformations()
-: <a class="el" href="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d">sf::Matrix3</a>
-<li>SetGlobalVolume()
-: <a class="el" href="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84">sf::Listener</a>
-<li>SetHalfSize()
-: <a class="el" href="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a">sf::View</a>
-<li>SetHost()
-: <a class="el" href="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f">sf::Http</a>
-<li>SetHttpVersion()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd">sf::Http::Http::Request</a>
-<li>SetIcon()
-: <a class="el" href="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa">sf::Window</a>
-<li>SetImage()
-: <a class="el" href="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c">sf::Sprite</a>
-<li>SetJoystickThreshold()
-: <a class="el" href="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91">sf::Window</a>
-<li>SetLoop()
-: <a class="el" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e">sf::SoundStream</a>
-<li>SetMethod()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53">sf::Http::Http::Request</a>
-<li>SetMinDistance()
-: <a class="el" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">sf::Sound</a>
-<li>SetOutlineWidth()
-: <a class="el" href="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65">sf::Shape</a>
-<li>SetParameter()
-: <a class="el" href="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a">sf::PostFX</a>
-<li>SetPitch()
-: <a class="el" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">sf::Sound</a>
-<li>SetPixel()
-: <a class="el" href="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584">sf::Image</a>
-<li>SetPlayingOffset()
-: <a class="el" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">sf::Sound</a>
-<li>SetPointColor()
-: <a class="el" href="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769">sf::Shape</a>
-<li>SetPointOutlineColor()
-: <a class="el" href="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe">sf::Shape</a>
-<li>SetPointPosition()
-: <a class="el" href="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e">sf::Shape</a>
-<li>SetPosition()
-: <a class="el" href="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589">sf::Drawable</a>
-, <a class="el" href="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48">sf::Listener</a>
-, <a class="el" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">sf::Sound</a>
-, <a class="el" href="classsf_1_1Drawable.htm#d2a279f3b13abf57cc25b2b4bd3b81ae">sf::Drawable</a>
-, <a class="el" href="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058">sf::Window</a>
-<li>SetRelativeToListener()
-: <a class="el" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">sf::Sound</a>
-<li>SetRotation()
-: <a class="el" href="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec">sf::Drawable</a>
-<li>SetScale()
-: <a class="el" href="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769">sf::Drawable</a>
-<li>SetScaleX()
-: <a class="el" href="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f">sf::Drawable</a>
-<li>SetScaleY()
-: <a class="el" href="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf">sf::Drawable</a>
-<li>SetSeed()
-: <a class="el" href="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937">sf::Randomizer</a>
-<li>SetSize()
-: <a class="el" href="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb">sf::String</a>
-, <a class="el" href="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef">sf::Window</a>
-<li>SetSmooth()
-: <a class="el" href="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452">sf::Image</a>
-<li>SetStyle()
-: <a class="el" href="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c">sf::String</a>
-<li>SetSubRect()
-: <a class="el" href="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df">sf::Sprite</a>
-<li>SetTarget()
-: <a class="el" href="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf">sf::Listener</a>
-<li>SetText()
-: <a class="el" href="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8">sf::String</a>
-<li>SetTexture()
-: <a class="el" href="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1">sf::PostFX</a>
-<li>SetURI()
-: <a class="el" href="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac">sf::Http::Http::Request</a>
-<li>SetView()
-: <a class="el" href="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1">sf::RenderTarget</a>
-<li>SetVolume()
-: <a class="el" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">sf::Sound</a>
-<li>SetX()
-: <a class="el" href="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e">sf::Drawable</a>
-<li>SetY()
-: <a class="el" href="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9">sf::Drawable</a>
-<li>Shape()
-: <a class="el" href="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960">sf::Shape</a>
-<li>Show()
-: <a class="el" href="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de">sf::Window</a>
-<li>ShowMouseCursor()
-: <a class="el" href="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0">sf::Window</a>
-<li>SocketTCP()
-: <a class="el" href="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa">sf::SocketTCP</a>
-<li>SocketUDP()
-: <a class="el" href="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901">sf::SocketUDP</a>
-<li>Sound()
-: <a class="el" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">sf::Sound</a>
-<li>SoundBuffer()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#deb60002d4c4a4d8511fb5aa7225224b">sf::SoundBuffer</a>
-<li>SoundRecorder()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9">sf::SoundRecorder</a>
-<li>SoundStream()
-: <a class="el" href="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c">sf::SoundStream</a>
-<li>Sprite()
-: <a class="el" href="classsf_1_1Sprite.htm#6992dc47da2f9349bbe691db532f2436">sf::Sprite</a>
-<li>Start()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6">sf::SoundRecorder</a>
-<li>Stop()
-: <a class="el" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">sf::Sound</a>
-, <a class="el" href="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df">sf::SoundStream</a>
-, <a class="el" href="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733">sf::SoundRecorder</a>
-<li>String()
-: <a class="el" href="classsf_1_1String.htm#30f985ba0047a5fbe7f9aca68083212c">sf::String</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x74.htm b/doc/html/functions_func_0x74.htm
deleted file mode 100755
index 6decf6c..0000000
--- a/doc/html/functions_func_0x74.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li class="current"><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Terminate()
-: <a class="el" href="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b">sf::Thread</a>
-<li>Text()
-: <a class="el" href="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d">sf::Unicode::Unicode::Text</a>
-<li>Thread()
-: <a class="el" href="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173">sf::Thread</a>
-<li>ToInteger()
-: <a class="el" href="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c">sf::IPAddress</a>
-<li>ToString()
-: <a class="el" href="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643">sf::IPAddress</a>
-<li>Transform()
-: <a class="el" href="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151">sf::Matrix3</a>
-<li>TransformToGlobal()
-: <a class="el" href="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945">sf::Drawable</a>
-<li>TransformToLocal()
-: <a class="el" href="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008">sf::Drawable</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x75.htm b/doc/html/functions_func_0x75.htm
deleted file mode 100755
index 4e2b907..0000000
--- a/doc/html/functions_func_0x75.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li class="current"><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>Unbind()
-: <a class="el" href="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c">sf::SocketUDP</a>
-<li>Unlock()
-: <a class="el" href="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a">sf::Mutex</a>
-<li>Upload()
-: <a class="el" href="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528">sf::Ftp</a>
-<li>UseVerticalSync()
-: <a class="el" href="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5">sf::Window</a>
-<li>UTF16ToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#5e9edaac35984964ef3ad353f98f9f73">sf::Unicode</a>
-<li>UTF16ToUTF8()
-: <a class="el" href="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56">sf::Unicode</a>
-<li>UTF32ToANSI()
-: <a class="el" href="classsf_1_1Unicode.htm#f6acf0453625fe05fc7a86f4cc9a5cf1">sf::Unicode</a>
-<li>UTF32ToUTF16()
-: <a class="el" href="classsf_1_1Unicode.htm#b4b5c6e82a1ab1d9ed775653f082d58b">sf::Unicode</a>
-<li>UTF32ToUTF8()
-: <a class="el" href="classsf_1_1Unicode.htm#46bba10d3a323183c29b4cb288d053c1">sf::Unicode</a>
-<li>UTF8ToUTF16()
-: <a class="el" href="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e">sf::Unicode</a>
-<li>UTF8ToUTF32()
-: <a class="el" href="classsf_1_1Unicode.htm#c4a67f01b57053b697c573b0ab6a9545">sf::Unicode</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x76.htm b/doc/html/functions_func_0x76.htm
deleted file mode 100755
index dd38597..0000000
--- a/doc/html/functions_func_0x76.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li class="current"><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>Vector2()
-: <a class="el" href="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988">sf::Vector2&lt; T &gt;</a>
-<li>Vector3()
-: <a class="el" href="classsf_1_1Vector3.htm#99ed75b68f58adfa3e9fa0561b424bf6">sf::Vector3&lt; T &gt;</a>
-<li>VideoMode()
-: <a class="el" href="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1">sf::VideoMode</a>
-<li>View()
-: <a class="el" href="classsf_1_1View.htm#0323ca80f81ad7feb877d328a0fdbb60">sf::View</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x77.htm b/doc/html/functions_func_0x77.htm
deleted file mode 100755
index fbfea9b..0000000
--- a/doc/html/functions_func_0x77.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li class="current"><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>Wait()
-: <a class="el" href="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b">sf::Selector&lt; Type &gt;</a>
-, <a class="el" href="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f">sf::SelectorBase</a>
-, <a class="el" href="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2">sf::Thread</a>
-<li>Window()
-: <a class="el" href="classsf_1_1Window.htm#8a89aba8776a4eeb5393522a0e6513c9">sf::Window</a>
-<li>WindowSettings()
-: <a class="el" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb">sf::WindowSettings</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x7a.htm b/doc/html/functions_func_0x7a.htm
deleted file mode 100755
index 95ecbbc..0000000
--- a/doc/html/functions_func_0x7a.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li class="current"><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_z">- z -</a></h3><ul>
-<li>Zoom()
-: <a class="el" href="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1">sf::View</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_func_0x7e.htm b/doc/html/functions_func_0x7e.htm
deleted file mode 100755
index b970ae5..0000000
--- a/doc/html/functions_func_0x7e.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li class="current"><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions_func.htm#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.htm#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.htm#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.htm#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.htm#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.htm#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.htm#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.htm#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.htm#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6b.htm#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.htm#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.htm#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.htm#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.htm#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.htm#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.htm#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.htm#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.htm#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x75.htm#index_u"><span>u</span></a></li>
- <li><a href="functions_func_0x76.htm#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x77.htm#index_w"><span>w</span></a></li>
- <li><a href="functions_func_0x7a.htm#index_z"><span>z</span></a></li>
- <li class="current"><a href="functions_func_0x7e.htm#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
-<li>~AudioResource()
-: <a class="el" href="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702">sf::AudioResource</a>
-<li>~Context()
-: <a class="el" href="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b">sf::Context</a>
-<li>~Drawable()
-: <a class="el" href="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a">sf::Drawable</a>
-<li>~Ftp()
-: <a class="el" href="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52">sf::Ftp</a>
-<li>~Image()
-: <a class="el" href="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83">sf::Image</a>
-<li>~Lock()
-: <a class="el" href="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5">sf::Lock</a>
-<li>~Music()
-: <a class="el" href="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b">sf::Music</a>
-<li>~Mutex()
-: <a class="el" href="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2">sf::Mutex</a>
-<li>~Packet()
-: <a class="el" href="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5">sf::Packet</a>
-<li>~PostFX()
-: <a class="el" href="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63">sf::PostFX</a>
-<li>~RenderTarget()
-: <a class="el" href="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0">sf::RenderTarget</a>
-<li>~RenderWindow()
-: <a class="el" href="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020">sf::RenderWindow</a>
-<li>~Resource()
-: <a class="el" href="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac">sf::Resource&lt; T &gt;</a>
-<li>~ResourcePtr()
-: <a class="el" href="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd">sf::ResourcePtr&lt; T &gt;</a>
-<li>~Sound()
-: <a class="el" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">sf::Sound</a>
-<li>~SoundBuffer()
-: <a class="el" href="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5">sf::SoundBuffer</a>
-<li>~SoundRecorder()
-: <a class="el" href="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64">sf::SoundRecorder</a>
-<li>~SoundStream()
-: <a class="el" href="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674">sf::SoundStream</a>
-<li>~Thread()
-: <a class="el" href="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d">sf::Thread</a>
-<li>~Window()
-: <a class="el" href="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008">sf::Window</a>
-<li>~WindowListener()
-: <a class="el" href="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0">sf::WindowListener</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_type.htm b/doc/html/functions_type.htm
deleted file mode 100755
index d834205..0000000
--- a/doc/html/functions_type.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li class="current"><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>UTF8String
-: <a class="el" href="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9">sf::Unicode</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/functions_vars.htm b/doc/html/functions_vars.htm
deleted file mode 100755
index 8502a96..0000000
--- a/doc/html/functions_vars.htm
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li class="current"><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="functions.htm"><span>All</span></a></li>
- <li><a href="functions_func.htm"><span>Functions</span></a></li>
- <li class="current"><a href="functions_vars.htm"><span>Variables</span></a></li>
- <li><a href="functions_type.htm"><span>Typedefs</span></a></li>
- <li><a href="functions_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="functions_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_w"><span>w</span></a></li>
- <li><a href="#index_x"><span>x</span></a></li>
- <li><a href="#index_y"><span>y</span></a></li>
- <li><a href="#index_z"><span>z</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>a
-: <a class="el" href="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831">sf::Color</a>
-<li>Advance
-: <a class="el" href="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6">sf::Glyph</a>
-<li>AntialiasingLevel
-: <a class="el" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">sf::WindowSettings</a>
-</ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>b
-: <a class="el" href="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb">sf::Color</a>
-<li>BitsPerPixel
-: <a class="el" href="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a">sf::VideoMode</a>
-<li>Black
-: <a class="el" href="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd">sf::Color</a>
-<li>Blue
-: <a class="el" href="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c">sf::Color</a>
-<li>Bottom
-: <a class="el" href="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8">sf::Rect&lt; T &gt;</a>
-</ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>Cyan
-: <a class="el" href="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340">sf::Color</a>
-</ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>DepthBits
-: <a class="el" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">sf::WindowSettings</a>
-</ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>g
-: <a class="el" href="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5">sf::Color</a>
-<li>Green
-: <a class="el" href="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865">sf::Color</a>
-</ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>Height
-: <a class="el" href="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5">sf::VideoMode</a>
-</ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>Identity
-: <a class="el" href="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a">sf::Matrix3</a>
-</ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>Left
-: <a class="el" href="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3">sf::Rect&lt; T &gt;</a>
-<li>LocalHost
-: <a class="el" href="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0">sf::IPAddress</a>
-</ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Magenta
-: <a class="el" href="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c">sf::Color</a>
-</ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>NbSamples
-: <a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf">sf::SoundStream::SoundStream::Chunk</a>
-</ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>r
-: <a class="el" href="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1">sf::Color</a>
-<li>Rectangle
-: <a class="el" href="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76">sf::Glyph</a>
-<li>Red
-: <a class="el" href="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a">sf::Color</a>
-<li>Right
-: <a class="el" href="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383">sf::Rect&lt; T &gt;</a>
-</ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>Samples
-: <a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449">sf::SoundStream::SoundStream::Chunk</a>
-<li>StencilBits
-: <a class="el" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">sf::WindowSettings</a>
-</ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>TexCoords
-: <a class="el" href="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370">sf::Glyph</a>
-<li>Top
-: <a class="el" href="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047">sf::Rect&lt; T &gt;</a>
-<li>Type
-: <a class="el" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65">sf::Event</a>
-</ul>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>White
-: <a class="el" href="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca">sf::Color</a>
-<li>Width
-: <a class="el" href="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203">sf::VideoMode</a>
-</ul>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>x
-: <a class="el" href="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141">sf::Vector2&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16">sf::Vector3&lt; T &gt;</a>
-</ul>
-<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
-<li>y
-: <a class="el" href="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299">sf::Vector2&lt; T &gt;</a>
-, <a class="el" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794">sf::Vector3&lt; T &gt;</a>
-<li>Yellow
-: <a class="el" href="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7">sf::Color</a>
-</ul>
-<h3><a class="anchor" name="index_z">- z -</a></h3><ul>
-<li>z
-: <a class="el" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1">sf::Vector3&lt; T &gt;</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/hierarchy.htm b/doc/html/hierarchy.htm
deleted file mode 100755
index 6368ffd..0000000
--- a/doc/html/hierarchy.htm
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li class="current"><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="classsf_1_1AudioResource.htm">sf::AudioResource</a>
-<ul>
-<li><a class="el" href="classsf_1_1Sound.htm">sf::Sound</a>
-<ul>
-<li><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a>
-<ul>
-<li><a class="el" href="classsf_1_1Music.htm">sf::Music</a>
-</ul>
-</ul>
-<li><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a>
-</ul>
-<li><a class="el" href="classsf_1_1Clock.htm">sf::Clock</a>
-<li><a class="el" href="classsf_1_1Color.htm">sf::Color</a>
-<li><a class="el" href="classsf_1_1Drawable.htm">sf::Drawable</a>
-<ul>
-<li><a class="el" href="classsf_1_1PostFX.htm">sf::PostFX</a>
-<li><a class="el" href="classsf_1_1Shape.htm">sf::Shape</a>
-<li><a class="el" href="classsf_1_1Sprite.htm">sf::Sprite</a>
-<li><a class="el" href="classsf_1_1String.htm">sf::String</a>
-</ul>
-<li><a class="el" href="classsf_1_1Event.htm">sf::Event</a>
-<li><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">sf::Event::Event::MouseWheelEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a>
-<li><a class="el" href="structsf_1_1Event_1_1TextEvent.htm">sf::Event::Event::TextEvent</a>
-<li><a class="el" href="classsf_1_1Ftp_1_1Response.htm">sf::Ftp::Ftp::Response</a>
-<ul>
-<li><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">sf::Ftp::Ftp::DirectoryResponse</a>
-<li><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">sf::Ftp::Ftp::ListingResponse</a>
-</ul>
-<li><a class="el" href="classsf_1_1Glyph.htm">sf::Glyph</a>
-<li><a class="el" href="classsf_1_1Http_1_1Request.htm">sf::Http::Http::Request</a>
-<li><a class="el" href="classsf_1_1Http_1_1Response.htm">sf::Http::Http::Response</a>
-<li><a class="el" href="classsf_1_1IPAddress.htm">sf::IPAddress</a>
-<li><a class="el" href="classsf_1_1Listener.htm">sf::Listener</a>
-<li><a class="el" href="classsf_1_1Matrix3.htm">sf::Matrix3</a>
-<li><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a>
-<ul>
-<li><a class="el" href="classsf_1_1Context.htm">sf::Context</a>
-<li><a class="el" href="classsf_1_1Ftp.htm">sf::Ftp</a>
-<li><a class="el" href="classsf_1_1Http.htm">sf::Http</a>
-<li><a class="el" href="classsf_1_1Input.htm">sf::Input</a>
-<li><a class="el" href="classsf_1_1Lock.htm">sf::Lock</a>
-<li><a class="el" href="classsf_1_1Mutex.htm">sf::Mutex</a>
-<li><a class="el" href="classsf_1_1Thread.htm">sf::Thread</a>
-<ul>
-<li><a class="el" href="classsf_1_1SoundRecorder.htm">sf::SoundRecorder</a>
-<ul>
-<li><a class="el" href="classsf_1_1SoundBufferRecorder.htm">sf::SoundBufferRecorder</a>
-</ul>
-<li><a class="el" href="classsf_1_1SoundStream.htm">sf::SoundStream</a>
-</ul>
-<li><a class="el" href="classsf_1_1Window.htm">sf::Window</a>
-<ul>
-<li><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a>
-</ul>
-</ul>
-<li><a class="el" href="classsf_1_1Packet.htm">sf::Packet</a>
-<li><a class="el" href="classsf_1_1Randomizer.htm">sf::Randomizer</a>
-<li><a class="el" href="classsf_1_1Rect.htm">sf::Rect&lt; T &gt;</a>
-<li><a class="el" href="classsf_1_1RenderTarget.htm">sf::RenderTarget</a>
-<ul>
-<li><a class="el" href="classsf_1_1RenderWindow.htm">sf::RenderWindow</a>
-</ul>
-<li><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; T &gt;</a>
-<li><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Font &gt;</a>
-<ul>
-<li><a class="el" href="classsf_1_1Font.htm">sf::Font</a>
-</ul>
-<li><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; Image &gt;</a>
-<ul>
-<li><a class="el" href="classsf_1_1Image.htm">sf::Image</a>
-</ul>
-<li><a class="el" href="classsf_1_1Resource.htm">sf::Resource&lt; SoundBuffer &gt;</a>
-<ul>
-<li><a class="el" href="classsf_1_1SoundBuffer.htm">sf::SoundBuffer</a>
-</ul>
-<li><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr&lt; T &gt;</a>
-<li><a class="el" href="classsf_1_1SelectorBase.htm">sf::SelectorBase</a>
-<ul>
-<li><a class="el" href="classsf_1_1Selector.htm">sf::Selector&lt; Type &gt;</a>
-</ul>
-<li><a class="el" href="classsf_1_1SocketHelper.htm">sf::SocketHelper</a>
-<li><a class="el" href="classsf_1_1SocketTCP.htm">sf::SocketTCP</a>
-<li><a class="el" href="classsf_1_1SocketUDP.htm">sf::SocketUDP</a>
-<li><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">sf::SoundStream::SoundStream::Chunk</a>
-<li><a class="el" href="classsf_1_1Unicode.htm">sf::Unicode</a>
-<li><a class="el" href="classsf_1_1Unicode_1_1Text.htm">sf::Unicode::Unicode::Text</a>
-<li><a class="el" href="classsf_1_1Vector2.htm">sf::Vector2&lt; T &gt;</a>
-<li><a class="el" href="classsf_1_1Vector3.htm">sf::Vector3&lt; T &gt;</a>
-<li><a class="el" href="classsf_1_1VideoMode.htm">sf::VideoMode</a>
-<li><a class="el" href="classsf_1_1View.htm">sf::View</a>
-<li><a class="el" href="classsf_1_1WindowListener.htm">sf::WindowListener</a>
-<ul>
-<li><a class="el" href="classsf_1_1Input.htm">sf::Input</a>
-<li><a class="el" href="classsf_1_1Window.htm">sf::Window</a>
-</ul>
-<li><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/index.hhc b/doc/html/index.hhc
deleted file mode 100755
index cc05c13..0000000
--- a/doc/html/index.hhc
+++ /dev/null
@@ -1,346 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML><HEAD></HEAD><BODY>
-<OBJECT type="text/site properties">
-<param name="FrameName" value="right">
-</OBJECT>
-<UL>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Main Page"><param name="Local" value="index.htm"><param name="ImageNumber" value="11"></OBJECT>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Class List"><param name="Local" value="annotated.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::AudioResource"><param name="Local" value="classsf_1_1AudioResource.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Clock"><param name="Local" value="classsf_1_1Clock.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Color"><param name="Local" value="classsf_1_1Color.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Context"><param name="Local" value="classsf_1_1Context.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Drawable"><param name="Local" value="classsf_1_1Drawable.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event"><param name="Local" value="classsf_1_1Event.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::JoyButtonEvent"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::JoyMoveEvent"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::KeyEvent"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseButtonEvent"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseMoveEvent"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseWheelEvent"><param name="Local" value="structsf_1_1Event_1_1MouseWheelEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::SizeEvent"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::TextEvent"><param name="Local" value="structsf_1_1Event_1_1TextEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Font"><param name="Local" value="classsf_1_1Font.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp"><param name="Local" value="classsf_1_1Ftp.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::DirectoryResponse"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::ListingResponse"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::Response"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Glyph"><param name="Local" value="classsf_1_1Glyph.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http"><param name="Local" value="classsf_1_1Http.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http::Http::Request"><param name="Local" value="classsf_1_1Http_1_1Request.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http::Http::Response"><param name="Local" value="classsf_1_1Http_1_1Response.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Image"><param name="Local" value="classsf_1_1Image.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Input"><param name="Local" value="classsf_1_1Input.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::IPAddress"><param name="Local" value="classsf_1_1IPAddress.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Listener"><param name="Local" value="classsf_1_1Listener.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Lock"><param name="Local" value="classsf_1_1Lock.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Matrix3"><param name="Local" value="classsf_1_1Matrix3.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Music"><param name="Local" value="classsf_1_1Music.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Mutex"><param name="Local" value="classsf_1_1Mutex.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::NonCopyable"><param name="Local" value="structsf_1_1NonCopyable.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Packet"><param name="Local" value="classsf_1_1Packet.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::PostFX"><param name="Local" value="classsf_1_1PostFX.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Randomizer"><param name="Local" value="classsf_1_1Randomizer.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Rect< T >"><param name="Local" value="classsf_1_1Rect.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::RenderTarget"><param name="Local" value="classsf_1_1RenderTarget.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::RenderWindow"><param name="Local" value="classsf_1_1RenderWindow.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Resource< T >"><param name="Local" value="classsf_1_1Resource.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::ResourcePtr< T >"><param name="Local" value="classsf_1_1ResourcePtr.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Selector< Type >"><param name="Local" value="classsf_1_1Selector.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SelectorBase"><param name="Local" value="classsf_1_1SelectorBase.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Shape"><param name="Local" value="classsf_1_1Shape.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketHelper"><param name="Local" value="classsf_1_1SocketHelper.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketTCP"><param name="Local" value="classsf_1_1SocketTCP.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketUDP"><param name="Local" value="classsf_1_1SocketUDP.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Sound"><param name="Local" value="classsf_1_1Sound.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundBuffer"><param name="Local" value="classsf_1_1SoundBuffer.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundBufferRecorder"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundRecorder"><param name="Local" value="classsf_1_1SoundRecorder.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundStream"><param name="Local" value="classsf_1_1SoundStream.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundStream::SoundStream::Chunk"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Sprite"><param name="Local" value="classsf_1_1Sprite.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::String"><param name="Local" value="classsf_1_1String.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Thread"><param name="Local" value="classsf_1_1Thread.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Unicode"><param name="Local" value="classsf_1_1Unicode.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Unicode::Unicode::Text"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Vector2< T >"><param name="Local" value="classsf_1_1Vector2.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Vector3< T >"><param name="Local" value="classsf_1_1Vector3.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::VideoMode"><param name="Local" value="classsf_1_1VideoMode.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::View"><param name="Local" value="classsf_1_1View.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Window"><param name="Local" value="classsf_1_1Window.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::WindowListener"><param name="Local" value="classsf_1_1WindowListener.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::WindowSettings"><param name="Local" value="structsf_1_1WindowSettings.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Hierarchy"><param name="Local" value="hierarchy.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::AudioResource"><param name="Local" value="classsf_1_1AudioResource.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Sound"><param name="Local" value="classsf_1_1Sound.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundStream"><param name="Local" value="classsf_1_1SoundStream.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Music"><param name="Local" value="classsf_1_1Music.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundBuffer"><param name="Local" value="classsf_1_1SoundBuffer.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Clock"><param name="Local" value="classsf_1_1Clock.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Color"><param name="Local" value="classsf_1_1Color.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Drawable"><param name="Local" value="classsf_1_1Drawable.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::PostFX"><param name="Local" value="classsf_1_1PostFX.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Shape"><param name="Local" value="classsf_1_1Shape.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Sprite"><param name="Local" value="classsf_1_1Sprite.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::String"><param name="Local" value="classsf_1_1String.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event"><param name="Local" value="classsf_1_1Event.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::JoyButtonEvent"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::JoyMoveEvent"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::KeyEvent"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseButtonEvent"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseMoveEvent"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::MouseWheelEvent"><param name="Local" value="structsf_1_1Event_1_1MouseWheelEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::SizeEvent"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Event::Event::TextEvent"><param name="Local" value="structsf_1_1Event_1_1TextEvent.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::Response"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::DirectoryResponse"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp::Ftp::ListingResponse"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Glyph"><param name="Local" value="classsf_1_1Glyph.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http::Http::Request"><param name="Local" value="classsf_1_1Http_1_1Request.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http::Http::Response"><param name="Local" value="classsf_1_1Http_1_1Response.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::IPAddress"><param name="Local" value="classsf_1_1IPAddress.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Listener"><param name="Local" value="classsf_1_1Listener.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Matrix3"><param name="Local" value="classsf_1_1Matrix3.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::NonCopyable"><param name="Local" value="structsf_1_1NonCopyable.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Context"><param name="Local" value="classsf_1_1Context.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Ftp"><param name="Local" value="classsf_1_1Ftp.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Http"><param name="Local" value="classsf_1_1Http.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Input"><param name="Local" value="classsf_1_1Input.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Lock"><param name="Local" value="classsf_1_1Lock.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Mutex"><param name="Local" value="classsf_1_1Mutex.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Thread"><param name="Local" value="classsf_1_1Thread.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundRecorder"><param name="Local" value="classsf_1_1SoundRecorder.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundBufferRecorder"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundStream"><param name="Local" value="classsf_1_1SoundStream.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Window"><param name="Local" value="classsf_1_1Window.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::RenderWindow"><param name="Local" value="classsf_1_1RenderWindow.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Packet"><param name="Local" value="classsf_1_1Packet.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Randomizer"><param name="Local" value="classsf_1_1Randomizer.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Rect< T >"><param name="Local" value="classsf_1_1Rect.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::RenderTarget"><param name="Local" value="classsf_1_1RenderTarget.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::RenderWindow"><param name="Local" value="classsf_1_1RenderWindow.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Resource< T >"><param name="Local" value="classsf_1_1Resource.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Resource< Font >"><param name="Local" value="classsf_1_1Resource.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Font"><param name="Local" value="classsf_1_1Font.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Resource< Image >"><param name="Local" value="classsf_1_1Resource.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Image"><param name="Local" value="classsf_1_1Image.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Resource< SoundBuffer >"><param name="Local" value="classsf_1_1Resource.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundBuffer"><param name="Local" value="classsf_1_1SoundBuffer.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::ResourcePtr< T >"><param name="Local" value="classsf_1_1ResourcePtr.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SelectorBase"><param name="Local" value="classsf_1_1SelectorBase.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Selector< Type >"><param name="Local" value="classsf_1_1Selector.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketHelper"><param name="Local" value="classsf_1_1SocketHelper.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketTCP"><param name="Local" value="classsf_1_1SocketTCP.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SocketUDP"><param name="Local" value="classsf_1_1SocketUDP.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::SoundStream::SoundStream::Chunk"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Unicode"><param name="Local" value="classsf_1_1Unicode.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Unicode::Unicode::Text"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Vector2< T >"><param name="Local" value="classsf_1_1Vector2.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Vector3< T >"><param name="Local" value="classsf_1_1Vector3.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::VideoMode"><param name="Local" value="classsf_1_1VideoMode.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::View"><param name="Local" value="classsf_1_1View.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::WindowListener"><param name="Local" value="classsf_1_1WindowListener.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Input"><param name="Local" value="classsf_1_1Input.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Window"><param name="Local" value="classsf_1_1Window.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::WindowSettings"><param name="Local" value="structsf_1_1WindowSettings.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Members"><param name="Local" value="functions.htm"><param name="ImageNumber" value="11"></OBJECT>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Namespace List"><param name="Local" value="namespaces.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Blend"><param name="Local" value="namespacesf_1_1Blend.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Joy"><param name="Local" value="namespacesf_1_1Joy.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Key"><param name="Local" value="namespacesf_1_1Key.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Mouse"><param name="Local" value="namespacesf_1_1Mouse.htm"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="sf::Style"><param name="Local" value="namespacesf_1_1Style.htm"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="Namespace Members"><param name="Local" value="namespacemembers.htm"><param name="ImageNumber" value="11"></OBJECT>
-<LI><OBJECT type="text/sitemap"><param name="Name" value="File List"><param name="Local" value="files.htm"><param name="ImageNumber" value="1"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Arial.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Audio.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="AudioDevice.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="AudioDevice.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="AudioResource.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="AudioResource.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Clock.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Clock.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Color.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Color.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Config.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Context.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Context.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Doxygen.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Drawable.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Drawable.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Event.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Font.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Font.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="FontLoader.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="FontLoader.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Ftp.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Ftp.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Glyph.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Graphics.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="GraphicsContext.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="GraphicsContext.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Http.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Http.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Image.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Image.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="ImageLoader.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="ImageLoader.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Input.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Input.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="IPAddress.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="IPAddress.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Cocoa/Joystick.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Template for new ports/Joystick.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/Joystick.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Cocoa/Joystick.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Joystick.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Template for new ports/Joystick.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/Joystick.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Listener.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Listener.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Lock.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Lock.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Matrix3.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Matrix3.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Matrix3.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Music.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Music.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Mutex.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Mutex.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/Mutex.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Network.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="NonCopyable.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="OpenAL.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="OpenGL.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Packet.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Packet.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Platform.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Platform.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/Platform.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="PostFX.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="PostFX.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Randomizer.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Randomizer.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Rect.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Rect.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="RenderTarget.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="RenderTarget.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="RenderWindow.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="RenderWindow.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Resource.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Resource.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="ResourcePtr.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Selector.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Selector.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SelectorBase.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SelectorBase.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SFML_Main.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Shape.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Shape.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sleep.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sleep.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketHelper.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketHelper.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/SocketHelper.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sockets.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketTCP.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketTCP.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketUDP.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SocketUDP.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sound.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sound.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundBuffer.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundBuffer.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundBufferRecorder.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundBufferRecorder.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFile.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFile.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFileDefault.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFileDefault.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFileOgg.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundFileOgg.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundRecorder.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundRecorder.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundStream.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="SoundStream.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sprite.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Sprite.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="String.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="String.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="System.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Thread.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Thread.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/Thread.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Unicode.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Unicode.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Unicode.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Vector2.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Vector2.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Vector3.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Vector3.inl"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="VideoMode.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="VideoMode.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Cocoa/VideoModeSupport.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Template for new ports/VideoModeSupport.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/VideoModeSupport.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Cocoa/VideoModeSupport.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Template for new ports/VideoModeSupport.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="VideoModeSupport.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Win32/VideoModeSupport.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="View.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="View.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Window.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Window/Window.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="Window.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowHandle.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImpl.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImpl.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImplCocoa.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImplWin32.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImplWin32.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImplXXX.cpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowImplXXX.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowListener.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowSettings.hpp"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowStyle.hpp"><param name="ImageNumber" value="11"></OBJECT>
- </UL>
-</UL>
-</BODY>
-</HTML>
diff --git a/doc/html/index.hhk b/doc/html/index.hhk
deleted file mode 100755
index c8b63fb..0000000
--- a/doc/html/index.hhk
+++ /dev/null
@@ -1,2377 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML><HEAD></HEAD><BODY>
-<OBJECT type="text/site properties">
-<param name="FrameName" value="right">
-</OBJECT>
-<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831"><param name="Name" value="a"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107"><param name="Name" value="Accept"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae"><param name="Name" value="Accepted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563"><param name="Name" value="Add"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563"><param name="Name" value="sf::Blend"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e"><param name="Name" value="sf::Key"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71"><param name="Name" value="sf::Selector"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f"><param name="Name" value="sf::SelectorBase"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92"><param name="Name" value="AddPoint"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6"><param name="Name" value="Advance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a"><param name="Name" value="Alpha"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#daf2955e828818ec5bf2444499a96031"><param name="Name" value="Alt"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a"><param name="Name" value="ANSIToUTF32"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f"><param name="Name" value="AntialiasingLevel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64"><param name="Name" value="Append"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2"><param name="Name" value="Ascii"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705"><param name="Name" value="AudioResource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#080b79f898ff8ea7d7b6c6415dc80858"><param name="Name" value="Axis"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb"><param name="Name" value="b"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="BadCommandSequence"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9"><param name="Name" value="BadGateway"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa"><param name="Name" value="BadRequest"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee"><param name="Name" value="Binary"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7"><param name="Name" value="Bind"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a"><param name="Name" value="BitsPerPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd"><param name="Name" value="Black"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c"><param name="Name" value="Blue"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0"><param name="Name" value="Bold"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8"><param name="Name" value="Bottom"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#e320433b582a9550c5132be67d865fa9"><param name="Name" value="Button"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#e320433b582a9550c5132be67d865fa9"><param name="Name" value="sf::Event::JoyButtonEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#3fef6d343e96177d24413719f90aec40"><param name="Name" value="sf::Event::MouseButtonEvent"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf"><param name="Name" value="ButtonCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5"><param name="Name" value="CanCapture"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e"><param name="Name" value="CanUsePostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a"><param name="Name" value="Capture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc"><param name="Name" value="ChangeDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0"><param name="Name" value="Circle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da"><param name="Name" value="Clear"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da"><param name="Name" value="sf::Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4"><param name="Name" value="sf::Selector"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0"><param name="Name" value="sf::SelectorBase"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd"><param name="Name" value="Clock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c"><param name="Name" value="Close"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232"><param name="Name" value="sf::SocketHelper"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58"><param name="Name" value="sf::SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493"><param name="Name" value="sf::Style"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="ClosingConnection"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="ClosingDataConnection"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#a1dea12ac3a76e8b8fd5e19d167fb2c7"><param name="Name" value="Code"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4"><param name="Name" value="Color"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207"><param name="Name" value="Comma"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="CommandNotImplemented"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="CommandUnknown"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c"><param name="Name" value="Connect"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c"><param name="Name" value="sf::Ftp"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f"><param name="Name" value="sf::SocketTCP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="ConnectionClosed"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="ConnectionFailed"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa"><param name="Name" value="sf::Http::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7"><param name="Name" value="Contains"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555"><param name="Name" value="Context"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#ec1229d610db477818cb9698f9f17a50"><param name="Name" value="Control"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17"><param name="Name" value="ConvertCoords"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2"><param name="Name" value="Copy"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974"><param name="Name" value="CopyScreen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f"><param name="Name" value="Count"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde"><param name="Name" value="Create"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0"><param name="Name" value="Created"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50"><param name="Name" value="CreateMaskFromColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340"><param name="Name" value="Cyan"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00"><param name="Name" value="Dash"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#8dee57337b6a7e183bfe21d178757b0c"><param name="Name" value="DataChannel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="DataConnectionAlreadyOpened"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="DataConnectionOpened"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="DataConnectionUnavailable"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32"><param name="Name" value="DeleteDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9"><param name="Name" value="DeleteFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseWheelEvent.htm#515865c7153cdb624eb58c0a7ddf8a6a"><param name="Name" value="Delta"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6"><param name="Name" value="DepthBits"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="DirectoryOk"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc"><param name="Name" value="DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="DirectoryStatus"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc"><param name="Name" value="Disconnect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435"><param name="Name" value="Display"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2"><param name="Name" value="Divide"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62"><param name="Name" value="Down"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886"><param name="Name" value="Download"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff"><param name="Name" value="Draw"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff"><param name="Name" value="sf::RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc"><param name="Name" value="Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4"><param name="Name" value="Ebcdic"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae"><param name="Name" value="EnableFill"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0"><param name="Name" value="EnableKeyRepeat"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26"><param name="Name" value="EnableOutline"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36"><param name="Name" value="EndOfPacket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="EnteringPassiveMode"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359"><param name="Name" value="Equal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="FileActionAborted"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="FileActionOk"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="FilenameNotAllowed"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="FileStatus"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="FileUnavailable"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b"><param name="Name" value="FlipX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97"><param name="Name" value="FlipY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583"><param name="Name" value="Font"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf"><param name="Name" value="Forbidden"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d"><param name="Name" value="Fullscreen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="FuncType"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="sf::Thread"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5"><param name="Name" value="g"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1"><param name="Name" value="Get4x4Elements"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00"><param name="Name" value="Get"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42"><param name="Name" value="GetAttenuation"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179"><param name="Name" value="GetBody"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e"><param name="Name" value="GetBuffer"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd"><param name="Name" value="sf::View"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858"><param name="Name" value="GetChannelsCount"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210"><param name="Name" value="GetCharacterPos"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc"><param name="Name" value="GetCharacterSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522"><param name="Name" value="GetCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a"><param name="Name" value="GetData"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d"><param name="Name" value="GetDataSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#128c377d51263288be98565771c48e36"><param name="Name" value="GetDefaultFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699"><param name="Name" value="GetDefaultView"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699"><param name="Name" value="sf::RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea"><param name="Name" value="GetDesktopMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799"><param name="Name" value="GetDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357"><param name="Name" value="GetDirectoryListing"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50"><param name="Name" value="GetDuration"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995"><param name="Name" value="GetElapsedTime"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83"><param name="Name" value="GetErrorStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8"><param name="Name" value="GetEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330"><param name="Name" value="GetField"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922"><param name="Name" value="GetFilename"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11"><param name="Name" value="GetFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254"><param name="Name" value="GetFrameTime"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692"><param name="Name" value="GetGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19"><param name="Name" value="GetGlobalVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6"><param name="Name" value="GetGlyph"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47"><param name="Name" value="GetHalfSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89"><param name="Name" value="GetHeight"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75"><param name="Name" value="sf::Rect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8"><param name="Name" value="GetImage"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8"><param name="Name" value="sf::Font"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca"><param name="Name" value="sf::Sprite"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919"><param name="Name" value="GetInput"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e"><param name="Name" value="GetInverse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896"><param name="Name" value="GetJoystickAxis"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e"><param name="Name" value="GetLocalAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78"><param name="Name" value="GetLoop"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a"><param name="Name" value="GetMajorHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="GetMessage"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b"><param name="Name" value="GetMinDistance"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b"><param name="Name" value="GetMinorHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2"><param name="Name" value="GetMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723"><param name="Name" value="GetModesCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3"><param name="Name" value="GetMouseX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796"><param name="Name" value="GetMouseY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350"><param name="Name" value="GetNbPoints"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087"><param name="Name" value="GetOutlineWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef"><param name="Name" value="GetPitch"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4"><param name="Name" value="GetPixel"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c"><param name="Name" value="sf::Sprite"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022"><param name="Name" value="GetPixelsPtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac"><param name="Name" value="GetPlayingOffset"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92"><param name="Name" value="GetPointColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8"><param name="Name" value="GetPointOutlineColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436"><param name="Name" value="GetPointPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd"><param name="Name" value="GetPort"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251"><param name="Name" value="sf::Listener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956"><param name="Name" value="GetPublicAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d"><param name="Name" value="GetRect"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd"><param name="Name" value="sf::View"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc"><param name="Name" value="GetSampleRate"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0"><param name="Name" value="GetSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789"><param name="Name" value="GetSamplesCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48"><param name="Name" value="GetSeed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f"><param name="Name" value="GetSettings"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e"><param name="Name" value="GetSize"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9"><param name="Name" value="GetSocketReady"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9"><param name="Name" value="sf::Selector"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389"><param name="Name" value="sf::SelectorBase"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="GetStatus"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb"><param name="Name" value="sf::Http::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df"><param name="Name" value="GetStyle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941"><param name="Name" value="GetSubRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a"><param name="Name" value="GetTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56"><param name="Name" value="GetTexCoords"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620"><param name="Name" value="GetText"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995"><param name="Name" value="GetUTF16Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#65205382fffa75bbc3137b89be329845"><param name="Name" value="GetUTF32Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#e527bd860c1755db62bd30153abf06cd"><param name="Name" value="GetUTF8Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488"><param name="Name" value="GetValidTextureSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274"><param name="Name" value="GetView"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274"><param name="Name" value="sf::RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782"><param name="Name" value="GetVolume"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7"><param name="Name" value="GetWidth"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087"><param name="Name" value="sf::Rect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde"><param name="Name" value="GetWorkingDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b"><param name="Name" value="Glyph"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865"><param name="Name" value="Green"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5"><param name="Name" value="Head"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#c3c656261a5ffe28f30d22776a3f2513"><param name="Name" value="Height"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#c3c656261a5ffe28f30d22776a3f2513"><param name="Name" value="sf::Event::SizeEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5"><param name="Name" value="sf::VideoMode"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="HelpMessage"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067"><param name="Name" value="Http"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067"><param name="Name" value="sf::Http"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#ba95e2a7762bb5df986048b05d03a22e"><param name="Name" value="sf::Http::Request"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#ba95e2a7762bb5df986048b05d03a22e"><param name="Name" value="sf::Http::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a"><param name="Name" value="Identity"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12"><param name="Name" value="Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793"><param name="Name" value="Initialize"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f"><param name="Name" value="Input"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="InsufficientStorageSpace"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a"><param name="Name" value="InternalServerError"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272"><param name="Name" value="Intersects"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="InvalidFile"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="InvalidResponse"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8"><param name="Name" value="sf::Http::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458"><param name="Name" value="InvalidSocket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831"><param name="Name" value="IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27"><param name="Name" value="IsContextActive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08"><param name="Name" value="IsJoystickButtonDown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a"><param name="Name" value="IsKeyDown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea"><param name="Name" value="IsMouseButtonDown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="IsOk"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d"><param name="Name" value="IsOpened"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e"><param name="Name" value="IsRelativeToListener"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3"><param name="Name" value="IsSmooth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697"><param name="Name" value="IsValid"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697"><param name="Name" value="sf::IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f"><param name="Name" value="sf::SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c"><param name="Name" value="sf::VideoMode"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234"><param name="Name" value="Italic"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#a9f8b08b8fc044d744fcf1b988a64b62"><param name="Name" value="JoystickId"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#a9f8b08b8fc044d744fcf1b988a64b62"><param name="Name" value="sf::Event::JoyButtonEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#23e91be7a47b3234c8b1618b06634c03"><param name="Name" value="sf::Event::JoyMoveEvent"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4"><param name="Name" value="KeepAlive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="Launch"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="sf::Thread"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93"><param name="Name" value="LBracket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94"><param name="Name" value="Left"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94"><param name="Name" value="sf::Key"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3"><param name="Name" value="sf::Rect"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#a18a7737423675d9dc270a0bc7e159de"><param name="Name" value="LengthType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f"><param name="Name" value="Line"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39"><param name="Name" value="Listen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5"><param name="Name" value="ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5"><param name="Name" value="LoadFromFile"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5"><param name="Name" value="sf::Font"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b"><param name="Name" value="LoadFromMemory"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b"><param name="Name" value="sf::Font"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c"><param name="Name" value="LoadFromPixels"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc"><param name="Name" value="LoadFromSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="LocalError"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0"><param name="Name" value="LocalHost"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857"><param name="Name" value="Lock"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857"><param name="Name" value="sf::Lock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab"><param name="Name" value="sf::Mutex"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="LoggedIn"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf"><param name="Name" value="Login"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb"><param name="Name" value="LSystem"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c"><param name="Name" value="Magenta"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#302127842055302365b0982077f11071"><param name="Name" value="MakeDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c"><param name="Name" value="Matrix3"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c"><param name="Name" value="sf::View"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0"><param name="Name" value="MovedPermanently"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015"><param name="Name" value="MovedTemporarily"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2"><param name="Name" value="MultipleChoices"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736"><param name="Name" value="Multiply"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736"><param name="Name" value="sf::Blend"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814"><param name="Name" value="sf::Key"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6"><param name="Name" value="Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e"><param name="Name" value="Mutex"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf"><param name="Name" value="NbSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="NeedAccountToLogIn"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="NeedAccountToStore"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="NeedInformation"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="NeedPassword"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3"><param name="Name" value="NoContent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860"><param name="Name" value="NonCopyable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea"><param name="Name" value="None"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea"><param name="Name" value="sf::Blend"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422"><param name="Name" value="sf::Style"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="NotEnoughMemory"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41"><param name="Name" value="NotFound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf"><param name="Name" value="NotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="NotLoggedIn"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56"><param name="Name" value="NotModified"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd"><param name="Name" value="Offset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="Ok"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5"><param name="Name" value="sf::Http::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f"><param name="Name" value="OnEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9"><param name="Name" value="OnResourceDestroyed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db"><param name="Name" value="OpenFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017"><param name="Name" value="OpenFromMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="OpeningDataConnection"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6"><param name="Name" value="operator bool"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de"><param name="Name" value="operator const T *"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#5dc8644be465e51f38e515e525ee4753"><param name="Name" value="operator const Unicode::UTF32String &"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb"><param name="Name" value="operator std::string"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#68bbdd96744b5372811cff614c9fdb64"><param name="Name" value="operator std::wstring"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#c9c79a567e9331ce90307a3d679fe65c"><param name="Name" value="operator Unicode::UTF16String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#86457507c8fa810bf4164e5845a5e06a"><param name="Name" value="operator Unicode::UTF8String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5"><param name="Name" value="operator!="></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5"><param name="Name" value="sf::Color"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104"><param name="Name" value="sf::IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24"><param name="Name" value="sf::SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821"><param name="Name" value="sf::VideoMode"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8"><param name="Name" value="operator()"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386"><param name="Name" value="operator*="></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386"><param name="Name" value="sf::Color"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966"><param name="Name" value="sf::Matrix3"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28"><param name="Name" value="operator*"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28"><param name="Name" value="sf::Matrix3"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071"><param name="Name" value="sf::ResourcePtr"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf"><param name="Name" value="operator+="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a"><param name="Name" value="operator->"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550"><param name="Name" value="operator<<"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be"><param name="Name" value="operator<="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e"><param name="Name" value="operator<"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e"><param name="Name" value="sf::IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955"><param name="Name" value="operator=="></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955"><param name="Name" value="sf::Color"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48"><param name="Name" value="sf::IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0"><param name="Name" value="sf::SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1"><param name="Name" value="sf::VideoMode"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3"><param name="Name" value="operator="></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60"><param name="Name" value="sf::Resource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574"><param name="Name" value="sf::ResourcePtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b"><param name="Name" value="operator>="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16"><param name="Name" value="operator>>"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0"><param name="Name" value="operator>"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858"><param name="Name" value="Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="PageTypeUnknown"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="ParameterNotImplemented"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="ParametersUnknown"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6"><param name="Name" value="ParentDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3"><param name="Name" value="Pause"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f"><param name="Name" value="Paused"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8"><param name="Name" value="Period"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf"><param name="Name" value="Play"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288"><param name="Name" value="Playing"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="PointlessCommand"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#288c74cdfdd43669b8b4b2f93db95607"><param name="Name" value="Position"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138"><param name="Name" value="Post"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb"><param name="Name" value="PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71"><param name="Name" value="PreserveOpenGLStates"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71"><param name="Name" value="sf::RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9"><param name="Name" value="Quote"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1"><param name="Name" value="r"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575"><param name="Name" value="Random"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5"><param name="Name" value="RBracket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0"><param name="Name" value="Receive"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37"><param name="Name" value="Rect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76"><param name="Name" value="Rectangle"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76"><param name="Name" value="sf::Glyph"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498"><param name="Name" value="sf::Shape"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a"><param name="Name" value="Red"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204"><param name="Name" value="Regular"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6"><param name="Name" value="Remove"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6"><param name="Name" value="sf::Selector"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e"><param name="Name" value="sf::SelectorBase"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c"><param name="Name" value="RenameFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc"><param name="Name" value="Render"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a5afc6f82b7b587ed5ada4d227ce32aa"><param name="Name" value="RenderTarget"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a5afc6f82b7b587ed5ada4d227ce32aa"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#a5afc6f82b7b587ed5ada4d227ce32aa"><param name="Name" value="sf::View"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021"><param name="Name" value="RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72"><param name="Name" value="Request"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec"><param name="Name" value="Reset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331"><param name="Name" value="ResetBuffer"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32"><param name="Name" value="Resize"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f"><param name="Name" value="sf::Style"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130"><param name="Name" value="Resource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#de3b43c17f4363c6c1867d90ce13406c"><param name="Name" value="ResourcePtr< T >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140"><param name="Name" value="ResourcePtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2"><param name="Name" value="Response"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2"><param name="Name" value="sf::Http::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="RestartMarkerReply"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e"><param name="Name" value="Right"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e"><param name="Name" value="sf::Key"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383"><param name="Name" value="sf::Rect"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49"><param name="Name" value="RSystem"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449"><param name="Name" value="Samples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08"><param name="Name" value="SaveToFile"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08"><param name="Name" value="sf::Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#9820f8c2c218ce480ae8c891f29df668"><param name="Name" value="Selector< SocketTCP >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#f750d7515f80120fe802531753208caf"><param name="Name" value="Selector< SocketUDP >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d"><param name="Name" value="SelectorBase"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01"><param name="Name" value="SemiColon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21"><param name="Name" value="Send"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61"><param name="Name" value="SendRequest"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c"><param name="Name" value="ServiceNotAvailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="ServiceReady"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="ServiceReadySoon"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="ServiceUnavailable"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7"><param name="Name" value="SetActive"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7"><param name="Name" value="sf::Context"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9"><param name="Name" value="SetAttenuation"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8"><param name="Name" value="SetBlocking"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8"><param name="Name" value="sf::SocketHelper"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46"><param name="Name" value="SetBody"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55"><param name="Name" value="SetBuffer"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86"><param name="Name" value="sf::View"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55"><param name="Name" value="SetCursorPosition"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e"><param name="Name" value="SetField"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003"><param name="Name" value="SetFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33"><param name="Name" value="SetFramerateLimit"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee"><param name="Name" value="SetFromRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d"><param name="Name" value="SetFromTransformations"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84"><param name="Name" value="SetGlobalVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a"><param name="Name" value="SetHalfSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f"><param name="Name" value="SetHost"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd"><param name="Name" value="SetHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa"><param name="Name" value="SetIcon"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c"><param name="Name" value="SetImage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91"><param name="Name" value="SetJoystickThreshold"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e"><param name="Name" value="SetLoop"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53"><param name="Name" value="SetMethod"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9"><param name="Name" value="SetMinDistance"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65"><param name="Name" value="SetOutlineWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a"><param name="Name" value="SetParameter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0"><param name="Name" value="SetPitch"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584"><param name="Name" value="SetPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62"><param name="Name" value="SetPlayingOffset"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769"><param name="Name" value="SetPointColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe"><param name="Name" value="SetPointOutlineColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e"><param name="Name" value="SetPointPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48"><param name="Name" value="sf::Listener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3"><param name="Name" value="SetRelativeToListener"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937"><param name="Name" value="SetSeed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef"><param name="Name" value="SetSize"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb"><param name="Name" value="sf::String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452"><param name="Name" value="SetSmooth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c"><param name="Name" value="SetStyle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df"><param name="Name" value="SetSubRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf"><param name="Name" value="SetTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8"><param name="Name" value="SetText"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1"><param name="Name" value="SetTexture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac"><param name="Name" value="SetURI"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1"><param name="Name" value="SetView"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1"><param name="Name" value="sf::RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a"><param name="Name" value="SetVolume"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1AudioResource.htm"><param name="Name" value="sf::AudioResource"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1AudioResource.htm#cdff57800064eb0d6ca5ce1773182705"><param name="Name" value="AudioResource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702"><param name="Name" value="~AudioResource"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm"><param name="Name" value="sf::Blend"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563"><param name="Name" value="Add"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a"><param name="Name" value="Alpha"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736"><param name="Name" value="Multiply"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea"><param name="Name" value="None"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm"><param name="Name" value="sf::Clock"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#bbc959c7830ca7c3a4da133cb506d3fd"><param name="Name" value="Clock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#e9a02135879afbd38d034ac4a357a995"><param name="Name" value="GetElapsedTime"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Clock.htm#e7d8de6876d51fa16675a64c649570ec"><param name="Name" value="Reset"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm"><param name="Name" value="sf::Color"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#56dbdb47d5f040d9b78ac6a0b8b3a831"><param name="Name" value="a"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6707aedd0609c8920e12df5d7abc53cb"><param name="Name" value="b"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#77c688197b981338f0b19dc58bd2facd"><param name="Name" value="Black"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#b03770d4817426b2614cfc33cf0e245c"><param name="Name" value="Blue"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#c2eb4393fb11ad3fa3ccf34e92fe08e4"><param name="Name" value="Color"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#64ae9beb0b9a5865dd811cda4bb18340"><param name="Name" value="Cyan"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#591daf9c3c55dea830c76c962d6ba1a5"><param name="Name" value="g"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#95629b30de8c6856aa7d3afed12eb865"><param name="Name" value="Green"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6fe70d90b65b2163dd066a84ac00426c"><param name="Name" value="Magenta"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#058388f4f0cd47b93c08c545d6ac39c5"><param name="Name" value="operator!="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#0b85298f8e6cfe53a8365e1924f6a386"><param name="Name" value="operator*="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#bad27a2aa8db0ee9322955e69a842ddf"><param name="Name" value="operator+="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#67a77ba62d5ce56aa618b5117f26e955"><param name="Name" value="operator=="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#6a5256ca24a4f9f0e0808f6fc23e01e1"><param name="Name" value="r"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#127dbf55db9c07d0fa8f4bfcbb97594a"><param name="Name" value="Red"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca"><param name="Name" value="White"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7"><param name="Name" value="Yellow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm"><param name="Name" value="sf::Context"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#ba22797a790706ca2c5c04ee39f2b555"><param name="Name" value="Context"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#2a92bd6864df0f75d33bd38ac1b81692"><param name="Name" value="GetGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#73f11548c8501093558b6052f48f0e27"><param name="Name" value="IsContextActive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#b1d95acf0b2e5f1464c3a0471a54a8f7"><param name="Name" value="SetActive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b"><param name="Name" value="~Context"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm"><param name="Name" value="sf::Drawable"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#712de01505e04a03b93cf33ae004cdbc"><param name="Name" value="Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#a5afc6f82b7b587ed5ada4d227ce32aa"><param name="Name" value="RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a"><param name="Name" value="~Drawable"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm"><param name="Name" value="sf::Event::JoyButtonEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#e320433b582a9550c5132be67d865fa9"><param name="Name" value="Button"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyButtonEvent.htm#a9f8b08b8fc044d744fcf1b988a64b62"><param name="Name" value="JoystickId"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm"><param name="Name" value="sf::Event::JoyMoveEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#080b79f898ff8ea7d7b6c6415dc80858"><param name="Name" value="Axis"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#23e91be7a47b3234c8b1618b06634c03"><param name="Name" value="JoystickId"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1JoyMoveEvent.htm#288c74cdfdd43669b8b4b2f93db95607"><param name="Name" value="Position"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm"><param name="Name" value="sf::Event::KeyEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#daf2955e828818ec5bf2444499a96031"><param name="Name" value="Alt"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#a1dea12ac3a76e8b8fd5e19d167fb2c7"><param name="Name" value="Code"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#ec1229d610db477818cb9698f9f17a50"><param name="Name" value="Control"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#e5990094b18523541c1dfd60fb54445c"><param name="Name" value="Shift"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm"><param name="Name" value="sf::Event::MouseButtonEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#3fef6d343e96177d24413719f90aec40"><param name="Name" value="Button"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#1a3f162a5c81c26655b73e5f8b10844c"><param name="Name" value="X"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#de1ed79fee2a6a3f629ac18ebb104e27"><param name="Name" value="Y"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm"><param name="Name" value="sf::Event::MouseMoveEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm#1d33a08b76eb4e9e66c84f63f0ec59b6"><param name="Name" value="X"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm#e932ed4b4502323181422684600ee733"><param name="Name" value="Y"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseWheelEvent.htm"><param name="Name" value="sf::Event::MouseWheelEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm"><param name="Name" value="sf::Event::SizeEvent"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#c3c656261a5ffe28f30d22776a3f2513"><param name="Name" value="Height"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#575117c8cbdbbcaf9d4c9504f6c50bdc"><param name="Name" value="Width"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1TextEvent.htm"><param name="Name" value="sf::Event::TextEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Event.htm"><param name="Name" value="sf::Event"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm"><param name="Name" value="sf::Font"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#506404655b8869ed60d1e7709812f583"><param name="Name" value="Font"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#85bd25d6eac95cd20ccc2e9d17ab90bc"><param name="Name" value="GetCharacterSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#128c377d51263288be98565771c48e36"><param name="Name" value="GetDefaultFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#044159ab533345fd030430c822cd2bd6"><param name="Name" value="GetGlyph"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#e499022bb1bc6f8ce26096a05ab8a8e8"><param name="Name" value="GetImage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5"><param name="Name" value="LoadFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Font.htm#ecee6a8f62a20424a803508522e3607b"><param name="Name" value="LoadFromMemory"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="BadCommandSequence"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="ClosingConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="ClosingDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="CommandNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="CommandUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="ConnectionClosed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="ConnectionFailed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="DataConnectionAlreadyOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="DataConnectionOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="DataConnectionUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="DirectoryOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#2f98f685d1aa56d3c341d38cfb2798bc"><param name="Name" value="DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="DirectoryStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="EnteringPassiveMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="FileActionAborted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="FileActionOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="FilenameNotAllowed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="FileStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="FileUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#a07297cc8acc9276ce5c0cfa58bac799"><param name="Name" value="GetDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="GetMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="HelpMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="InsufficientStorageSpace"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="InvalidFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="InvalidResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="IsOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="LocalError"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="LoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="NeedAccountToLogIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="NeedAccountToStore"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="NeedInformation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="NeedPassword"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="NotEnoughMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="NotLoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="Ok"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="OpeningDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="PageTypeUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="ParameterNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="ParametersUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="PointlessCommand"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="RestartMarkerReply"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="ServiceReady"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="ServiceReadySoon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="ServiceUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="SystemStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="SystemType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1DirectoryResponse.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="TransferAborted"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="BadCommandSequence"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="ClosingConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="ClosingDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="CommandNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="CommandUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="ConnectionClosed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="ConnectionFailed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="DataConnectionAlreadyOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="DataConnectionOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="DataConnectionUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="DirectoryOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="DirectoryStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="EnteringPassiveMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="FileActionAborted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="FileActionOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="FilenameNotAllowed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="FileStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="FileUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#6c4b942fe9e3da2c7104de7d8a13e522"><param name="Name" value="GetCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#11b761b5fa04b5e2c3bac972cf4a8922"><param name="Name" value="GetFilename"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="GetMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="HelpMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="InsufficientStorageSpace"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="InvalidFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="InvalidResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="IsOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#2815303ca236427cf5bd1c09469f7db5"><param name="Name" value="ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="LocalError"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="LoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="NeedAccountToLogIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="NeedAccountToStore"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="NeedInformation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="NeedPassword"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="NotEnoughMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="NotLoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="Ok"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="OpeningDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="PageTypeUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="ParameterNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="ParametersUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="PointlessCommand"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="RestartMarkerReply"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="ServiceReady"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="ServiceReadySoon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="ServiceUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="SystemStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="SystemType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1ListingResponse.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="TransferAborted"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b90cb7aa403588e89a96d2b45796734eb"><param name="Name" value="BadCommandSequence"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92ad91a4a4697e370a7ce9548a801e78"><param name="Name" value="ClosingConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b48efc6aec1a5053f0dd4222a4a1c0601"><param name="Name" value="ClosingDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b82eefceb7296b5c49a8af13c4fde0a56"><param name="Name" value="CommandNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3baea8c086e961bc08590a3b0125e3a8e9"><param name="Name" value="CommandUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4eb0af3b6dc0d9d54834c183143950e6"><param name="Name" value="ConnectionClosed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b1193dea18ab5169792489796e29a154c"><param name="Name" value="ConnectionFailed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b01c534efa8299dc8c398f9c3c735af7f"><param name="Name" value="DataConnectionAlreadyOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3b54aba6b1a5a64245de93082a62f19c"><param name="Name" value="DataConnectionOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b92eb7d9848511a97387536bf2ea7df48"><param name="Name" value="DataConnectionUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b30abe316da5ce6674c7417d6afc8bbab"><param name="Name" value="DirectoryOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b3e525d31e69df913fa4808c82a8cc680"><param name="Name" value="DirectoryStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b27a9ad99275979f87e7182872dba29db"><param name="Name" value="EnteringPassiveMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b9e9e0bc31b36b0acdc24a90d9ac47664"><param name="Name" value="FileActionAborted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bed8fd0f5acbbcee897fc83030fc6a92b"><param name="Name" value="FileActionOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b149c960e8de97c512c13790266626b86"><param name="Name" value="FilenameNotAllowed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b64a925b61f519b6692cca1db9b5b36c0"><param name="Name" value="FileStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b2c39989f89691d39bfdf5f3720f201a1"><param name="Name" value="FileUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#eafd573beafd242460b1a7d516d503b5"><param name="Name" value="GetMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#8f507094af1fd34e4786d075cce102ee"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bef9780ffb9aa0e2ad8bd0418c7982017"><param name="Name" value="HelpMessage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc8336cfb56dbb1bdeee3e1db484964ee"><param name="Name" value="InsufficientStorageSpace"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b835ed0e55eac77c5ebf33b9be7507935"><param name="Name" value="InvalidFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68ea252a23f9da1a7caac3e8cd79b45b"><param name="Name" value="InvalidResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#a04c49e1f6a19c5b879838d8d5f3c134"><param name="Name" value="IsOk"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b68f37b168627d7aa1f83d29446dbf535"><param name="Name" value="LocalError"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc33c09daa22e3939f71d1b2db42c56ac"><param name="Name" value="LoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc48ec2d177addb0bf0312ce0d7d856e0"><param name="Name" value="NeedAccountToLogIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6aa05b90c45b8a29df984a33f67c09e4"><param name="Name" value="NeedAccountToStore"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3be24e23795ce75bcbe31e6e14fb2b9fd1"><param name="Name" value="NeedInformation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b8a9c19cce4c2f6dd21c26287f043a20b"><param name="Name" value="NeedPassword"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b00b738c9bb9c46b5344d973cde49b3c3"><param name="Name" value="NotEnoughMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4b56e5c93eecc0bf951feb456ae00a69"><param name="Name" value="NotLoggedIn"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b4a822160c9e456c304d9081f695f9204"><param name="Name" value="Ok"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b12656c07a0163ae77f8eebbcd83fedcf"><param name="Name" value="OpeningDataConnection"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b187ace32b24e6dc2173fd06766009f0a"><param name="Name" value="PageTypeUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5ad5d88255f235420f09272a2f8bb450"><param name="Name" value="ParameterNotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bff1bf0a489b39dc9ea51605208793c05"><param name="Name" value="ParametersUnknown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bb1efc117885b60e0f4c63f7635929861"><param name="Name" value="PointlessCommand"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#b11ecf1c327da80f3e89e265ac741fc2"><param name="Name" value="Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b6443d0307c6ca8545b2668d0b2414ba9"><param name="Name" value="RestartMarkerReply"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3bc173cc4c38946ffe38ef19bf55ca37a2"><param name="Name" value="ServiceReady"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b953c56d1d90d161ba08c5a67f99bf52e"><param name="Name" value="ServiceReadySoon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b204b10b97f813aad7de1126bc7f69740"><param name="Name" value="ServiceUnavailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="SystemStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="SystemType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="TransferAborted"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm"><param name="Name" value="sf::Ftp"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbc9e544a22dce8ef3177449cb235d15c2"><param name="Name" value="Ascii"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cb6f253b362639fb5e059dc292762a21ee"><param name="Name" value="Binary"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#6b7e5a6d2f6d3a8cac82d759502f2fbc"><param name="Name" value="ChangeDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#f566dc8b2595722dd08c312677c3f26c"><param name="Name" value="Connect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#8dee57337b6a7e183bfe21d178757b0c"><param name="Name" value="DataChannel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#c90d9da996773cb3eed1b715fbb85d32"><param name="Name" value="DeleteDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#eb6d5688700b36ea2a34a8e0dbcf43a9"><param name="Name" value="DeleteFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#5ec762168457a0b6385ad1104f5869bc"><param name="Name" value="Disconnect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#17e6cc8f6ce7c1904d598d5bb6a2d886"><param name="Name" value="Download"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#1cd6b89ad23253f6d97e6d4ca4d558cbbb1e34435231e73c96534c71090be7f4"><param name="Name" value="Ebcdic"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#2d68f88694c0b12f1b2bfdb23246c357"><param name="Name" value="GetDirectoryListing"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#c7ae66df8800b2dffadaa293b80f3dde"><param name="Name" value="GetWorkingDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#0ee896f69d6fdaa18d65df83e7347ab4"><param name="Name" value="KeepAlive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#cee25f564e7dbab511e46e61d14bb0cf"><param name="Name" value="Login"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#302127842055302365b0982077f11071"><param name="Name" value="MakeDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#327e052e0c352d743804d7146a7eb6f6"><param name="Name" value="ParentDirectory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#85075cbe59e9cc2ac0f8ca0b6c0e982c"><param name="Name" value="RenameFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528"><param name="Name" value="Upload"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52"><param name="Name" value="~Ftp"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm"><param name="Name" value="sf::Glyph"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#72adc6b808a530da296581f11e26bcc6"><param name="Name" value="Advance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#b15cfc37eb7b40a94b3b3aedf934010b"><param name="Name" value="Glyph"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#3bf41b651a39c09ac8a7355167410f76"><param name="Name" value="Rectangle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370"><param name="Name" value="TexCoords"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm"><param name="Name" value="sf::Http::Request"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598f6c1b04e35501cd5f5a85207c2b37f00"><param name="Name" value="Get"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf5598d1642aed133fbd3cb4fcff0f558e6ee5"><param name="Name" value="Head"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#ba95e2a7762bb5df986048b05d03a22e"><param name="Name" value="Http"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#620f8bff6f43e1378f321bf53fbf559887aa7a9c6147016f57c5ff1c5cac6138"><param name="Name" value="Post"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#55e79368ff0d72568150b3823ee0eb72"><param name="Name" value="Request"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#8f8b740b23e13d757e8dabd634eb8e46"><param name="Name" value="SetBody"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#a48d6b67d701622333564dfa1094b41e"><param name="Name" value="SetField"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#a168e9482ea54c26868676b0eda6dabd"><param name="Name" value="SetHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#2b17bdbb01172b4bfc8bea4a661a1c53"><param name="Name" value="SetMethod"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Request.htm#2d92b4bf89606acb3e6ac8443b427aac"><param name="Name" value="SetURI"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm"><param name="Name" value="sf::Http::Response"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85f1413adbb3239ffc1106698da8eaaae"><param name="Name" value="Accepted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d835e1dac1fed604a1b79266b69beccde9"><param name="Name" value="BadGateway"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d80d8bd04dc52e2682b2c1a16e791f8caa"><param name="Name" value="BadRequest"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d85c8ef4342e03b4d2325521ea40f035fa"><param name="Name" value="ConnectionFailed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8b81740668f9aaaeac28ad29e770e0ac0"><param name="Name" value="Created"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c6741fac3c5ae4ee2edabc47713abdcf"><param name="Name" value="Forbidden"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#e9d26d9ec2e1c98b3880d7d01c49c179"><param name="Name" value="GetBody"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#d785737dcbb5c2bd686482d483f8a330"><param name="Name" value="GetField"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#6a4f633420eb8a2e44b5accc4dc4e82a"><param name="Name" value="GetMajorHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#6a8663adab1be819683ec8d1ecb57a3b"><param name="Name" value="GetMinorHttpVersion"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#542d55a3e0a88f0dfecb8811373669eb"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#ba95e2a7762bb5df986048b05d03a22e"><param name="Name" value="Http"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d832fc48d61841e3647702775eed2edb3a"><param name="Name" value="InternalServerError"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8acd062103f0975b1c2078bea0d91d5a8"><param name="Name" value="InvalidResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8959223a6657a518f8fac7988ee37d9f0"><param name="Name" value="MovedPermanently"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c0d40f800acc7b2fbfb308db7076c015"><param name="Name" value="MovedTemporarily"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d873852d5b7aae546a393b52ed617765d2"><param name="Name" value="MultipleChoices"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d871242772df8d6c5c007fc5515b193ca3"><param name="Name" value="NoContent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ba6a54a26a9fe3d52ab0dd6930b73e41"><param name="Name" value="NotFound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8195621707d16bfa766a5bfe88519f1cf"><param name="Name" value="NotImplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8c1869be5ad599bce333ec31e338aad56"><param name="Name" value="NotModified"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d851b3f82163c2a9da6d0b59861438a6e5"><param name="Name" value="Ok"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#25f38ccd0ae7b485e5a061dfbbbe3dc2"><param name="Name" value="Response"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d8ca3d7619d3532ee3f09af857e1e45b8c"><param name="Name" value="ServiceNotAvailable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e"><param name="Name" value="Unauthorized"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm"><param name="Name" value="sf::Http"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#be2360194f99bdde402c9f97a85cf067"><param name="Name" value="Http"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#25a88ce405f43feb9faf4480ea3c2d61"><param name="Name" value="SendRequest"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http.htm#233fb3eabfeb22a442a0db92e38aee1f"><param name="Name" value="SetHost"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm"><param name="Name" value="sf::Image"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#74bda6dc927849ff25f8fce5143918e7"><param name="Name" value="Bind"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#408c40c8675363adfa96a8b9a9576bc2"><param name="Name" value="Copy"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#96597746f70ce1925ec82d2df8ae6974"><param name="Name" value="CopyScreen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#4e2ce8821e8de36462604bbf99f39cde"><param name="Name" value="Create"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#e9a15fe9a4750295845b5ae081c2ec50"><param name="Name" value="CreateMaskFromColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#f2131512b6290fd96fd10c539723fe89"><param name="Name" value="GetHeight"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#b7590e372a153ace848cf8a6081c8bc4"><param name="Name" value="GetPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#85355b09f946aa4b985f9d2a1d620022"><param name="Name" value="GetPixelsPtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#066704507bcaabe27db17170bf02bd56"><param name="Name" value="GetTexCoords"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#b41056600a1a4848833cc8b5239a9488"><param name="Name" value="GetValidTextureSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#896f09a4eb769b5b866b6dde9c1a25e7"><param name="Name" value="GetWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#bb4caf3cb167b613345ebe36fc883f12"><param name="Name" value="Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#d175b4c9110549c5df324ba61c580ce3"><param name="Name" value="IsSmooth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b"><param name="Name" value="LoadFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#72565ffabe12dfb2602e209c2e6f0486"><param name="Name" value="LoadFromMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#67d65c552c9bcba989a061e9c5b5d10c"><param name="Name" value="LoadFromPixels"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#5f9927e407bbe34172553ecfff2f54f3"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#50eed54ef8e9f3aeef5bb7f19144aa08"><param name="Name" value="SaveToFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#623f2379b30307b4ee4eb08d517d9584"><param name="Name" value="SetPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#d167422fd331cd069674391fb16e8452"><param name="Name" value="SetSmooth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83"><param name="Name" value="~Image"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm"><param name="Name" value="sf::Input"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#4edf71238ae3d311c4b6e5e6895c6896"><param name="Name" value="GetJoystickAxis"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#2100db642800d4d3e21579c72bed99b3"><param name="Name" value="GetMouseX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#fe8a8e65be0a5840de9865054aaa5796"><param name="Name" value="GetMouseY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#35393e09fc92f7523e52af1c203b958f"><param name="Name" value="Input"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#715d9533617ef9fc25152ebd6b7ece08"><param name="Name" value="IsJoystickButtonDown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#5312ed524e1f2837aa4597978553876a"><param name="Name" value="IsKeyDown"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Input.htm#28c36d05d76f2263faf803e29ffa9dea"><param name="Name" value="IsMouseButtonDown"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm"><param name="Name" value="sf::IPAddress"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#c17d4ad5721ad2bbe5ab14fc1522668e"><param name="Name" value="GetLocalAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d025962b430dd6da4e10ea3e69551956"><param name="Name" value="GetPublicAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d0d6a00a3fd597aab4b86f2bc5a85831"><param name="Name" value="IPAddress"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#943e91f407afa5d9ae9b988492385697"><param name="Name" value="IsValid"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#3529ec93755712b038fe6b1456c4f7e0"><param name="Name" value="LocalHost"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#dcab830aa4008d469c235582d90ae104"><param name="Name" value="operator!="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#90ca315772725588df2a5fe73565cb3e"><param name="Name" value="operator<"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#d9159e1fbdfffb81b45ac2518143c2be"><param name="Name" value="operator<="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#326dc00d3ab26ada6ed3168460545b48"><param name="Name" value="operator=="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#6cd4ab449515009f0d1ab0cd41ddbab0"><param name="Name" value="operator>"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#7b0f3e471d2286737023d80220a1313b"><param name="Name" value="operator>="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c"><param name="Name" value="ToInteger"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643"><param name="Name" value="ToString"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Joy.htm"><param name="Name" value="sf::Joy"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf"><param name="Name" value="ButtonCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f"><param name="Name" value="Count"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm"><param name="Name" value="sf::Key"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e"><param name="Name" value="Add"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207"><param name="Name" value="Comma"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00"><param name="Name" value="Dash"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2"><param name="Name" value="Divide"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62"><param name="Name" value="Down"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359"><param name="Name" value="Equal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93"><param name="Name" value="LBracket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94"><param name="Name" value="Left"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb"><param name="Name" value="LSystem"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814"><param name="Name" value="Multiply"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8"><param name="Name" value="Period"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9"><param name="Name" value="Quote"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5"><param name="Name" value="RBracket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e"><param name="Name" value="Right"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49"><param name="Name" value="RSystem"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01"><param name="Name" value="SemiColon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd"><param name="Name" value="Slash"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865"><param name="Name" value="Subtract"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67"><param name="Name" value="Tilde"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff"><param name="Name" value="Up"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm"><param name="Name" value="sf::Listener"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#eaffa5db15e6e790a4c20e014a8cfa19"><param name="Name" value="GetGlobalVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#c36493661fa0784df73e6efc429bb251"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#322a2f7a68893559c40e3ab2a324293a"><param name="Name" value="GetTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#0f8f05ffede8dd5f075fa120c41bec84"><param name="Name" value="SetGlobalVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#c54f7441ee2511079df71c1107242b48"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Listener.htm#4638a9c80c9a2027e93b44acdc48a8bf"><param name="Name" value="SetTarget"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm"><param name="Name" value="sf::Lock"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm#197d1b7c85c9c6fd2d6512bd82653857"><param name="Name" value="Lock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5"><param name="Name" value="~Lock"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm"><param name="Name" value="sf::Matrix3"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#ff23cbd3d056d404a566a62dea4c98c1"><param name="Name" value="Get4x4Elements"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fa7b544f401812b55ace055043385e8e"><param name="Name" value="GetInverse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fa5a43545e529d8b8628ca42289ef40a"><param name="Name" value="Identity"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#c91b75704a916deb3febe39e06962b4c"><param name="Name" value="Matrix3"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#fffc96664df9bfc7aff4b95a6b11aea8"><param name="Name" value="operator()"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#695f753f4aa2cd617c1cecdfa0212e28"><param name="Name" value="operator*"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#ac08a84563176fb77613c43adf402966"><param name="Name" value="operator*="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#beb18b51c51229e809725e4cd5741b2d"><param name="Name" value="SetFromTransformations"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151"><param name="Name" value="Transform"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm"><param name="Name" value="sf::Music"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#bdcb5c8f3b5884a27e2eb013f5e36858"><param name="Name" value="GetChannelsCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#dbda9cff41ec10cb85db056cf67e5e50"><param name="Name" value="GetDuration"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#caecb1c68af4a9d75f9e9ad2d42afa78"><param name="Name" value="GetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#d11fee9eb4baba68d6ed9f44bc6170ac"><param name="Name" value="GetPlayingOffset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#74dabd1177bb60c8bd64bb6bbedb64bc"><param name="Name" value="GetSampleRate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#cef2468ca4bc3e8ced76b11fb95c7ef2"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#ed9b6b06c0fa9c2d0b8c094eb2826793"><param name="Name" value="Initialize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#18db20495fc566e5f9c26fcfe1a5dff6"><param name="Name" value="Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db"><param name="Name" value="OpenFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#07896cadcaf54e2998e0f91fb2d6d017"><param name="Name" value="OpenFromMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#4d8437ef9a952fe3798bd239ff20d9bf"><param name="Name" value="Play"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#1072090152b10d83f43f0cd6bbd82b4e"><param name="Name" value="SetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#53c9e9b160bcbcc89c93c1682b4525df"><param name="Name" value="Stop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b"><param name="Name" value="~Music"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm"><param name="Name" value="sf::Mutex"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#73a2d7ffaa72fb1175d8787aa47550ab"><param name="Name" value="Lock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#9bd52a48320fd7b6db8a78037aad276e"><param name="Name" value="Mutex"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a"><param name="Name" value="Unlock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2"><param name="Name" value="~Mutex"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1NonCopyable.htm"><param name="Name" value="sf::NonCopyable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm"><param name="Name" value="sf::Packet"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#aaa020852bd7be75625b9f64b3a77c64"><param name="Name" value="Append"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#3a7a30fb7a39e59df0cbd773756f60da"><param name="Name" value="Clear"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#8d587905fb63e62419f1cc338eceed36"><param name="Name" value="EndOfPacket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#78286172beef1f89bd2a77edb7118c7a"><param name="Name" value="GetData"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#4e6fcdc0ff42ad45b33cea22be253b0d"><param name="Name" value="GetDataSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#087ae98bb7e93f8c82b29b88aee2f8d6"><param name="Name" value="operator bool"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#63d813d3e0e7f8438ad15a0130b4f550"><param name="Name" value="operator<<"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#8dfd4b8767cfd705a71d79b76d12ee16"><param name="Name" value="operator>>"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#786e5d4ced83992ceefa1799963ea858"><param name="Name" value="Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#96e899eb92ab68761ba10f3bcd3101bb"><param name="Name" value="SocketTCP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#89a79a0a0dd881f68463c69c9e980412"><param name="Name" value="SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5"><param name="Name" value="~Packet"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm"><param name="Name" value="sf::PostFX"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#617259ccc0f380c4818f92b7779c128e"><param name="Name" value="CanUsePostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#03c9aa065a98750335780213aff2be92"><param name="Name" value="LoadFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#53b9df4741e52bd4978d642153e492b6"><param name="Name" value="LoadFromMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#e4f7f8c7b1b28f80a41f3e9680248eba"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#205bffbe841cf3804447e8d3e684f7eb"><param name="Name" value="PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#c059bb07500cf27ffa1536512b8a24cc"><param name="Name" value="Render"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#4d7e11f6ecf159d09460220ecc43e45a"><param name="Name" value="SetParameter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#4b9d05ec45df72151d0a5284cbf88fa1"><param name="Name" value="SetTexture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63"><param name="Name" value="~PostFX"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm"><param name="Name" value="sf::Randomizer"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#490911d5e87a4d3043b85def7b2c0d48"><param name="Name" value="GetSeed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#d788e20470b24935fa3fff4aa9f1b575"><param name="Name" value="Random"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Randomizer.htm#4cba1a8faeedf65ec732febef8aac937"><param name="Name" value="SetSeed"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm"><param name="Name" value="sf::Rect"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#b234b311011892cfd8a3e831dec341a8"><param name="Name" value="Bottom"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#b56c71b17e5edfaf4e4c839b8b4dfcb7"><param name="Name" value="Contains"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#a3c1ca9c959dae33d2eec290b2e48d75"><param name="Name" value="GetHeight"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#6a8c09ef44123228aa44aff8f0b09087"><param name="Name" value="GetWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#703256dda71eb3a5e748f5b0265e9272"><param name="Name" value="Intersects"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#9619c6b9741163c86eea6a0b84b2f9b3"><param name="Name" value="Left"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#bacc8c95dd784ad3e19d94474bee24cd"><param name="Name" value="Offset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#0f87ebaef9722a6222fd2e04ce8efb37"><param name="Name" value="Rect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#6ce87895496327187a20a46dc2479383"><param name="Name" value="Right"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047"><param name="Name" value="Top"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm"><param name="Name" value="sf::RenderTarget"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#125645088d7b2df07599ea36fbb8b87e"><param name="Name" value="Clear"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#18678bb6afe22b7462e2cf08f701d2ff"><param name="Name" value="Draw"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#16db9179a7f035c59b8ecdd10cc2e699"><param name="Name" value="GetDefaultView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#9495774c371e0dd9ad9835ad2f34a03a"><param name="Name" value="GetHeight"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#d426b7ba51cc6970fb828a2bef020274"><param name="Name" value="GetView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#4df749ecfddb5355d8357afe719cf681"><param name="Name" value="GetWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#3d9265548b6903ab7f645d12177bba24"><param name="Name" value="Initialize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#b763d16f00166b516fead600d8824c71"><param name="Name" value="PreserveOpenGLStates"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#2997c96cbd93cb8ce0aba2ddae35b86f"><param name="Name" value="RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#7060ca19e685d8d5b7c6f5dd9b5906e1"><param name="Name" value="SetView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0"><param name="Name" value="~RenderTarget"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#7066f80705fb53c2c4a9fe068fc47a8a"><param name="Name" value="Capture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#125645088d7b2df07599ea36fbb8b87e"><param name="Name" value="Clear"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#b04439f6fb9fdfe40f882676fdb2938c"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#05c614a2cdc2c2c4e3b473e39b3b9a17"><param name="Name" value="ConvertCoords"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#a891f1cbd7d77c4dc02ac950b6e76f61"><param name="Name" value="Create"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#ee37843c5c882f7b3a0788b310308435"><param name="Name" value="Display"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#18678bb6afe22b7462e2cf08f701d2ff"><param name="Name" value="Draw"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#43ac767f0b7b697b392444d639b909e0"><param name="Name" value="EnableKeyRepeat"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#16db9179a7f035c59b8ecdd10cc2e699"><param name="Name" value="GetDefaultView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#65cb14f66a870f459bd66e11e52fbfe8"><param name="Name" value="GetEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#63571ef14c9351899bcd605fb101c254"><param name="Name" value="GetFrameTime"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#efa842a47f9c2415d1f8e93543ed2447"><param name="Name" value="GetHeight"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#49db47a79ca98b7d65087adeea06e919"><param name="Name" value="GetInput"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#27321006595f9f6a482b26b13800695f"><param name="Name" value="GetSettings"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#d426b7ba51cc6970fb828a2bef020274"><param name="Name" value="GetView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#e2b04f655a655b7c4bfac22958266e0c"><param name="Name" value="GetWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#3d9265548b6903ab7f645d12177bba24"><param name="Name" value="Initialize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#5c4c82e1fdb4252108314fcbe462ad8d"><param name="Name" value="IsOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#b763d16f00166b516fead600d8824c71"><param name="Name" value="PreserveOpenGLStates"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#839bbf336bdcafb084dafc3076fc9021"><param name="Name" value="RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#9fc1e745594d5cf6a30225ec9ea36675"><param name="Name" value="SetActive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#369d1764893c6fde8979fcf04142dc55"><param name="Name" value="SetCursorPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#5544031f1d2965c00532fb5660763f33"><param name="Name" value="SetFramerateLimit"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#36fa09e52af66878b8b826457b8f1dfa"><param name="Name" value="SetIcon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#d685eed68b85a66c8000a08e9a28aa91"><param name="Name" value="SetJoystickThreshold"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#3a6d2908a624a8afda4b2fdd9ef46058"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#dc4461bfaa9b4ff0fd0364a5079a47ef"><param name="Name" value="SetSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#7060ca19e685d8d5b7c6f5dd9b5906e1"><param name="Name" value="SetView"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#727c01602c86710fd935f9892946b2de"><param name="Name" value="Show"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#6142e38cb60901e6604284425714f3f0"><param name="Name" value="ShowMouseCursor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#cb8391cc93ff730288e2a8dd6b0bb7b5"><param name="Name" value="UseVerticalSync"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020"><param name="Name" value="~RenderWindow"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm"><param name="Name" value="sf::Resource"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#772badbe4813a5b459f588698ac7ad60"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#a044d32edfcd9b6aebd50d03658e8130"><param name="Name" value="Resource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#de3b43c17f4363c6c1867d90ce13406c"><param name="Name" value="ResourcePtr< T >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac"><param name="Name" value="~Resource"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm"><param name="Name" value="sf::ResourcePtr"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#e7e9d9ed819db0f541a7c22f5a28abf9"><param name="Name" value="OnResourceDestroyed"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#7af0f407f121bff6e4dcf71c7c7955de"><param name="Name" value="operator const T *"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#4e5401c5a07347a35cc3b9192e11b071"><param name="Name" value="operator*"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#e58ea517eee0a97a778c3c59e4c3fe3a"><param name="Name" value="operator->"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#efd17640cfe8d96934435fb8f2b40574"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#48ddcd15ed75e9ee3ea88e4d29402140"><param name="Name" value="ResourcePtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd"><param name="Name" value="~ResourcePtr"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm"><param name="Name" value="sf::Selector"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#3c164bc6a0e397e069cdba2a29c75d71"><param name="Name" value="Add"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#92dcaf012e8effb02262717b10b1c6f4"><param name="Name" value="Clear"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c9000a3e909b4db03961e220d4c6f9d9"><param name="Name" value="GetSocketReady"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#20ea502da25dcb9610effab8a91bcbc6"><param name="Name" value="Remove"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b"><param name="Name" value="Wait"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm"><param name="Name" value="sf::SelectorBase"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#42b4a3dc10eec94f7c2631f624ea087f"><param name="Name" value="Add"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#e24ec8c1ac981b8411c1c209daf788d0"><param name="Name" value="Clear"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#36e6a8d623f97a3c91701113931a0389"><param name="Name" value="GetSocketReady"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#319664dddf8c2170ef5b6908c39de80e"><param name="Name" value="Remove"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#9e09a7275fbbffc8519dc8462a7bbf8d"><param name="Name" value="SelectorBase"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f"><param name="Name" value="Wait"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm"><param name="Name" value="sf::Shape"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#b28fab6a7d2b596f15ef5c0611341c92"><param name="Name" value="AddPoint"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#10ccaef12679a28cf4d3003fceffc2f0"><param name="Name" value="Circle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#6370770e5f1d1c1b1abfeef80d6296ae"><param name="Name" value="EnableFill"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f65abf11c7faa1a78c6d203e68a35a26"><param name="Name" value="EnableOutline"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#8bafa82b4f42937d897c5c5aecd22350"><param name="Name" value="GetNbPoints"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#ed31da968d6d4bc8f6a3b4bf808c1087"><param name="Name" value="GetOutlineWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f22db94719a2e359cb02dd4108e6ea92"><param name="Name" value="GetPointColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f9a40ea9b28f96f183533991e6f811b8"><param name="Name" value="GetPointOutlineColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#2b3cf65f5453a84466f749b97e611436"><param name="Name" value="GetPointPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#90fe51b17c8029ed528d8590595a3f1f"><param name="Name" value="Line"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#aec9c0468a77871f6410aea757105498"><param name="Name" value="Rectangle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#b32d683b125efd3bd7ccf878b1f50a31"><param name="Name" value="Render"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#77ce4ef6cf1944768b2bc88c98a98b65"><param name="Name" value="SetOutlineWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#d55eab90a2fb9fd0bcc1dd695b0bc769"><param name="Name" value="SetPointColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#d28205b9e4784ae0adcc2209669572fe"><param name="Name" value="SetPointOutlineColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#f3eaee50b3af95d9884b41fc3996567e"><param name="Name" value="SetPointPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960"><param name="Name" value="Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm"><param name="Name" value="sf::SocketHelper"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#ec266cafe3270d1f2e210909b9b6d232"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#7e634801c53a5a1b2ee16757e2d96a83"><param name="Name" value="GetErrorStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#99e426a217cc8847264f837632b4e458"><param name="Name" value="InvalidSocket"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#a18a7737423675d9dc270a0bc7e159de"><param name="Name" value="LengthType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#4815bb2bb615b3a4fd9ad597813697b8"><param name="Name" value="SetBlocking"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#097d978a4a15af5f17089099edc23afa"><param name="Name" value="SocketType"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm"><param name="Name" value="sf::SocketTCP"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#70beb8cda69c4e9212fd5987f0d04107"><param name="Name" value="Accept"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#70a5111cbddd1edbfa6cbd6017c6d044"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#dd590d0119fa8edbe8da1574b6c8f07f"><param name="Name" value="Connect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#098d613057a72d9e5cfa76a77b5f7124"><param name="Name" value="IsValid"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#3153062e1fb2a7afe9e0ed80f9204b39"><param name="Name" value="Listen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#4d4dd9e422c485b8a8b390d1f210e84e"><param name="Name" value="operator!="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#dbcfa2c662f98a92beb509d3e5ebb1ce"><param name="Name" value="operator<"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#ae32dcf5042a50544848140ec1f94ed1"><param name="Name" value="operator=="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#47027b00ab5589017a5c235f2deb3ab0"><param name="Name" value="Receive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#9820f8c2c218ce480ae8c891f29df668"><param name="Name" value="Selector< SocketTCP >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#4debed568966f75e3e63a70f08e67c21"><param name="Name" value="Send"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#a80f7711b15fe33a5c7005acedae43c9"><param name="Name" value="SetBlocking"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa"><param name="Name" value="SocketTCP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm"><param name="Name" value="sf::SocketUDP"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#4a7e364fd39aa7338f0822d849323a5d"><param name="Name" value="Bind"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#c9abf54c9ced16b55ddef46973cd1a58"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#14f2c68a57a163a5d142acd0c4b022dd"><param name="Name" value="GetPort"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#ffecb97b84b51dea691934f9195abc1f"><param name="Name" value="IsValid"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#2cb8111d79d32e456f047132e61acd24"><param name="Name" value="operator!="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#fc35043831c10528cc3e97b959438b95"><param name="Name" value="operator<"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#5e6df73d3b4acf5890bd48229b2d2fa0"><param name="Name" value="operator=="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#c6928928fa1d6242db1f8d4176369996"><param name="Name" value="Receive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#f750d7515f80120fe802531753208caf"><param name="Name" value="Selector< SocketUDP >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#bce9f533dd86c0fd8fbe26b7efce3bc2"><param name="Name" value="Send"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#128ebfff7472dfdd330b46b719e06fd6"><param name="Name" value="SetBlocking"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901"><param name="Name" value="SocketUDP"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c"><param name="Name" value="Unbind"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm"><param name="Name" value="sf::Sound"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42"><param name="Name" value="GetAttenuation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e"><param name="Name" value="GetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e"><param name="Name" value="GetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b"><param name="Name" value="GetMinDistance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef"><param name="Name" value="GetPitch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f"><param name="Name" value="GetPlayingOffset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782"><param name="Name" value="GetVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e"><param name="Name" value="IsRelativeToListener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3"><param name="Name" value="Pause"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f"><param name="Name" value="Paused"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db"><param name="Name" value="Play"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288"><param name="Name" value="Playing"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0fe562f8a52994658398c61796cde331"><param name="Name" value="ResetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9"><param name="Name" value="SetAttenuation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55"><param name="Name" value="SetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4"><param name="Name" value="SetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9"><param name="Name" value="SetMinDistance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0"><param name="Name" value="SetPitch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62"><param name="Name" value="SetPlayingOffset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3"><param name="Name" value="SetRelativeToListener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a"><param name="Name" value="SetVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282"><param name="Name" value="Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#22d0a4fe764bba1f30b58224b1f8855e"><param name="Name" value="SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630"><param name="Name" value="Stop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9"><param name="Name" value="Stopped"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076"><param name="Name" value="~Sound"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#cfea4667cb8a5e72b1061fa2647af30f"><param name="Name" value="GetChannelsCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#525731db309fb7d5b9781e65bc4e0984"><param name="Name" value="GetDuration"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#c4b1b885e3720689c6cbc22ff6cbe571"><param name="Name" value="GetSampleRate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#26b7f93c9d02c34545ff3f1b37206fe0"><param name="Name" value="GetSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#5da93e162669ec8c03b902f622261789"><param name="Name" value="GetSamplesCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#232bb58d0910729a542cc2af473c8aa4"><param name="Name" value="LoadFromFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#694c43f4ee7b2c6277c1ead496d266f3"><param name="Name" value="LoadFromMemory"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#5efd0d42e07a4c7841b6d4f30849d7dc"><param name="Name" value="LoadFromSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#cfdc7a2357c06e2e15c408a4fa21bd49"><param name="Name" value="operator="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#f4515a797138382cf98a4d9cd5047239"><param name="Name" value="SaveToFile"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#50914f77c7cf4fb97616c898c5291f4b"><param name="Name" value="Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233"><param name="Name" value="SoundBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5"><param name="Name" value="~SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5"><param name="Name" value="CanCapture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#b49f9684043acfc42fcc7b6b1094f5c8"><param name="Name" value="GetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5"><param name="Name" value="GetSampleRate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#6693c1ac2c0d1677f798539b0643eac6"><param name="Name" value="Start"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBufferRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733"><param name="Name" value="Stop"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#436acab98f3f95d146b3ffe24fbf3fc5"><param name="Name" value="CanCapture"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="FuncType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#bab8a7f4ba28658c4bf707639f11a6c5"><param name="Name" value="GetSampleRate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="Launch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9"><param name="Name" value="SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6"><param name="Name" value="Start"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733"><param name="Name" value="Stop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="Terminate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="Wait"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64"><param name="Name" value="~SoundRecorder"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm"><param name="Name" value="sf::SoundStream::Chunk"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf"><param name="Name" value="NbSamples"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449"><param name="Name" value="Samples"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm"><param name="Name" value="sf::SoundStream"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="FuncType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#f594211c35d6ac7a9df083c226749c42"><param name="Name" value="GetAttenuation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#bb46557ecfb32c4538fedad28cc59d9e"><param name="Name" value="GetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#bdcb5c8f3b5884a27e2eb013f5e36858"><param name="Name" value="GetChannelsCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#caecb1c68af4a9d75f9e9ad2d42afa78"><param name="Name" value="GetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#07f37119f7b3b00f274ac0263a4bc58b"><param name="Name" value="GetMinDistance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#42333202ed0586f434d852cc35b9d4ef"><param name="Name" value="GetPitch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#d11fee9eb4baba68d6ed9f44bc6170ac"><param name="Name" value="GetPlayingOffset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#b1adb173ee12a86f261fb765be050643"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#74dabd1177bb60c8bd64bb6bbedb64bc"><param name="Name" value="GetSampleRate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#cef2468ca4bc3e8ced76b11fb95c7ef2"><param name="Name" value="GetStatus"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#018e78cd6c50d653fffff1005a350782"><param name="Name" value="GetVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#ed9b6b06c0fa9c2d0b8c094eb2826793"><param name="Name" value="Initialize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#f0278152abf6e3f195353ce3c270f34e"><param name="Name" value="IsRelativeToListener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="Launch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#6a712910ac1340f32e3ec3a04295ebd3"><param name="Name" value="Pause"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf"><param name="Name" value="Play"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#0fe562f8a52994658398c61796cde331"><param name="Name" value="ResetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#c3743f1fb53bf9818fbab6e9220bd7b9"><param name="Name" value="SetAttenuation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#9dbc27c54f0ee633c831a0b6e24ecc55"><param name="Name" value="SetBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#1072090152b10d83f43f0cd6bbd82b4e"><param name="Name" value="SetLoop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#0a545d8dca68d85a03390f6da7c446a9"><param name="Name" value="SetMinDistance"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#f93301feb88770789ba7cd993c9dd3a0"><param name="Name" value="SetPitch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#e779b4fa3d8d98a1490334dbd32e8d62"><param name="Name" value="SetPlayingOffset"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#b445e8738218525d8dd067628bc70c78"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#7604f576d184ba8031789beee96d04d3"><param name="Name" value="SetRelativeToListener"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#1536095045923a2332dd9eed6bf8e96a"><param name="Name" value="SetVolume"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c"><param name="Name" value="SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df"><param name="Name" value="Stop"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="Terminate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="Wait"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674"><param name="Name" value="~SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm"><param name="Name" value="sf::Sprite"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#262e7dfd12caa5c434d546b68e5ff71b"><param name="Name" value="FlipX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#88e999eade1c55aadd5f618f1f17ec97"><param name="Name" value="FlipY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#e2b23a9536486aa7ea3abc5801984aca"><param name="Name" value="GetImage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#5a54b2a7c2fd5464a499ea8ac7348c1c"><param name="Name" value="GetPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#386e09c5f321a69707393851ae026f7e"><param name="Name" value="GetSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#524cc0591bd56e48d8f0e0e5f9c9e941"><param name="Name" value="GetSubRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#0f52de16559efc4bf748a14f43318c7b"><param name="Name" value="Render"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#44a5075036963d312f3463caa2444e32"><param name="Name" value="Resize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#3674c4c0556e4e19cb307d52f254b53c"><param name="Name" value="SetImage"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#54bf1e6b425c40b00dd544a9c4fb77df"><param name="Name" value="SetSubRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984"><param name="Name" value="Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm"><param name="Name" value="sf::String"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f26252a684f5947bb7fbd58452cb3f0"><param name="Name" value="Bold"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#b6446c4717a2800cad85db55cb55409a"><param name="Name" value="GetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#de634efe8d6264282acc564fa5ea77c0"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#d471fee3d4dda7fefb9ff610d049f210"><param name="Name" value="GetCharacterPos"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#a2a028c4a975b5ed6d5a560a1c44e0c8"><param name="Name" value="GetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#6018108988612822d2b3c1b1f57d2f11"><param name="Name" value="GetFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#48238d5726104ba7ddb42f21fc5d5b2f"><param name="Name" value="GetInverseMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#c659a89e42063d13aa9ebe2b534d404e"><param name="Name" value="GetMatrix"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#9ad52594fd5e835cbd03b79098d70e0b"><param name="Name" value="GetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#1a5283b36b1cfba41d1dcd42ff33002d"><param name="Name" value="GetRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#4e82bec096673bccf7ceac5207617017"><param name="Name" value="GetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#fa4d6b97e7c10a82430ff9ee56009c97"><param name="Name" value="GetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#d1e689d0ff657da70de23b101b38d9ff"><param name="Name" value="GetSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#61581f8e8a8c8d86debf9364380e33df"><param name="Name" value="GetStyle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#97246cca36ef4d5a978b71d9f6f94620"><param name="Name" value="GetText"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d860562ce6c8ba01f65aa0551b33c46234"><param name="Name" value="Italic"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#501df9af956362b3e3769d80381c051b"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d809b07e6baa1aabf6a89468eed51c1204"><param name="Name" value="Regular"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#f11de71bf9d73a75c468d1e161181908"><param name="Name" value="Render"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#3e7d558d0ef488485a2d3f885ff2b419"><param name="Name" value="Rotate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#2a132c9f2f3736b7d0f6ea80303caacd"><param name="Name" value="Scale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#aa6558b1ae27e29cb825028473707da5"><param name="Name" value="SetBlendMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#11ba1d92bc863af6d95831d216802f61"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#8cae9f22220985e368a1b38af7644ffb"><param name="Name" value="SetColor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#134ccb47176e51916bbe6b0708a21003"><param name="Name" value="SetFont"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#419da954b1f2ad1ac2ae0b9ab6e72589"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#6d06383770eb01ffecf3d1cae6fec0ec"><param name="Name" value="SetRotation"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#0b486c56c2bd137bac629f72fea66769"><param name="Name" value="SetScale"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#0cafae61a1d23bddb059d64df0e1502f"><param name="Name" value="SetScaleX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#89e7793c74c656e5850b71d0ab34b8bf"><param name="Name" value="SetScaleY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#20b0ca616784aa81c64d6af5a0cebafb"><param name="Name" value="SetSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#93846bbdb49ba0171fe4c53eb9a84a6c"><param name="Name" value="SetStyle"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#a4b56eae5ca5f6f42c6b1c53c0fa83a8"><param name="Name" value="SetText"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#c8de7bfe092736083dcf23b0dbd22b1e"><param name="Name" value="SetX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#83fecebe749c1aca9070eafd63e1a0c9"><param name="Name" value="SetY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692"><param name="Name" value="String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e"><param name="Name" value="Underlined"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm"><param name="Name" value="sf::Style"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d"><param name="Name" value="Fullscreen"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422"><param name="Name" value="None"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f"><param name="Name" value="Resize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6"><param name="Name" value="Titlebar"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm"><param name="Name" value="sf::Thread"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#ab6e6f11eb38f106cd7c1149763a11b8"><param name="Name" value="FuncType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#046df871f73d3cf452d1c72bcc143642"><param name="Name" value="Launch"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="Terminate"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173"><param name="Name" value="Thread"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="Wait"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d"><param name="Name" value="~Thread"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm"><param name="Name" value="sf::Unicode::Text"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#5dc8644be465e51f38e515e525ee4753"><param name="Name" value="operator const Unicode::UTF32String &"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#8dafdb0f8af7aa8fd93a6357d14e7dfb"><param name="Name" value="operator std::string"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#68bbdd96744b5372811cff614c9fdb64"><param name="Name" value="operator std::wstring"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#c9c79a567e9331ce90307a3d679fe65c"><param name="Name" value="operator Unicode::UTF16String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#86457507c8fa810bf4164e5845a5e06a"><param name="Name" value="operator Unicode::UTF8String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d"><param name="Name" value="Text"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm"><param name="Name" value="sf::Unicode"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#5390e635f81fe5961899080c91b1c40a"><param name="Name" value="ANSIToUTF32"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#27699a022a186db9eb6a8d3c973ec995"><param name="Name" value="GetUTF16Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#65205382fffa75bbc3137b89be329845"><param name="Name" value="GetUTF32Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#e527bd860c1755db62bd30153abf06cd"><param name="Name" value="GetUTF8Length"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#44c61ac017ac0b9d2cba69dd9b1f475e"><param name="Name" value="UTF16String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8"><param name="Name" value="UTF16ToUTF32"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56"><param name="Name" value="UTF16ToUTF8"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#a928ecac4c3ace69888bb209bc75ffae"><param name="Name" value="UTF32String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#37628016674129d709a01a7e82cc19d4"><param name="Name" value="UTF32ToANSI"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#c11fc704e8e94baf623553807fe1ddde"><param name="Name" value="UTF32ToUTF16"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081"><param name="Name" value="UTF32ToUTF8"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9"><param name="Name" value="UTF8String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e"><param name="Name" value="UTF8ToUTF16"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#6dc3254ad3495eeca06443cbee0298be"><param name="Name" value="UTF8ToUTF32"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm"><param name="Name" value="sf::Vector2"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988"><param name="Name" value="Vector2"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141"><param name="Name" value="x"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299"><param name="Name" value="y"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm"><param name="Name" value="sf::Vector3"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9"><param name="Name" value="Vector3"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16"><param name="Name" value="x"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794"><param name="Name" value="y"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1"><param name="Name" value="z"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm"><param name="Name" value="sf::VideoMode"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#c2aa4a809527fd9da6b70c9479d02c7a"><param name="Name" value="BitsPerPixel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#0b29193258c4855f75337e62f2b56eea"><param name="Name" value="GetDesktopMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#50e64232abd41b7ee1016948b41ea5a2"><param name="Name" value="GetMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#1700d0b9230f34533cadd88f5cc61723"><param name="Name" value="GetModesCount"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#c890fbaecc5d9b82b44123a0d5b3c0f5"><param name="Name" value="Height"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#13ccf1d15900d7251659f871ea362c7c"><param name="Name" value="IsValid"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#7db70f110d4a1404e38ed8a909d77821"><param name="Name" value="operator!="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#497c88cd2475d941f27a0ac2a0541fa1"><param name="Name" value="operator=="></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1"><param name="Name" value="VideoMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203"><param name="Name" value="Width"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm"><param name="Name" value="sf::View"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#edfc422283cb9dbd89c2beb70261b7fd"><param name="Name" value="GetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#2fa0eb90604dd90ffdaf2405be276d47"><param name="Name" value="GetHalfSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#af368a69233ee426a5fbd63dde1cc4bd"><param name="Name" value="GetRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#8f1bfbae90991ab777994cad4f4bfa9c"><param name="Name" value="Move"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#a5afc6f82b7b587ed5ada4d227ce32aa"><param name="Name" value="RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#f357e9c647672b94b8b8f584eaff1e86"><param name="Name" value="SetCenter"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#a5c2ac8985a573632f9a1e95d56cc2ee"><param name="Name" value="SetFromRect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#5e1a8e0c729daf4be95c1f27ba275a2a"><param name="Name" value="SetHalfSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc"><param name="Name" value="View"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1"><param name="Name" value="Zoom"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm"><param name="Name" value="sf::Window"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#b04439f6fb9fdfe40f882676fdb2938c"><param name="Name" value="Close"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#a891f1cbd7d77c4dc02ac950b6e76f61"><param name="Name" value="Create"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#ee37843c5c882f7b3a0788b310308435"><param name="Name" value="Display"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#43ac767f0b7b697b392444d639b909e0"><param name="Name" value="EnableKeyRepeat"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#65cb14f66a870f459bd66e11e52fbfe8"><param name="Name" value="GetEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#63571ef14c9351899bcd605fb101c254"><param name="Name" value="GetFrameTime"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#913a7ae79631eaa8ef6a1ad8cd0c5947"><param name="Name" value="GetHeight"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#49db47a79ca98b7d65087adeea06e919"><param name="Name" value="GetInput"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#27321006595f9f6a482b26b13800695f"><param name="Name" value="GetSettings"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#c5dfd4d7df394e3638b567352ec69e22"><param name="Name" value="GetWidth"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5c4c82e1fdb4252108314fcbe462ad8d"><param name="Name" value="IsOpened"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#9fc1e745594d5cf6a30225ec9ea36675"><param name="Name" value="SetActive"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#369d1764893c6fde8979fcf04142dc55"><param name="Name" value="SetCursorPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5544031f1d2965c00532fb5660763f33"><param name="Name" value="SetFramerateLimit"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#36fa09e52af66878b8b826457b8f1dfa"><param name="Name" value="SetIcon"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#d685eed68b85a66c8000a08e9a28aa91"><param name="Name" value="SetJoystickThreshold"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#3a6d2908a624a8afda4b2fdd9ef46058"><param name="Name" value="SetPosition"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#dc4461bfaa9b4ff0fd0364a5079a47ef"><param name="Name" value="SetSize"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de"><param name="Name" value="Show"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0"><param name="Name" value="ShowMouseCursor"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5"><param name="Name" value="UseVerticalSync"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4"><param name="Name" value="Window"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008"><param name="Name" value="~Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1WindowListener.htm"><param name="Name" value="sf::WindowListener"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1WindowListener.htm#4703ddfaaa6604e38e1ff0d89e2cd00f"><param name="Name" value="OnEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0"><param name="Name" value="~WindowListener"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm"><param name="Name" value="sf::WindowSettings"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f"><param name="Name" value="AntialiasingLevel"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6"><param name="Name" value="DepthBits"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08"><param name="Name" value="StencilBits"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb"><param name="Name" value="WindowSettings"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Shape.htm#413a457f720835b9f5d8e97ca8b80960"><param name="Name" value="Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1KeyEvent.htm#e5990094b18523541c1dfd60fb54445c"><param name="Name" value="Shift"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de"><param name="Name" value="Show"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#727c01602c86710fd935f9892946b2de"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0"><param name="Name" value="ShowMouseCursor"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6142e38cb60901e6604284425714f3f0"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd"><param name="Name" value="Slash"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#96e899eb92ab68761ba10f3bcd3101bb"><param name="Name" value="SocketTCP"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#96e899eb92ab68761ba10f3bcd3101bb"><param name="Name" value="sf::Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketTCP.htm#098157a901a6f355b499085a3fb97afa"><param name="Name" value="sf::SocketTCP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketHelper.htm#097d978a4a15af5f17089099edc23afa"><param name="Name" value="SocketType"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#89a79a0a0dd881f68463c69c9e980412"><param name="Name" value="SocketUDP"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#89a79a0a0dd881f68463c69c9e980412"><param name="Name" value="sf::Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#844e648922eccd86d4815d19472bb901"><param name="Name" value="sf::SocketUDP"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282"><param name="Name" value="Sound"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#50914f77c7cf4fb97616c898c5291f4b"><param name="Name" value="sf::SoundBuffer"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#0cabfbfe19b831bf7d5c9592d92ef233"><param name="Name" value="SoundBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#50ebad413c4f157408a0fa49f23212a9"><param name="Name" value="SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#22d0a4fe764bba1f30b58224b1f8855e"><param name="Name" value="SoundStream"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#22d0a4fe764bba1f30b58224b1f8855e"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#769d08f4c3c6b4340ef3a838329d2e5c"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sprite.htm#92559fbca895a96758abf5eabab96984"><param name="Name" value="Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6"><param name="Name" value="Start"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#6693c1ac2c0d1677f798539b0643eac6"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08"><param name="Name" value="StencilBits"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df"><param name="Name" value="Stop"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df"><param name="Name" value="sf::Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630"><param name="Name" value="sf::Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733"><param name="Name" value="sf::SoundBufferRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#9d51c7ef42bcdd4ad53e995d57f90733"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#53c9e9b160bcbcc89c93c1682b4525df"><param name="Name" value="sf::SoundStream"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9"><param name="Name" value="Stopped"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#9563a4e93f692e0c8e8702b374ef8692"><param name="Name" value="String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865"><param name="Name" value="Subtract"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="SystemStatus"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b546cffa3466de7c0acda1df410269165"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="SystemType"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b34ea28f393b78baf66fc53531bb1bddd"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="Terminate"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#603d9493c6a845188f05c2eca48dc41b"><param name="Name" value="sf::Thread"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Glyph.htm#90bedab27a26b2b0cb7e661bdccf3370"><param name="Name" value="TexCoords"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode_1_1Text.htm#aa04a48e0feb1243b06b32e00e1b572d"><param name="Name" value="Text"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#5a5f6a41323c0983d6c0f4e496f4a173"><param name="Name" value="Thread"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67"><param name="Name" value="Tilde"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6"><param name="Name" value="Titlebar"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#ec6999cce584d3b275072cb6da839c3c"><param name="Name" value="ToInteger"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Rect.htm#4addcc0bf656fb5f2f80d406cf90c047"><param name="Name" value="Top"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1IPAddress.htm#76eadca85be545b5c1c68a4d0dc1c643"><param name="Name" value="ToString"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="TransferAborted"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="sf::Ftp::DirectoryResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="sf::Ftp::ListingResponse"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp_1_1Response.htm#f81738f06b6f571761696291276acb3b5f35323d8c86feb0cbafe2448d507cb7"><param name="Name" value="sf::Ftp::Response"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Matrix3.htm#8cb1106305307a8fbf8450f4aa6f4151"><param name="Name" value="Transform"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="TransformToGlobal"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#fe3cb6e62921ce13806c27dc727f8945"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="TransformToLocal"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="sf::Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="sf::PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="sf::Shape"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="sf::Sprite"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#809f25ae0b3a2015ec8a44fe9f5a0008"><param name="Name" value="sf::String"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65"><param name="Name" value="Type"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Http_1_1Response.htm#663e071978e30fbbeb20ed045be874d815420ced21fd9d1e5164b3d497db328e"><param name="Name" value="Unauthorized"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SocketUDP.htm#6f6b448b8ab63913dad5d6906645081c"><param name="Name" value="Unbind"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1String.htm#eedf6f2453ae7b88ddf0f7427968a6d80f4cd758cb0126a9df3307fe885bae3e"><param name="Name" value="Underlined"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1TextEvent.htm#dd0f65b0f93dca946313d0708cb4cbf0"><param name="Name" value="Unicode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#d4e1dd36cdec588e4f4d64434866d53a"><param name="Name" value="Unlock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff"><param name="Name" value="Up"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#32240c75993a64710da8a29804bd6528"><param name="Name" value="Upload"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5"><param name="Name" value="UseVerticalSync"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5"><param name="Name" value="sf::RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#cb8391cc93ff730288e2a8dd6b0bb7b5"><param name="Name" value="sf::Window"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#44c61ac017ac0b9d2cba69dd9b1f475e"><param name="Name" value="UTF16String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#836263c4d41ef7b2d146e6564a9e0fe8"><param name="Name" value="UTF16ToUTF32"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#70dd49ecc62e55bcda250d789371dc56"><param name="Name" value="UTF16ToUTF8"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#a928ecac4c3ace69888bb209bc75ffae"><param name="Name" value="UTF32String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#37628016674129d709a01a7e82cc19d4"><param name="Name" value="UTF32ToANSI"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#c11fc704e8e94baf623553807fe1ddde"><param name="Name" value="UTF32ToUTF16"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#456a48adebef490996f82f4841e26081"><param name="Name" value="UTF32ToUTF8"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#3c6081f88e93693ff8e713053982a9f9"><param name="Name" value="UTF8String"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#86ba5a2f4d2a85b287d1f0ff94f1eb5e"><param name="Name" value="UTF8ToUTF16"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Unicode.htm#6dc3254ad3495eeca06443cbee0298be"><param name="Name" value="UTF8ToUTF32"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#58c32383b5291380db4b43a289f75988"><param name="Name" value="Vector2"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#ee8be1985c6e45e381ad4071265636f9"><param name="Name" value="Vector3"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#04c9417e5c304510bef5f6aeb03f6ce1"><param name="Name" value="VideoMode"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#884afd75948366ba6c0f760b276496cc"><param name="Name" value="View"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b"><param name="Name" value="Wait"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Selector.htm#c259fdd26dd0fb2a29a73b1f08093e0b"><param name="Name" value="sf::Selector"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SelectorBase.htm#22ba5625f8b644effa55e1a1c43efa4f"><param name="Name" value="sf::SelectorBase"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="sf::SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="sf::SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#67f3c609fdf99688531dbfae461ea4d2"><param name="Name" value="sf::Thread"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#4fd874712178d9e206f53226002aa4ca"><param name="Name" value="White"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#575117c8cbdbbcaf9d4c9504f6c50bdc"><param name="Name" value="Width"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1SizeEvent.htm#575117c8cbdbbcaf9d4c9504f6c50bdc"><param name="Name" value="sf::Event::SizeEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1VideoMode.htm#bee130381af7a465b29ea5cdb3927203"><param name="Name" value="sf::VideoMode"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#5359122166b4dc492c3d25caf08ccfc4"><param name="Name" value="Window"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb"><param name="Name" value="WindowSettings"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#1a3f162a5c81c26655b73e5f8b10844c"><param name="Name" value="X"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#1a3f162a5c81c26655b73e5f8b10844c"><param name="Name" value="sf::Event::MouseButtonEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm#1d33a08b76eb4e9e66c84f63f0ec59b6"><param name="Name" value="sf::Event::MouseMoveEvent"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141"><param name="Name" value="x"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#1e6ad77fa155f3753bfb92699bd28141"><param name="Name" value="sf::Vector2"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16"><param name="Name" value="sf::Vector3"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#de1ed79fee2a6a3f629ac18ebb104e27"><param name="Name" value="Y"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseButtonEvent.htm#de1ed79fee2a6a3f629ac18ebb104e27"><param name="Name" value="sf::Event::MouseButtonEvent"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structsf_1_1Event_1_1MouseMoveEvent.htm#e932ed4b4502323181422684600ee733"><param name="Name" value="sf::Event::MouseMoveEvent"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299"><param name="Name" value="y"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector2.htm#420f2481b015f4eb929c75f2af564299"><param name="Name" value="sf::Vector2"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794"><param name="Name" value="sf::Vector3"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Color.htm#f8896b5f56650935f5b9d72d528802c7"><param name="Name" value="Yellow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1"><param name="Name" value="z"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1View.htm#2bc9321a19bc371b3f29d8c9f25bcbb1"><param name="Name" value="Zoom"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1AudioResource.htm#b637cc0e1ff4770a3ac3be48f83d6702"><param name="Name" value="~AudioResource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Context.htm#805b1bbdb3e52b1fda7c9bf2cd6ca86b"><param name="Name" value="~Context"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Drawable.htm#28141b9ba1e4b432313339546669817a"><param name="Name" value="~Drawable"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Ftp.htm#2edfa8e9009caf27bce74459ae76dc52"><param name="Name" value="~Ftp"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Image.htm#0ba22a38e6c96e3b37dd88198046de83"><param name="Name" value="~Image"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Lock.htm#8168b36323a18ccf5b6bc531d964aec5"><param name="Name" value="~Lock"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Music.htm#4c65860fed2f01d0eaa6c4199870414b"><param name="Name" value="~Music"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Mutex.htm#9f76a67b7b6d3918131a692179b4e3f2"><param name="Name" value="~Mutex"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Packet.htm#bd57f3b7a6e0e9119f4021754b5b19e5"><param name="Name" value="~Packet"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1PostFX.htm#b9349387988368fe8a2c66e4b3220d63"><param name="Name" value="~PostFX"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderTarget.htm#45414a2f09b257db7e7b37861d70c5a0"><param name="Name" value="~RenderTarget"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1RenderWindow.htm#b95277816e7237146ebfeb6d35f85020"><param name="Name" value="~RenderWindow"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Resource.htm#0e83e83339851d7b3246939bde3fc1ac"><param name="Name" value="~Resource"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1ResourcePtr.htm#0ec69fdecccd1240030b24385f6884dd"><param name="Name" value="~ResourcePtr"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076"><param name="Name" value="~Sound"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundBuffer.htm#ea240161724ffba74a0d6a9e277d3cd5"><param name="Name" value="~SoundBuffer"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundRecorder.htm#e83953cce24c5245c0672d150d280b64"><param name="Name" value="~SoundRecorder"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1SoundStream.htm#5b14ec6669440e4dbd5650f0fb6b0674"><param name="Name" value="~SoundStream"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Thread.htm#f77942fc1730af7c31bc4c3a913a9c1d"><param name="Name" value="~Thread"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1Window.htm#6d5a00ce5cc93a2c0bc8ae0e317f5008"><param name="Name" value="~Window"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classsf_1_1WindowListener.htm#0c5603bbe6dc4980cc4ed55019952ec0"><param name="Name" value="~WindowListener"></OBJECT>
-</UL>
-</BODY>
-</HTML>
diff --git a/doc/html/index.hhp b/doc/html/index.hhp
deleted file mode 100755
index 4a22f66..0000000
--- a/doc/html/index.hhp
+++ /dev/null
@@ -1,364 +0,0 @@
-[OPTIONS]
-Compiled file=../SFML.chm
-Compatibility=1.1
-Full-text search=Yes
-Contents file=index.hhc
-Default Window=main
-Default topic=index.htm
-Index file=index.hhk
-Language=0x409 English (United States)
-Title=SFML
-
-[WINDOWS]
-main="SFML","index.hhc","index.hhk","index.htm","index.htm",,,,,0x23520,,0x10387e,,,,,,,,0
-
-[FILES]
-index.htm
-Arial_8hpp-source.htm
-Audio_8hpp-source.htm
-AudioDevice_8cpp-source.htm
-AudioDevice_8hpp-source.htm
-AudioResource_8cpp-source.htm
-AudioResource_8hpp-source.htm
-Clock_8cpp-source.htm
-Clock_8hpp-source.htm
-Color_8cpp-source.htm
-Color_8hpp-source.htm
-Config_8hpp-source.htm
-Context_8cpp-source.htm
-Context_8hpp-source.htm
-Doxygen_8hpp-source.htm
-Drawable_8cpp-source.htm
-Drawable_8hpp-source.htm
-Event_8hpp-source.htm
-Font_8cpp-source.htm
-Font_8hpp-source.htm
-FontLoader_8cpp-source.htm
-FontLoader_8hpp-source.htm
-Ftp_8cpp-source.htm
-Ftp_8hpp-source.htm
-Glyph_8hpp-source.htm
-Graphics_8hpp-source.htm
-GraphicsContext_8cpp-source.htm
-GraphicsContext_8hpp-source.htm
-Http_8cpp-source.htm
-Http_8hpp-source.htm
-Image_8cpp-source.htm
-Image_8hpp-source.htm
-ImageLoader_8cpp-source.htm
-ImageLoader_8hpp-source.htm
-Input_8cpp-source.htm
-Input_8hpp-source.htm
-IPAddress_8cpp-source.htm
-IPAddress_8hpp-source.htm
-Cocoa_2Joystick_8cpp-source.htm
-Template_01for_01new_01ports_2Joystick_8cpp-source.htm
-Win32_2Joystick_8cpp-source.htm
-Cocoa_2Joystick_8hpp-source.htm
-Joystick_8hpp-source.htm
-Template_01for_01new_01ports_2Joystick_8hpp-source.htm
-Win32_2Joystick_8hpp-source.htm
-Listener_8cpp-source.htm
-Listener_8hpp-source.htm
-Lock_8cpp-source.htm
-Lock_8hpp-source.htm
-Matrix3_8cpp-source.htm
-Matrix3_8hpp-source.htm
-Matrix3_8inl-source.htm
-Music_8cpp-source.htm
-Music_8hpp-source.htm
-Mutex_8cpp-source.htm
-Mutex_8hpp-source.htm
-Win32_2Mutex_8hpp-source.htm
-Network_8hpp-source.htm
-NonCopyable_8hpp-source.htm
-OpenAL_8hpp-source.htm
-OpenGL_8hpp-source.htm
-Packet_8cpp-source.htm
-Packet_8hpp-source.htm
-Platform_8cpp-source.htm
-Platform_8hpp-source.htm
-Win32_2Platform_8hpp-source.htm
-PostFX_8cpp-source.htm
-PostFX_8hpp-source.htm
-Randomizer_8cpp-source.htm
-Randomizer_8hpp-source.htm
-Rect_8hpp-source.htm
-Rect_8inl-source.htm
-RenderTarget_8cpp-source.htm
-RenderTarget_8hpp-source.htm
-RenderWindow_8cpp-source.htm
-RenderWindow_8hpp-source.htm
-Resource_8hpp-source.htm
-Resource_8inl-source.htm
-ResourcePtr_8inl-source.htm
-Selector_8hpp-source.htm
-Selector_8inl-source.htm
-SelectorBase_8cpp-source.htm
-SelectorBase_8hpp-source.htm
-SFML__Main_8cpp-source.htm
-Shape_8cpp-source.htm
-Shape_8hpp-source.htm
-Sleep_8cpp-source.htm
-Sleep_8hpp-source.htm
-SocketHelper_8cpp-source.htm
-SocketHelper_8hpp-source.htm
-Win32_2SocketHelper_8hpp-source.htm
-Sockets_8hpp-source.htm
-SocketTCP_8cpp-source.htm
-SocketTCP_8hpp-source.htm
-SocketUDP_8cpp-source.htm
-SocketUDP_8hpp-source.htm
-Sound_8cpp-source.htm
-Sound_8hpp-source.htm
-SoundBuffer_8cpp-source.htm
-SoundBuffer_8hpp-source.htm
-SoundBufferRecorder_8cpp-source.htm
-SoundBufferRecorder_8hpp-source.htm
-SoundFile_8cpp-source.htm
-SoundFile_8hpp-source.htm
-SoundFileDefault_8cpp-source.htm
-SoundFileDefault_8hpp-source.htm
-SoundFileOgg_8cpp-source.htm
-SoundFileOgg_8hpp-source.htm
-SoundRecorder_8cpp-source.htm
-SoundRecorder_8hpp-source.htm
-SoundStream_8cpp-source.htm
-SoundStream_8hpp-source.htm
-Sprite_8cpp-source.htm
-Sprite_8hpp-source.htm
-String_8cpp-source.htm
-String_8hpp-source.htm
-System_8hpp-source.htm
-Thread_8cpp-source.htm
-Thread_8hpp-source.htm
-Win32_2Thread_8hpp-source.htm
-Unicode_8cpp-source.htm
-Unicode_8hpp-source.htm
-Unicode_8inl-source.htm
-Vector2_8hpp-source.htm
-Vector2_8inl-source.htm
-Vector3_8hpp-source.htm
-Vector3_8inl-source.htm
-VideoMode_8cpp-source.htm
-VideoMode_8hpp-source.htm
-Cocoa_2VideoModeSupport_8cpp-source.htm
-Template_01for_01new_01ports_2VideoModeSupport_8cpp-source.htm
-Win32_2VideoModeSupport_8cpp-source.htm
-Cocoa_2VideoModeSupport_8hpp-source.htm
-Template_01for_01new_01ports_2VideoModeSupport_8hpp-source.htm
-VideoModeSupport_8hpp-source.htm
-Win32_2VideoModeSupport_8hpp-source.htm
-View_8cpp-source.htm
-View_8hpp-source.htm
-Window_8cpp-source.htm
-Window_2Window_8hpp-source.htm
-Window_8hpp-source.htm
-WindowHandle_8hpp-source.htm
-WindowImpl_8cpp-source.htm
-WindowImpl_8hpp-source.htm
-WindowImplCocoa_8hpp-source.htm
-WindowImplWin32_8cpp-source.htm
-WindowImplWin32_8hpp-source.htm
-WindowImplXXX_8cpp-source.htm
-WindowImplXXX_8hpp-source.htm
-WindowListener_8hpp-source.htm
-WindowSettings_8hpp-source.htm
-WindowStyle_8hpp-source.htm
-annotated.htm
-classes.htm
-hierarchy.htm
-functions.htm
-functions_0x62.htm
-functions_0x63.htm
-functions_0x64.htm
-functions_0x65.htm
-functions_0x66.htm
-functions_0x67.htm
-functions_0x68.htm
-functions_0x69.htm
-functions_0x6b.htm
-functions_0x6c.htm
-functions_0x6d.htm
-functions_0x6e.htm
-functions_0x6f.htm
-functions_0x70.htm
-functions_0x72.htm
-functions_0x73.htm
-functions_0x74.htm
-functions_0x75.htm
-functions_0x76.htm
-functions_0x77.htm
-functions_0x78.htm
-functions_0x79.htm
-functions_0x7a.htm
-functions_0x7e.htm
-functions_func.htm
-functions_func_0x62.htm
-functions_func_0x63.htm
-functions_func_0x64.htm
-functions_func_0x65.htm
-functions_func_0x66.htm
-functions_func_0x67.htm
-functions_func_0x68.htm
-functions_func_0x69.htm
-functions_func_0x6b.htm
-functions_func_0x6c.htm
-functions_func_0x6d.htm
-functions_func_0x6e.htm
-functions_func_0x6f.htm
-functions_func_0x70.htm
-functions_func_0x72.htm
-functions_func_0x73.htm
-functions_func_0x74.htm
-functions_func_0x75.htm
-functions_func_0x76.htm
-functions_func_0x77.htm
-functions_func_0x7a.htm
-functions_func_0x7e.htm
-functions_vars.htm
-functions_type.htm
-functions_enum.htm
-functions_eval.htm
-namespaces.htm
-classsf_1_1AudioResource.htm
-classsf_1_1AudioResource-members.htm
-classsf_1_1Listener.htm
-classsf_1_1Listener-members.htm
-classsf_1_1Music.htm
-classsf_1_1Music-members.htm
-classsf_1_1Sound.htm
-classsf_1_1Sound-members.htm
-classsf_1_1SoundBuffer.htm
-classsf_1_1SoundBuffer-members.htm
-classsf_1_1SoundBufferRecorder.htm
-classsf_1_1SoundBufferRecorder-members.htm
-classsf_1_1SoundRecorder.htm
-classsf_1_1SoundRecorder-members.htm
-classsf_1_1SoundStream.htm
-classsf_1_1SoundStream-members.htm
-structsf_1_1SoundStream_1_1Chunk.htm
-structsf_1_1SoundStream_1_1Chunk-members.htm
-classsf_1_1Color.htm
-classsf_1_1Color-members.htm
-classsf_1_1Drawable.htm
-classsf_1_1Drawable-members.htm
-classsf_1_1Font.htm
-classsf_1_1Font-members.htm
-classsf_1_1Glyph.htm
-classsf_1_1Glyph-members.htm
-classsf_1_1Image.htm
-classsf_1_1Image-members.htm
-classsf_1_1Matrix3.htm
-classsf_1_1Matrix3-members.htm
-classsf_1_1PostFX.htm
-classsf_1_1PostFX-members.htm
-classsf_1_1Rect.htm
-classsf_1_1Rect-members.htm
-classsf_1_1RenderTarget.htm
-classsf_1_1RenderTarget-members.htm
-classsf_1_1RenderWindow.htm
-classsf_1_1RenderWindow-members.htm
-classsf_1_1Shape.htm
-classsf_1_1Shape-members.htm
-classsf_1_1Sprite.htm
-classsf_1_1Sprite-members.htm
-classsf_1_1String.htm
-classsf_1_1String-members.htm
-classsf_1_1View.htm
-classsf_1_1View-members.htm
-classsf_1_1Ftp.htm
-classsf_1_1Ftp-members.htm
-classsf_1_1Ftp_1_1DirectoryResponse.htm
-classsf_1_1Ftp_1_1DirectoryResponse-members.htm
-classsf_1_1Ftp_1_1ListingResponse.htm
-classsf_1_1Ftp_1_1ListingResponse-members.htm
-classsf_1_1Ftp_1_1Response.htm
-classsf_1_1Ftp_1_1Response-members.htm
-classsf_1_1Http.htm
-classsf_1_1Http-members.htm
-classsf_1_1Http_1_1Request.htm
-classsf_1_1Http_1_1Request-members.htm
-classsf_1_1Http_1_1Response.htm
-classsf_1_1Http_1_1Response-members.htm
-classsf_1_1IPAddress.htm
-classsf_1_1IPAddress-members.htm
-classsf_1_1Packet.htm
-classsf_1_1Packet-members.htm
-classsf_1_1Selector.htm
-classsf_1_1Selector-members.htm
-classsf_1_1SelectorBase.htm
-classsf_1_1SelectorBase-members.htm
-classsf_1_1SocketTCP.htm
-classsf_1_1SocketTCP-members.htm
-classsf_1_1SocketUDP.htm
-classsf_1_1SocketUDP-members.htm
-classsf_1_1SocketHelper.htm
-classsf_1_1SocketHelper-members.htm
-classsf_1_1Clock.htm
-classsf_1_1Clock-members.htm
-classsf_1_1Lock.htm
-classsf_1_1Lock-members.htm
-structsf_1_1NonCopyable.htm
-structsf_1_1NonCopyable-members.htm
-classsf_1_1Randomizer.htm
-classsf_1_1Randomizer-members.htm
-classsf_1_1Resource.htm
-classsf_1_1Resource-members.htm
-classsf_1_1ResourcePtr.htm
-classsf_1_1ResourcePtr-members.htm
-classsf_1_1Unicode.htm
-classsf_1_1Unicode-members.htm
-classsf_1_1Unicode_1_1Text.htm
-classsf_1_1Unicode_1_1Text-members.htm
-classsf_1_1Vector2.htm
-classsf_1_1Vector2-members.htm
-classsf_1_1Vector3.htm
-classsf_1_1Vector3-members.htm
-classsf_1_1Mutex.htm
-classsf_1_1Mutex-members.htm
-classsf_1_1Thread.htm
-classsf_1_1Thread-members.htm
-classsf_1_1Context.htm
-classsf_1_1Context-members.htm
-classsf_1_1Event.htm
-classsf_1_1Event-members.htm
-structsf_1_1Event_1_1JoyButtonEvent.htm
-structsf_1_1Event_1_1JoyButtonEvent-members.htm
-structsf_1_1Event_1_1JoyMoveEvent.htm
-structsf_1_1Event_1_1JoyMoveEvent-members.htm
-structsf_1_1Event_1_1KeyEvent.htm
-structsf_1_1Event_1_1KeyEvent-members.htm
-structsf_1_1Event_1_1MouseButtonEvent.htm
-structsf_1_1Event_1_1MouseButtonEvent-members.htm
-structsf_1_1Event_1_1MouseMoveEvent.htm
-structsf_1_1Event_1_1MouseMoveEvent-members.htm
-structsf_1_1Event_1_1MouseWheelEvent.htm
-structsf_1_1Event_1_1MouseWheelEvent-members.htm
-structsf_1_1Event_1_1SizeEvent.htm
-structsf_1_1Event_1_1SizeEvent-members.htm
-structsf_1_1Event_1_1TextEvent.htm
-structsf_1_1Event_1_1TextEvent-members.htm
-classsf_1_1Input.htm
-classsf_1_1Input-members.htm
-classsf_1_1VideoMode.htm
-classsf_1_1VideoMode-members.htm
-classsf_1_1Window.htm
-classsf_1_1Window-members.htm
-classsf_1_1WindowListener.htm
-classsf_1_1WindowListener-members.htm
-structsf_1_1WindowSettings.htm
-structsf_1_1WindowSettings-members.htm
-namespacesf_1_1Blend.htm
-namespacesf_1_1Joy.htm
-namespacesf_1_1Key.htm
-namespacesf_1_1Mouse.htm
-namespacesf_1_1Style.htm
-namespacemembers.htm
-namespacemembers_enum.htm
-namespacemembers_eval.htm
-files.htm
-tabs.css
-tab_b.gif
-tab_l.gif
-tab_r.gif
diff --git a/doc/html/index.htm b/doc/html/index.htm
deleted file mode 100755
index f8d3a19..0000000
--- a/doc/html/index.htm
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li class="current"><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>SFML Documentation</h1>
-<p>
-<h3 align="center">1.6 </h3><h2><a class="anchor" name="welcome">
-Welcome</a></h2>
-Welcome to the official SFML documentation. Here you will find a detailed view of all the SFML <a href="./annotated.htm">classes</a>, as well as source <a href="./files.htm">files</a>. <br>
- If you are looking for tutorials, you can visit the official website at <a href="http://www.sfml-dev.org/tutorials/">www.sfml-dev.org</a>.<h2><a class="anchor" name="example">
-Short example</a></h2>
-Here is a short example, to show you how simple it is to use SFML :<p>
-<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;SFML/Audio.hpp&gt;</span>
-<span class="preprocessor"> #include &lt;SFML/Graphics.hpp&gt;</span>
-
- <span class="keywordtype">int</span> main()
- {
- <span class="comment">// Create the main window</span>
- <a class="code" href="classsf_1_1RenderWindow.htm" title="Simple wrapper for sf::Window that allows easy 2D rendering.">sf::RenderWindow</a> App(<a class="code" href="classsf_1_1VideoMode.htm" title="VideoMode defines a video mode (width, height, bpp, frequency) and provides static...">sf::VideoMode</a>(800, 600), <span class="stringliteral">"SFML window"</span>);
-
- <span class="comment">// Load a sprite to display</span>
- <a class="code" href="classsf_1_1Image.htm" title="Image is the low-level class for loading and manipulating images.">sf::Image</a> Image;
- <span class="keywordflow">if</span> (!Image.<a class="code" href="classsf_1_1Image.htm#7cf6316aa5d022e0bdd95f1e79c9f50b" title="Load the image from a file.">LoadFromFile</a>(<span class="stringliteral">"cute_image.jpg"</span>))
- <span class="keywordflow">return</span> EXIT_FAILURE;
- <a class="code" href="classsf_1_1Sprite.htm" title="Sprite defines a sprite : texture, transformations, color, and draw on screen.">sf::Sprite</a> Sprite(Image);
-
- <span class="comment">// Create a graphical string to display</span>
- <a class="code" href="classsf_1_1Font.htm" title="Font is the low-level class for loading and manipulating character fonts.">sf::Font</a> Arial;
- <span class="keywordflow">if</span> (!Arial.<a class="code" href="classsf_1_1Font.htm#c1f0de973bdb9485b5f0bf4aacb717e5" title="Load the font from a file.">LoadFromFile</a>(<span class="stringliteral">"arial.ttf"</span>))
- <span class="keywordflow">return</span> EXIT_FAILURE;
- <a class="code" href="classsf_1_1String.htm" title="String defines a graphical 2D text, that can be drawn on screen.">sf::String</a> Text(<span class="stringliteral">"Hello SFML"</span>, Arial, 50);
-
- <span class="comment">// Load a music to play</span>
- <a class="code" href="classsf_1_1Music.htm" title="Music defines a big sound played using streaming, so usually what we call a music...">sf::Music</a> Music;
- <span class="keywordflow">if</span> (!Music.<a class="code" href="classsf_1_1Music.htm#26986766bc5674a87da1bcb10bef59db" title="Open a music file (doesn&amp;#39;t play it -- call Play() for that).">OpenFromFile</a>(<span class="stringliteral">"nice_music.ogg"</span>))
- <span class="keywordflow">return</span> EXIT_FAILURE;
-
- <span class="comment">// Play the music</span>
- Music.<a class="code" href="classsf_1_1SoundStream.htm#4d8437ef9a952fe3798bd239ff20d9bf" title="Start playing the audio stream.">Play</a>();
-
- <span class="comment">// Start the game loop</span>
- <span class="keywordflow">while</span> (App.IsOpened())
- {
- <span class="comment">// Process events</span>
- <a class="code" href="classsf_1_1Event.htm" title="Event defines a system event and its parameters.">sf::Event</a> Event;
- <span class="keywordflow">while</span> (App.GetEvent(Event))
- {
- <span class="comment">// Close window : exit</span>
- <span class="keywordflow">if</span> (Event.<a class="code" href="classsf_1_1Event.htm#90d5da29dd2f49d13dc10e7a402c0b65" title="Type of the event.">Type</a> == sf::Event::Closed)
- App.Close();
- }
-
- <span class="comment">// Clear screen</span>
- App.Clear();
-
- <span class="comment">// Draw the sprite</span>
- App.Draw(Sprite);
-
- <span class="comment">// Draw the string</span>
- App.Draw(Text);
-
- <span class="comment">// Update the window</span>
- App.Display();
- }
-
- <span class="keywordflow">return</span> EXIT_SUCCESS;
- }
-</pre></div> </div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/logo-bg.jpg b/doc/html/logo-bg.jpg
deleted file mode 100755
index 06ecea2..0000000
--- a/doc/html/logo-bg.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/html/logo.jpg b/doc/html/logo.jpg
deleted file mode 100755
index 81b0e14..0000000
--- a/doc/html/logo.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/html/namespacemembers.htm b/doc/html/namespacemembers.htm
deleted file mode 100755
index e9144e5..0000000
--- a/doc/html/namespacemembers.htm
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li class="current"><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="namespacemembers.htm"><span>All</span></a></li>
- <li><a href="namespacemembers_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="namespacemembers_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_q"><span>q</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_u"><span>u</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all documented namespace members with links to the namespaces they belong to:
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>Add
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563">sf::Blend</a>
-, <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e">sf::Key</a>
-<li>Alpha
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a">sf::Blend</a>
-</ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>ButtonCount
-: <a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf">sf::Joy</a>
-</ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>Close
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493">sf::Style</a>
-<li>Code
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">sf::Key</a>
-<li>Comma
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207">sf::Key</a>
-<li>Count
-: <a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f">sf::Joy</a>
-</ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>Dash
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00">sf::Key</a>
-<li>Divide
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2">sf::Key</a>
-<li>Down
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Equal
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>Fullscreen
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>LBracket
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93">sf::Key</a>
-<li>Left
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94">sf::Key</a>
-<li>LSystem
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Mode
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">sf::Blend</a>
-<li>Multiply
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814">sf::Key</a>
-, <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736">sf::Blend</a>
-</ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>None
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea">sf::Blend</a>
-, <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>Period
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
-<li>Quote
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>RBracket
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5">sf::Key</a>
-<li>Resize
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f">sf::Style</a>
-<li>Right
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e">sf::Key</a>
-<li>RSystem
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SemiColon
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01">sf::Key</a>
-<li>Slash
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd">sf::Key</a>
-<li>Subtract
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Tilde
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67">sf::Key</a>
-<li>Titlebar
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>Up
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff">sf::Key</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacemembers_enum.htm b/doc/html/namespacemembers_enum.htm
deleted file mode 100755
index 8b6f601..0000000
--- a/doc/html/namespacemembers_enum.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li class="current"><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespacemembers.htm"><span>All</span></a></li>
- <li class="current"><a href="namespacemembers_enum.htm"><span>Enumerations</span></a></li>
- <li><a href="namespacemembers_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>Code
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">sf::Key</a>
-<li>Mode
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">sf::Blend</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacemembers_eval.htm b/doc/html/namespacemembers_eval.htm
deleted file mode 100755
index c5bb3ef..0000000
--- a/doc/html/namespacemembers_eval.htm
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li class="current"><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespacemembers.htm"><span>All</span></a></li>
- <li><a href="namespacemembers_enum.htm"><span>Enumerations</span></a></li>
- <li class="current"><a href="namespacemembers_eval.htm"><span>Enumerator</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_q"><span>q</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_u"><span>u</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>Add
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563">sf::Blend</a>
-, <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e">sf::Key</a>
-<li>Alpha
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a">sf::Blend</a>
-</ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>ButtonCount
-: <a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf">sf::Joy</a>
-</ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>Close
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493">sf::Style</a>
-<li>Comma
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207">sf::Key</a>
-<li>Count
-: <a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f">sf::Joy</a>
-</ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>Dash
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00">sf::Key</a>
-<li>Divide
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2">sf::Key</a>
-<li>Down
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>Equal
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>Fullscreen
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>LBracket
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93">sf::Key</a>
-<li>Left
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94">sf::Key</a>
-<li>LSystem
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>Multiply
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736">sf::Blend</a>
-, <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>None
-: <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea">sf::Blend</a>
-, <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>Period
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
-<li>Quote
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>RBracket
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5">sf::Key</a>
-<li>Resize
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f">sf::Style</a>
-<li>Right
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e">sf::Key</a>
-<li>RSystem
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SemiColon
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01">sf::Key</a>
-<li>Slash
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd">sf::Key</a>
-<li>Subtract
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865">sf::Key</a>
-</ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>Tilde
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67">sf::Key</a>
-<li>Titlebar
-: <a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6">sf::Style</a>
-</ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>Up
-: <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff">sf::Key</a>
-</ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespaces.htm b/doc/html/namespaces.htm
deleted file mode 100755
index f40c661..0000000
--- a/doc/html/namespaces.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current"><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="namespacesf_1_1Blend.htm">sf::Blend</a></td><td class="indexvalue">Enumerate the blending modes for drawable objects </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespacesf_1_1Joy.htm">sf::Joy</a></td><td class="indexvalue">Definition of joystick axis for joystick events </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespacesf_1_1Key.htm">sf::Key</a></td><td class="indexvalue">Definition of key codes for keyboard events </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespacesf_1_1Mouse.htm">sf::Mouse</a></td><td class="indexvalue">Definition of button codes for mouse events </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespacesf_1_1Style.htm">sf::Style</a></td><td class="indexvalue">Enumeration of window creation styles </td></tr>
-</table>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacesf_1_1Blend.htm b/doc/html/namespacesf_1_1Blend.htm
deleted file mode 100755
index 4745b5a..0000000
--- a/doc/html/namespacesf_1_1Blend.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="namespacesf_1_1Blend.htm">Blend</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Blend Namespace Reference</h1>Enumerate the blending modes for drawable objects.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">Mode</a> { <br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a">Alpha</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563">Add</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736">Multiply</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea">None</a>
-<br>
- }</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Enumerate the blending modes for drawable objects.
-<p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="1a2fa89de4bb0d82b2eb30399fe575ca"></a><!-- doxytag: member="sf::Blend::Mode" ref="1a2fa89de4bb0d82b2eb30399fe575ca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="namespacesf_1_1Blend.htm#1a2fa89de4bb0d82b2eb30399fe575ca">sf::Blend::Mode</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a"></a><!-- doxytag: member="Alpha" ref="1a2fa89de4bb0d82b2eb30399fe575ca23075ecfbf49e19b713cc18188a7661a" args="" -->Alpha</em>&nbsp;</td><td>
-Pixel = Src * a + Dest * (1 - a). </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563"></a><!-- doxytag: member="Add" ref="1a2fa89de4bb0d82b2eb30399fe575cad40133cc93b5ee0975eb4c2266815563" args="" -->Add</em>&nbsp;</td><td>
-Pixel = Src + Dest. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736"></a><!-- doxytag: member="Multiply" ref="1a2fa89de4bb0d82b2eb30399fe575ca7a5f5cbb669b8ec859e3f7927451c736" args="" -->Multiply</em>&nbsp;</td><td>
-Pixel = Src * Dest. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea"></a><!-- doxytag: member="None" ref="1a2fa89de4bb0d82b2eb30399fe575ca4b6aa39cf8edd92775ee03ba7fd047ea" args="" -->None</em>&nbsp;</td><td>
-No blending. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Drawable_8hpp-source.htm#l00045">45</a> of file <a class="el" href="Drawable_8hpp-source.htm">Drawable.hpp</a>.</p>
-
-</div>
-</div><p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacesf_1_1Joy.htm b/doc/html/namespacesf_1_1Joy.htm
deleted file mode 100755
index c3383ec..0000000
--- a/doc/html/namespacesf_1_1Joy.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="namespacesf_1_1Joy.htm">Joy</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Joy Namespace Reference</h1>Definition of joystick axis for joystick events.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>Axis</b> { <br>
-&nbsp;&nbsp;<b>AxisX</b>,
-<br>
-&nbsp;&nbsp;<b>AxisY</b>,
-<br>
-&nbsp;&nbsp;<b>AxisZ</b>,
-<br>
-&nbsp;&nbsp;<b>AxisR</b>,
-<br>
-&nbsp;&nbsp;<b>AxisU</b>,
-<br>
-&nbsp;&nbsp;<b>AxisV</b>,
-<br>
-&nbsp;&nbsp;<b>AxisPOV</b>,
-<br>
-&nbsp;&nbsp;<b>AxisCount</b>
-<br>
- }</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom">{ <br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f">Count</a> = 4,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Joy.htm#bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf">ButtonCount</a> = 32
-<br>
- }</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Definition of joystick axis for joystick events.
-<p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="bb37a72f42b3ef9841fcf8270d0ac881"></a><!-- doxytag: member="sf::Joy::@1" ref="bb37a72f42b3ef9841fcf8270d0ac881" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f"></a><!-- doxytag: member="Count" ref="bb37a72f42b3ef9841fcf8270d0ac881668554c121c39f79eceb15f8b6631a9f" args="" -->Count</em>&nbsp;</td><td>
-Total number of supported joysticks. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf"></a><!-- doxytag: member="ButtonCount" ref="bb37a72f42b3ef9841fcf8270d0ac881a555e27e351d2052df5f4b7b6e6953bf" args="" -->ButtonCount</em>&nbsp;</td><td>
-Total number of supported joystick buttons. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00186">186</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-
-</div>
-</div><p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacesf_1_1Key.htm b/doc/html/namespacesf_1_1Key.htm
deleted file mode 100755
index b25f210..0000000
--- a/doc/html/namespacesf_1_1Key.htm
+++ /dev/null
@@ -1,324 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="namespacesf_1_1Key.htm">Key</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Key Namespace Reference</h1>Definition of key codes for keyboard events.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Code</a> { <br>
-&nbsp;&nbsp;<b>A</b> = 'a',
-<br>
-&nbsp;&nbsp;<b>B</b> = 'b',
-<br>
-&nbsp;&nbsp;<b>C</b> = 'c',
-<br>
-&nbsp;&nbsp;<b>D</b> = 'd',
-<br>
-&nbsp;&nbsp;<b>E</b> = 'e',
-<br>
-&nbsp;&nbsp;<b>F</b> = 'f',
-<br>
-&nbsp;&nbsp;<b>G</b> = 'g',
-<br>
-&nbsp;&nbsp;<b>H</b> = 'h',
-<br>
-&nbsp;&nbsp;<b>I</b> = 'i',
-<br>
-&nbsp;&nbsp;<b>J</b> = 'j',
-<br>
-&nbsp;&nbsp;<b>K</b> = 'k',
-<br>
-&nbsp;&nbsp;<b>L</b> = 'l',
-<br>
-&nbsp;&nbsp;<b>M</b> = 'm',
-<br>
-&nbsp;&nbsp;<b>N</b> = 'n',
-<br>
-&nbsp;&nbsp;<b>O</b> = 'o',
-<br>
-&nbsp;&nbsp;<b>P</b> = 'p',
-<br>
-&nbsp;&nbsp;<b>Q</b> = 'q',
-<br>
-&nbsp;&nbsp;<b>R</b> = 'r',
-<br>
-&nbsp;&nbsp;<b>S</b> = 's',
-<br>
-&nbsp;&nbsp;<b>T</b> = 't',
-<br>
-&nbsp;&nbsp;<b>U</b> = 'u',
-<br>
-&nbsp;&nbsp;<b>V</b> = 'v',
-<br>
-&nbsp;&nbsp;<b>W</b> = 'w',
-<br>
-&nbsp;&nbsp;<b>X</b> = 'x',
-<br>
-&nbsp;&nbsp;<b>Y</b> = 'y',
-<br>
-&nbsp;&nbsp;<b>Z</b> = 'z',
-<br>
-&nbsp;&nbsp;<b>Num0</b> = '0',
-<br>
-&nbsp;&nbsp;<b>Num1</b> = '1',
-<br>
-&nbsp;&nbsp;<b>Num2</b> = '2',
-<br>
-&nbsp;&nbsp;<b>Num3</b> = '3',
-<br>
-&nbsp;&nbsp;<b>Num4</b> = '4',
-<br>
-&nbsp;&nbsp;<b>Num5</b> = '5',
-<br>
-&nbsp;&nbsp;<b>Num6</b> = '6',
-<br>
-&nbsp;&nbsp;<b>Num7</b> = '7',
-<br>
-&nbsp;&nbsp;<b>Num8</b> = '8',
-<br>
-&nbsp;&nbsp;<b>Num9</b> = '9',
-<br>
-&nbsp;&nbsp;<b>Escape</b> = 256,
-<br>
-&nbsp;&nbsp;<b>LControl</b>,
-<br>
-&nbsp;&nbsp;<b>LShift</b>,
-<br>
-&nbsp;&nbsp;<b>LAlt</b>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb">LSystem</a>,
-<br>
-&nbsp;&nbsp;<b>RControl</b>,
-<br>
-&nbsp;&nbsp;<b>RShift</b>,
-<br>
-&nbsp;&nbsp;<b>RAlt</b>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49">RSystem</a>,
-<br>
-&nbsp;&nbsp;<b>Menu</b>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93">LBracket</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5">RBracket</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01">SemiColon</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207">Comma</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8">Period</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9">Quote</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd">Slash</a>,
-<br>
-&nbsp;&nbsp;<b>BackSlash</b>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67">Tilde</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359">Equal</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00">Dash</a>,
-<br>
-&nbsp;&nbsp;<b>Space</b>,
-<br>
-&nbsp;&nbsp;<b>Return</b>,
-<br>
-&nbsp;&nbsp;<b>Back</b>,
-<br>
-&nbsp;&nbsp;<b>Tab</b>,
-<br>
-&nbsp;&nbsp;<b>PageUp</b>,
-<br>
-&nbsp;&nbsp;<b>PageDown</b>,
-<br>
-&nbsp;&nbsp;<b>End</b>,
-<br>
-&nbsp;&nbsp;<b>Home</b>,
-<br>
-&nbsp;&nbsp;<b>Insert</b>,
-<br>
-&nbsp;&nbsp;<b>Delete</b>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e">Add</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865">Subtract</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814">Multiply</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2">Divide</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94">Left</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e">Right</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff">Up</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62">Down</a>,
-<br>
-&nbsp;&nbsp;<b>Numpad0</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad1</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad2</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad3</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad4</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad5</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad6</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad7</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad8</b>,
-<br>
-&nbsp;&nbsp;<b>Numpad9</b>,
-<br>
-&nbsp;&nbsp;<b>F1</b>,
-<br>
-&nbsp;&nbsp;<b>F2</b>,
-<br>
-&nbsp;&nbsp;<b>F3</b>,
-<br>
-&nbsp;&nbsp;<b>F4</b>,
-<br>
-&nbsp;&nbsp;<b>F5</b>,
-<br>
-&nbsp;&nbsp;<b>F6</b>,
-<br>
-&nbsp;&nbsp;<b>F7</b>,
-<br>
-&nbsp;&nbsp;<b>F8</b>,
-<br>
-&nbsp;&nbsp;<b>F9</b>,
-<br>
-&nbsp;&nbsp;<b>F10</b>,
-<br>
-&nbsp;&nbsp;<b>F11</b>,
-<br>
-&nbsp;&nbsp;<b>F12</b>,
-<br>
-&nbsp;&nbsp;<b>F13</b>,
-<br>
-&nbsp;&nbsp;<b>F14</b>,
-<br>
-&nbsp;&nbsp;<b>F15</b>,
-<br>
-&nbsp;&nbsp;<b>Pause</b>,
-<br>
-&nbsp;&nbsp;<b>Count</b>
-<br>
- }</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Definition of key codes for keyboard events.
-<p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81"></a><!-- doxytag: member="sf::Key::Code" ref="d32ed01d3448273340bd25af5cdd9c81" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">sf::Key::Code</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb"></a><!-- doxytag: member="LSystem" ref="d32ed01d3448273340bd25af5cdd9c81819a5d0739e89a6543b8a1d3b2ed4bdb" args="" -->LSystem</em>&nbsp;</td><td>
-OS specific key (left side) : windows (Win and Linux), apple (MacOS), ... </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49"></a><!-- doxytag: member="RSystem" ref="d32ed01d3448273340bd25af5cdd9c81461545de42376b666cb38860a0beec49" args="" -->RSystem</em>&nbsp;</td><td>
-OS specific key (right side) : windows (Win and Linux), apple (MacOS), ... </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93"></a><!-- doxytag: member="LBracket" ref="d32ed01d3448273340bd25af5cdd9c817c927ff513554092cbd16d275542ca93" args="" -->LBracket</em>&nbsp;</td><td>
-[ </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5"></a><!-- doxytag: member="RBracket" ref="d32ed01d3448273340bd25af5cdd9c819b950e8ca9b87c679c0dd34b978323a5" args="" -->RBracket</em>&nbsp;</td><td>
-] </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01"></a><!-- doxytag: member="SemiColon" ref="d32ed01d3448273340bd25af5cdd9c819221b62140c199d7d4babe3ab45bdb01" args="" -->SemiColon</em>&nbsp;</td><td>
-; </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207"></a><!-- doxytag: member="Comma" ref="d32ed01d3448273340bd25af5cdd9c81d7c3cca627323fa271fd141a0bfec207" args="" -->Comma</em>&nbsp;</td><td>
-, </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8"></a><!-- doxytag: member="Period" ref="d32ed01d3448273340bd25af5cdd9c8150ec4d0d46359708e3337f7c5c9a00b8" args="" -->Period</em>&nbsp;</td><td>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9"></a><!-- doxytag: member="Quote" ref="d32ed01d3448273340bd25af5cdd9c81d8e07863826f31633566959e55fbd1b9" args="" -->Quote</em>&nbsp;</td><td>
-' </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd"></a><!-- doxytag: member="Slash" ref="d32ed01d3448273340bd25af5cdd9c815e4e1a9e56e51395103ccf57093fb9fd" args="" -->Slash</em>&nbsp;</td><td>
-/ </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67"></a><!-- doxytag: member="Tilde" ref="d32ed01d3448273340bd25af5cdd9c81e1e8ba49e9a03ae9db79d671372baf67" args="" -->Tilde</em>&nbsp;</td><td>
-~ </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359"></a><!-- doxytag: member="Equal" ref="d32ed01d3448273340bd25af5cdd9c815f4b9b3ede3db0e0a009ae02aaf81359" args="" -->Equal</em>&nbsp;</td><td>
-= </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00"></a><!-- doxytag: member="Dash" ref="d32ed01d3448273340bd25af5cdd9c81cabf862b02044080f5691ff510fcbf00" args="" -->Dash</em>&nbsp;</td><td>
-<ul>
-<li></li></ul>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e"></a><!-- doxytag: member="Add" ref="d32ed01d3448273340bd25af5cdd9c81c1a4bc755e274027f79cd34a6951977e" args="" -->Add</em>&nbsp;</td><td>
-+ </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865"></a><!-- doxytag: member="Subtract" ref="d32ed01d3448273340bd25af5cdd9c8161d59029edf2f17e0c562a674e2a1865" args="" -->Subtract</em>&nbsp;</td><td>
-<ul>
-<li></li></ul>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814"></a><!-- doxytag: member="Multiply" ref="d32ed01d3448273340bd25af5cdd9c810c2cf360fb1665c3387f205a001a6814" args="" -->Multiply</em>&nbsp;</td><td>
-* </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2"></a><!-- doxytag: member="Divide" ref="d32ed01d3448273340bd25af5cdd9c81f0ef65e172118c443e123935e64269e2" args="" -->Divide</em>&nbsp;</td><td>
-/ </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94"></a><!-- doxytag: member="Left" ref="d32ed01d3448273340bd25af5cdd9c811b48e9fd546b2afdcbb64ae95047be94" args="" -->Left</em>&nbsp;</td><td>
-Left arrow. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e"></a><!-- doxytag: member="Right" ref="d32ed01d3448273340bd25af5cdd9c8132eb7e9964eda306d83efd2442991f8e" args="" -->Right</em>&nbsp;</td><td>
-Right arrow. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff"></a><!-- doxytag: member="Up" ref="d32ed01d3448273340bd25af5cdd9c8193a664cfe6ee856cf5027a01f03954ff" args="" -->Up</em>&nbsp;</td><td>
-Up arrow. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62"></a><!-- doxytag: member="Down" ref="d32ed01d3448273340bd25af5cdd9c81db621980e92786cf06b6fb65d622bb62" args="" -->Down</em>&nbsp;</td><td>
-Down arrow. </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00041">41</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-
-</div>
-</div><p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacesf_1_1Mouse.htm b/doc/html/namespacesf_1_1Mouse.htm
deleted file mode 100755
index bb095c1..0000000
--- a/doc/html/namespacesf_1_1Mouse.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="namespacesf_1_1Mouse.htm">Mouse</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Mouse Namespace Reference</h1>Definition of button codes for mouse events.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>Button</b> { <br>
-&nbsp;&nbsp;<b>Left</b>,
-<br>
-&nbsp;&nbsp;<b>Right</b>,
-<br>
-&nbsp;&nbsp;<b>Middle</b>,
-<br>
-&nbsp;&nbsp;<b>XButton1</b>,
-<br>
-&nbsp;&nbsp;<b>XButton2</b>,
-<br>
-&nbsp;&nbsp;<b>ButtonCount</b>
-<br>
- }</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Definition of button codes for mouse events.
-<p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/namespacesf_1_1Style.htm b/doc/html/namespacesf_1_1Style.htm
deleted file mode 100755
index 1fc5445..0000000
--- a/doc/html/namespacesf_1_1Style.htm
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li class="current"><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="namespaces.htm"><span>Namespace&nbsp;List</span></a></li>
- <li><a href="namespacemembers.htm"><span>Namespace&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="namespacesf_1_1Style.htm">Style</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Style Namespace Reference</h1>Enumeration of window creation styles.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom">{ <br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422">None</a> = 0,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6">Titlebar</a> = 1 &lt;&lt; 0,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f">Resize</a> = 1 &lt;&lt; 1,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493">Close</a> = 1 &lt;&lt; 2,
-<br>
-&nbsp;&nbsp;<a class="el" href="namespacesf_1_1Style.htm#d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d">Fullscreen</a> = 1 &lt;&lt; 3
-<br>
- }</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Enumeration of window creation styles.
-<p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d2"></a><!-- doxytag: member="sf::Style::@4" ref="d001cd87b8aa5669d0eadbb8aab1c1d2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422"></a><!-- doxytag: member="None" ref="d001cd87b8aa5669d0eadbb8aab1c1d28c35a9c8507559e455387fc4a83ce422" args="" -->None</em>&nbsp;</td><td>
-No border / title bar (this flag and all others are mutually exclusive). </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6"></a><!-- doxytag: member="Titlebar" ref="d001cd87b8aa5669d0eadbb8aab1c1d2b4c8b32b05ed715928513787cb1e85b6" args="" -->Titlebar</em>&nbsp;</td><td>
-Title bar + fixed border. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f"></a><!-- doxytag: member="Resize" ref="d001cd87b8aa5669d0eadbb8aab1c1d2ccff967648ebcd5db2007eff7352b50f" args="" -->Resize</em>&nbsp;</td><td>
-Titlebar + resizable border + maximize button. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493"></a><!-- doxytag: member="Close" ref="d001cd87b8aa5669d0eadbb8aab1c1d2e07a7d411d5acf28f4a9a4b76a3a9493" args="" -->Close</em>&nbsp;</td><td>
-Titlebar + close button. </td></tr>
-<tr><td valign="top"><em><a class="anchor" name="d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d"></a><!-- doxytag: member="Fullscreen" ref="d001cd87b8aa5669d0eadbb8aab1c1d26288ec86830245cf957e2d234f79f50d" args="" -->Fullscreen</em>&nbsp;</td><td>
-Fullscreen mode (this flag and all others are mutually exclusive). </td></tr>
-</table>
-</dl>
-
-<p>Definition at line <a class="el" href="WindowStyle_8hpp-source.htm#l00037">37</a> of file <a class="el" href="WindowStyle_8hpp-source.htm">WindowStyle.hpp</a>.</p>
-
-</div>
-</div><p>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1JoyButtonEvent-members.htm b/doc/html/structsf_1_1Event_1_1JoyButtonEvent-members.htm
deleted file mode 100755
index 2e04dc9..0000000
--- a/doc/html/structsf_1_1Event_1_1JoyButtonEvent-members.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::JoyButtonEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Button</b> (defined in <a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoystickId</b> (defined in <a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">sf::Event::Event::JoyButtonEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1JoyButtonEvent.htm b/doc/html/structsf_1_1Event_1_1JoyButtonEvent.htm
deleted file mode 100755
index 9b3c474..0000000
--- a/doc/html/structsf_1_1Event_1_1JoyButtonEvent.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1JoyButtonEvent.htm">JoyButtonEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::JoyButtonEvent Struct Reference</h1><!-- doxytag: class="sf::Event::JoyButtonEvent" -->Joystick buttons events parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1JoyButtonEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9f8b08b8fc044d744fcf1b988a64b62"></a><!-- doxytag: member="sf::Event::JoyButtonEvent::JoystickId" ref="a9f8b08b8fc044d744fcf1b988a64b62" args="" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>JoystickId</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e320433b582a9550c5132be67d865fa9"></a><!-- doxytag: member="sf::Event::JoyButtonEvent::Button" ref="e320433b582a9550c5132be67d865fa9" args="" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Button</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Joystick buttons events parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00260">260</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1JoyMoveEvent-members.htm b/doc/html/structsf_1_1Event_1_1JoyMoveEvent-members.htm
deleted file mode 100755
index 5d9f8c8..0000000
--- a/doc/html/structsf_1_1Event_1_1JoyMoveEvent-members.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::JoyMoveEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Axis</b> (defined in <a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>JoystickId</b> (defined in <a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Position</b> (defined in <a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">sf::Event::Event::JoyMoveEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1JoyMoveEvent.htm b/doc/html/structsf_1_1Event_1_1JoyMoveEvent.htm
deleted file mode 100755
index a658dbe..0000000
--- a/doc/html/structsf_1_1Event_1_1JoyMoveEvent.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1JoyMoveEvent.htm">JoyMoveEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::JoyMoveEvent Struct Reference</h1><!-- doxytag: class="sf::Event::JoyMoveEvent" -->Joystick axis move event parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1JoyMoveEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="23e91be7a47b3234c8b1618b06634c03"></a><!-- doxytag: member="sf::Event::JoyMoveEvent::JoystickId" ref="23e91be7a47b3234c8b1618b06634c03" args="" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>JoystickId</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="080b79f898ff8ea7d7b6c6415dc80858"></a><!-- doxytag: member="sf::Event::JoyMoveEvent::Axis" ref="080b79f898ff8ea7d7b6c6415dc80858" args="" -->
-Joy::Axis&nbsp;</td><td class="memItemRight" valign="bottom"><b>Axis</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="288c74cdfdd43669b8b4b2f93db95607"></a><!-- doxytag: member="sf::Event::JoyMoveEvent::Position" ref="288c74cdfdd43669b8b4b2f93db95607" args="" -->
-float&nbsp;</td><td class="memItemRight" valign="bottom"><b>Position</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Joystick axis move event parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00250">250</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1KeyEvent-members.htm b/doc/html/structsf_1_1Event_1_1KeyEvent-members.htm
deleted file mode 100755
index 9139003..0000000
--- a/doc/html/structsf_1_1Event_1_1KeyEvent-members.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::KeyEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Alt</b> (defined in <a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Code</b> (defined in <a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Control</b> (defined in <a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Shift</b> (defined in <a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">sf::Event::Event::KeyEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1KeyEvent.htm b/doc/html/structsf_1_1Event_1_1KeyEvent.htm
deleted file mode 100755
index c513233..0000000
--- a/doc/html/structsf_1_1Event_1_1KeyEvent.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1KeyEvent.htm">KeyEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::KeyEvent Struct Reference</h1><!-- doxytag: class="sf::Event::KeyEvent" -->Keyboard event parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1KeyEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1dea12ac3a76e8b8fd5e19d167fb2c7"></a><!-- doxytag: member="sf::Event::KeyEvent::Code" ref="a1dea12ac3a76e8b8fd5e19d167fb2c7" args="" -->
-<a class="el" href="namespacesf_1_1Key.htm#d32ed01d3448273340bd25af5cdd9c81">Key::Code</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Code</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="daf2955e828818ec5bf2444499a96031"></a><!-- doxytag: member="sf::Event::KeyEvent::Alt" ref="daf2955e828818ec5bf2444499a96031" args="" -->
-bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>Alt</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec1229d610db477818cb9698f9f17a50"></a><!-- doxytag: member="sf::Event::KeyEvent::Control" ref="ec1229d610db477818cb9698f9f17a50" args="" -->
-bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>Control</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5990094b18523541c1dfd60fb54445c"></a><!-- doxytag: member="sf::Event::KeyEvent::Shift" ref="e5990094b18523541c1dfd60fb54445c" args="" -->
-bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>Shift</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Keyboard event parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00204">204</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseButtonEvent-members.htm b/doc/html/structsf_1_1Event_1_1MouseButtonEvent-members.htm
deleted file mode 100755
index e1ca78a..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseButtonEvent-members.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseButtonEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Button</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>X</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Y</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">sf::Event::Event::MouseButtonEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseButtonEvent.htm b/doc/html/structsf_1_1Event_1_1MouseButtonEvent.htm
deleted file mode 100755
index bb42525..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseButtonEvent.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1MouseButtonEvent.htm">MouseButtonEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseButtonEvent Struct Reference</h1><!-- doxytag: class="sf::Event::MouseButtonEvent" --><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> buttons events parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1MouseButtonEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3fef6d343e96177d24413719f90aec40"></a><!-- doxytag: member="sf::Event::MouseButtonEvent::Button" ref="3fef6d343e96177d24413719f90aec40" args="" -->
-Mouse::Button&nbsp;</td><td class="memItemRight" valign="bottom"><b>Button</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1a3f162a5c81c26655b73e5f8b10844c"></a><!-- doxytag: member="sf::Event::MouseButtonEvent::X" ref="1a3f162a5c81c26655b73e5f8b10844c" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>X</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="de1ed79fee2a6a3f629ac18ebb104e27"></a><!-- doxytag: member="sf::Event::MouseButtonEvent::Y" ref="de1ed79fee2a6a3f629ac18ebb104e27" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Y</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> buttons events parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00232">232</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseMoveEvent-members.htm b/doc/html/structsf_1_1Event_1_1MouseMoveEvent-members.htm
deleted file mode 100755
index 557470a..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseMoveEvent-members.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseMoveEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>X</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Y</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">sf::Event::Event::MouseMoveEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseMoveEvent.htm b/doc/html/structsf_1_1Event_1_1MouseMoveEvent.htm
deleted file mode 100755
index f8d119d..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseMoveEvent.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1MouseMoveEvent.htm">MouseMoveEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseMoveEvent Struct Reference</h1><!-- doxytag: class="sf::Event::MouseMoveEvent" --><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> move event parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1MouseMoveEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d33a08b76eb4e9e66c84f63f0ec59b6"></a><!-- doxytag: member="sf::Event::MouseMoveEvent::X" ref="1d33a08b76eb4e9e66c84f63f0ec59b6" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>X</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e932ed4b4502323181422684600ee733"></a><!-- doxytag: member="sf::Event::MouseMoveEvent::Y" ref="e932ed4b4502323181422684600ee733" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Y</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> move event parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00223">223</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseWheelEvent-members.htm b/doc/html/structsf_1_1Event_1_1MouseWheelEvent-members.htm
deleted file mode 100755
index 89f0dc0..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseWheelEvent-members.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseWheelEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">sf::Event::Event::MouseWheelEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Delta</b> (defined in <a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">sf::Event::Event::MouseWheelEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">sf::Event::Event::MouseWheelEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1MouseWheelEvent.htm b/doc/html/structsf_1_1Event_1_1MouseWheelEvent.htm
deleted file mode 100755
index d7c8aac..0000000
--- a/doc/html/structsf_1_1Event_1_1MouseWheelEvent.htm
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1MouseWheelEvent.htm">MouseWheelEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::MouseWheelEvent Struct Reference</h1><!-- doxytag: class="sf::Event::MouseWheelEvent" --><a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> wheel events parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1MouseWheelEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="515865c7153cdb624eb58c0a7ddf8a6a"></a><!-- doxytag: member="sf::Event::MouseWheelEvent::Delta" ref="515865c7153cdb624eb58c0a7ddf8a6a" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Delta</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<a class="el" href="namespacesf_1_1Mouse.htm" title="Definition of button codes for mouse events.">Mouse</a> wheel events parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00242">242</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1SizeEvent-members.htm b/doc/html/structsf_1_1Event_1_1SizeEvent-members.htm
deleted file mode 100755
index 6dffa89..0000000
--- a/doc/html/structsf_1_1Event_1_1SizeEvent-members.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::SizeEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Height</b> (defined in <a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><b>Width</b> (defined in <a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">sf::Event::Event::SizeEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1SizeEvent.htm b/doc/html/structsf_1_1Event_1_1SizeEvent.htm
deleted file mode 100755
index 0765171..0000000
--- a/doc/html/structsf_1_1Event_1_1SizeEvent.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1SizeEvent.htm">SizeEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::SizeEvent Struct Reference</h1><!-- doxytag: class="sf::Event::SizeEvent" -->Size events parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1SizeEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="575117c8cbdbbcaf9d4c9504f6c50bdc"></a><!-- doxytag: member="sf::Event::SizeEvent::Width" ref="575117c8cbdbbcaf9d4c9504f6c50bdc" args="" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Width</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c3c656261a5ffe28f30d22776a3f2513"></a><!-- doxytag: member="sf::Event::SizeEvent::Height" ref="c3c656261a5ffe28f30d22776a3f2513" args="" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Height</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Size events parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00269">269</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1TextEvent-members.htm b/doc/html/structsf_1_1Event_1_1TextEvent-members.htm
deleted file mode 100755
index ed41c6c..0000000
--- a/doc/html/structsf_1_1Event_1_1TextEvent-members.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::TextEvent Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1Event_1_1TextEvent.htm">sf::Event::Event::TextEvent</a>, including all inherited members.<p><table>
- <tr bgcolor="#f0f0f0"><td><b>Unicode</b> (defined in <a class="el" href="structsf_1_1Event_1_1TextEvent.htm">sf::Event::Event::TextEvent</a>)</td><td><a class="el" href="structsf_1_1Event_1_1TextEvent.htm">sf::Event::Event::TextEvent</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1Event_1_1TextEvent.htm b/doc/html/structsf_1_1Event_1_1TextEvent.htm
deleted file mode 100755
index 5bbccc3..0000000
--- a/doc/html/structsf_1_1Event_1_1TextEvent.htm
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1Event.htm">Event</a>::<a class="el" href="structsf_1_1Event_1_1TextEvent.htm">TextEvent</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::Event::Event::TextEvent Struct Reference</h1><!-- doxytag: class="sf::Event::TextEvent" -->Text event parameters.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Event_8hpp-source.htm">Event.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1Event_1_1TextEvent-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd0f65b0f93dca946313d0708cb4cbf0"></a><!-- doxytag: member="sf::Event::TextEvent::Unicode" ref="dd0f65b0f93dca946313d0708cb4cbf0" args="" -->
-Uint32&nbsp;</td><td class="memItemRight" valign="bottom"><b>Unicode</b></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Text event parameters.
-<p>Definition at line <a class="el" href="Event_8hpp-source.htm#l00215">215</a> of file <a class="el" href="Event_8hpp-source.htm">Event.hpp</a>.</p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="Event_8hpp-source.htm">Event.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1NonCopyable-members.htm b/doc/html/structsf_1_1NonCopyable-members.htm
deleted file mode 100755
index 6c2f2e6..0000000
--- a/doc/html/structsf_1_1NonCopyable-members.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::NonCopyable Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a>()</td><td><a class="el" href="structsf_1_1NonCopyable.htm">sf::NonCopyable</a></td><td><code> [inline, protected]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1NonCopyable.htm b/doc/html/structsf_1_1NonCopyable.htm
deleted file mode 100755
index 4779f50..0000000
--- a/doc/html/structsf_1_1NonCopyable.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="structsf_1_1NonCopyable.htm">NonCopyable</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::NonCopyable Struct Reference</h1><!-- doxytag: class="sf::NonCopyable" -->Utility base class to easily declare non-copyable classes.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="NonCopyable_8hpp-source.htm">NonCopyable.hpp</a>&gt;</code>
-<p>
-<div class="dynheader">
-Inheritance diagram for sf::NonCopyable:</div>
-<div class="dynsection">
-
-<p><center><img src="structsf_1_1NonCopyable.png" usemap="#sf::NonCopyable_map" border="0" alt=""></center>
-<map name="sf::NonCopyable_map">
-<area href="classsf_1_1Context.htm" alt="sf::Context" shape="rect" coords="115,56,220,80">
-<area href="classsf_1_1Ftp.htm" alt="sf::Ftp" shape="rect" coords="115,112,220,136">
-<area href="classsf_1_1Http.htm" alt="sf::Http" shape="rect" coords="115,168,220,192">
-<area href="classsf_1_1Input.htm" alt="sf::Input" shape="rect" coords="115,224,220,248">
-<area href="classsf_1_1Lock.htm" alt="sf::Lock" shape="rect" coords="115,280,220,304">
-<area href="classsf_1_1Mutex.htm" alt="sf::Mutex" shape="rect" coords="115,336,220,360">
-<area href="classsf_1_1Thread.htm" alt="sf::Thread" shape="rect" coords="115,392,220,416">
-<area href="classsf_1_1Window.htm" alt="sf::Window" shape="rect" coords="115,448,220,472">
-</map>
-</div>
-
-<p>
-<a href="structsf_1_1NonCopyable-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1NonCopyable.htm#2110add170580fdb946f887719da6860">NonCopyable</a> ()</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default constructor won't be generated, so provide it. <a href="#2110add170580fdb946f887719da6860"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Utility base class to easily declare non-copyable classes.
-<p>
-Just inherit from <a class="el" href="structsf_1_1NonCopyable.htm" title="Utility base class to easily declare non-copyable classes.">NonCopyable</a> to get a non-copyable class
-<p>Definition at line <a class="el" href="NonCopyable_8hpp-source.htm#l00040">40</a> of file <a class="el" href="NonCopyable_8hpp-source.htm">NonCopyable.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="2110add170580fdb946f887719da6860"></a><!-- doxytag: member="sf::NonCopyable::NonCopyable" ref="2110add170580fdb946f887719da6860" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::NonCopyable::NonCopyable </td>
- <td>(</td>
- <td class="paramname"> </td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-The default constructor won't be generated, so provide it.
-<p>
-
-<p>Definition at line <a class="el" href="NonCopyable_8hpp-source.htm#l00048">48</a> of file <a class="el" href="NonCopyable_8hpp-source.htm">NonCopyable.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="NonCopyable_8hpp-source.htm">NonCopyable.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1NonCopyable.png b/doc/html/structsf_1_1NonCopyable.png
deleted file mode 100755
index 091a7a8..0000000
--- a/doc/html/structsf_1_1NonCopyable.png
+++ /dev/null
Binary files differ
diff --git a/doc/html/structsf_1_1SoundStream_1_1Chunk-members.htm b/doc/html/structsf_1_1SoundStream_1_1Chunk-members.htm
deleted file mode 100755
index 13f58ca..0000000
--- a/doc/html/structsf_1_1SoundStream_1_1Chunk-members.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundStream::SoundStream::Chunk Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">sf::SoundStream::SoundStream::Chunk</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf">NbSamples</a></td><td><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">sf::SoundStream::SoundStream::Chunk</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449">Samples</a></td><td><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">sf::SoundStream::SoundStream::Chunk</a></td><td></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1SoundStream_1_1Chunk.htm b/doc/html/structsf_1_1SoundStream_1_1Chunk.htm
deleted file mode 100755
index 4649ff8..0000000
--- a/doc/html/structsf_1_1SoundStream_1_1Chunk.htm
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1SoundStream.htm">SoundStream</a>::<a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm">Chunk</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::SoundStream::SoundStream::Chunk Struct Reference</h1><!-- doxytag: class="sf::SoundStream::Chunk" -->Structure defining a chunk of audio data to stream.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1SoundStream_1_1Chunk-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const Int16 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#b550ca7bec7530d5dba1faabb1810449">Samples</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to the audio samples. <a href="#b550ca7bec7530d5dba1faabb1810449"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1SoundStream_1_1Chunk.htm#4748a66b0fee43045db65556354b2abf">NbSamples</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of samples pointed by Samples. <a href="#4748a66b0fee43045db65556354b2abf"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Structure defining a chunk of audio data to stream.
-<p>Definition at line <a class="el" href="SoundStream_8hpp-source.htm#l00069">69</a> of file <a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>.</p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="4748a66b0fee43045db65556354b2abf"></a><!-- doxytag: member="sf::SoundStream::Chunk::NbSamples" ref="4748a66b0fee43045db65556354b2abf" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::size_t sf::SoundStream::SoundStream::Chunk::NbSamples </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Number of samples pointed by Samples.
-<p>
-
-<p>Definition at line <a class="el" href="SoundStream_8hpp-source.htm#l00072">72</a> of file <a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="b550ca7bec7530d5dba1faabb1810449"></a><!-- doxytag: member="sf::SoundStream::Chunk::Samples" ref="b550ca7bec7530d5dba1faabb1810449" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const Int16* sf::SoundStream::SoundStream::Chunk::Samples </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Pointer to the audio samples.
-<p>
-
-<p>Definition at line <a class="el" href="SoundStream_8hpp-source.htm#l00071">71</a> of file <a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="SoundStream_8hpp-source.htm">SoundStream.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1WindowSettings-members.htm b/doc/html/structsf_1_1WindowSettings-members.htm
deleted file mode 100755
index 5ea2d07..0000000
--- a/doc/html/structsf_1_1WindowSettings-members.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>sf::WindowSettings Member List</h1>This is the complete list of members for <a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">AntialiasingLevel</a></td><td><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">DepthBits</a></td><td><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">StencilBits</a></td><td><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb">WindowSettings</a>(unsigned int Depth=24, unsigned int Stencil=8, unsigned int Antialiasing=0)</td><td><a class="el" href="structsf_1_1WindowSettings.htm">sf::WindowSettings</a></td><td><code> [inline, explicit]</code></td></tr>
-</table></div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/structsf_1_1WindowSettings.htm b/doc/html/structsf_1_1WindowSettings.htm
deleted file mode 100755
index 7667042..0000000
--- a/doc/html/structsf_1_1WindowSettings.htm
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>SFML - Simple and Fast Multimedia Library</title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="tabs.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="logo">
- <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
- </div>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
- <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
- <li><a href="files.htm"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li><a href="annotated.htm"><span>Class&nbsp;List</span></a></li>
- <li><a href="classes.htm"><span>Class&nbsp;Index</span></a></li>
- <li><a href="hierarchy.htm"><span>Class&nbsp;Hierarchy</span></a></li>
- <li><a href="functions.htm"><span>Class&nbsp;Members</span></a></li>
- </ul>
- </div>
- <div class="navpath"><b>sf</b>::<a class="el" href="structsf_1_1WindowSettings.htm">WindowSettings</a>
- </div>
-</div>
-<div class="contents">
-<h1>sf::WindowSettings Struct Reference</h1><!-- doxytag: class="sf::WindowSettings" -->Structure defining the creation settings of windows.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>&gt;</code>
-<p>
-
-<p>
-<a href="structsf_1_1WindowSettings-members.htm">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1WindowSettings.htm#9a0d11aad458247ff27833594d4b94fb">WindowSettings</a> (unsigned int Depth=24, unsigned int Stencil=8, unsigned int Antialiasing=0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#9a0d11aad458247ff27833594d4b94fb"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">DepthBits</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bits of the depth buffer. <a href="#40027650d83937ec6b6e62b640cfc5c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">StencilBits</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bits of the stencil buffer. <a href="#ccbb7b24418ab8266bec31444f6fba08"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">AntialiasingLevel</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Level of antialiasing. <a href="#188763b40746310b6897a8e6b1a3375f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Structure defining the creation settings of windows.
-<p>Definition at line <a class="el" href="WindowSettings_8hpp-source.htm#l00034">34</a> of file <a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>.</p>
-<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" name="9a0d11aad458247ff27833594d4b94fb"></a><!-- doxytag: member="sf::WindowSettings::WindowSettings" ref="9a0d11aad458247ff27833594d4b94fb" args="(unsigned int Depth=24, unsigned int Stencil=8, unsigned int Antialiasing=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">sf::WindowSettings::WindowSettings </td>
- <td>(</td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Depth</em> = <code>24</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Stencil</em> = <code>8</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int&nbsp;</td>
- <td class="paramname"> <em>Antialiasing</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Default constructor.
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Depth</em>&nbsp;</td><td>: Depth buffer bits (24 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Stencil</em>&nbsp;</td><td>: Stencil buffer bits (8 by default) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Antialiasing</em>&nbsp;</td><td>: Antialiasing level (0 by default) </td></tr>
- </table>
-</dl>
-
-<p>Definition at line <a class="el" href="WindowSettings_8hpp-source.htm#l00044">44</a> of file <a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr><h2>Member Data Documentation</h2>
-<a class="anchor" name="188763b40746310b6897a8e6b1a3375f"></a><!-- doxytag: member="sf::WindowSettings::AntialiasingLevel" ref="188763b40746310b6897a8e6b1a3375f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="structsf_1_1WindowSettings.htm#188763b40746310b6897a8e6b1a3375f">sf::WindowSettings::AntialiasingLevel</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Level of antialiasing.
-<p>
-
-<p>Definition at line <a class="el" href="WindowSettings_8hpp-source.htm#l00056">56</a> of file <a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="40027650d83937ec6b6e62b640cfc5c6"></a><!-- doxytag: member="sf::WindowSettings::DepthBits" ref="40027650d83937ec6b6e62b640cfc5c6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="structsf_1_1WindowSettings.htm#40027650d83937ec6b6e62b640cfc5c6">sf::WindowSettings::DepthBits</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bits of the depth buffer.
-<p>
-
-<p>Definition at line <a class="el" href="WindowSettings_8hpp-source.htm#l00054">54</a> of file <a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>.</p>
-
-</div>
-</div><p>
-<a class="anchor" name="ccbb7b24418ab8266bec31444f6fba08"></a><!-- doxytag: member="sf::WindowSettings::StencilBits" ref="ccbb7b24418ab8266bec31444f6fba08" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="structsf_1_1WindowSettings.htm#ccbb7b24418ab8266bec31444f6fba08">sf::WindowSettings::StencilBits</a> </td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Bits of the stencil buffer.
-<p>
-
-<p>Definition at line <a class="el" href="WindowSettings_8hpp-source.htm#l00055">55</a> of file <a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a>.</p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="WindowSettings_8hpp-source.htm">WindowSettings.hpp</a></ul>
-</div>
-
- <p id="footer">
- &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
- Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
- </p>
-
- </body>
-</html>
diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif
deleted file mode 100755
index 0d62348..0000000
--- a/doc/html/tab_b.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif
deleted file mode 100755
index 9b1e633..0000000
--- a/doc/html/tab_l.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif
deleted file mode 100755
index ce9dd9f..0000000
--- a/doc/html/tab_r.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
deleted file mode 100755
index ab02c62..0000000
--- a/doc/html/tabs.css
+++ /dev/null
@@ -1,105 +0,0 @@
-/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
-
-DIV.tabs
-{
- float : left;
- width : 100%;
- background : url("tab_b.gif") repeat-x bottom;
- margin-bottom : 4px;
-}
-
-DIV.tabs UL
-{
- margin : 0px;
- padding-left : 10px;
- list-style : none;
-}
-
-DIV.tabs LI, DIV.tabs FORM
-{
- display : inline;
- margin : 0px;
- padding : 0px;
-}
-
-DIV.tabs FORM
-{
- float : right;
-}
-
-DIV.tabs A
-{
- float : left;
- background : url("tab_r.gif") no-repeat right top;
- border-bottom : 1px solid #84B0C7;
- font-size : 80%;
- font-weight : bold;
- text-decoration : none;
-}
-
-DIV.tabs A:hover
-{
- background-position: 100% -150px;
-}
-
-DIV.tabs A:link, DIV.tabs A:visited,
-DIV.tabs A:active, DIV.tabs A:hover
-{
- color: #1A419D;
-}
-
-DIV.tabs SPAN
-{
- float : left;
- display : block;
- background : url("tab_l.gif") no-repeat left top;
- padding : 5px 9px;
- white-space : nowrap;
-}
-
-DIV.tabs INPUT
-{
- float : right;
- display : inline;
- font-size : 1em;
-}
-
-DIV.tabs TD
-{
- font-size : 80%;
- font-weight : bold;
- text-decoration : none;
-}
-
-
-
-/* Commented Backslash Hack hides rule from IE5-Mac \*/
-DIV.tabs SPAN {float : none;}
-/* End IE5-Mac hack */
-
-DIV.tabs A:hover SPAN
-{
- background-position: 0% -150px;
-}
-
-DIV.tabs LI.current A
-{
- background-position: 100% -150px;
- border-width : 0px;
-}
-
-DIV.tabs LI.current SPAN
-{
- background-position: 0% -150px;
- padding-bottom : 6px;
-}
-
-DIV.navpath
-{
- background : none;
- border : none;
- border-bottom : 1px solid #84B0C7;
- text-align : center;
- margin : 2px;
- padding : 2px;
-}
diff --git a/doc/mainpage.hpp b/doc/mainpage.hpp
new file mode 100644
index 0000000..9ec687c
--- /dev/null
+++ b/doc/mainpage.hpp
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////
+/// \mainpage
+///
+/// \section welcome Welcome
+/// Welcome to the official SFML documentation. Here you will find a detailed
+/// view of all the SFML <a href="./annotated.php">classes</a> and functions. <br/>
+/// If you are looking for tutorials, you can visit the official website
+/// at <a href="http://www.sfml-dev.org/">www.sfml-dev.org</a>.
+///
+/// \section example Short example
+/// Here is a short example, to show you how simple it is to use SFML :
+///
+/// \code
+///
+/// #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;
+/// }
+/// \endcode
+////////////////////////////////////////////////////////////
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..777a72e
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+# add the examples subdirectories
+add_subdirectory(ftp)
+add_subdirectory(opengl)
+add_subdirectory(pong)
+add_subdirectory(shader)
+add_subdirectory(sockets)
+add_subdirectory(sound)
+add_subdirectory(sound_capture)
+add_subdirectory(voip)
+add_subdirectory(window)
+if(WINDOWS)
+ add_subdirectory(win32)
+elseif(LINUX)
+ add_subdirectory(X11)
+elseif(MACOSX)
+ add_subdirectory(cocoa)
+endif()
diff --git a/examples/X11/CMakeLists.txt b/examples/X11/CMakeLists.txt
new file mode 100644
index 0000000..d63ca9f
--- /dev/null
+++ b/examples/X11/CMakeLists.txt
@@ -0,0 +1,16 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/X11)
+
+# all source files
+set(SRC ${SRCROOT}/X11.cpp)
+
+# find OpenGL, GLU and X11
+find_package(OpenGL REQUIRED)
+include_directories(${OPENGL_INCLUDE_DIR})
+find_package(X11 REQUIRED)
+include_directories(${X11_INCLUDE_DIR})
+
+# define the X11 target
+sfml_add_example(X11 GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-window sfml-system ${OPENGL_LIBRARIES} ${X11_LIBRARIES})
diff --git a/samples/X11/X11.cpp b/examples/X11/X11.cpp
index 5582abe..2ffa08b 100644
--- a/samples/X11/X11.cpp
+++ b/examples/X11/X11.cpp
@@ -12,13 +12,13 @@
////////////////////////////////////////////////////////////
/// Initialize OpenGL states into the specified view
///
-/// \param Window : Target window to initialize
+/// \param Window Target window to initialize
///
////////////////////////////////////////////////////////////
-void Initialize(sf::Window& Window)
+void initialize(sf::Window& window)
{
// Activate the window
- Window.SetActive();
+ window.setActive();
// Setup OpenGL states
// Set color and depth clear value
@@ -39,14 +39,14 @@ void Initialize(sf::Window& Window)
/// Draw the OpenGL scene (a rotating cube) into
/// the specified view
///
-/// \param Window : Target window for rendering
-/// \param ElapsedTime : Time elapsed since the last draw
+/// \param window Target window for rendering
+/// \param elapsedTime Time elapsed since the last draw
///
////////////////////////////////////////////////////////////
-void Draw(sf::Window& Window, float ElapsedTime)
+void draw(sf::Window& window, float elapsedTime)
{
// Activate the window
- Window.SetActive();
+ window.setActive();
// Clear color and depth buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -55,9 +55,9 @@ void Draw(sf::Window& Window, float ElapsedTime)
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.f, 0.f, -200.f);
- glRotatef(ElapsedTime * 50, 1.f, 0.f, 0.f);
- glRotatef(ElapsedTime * 30, 0.f, 1.f, 0.f);
- glRotatef(ElapsedTime * 90, 0.f, 0.f, 1.f);
+ glRotatef(elapsedTime * 0.05f, 1.f, 0.f, 0.f);
+ glRotatef(elapsedTime * 0.03f, 0.f, 1.f, 0.f);
+ glRotatef(elapsedTime * 0.09f, 0.f, 0.f, 1.f);
// Draw a cube
glBegin(GL_QUADS);
@@ -111,89 +111,89 @@ void Draw(sf::Window& Window, float ElapsedTime)
int main()
{
// Open a connection with the X server
- Display* Disp = XOpenDisplay(NULL);
- if (!Disp)
+ Display* display = XOpenDisplay(NULL);
+ if (!display)
return EXIT_FAILURE;
// Get the default screen
- int Screen = DefaultScreen(Disp);
+ int screen = DefaultScreen(display);
// Let's create the main window
- XSetWindowAttributes Attributes;
- Attributes.background_pixel = BlackPixel(Disp, Screen);
- Attributes.event_mask = KeyPressMask;
- Window Win = XCreateWindow(Disp, RootWindow(Disp, Screen),
+ XSetWindowAttributes attributes;
+ attributes.background_pixel = BlackPixel(display, screen);
+ attributes.event_mask = KeyPressMask;
+ Window window = XCreateWindow(display, RootWindow(display, screen),
0, 0, 650, 330, 0,
- DefaultDepth(Disp, Screen),
+ DefaultDepth(display, screen),
InputOutput,
- DefaultVisual(Disp, Screen),
- CWBackPixel | CWEventMask, &Attributes);
- if (!Win)
+ DefaultVisual(display, screen),
+ CWBackPixel | CWEventMask, &attributes);
+ if (!window)
return EXIT_FAILURE;
// Set the window's name
- XStoreName(Disp, Win, "SFML Window");
+ XStoreName(display, window , "SFML Window");
// Let's create the windows which will serve as containers for our SFML views
- Window View1 = XCreateWindow(Disp, Win,
+ Window view1 = XCreateWindow(display, window,
10, 10, 310, 310, 0,
- DefaultDepth(Disp, Screen),
+ DefaultDepth(display, screen),
InputOutput,
- DefaultVisual(Disp, Screen),
+ DefaultVisual(display, screen),
0, NULL);
- Window View2 = XCreateWindow(Disp, Win,
+ Window view2 = XCreateWindow(display, window,
330, 10, 310, 310, 0,
- DefaultDepth(Disp, Screen),
+ DefaultDepth(display, screen),
InputOutput,
- DefaultVisual(Disp, Screen),
+ DefaultVisual(display, screen),
0, NULL);
// Show our windows
- XMapWindow(Disp, Win);
- XFlush(Disp);
+ XMapWindow(display, window);
+ XFlush(display);
// Create our SFML views
- sf::Window SFMLView1(View1);
- sf::Window SFMLView2(View2);
+ sf::Window SFMLView1(view1);
+ sf::Window SFMLView2(view2);
// Create a clock for measuring elapsed time
- sf::Clock Clock;
+ sf::Clock clock;
// Initialize our views
- Initialize(SFMLView1);
- Initialize(SFMLView2);
+ initialize(SFMLView1);
+ initialize(SFMLView2);
// Start the event loop
- bool IsRunning = true;
- while (IsRunning)
+ bool running = true;
+ while (running)
{
- while (XPending(Disp))
+ while (XPending(display))
{
// Get the next pending event
- XEvent Event;
- XNextEvent(Disp, &Event);
+ XEvent event;
+ XNextEvent(display, &event);
// Process it
- switch (Event.type)
+ switch (event.type)
{
// Any key is pressed : quit
case KeyPress :
- IsRunning = false;
+ running = false;
break;
}
}
// Draw something into our views
- Draw(SFMLView1, Clock.GetElapsedTime());
- Draw(SFMLView2, Clock.GetElapsedTime() * 0.3f);
+ draw(SFMLView1, clock.getElapsedTime().asSeconds());
+ draw(SFMLView2, clock.getElapsedTime().asSeconds() * 0.3f);
// Display the views on screen
- SFMLView1.Display();
- SFMLView2.Display();
+ SFMLView1.display();
+ SFMLView2.display();
}
// Close the display
- XCloseDisplay(Disp);
+ XCloseDisplay(display);
return EXIT_SUCCESS;
}
diff --git a/examples/cocoa/CMakeLists.txt b/examples/cocoa/CMakeLists.txt
new file mode 100644
index 0000000..b8b2b4e
--- /dev/null
+++ b/examples/cocoa/CMakeLists.txt
@@ -0,0 +1,67 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/cocoa)
+
+# all source files
+set(SRC ${SRCROOT}/CocoaAppDelegate.h
+ ${SRCROOT}/CocoaAppDelegate.mm
+ ${SRCROOT}/NSString+stdstring.h
+ ${SRCROOT}/NSString+stdstring.mm
+ ${SRCROOT}/main.m)
+
+# all XIB files
+set(XIBS MainMenu)
+
+# all resource files
+set(RESOURCES ${SRCROOT}/resources/logo.png
+ ${SRCROOT}/resources/icon.icns
+ ${SRCROOT}/resources/sansation.ttf
+ ${SRCROOT}/resources/blue.png
+ ${SRCROOT}/resources/green.png
+ ${SRCROOT}/resources/red.png
+ ${SRCROOT}/resources/Credits.rtf)
+
+# define the cocoa target and customize it
+add_executable(cocoa MACOSX_BUNDLE ${SRC} ${RESOURCES})
+set_source_files_properties(${RESOURCES} PROPERTIES
+ MACOSX_PACKAGE_LOCATION Resources)
+set_target_properties(cocoa PROPERTIES
+ MACOSX_BUNDLE_INFO_PLIST ${SRCROOT}/resources/Cocoa-Info.plist)
+target_link_libraries(cocoa "-framework Cocoa -framework Foundation"
+ sfml-system sfml-window sfml-graphics)
+
+# set the target's folder (for IDEs that support it, e.g. Visual Studio)
+set_target_properties(cocoa PROPERTIES FOLDER "Examples")
+
+# compile XIB files
+find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
+if(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
+ message(FATAL_ERROR "ibtool is required to compile .xib files but wasn't found.")
+endif()
+set(RESOURCE_PATH "cocoa.app/Contents/Resources")
+set(XIB_OUTPUT_PATH "${RESOURCE_PATH}/")
+set(XIB_INPUT_PATH "${SRCROOT}/")
+foreach(XIB ${XIBS})
+ add_custom_command(TARGET cocoa
+ POST_BUILD
+ COMMAND ${IBTOOL} --errors
+ --output-format human-readable-text
+ --compile ${XIB_OUTPUT_PATH}/${XIB}.nib
+ ${XIB_INPUT_PATH}/${XIB}.xib
+ COMMENT "Compiling ${XIB}.xib")
+ # deactivated options : --warnings --notices
+endforeach()
+
+# add install rule
+install(TARGETS cocoa
+ BUNDLE DESTINATION ${INSTALL_MISC_DIR}/examples/cocoa
+ COMPONENT examples)
+
+#
+# define the cocoa target
+# sfml_add_example is not compatible with application bundles !
+#
+#sfml_add_example(cocoa
+# SOURCES ${SRC}
+# DEPENDS sfml-system sfml-window sfml-graphics)
+#
+
diff --git a/examples/cocoa/CocoaAppDelegate.h b/examples/cocoa/CocoaAppDelegate.h
new file mode 100644
index 0000000..f259a8c
--- /dev/null
+++ b/examples/cocoa/CocoaAppDelegate.h
@@ -0,0 +1,74 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#import <Cocoa/Cocoa.h>
+#import <SFML/Graphics.hpp>
+
+/*
+ * NB : We need pointers for C++ objects fields in Obj-C interface !
+ * The recomanded way is to use PIMP idiom.
+ *
+ * It's elegant. Moreover, we do no constrain
+ * other file including this one to be Obj-C++.
+ */
+
+struct SFMLmainWindow;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+@interface CocoaAppDelegate : NSObject <NSApplicationDelegate> {
+#else
+@interface CocoaAppDelegate : NSObject {
+#endif
+@private
+ NSWindow *m_window;
+ NSView *m_sfmlView;
+ NSTextField *m_textField;
+ SFMLmainWindow *m_mainWindow;
+ NSTimer *m_renderTimer;
+ BOOL m_visible;
+ BOOL m_initialized;
+}
+
+@property (retain) IBOutlet NSWindow *window;
+@property (assign) IBOutlet NSView *sfmlView;
+@property (assign) IBOutlet NSTextField *textField;
+
+-(IBAction)colorChanged:(NSPopUpButton *)sender;
+-(IBAction)rotationChanged:(NSSlider *)sender;
+-(IBAction)visibleChanged:(NSButton *)sender;
+-(IBAction)textChanged:(NSTextField *)sender;
+-(IBAction)updateText:(NSButton *)sender;
+
+@end
+
+/*
+ * This interface is used to prevent the system alert produced when the SFML view
+ * has the focus and the user press a key.
+ */
+@interface SilentWindow : NSWindow
+
+-(void)keyDown:(NSEvent *)theEvent;
+
+@end
diff --git a/examples/cocoa/CocoaAppDelegate.mm b/examples/cocoa/CocoaAppDelegate.mm
new file mode 100644
index 0000000..ff1bc1e
--- /dev/null
+++ b/examples/cocoa/CocoaAppDelegate.mm
@@ -0,0 +1,241 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#import "CocoaAppDelegate.h"
+#import "NSString+stdstring.h"
+
+// These define are used for converting the color of the NSPopUpButton
+#define BLUE @"Blue"
+#define GREEN @"Green"
+#define RED @"Red"
+
+// Our PIMPL
+struct SFMLmainWindow
+{
+ SFMLmainWindow(sf::WindowHandle win)
+ : renderWindow(win)
+ , background(sf::Color::Blue)
+ {
+ std::string resPath = [[[NSBundle mainBundle] resourcePath] tostdstring];
+ if (!logo.loadFromFile(resPath + "/logo.png")) {
+ NSLog(@"Couldn't load the logo image");
+ }
+
+ logo.setSmooth(true);
+
+ sprite.setTexture(logo, true);
+ sf::FloatRect rect = sprite.getLocalBounds();
+ sf::Vector2f size(rect.width, rect.height);
+ sprite.setOrigin(size / 2.f);
+ sprite.scale(0.3, 0.3);
+
+ unsigned int ww = renderWindow.getSize().x;
+ unsigned int wh = renderWindow.getSize().y;
+ sprite.setPosition(sf::Vector2f(ww, wh) / 2.f);
+
+ if (!font.loadFromFile(resPath + "/sansation.ttf")) {
+ NSLog(@"Couldn't load the font");
+ }
+
+ text.setColor(sf::Color::White);
+ text.setFont(font);
+ }
+
+ sf::RenderWindow renderWindow;
+ sf::Font font;
+ sf::Text text;
+ sf::Texture logo;
+ sf::Sprite sprite;
+ sf::Color background;
+};
+
+// Private stuff
+@interface CocoaAppDelegate ()
+
+@property (assign) SFMLmainWindow *mainWindow;
+@property (retain) NSTimer *renderTimer;
+@property (assign) BOOL visible;
+
+@property (assign) BOOL initialized;
+
+-(void)renderMainWindow:(NSTimer *)aTimer;
+
+@end
+
+
+// Finally, the implementation
+@implementation CocoaAppDelegate
+
+@synthesize window = m_window;
+@synthesize sfmlView = m_sfmlView;
+@synthesize textField = m_textField;
+
+@synthesize mainWindow = m_mainWindow;
+@synthesize renderTimer = m_renderTimer;
+@synthesize visible = m_visible;
+
+@synthesize initialized = m_initialized;
+
+- (id)init {
+ self = [super init];
+ if (self) {
+ self.initialized = NO;
+ }
+ return self;
+}
+
+-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+ if (!self.initialized)
+ {
+ // Init the SFML render area.
+ self.mainWindow = new SFMLmainWindow(self.sfmlView);
+ self.mainWindow->text.setString([self.textField.stringValue tostdwstring]);
+ self.visible = YES;
+
+ // Launch the timer to periodically display our stuff into the Cocoa view.
+ self.renderTimer = [NSTimer timerWithTimeInterval:1.f/60.f
+ target:self
+ selector:@selector(renderMainWindow:)
+ userInfo:nil
+ repeats:YES];
+ [[NSRunLoop mainRunLoop] addTimer:self.renderTimer
+ forMode:NSDefaultRunLoopMode];
+ [[NSRunLoop mainRunLoop] addTimer:self.renderTimer
+ forMode:NSEventTrackingRunLoopMode];
+ /*
+ * This is really some ugly code but in order to have the timer fired
+ * periodically we need to add it to the two above runloop mode.
+ *
+ * The default mode allows timer firing while the user doesn't do anything
+ * while the second mode allows timer firing while he is using a slider
+ * or a menu.
+ */
+
+ self.initialized = YES;
+ }
+}
+
+-(void)dealloc
+{
+ [self.renderTimer invalidate];
+ self.mainWindow->renderWindow.close();
+
+ self.window = nil;
+ self.sfmlView = nil;
+ self.textField = nil;
+
+ delete (SFMLmainWindow *) self.mainWindow;
+ self.mainWindow = 0;
+ self.renderTimer = nil;
+
+ [super dealloc];
+}
+
+-(void)renderMainWindow:(NSTimer *)aTimer
+{
+ // Scaling
+ /* /!\ we do this at 60fps so choose low scaling factor! /!\ */
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
+ {
+ self.mainWindow->sprite.scale(1.01f, 1.01f);
+ }
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
+ {
+ self.mainWindow->sprite.scale(0.99f, 0.99f);
+ }
+
+ // Clear the window, display some stuff and display it into our view.
+
+ self.mainWindow->renderWindow.clear(self.mainWindow->background);
+
+ if (self.visible)
+ {
+ self.mainWindow->renderWindow.draw(self.mainWindow->sprite);
+ }
+
+ self.mainWindow->renderWindow.draw(self.mainWindow->text);
+
+ self.mainWindow->renderWindow.display();
+}
+
+-(IBAction)colorChanged:(NSPopUpButton *)sender
+{
+ if (self.initialized)
+ {
+ // Convert title to color
+ NSString *color = [[sender selectedItem] title];
+ if ([color isEqualToString:BLUE])
+ {
+ self.mainWindow->background = sf::Color::Blue;
+ }
+ else if ([color isEqualToString:GREEN])
+ {
+ self.mainWindow->background = sf::Color::Green;
+ }
+ else
+ {
+ self.mainWindow->background = sf::Color::Red;
+ }
+ }
+}
+
+-(IBAction)rotationChanged:(NSSlider *)sender
+{
+ if (self.initialized)
+ {
+ float angle = [sender floatValue];
+ self.mainWindow->sprite.setRotation(angle);
+ }
+}
+
+-(IBAction)visibleChanged:(NSButton *)sender
+{
+ if (self.initialized)
+ self.visible = [sender state] == NSOnState;
+}
+
+-(IBAction)textChanged:(NSTextField *)sender
+{
+ if (self.initialized)
+ self.mainWindow->text.setString([[sender stringValue] tostdwstring]);
+}
+
+- (IBAction)updateText:(NSButton *)sender
+{
+ // Simply simulate textChanged :
+ [self textChanged:self.textField];
+}
+
+@end
+
+@implementation SilentWindow
+
+-(void)keyDown:(NSEvent *)theEvent
+{
+ // Do nothing except preventing this alert.
+}
+
+@end
diff --git a/examples/cocoa/MainMenu.xib b/examples/cocoa/MainMenu.xib
new file mode 100644
index 0000000..2001ff5
--- /dev/null
+++ b/examples/cocoa/MainMenu.xib
@@ -0,0 +1,4180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1070</int>
+ <string key="IBDocument.SystemVersion">11C74</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1938</string>
+ <string key="IBDocument.AppKitVersion">1138.23</string>
+ <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">1938</string>
+ </object>
+ <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSPopUpButton</string>
+ <string>NSMenuItem</string>
+ <string>NSMenu</string>
+ <string>NSTextFieldCell</string>
+ <string>NSButtonCell</string>
+ <string>NSButton</string>
+ <string>NSSlider</string>
+ <string>NSSliderCell</string>
+ <string>NSCustomObject</string>
+ <string>NSCustomView</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
+ <string>NSTextField</string>
+ <string>NSPopUpButtonCell</string>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Cocoa</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">Cocoa</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About Cocoa</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferencesā€¦</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Cocoa</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit Cocoa</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Openā€¦</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="117038363">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save Asā€¦</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Printā€¦</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Findā€¦</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbarā€¦</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">Cocoa Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">7</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{232, 390}, {485, 379}}</string>
+ <int key="NSWTFlags">1417150464</int>
+ <string key="NSWindowTitle">Cocoa</string>
+ <string key="NSWindowClass">SilentWindow</string>
+ <nil key="NSViewClass"/>
+ <nil key="NSUserInterfaceItemIdentifier"/>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSPopUpButton" id="895645105">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{366, 35}, {97, 26}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="422780221"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSPopUpButtonCell" key="NSCell" id="939854878">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">134219776</int>
+ <object class="NSFont" key="NSSupport" id="507345084">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="895645105"/>
+ <int key="NSButtonFlags">-2035138305</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="507345084"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="468569656">
+ <reference key="NSMenu" ref="526523505"/>
+ <string key="NSTitle">Blue</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <object class="NSCustomResource" key="NSImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">blue</string>
+ </object>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="939854878"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="526523505">
+ <string key="NSTitle">Color</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="468569656"/>
+ <object class="NSMenuItem" id="461530193">
+ <reference key="NSMenu" ref="526523505"/>
+ <string key="NSTitle">Green</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">green</string>
+ </object>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="939854878"/>
+ </object>
+ <object class="NSMenuItem" id="969578911">
+ <reference key="NSMenu" ref="526523505"/>
+ <string key="NSTitle">Red</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">red</string>
+ </object>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="939854878"/>
+ </object>
+ </object>
+ <reference key="NSMenuFont" ref="507345084"/>
+ </object>
+ <int key="NSSelectedIndex">-1</int>
+ <int key="NSPreferredEdge">1</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
+ </object>
+ </object>
+ <object class="NSSlider" id="186246764">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{234, 34}, {28, 30}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="886444468"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="171036244">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <reference key="NSControlView" ref="186246764"/>
+ <double key="NSMaxValue">359</double>
+ <double key="NSMinValue">0.0</double>
+ <double key="NSValue">0.0</double>
+ <double key="NSAltIncValue">0.0</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ <int key="NSSliderType">1</int>
+ </object>
+ </object>
+ <object class="NSButton" id="336088134">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{18, 40}, {64, 18}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="482000415"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="934915496">
+ <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Visible</string>
+ <reference key="NSSupport" ref="507345084"/>
+ <reference key="NSControlView" ref="336088134"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSSwitch</string>
+ </object>
+ <object class="NSButtonImageSource" key="NSAlternateImage">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="482000415">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{172, 41}, {57, 17}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="186246764"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="575979405">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Rotation</string>
+ <reference key="NSSupport" ref="507345084"/>
+ <reference key="NSControlView" ref="482000415"/>
+ <object class="NSColor" key="NSBackgroundColor" id="86428082">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="429197527">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <object class="NSColor" key="NSColor" id="1073457999">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="886444468">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{325, 39}, {39, 17}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="895645105"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="67668546">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Color</string>
+ <reference key="NSSupport" ref="507345084"/>
+ <reference key="NSControlView" ref="886444468"/>
+ <reference key="NSBackgroundColor" ref="86428082"/>
+ <reference key="NSTextColor" ref="429197527"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="969295846">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 337}, {359, 22}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="301002623"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="1043401668">
+ <int key="NSCellFlags">-1803944383</int>
+ <int key="NSCellFlags2">272630848</int>
+ <string key="NSContents">Hello SFML!</string>
+ <reference key="NSSupport" ref="507345084"/>
+ <string key="NSPlaceholderString">Enter some text here</string>
+ <reference key="NSControlView" ref="969295846"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="1073457999"/>
+ </object>
+ <object class="NSArray" key="NSAllowedInputLocales">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSCustomView" id="301002623">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 72}, {440, 260}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="531630843"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSButton" id="531630843">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{381, 331}, {85, 32}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="336088134"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="1053978795">
+ <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Update</string>
+ <reference key="NSSupport" ref="507345084"/>
+ <reference key="NSControlView" ref="531630843"/>
+ <int key="NSButtonFlags">-2038021889</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="507345084"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="422780221">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 2}, {451, 17}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="702743979">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Tips : you can use up and down arrows to scale the logo.</string>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="422780221"/>
+ <reference key="NSBackgroundColor" ref="86428082"/>
+ <reference key="NSTextColor" ref="429197527"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{485, 379}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="969295846"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
+ <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
+ <bool key="NSAutorecalculatesContentBorderThicknessMinY">NO</bool>
+ <double key="NSContentBorderThicknessMinY">22</double>
+ <bool key="NSWindowIsRestorable">YES</bool>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">CocoaAppDelegate</string>
+ </object>
+ <object class="NSCustomObject" id="755631768">
+ <string key="NSClassName">NSFontManager</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">495</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocumentAs:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="117038363"/>
+ </object>
+ <int key="connectionID">363</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">initialFirstResponder</string>
+ <reference key="source" ref="972006081"/>
+ <reference key="destination" ref="969295846"/>
+ </object>
+ <int key="connectionID">559</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="305399458"/>
+ </object>
+ <int key="connectionID">421</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="814362025"/>
+ </object>
+ <int key="connectionID">422</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="885547335"/>
+ </object>
+ <int key="connectionID">423</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontFontPanel:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="159677712"/>
+ </object>
+ <int key="connectionID">424</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="158063935"/>
+ </object>
+ <int key="connectionID">425</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">532</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">colorChanged:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="895645105"/>
+ </object>
+ <int key="connectionID">557</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">sfmlView</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="301002623"/>
+ </object>
+ <int key="connectionID">558</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">rotationChanged:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="186246764"/>
+ </object>
+ <int key="connectionID">560</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">visibleChanged:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="336088134"/>
+ </object>
+ <int key="connectionID">561</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">textChanged:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="969295846"/>
+ </object>
+ <int key="connectionID">562</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">textField</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="969295846"/>
+ </object>
+ <int key="connectionID">566</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">updateText:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="531630843"/>
+ </object>
+ <int key="connectionID">567</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="302598603"/>
+ <reference ref="448692316"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="835318025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="110575045"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789758025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="720053764"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1023925487"/>
+ <reference ref="117038363"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </object>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="117038363"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1065607017"/>
+ </object>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="759406840"/>
+ </object>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </object>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="963351320"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="769623530"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </object>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ </object>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </object>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="752062318"/>
+ </object>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ </object>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="466310130"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ </object>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="785027613"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </object>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="698887838"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </object>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="439893737"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Main Window</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="895645105"/>
+ <reference ref="886444468"/>
+ <reference ref="336088134"/>
+ <reference ref="186246764"/>
+ <reference ref="482000415"/>
+ <reference ref="969295846"/>
+ <reference ref="301002623"/>
+ <reference ref="531630843"/>
+ <reference ref="422780221"/>
+ </object>
+ <reference key="parent" ref="972006081"/>
+ <string key="objectName">Content View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="941447902"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </object>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="786677654"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </object>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="175441468"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1058217995"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="18263474"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </object>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </object>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </object>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">420</int>
+ <reference key="object" ref="755631768"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="579392910"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </object>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="992780483"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="105068016"/>
+ </object>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">494</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="446991534"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </object>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="956096989"/>
+ </object>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </object>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">533</int>
+ <reference key="object" ref="895645105"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="939854878"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ <string key="objectName">Color</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">534</int>
+ <reference key="object" ref="939854878"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="526523505"/>
+ </object>
+ <reference key="parent" ref="895645105"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">535</int>
+ <reference key="object" ref="526523505"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="969578911"/>
+ <reference ref="468569656"/>
+ <reference ref="461530193"/>
+ </object>
+ <reference key="parent" ref="939854878"/>
+ <string key="objectName">Menu - Color</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">536</int>
+ <reference key="object" ref="969578911"/>
+ <reference key="parent" ref="526523505"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">537</int>
+ <reference key="object" ref="468569656"/>
+ <reference key="parent" ref="526523505"/>
+ <string key="objectName">Menu Item - Red</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">538</int>
+ <reference key="object" ref="461530193"/>
+ <reference key="parent" ref="526523505"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">541</int>
+ <reference key="object" ref="336088134"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="934915496"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ <string key="objectName">Visible</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">542</int>
+ <reference key="object" ref="934915496"/>
+ <reference key="parent" ref="336088134"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">545</int>
+ <reference key="object" ref="886444468"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="67668546"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">546</int>
+ <reference key="object" ref="67668546"/>
+ <reference key="parent" ref="886444468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">539</int>
+ <reference key="object" ref="186246764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="171036244"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ <string key="objectName">Rotation</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">540</int>
+ <reference key="object" ref="171036244"/>
+ <reference key="parent" ref="186246764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">543</int>
+ <reference key="object" ref="482000415"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="575979405"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">544</int>
+ <reference key="object" ref="575979405"/>
+ <reference key="parent" ref="482000415"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">552</int>
+ <reference key="object" ref="969295846"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1043401668"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ <string key="objectName">Text</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">553</int>
+ <reference key="object" ref="1043401668"/>
+ <reference key="parent" ref="969295846"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">554</int>
+ <reference key="object" ref="301002623"/>
+ <reference key="parent" ref="439893737"/>
+ <string key="objectName">SFML view</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">564</int>
+ <reference key="object" ref="531630843"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1053978795"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">565</int>
+ <reference key="object" ref="1053978795"/>
+ <reference key="parent" ref="531630843"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">568</int>
+ <reference key="object" ref="422780221"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="702743979"/>
+ </object>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">569</int>
+ <reference key="object" ref="702743979"/>
+ <reference key="parent" ref="422780221"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
+ <string>-3.IBPluginDependency</string>
+ <string>112.IBPluginDependency</string>
+ <string>124.IBPluginDependency</string>
+ <string>125.IBPluginDependency</string>
+ <string>126.IBPluginDependency</string>
+ <string>129.IBPluginDependency</string>
+ <string>130.IBPluginDependency</string>
+ <string>131.IBPluginDependency</string>
+ <string>134.IBPluginDependency</string>
+ <string>136.IBPluginDependency</string>
+ <string>143.IBPluginDependency</string>
+ <string>144.IBPluginDependency</string>
+ <string>145.IBPluginDependency</string>
+ <string>149.IBPluginDependency</string>
+ <string>150.IBPluginDependency</string>
+ <string>19.IBPluginDependency</string>
+ <string>195.IBPluginDependency</string>
+ <string>196.IBPluginDependency</string>
+ <string>197.IBPluginDependency</string>
+ <string>198.IBPluginDependency</string>
+ <string>199.IBPluginDependency</string>
+ <string>200.IBPluginDependency</string>
+ <string>201.IBPluginDependency</string>
+ <string>202.IBPluginDependency</string>
+ <string>203.IBPluginDependency</string>
+ <string>204.IBPluginDependency</string>
+ <string>205.IBPluginDependency</string>
+ <string>206.IBPluginDependency</string>
+ <string>207.IBPluginDependency</string>
+ <string>208.IBPluginDependency</string>
+ <string>209.IBPluginDependency</string>
+ <string>210.IBPluginDependency</string>
+ <string>211.IBPluginDependency</string>
+ <string>212.IBPluginDependency</string>
+ <string>213.IBPluginDependency</string>
+ <string>214.IBPluginDependency</string>
+ <string>215.IBPluginDependency</string>
+ <string>216.IBPluginDependency</string>
+ <string>217.IBPluginDependency</string>
+ <string>218.IBPluginDependency</string>
+ <string>219.IBPluginDependency</string>
+ <string>220.IBPluginDependency</string>
+ <string>221.IBPluginDependency</string>
+ <string>23.IBPluginDependency</string>
+ <string>236.IBPluginDependency</string>
+ <string>239.IBPluginDependency</string>
+ <string>24.IBPluginDependency</string>
+ <string>29.IBPluginDependency</string>
+ <string>295.IBPluginDependency</string>
+ <string>296.IBPluginDependency</string>
+ <string>297.IBPluginDependency</string>
+ <string>298.IBPluginDependency</string>
+ <string>346.IBPluginDependency</string>
+ <string>348.IBPluginDependency</string>
+ <string>349.IBPluginDependency</string>
+ <string>350.IBPluginDependency</string>
+ <string>351.IBPluginDependency</string>
+ <string>354.IBPluginDependency</string>
+ <string>371.IBNSWindowAutoPositionCentersHorizontal</string>
+ <string>371.IBNSWindowAutoPositionCentersVertical</string>
+ <string>371.IBPluginDependency</string>
+ <string>371.IBWindowTemplateEditedContentRect</string>
+ <string>371.NSWindowTemplate.visibleAtLaunch</string>
+ <string>372.IBPluginDependency</string>
+ <string>375.IBPluginDependency</string>
+ <string>376.IBPluginDependency</string>
+ <string>377.IBPluginDependency</string>
+ <string>388.IBPluginDependency</string>
+ <string>389.IBPluginDependency</string>
+ <string>390.IBPluginDependency</string>
+ <string>391.IBPluginDependency</string>
+ <string>392.IBPluginDependency</string>
+ <string>393.IBPluginDependency</string>
+ <string>394.IBPluginDependency</string>
+ <string>395.IBPluginDependency</string>
+ <string>396.IBPluginDependency</string>
+ <string>397.IBPluginDependency</string>
+ <string>398.IBPluginDependency</string>
+ <string>399.IBPluginDependency</string>
+ <string>400.IBPluginDependency</string>
+ <string>401.IBPluginDependency</string>
+ <string>402.IBPluginDependency</string>
+ <string>403.IBPluginDependency</string>
+ <string>404.IBPluginDependency</string>
+ <string>405.IBPluginDependency</string>
+ <string>406.IBPluginDependency</string>
+ <string>407.IBPluginDependency</string>
+ <string>408.IBPluginDependency</string>
+ <string>409.IBPluginDependency</string>
+ <string>410.IBPluginDependency</string>
+ <string>411.IBPluginDependency</string>
+ <string>412.IBPluginDependency</string>
+ <string>413.IBPluginDependency</string>
+ <string>414.IBPluginDependency</string>
+ <string>415.IBPluginDependency</string>
+ <string>416.IBPluginDependency</string>
+ <string>417.IBPluginDependency</string>
+ <string>418.IBPluginDependency</string>
+ <string>419.IBPluginDependency</string>
+ <string>420.IBPluginDependency</string>
+ <string>450.IBPluginDependency</string>
+ <string>451.IBPluginDependency</string>
+ <string>452.IBPluginDependency</string>
+ <string>453.IBPluginDependency</string>
+ <string>454.IBPluginDependency</string>
+ <string>457.IBPluginDependency</string>
+ <string>459.IBPluginDependency</string>
+ <string>460.IBPluginDependency</string>
+ <string>462.IBPluginDependency</string>
+ <string>465.IBPluginDependency</string>
+ <string>466.IBPluginDependency</string>
+ <string>485.IBPluginDependency</string>
+ <string>490.IBPluginDependency</string>
+ <string>491.IBPluginDependency</string>
+ <string>492.IBPluginDependency</string>
+ <string>494.IBPluginDependency</string>
+ <string>496.IBPluginDependency</string>
+ <string>497.IBPluginDependency</string>
+ <string>498.IBPluginDependency</string>
+ <string>499.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>500.IBPluginDependency</string>
+ <string>501.IBPluginDependency</string>
+ <string>502.IBPluginDependency</string>
+ <string>503.IBPluginDependency</string>
+ <string>504.IBPluginDependency</string>
+ <string>505.IBPluginDependency</string>
+ <string>506.IBPluginDependency</string>
+ <string>507.IBPluginDependency</string>
+ <string>508.IBPluginDependency</string>
+ <string>509.IBPluginDependency</string>
+ <string>510.IBPluginDependency</string>
+ <string>511.IBPluginDependency</string>
+ <string>512.IBPluginDependency</string>
+ <string>513.IBPluginDependency</string>
+ <string>514.IBPluginDependency</string>
+ <string>515.IBPluginDependency</string>
+ <string>516.IBPluginDependency</string>
+ <string>517.IBPluginDependency</string>
+ <string>533.IBPluginDependency</string>
+ <string>534.IBPluginDependency</string>
+ <string>535.IBPluginDependency</string>
+ <string>536.IBPluginDependency</string>
+ <string>537.IBPluginDependency</string>
+ <string>537.object.labelIdentifier</string>
+ <string>538.IBPluginDependency</string>
+ <string>539.IBPluginDependency</string>
+ <string>540.IBPluginDependency</string>
+ <string>541.IBPluginDependency</string>
+ <string>542.IBPluginDependency</string>
+ <string>543.IBPluginDependency</string>
+ <string>544.IBPluginDependency</string>
+ <string>545.IBPluginDependency</string>
+ <string>546.IBPluginDependency</string>
+ <string>552.IBPluginDependency</string>
+ <string>553.IBPluginDependency</string>
+ <string>554.IBPluginDependency</string>
+ <string>56.IBPluginDependency</string>
+ <string>564.IBPluginDependency</string>
+ <string>565.IBPluginDependency</string>
+ <string>568.IBPluginDependency</string>
+ <string>569.IBPluginDependency</string>
+ <string>57.IBPluginDependency</string>
+ <string>58.IBPluginDependency</string>
+ <string>72.IBPluginDependency</string>
+ <string>73.IBPluginDependency</string>
+ <string>74.IBPluginDependency</string>
+ <string>75.IBPluginDependency</string>
+ <string>77.IBPluginDependency</string>
+ <string>78.IBPluginDependency</string>
+ <string>79.IBPluginDependency</string>
+ <string>80.IBPluginDependency</string>
+ <string>81.IBPluginDependency</string>
+ <string>82.IBPluginDependency</string>
+ <string>83.IBPluginDependency</string>
+ <string>92.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="NO"/>
+ <boolean value="NO"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{380, 496}, {480, 360}}</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <reference key="dict.values" ref="0"/>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <reference key="dict.values" ref="0"/>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">570</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">CocoaAppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>colorChanged:</string>
+ <string>rotationChanged:</string>
+ <string>textChanged:</string>
+ <string>updateText:</string>
+ <string>visibleChanged:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSPopUpButton</string>
+ <string>NSSlider</string>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>colorChanged:</string>
+ <string>rotationChanged:</string>
+ <string>textChanged:</string>
+ <string>updateText:</string>
+ <string>visibleChanged:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">colorChanged:</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">rotationChanged:</string>
+ <string key="candidateClassName">NSSlider</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">textChanged:</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">updateText:</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">visibleChanged:</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>sfmlView</string>
+ <string>textField</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSView</string>
+ <string>NSTextField</string>
+ <string>NSWindow</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>sfmlView</string>
+ <string>textField</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">sfmlView</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">textField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/CocoaAppDelegate.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">printDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">revertDocumentToSaved:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">runPageLayout:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentAs:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentTo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/NSDocument.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenuCheckmark</string>
+ <string>NSMenuMixedState</string>
+ <string>NSSwitch</string>
+ <string>blue</string>
+ <string>green</string>
+ <string>red</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>{9, 8}</string>
+ <string>{7, 2}</string>
+ <string>{15, 15}</string>
+ <string>{16, 16}</string>
+ <string>{16, 16}</string>
+ <string>{16, 16}</string>
+ </object>
+ </object>
+ </data>
+</archive>
diff --git a/examples/cocoa/NSString+stdstring.h b/examples/cocoa/NSString+stdstring.h
new file mode 100644
index 0000000..0be2536
--- /dev/null
+++ b/examples/cocoa/NSString+stdstring.h
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#import <string>
+#import <Foundation/Foundation.h>
+
+@interface NSString (NSString_stdstring)
+
++(id)stringWithstdstring:(std::string const &)string;
+
++(id)stringWithstdwstring:(std::wstring const &)string;
+
+-(std::string)tostdstring;
+
+-(std::wstring)tostdwstring;
+
+@end
diff --git a/examples/cocoa/NSString+stdstring.mm b/examples/cocoa/NSString+stdstring.mm
new file mode 100644
index 0000000..367b21a
--- /dev/null
+++ b/examples/cocoa/NSString+stdstring.mm
@@ -0,0 +1,78 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#import "NSString+stdstring.h"
+#include <SFML/System/Utf.hpp>
+
+@implementation NSString (NSString_stdstring)
+
++(id)stringWithstdstring:(std::string const &)string
+{
+ std::string utf8;
+ utf8.reserve(string.size() + 1);
+
+ sf::Utf8::fromAnsi(string.begin(), string.end(), std::back_inserter(utf8));
+
+ NSString *str = [NSString stringWithCString:utf8.c_str()
+ encoding:NSUTF8StringEncoding];
+ return str;
+}
+
+-(std::string)tostdstring
+{
+ // Not sure about the encoding to use. Using [self UTF8String] doesn't
+ // work for characters like Ć© or Ć .
+ const char *cstr = [self cStringUsingEncoding:NSISOLatin1StringEncoding];
+
+ if (cstr != NULL)
+ {
+ std::string str(cstr);
+ return str;
+ }
+ else
+ {
+ return "";
+ }
+}
+
++(id)stringWithstdwstring:(std::wstring const &)string
+{
+ char* data = (char *)string.data();
+ unsigned size = string.size() * sizeof(wchar_t);
+
+ NSString *str = [[[NSString alloc] initWithBytes:data length:size
+ encoding:NSUTF32LittleEndianStringEncoding] autorelease];
+ return str;
+}
+
+-(std::wstring)tostdwstring
+{
+ // According to wikipedia, Mac OS X is Little Endian on x86 and x86-64
+ // http://en.wikipedia.org/wiki/Endianness
+ NSData* asData = [self dataUsingEncoding:NSUTF32LittleEndianStringEncoding];
+ return std::wstring((wchar_t *)[asData bytes], [asData length] / sizeof(wchar_t));
+}
+
+@end \ No newline at end of file
diff --git a/examples/cocoa/main.m b/examples/cocoa/main.m
new file mode 100644
index 0000000..324e284
--- /dev/null
+++ b/examples/cocoa/main.m
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+ return NSApplicationMain(argc, (const char **)argv);
+}
diff --git a/examples/cocoa/readme.txt b/examples/cocoa/readme.txt
new file mode 100644
index 0000000..95c3d90
--- /dev/null
+++ b/examples/cocoa/readme.txt
@@ -0,0 +1,28 @@
+SFML IN COCOA APPLICATION
+=========================
+
+This is a small example of the integration of SFML in a Cocoa application.
+
+Features
+--------
+
+ * This example shows how basic UI elements can interact with SFML
+ render areas such as sf::RenderWindow (you can use sf::Window and
+ OpenGL code too, of course).
+ * It also provides tools for converting NSString to and from
+ std::[w]string in an Objective-C Category of NSString.
+ * Moreover, it shows how you can prevent annoying the system alerts
+ produced when the SFML view has focus and the user press a key
+ (see SilentWindow interface in CocoaAppDelegate.[h|mm]).
+
+Special Considerations
+----------------------
+
+While mixing SFML into a Cocoa application you have to deal with mixing
+C++ and Objective-C. In order to proceed you should use .mm extension for
+Objective-C++ files.
+
+Be aware of the limitations of Objective-C++. Please refer to the official
+documentation provided by Apple for more information.
+
+You can also work around these limitations by using CSFML.
diff --git a/examples/ftp/CMakeLists.txt b/examples/ftp/CMakeLists.txt
new file mode 100644
index 0000000..7ef9684
--- /dev/null
+++ b/examples/ftp/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/ftp)
+
+# all source files
+set(SRC ${SRCROOT}/Ftp.cpp)
+
+# define the ftp target
+sfml_add_example(ftp
+ SOURCES ${SRC}
+ DEPENDS sfml-network sfml-system)
diff --git a/samples/ftp/Ftp.cpp b/examples/ftp/Ftp.cpp
index 7634540..7b97860 100644
--- a/samples/ftp/Ftp.cpp
+++ b/examples/ftp/Ftp.cpp
@@ -11,9 +11,9 @@
/// Print a FTP response into a standard output stream
///
////////////////////////////////////////////////////////////
-std::ostream& operator <<(std::ostream& Stream, const sf::Ftp::Response& Response)
+std::ostream& operator <<(std::ostream& stream, const sf::Ftp::Response& response)
{
- return Stream << Response.GetStatus() << Response.GetMessage();
+ return stream << response.getStatus() << response.getMessage();
}
@@ -26,36 +26,36 @@ std::ostream& operator <<(std::ostream& Stream, const sf::Ftp::Response& Respons
int main()
{
// Choose the server address
- sf::IPAddress Address;
+ sf::IpAddress address;
do
{
std::cout << "Enter the FTP server address : ";
- std::cin >> Address;
+ std::cin >> address;
}
- while (!Address.IsValid());
+ while (address == sf::IpAddress::None);
// Connect to the server
- sf::Ftp Server;
- sf::Ftp::Response ConnectResponse = Server.Connect(Address);
- std::cout << ConnectResponse << std::endl;
- if (!ConnectResponse.IsOk())
+ sf::Ftp server;
+ sf::Ftp::Response connectResponse = server.connect(address);
+ std::cout << connectResponse << std::endl;
+ if (!connectResponse.isOk())
return EXIT_FAILURE;
// Ask for user name and password
- std::string UserName, Password;
+ std::string user, password;
std::cout << "User name : ";
- std::cin >> UserName;
+ std::cin >> user;
std::cout << "Password : ";
- std::cin >> Password;
+ std::cin >> password;
// Login to the server
- sf::Ftp::Response LoginResponse = Server.Login(UserName, Password);
- std::cout << LoginResponse << std::endl;
- if (!LoginResponse.IsOk())
+ sf::Ftp::Response loginResponse = server.login(user, password);
+ std::cout << loginResponse << std::endl;
+ if (!loginResponse.isOk())
return EXIT_FAILURE;
// Main menu
- int Choice = 0;
+ int choice = 0;
do
{
// Main FTP menu
@@ -74,10 +74,10 @@ int main()
std::cout << std::endl;
std::cout << "Your choice: ";
- std::cin >> Choice;
+ std::cin >> choice;
std::cout << std::endl;
- switch (Choice)
+ switch (choice)
{
default :
{
@@ -90,96 +90,97 @@ int main()
case 1 :
{
- // Print current server directory
- sf::Ftp::DirectoryResponse Response = Server.GetWorkingDirectory();
- std::cout << Response << std::endl;
- std::cout << "Current directory is " << Response.GetDirectory() << std::endl;
+ // Print the current server directory
+ sf::Ftp::DirectoryResponse response = server.getWorkingDirectory();
+ std::cout << response << std::endl;
+ std::cout << "Current directory is " << response.getDirectory() << std::endl;
break;
}
case 2 :
{
- // Print content of current server directory
- sf::Ftp::ListingResponse Response = Server.GetDirectoryListing();
- std::cout << Response << std::endl;
- for (std::size_t i = 0; i < Response.GetCount(); ++i)
- std::cout << Response.GetFilename(i) << std::endl;
+ // Print the contents of the current server directory
+ sf::Ftp::ListingResponse response = server.getDirectoryListing();
+ std::cout << response << std::endl;
+ const std::vector<std::string>& names = response.getListing();
+ for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it)
+ std::cout << *it << std::endl;
break;
}
case 3 :
{
// Change the current directory
- std::string Directory;
+ std::string directory;
std::cout << "Choose a directory: ";
- std::cin >> Directory;
- std::cout << Server.ChangeDirectory(Directory) << std::endl;
+ std::cin >> directory;
+ std::cout << server.changeDirectory(directory) << std::endl;
break;
}
case 4 :
{
// Create a new directory
- std::string Directory;
+ std::string directory;
std::cout << "Name of the directory to create: ";
- std::cin >> Directory;
- std::cout << Server.MakeDirectory(Directory) << std::endl;
+ std::cin >> directory;
+ std::cout << server.createDirectory(directory) << std::endl;
break;
}
case 5 :
{
// Remove an existing directory
- std::string Directory;
+ std::string directory;
std::cout << "Name of the directory to remove: ";
- std::cin >> Directory;
- std::cout << Server.DeleteDirectory(Directory) << std::endl;
+ std::cin >> directory;
+ std::cout << server.deleteDirectory(directory) << std::endl;
break;
}
case 6 :
{
// Rename a file
- std::string SrcFilename, DstFilename;
+ std::string source, destination;
std::cout << "Name of the file to rename: ";
- std::cin >> SrcFilename;
+ std::cin >> source;
std::cout << "New name: ";
- std::cin >> DstFilename;
- std::cout << Server.RenameFile(SrcFilename, DstFilename) << std::endl;
+ std::cin >> destination;
+ std::cout << server.renameFile(source, destination) << std::endl;
break;
}
case 7 :
{
// Remove an existing directory
- std::string Filename;
+ std::string filename;
std::cout << "Name of the file to remove: ";
- std::cin >> Filename;
- std::cout << Server.DeleteFile(Filename) << std::endl;
+ std::cin >> filename;
+ std::cout << server.deleteFile(filename) << std::endl;
break;
}
case 8 :
{
// Download a file from server
- std::string Filename, Directory;
- std::cout << "Path of the file to download (relative to current directory): ";
- std::cin >> Filename;
+ std::string filename, directory;
+ std::cout << "Filename of the file to download (relative to current directory): ";
+ std::cin >> filename;
std::cout << "Directory to download the file to: ";
- std::cin >> Directory;
- std::cout << Server.Download(Filename, Directory) << std::endl;
+ std::cin >> directory;
+ std::cout << server.download(filename, directory) << std::endl;
break;
}
case 9 :
{
// Upload a file to server
- std::string Filename, Directory;
+ std::string filename, directory;
std::cout << "Path of the file to upload (absolute or relative to working directory): ";
- std::cin >> Filename;
+ std::cin >> filename;
std::cout << "Directory to upload the file to (relative to current directory): ";
- std::cin >> Directory;
- std::cout << Server.Upload(Filename, Directory) << std::endl;
+ std::cin >> directory;
+ std::cout << server.upload(filename, directory) << std::endl;
break;
}
@@ -190,11 +191,11 @@ int main()
}
}
- } while (Choice != 0);
+ } while (choice != 0);
// Disconnect from the server
std::cout << "Disconnecting from server..." << std::endl;
- std::cout << Server.Disconnect() << std::endl;
+ std::cout << server.disconnect() << std::endl;
// Wait until the user presses 'enter' key
std::cout << "Press enter to exit..." << std::endl;
diff --git a/examples/opengl/CMakeLists.txt b/examples/opengl/CMakeLists.txt
new file mode 100644
index 0000000..5a699b6
--- /dev/null
+++ b/examples/opengl/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/opengl)
+
+# all source files
+set(SRC ${SRCROOT}/OpenGL.cpp)
+
+# find OpenGL and GLU
+find_package(OpenGL REQUIRED)
+include_directories(${OPENGL_INCLUDE_DIR})
+
+# define the opengl target
+sfml_add_example(opengl GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-graphics sfml-window sfml-system ${OPENGL_LIBRARIES})
diff --git a/examples/opengl/OpenGL.cpp b/examples/opengl/OpenGL.cpp
new file mode 100644
index 0000000..639254b
--- /dev/null
+++ b/examples/opengl/OpenGL.cpp
@@ -0,0 +1,194 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics.hpp>
+#include <SFML/OpenGL.hpp>
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \return Application exit code
+///
+////////////////////////////////////////////////////////////
+int main()
+{
+ // Request a 32-bits depth buffer when creating the window
+ sf::ContextSettings contextSettings;
+ contextSettings.depthBits = 32;
+
+ // Create the main window
+ sf::RenderWindow window(sf::VideoMode(800, 600), "SFML graphics with OpenGL", sf::Style::Default, contextSettings);
+ window.setVerticalSyncEnabled(true);
+
+ // Make it the active window for OpenGL calls
+ window.setActive();
+
+ // Create a sprite for the background
+ sf::Texture backgroundTexture;
+ if (!backgroundTexture.loadFromFile("resources/background.jpg"))
+ return EXIT_FAILURE;
+ sf::Sprite background(backgroundTexture);
+
+ // Create some text to draw on top of our OpenGL object
+ sf::Font font;
+ if (!font.loadFromFile("resources/sansation.ttf"))
+ return EXIT_FAILURE;
+ sf::Text text("SFML / OpenGL demo", font);
+ text.setColor(sf::Color(255, 255, 255, 170));
+ text.setPosition(250.f, 450.f);
+
+ // Load an OpenGL texture.
+ // We could directly use a sf::Texture as an OpenGL texture (with its Bind() member function),
+ // but here we want more control on it (generate mipmaps, ...) so we create a new one from an image
+ GLuint texture = 0;
+ {
+ sf::Image image;
+ if (!image.loadFromFile("resources/texture.jpg"))
+ return EXIT_FAILURE;
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, image.getSize().x, image.getSize().y, GL_RGBA, GL_UNSIGNED_BYTE, image.getPixelsPtr());
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+ }
+
+ // Enable Z-buffer read and write
+ glEnable(GL_DEPTH_TEST);
+ glDepthMask(GL_TRUE);
+ glClearDepth(1.f);
+
+ // Disable lighting
+ glDisable(GL_LIGHTING);
+
+ // Configure the viewport (the same size as the window)
+ glViewport(0, 0, window.getSize().x, window.getSize().y);
+
+ // Setup a perspective projection
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ GLfloat ratio = static_cast<float>(window.getSize().x) / window.getSize().y;
+ glFrustum(-ratio, ratio, -1.f, 1.f, 1.f, 500.f);
+
+ // Bind the texture
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, texture);
+
+ // Define a 3D cube (6 faces made of 2 triangles composed by 3 vertices)
+ GLfloat cube[] =
+ {
+ // positions // texture coordinates
+ -20, -20, -20, 0, 0,
+ -20, 20, -20, 1, 0,
+ -20, -20, 20, 0, 1,
+ -20, -20, 20, 0, 1,
+ -20, 20, -20, 1, 0,
+ -20, 20, 20, 1, 1,
+
+ 20, -20, -20, 0, 0,
+ 20, 20, -20, 1, 0,
+ 20, -20, 20, 0, 1,
+ 20, -20, 20, 0, 1,
+ 20, 20, -20, 1, 0,
+ 20, 20, 20, 1, 1,
+
+ -20, -20, -20, 0, 0,
+ 20, -20, -20, 1, 0,
+ -20, -20, 20, 0, 1,
+ -20, -20, 20, 0, 1,
+ 20, -20, -20, 1, 0,
+ 20, -20, 20, 1, 1,
+
+ -20, 20, -20, 0, 0,
+ 20, 20, -20, 1, 0,
+ -20, 20, 20, 0, 1,
+ -20, 20, 20, 0, 1,
+ 20, 20, -20, 1, 0,
+ 20, 20, 20, 1, 1,
+
+ -20, -20, -20, 0, 0,
+ 20, -20, -20, 1, 0,
+ -20, 20, -20, 0, 1,
+ -20, 20, -20, 0, 1,
+ 20, -20, -20, 1, 0,
+ 20, 20, -20, 1, 1,
+
+ -20, -20, 20, 0, 0,
+ 20, -20, 20, 1, 0,
+ -20, 20, 20, 0, 1,
+ -20, 20, 20, 0, 1,
+ 20, -20, 20, 1, 0,
+ 20, 20, 20, 1, 1
+ };
+
+ // Enable position and texture coordinates vertex components
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 5 * sizeof(GLfloat), cube);
+ glTexCoordPointer(2, GL_FLOAT, 5 * sizeof(GLfloat), cube + 3);
+
+ // Disable normal and color vertex components
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_COLOR_ARRAY);
+
+ // Create a clock for measuring the time elapsed
+ sf::Clock clock;
+
+ // Start 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();
+
+ // Escape key : exit
+ if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
+ window.close();
+
+ // Adjust the viewport when the window is resized
+ if (event.type == sf::Event::Resized)
+ glViewport(0, 0, event.size.width, event.size.height);
+ }
+
+ // Draw the background
+ window.pushGLStates();
+ window.draw(background);
+ window.popGLStates();
+
+ // Clear the depth buffer
+ glClear(GL_DEPTH_BUFFER_BIT);
+
+ // We get the position of the mouse cursor, so that we can move the box accordingly
+ float x = sf::Mouse::getPosition(window).x * 200.f / window.getSize().x - 100.f;
+ float y = -sf::Mouse::getPosition(window).y * 200.f / window.getSize().y + 100.f;
+
+ // Apply some transformations
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(x, y, -100.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 50.f, 1.f, 0.f, 0.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 30.f, 0.f, 1.f, 0.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 90.f, 0.f, 0.f, 1.f);
+
+ // Draw the cube
+ glDrawArrays(GL_TRIANGLES, 0, 36);
+
+ // Draw some text on top of our OpenGL object
+ window.pushGLStates();
+ window.draw(text);
+ window.popGLStates();
+
+ // Finally, display the rendered frame on screen
+ window.display();
+ }
+
+ // Don't forget to destroy our texture
+ glDeleteTextures(1, &texture);
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/pong/CMakeLists.txt b/examples/pong/CMakeLists.txt
new file mode 100644
index 0000000..2a76ecc
--- /dev/null
+++ b/examples/pong/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/pong)
+
+# all source files
+set(SRC ${SRCROOT}/Pong.cpp)
+
+# define the pong target
+sfml_add_example(pong GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-audio sfml-graphics sfml-window sfml-system)
diff --git a/examples/pong/Pong.cpp b/examples/pong/Pong.cpp
new file mode 100644
index 0000000..1b9a74f
--- /dev/null
+++ b/examples/pong/Pong.cpp
@@ -0,0 +1,241 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics.hpp>
+#include <SFML/Audio.hpp>
+#include <cmath>
+#include <ctime>
+#include <cstdlib>
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \return Application exit code
+///
+////////////////////////////////////////////////////////////
+int main()
+{
+ std::srand(static_cast<unsigned int>(std::time(NULL)));
+
+ // Define some constants
+ const float pi = 3.14159f;
+ const int gameWidth = 800;
+ const int gameHeight = 600;
+ sf::Vector2f paddleSize(25, 100);
+ float ballRadius = 10.f;
+
+ // Create the window of the application
+ sf::RenderWindow window(sf::VideoMode(gameWidth, gameHeight, 32), "SFML Pong");
+ window.setVerticalSyncEnabled(true);
+
+ // Load the sounds used in the game
+ sf::SoundBuffer ballSoundBuffer;
+ if (!ballSoundBuffer.loadFromFile("resources/ball.wav"))
+ return EXIT_FAILURE;
+ sf::Sound ballSound(ballSoundBuffer);
+
+ // Create the left paddle
+ sf::RectangleShape leftPaddle;
+ leftPaddle.setSize(paddleSize - sf::Vector2f(3, 3));
+ leftPaddle.setOutlineThickness(3);
+ leftPaddle.setOutlineColor(sf::Color::Black);
+ leftPaddle.setFillColor(sf::Color(100, 100, 200));
+ leftPaddle.setOrigin(paddleSize / 2.f);
+
+ // Create the right paddle
+ sf::RectangleShape rightPaddle;
+ rightPaddle.setSize(paddleSize - sf::Vector2f(3, 3));
+ rightPaddle.setOutlineThickness(3);
+ rightPaddle.setOutlineColor(sf::Color::Black);
+ rightPaddle.setFillColor(sf::Color(200, 100, 100));
+ rightPaddle.setOrigin(paddleSize / 2.f);
+
+ // Create the ball
+ sf::CircleShape ball;
+ ball.setRadius(ballRadius - 3);
+ ball.setOutlineThickness(3);
+ ball.setOutlineColor(sf::Color::Black);
+ ball.setFillColor(sf::Color::White);
+ ball.setOrigin(ballRadius / 2, ballRadius / 2);
+
+ // Load the text font
+ sf::Font font;
+ if (!font.loadFromFile("resources/sansation.ttf"))
+ return EXIT_FAILURE;
+
+ // Initialize the pause message
+ sf::Text pauseMessage;
+ pauseMessage.setFont(font);
+ pauseMessage.setCharacterSize(40);
+ pauseMessage.setPosition(170.f, 150.f);
+ pauseMessage.setColor(sf::Color::White);
+ pauseMessage.setString("Welcome to SFML pong!\nPress space to start the game");
+
+ // Define the paddles properties
+ sf::Clock AITimer;
+ const sf::Time AITime = sf::seconds(0.1f);
+ const float paddleSpeed = 400.f;
+ float rightPaddleSpeed = 0.f;
+ const float ballSpeed = 400.f;
+ float ballAngle = 0.f; // to be changed later
+
+ sf::Clock clock;
+ bool isPlaying = false;
+ while (window.isOpen())
+ {
+ // Handle events
+ sf::Event event;
+ while (window.pollEvent(event))
+ {
+ // Window closed or escape key pressed: exit
+ if ((event.type == sf::Event::Closed) ||
+ ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)))
+ {
+ window.close();
+ break;
+ }
+
+ // Space key pressed: play
+ if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Space))
+ {
+ if (!isPlaying)
+ {
+ // (re)start the game
+ isPlaying = true;
+ clock.restart();
+
+ // Reset the position of the paddles and ball
+ leftPaddle.setPosition(10 + paddleSize.x / 2, gameHeight / 2);
+ rightPaddle.setPosition(gameWidth - 10 - paddleSize.x / 2, gameHeight / 2);
+ ball.setPosition(gameWidth / 2, gameHeight / 2);
+
+ // Reset the ball angle
+ do
+ {
+ // Make sure the ball initial angle is not too much vertical
+ ballAngle = (std::rand() % 360) * 2 * pi / 360;
+ }
+ while (std::abs(std::cos(ballAngle)) < 0.7f);
+ }
+ }
+ }
+
+ if (isPlaying)
+ {
+ float deltaTime = clock.restart().asSeconds();
+
+ // Move the player's paddle
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up) &&
+ (leftPaddle.getPosition().y - paddleSize.y / 2 > 5.f))
+ {
+ leftPaddle.move(0.f, -paddleSpeed * deltaTime);
+ }
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down) &&
+ (leftPaddle.getPosition().y + paddleSize.y / 2 < gameHeight - 5.f))
+ {
+ leftPaddle.move(0.f, paddleSpeed * deltaTime);
+ }
+
+ // Move the computer's paddle
+ if (((rightPaddleSpeed < 0.f) && (rightPaddle.getPosition().y - paddleSize.y / 2 > 5.f)) ||
+ ((rightPaddleSpeed > 0.f) && (rightPaddle.getPosition().y + paddleSize.y / 2 < gameHeight - 5.f)))
+ {
+ rightPaddle.move(0.f, rightPaddleSpeed * deltaTime);
+ }
+
+ // Update the computer's paddle direction according to the ball position
+ if (AITimer.getElapsedTime() > AITime)
+ {
+ AITimer.restart();
+ if (ball.getPosition().y + ballRadius > rightPaddle.getPosition().y + paddleSize.y / 2)
+ rightPaddleSpeed = paddleSpeed;
+ else if (ball.getPosition().y - ballRadius < rightPaddle.getPosition().y - paddleSize.y / 2)
+ rightPaddleSpeed = -paddleSpeed;
+ else
+ rightPaddleSpeed = 0.f;
+ }
+
+ // Move the ball
+ float factor = ballSpeed * deltaTime;
+ ball.move(std::cos(ballAngle) * factor, std::sin(ballAngle) * factor);
+
+ // Check collisions between the ball and the screen
+ if (ball.getPosition().x - ballRadius < 0.f)
+ {
+ isPlaying = false;
+ pauseMessage.setString("You lost !\nPress space to restart or\nescape to exit");
+ }
+ if (ball.getPosition().x + ballRadius > gameWidth)
+ {
+ isPlaying = false;
+ pauseMessage.setString("You won !\nPress space to restart or\nescape to exit");
+ }
+ if (ball.getPosition().y - ballRadius < 0.f)
+ {
+ ballSound.play();
+ ballAngle = -ballAngle;
+ ball.setPosition(ball.getPosition().x, ballRadius + 0.1f);
+ }
+ if (ball.getPosition().y + ballRadius > gameHeight)
+ {
+ ballSound.play();
+ ballAngle = -ballAngle;
+ ball.setPosition(ball.getPosition().x, gameHeight - ballRadius - 0.1f);
+ }
+
+ // Check the collisions between the ball and the paddles
+ // Left Paddle
+ if (ball.getPosition().x - ballRadius < leftPaddle.getPosition().x + paddleSize.x / 2 &&
+ ball.getPosition().x - ballRadius > leftPaddle.getPosition().x &&
+ ball.getPosition().y + ballRadius >= leftPaddle.getPosition().y - paddleSize.y / 2 &&
+ ball.getPosition().y - ballRadius <= leftPaddle.getPosition().y + paddleSize.y / 2)
+ {
+ if (ball.getPosition().y > leftPaddle.getPosition().y)
+ ballAngle = pi - ballAngle + (std::rand() % 20) * pi / 180;
+ else
+ ballAngle = pi - ballAngle - (std::rand() % 20) * pi / 180;
+
+ ballSound.play();
+ ball.setPosition(leftPaddle.getPosition().x + ballRadius + paddleSize.x / 2 + 0.1f, ball.getPosition().y);
+ }
+
+ // Right Paddle
+ if (ball.getPosition().x + ballRadius > rightPaddle.getPosition().x - paddleSize.x / 2 &&
+ ball.getPosition().x + ballRadius < rightPaddle.getPosition().x &&
+ ball.getPosition().y + ballRadius >= rightPaddle.getPosition().y - paddleSize.y / 2 &&
+ ball.getPosition().y - ballRadius <= rightPaddle.getPosition().y + paddleSize.y / 2)
+ {
+ if (ball.getPosition().y > rightPaddle.getPosition().y)
+ ballAngle = pi - ballAngle + (std::rand() % 20) * pi / 180;
+ else
+ ballAngle = pi - ballAngle - (std::rand() % 20) * pi / 180;
+
+ ballSound.play();
+ ball.setPosition(rightPaddle.getPosition().x - ballRadius - paddleSize.x / 2 - 0.1f, ball.getPosition().y);
+ }
+ }
+
+ // Clear the window
+ window.clear(sf::Color(50, 200, 50));
+
+ if (isPlaying)
+ {
+ // Draw the paddles and the ball
+ window.draw(leftPaddle);
+ window.draw(rightPaddle);
+ window.draw(ball);
+ }
+ else
+ {
+ // Draw the pause message
+ window.draw(pauseMessage);
+ }
+
+ // Display things on screen
+ window.display();
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/shader/CMakeLists.txt b/examples/shader/CMakeLists.txt
new file mode 100644
index 0000000..acb1bac
--- /dev/null
+++ b/examples/shader/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/shader)
+
+# all source files
+set(SRC
+ ${SRCROOT}/Effect.hpp
+ ${SRCROOT}/Shader.cpp)
+
+# define the shader target
+sfml_add_example(shader GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-graphics sfml-window sfml-system)
diff --git a/examples/shader/Effect.hpp b/examples/shader/Effect.hpp
new file mode 100644
index 0000000..ce29c47
--- /dev/null
+++ b/examples/shader/Effect.hpp
@@ -0,0 +1,88 @@
+#ifndef EFFECT_HPP
+#define EFFECT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics.hpp>
+#include <cassert>
+#include <string>
+
+
+////////////////////////////////////////////////////////////
+// Base class for effects
+////////////////////////////////////////////////////////////
+class Effect : public sf::Drawable
+{
+public :
+
+ virtual ~Effect()
+ {
+ }
+
+ static void setFont(const sf::Font& font)
+ {
+ s_font = &font;
+ }
+
+ const std::string& getName() const
+ {
+ return m_name;
+ }
+
+ void load()
+ {
+ m_isLoaded = sf::Shader::isAvailable() && onLoad();
+ }
+
+ void update(float time, float x, float y)
+ {
+ if (m_isLoaded)
+ onUpdate(time, x, y);
+ }
+
+ void draw(sf::RenderTarget& target, sf::RenderStates states) const
+ {
+ if (m_isLoaded)
+ {
+ onDraw(target, states);
+ }
+ else
+ {
+ sf::Text error("Shader not\nsupported", getFont());
+ error.setPosition(320.f, 200.f);
+ error.setCharacterSize(36);
+ target.draw(error, states);
+ }
+ }
+
+protected :
+
+ Effect(const std::string& name) :
+ m_name(name),
+ m_isLoaded(false)
+ {
+ }
+
+ static const sf::Font& getFont()
+ {
+ assert(s_font != NULL);
+ return *s_font;
+ }
+
+private :
+
+ // Virtual functions to be implemented in derived effects
+ virtual bool onLoad() = 0;
+ virtual void onUpdate(float time, float x, float y) = 0;
+ virtual void onDraw(sf::RenderTarget& target, sf::RenderStates states) const = 0;
+
+private :
+
+ std::string m_name;
+ bool m_isLoaded;
+
+ static const sf::Font* s_font;
+};
+
+#endif // EFFECT_HPP
diff --git a/examples/shader/Shader.cpp b/examples/shader/Shader.cpp
new file mode 100644
index 0000000..2b0d8a5
--- /dev/null
+++ b/examples/shader/Shader.cpp
@@ -0,0 +1,380 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include "Effect.hpp"
+#include <SFML/Graphics.hpp>
+#include <vector>
+#include <cmath>
+
+
+const sf::Font* Effect::s_font = NULL;
+
+////////////////////////////////////////////////////////////
+// "Pixelate" fragment shader
+////////////////////////////////////////////////////////////
+class Pixelate : public Effect
+{
+public :
+
+ Pixelate() :
+ Effect("pixelate")
+ {
+ }
+
+ bool onLoad()
+ {
+ // Load the texture and initialize the sprite
+ if (!m_texture.loadFromFile("resources/background.jpg"))
+ return false;
+ m_sprite.setTexture(m_texture);
+
+ // Load the shader
+ if (!m_shader.loadFromFile("resources/pixelate.frag", sf::Shader::Fragment))
+ return false;
+ m_shader.setParameter("texture", sf::Shader::CurrentTexture);
+
+ return true;
+ }
+
+ void onUpdate(float, float x, float y)
+ {
+ m_shader.setParameter("pixel_threshold", (x + y) / 30);
+ }
+
+ void onDraw(sf::RenderTarget& target, sf::RenderStates states) const
+ {
+ states.shader = &m_shader;
+ target.draw(m_sprite, states);
+ }
+
+private:
+
+ sf::Texture m_texture;
+ sf::Sprite m_sprite;
+ sf::Shader m_shader;
+};
+
+
+////////////////////////////////////////////////////////////
+// "Wave" vertex shader + "blur" fragment shader
+////////////////////////////////////////////////////////////
+class WaveBlur : public Effect
+{
+public :
+
+ WaveBlur() :
+ Effect("wave + blur")
+ {
+ }
+
+ bool onLoad()
+ {
+ // Create the text
+ m_text.setString("Praesent suscipit augue in velit pulvinar hendrerit varius purus aliquam.\n"
+ "Mauris mi odio, bibendum quis fringilla a, laoreet vel orci. Proin vitae vulputate tortor.\n"
+ "Praesent cursus ultrices justo, ut feugiat ante vehicula quis.\n"
+ "Donec fringilla scelerisque mauris et viverra.\n"
+ "Maecenas adipiscing ornare scelerisque. Nullam at libero elit.\n"
+ "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n"
+ "Nullam leo urna, tincidunt id semper eget, ultricies sed mi.\n"
+ "Morbi mauris massa, commodo id dignissim vel, lobortis et elit.\n"
+ "Fusce vel libero sed neque scelerisque venenatis.\n"
+ "Integer mattis tincidunt quam vitae iaculis.\n"
+ "Vivamus fringilla sem non velit venenatis fermentum.\n"
+ "Vivamus varius tincidunt nisi id vehicula.\n"
+ "Integer ullamcorper, enim vitae euismod rutrum, massa nisl semper ipsum,\n"
+ "vestibulum sodales sem ante in massa.\n"
+ "Vestibulum in augue non felis convallis viverra.\n"
+ "Mauris ultricies dolor sed massa convallis sed aliquet augue fringilla.\n"
+ "Duis erat eros, porta in accumsan in, blandit quis sem.\n"
+ "In hac habitasse platea dictumst. Etiam fringilla est id odio dapibus sit amet semper dui laoreet.\n");
+ m_text.setFont(getFont());
+ m_text.setCharacterSize(22);
+ m_text.setPosition(30, 20);
+
+ // Load the shader
+ if (!m_shader.loadFromFile("resources/wave.vert", "resources/blur.frag"))
+ return false;
+
+ return true;
+ }
+
+ void onUpdate(float time, float x, float y)
+ {
+ m_shader.setParameter("wave_phase", time);
+ m_shader.setParameter("wave_amplitude", x * 40, y * 40);
+ m_shader.setParameter("blur_radius", (x + y) * 0.008f);
+ }
+
+ void onDraw(sf::RenderTarget& target, sf::RenderStates states) const
+ {
+ states.shader = &m_shader;
+ target.draw(m_text, states);
+ }
+
+private:
+
+ sf::Text m_text;
+ sf::Shader m_shader;
+};
+
+
+////////////////////////////////////////////////////////////
+// "Storm" vertex shader + "blink" fragment shader
+////////////////////////////////////////////////////////////
+class StormBlink : public Effect
+{
+public :
+
+ StormBlink() :
+ Effect("storm + blink")
+ {
+ }
+
+ bool onLoad()
+ {
+ // Create the points
+ m_points.setPrimitiveType(sf::Points);
+ for (int i = 0; i < 40000; ++i)
+ {
+ float x = static_cast<float>(std::rand() % 800);
+ float y = static_cast<float>(std::rand() % 600);
+ sf::Uint8 r = std::rand() % 255;
+ sf::Uint8 g = std::rand() % 255;
+ sf::Uint8 b = std::rand() % 255;
+ m_points.append(sf::Vertex(sf::Vector2f(x, y), sf::Color(r, g, b)));
+ }
+
+ // Load the shader
+ if (!m_shader.loadFromFile("resources/storm.vert", "resources/blink.frag"))
+ return false;
+
+ return true;
+ }
+
+ void onUpdate(float time, float x, float y)
+ {
+ float radius = 200 + std::cos(time) * 150;
+ m_shader.setParameter("storm_position", x * 800, y * 600);
+ m_shader.setParameter("storm_inner_radius", radius / 3);
+ m_shader.setParameter("storm_total_radius", radius);
+ m_shader.setParameter("blink_alpha", 0.5f + std::cos(time * 3) * 0.25f);
+ }
+
+ void onDraw(sf::RenderTarget& target, sf::RenderStates states) const
+ {
+ states.shader = &m_shader;
+ target.draw(m_points, states);
+ }
+
+private:
+
+ sf::VertexArray m_points;
+ sf::Shader m_shader;
+};
+
+
+////////////////////////////////////////////////////////////
+// "Edge" post-effect fragment shader
+////////////////////////////////////////////////////////////
+class Edge : public Effect
+{
+public :
+
+ Edge() :
+ Effect("edge post-effect")
+ {
+ }
+
+ bool onLoad()
+ {
+ // Create the off-screen surface
+ if (!m_surface.create(800, 600))
+ return false;
+ m_surface.setSmooth(true);
+
+ // Load the textures
+ if (!m_backgroundTexture.loadFromFile("resources/sfml.png"))
+ return false;
+ m_backgroundTexture.setSmooth(true);
+ if (!m_entityTexture.loadFromFile("resources/devices.png"))
+ return false;
+ m_entityTexture.setSmooth(true);
+
+ // Initialize the background sprite
+ m_backgroundSprite.setTexture(m_backgroundTexture);
+ m_backgroundSprite.setPosition(135, 100);
+
+ // Load the moving entities
+ for (int i = 0; i < 6; ++i)
+ {
+ sf::Sprite entity(m_entityTexture, sf::IntRect(96 * i, 0, 96, 96));
+ m_entities.push_back(entity);
+ }
+
+ // Load the shader
+ if (!m_shader.loadFromFile("resources/edge.frag", sf::Shader::Fragment))
+ return false;
+ m_shader.setParameter("texture", sf::Shader::CurrentTexture);
+
+ return true;
+ }
+
+ void onUpdate(float time, float x, float y)
+ {
+ m_shader.setParameter("edge_threshold", 1 - (x + y) / 2);
+
+ // Update the position of the moving entities
+ for (std::size_t i = 0; i < m_entities.size(); ++i)
+ {
+ sf::Vector2f position;
+ position.x = std::cos(0.25f * (time * i + (m_entities.size() - i))) * 300 + 350;
+ position.y = std::sin(0.25f * (time * (m_entities.size() - i) + i)) * 200 + 250;
+ m_entities[i].setPosition(position);
+ }
+
+ // Render the updated scene to the off-screen surface
+ m_surface.clear(sf::Color::White);
+ m_surface.draw(m_backgroundSprite);
+ for (std::size_t i = 0; i < m_entities.size(); ++i)
+ m_surface.draw(m_entities[i]);
+ m_surface.display();
+ }
+
+ void onDraw(sf::RenderTarget& target, sf::RenderStates states) const
+ {
+ states.shader = &m_shader;
+ target.draw(sf::Sprite(m_surface.getTexture()), states);
+ }
+
+private:
+
+ sf::RenderTexture m_surface;
+ sf::Texture m_backgroundTexture;
+ sf::Texture m_entityTexture;
+ sf::Sprite m_backgroundSprite;
+ std::vector<sf::Sprite> m_entities;
+ sf::Shader m_shader;
+};
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \return Application exit code
+///
+////////////////////////////////////////////////////////////
+int main()
+{
+ // Create the main window
+ sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Shader");
+ window.setVerticalSyncEnabled(true);
+
+ // Load the application font and pass it to the Effect class
+ sf::Font font;
+ if (!font.loadFromFile("resources/sansation.ttf"))
+ return EXIT_FAILURE;
+ Effect::setFont(font);
+
+ // Create the effects
+ std::vector<Effect*> effects;
+ effects.push_back(new Pixelate);
+ effects.push_back(new WaveBlur);
+ effects.push_back(new StormBlink);
+ effects.push_back(new Edge);
+ std::size_t current = 0;
+
+ // Initialize them
+ for (std::size_t i = 0; i < effects.size(); ++i)
+ effects[i]->load();
+
+ // Create the messages background
+ sf::Texture textBackgroundTexture;
+ if (!textBackgroundTexture.loadFromFile("resources/text-background.png"))
+ return EXIT_FAILURE;
+ sf::Sprite textBackground(textBackgroundTexture);
+ textBackground.setPosition(0, 520);
+ textBackground.setColor(sf::Color(255, 255, 255, 200));
+
+ // Create the description text
+ sf::Text description("Current effect: " + effects[current]->getName(), font, 20);
+ description.setPosition(10, 530);
+ description.setColor(sf::Color(80, 80, 80));
+
+ // Create the instructions text
+ sf::Text instructions("Press left and right arrows to change the current shader", font, 20);
+ instructions.setPosition(280, 555);
+ instructions.setColor(sf::Color(80, 80, 80));
+
+ // Start the game loop
+ sf::Clock clock;
+ while (window.isOpen())
+ {
+ // Process events
+ sf::Event event;
+ while (window.pollEvent(event))
+ {
+ // Close window: exit
+ if (event.type == sf::Event::Closed)
+ window.close();
+
+ if (event.type == sf::Event::KeyPressed)
+ {
+ switch (event.key.code)
+ {
+ // Escape key: exit
+ case sf::Keyboard::Escape:
+ window.close();
+ break;
+
+ // Left arrow key: previous shader
+ case sf::Keyboard::Left:
+ if (current == 0)
+ current = effects.size() - 1;
+ else
+ current--;
+ description.setString("Current effect: " + effects[current]->getName());
+ break;
+
+ // Right arrow key: next shader
+ case sf::Keyboard::Right:
+ if (current == effects.size() - 1)
+ current = 0;
+ else
+ current++;
+ description.setString("Current effect: " + effects[current]->getName());
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ // Update the current example
+ float x = static_cast<float>(sf::Mouse::getPosition(window).x) / window.getSize().x;
+ float y = static_cast<float>(sf::Mouse::getPosition(window).y) / window.getSize().y;
+ effects[current]->update(clock.getElapsedTime().asSeconds(), x, y);
+
+ // Clear the window
+ window.clear(sf::Color(255, 128, 0));
+
+ // Draw the current example
+ window.draw(*effects[current]);
+
+ // Draw the text
+ window.draw(textBackground);
+ window.draw(instructions);
+ window.draw(description);
+
+ // Finally, display the rendered frame on screen
+ window.display();
+ }
+
+ // delete the effects
+ for (std::size_t i = 0; i < effects.size(); ++i)
+ delete effects[i];
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/sockets/CMakeLists.txt b/examples/sockets/CMakeLists.txt
new file mode 100644
index 0000000..04b3583
--- /dev/null
+++ b/examples/sockets/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/sockets)
+
+# all source files
+set(SRC ${SRCROOT}/Sockets.cpp
+ ${SRCROOT}/TCP.cpp
+ ${SRCROOT}/UDP.cpp)
+
+# define the sockets target
+sfml_add_example(sockets
+ SOURCES ${SRC}
+ DEPENDS sfml-network sfml-system)
diff --git a/examples/sockets/Sockets.cpp b/examples/sockets/Sockets.cpp
new file mode 100644
index 0000000..a73609c
--- /dev/null
+++ b/examples/sockets/Sockets.cpp
@@ -0,0 +1,59 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <iostream>
+#include <cstdlib>
+
+
+void runTcpServer(unsigned short port);
+void runTcpClient(unsigned short port);
+void runUdpServer(unsigned short port);
+void runUdpClient(unsigned short port);
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \return Application exit code
+///
+////////////////////////////////////////////////////////////
+int main()
+{
+ // Choose an arbitrary port for opening sockets
+ const unsigned short port = 50001;
+
+ // TCP, UDP or connected UDP ?
+ char protocol;
+ std::cout << "Do you want to use TCP (t) or UDP (u) ? ";
+ std::cin >> protocol;
+
+ // Client or server ?
+ char who;
+ std::cout << "Do you want to be a server (s) or a client (c) ? ";
+ std::cin >> who;
+
+ if (protocol == 't')
+ {
+ // Test the TCP protocol
+ if (who == 's')
+ runTcpServer(port);
+ else
+ runTcpClient(port);
+ }
+ else
+ {
+ // Test the unconnected UDP protocol
+ if (who == 's')
+ runUdpServer(port);
+ else
+ runUdpClient(port);
+ }
+
+ // Wait until the user presses 'enter' key
+ std::cout << "Press enter to exit..." << std::endl;
+ std::cin.ignore(10000, '\n');
+ std::cin.ignore(10000, '\n');
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/sockets/TCP.cpp b/examples/sockets/TCP.cpp
new file mode 100644
index 0000000..ff1e1f6
--- /dev/null
+++ b/examples/sockets/TCP.cpp
@@ -0,0 +1,81 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network.hpp>
+#include <iostream>
+
+
+////////////////////////////////////////////////////////////
+/// Launch a server, wait for an incoming connection,
+/// send a message and wait for the answer.
+///
+////////////////////////////////////////////////////////////
+void runTcpServer(unsigned short port)
+{
+ // Create a server socket to accept new connections
+ sf::TcpListener listener;
+
+ // Listen to the given port for incoming connections
+ if (listener.listen(port) != sf::Socket::Done)
+ return;
+ std::cout << "Server is listening to port " << port << ", waiting for connections... " << std::endl;
+
+ // Wait for a connection
+ sf::TcpSocket socket;
+ if (listener.accept(socket) != sf::Socket::Done)
+ return;
+ std::cout << "Client connected: " << socket.getRemoteAddress() << std::endl;
+
+ // Send a message to the connected client
+ const char out[] = "Hi, I'm the server";
+ if (socket.send(out, sizeof(out)) != sf::Socket::Done)
+ return;
+ std::cout << "Message sent to the client: \"" << out << "\"" << std::endl;
+
+ // Receive a message back from the client
+ char in[128];
+ std::size_t received;
+ if (socket.receive(in, sizeof(in), received) != sf::Socket::Done)
+ return;
+ std::cout << "Answer received from the client: \"" << in << "\"" << std::endl;
+}
+
+
+////////////////////////////////////////////////////////////
+/// Create a client, connect it to a server, display the
+/// welcome message and send an answer.
+///
+////////////////////////////////////////////////////////////
+void runTcpClient(unsigned short port)
+{
+ // Ask for the server address
+ sf::IpAddress server;
+ do
+ {
+ std::cout << "Type the address or name of the server to connect to: ";
+ std::cin >> server;
+ }
+ while (server == sf::IpAddress::None);
+
+ // Create a socket for communicating with the server
+ sf::TcpSocket socket;
+
+ // Connect to the server
+ if (socket.connect(server, port) != sf::Socket::Done)
+ return;
+ std::cout << "Connected to server " << server << std::endl;
+
+ // Receive a message from the server
+ char in[128];
+ std::size_t received;
+ if (socket.receive(in, sizeof(in), received) != sf::Socket::Done)
+ return;
+ std::cout << "Message received from the server: \"" << in << "\"" << std::endl;
+
+ // Send an answer to the server
+ const char out[] = "Hi, I'm a client";
+ if (socket.send(out, sizeof(out)) != sf::Socket::Done)
+ return;
+ std::cout << "Message sent to the server: \"" << out << "\"" << std::endl;
+}
diff --git a/examples/sockets/UDP.cpp b/examples/sockets/UDP.cpp
new file mode 100644
index 0000000..abc7b4b
--- /dev/null
+++ b/examples/sockets/UDP.cpp
@@ -0,0 +1,72 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network.hpp>
+#include <iostream>
+
+
+////////////////////////////////////////////////////////////
+/// Launch a server, wait for a message, send an answer.
+///
+////////////////////////////////////////////////////////////
+void runUdpServer(unsigned short port)
+{
+ // Create a socket to receive a message from anyone
+ sf::UdpSocket socket;
+
+ // Listen to messages on the specified port
+ if (socket.bind(port) != sf::Socket::Done)
+ return;
+ std::cout << "Server is listening to port " << port << ", waiting for a message... " << std::endl;
+
+ // Wait for a message
+ char in[128];
+ std::size_t received;
+ sf::IpAddress sender;
+ unsigned short senderPort;
+ if (socket.receive(in, sizeof(in), received, sender, senderPort) != sf::Socket::Done)
+ return;
+ std::cout << "Message received from client " << sender << ": \"" << in << "\"" << std::endl;
+
+ // Send an answer to the client
+ const char out[] = "Hi, I'm the server";
+ if (socket.send(out, sizeof(out), sender, senderPort) != sf::Socket::Done)
+ return;
+ std::cout << "Message sent to the client: \"" << out << "\"" << std::endl;
+}
+
+
+////////////////////////////////////////////////////////////
+/// Send a message to the server, wait for the answer
+///
+////////////////////////////////////////////////////////////
+void runUdpClient(unsigned short port)
+{
+ // Ask for the server address
+ sf::IpAddress server;
+ do
+ {
+ std::cout << "Type the address or name of the server to connect to: ";
+ std::cin >> server;
+ }
+ while (server == sf::IpAddress::None);
+
+ // Create a socket for communicating with the server
+ sf::UdpSocket socket;
+
+ // Send a message to the server
+ const char out[] = "Hi, I'm a client";
+ if (socket.send(out, sizeof(out), server, port) != sf::Socket::Done)
+ return;
+ std::cout << "Message sent to the server: \"" << out << "\"" << std::endl;
+
+ // Receive an answer from anyone (but most likely from the server)
+ char in[128];
+ std::size_t received;
+ sf::IpAddress sender;
+ unsigned short senderPort;
+ if (socket.receive(in, sizeof(in), received, sender, senderPort) != sf::Socket::Done)
+ return;
+ std::cout << "Message received from " << sender << ": \"" << in << "\"" << std::endl;
+}
diff --git a/examples/sound/CMakeLists.txt b/examples/sound/CMakeLists.txt
new file mode 100644
index 0000000..12f12e1
--- /dev/null
+++ b/examples/sound/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/sound)
+
+# all source files
+set(SRC ${SRCROOT}/Sound.cpp)
+
+# define the sound target
+sfml_add_example(sound
+ SOURCES ${SRC}
+ DEPENDS sfml-audio sfml-system)
diff --git a/samples/sound/Sound.cpp b/examples/sound/Sound.cpp
index 982eb99..5c75ab8 100644
--- a/samples/sound/Sound.cpp
+++ b/examples/sound/Sound.cpp
@@ -11,31 +11,32 @@
/// Play a sound
///
////////////////////////////////////////////////////////////
-void PlaySound()
+void playSound()
{
// Load a sound buffer from a wav file
- sf::SoundBuffer Buffer;
- if (!Buffer.LoadFromFile("datas/sound/footsteps.wav"))
+ sf::SoundBuffer buffer;
+ if (!buffer.loadFromFile("resources/canary.wav"))
return;
// Display sound informations
- std::cout << "footsteps.wav :" << std::endl;
- std::cout << " " << Buffer.GetDuration() << " sec" << std::endl;
- std::cout << " " << Buffer.GetSampleRate() << " samples / sec" << std::endl;
- std::cout << " " << Buffer.GetChannelsCount() << " channels" << std::endl;
+ std::cout << "canary.wav :" << std::endl;
+ std::cout << " " << buffer.getDuration().asSeconds() << " seconds" << std::endl;
+ std::cout << " " << buffer.getSampleRate() << " samples / sec" << std::endl;
+ std::cout << " " << buffer.getChannelCount() << " channels" << std::endl;
// Create a sound instance and play it
- sf::Sound Sound(Buffer);
- Sound.Play();
+ sf::Sound sound(buffer);
+ sound.play();
// Loop while the sound is playing
- while (Sound.GetStatus() == sf::Sound::Playing)
+ while (sound.getStatus() == sf::Sound::Playing)
{
// Leave some CPU time for other processes
- sf::Sleep(0.1f);
+ sf::sleep(sf::milliseconds(100));
// Display the playing position
- std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << Sound.GetPlayingOffset() << " sec ";
+ std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << sound.getPlayingOffset().asSeconds() << " sec ";
+ std::cout << std::flush;
}
std::cout << std::endl << std::endl;
}
@@ -45,30 +46,31 @@ void PlaySound()
/// Play a music
///
////////////////////////////////////////////////////////////
-void PlayMusic()
+void playMusic()
{
// Load an ogg music file
- sf::Music Music;
- if (!Music.OpenFromFile("datas/sound/lepidoptera.ogg"))
+ sf::Music music;
+ if (!music.openFromFile("resources/orchestral.ogg"))
return;
// Display music informations
- std::cout << "lepidoptera.ogg :" << std::endl;
- std::cout << " " << Music.GetDuration() << " sec" << std::endl;
- std::cout << " " << Music.GetSampleRate() << " samples / sec" << std::endl;
- std::cout << " " << Music.GetChannelsCount() << " channels" << std::endl;
+ std::cout << "orchestral.ogg :" << std::endl;
+ std::cout << " " << music.getDuration().asSeconds() << " seconds" << std::endl;
+ std::cout << " " << music.getSampleRate() << " samples / sec" << std::endl;
+ std::cout << " " << music.getChannelCount() << " channels" << std::endl;
// Play it
- Music.Play();
+ music.play();
// Loop while the music is playing
- while (Music.GetStatus() == sf::Music::Playing)
+ while (music.getStatus() == sf::Music::Playing)
{
// Leave some CPU time for other processes
- sf::Sleep(0.1f);
+ sf::sleep(sf::milliseconds(100));
// Display the playing position
- std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << Music.GetPlayingOffset() << " sec ";
+ std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << music.getPlayingOffset().asSeconds() << " sec ";
+ std::cout << std::flush;
}
std::cout << std::endl;
}
@@ -83,10 +85,10 @@ void PlayMusic()
int main()
{
// Play a sound
- PlaySound();
+ playSound();
// Play a music
- PlayMusic();
+ playMusic();
// Wait until the user presses 'enter' key
std::cout << "Press enter to exit..." << std::endl;
diff --git a/examples/sound_capture/CMakeLists.txt b/examples/sound_capture/CMakeLists.txt
new file mode 100644
index 0000000..ac75c3c
--- /dev/null
+++ b/examples/sound_capture/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/sound_capture)
+
+# all source files
+set(SRC ${SRCROOT}/SoundCapture.cpp)
+
+# define the sound-capture target
+sfml_add_example(sound-capture
+ SOURCES ${SRC}
+ DEPENDS sfml-audio sfml-system)
diff --git a/samples/sound_capture/SoundCapture.cpp b/examples/sound_capture/SoundCapture.cpp
index 96ea441..a6946ac 100644
--- a/samples/sound_capture/SoundCapture.cpp
+++ b/examples/sound_capture/SoundCapture.cpp
@@ -16,16 +16,16 @@
int main()
{
// Check that the device can capture audio
- if (sf::SoundRecorder::CanCapture() == false)
+ if (sf::SoundRecorder::isAvailable() == false)
{
std::cout << "Sorry, audio capture is not supported by your system" << std::endl;
return EXIT_SUCCESS;
}
// Choose the sample rate
- unsigned int SampleRate;
+ unsigned int sampleRate;
std::cout << "Please choose the sample rate for sound capture (44100 is CD quality) : ";
- std::cin >> SampleRate;
+ std::cin >> sampleRate;
std::cin.ignore(10000, '\n');
// Wait for user input...
@@ -33,53 +33,54 @@ int main()
std::cin.ignore(10000, '\n');
// Here we'll use an integrated custom recorder, which saves the captured data into a SoundBuffer
- sf::SoundBufferRecorder Recorder;
+ sf::SoundBufferRecorder recorder;
// Audio capture is done in a separate thread, so we can block the main thread while it is capturing
- Recorder.Start(SampleRate);
+ recorder.start(sampleRate);
std::cout << "Recording... press enter to stop";
std::cin.ignore(10000, '\n');
- Recorder.Stop();
+ recorder.stop();
// Get the buffer containing the captured data
- const sf::SoundBuffer& Buffer = Recorder.GetBuffer();
+ const sf::SoundBuffer& buffer = recorder.getBuffer();
// Display captured sound informations
std::cout << "Sound information :" << std::endl;
- std::cout << " " << Buffer.GetDuration() << " seconds" << std::endl;
- std::cout << " " << Buffer.GetSampleRate() << " samples / seconds" << std::endl;
- std::cout << " " << Buffer.GetChannelsCount() << " channels" << std::endl;
+ std::cout << " " << buffer.getDuration().asSeconds() << " seconds" << std::endl;
+ std::cout << " " << buffer.getSampleRate() << " samples / seconds" << std::endl;
+ std::cout << " " << buffer.getChannelCount() << " channels" << std::endl;
// Choose what to do with the recorded sound data
- char Choice;
+ char choice;
std::cout << "What do you want to do with captured sound (p = play, s = save) ? ";
- std::cin >> Choice;
+ std::cin >> choice;
std::cin.ignore(10000, '\n');
- if (Choice == 's')
+ if (choice == 's')
{
// Choose the filename
- std::string Filename;
+ std::string filename;
std::cout << "Choose the file to create : ";
- std::getline(std::cin, Filename);
+ std::getline(std::cin, filename);
// Save the buffer
- Buffer.SaveToFile(Filename);
+ buffer.saveToFile(filename);
}
else
{
// Create a sound instance and play it
- sf::Sound Sound(Buffer);
- Sound.Play();
+ sf::Sound sound(buffer);
+ sound.play();
// Wait until finished
- while (Sound.GetStatus() == sf::Sound::Playing)
+ while (sound.getStatus() == sf::Sound::Playing)
{
// Display the playing position
- std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << Sound.GetPlayingOffset() << " sec";
+ std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << sound.getPlayingOffset().asSeconds() << " sec";
+ std::cout << std::flush;
// Leave some CPU time for other threads
- sf::Sleep(0.1f);
+ sf::sleep(sf::milliseconds(100));
}
}
diff --git a/examples/voip/CMakeLists.txt b/examples/voip/CMakeLists.txt
new file mode 100644
index 0000000..c2e0738
--- /dev/null
+++ b/examples/voip/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/voip)
+
+# all source files
+set(SRC ${SRCROOT}/VoIP.cpp
+ ${SRCROOT}/Client.cpp
+ ${SRCROOT}/Server.cpp)
+
+# define the voip target
+sfml_add_example(voip
+ SOURCES ${SRC}
+ DEPENDS sfml-audio sfml-network sfml-system)
diff --git a/examples/voip/Client.cpp b/examples/voip/Client.cpp
new file mode 100644
index 0000000..ceb2da6
--- /dev/null
+++ b/examples/voip/Client.cpp
@@ -0,0 +1,129 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Audio.hpp>
+#include <SFML/Network.hpp>
+#include <iostream>
+
+
+const sf::Uint8 audioData = 1;
+const sf::Uint8 endOfStream = 2;
+
+
+////////////////////////////////////////////////////////////
+/// Specialization of audio recorder for sending recorded audio
+/// data through the network
+////////////////////////////////////////////////////////////
+class NetworkRecorder : public sf::SoundRecorder
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// Constructor
+ ///
+ /// \param host Remote host to which send the recording data
+ /// \param port Port of the remote host
+ ///
+ ////////////////////////////////////////////////////////////
+ NetworkRecorder(const sf::IpAddress& host, unsigned short port) :
+ m_host(host),
+ m_port(port)
+ {
+ }
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// /see SoundRecorder::OnStart
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool onStart()
+ {
+ if (m_socket.connect(m_host, m_port) == sf::Socket::Done)
+ {
+ std::cout << "Connected to server " << m_host << std::endl;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ ////////////////////////////////////////////////////////////
+ /// /see SoundRecorder::ProcessSamples
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool onProcessSamples(const sf::Int16* samples, std::size_t sampleCount)
+ {
+ // Pack the audio samples into a network packet
+ sf::Packet packet;
+ packet << audioData;
+ packet.append(samples, sampleCount * sizeof(sf::Int16));
+
+ // Send the audio packet to the server
+ return m_socket.send(packet) == sf::Socket::Done;
+ }
+
+ ////////////////////////////////////////////////////////////
+ /// /see SoundRecorder::OnStop
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void onStop()
+ {
+ // Send a "end-of-stream" packet
+ sf::Packet packet;
+ packet << endOfStream;
+ m_socket.send(packet);
+
+ // Close the socket
+ m_socket.disconnect();
+ }
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ sf::IpAddress m_host; ///< Address of the remote host
+ unsigned short m_port; ///< Remote port
+ sf::TcpSocket m_socket; ///< Socket used to communicate with the server
+};
+
+
+////////////////////////////////////////////////////////////
+/// Create a client, connect it to a running server and
+/// start sending him audio data
+///
+////////////////////////////////////////////////////////////
+void doClient(unsigned short port)
+{
+ // Check that the device can capture audio
+ if (sf::SoundRecorder::isAvailable() == false)
+ {
+ std::cout << "Sorry, audio capture is not supported by your system" << std::endl;
+ return;
+ }
+
+ // Ask for server address
+ sf::IpAddress server;
+ do
+ {
+ std::cout << "Type address or name of the server to connect to : ";
+ std::cin >> server;
+ }
+ while (server == sf::IpAddress::None);
+
+ // Create an instance of our custom recorder
+ NetworkRecorder recorder(server, port);
+
+ // Wait for user input...
+ std::cin.ignore(10000, '\n');
+ std::cout << "Press enter to start recording audio";
+ std::cin.ignore(10000, '\n');
+
+ // Start capturing audio data
+ recorder.start(44100);
+ std::cout << "Recording... press enter to stop";
+ std::cin.ignore(10000, '\n');
+ recorder.stop();
+}
diff --git a/samples/voip/Server.cpp b/examples/voip/Server.cpp
index 9a55a8a..29227fa 100644
--- a/samples/voip/Server.cpp
+++ b/examples/voip/Server.cpp
@@ -6,10 +6,11 @@
#include <SFML/Network.hpp>
#include <iomanip>
#include <iostream>
+#include <iterator>
-const sf::Uint8 AudioData = 1;
-const sf::Uint8 EndOfStream = 2;
+const sf::Uint8 audioData = 1;
+const sf::Uint8 endOfStream = 2;
////////////////////////////////////////////////////////////
@@ -25,141 +26,127 @@ public :
///
////////////////////////////////////////////////////////////
NetworkAudioStream() :
- myOffset (0),
- myHasFinished(false)
+ m_offset (0),
+ m_hasFinished(false)
{
// Set the sound parameters
- Initialize(1, 44100);
- }
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~NetworkAudioStream()
- {
- // Close the sockets
- myClient.Close();
- myListener.Close();
+ initialize(1, 44100);
}
////////////////////////////////////////////////////////////
/// Run the server, stream audio data from the client
///
////////////////////////////////////////////////////////////
- void Start(unsigned short Port)
+ void start(unsigned short port)
{
- if (!myHasFinished)
+ if (!m_hasFinished)
{
// Listen to the given port for incoming connections
- if (!myListener.Listen(Port))
+ if (m_listener.listen(port) != sf::Socket::Done)
return;
- std::cout << "Server is listening to port " << Port << ", waiting for connections... " << std::endl;
+ std::cout << "Server is listening to port " << port << ", waiting for connections... " << std::endl;
// Wait for a connection
- sf::IPAddress ClientAddress;
- myListener.Accept(myClient, &ClientAddress);
- std::cout << "Client connected : " << ClientAddress << std::endl;
+ if (m_listener.accept(m_client) != sf::Socket::Done)
+ return;
+ std::cout << "Client connected: " << m_client.getRemoteAddress() << std::endl;
// Start playback
- Play();
+ play();
// Start receiving audio data
- ReceiveLoop();
+ receiveLoop();
}
else
{
// Start playback
- Play();
+ play();
}
}
private :
////////////////////////////////////////////////////////////
- /// /see SoundStream::OnStart
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OnStart()
- {
- // Reset the playing offset
- myOffset = 0;
-
- return true;
- }
-
- ////////////////////////////////////////////////////////////
/// /see SoundStream::OnGetData
///
////////////////////////////////////////////////////////////
- virtual bool OnGetData(sf::SoundStream::Chunk& Data)
+ virtual bool onGetData(sf::SoundStream::Chunk& data)
{
// We have reached the end of the buffer and all audio data have been played : we can stop playback
- if ((myOffset == mySamples.size()) && myHasFinished)
+ if ((m_offset >= m_samples.size()) && m_hasFinished)
return false;
// No new data has arrived since last update : wait until we get some
- while ((myOffset == mySamples.size()) && !myHasFinished)
- sf::Sleep(0.01f);
+ while ((m_offset >= m_samples.size()) && !m_hasFinished)
+ sf::sleep(sf::milliseconds(10));
// Copy samples into a local buffer to avoid synchronization problems
// (don't forget that we run in two separate threads)
{
- sf::Lock Lock(myMutex);
- myTempBuffer.assign(mySamples.begin() + myOffset, mySamples.end());
+ sf::Lock lock(m_mutex);
+ m_tempBuffer.assign(m_samples.begin() + m_offset, m_samples.end());
}
// Fill audio data to pass to the stream
- Data.Samples = &myTempBuffer[0];
- Data.NbSamples = myTempBuffer.size();
+ data.samples = &m_tempBuffer[0];
+ data.sampleCount = m_tempBuffer.size();
// Update the playing offset
- myOffset += myTempBuffer.size();
+ m_offset += m_tempBuffer.size();
return true;
}
////////////////////////////////////////////////////////////
+ /// /see SoundStream::OnSeek
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void onSeek(sf::Time timeOffset)
+ {
+ m_offset = timeOffset.asMilliseconds() * getSampleRate() * getChannelCount() / 1000;
+ }
+
+ ////////////////////////////////////////////////////////////
/// Get audio data from the client until playback is stopped
///
////////////////////////////////////////////////////////////
- void ReceiveLoop()
+ void receiveLoop()
{
- while (!myHasFinished)
+ while (!m_hasFinished)
{
// Get waiting audio data from the network
- sf::Packet PacketIn;
- if (myClient.Receive(PacketIn) != sf::Socket::Done)
+ sf::Packet packet;
+ if (m_client.receive(packet) != sf::Socket::Done)
break;
// Extract the message ID
- sf::Uint8 Id;
- PacketIn >> Id;
+ sf::Uint8 id;
+ packet >> id;
- if (Id == AudioData)
+ if (id == audioData)
{
// Extract audio samples from the packet, and append it to our samples buffer
- const sf::Int16* Samples = reinterpret_cast<const sf::Int16*>(PacketIn.GetData() + 1);
- std::size_t NbSamples = (PacketIn.GetDataSize() - 1) / sizeof(sf::Int16);
+ const sf::Int16* samples = reinterpret_cast<const sf::Int16*>(static_cast<const char*>(packet.getData()) + 1);
+ std::size_t sampleCount = (packet.getDataSize() - 1) / sizeof(sf::Int16);
- // Don't forget that the other thread can access the samples array at any time
+ // Don't forget that the other thread can access the sample array at any time
// (so we protect any operation on it with the mutex)
{
- sf::Lock Lock(myMutex);
- std::copy(Samples, Samples + NbSamples, std::back_inserter(mySamples));
+ sf::Lock lock(m_mutex);
+ std::copy(samples, samples + sampleCount, std::back_inserter(m_samples));
}
}
- else if (Id == EndOfStream)
+ else if (id == endOfStream)
{
// End of stream reached : we stop receiving audio data
- std::cout << "Audio data has been 100% received !" << std::endl;
- myHasFinished = true;
+ std::cout << "Audio data has been 100% received!" << std::endl;
+ m_hasFinished = true;
}
else
{
// Something's wrong...
std::cout << "Invalid packet received..." << std::endl;
- myHasFinished = true;
+ m_hasFinished = true;
}
}
}
@@ -167,13 +154,13 @@ private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- sf::SocketTCP myListener;
- sf::SocketTCP myClient;
- sf::Mutex myMutex;
- std::vector<sf::Int16> mySamples;
- std::vector<sf::Int16> myTempBuffer;
- std::size_t myOffset;
- bool myHasFinished;
+ sf::TcpListener m_listener;
+ sf::TcpSocket m_client;
+ sf::Mutex m_mutex;
+ std::vector<sf::Int16> m_samples;
+ std::vector<sf::Int16> m_tempBuffer;
+ std::size_t m_offset;
+ bool m_hasFinished;
};
@@ -182,17 +169,17 @@ private :
/// a connected client
///
////////////////////////////////////////////////////////////
-void DoServer(unsigned short Port)
+void doServer(unsigned short port)
{
// Build an audio stream to play sound data as it is received through the network
- NetworkAudioStream AudioStream;
- AudioStream.Start(Port);
+ NetworkAudioStream audioStream;
+ audioStream.start(port);
// Loop until the sound playback is finished
- while (AudioStream.GetStatus() != sf::SoundStream::Stopped)
+ while (audioStream.getStatus() != sf::SoundStream::Stopped)
{
// Leave some CPU time for other threads
- sf::Sleep(0.1f);
+ sf::sleep(sf::milliseconds(100));
}
std::cin.ignore(10000, '\n');
@@ -202,12 +189,12 @@ void DoServer(unsigned short Port)
std::cin.ignore(10000, '\n');
// Replay the sound (just to make sure replaying the received data is OK)
- AudioStream.Play();
+ audioStream.play();
// Loop until the sound playback is finished
- while (AudioStream.GetStatus() != sf::SoundStream::Stopped)
+ while (audioStream.getStatus() != sf::SoundStream::Stopped)
{
// Leave some CPU time for other threads
- sf::Sleep(0.1f);
+ sf::sleep(sf::milliseconds(100));
}
}
diff --git a/samples/voip/VoIP.cpp b/examples/voip/VoIP.cpp
index 125bd8a..93f9512 100644
--- a/samples/voip/VoIP.cpp
+++ b/examples/voip/VoIP.cpp
@@ -3,7 +3,7 @@
// Headers
////////////////////////////////////////////////////////////
#include <iomanip>
-#include <iostream>
+#include <iostream>
#include <cstdlib>
@@ -11,8 +11,8 @@
// Function prototypes
// (I'm too lazy to put them into separate headers...)
////////////////////////////////////////////////////////////
-void DoClient(unsigned short Port);
-void DoServer(unsigned short Port);
+void doClient(unsigned short port);
+void doServer(unsigned short port);
////////////////////////////////////////////////////////////
@@ -24,22 +24,22 @@ void DoServer(unsigned short Port);
int main()
{
// Choose a random port for opening sockets (ports < 1024 are reserved)
- const unsigned short Port = 2435;
+ const unsigned short port = 2435;
// Client or server ?
- char Who;
+ char who;
std::cout << "Do you want to be a server ('s') or a client ('c') ? ";
- std::cin >> Who;
+ std::cin >> who;
- if (Who == 's')
+ if (who == 's')
{
// Run as a server
- DoServer(Port);
+ doServer(port);
}
else
{
// Run as a client
- DoClient(Port);
+ doClient(port);
}
// Wait until the user presses 'enter' key
diff --git a/examples/win32/CMakeLists.txt b/examples/win32/CMakeLists.txt
new file mode 100644
index 0000000..edd8237
--- /dev/null
+++ b/examples/win32/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/win32)
+
+# all source files
+set(SRC ${SRCROOT}/Win32.cpp)
+
+# define the win32 target
+sfml_add_example(win32 GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-graphics sfml-window sfml-system)
diff --git a/examples/win32/Win32.cpp b/examples/win32/Win32.cpp
new file mode 100644
index 0000000..4d70931
--- /dev/null
+++ b/examples/win32/Win32.cpp
@@ -0,0 +1,130 @@
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics.hpp>
+#include <windows.h>
+#include <cmath>
+
+HWND button;
+
+
+////////////////////////////////////////////////////////////
+/// Function called whenever one of our windows receives a message
+///
+////////////////////////////////////////////////////////////
+LRESULT CALLBACK onEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ switch (message)
+ {
+ // Quit when we close the main window
+ case WM_CLOSE :
+ {
+ PostQuitMessage(0);
+ return 0;
+ }
+
+ // Quit when we click the "quit" button
+ case WM_COMMAND :
+ {
+ if (reinterpret_cast<HWND>(lParam) == button)
+ {
+ PostQuitMessage(0);
+ return 0;
+ }
+ }
+ }
+
+ return DefWindowProc(handle, message, wParam, lParam);
+}
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \param Instance : Instance of the application
+///
+/// \return Error code
+///
+////////////////////////////////////////////////////////////
+INT WINAPI WinMain(HINSTANCE instance, HINSTANCE, LPSTR, INT)
+{
+ // Define a class for our main window
+ WNDCLASS windowClass;
+ windowClass.style = 0;
+ windowClass.lpfnWndProc = &onEvent;
+ windowClass.cbClsExtra = 0;
+ windowClass.cbWndExtra = 0;
+ windowClass.hInstance = instance;
+ windowClass.hIcon = NULL;
+ windowClass.hCursor = 0;
+ windowClass.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_BACKGROUND);
+ windowClass.lpszMenuName = NULL;
+ windowClass.lpszClassName = TEXT("SFML App");
+ RegisterClass(&windowClass);
+
+ // Let's create the main window
+ HWND window = CreateWindow(TEXT("SFML App"), TEXT("SFML Win32"), WS_SYSMENU | WS_VISIBLE, 200, 200, 660, 520, NULL, NULL, instance, NULL);
+
+ // Add a button for exiting
+ button = CreateWindow(TEXT("BUTTON"), TEXT("Quit"), WS_CHILD | WS_VISIBLE, 560, 440, 80, 40, window, NULL, instance, NULL);
+
+ // Let's create two SFML views
+ HWND view1 = CreateWindow(TEXT("STATIC"), NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, 20, 20, 300, 400, window, NULL, instance, NULL);
+ HWND view2 = CreateWindow(TEXT("STATIC"), NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, 340, 20, 300, 400, window, NULL, instance, NULL);
+ sf::RenderWindow SFMLView1(view1);
+ sf::RenderWindow SFMLView2(view2);
+
+ // Load some textures to display
+ sf::Texture texture1, texture2;
+ if (!texture1.loadFromFile("resources/image1.jpg") || !texture2.loadFromFile("resources/image2.jpg"))
+ return EXIT_FAILURE;
+ sf::Sprite sprite1(texture1);
+ sf::Sprite sprite2(texture2);
+ sprite1.setOrigin(sf::Vector2f(texture1.getSize()) / 2.f);
+ sprite1.setPosition(sprite1.getOrigin());
+
+ // Create a clock for measuring elapsed time
+ sf::Clock clock;
+
+ // Loop until a WM_QUIT message is received
+ MSG message;
+ message.message = static_cast<UINT>(~WM_QUIT);
+ while (message.message != WM_QUIT)
+ {
+ if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
+ {
+ // If a message was waiting in the message queue, process it
+ TranslateMessage(&message);
+ DispatchMessage(&message);
+ }
+ else
+ {
+ float time = clock.getElapsedTime().asSeconds();
+
+ // Clear views
+ SFMLView1.clear();
+ SFMLView2.clear();
+
+ // Draw sprite 1 on view 1
+ sprite1.setRotation(time * 100);
+ SFMLView1.draw(sprite1);
+
+ // Draw sprite 2 on view 2
+ sprite2.setPosition(std::cos(time) * 100.f, 0.f);
+ SFMLView2.draw(sprite2);
+
+ // Display each view on screen
+ SFMLView1.display();
+ SFMLView2.display();
+ }
+ }
+
+ // Destroy the main window (all its child controls will be destroyed)
+ DestroyWindow(window);
+
+ // Don't forget to unregister the window class
+ UnregisterClass(TEXT("SFML App"), instance);
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/window/CMakeLists.txt b/examples/window/CMakeLists.txt
new file mode 100644
index 0000000..a9edafa
--- /dev/null
+++ b/examples/window/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+set(SRCROOT ${PROJECT_SOURCE_DIR}/examples/window)
+
+# all source files
+set(SRC ${SRCROOT}/Window.cpp)
+
+# find OpenGL and GLU
+find_package(OpenGL REQUIRED)
+include_directories(${OPENGL_INCLUDE_DIR})
+
+# define the window target
+sfml_add_example(window GUI_APP
+ SOURCES ${SRC}
+ DEPENDS sfml-window sfml-system ${OPENGL_LIBRARIES})
diff --git a/examples/window/Window.cpp b/examples/window/Window.cpp
new file mode 100644
index 0000000..360703b
--- /dev/null
+++ b/examples/window/Window.cpp
@@ -0,0 +1,146 @@
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window.hpp>
+#include <SFML/OpenGL.hpp>
+
+
+////////////////////////////////////////////////////////////
+/// Entry point of application
+///
+/// \return Application exit code
+///
+////////////////////////////////////////////////////////////
+int main()
+{
+ // Request a 32-bits depth buffer when creating the window
+ sf::ContextSettings contextSettings;
+ contextSettings.depthBits = 32;
+
+ // Create the main window
+ sf::Window window(sf::VideoMode(640, 480), "SFML window with OpenGL", sf::Style::Default, contextSettings);
+
+ // Make it the active window for OpenGL calls
+ window.setActive();
+
+ // Set the color and depth clear values
+ glClearDepth(1.f);
+ glClearColor(0.f, 0.f, 0.f, 1.f);
+
+ // Enable Z-buffer read and write
+ glEnable(GL_DEPTH_TEST);
+ glDepthMask(GL_TRUE);
+
+ // Disable lighting and texturing
+ glDisable(GL_LIGHTING);
+ glDisable(GL_TEXTURE_2D);
+
+ // Configure the viewport (the same size as the window)
+ glViewport(0, 0, window.getSize().x, window.getSize().y);
+
+ // Setup a perspective projection
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ GLfloat ratio = static_cast<float>(window.getSize().x) / window.getSize().y;
+ glFrustum(-ratio, ratio, -1.f, 1.f, 1.f, 500.f);
+
+ // Define a 3D cube (6 faces made of 2 triangles composed by 3 vertices)
+ GLfloat cube[] =
+ {
+ // positions // colors (r, g, b, a)
+ -50, -50, -50, 0, 0, 1, 1,
+ -50, 50, -50, 0, 0, 1, 1,
+ -50, -50, 50, 0, 0, 1, 1,
+ -50, -50, 50, 0, 0, 1, 1,
+ -50, 50, -50, 0, 0, 1, 1,
+ -50, 50, 50, 0, 0, 1, 1,
+
+ 50, -50, -50, 0, 1, 0, 1,
+ 50, 50, -50, 0, 1, 0, 1,
+ 50, -50, 50, 0, 1, 0, 1,
+ 50, -50, 50, 0, 1, 0, 1,
+ 50, 50, -50, 0, 1, 0, 1,
+ 50, 50, 50, 0, 1, 0, 1,
+
+ -50, -50, -50, 1, 0, 0, 1,
+ 50, -50, -50, 1, 0, 0, 1,
+ -50, -50, 50, 1, 0, 0, 1,
+ -50, -50, 50, 1, 0, 0, 1,
+ 50, -50, -50, 1, 0, 0, 1,
+ 50, -50, 50, 1, 0, 0, 1,
+
+ -50, 50, -50, 0, 1, 1, 1,
+ 50, 50, -50, 0, 1, 1, 1,
+ -50, 50, 50, 0, 1, 1, 1,
+ -50, 50, 50, 0, 1, 1, 1,
+ 50, 50, -50, 0, 1, 1, 1,
+ 50, 50, 50, 0, 1, 1, 1,
+
+ -50, -50, -50, 1, 0, 1, 1,
+ 50, -50, -50, 1, 0, 1, 1,
+ -50, 50, -50, 1, 0, 1, 1,
+ -50, 50, -50, 1, 0, 1, 1,
+ 50, -50, -50, 1, 0, 1, 1,
+ 50, 50, -50, 1, 0, 1, 1,
+
+ -50, -50, 50, 1, 1, 0, 1,
+ 50, -50, 50, 1, 1, 0, 1,
+ -50, 50, 50, 1, 1, 0, 1,
+ -50, 50, 50, 1, 1, 0, 1,
+ 50, -50, 50, 1, 1, 0, 1,
+ 50, 50, 50, 1, 1, 0, 1,
+ };
+
+ // Enable position and color vertex components
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_COLOR_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 7 * sizeof(GLfloat), cube);
+ glColorPointer(4, GL_FLOAT, 7 * sizeof(GLfloat), cube + 3);
+
+ // Disable normal and texture coordinates vertex components
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+
+ // Create a clock for measuring the time elapsed
+ sf::Clock clock;
+
+ // 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();
+
+ // Escape key: exit
+ if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
+ window.close();
+
+ // Resize event: adjust the viewport
+ if (event.type == sf::Event::Resized)
+ glViewport(0, 0, event.size.width, event.size.height);
+ }
+
+ // Clear the color and depth buffers
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ // Apply some transformations to rotate the cube
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0.f, 0.f, -200.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 50, 1.f, 0.f, 0.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 30, 0.f, 1.f, 0.f);
+ glRotatef(clock.getElapsedTime().asSeconds() * 90, 0.f, 0.f, 1.f);
+
+ // Draw the cube
+ glDrawArrays(GL_TRIANGLES, 0, 36);
+
+ // Finally, display the rendered frame on screen
+ window.display();
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/include/SFML/Audio.hpp b/include/SFML/Audio.hpp
index 9a83a73..1129863 100755..100644
--- a/include/SFML/Audio.hpp
+++ b/include/SFML/Audio.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -40,3 +40,11 @@
#endif // SFML_AUDIO_HPP
+
+////////////////////////////////////////////////////////////
+/// \defgroup audio Audio module
+///
+/// Sounds, streaming (musics or custom sources), recording,
+/// spatialization.
+///
+////////////////////////////////////////////////////////////
diff --git a/src/SFML/System/Platform.hpp b/include/SFML/Audio/Export.hpp
index f9b7e12..7c4b6ca 100755..100644
--- a/src/SFML/System/Platform.hpp
+++ b/include/SFML/Audio/Export.hpp
@@ -1,45 +1,48 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_PLATFORM_HPP
-#define SFML_PLATFORM_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-#if defined(SFML_SYSTEM_WINDOWS)
-
- #include <SFML/System/Win32/Platform.hpp>
-
-#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_MACOS) || defined(SFML_SYSTEM_FREEBSD)
-
- #include <SFML/System/Unix/Platform.hpp>
-
-#endif
-
-
-#endif // SFML_PLATFORM_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_AUDIO_EXPORT_HPP
+#define SFML_AUDIO_EXPORT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+////////////////////////////////////////////////////////////
+// Define portable import / export macros
+////////////////////////////////////////////////////////////
+#if defined(SFML_AUDIO_EXPORTS)
+
+ #define SFML_AUDIO_API SFML_API_EXPORT
+
+#else
+
+ #define SFML_AUDIO_API SFML_API_IMPORT
+
+#endif
+
+
+#endif // SFML_AUDIO_EXPORT_HPP
diff --git a/include/SFML/Audio/Listener.hpp b/include/SFML/Audio/Listener.hpp
index 95227ca..213d96a 100755..100644
--- a/include/SFML/Audio/Listener.hpp
+++ b/include/SFML/Audio/Listener.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,95 +28,157 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Audio/Export.hpp>
#include <SFML/System/Vector3.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Listener is a global interface for defining the audio
-/// listener properties ; the audio listener is the point in
-/// the scene from where all the sounds are heard
+/// \brief The audio listener is the point in the scene
+/// from where all the sounds are heard
+///
////////////////////////////////////////////////////////////
-class SFML_API Listener
+class SFML_AUDIO_API Listener
{
public :
////////////////////////////////////////////////////////////
- /// Change the global volume of all the sounds.
- /// The default volume is 100
+ /// \brief Change the global volume of all the sounds and musics
///
- /// \param Volume : New global volume, in the range [0, 100]
+ /// 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).
+ ///
+ /// \param volume New global volume, in the range [0, 100]
+ ///
+ /// \see getGlobalVolume
///
////////////////////////////////////////////////////////////
- static void SetGlobalVolume(float Volume);
+ static void setGlobalVolume(float volume);
////////////////////////////////////////////////////////////
- /// Get the current value of the global volume of all the sounds
+ /// \brief Get the current value of the global volume
///
/// \return Current global volume, in the range [0, 100]
///
+ /// \see setGlobalVolume
+ ///
////////////////////////////////////////////////////////////
- static float GetGlobalVolume();
+ static float getGlobalVolume();
////////////////////////////////////////////////////////////
- /// Change the position of the listener (take 3 values).
- /// The default position is (0, 0, 0)
+ /// \brief Set the position of the listener in the scene
+ ///
+ /// The default listener's position is (0, 0, 0).
+ ///
+ /// \param x X coordinate of the listener's position
+ /// \param y Y coordinate of the listener's position
+ /// \param z Z coordinate of the listener's position
///
- /// \param X, Y, Z : Position of the listener in the world
+ /// \see getPosition, setDirection
///
////////////////////////////////////////////////////////////
- static void SetPosition(float X, float Y, float Z);
+ static void setPosition(float x, float y, float z);
////////////////////////////////////////////////////////////
- /// Change the position of the listener (take a 3D vector).
- /// The default position is (0, 0, 0)
+ /// \brief Set the position of the listener in the scene
///
- /// \param Position : Position of the listener in the world
+ /// The default listener's position is (0, 0, 0).
+ ///
+ /// \param position New listener's position
+ ///
+ /// \see getPosition, setDirection
///
////////////////////////////////////////////////////////////
- static void SetPosition(const Vector3f& Position);
+ static void setPosition(const Vector3f& position);
////////////////////////////////////////////////////////////
- /// Get the current position of the listener
+ /// \brief Get the current position of the listener in the scene
///
- /// \return Position of the listener in the world
+ /// \return Listener's position
+ ///
+ /// \see setPosition
///
////////////////////////////////////////////////////////////
- static Vector3f GetPosition();
+ static Vector3f getPosition();
////////////////////////////////////////////////////////////
- /// Change the orientation of the listener (the point
- /// he must look at) (take 3 values).
- /// The default target is (0, 0, -1)
+ /// \brief Set the orientation of the listener in the scene
+ ///
+ /// The orientation defines the 3D axes of the listener
+ /// (left, up, front) in the scene. The orientation vector
+ /// doesn't have to be normalized.
+ /// The default listener's orientation is (0, 0, -1).
///
- /// \param X, Y, Z : Position of the point the listener must look at
+ /// \param x X coordinate of the listener's orientation
+ /// \param y Y coordinate of the listener's orientation
+ /// \param z Z coordinate of the listener's orientation
+ ///
+ /// \see getDirection, setPosition
///
////////////////////////////////////////////////////////////
- static void SetTarget(float X, float Y, float Z);
+ static void setDirection(float x, float y, float z);
////////////////////////////////////////////////////////////
- /// Change the orientation of the listener (the point
- /// he must look at) (take a 3D vector).
- /// The default target is (0, 0, -1)
+ /// \brief Set the orientation of the listener in the scene
+ ///
+ /// The orientation defines the 3D axes of the listener
+ /// (left, up, front) in the scene. The orientation vector
+ /// doesn't have to be normalized.
+ /// The default listener's orientation is (0, 0, -1).
///
- /// \param Target : Position of the point the listener must look at
+ /// \param direction New listener's orientation
+ ///
+ /// \see getDirection, setPosition
///
////////////////////////////////////////////////////////////
- static void SetTarget(const Vector3f& Target);
+ static void setDirection(const Vector3f& direction);
////////////////////////////////////////////////////////////
- /// Get the current orientation of the listener (the point
- /// he's looking at)
+ /// \brief Get the current orientation of the listener in the scene
+ ///
+ /// \return Listener's orientation
///
- /// \return : Position of the point the listener is looking at
+ /// \see setDirection
///
////////////////////////////////////////////////////////////
- static Vector3f GetTarget();
+ static Vector3f getDirection();
};
} // namespace sf
#endif // SFML_LISTENER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Listener
+/// \ingroup audio
+///
+/// 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 and direction),
+/// 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 instanciated.
+///
+/// Usage example:
+/// \code
+/// // Move the listener to the position (1, 0, -5)
+/// sf::Listener::setPosition(1, 0, -5);
+///
+/// // Make it face the right axis (1, 0, 0)
+/// sf::Listener::setDirection(1, 0, 0);
+///
+/// // Reduce the global volume
+/// sf::Listener::setGlobalVolume(50);
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/Music.hpp b/include/SFML/Audio/Music.hpp
index 0b8f70d..ba922e9 100755..100644
--- a/include/SFML/Audio/Music.hpp
+++ b/include/SFML/Audio/Music.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,7 +28,10 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Audio/Export.hpp>
#include <SFML/Audio/SoundStream.hpp>
+#include <SFML/System/Mutex.hpp>
+#include <SFML/System/Time.hpp>
#include <string>
#include <vector>
@@ -40,81 +43,186 @@ namespace priv
class SoundFile;
}
+class InputStream;
+
////////////////////////////////////////////////////////////
-/// Music defines a big sound played using streaming,
-/// so usually what we call a music :)
+/// \brief Streamed music played from an audio file
+///
////////////////////////////////////////////////////////////
-class SFML_API Music : public SoundStream
+class SFML_AUDIO_API Music : public SoundStream
{
public :
////////////////////////////////////////////////////////////
- /// Construct the music with a buffer size
- ///
- /// \param BufferSize : Size of the internal buffer, expressed in number of samples
- /// (ie. size taken by the music in memory) (44100 by default)
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- explicit Music(std::size_t BufferSize = 44100);
+ Music();
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
~Music();
////////////////////////////////////////////////////////////
- /// Open a music file (doesn't play it -- call Play() for that)
+ /// \brief Open a music from an audio file
+ ///
+ /// This function doesn't start playing the music (call play()
+ /// to do so).
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
+ ///
+ /// \param filename Path of the music file to open
///
- /// \param Filename : Path of the music file to open
+ /// \return True if loading succeeded, false if it failed
///
- /// \return True if loading has been successful
+ /// \see openFromMemory, openFromStream
///
////////////////////////////////////////////////////////////
- bool OpenFromFile(const std::string& Filename);
+ bool openFromFile(const std::string& filename);
////////////////////////////////////////////////////////////
- /// Open a music file from memory (doesn't play it -- call Play() for that)
+ /// \brief Open a music from an audio file in memory
///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
+ /// This function doesn't start playing the music (call play()
+ /// to do so).
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
+ /// Since the music is not loaded completely but rather streamed
+ /// continuously, the \a data must remain available as long as the
+ /// music is playing (ie. you can't deallocate it right after calling
+ /// this function).
///
- /// \return True if loading has been successful
+ /// \param data Pointer to the file data in memory
+ /// \param sizeInBytes Size of the data to load, in bytes
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see openFromFile, openFromStream
///
////////////////////////////////////////////////////////////
- bool OpenFromMemory(const char* Data, std::size_t SizeInBytes);
+ bool openFromMemory(const void* data, std::size_t sizeInBytes);
////////////////////////////////////////////////////////////
- /// Get the music duration
+ /// \brief Open a music from an audio file in a custom stream
+ ///
+ /// This function doesn't start playing the music (call play()
+ /// to do so).
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
+ /// Since the music is not loaded completely but rather streamed
+ /// continuously, the \a stream must remain alive as long as the
+ /// music is playing (ie. you can't destroy it right after calling
+ /// this function).
+ ///
+ /// \param stream Source stream to read from
///
- /// \return Music duration, in seconds
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see openFromFile, openFromMemory
///
////////////////////////////////////////////////////////////
- float GetDuration() const;
+ bool openFromStream(InputStream& stream);
-private :
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the total duration of the music
+ ///
+ /// \return Music duration
+ ///
+ ////////////////////////////////////////////////////////////
+ Time getDuration() const;
+
+protected :
////////////////////////////////////////////////////////////
- /// /see SoundStream::OnStart
+ /// \brief 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.
+ ///
+ /// \param data Chunk of data to fill
+ ///
+ /// \return True to continue playback, false to stop
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool onGetData(Chunk& data);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the current playing position in the stream source
+ ///
+ /// \param timeOffset New playing position, from the beginning of the music
///
////////////////////////////////////////////////////////////
- virtual bool OnStart();
+ virtual void onSeek(Time timeOffset);
+
+private :
////////////////////////////////////////////////////////////
- /// /see SoundStream::OnGetData
+ /// \brief Initialize the internal state after loading a new music
///
////////////////////////////////////////////////////////////
- virtual bool OnGetData(Chunk& Data);
+ void initialize();
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- priv::SoundFile* myFile; ///< Sound file
- float myDuration; ///< Music duration, in seconds
- std::vector<Int16> mySamples; ///< Temporary buffer of samples
+ priv::SoundFile* m_file; ///< Sound file
+ Time m_duration; ///< Music duration
+ std::vector<Int16> m_samples; ///< Temporary buffer of samples
+ Mutex m_mutex; ///< Mutex protecting the data
};
} // namespace sf
#endif // SFML_MUSIC_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Music
+/// \ingroup audio
+///
+/// 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.
+///
+/// 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:
+/// \code
+/// // 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();
+/// \endcode
+///
+/// \see sf::Sound, sf::SoundStream
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/Sound.hpp b/include/SFML/Audio/Sound.hpp
index 7cb8002..1250f42 100755..100644
--- a/include/SFML/Audio/Sound.hpp
+++ b/include/SFML/Audio/Sound.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,9 +28,9 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
-#include <SFML/System/Vector3.hpp>
-#include <SFML/Audio/AudioResource.hpp>
+#include <SFML/Audio/Export.hpp>
+#include <SFML/Audio/SoundSource.hpp>
+#include <SFML/System/Time.hpp>
#include <cstdlib>
@@ -39,276 +39,224 @@ namespace sf
class SoundBuffer;
////////////////////////////////////////////////////////////
-/// Sound defines the properties of a sound such as position,
-/// volume, pitch, etc.
+/// \brief Regular sound that can be played in the audio environment
+///
////////////////////////////////////////////////////////////
-class SFML_API Sound : public AudioResource
+class SFML_AUDIO_API Sound : public SoundSource
{
public :
////////////////////////////////////////////////////////////
- /// Enumeration of the sound states
- ////////////////////////////////////////////////////////////
- enum Status
- {
- Stopped, ///< Sound is not playing
- Paused, ///< Sound is paused
- Playing ///< Sound is playing
- };
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
Sound();
////////////////////////////////////////////////////////////
- /// Construct the sound from its parameters
+ /// \brief Construct the sound with a buffer
///
- /// \param Buffer : Sound buffer to play (NULL by default)
- /// \param Loop : Loop flag (false by default)
- /// \param Pitch : Value of the pitch (1 by default)
- /// \param Volume : Volume (100 by default)
- /// \param Position : Position (0, 0, 0 by default)
+ /// \param buffer Sound buffer containing the audio data to play with the sound
///
////////////////////////////////////////////////////////////
- explicit Sound(const SoundBuffer& Buffer, bool Loop = false, float Pitch = 1.f, float Volume = 100.f, const Vector3f& Position = Vector3f(0, 0, 0));
+ explicit Sound(const SoundBuffer& buffer);
////////////////////////////////////////////////////////////
- /// Copy constructor
+ /// \brief Copy constructor
///
- /// \param Copy : Instance to copy
+ /// \param copy Instance to copy
///
////////////////////////////////////////////////////////////
- Sound(const Sound& Copy);
+ Sound(const Sound& copy);
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
~Sound();
////////////////////////////////////////////////////////////
- /// Play the sound
+ /// \brief Start or resume playing the sound
///
- ////////////////////////////////////////////////////////////
- void Play();
-
- ////////////////////////////////////////////////////////////
- /// Pause 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.
///
- ////////////////////////////////////////////////////////////
- void Pause();
-
- ////////////////////////////////////////////////////////////
- /// Stop the sound
+ /// \see pause, stop
///
////////////////////////////////////////////////////////////
- void Stop();
+ void play();
////////////////////////////////////////////////////////////
- /// Set the source buffer
+ /// \brief Pause the sound
///
- /// \param Buffer : New sound buffer to bind to the sound
+ /// This function pauses the sound if it was playing,
+ /// otherwise (sound already paused or stopped) it has no effect.
///
- ////////////////////////////////////////////////////////////
- void SetBuffer(const SoundBuffer& Buffer);
-
- ////////////////////////////////////////////////////////////
- /// Set the sound loop state.
- /// This parameter is disabled by default
- ///
- /// \param Loop : True to play in loop, false to play once
+ /// \see play, stop
///
////////////////////////////////////////////////////////////
- void SetLoop(bool Loop);
+ void pause();
////////////////////////////////////////////////////////////
- /// Set the sound pitch.
- /// The default pitch is 1
- ///
- /// \param Pitch : New pitch
+ /// \brief stop playing the sound
///
- ////////////////////////////////////////////////////////////
- void SetPitch(float Pitch);
-
- ////////////////////////////////////////////////////////////
- /// Set the sound volume.
- /// The default volume is 100
+ /// 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()).
///
- /// \param Volume : Volume (in range [0, 100])
+ /// \see play, pause
///
////////////////////////////////////////////////////////////
- void SetVolume(float Volume);
+ void stop();
////////////////////////////////////////////////////////////
- /// Set the sound position (take 3 values).
- /// The default position is (0, 0, 0)
+ /// \brief Set the source buffer containing the audio data to play
///
- /// \param X, Y, Z : Position of the sound in the world
+ /// 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.
///
- ////////////////////////////////////////////////////////////
- void SetPosition(float X, float Y, float Z);
-
- ////////////////////////////////////////////////////////////
- /// Set the sound position (take a 3D vector).
- /// The default position is (0, 0, 0)
+ /// \param buffer Sound buffer to attach to the sound
///
- /// \param Position : Position of the sound in the world
+ /// \see getBuffer
///
////////////////////////////////////////////////////////////
- void SetPosition(const Vector3f& Position);
+ void setBuffer(const SoundBuffer& buffer);
////////////////////////////////////////////////////////////
- /// Make the sound's position relative to the listener's
- /// position, or absolute.
- /// The default value is false (absolute)
+ /// \brief Set whether or not the sound should loop after reaching the end
///
- /// \param Relative : True to set the position relative, false to set it absolute
+ /// 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.
///
- ////////////////////////////////////////////////////////////
- void SetRelativeToListener(bool Relative);
-
- ////////////////////////////////////////////////////////////
- /// Set the minimum distance - closer than this distance,
- /// the listener will hear the sound at its maximum volume.
- /// The default minimum distance is 1.0
+ /// \param loop True to play in loop, false to play once
///
- /// \param MinDistance : New minimum distance for the sound
+ /// \see getLoop
///
////////////////////////////////////////////////////////////
- void SetMinDistance(float MinDistance);
+ void setLoop(bool loop);
////////////////////////////////////////////////////////////
- /// Set the attenuation factor - the higher the attenuation, the
- /// more the sound will be attenuated with distance from listener.
- /// The default attenuation factor 1.0
+ /// \brief Change the current playing position of the sound
///
- /// \param Attenuation : New attenuation factor for the sound
+ /// The playing position can be changed when the sound is
+ /// either paused or playing.
///
- ////////////////////////////////////////////////////////////
- void SetAttenuation(float Attenuation);
-
- ////////////////////////////////////////////////////////////
- /// Set the current playing position of the sound
+ /// \param timeOffset New playing position, from the beginning of the sound
///
- /// \param TimeOffset : New playing position, expressed in seconds
+ /// \see getPlayingOffset
///
////////////////////////////////////////////////////////////
- void SetPlayingOffset(float TimeOffset);
+ void setPlayingOffset(Time timeOffset);
////////////////////////////////////////////////////////////
- /// Get the source buffer
+ /// \brief Get the audio buffer attached to the sound
///
- /// \return Sound buffer bound to the sound (can be NULL)
+ /// \return Sound buffer attached to the sound (can be NULL)
///
////////////////////////////////////////////////////////////
- const SoundBuffer* GetBuffer() const;
+ const SoundBuffer* getBuffer() const;
////////////////////////////////////////////////////////////
- /// Tell whether or not the sound is looping
+ /// \brief Tell whether or not the sound is in loop mode
///
/// \return True if the sound is looping, false otherwise
///
- ////////////////////////////////////////////////////////////
- bool GetLoop() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the pitch
- ///
- /// \return Pitch value
+ /// \see setLoop
///
////////////////////////////////////////////////////////////
- float GetPitch() const;
+ bool getLoop() const;
////////////////////////////////////////////////////////////
- /// Get the volume
+ /// \brief Get the current playing position of the sound
///
- /// \return Volume value (in range [1, 100])
+ /// \return Current playing position, from the beginning of the sound
///
- ////////////////////////////////////////////////////////////
- float GetVolume() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the sound position
- ///
- /// \return Position of the sound in the world
+ /// \see setPlayingOffset
///
////////////////////////////////////////////////////////////
- Vector3f GetPosition() const;
+ Time getPlayingOffset() const;
////////////////////////////////////////////////////////////
- /// Tell if the sound's position is relative to the listener's
- /// position, or if it's absolute
- ///
- /// \return True if the position is relative, false if it's absolute
- ///
- ////////////////////////////////////////////////////////////
- bool IsRelativeToListener() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the minimum distance
- ///
- /// \return Minimum distance for the sound
- ///
- ////////////////////////////////////////////////////////////
- float GetMinDistance() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the attenuation factor
- ///
- /// \return Attenuation factor of the sound
- ///
- ////////////////////////////////////////////////////////////
- float GetAttenuation() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the status of the sound (stopped, paused, playing)
+ /// \brief Get the current status of the sound (stopped, paused, playing)
///
/// \return Current status of the sound
///
////////////////////////////////////////////////////////////
- Status GetStatus() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the current playing position of the sound
- ///
- /// \return Current playing position, expressed in seconds
- ///
- ////////////////////////////////////////////////////////////
- float GetPlayingOffset() const;
+ Status getStatus() const;
////////////////////////////////////////////////////////////
- /// Assignment operator
+ /// \brief Overload of assignment operator
///
- /// \param Other : Instance to assign
+ /// \param right Instance to assign
///
- /// \return Reference to the sound
+ /// \return Reference to self
///
////////////////////////////////////////////////////////////
- Sound& operator =(const Sound& Other);
+ Sound& operator =(const Sound& right);
////////////////////////////////////////////////////////////
- /// Reset the internal buffer
+ /// \brief Reset the internal buffer of the sound
///
/// This function is for internal use only, you don't have
- /// to use it.
+ /// 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.
///
////////////////////////////////////////////////////////////
- void ResetBuffer();
+ void resetBuffer();
private :
- friend class SoundStream;
-
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- unsigned int mySource; ///< OpenAL source identifier
- ResourcePtr<SoundBuffer> myBuffer; ///< Sound buffer bound to the source
+ const SoundBuffer* m_buffer; ///< Sound buffer bound to the source
};
} // namespace sf
#endif // SFML_SOUND_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Sound
+/// \ingroup audio
+///
+/// sf::Sound is the class to use to play sounds.
+/// It provides:
+/// \li Control (play, pause, stop)
+/// \li Ability to modify output parameters in real-time (pitch, volume, ...)
+/// \li 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:
+/// \code
+/// sf::SoundBuffer buffer;
+/// buffer.loadFromFile("sound.wav");
+///
+/// sf::Sound sound;
+/// sound.setBuffer(buffer);
+/// sound.play();
+/// \endcode
+///
+/// \see sf::SoundBuffer, sf::Music
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/SoundBuffer.hpp b/include/SFML/Audio/SoundBuffer.hpp
index 023e5aa..23fed88 100755..100644
--- a/include/SFML/Audio/SoundBuffer.hpp
+++ b/include/SFML/Audio/SoundBuffer.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,8 +28,8 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
-#include <SFML/Audio/AudioResource.hpp>
+#include <SFML/Audio/Export.hpp>
+#include <SFML/System/Time.hpp>
#include <string>
#include <vector>
#include <set>
@@ -37,161 +37,239 @@
namespace sf
{
+namespace priv
+{
+ class SoundFile;
+}
+
class Sound;
+class InputStream;
////////////////////////////////////////////////////////////
-/// SoundBuffer is the low-level for loading and manipulating
-/// sound buffers
+/// \brief Storage for audio samples defining a sound
+///
////////////////////////////////////////////////////////////
-class SFML_API SoundBuffer : public AudioResource, public Resource<SoundBuffer>
+class SFML_AUDIO_API SoundBuffer
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
SoundBuffer();
////////////////////////////////////////////////////////////
- /// Copy constructor
+ /// \brief Copy constructor
///
- /// \param Copy : Instance to copy
+ /// \param copy Instance to copy
///
////////////////////////////////////////////////////////////
- SoundBuffer(const SoundBuffer& Copy);
+ SoundBuffer(const SoundBuffer& copy);
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
~SoundBuffer();
////////////////////////////////////////////////////////////
- /// Load the sound buffer from a file
+ /// \brief Load the sound buffer from a file
+ ///
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
///
- /// \param Filename : Path of the sound file to load
+ /// \param filename Path of the sound file to load
///
- /// \return True if loading has been successful
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromMemory, loadFromStream, loadFromSamples, saveToFile
///
////////////////////////////////////////////////////////////
- bool LoadFromFile(const std::string& Filename);
+ bool loadFromFile(const std::string& filename);
////////////////////////////////////////////////////////////
- /// Load the sound buffer from a file in memory
+ /// \brief Load the sound buffer from a file in memory
+ ///
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
+ /// \param data Pointer to the file data in memory
+ /// \param sizeInBytes Size of the data to load, in bytes
///
- /// \return True if loading has been successful
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromStream, loadFromSamples
///
////////////////////////////////////////////////////////////
- bool LoadFromMemory(const char* Data, std::size_t SizeInBytes);
+ bool loadFromMemory(const void* data, std::size_t sizeInBytes);
////////////////////////////////////////////////////////////
- /// Load the sound buffer from an array of samples - assumed format for
- /// samples is 16 bits signed integer
+ /// \brief Load the sound buffer from a custom stream
+ ///
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
+ ///
+ /// \param stream Source stream to read from
///
- /// \param Samples : Pointer to the samples in memory
- /// \param SamplesCount : Number of samples pointed by Samples
- /// \param ChannelsCount : Number of channels (1 = mono, 2 = stereo, ...)
- /// \param SampleRate : Frequency (number of samples to play per second)
+ /// \return True if loading succeeded, false if it failed
///
- /// \return True if loading has been successful
+ /// \see loadFromFile, loadFromMemory, loadFromSamples
///
////////////////////////////////////////////////////////////
- bool LoadFromSamples(const Int16* Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate);
+ bool loadFromStream(InputStream& stream);
////////////////////////////////////////////////////////////
- /// Save the sound buffer to a file
+ /// \brief Load the sound buffer from an array of audio samples
+ ///
+ /// The assumed format of the audio samples is 16 bits signed integer
+ /// (sf::Int16).
+ ///
+ /// \param samples Pointer to the array of samples in memory
+ /// \param sampleCount Number of samples in the array
+ /// \param channelCount Number of channels (1 = mono, 2 = stereo, ...)
+ /// \param sampleRate Sample rate (number of samples to play per second)
///
- /// \param Filename : Path of the sound file to write
+ /// \return True if loading succeeded, false if it failed
///
- /// \return True if saving has been successful
+ /// \see loadFromFile, loadFromMemory, saveToFile
///
////////////////////////////////////////////////////////////
- bool SaveToFile(const std::string& Filename) const;
+ bool loadFromSamples(const Int16* samples, std::size_t sampleCount, unsigned int channelCount, unsigned int sampleRate);
////////////////////////////////////////////////////////////
- /// Return the sound samples
+ /// \brief Save the sound buffer to an audio file
///
- /// \return Pointer to the array of sound samples, in 16 bits signed integer format
+ /// Here is a complete list of all the supported audio formats:
+ /// ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam,
+ /// w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.
+ ///
+ /// \param filename Path of the sound file to write
+ ///
+ /// \return True if saving succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromMemory, loadFromSamples
///
////////////////////////////////////////////////////////////
- const Int16* GetSamples() const;
+ bool saveToFile(const std::string& filename) const;
////////////////////////////////////////////////////////////
- /// Return the samples count
+ /// \brief 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.
+ ///
+ /// \return Read-only pointer to the array of sound samples
+ ///
+ /// \see getSampleCount
+ ///
+ ////////////////////////////////////////////////////////////
+ const Int16* getSamples() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the number of samples stored in the buffer
+ ///
+ /// The array of samples can be accessed with the getSamples()
+ /// function.
///
/// \return Number of samples
///
+ /// \see getSamples
+ ///
////////////////////////////////////////////////////////////
- std::size_t GetSamplesCount() const;
+ std::size_t getSampleCount() const;
////////////////////////////////////////////////////////////
- /// Get the sample rate
+ /// \brief 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).
+ ///
+ /// \return Sample rate (number of samples per second)
///
- /// \return Sound frequency (number of samples per second)
+ /// \see getChannelCount, getDuration
///
////////////////////////////////////////////////////////////
- unsigned int GetSampleRate() const;
+ unsigned int getSampleRate() const;
////////////////////////////////////////////////////////////
- /// Return the number of channels (1 = mono, 2 = stereo, ...)
+ /// \brief 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.
///
/// \return Number of channels
///
+ /// \see getSampleRate, getDuration
+ ///
////////////////////////////////////////////////////////////
- unsigned int GetChannelsCount() const;
+ unsigned int getChannelCount() const;
////////////////////////////////////////////////////////////
- /// Get the sound duration
+ /// \brief Get the total duration of the sound
///
- /// \return Sound duration, in seconds
+ /// \return Sound duration
+ ///
+ /// \see getSampleRate, getChannelCount
///
////////////////////////////////////////////////////////////
- float GetDuration() const;
+ Time getDuration() const;
////////////////////////////////////////////////////////////
- /// Assignment operator
+ /// \brief Overload of assignment operator
///
- /// \param Other : Instance to assign
+ /// \param right Instance to assign
///
- /// \return Reference to the sound buffer
+ /// \return Reference to self
///
////////////////////////////////////////////////////////////
- SoundBuffer& operator =(const SoundBuffer& Other);
+ SoundBuffer& operator =(const SoundBuffer& right);
private :
friend class Sound;
////////////////////////////////////////////////////////////
- /// Update the internal buffer with the audio samples
+ /// \brief Initialize the internal state after loading a new sound
+ ///
+ /// \param file Sound file providing access to the new loaded sound
+ ///
+ /// \return True on succesful initialization, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ bool initialize(priv::SoundFile& file);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the internal buffer with the cached audio samples
///
- /// \param ChannelsCount : Number of channels
- /// \param SampleRate : Sample rate
+ /// \param channelCount Number of channels
+ /// \param sampleRate Sample rate (number of samples per second)
///
- /// \return True on success
+ /// \return True on success, false if any error happened
///
////////////////////////////////////////////////////////////
- bool Update(unsigned int ChannelsCount, unsigned int SampleRate);
+ bool update(unsigned int channelCount, unsigned int sampleRate);
////////////////////////////////////////////////////////////
- /// Add a sound to the list of sounds that use this buffer
+ /// \brief Add a sound to the list of sounds that use this buffer
///
- /// \param Instance : Sound object to attach
+ /// \param sound Sound instance to attach
///
////////////////////////////////////////////////////////////
- void AttachSound(Sound* Instance) const;
+ void attachSound(Sound* sound) const;
////////////////////////////////////////////////////////////
- /// Remove a sound from the list of sounds that use this buffer
+ /// \brief Remove a sound from the list of sounds that use this buffer
///
- /// \param Instance : Sound object to detach
+ /// \param sound Sound instance to detach
///
////////////////////////////////////////////////////////////
- void DetachSound(Sound* Instance) const;
+ void detachSound(Sound* sound) const;
////////////////////////////////////////////////////////////
// Types
@@ -201,13 +279,81 @@ private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- unsigned int myBuffer; ///< OpenAL buffer identifier
- std::vector<Int16> mySamples; ///< Samples buffer
- float myDuration; ///< Sound duration, in seconds
- mutable SoundList mySounds; ///< List of sounds that are using this buffer
+ unsigned int m_buffer; ///< OpenAL buffer identifier
+ std::vector<Int16> m_samples; ///< Samples buffer
+ Time m_duration; ///< Sound duration
+ mutable SoundList m_sounds; ///< List of sounds that are using this buffer
};
} // namespace sf
#endif // SFML_SOUNDBUFFER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SoundBuffer
+/// \ingroup audio
+///
+/// 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 restituted 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:
+/// \code
+/// // Declare a new sound buffer
+/// sf::SoundBuffer 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();
+/// \endcode
+///
+/// \see sf::Sound, sf::SoundBufferRecorder
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/SoundBufferRecorder.hpp b/include/SFML/Audio/SoundBufferRecorder.hpp
index e949a1c..fa4ac4c 100755..100644
--- a/include/SFML/Audio/SoundBufferRecorder.hpp
+++ b/include/SFML/Audio/SoundBufferRecorder.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,6 +28,7 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Audio/Export.hpp>
#include <SFML/Audio/SoundBuffer.hpp>
#include <SFML/Audio/SoundRecorder.hpp>
#include <vector>
@@ -36,48 +37,102 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// Specialized SoundRecorder which saves the captured
-/// audio data into a sound buffer
+/// \brief Specialized SoundRecorder which stores the captured
+/// audio data into a sound buffer
+///
////////////////////////////////////////////////////////////
-class SFML_API SoundBufferRecorder : public SoundRecorder
+class SFML_AUDIO_API SoundBufferRecorder : public SoundRecorder
{
public :
////////////////////////////////////////////////////////////
- /// Get the sound buffer containing the captured audio data
+ /// \brief Get the sound buffer containing the captured audio data
///
- /// \return Constant reference to the sound buffer
+ /// 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.
+ ///
+ /// \return Read-only access to the sound buffer
///
////////////////////////////////////////////////////////////
- const SoundBuffer& GetBuffer() const;
+ const SoundBuffer& getBuffer() const;
-private :
+protected:
////////////////////////////////////////////////////////////
- /// /see SoundBuffer::OnStart
+ /// \brief Start capturing audio data
+ ///
+ /// \return True to start the capture, or false to abort it
///
////////////////////////////////////////////////////////////
- virtual bool OnStart();
+ virtual bool onStart();
////////////////////////////////////////////////////////////
- /// /see SoundBuffer::OnProcessSamples
+ /// \brief Process a new chunk of recorded samples
+ ///
+ /// \param samples Pointer to the new chunk of recorded samples
+ /// \param sampleCount Number of samples pointed by \a samples
+ ///
+ /// \return True to continue the capture, or false to stop it
///
////////////////////////////////////////////////////////////
- virtual bool OnProcessSamples(const Int16* Samples, std::size_t SamplesCount);
+ virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount);
////////////////////////////////////////////////////////////
- /// /see SoundBuffer::OnStop
+ /// \brief Stop capturing audio data
///
////////////////////////////////////////////////////////////
- virtual void OnStop();
+ virtual void onStop();
+
+private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::vector<Int16> mySamples; ///< Temporary sample buffer to hold the recorded data
- SoundBuffer myBuffer; ///< Sound buffer that will contain the recorded data
+ std::vector<Int16> m_samples; ///< Temporary sample buffer to hold the recorded data
+ SoundBuffer m_buffer; ///< Sound buffer that will contain the recorded data
};
} // namespace sf
#endif // SFML_SOUNDBUFFERRECORDER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SoundBufferRecorder
+/// \ingroup audio
+///
+/// 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:
+/// \code
+/// if (sf::SoundBufferRecorder::isAvailable())
+/// {
+/// // Record some audio data
+/// sf::SoundBufferRecorder recorder;
+/// 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");
+/// }
+/// \endcode
+///
+/// \see sf::SoundRecorder
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/SoundRecorder.hpp b/include/SFML/Audio/SoundRecorder.hpp
index 551a4b9..eddf48e 100755..100644
--- a/include/SFML/Audio/SoundRecorder.hpp
+++ b/include/SFML/Audio/SoundRecorder.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,6 +28,7 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Audio/Export.hpp>
#include <SFML/System/Thread.hpp>
#include <vector>
@@ -35,114 +36,235 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// SoundRecorder is an interface for capturing sound data,
-/// it is meant to be used as a base class
+/// \brief Abstract base class for capturing sound data
+///
////////////////////////////////////////////////////////////
-class SFML_API SoundRecorder : private Thread
+class SFML_AUDIO_API SoundRecorder
{
public :
////////////////////////////////////////////////////////////
- /// Virtual destructor
+ /// \brief destructor
///
////////////////////////////////////////////////////////////
virtual ~SoundRecorder();
////////////////////////////////////////////////////////////
- /// Start the capture.
- /// Warning : only one capture can happen at the same time
+ /// \brief Start the capture
///
- /// \param SampleRate : Sound frequency (the more samples, the higher the quality)
- /// (44100 by default = CD quality)
+ /// The \a 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.
+ ///
+ /// \param sampleRate Desired capture rate, in number of samples per second
+ ///
+ /// \see stop
///
////////////////////////////////////////////////////////////
- void Start(unsigned int SampleRate = 44100);
+ void start(unsigned int sampleRate = 44100);
////////////////////////////////////////////////////////////
- /// Stop the capture
+ /// \brief Stop the capture
+ ///
+ /// \see start
///
////////////////////////////////////////////////////////////
- void Stop();
+ void stop();
////////////////////////////////////////////////////////////
- /// Get the sample rate
+ /// \brief Get the sample rate
///
- /// \return Frequency, in samples per second
+ /// 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).
+ ///
+ /// \return Sample rate, in samples per second
///
////////////////////////////////////////////////////////////
- unsigned int GetSampleRate() const;
+ unsigned int getSampleRate() const;
////////////////////////////////////////////////////////////
- /// Tell if the system supports sound capture.
- /// If not, this class won't be usable
+ /// \brief 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.
///
- /// \return True if audio capture is supported
+ /// \return True if audio capture is supported, false otherwise
///
////////////////////////////////////////////////////////////
- static bool CanCapture();
+ static bool isAvailable();
protected :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructor is only meant to be called by derived classes.
///
////////////////////////////////////////////////////////////
SoundRecorder();
-private :
-
////////////////////////////////////////////////////////////
- /// Start recording audio data
+ /// \brief Start capturing audio data
///
- /// \return False to abort recording audio data, true to start
+ /// This virtual function may be overriden 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.
+ ///
+ /// \return True to start the capture, or false to abort it
///
////////////////////////////////////////////////////////////
- virtual bool OnStart();
+ virtual bool onStart();
////////////////////////////////////////////////////////////
- /// Process a new chunk of recorded samples
+ /// \brief 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.).
///
- /// \param Samples : Pointer to the new chunk of recorded samples
- /// \param SamplesCount : Number of samples pointed by Samples
+ /// \param samples Pointer to the new chunk of recorded samples
+ /// \param sampleCount Number of samples pointed by \a samples
///
- /// \return False to stop recording audio data, true to continue
+ /// \return True to continue the capture, or false to stop it
///
////////////////////////////////////////////////////////////
- virtual bool OnProcessSamples(const Int16* Samples, std::size_t SamplesCount) = 0;
+ virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0;
////////////////////////////////////////////////////////////
- /// Stop recording audio data
+ /// \brief Stop capturing audio data
+ ///
+ /// This virtual function may be overriden 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.
///
////////////////////////////////////////////////////////////
- virtual void OnStop();
+ virtual void onStop();
+
+private :
////////////////////////////////////////////////////////////
- /// /see Thread::Run
+ /// \brief Function called as the entry point of the thread
+ ///
+ /// This function starts the recording loop, and returns
+ /// only when the capture is stopped.
///
////////////////////////////////////////////////////////////
- virtual void Run();
+ void record();
////////////////////////////////////////////////////////////
- /// Get the available captured samples and process them
+ /// \brief Get the new available audio samples and process them
+ ///
+ /// This function is called continuously during the
+ /// capture loop. It retrieves the captured samples and
+ /// forwards them to the derived class.
///
////////////////////////////////////////////////////////////
- void ProcessCapturedSamples();
+ void processCapturedSamples();
////////////////////////////////////////////////////////////
- /// Clean up the recorder internal resources
+ /// \brief Clean up the recorder's internal resources
+ ///
+ /// This function is called when the capture stops.
///
////////////////////////////////////////////////////////////
- void CleanUp();
+ void cleanup();
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::vector<Int16> mySamples; ///< Buffer to store captured samples
- unsigned int mySampleRate; ///< Sample rate
- bool myIsCapturing; ///< Capturing state
+ Thread m_thread; ///< Thread running the background recording task
+ std::vector<Int16> m_samples; ///< Buffer to store captured samples
+ unsigned int m_sampleRate; ///< Sample rate
+ bool m_isCapturing; ///< Capturing state
};
} // namespace sf
#endif // SFML_SOUNDRECORDER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SoundRecorder
+/// \ingroup audio
+///
+/// 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:
+/// \li onProcessSamples provides the new chunks of audio samples while the capture happens
+///
+/// Moreover, two additionnal virtual functions can be overriden
+/// as well if necessary:
+/// \li onStart is called before the capture happens, to perform custom initializations
+/// \li onStop is called after the capture ends, to perform custom cleanup
+///
+/// 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.
+///
+/// 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 and onStop
+/// virtual functions (but not onStart) 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.
+///
+/// Usage example:
+/// \code
+/// class CustomRecorder : public sf::SoundRecorder
+/// {
+/// 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;
+/// recorder.start();
+/// ...
+/// recorder.stop();
+/// }
+/// \endcode
+///
+/// \see sf::SoundBufferRecorder
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/SoundSource.hpp b/include/SFML/Audio/SoundSource.hpp
new file mode 100644
index 0000000..8ccc0b7
--- /dev/null
+++ b/include/SFML/Audio/SoundSource.hpp
@@ -0,0 +1,286 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SOUNDSOURCE_HPP
+#define SFML_SOUNDSOURCE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Audio/Export.hpp>
+#include <SFML/System/Vector3.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Base class defining a sound's properties
+///
+////////////////////////////////////////////////////////////
+class SFML_AUDIO_API SoundSource
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enumeration of the sound source states
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Status
+ {
+ Stopped, ///< Sound is not playing
+ Paused, ///< Sound is paused
+ Playing ///< Sound is playing
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Copy constructor
+ ///
+ /// \param copy Instance to copy
+ ///
+ ////////////////////////////////////////////////////////////
+ SoundSource(const SoundSource& copy);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~SoundSource();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param pitch New pitch to apply to the sound
+ ///
+ /// \see getPitch
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPitch(float pitch);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param volume Volume of the sound
+ ///
+ /// \see getVolume
+ ///
+ ////////////////////////////////////////////////////////////
+ void setVolume(float volume);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param x X coordinate of the position of the sound in the scene
+ /// \param y Y coordinate of the position of the sound in the scene
+ /// \param z Z coordinate of the position of the sound in the scene
+ ///
+ /// \see getPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPosition(float x, float y, float z);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param position Position of the sound in the scene
+ ///
+ /// \see getPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPosition(const Vector3f& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 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).
+ ///
+ /// \param relative True to set the position relative, false to set it absolute
+ ///
+ /// \see isRelativeToListener
+ ///
+ ////////////////////////////////////////////////////////////
+ void setRelativeToListener(bool relative);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param distance New minimum distance of the sound
+ ///
+ /// \see getMinDistance, setAttenuation
+ ///
+ ////////////////////////////////////////////////////////////
+ void setMinDistance(float distance);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param attenuation New attenuation factor of the sound
+ ///
+ /// \see getAttenuation, setMinDistance
+ ///
+ ////////////////////////////////////////////////////////////
+ void setAttenuation(float attenuation);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the pitch of the sound
+ ///
+ /// \return Pitch of the sound
+ ///
+ /// \see setPitch
+ ///
+ ////////////////////////////////////////////////////////////
+ float getPitch() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the volume of the sound
+ ///
+ /// \return Volume of the sound, in the range [0, 100]
+ ///
+ /// \see setVolume
+ ///
+ ////////////////////////////////////////////////////////////
+ float getVolume() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the 3D position of the sound in the audio scene
+ ///
+ /// \return Position of the sound
+ ///
+ /// \see setPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector3f getPosition() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the sound's position is relative to the
+ /// listener or is absolute
+ ///
+ /// \return True if the position is relative, false if it's absolute
+ ///
+ /// \see setRelativeToListener
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isRelativeToListener() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the minimum distance of the sound
+ ///
+ /// \return Minimum distance of the sound
+ ///
+ /// \see setMinDistance, getAttenuation
+ ///
+ ////////////////////////////////////////////////////////////
+ float getMinDistance() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the attenuation factor of the sound
+ ///
+ /// \return Attenuation factor of the sound
+ ///
+ /// \see setAttenuation, getMinDistance
+ ///
+ ////////////////////////////////////////////////////////////
+ float getAttenuation() const;
+
+protected :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor is meant ot be called by derived classes only.
+ ///
+ ////////////////////////////////////////////////////////////
+ SoundSource();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current status of the sound (stopped, paused, playing)
+ ///
+ /// \return Current status of the sound
+ ///
+ ////////////////////////////////////////////////////////////
+ Status getStatus() const;
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ unsigned int m_source; ///< OpenAL source identifier
+};
+
+} // namespace sf
+
+
+#endif // SFML_SOUNDSOURCE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SoundSource
+/// \ingroup audio
+///
+/// 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 sf::Sound, sf::SoundStream
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Audio/SoundStream.hpp b/include/SFML/Audio/SoundStream.hpp
index 67b2bab..461dd92 100755..100644
--- a/include/SFML/Audio/SoundStream.hpp
+++ b/include/SFML/Audio/SoundStream.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,201 +28,350 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Audio/Sound.hpp>
+#include <SFML/Audio/Export.hpp>
+#include <SFML/Audio/SoundSource.hpp>
#include <SFML/System/Thread.hpp>
+#include <SFML/System/Time.hpp>
#include <cstdlib>
namespace sf
{
////////////////////////////////////////////////////////////
-/// SoundStream is a streamed sound, ie samples are acquired
-/// while the sound is playing. Use it for big sounds that would
-/// require hundreds of MB in memory (see Music),
-/// or for streaming sound from the network
+/// \brief Abstract base class for streamed audio sources
+///
////////////////////////////////////////////////////////////
-class SFML_API SoundStream : private Thread, private Sound
+class SFML_AUDIO_API SoundStream : public SoundSource
{
public :
- using Sound::Status;
- using Sound::Stopped;
- using Sound::Paused;
- using Sound::Playing;
- using Sound::Pause;
- using Sound::SetPitch;
- using Sound::SetVolume;
- using Sound::SetPosition;
- using Sound::SetRelativeToListener;
- using Sound::SetMinDistance;
- using Sound::SetAttenuation;
- using Sound::GetPitch;
- using Sound::GetVolume;
- using Sound::GetPosition;
- using Sound::IsRelativeToListener;
- using Sound::GetMinDistance;
- using Sound::GetAttenuation;
-
- ////////////////////////////////////////////////////////////
- /// Structure defining a chunk of audio data to stream
+ ////////////////////////////////////////////////////////////
+ /// \brief Structure defining a chunk of audio data to stream
+ ///
////////////////////////////////////////////////////////////
struct Chunk
{
- const Int16* Samples; ///< Pointer to the audio samples
- std::size_t NbSamples; ///< Number of samples pointed by Samples
+ const Int16* samples; ///< Pointer to the audio samples
+ std::size_t sampleCount; ///< Number of samples pointed by Samples
};
////////////////////////////////////////////////////////////
- /// Virtual destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
virtual ~SoundStream();
////////////////////////////////////////////////////////////
- /// Start playing the audio stream
+ /// \brief 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 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 stream is played.
+ ///
+ /// \see pause, stop
+ ///
+ ////////////////////////////////////////////////////////////
+ void play();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Pause the audio stream
+ ///
+ /// This function pauses the stream if it was playing,
+ /// otherwise (stream already paused or stopped) it has no effect.
+ ///
+ /// \see play, stop
///
////////////////////////////////////////////////////////////
- void Play();
+ void pause();
////////////////////////////////////////////////////////////
- /// Stop playing the audio stream
+ /// \brief 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 play, pause
///
////////////////////////////////////////////////////////////
- void Stop();
+ void stop();
////////////////////////////////////////////////////////////
- /// Return the number of channels (1 = mono, 2 = stereo)
+ /// \brief Return the number of channels of the stream
+ ///
+ /// 1 channel means a mono sound, 2 means stereo, etc.
///
/// \return Number of channels
///
////////////////////////////////////////////////////////////
- unsigned int GetChannelsCount() const;
+ unsigned int getChannelCount() const;
////////////////////////////////////////////////////////////
- /// Get the stream sample rate
+ /// \brief 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.
///
- /// \return Stream frequency (number of samples per second)
+ /// \return Sample rate, in number of samples per second
///
////////////////////////////////////////////////////////////
- unsigned int GetSampleRate() const;
+ unsigned int getSampleRate() const;
////////////////////////////////////////////////////////////
- /// Get the status of the stream (stopped, paused, playing)
+ /// \brief Get the current status of the stream (stopped, paused, playing)
///
- /// \return Current status of the sound
+ /// \return Current status
///
////////////////////////////////////////////////////////////
- Status GetStatus() const;
+ Status getStatus() const;
////////////////////////////////////////////////////////////
- /// Get the current playing position of the stream
+ /// \brief Change the current playing position of the stream
+ ///
+ /// The playing position can be changed when the stream is
+ /// either paused or playing.
///
- /// \return Current playing position, expressed in seconds
+ /// \param timeOffset New playing position, from the beginning of the stream
+ ///
+ /// \see getPlayingOffset
///
////////////////////////////////////////////////////////////
- float GetPlayingOffset() const;
+ void setPlayingOffset(Time timeOffset);
////////////////////////////////////////////////////////////
- /// Set the stream loop state.
- /// This parameter is disabled by default
+ /// \brief Get the current playing position of the stream
+ ///
+ /// \return Current playing position, from the beginning of the stream
///
- /// \param Loop : True to play in loop, false to play once
+ /// \see setPlayingOffset
///
////////////////////////////////////////////////////////////
- void SetLoop(bool Loop);
+ Time getPlayingOffset() const;
////////////////////////////////////////////////////////////
- /// Tell whether or not the stream is looping
+ /// \brief 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.
///
- /// \return True if the music is looping, false otherwise
+ /// \param loop True to play in loop, false to play once
+ ///
+ /// \see getLoop
///
////////////////////////////////////////////////////////////
- bool GetLoop() const;
+ void setLoop(bool loop);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether or not the stream is in loop mode
+ ///
+ /// \return True if the stream is looping, false otherwise
+ ///
+ /// \see setLoop
+ ///
+ ////////////////////////////////////////////////////////////
+ bool getLoop() const;
protected :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructor is only meant to be called by derived classes.
///
////////////////////////////////////////////////////////////
SoundStream();
////////////////////////////////////////////////////////////
- /// Set the audio stream parameters, you must call it before Play()
+ /// \brief 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.
///
- /// \param ChannelsCount : Number of channels
- /// \param SampleRate : Sample rate
+ /// \param channelCount Number of channels of the stream
+ /// \param sampleRate Sample rate, in samples per second
///
////////////////////////////////////////////////////////////
- void Initialize(unsigned int ChannelsCount, unsigned int SampleRate);
-
-private :
+ void initialize(unsigned int channelCount, unsigned int sampleRate);
////////////////////////////////////////////////////////////
- /// /see Thread::Run
+ /// \brief Request a new chunk of audio samples from the stream source
+ ///
+ /// This function must be overriden 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.
+ ///
+ /// \param data Chunk of data to fill
+ ///
+ /// \return True to continue playback, false to stop
///
////////////////////////////////////////////////////////////
- virtual void Run();
+ virtual bool onGetData(Chunk& data) = 0;
////////////////////////////////////////////////////////////
- /// Called when the sound restarts
+ /// \brief Change the current playing position in the stream source
///
- /// \return If false is returned, the playback is aborted
+ /// This function must be overriden by derived classes to
+ /// allow random seeking into the stream source.
+ ///
+ /// \param timeOffset New playing position, relative to the beginning of the stream
///
////////////////////////////////////////////////////////////
- virtual bool OnStart();
+ virtual void onSeek(Time timeOffset) = 0;
+
+private :
////////////////////////////////////////////////////////////
- /// Called each time new audio data is needed to feed the stream
+ /// \brief Function called as the entry point of the thread
///
- /// \param Data : New chunk of data to stream
- ///
- /// \return True to continue playback, false to stop
+ /// This function starts the streaming loop, and returns
+ /// only when the sound is stopped.
///
////////////////////////////////////////////////////////////
- virtual bool OnGetData(Chunk& Data) = 0;
+ void streamData();
////////////////////////////////////////////////////////////
- /// Fill a new buffer with audio data, and push it to the
- /// playing queue
+ /// \brief Fill a new buffer with audio samples, and append
+ /// it to the playing queue
+ ///
+ /// This function is called as soon as a buffer has been fully
+ /// consumed; it fills it again and inserts it back into the
+ /// playing queue.
///
- /// \param Buffer : Number of the buffer to fill (in [0, BuffersCount])
+ /// \param buffer Number of the buffer to fill (in [0, BufferCount])
///
- /// \return True if the derived class has requested to stop
+ /// \return True if the stream source has requested to stop, false otherwise
///
////////////////////////////////////////////////////////////
- bool FillAndPushBuffer(unsigned int BufferNum);
+ bool fillAndPushBuffer(unsigned int bufferNum);
////////////////////////////////////////////////////////////
- /// Fill the buffers queue with all available buffers
+ /// \brief Fill the audio buffers and put them all into the playing queue
///
- /// \return True if the derived class has requested to stop
+ /// This function is called when playing starts and the
+ /// playing queue is empty.
+ ///
+ /// \return True if the derived class has requested to stop, false otherwise
///
////////////////////////////////////////////////////////////
- bool FillQueue();
+ bool fillQueue();
////////////////////////////////////////////////////////////
- /// Clear the queue of any remaining buffers
+ /// \brief Clear all the audio buffers and empty the playing queue
+ ///
+ /// This function is called when the stream is stopped.
///
////////////////////////////////////////////////////////////
- void ClearQueue();
+ void clearQueue();
- enum {BuffersCount = 3};
+ enum
+ {
+ BufferCount = 3 ///< Number of audio buffers used by the streaming loop
+ };
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- bool myIsStreaming; ///< Streaming state (true = playing, false = stopped)
- unsigned int myBuffers[BuffersCount]; ///< Sound buffers used to store temporary audio data
- unsigned int myChannelsCount; ///< Number of channels (1 = mono, 2 = stereo, ...)
- unsigned int mySampleRate; ///< Frequency (samples / second)
- unsigned long myFormat; ///< Format of the internal sound buffers
- bool myLoop; ///< Loop flag (true to loop, false to play once)
- unsigned int mySamplesProcessed; ///< Number of buffers processed since beginning of the stream
- bool myEndBuffers[BuffersCount]; ///< Each buffer is marked as "end buffer" or not, for proper duration calculation
+ Thread m_thread; ///< Thread running the background tasks
+ bool m_isStreaming; ///< Streaming state (true = playing, false = stopped)
+ unsigned int m_buffers[BufferCount]; ///< Sound buffers used to store temporary audio data
+ unsigned int m_channelCount; ///< Number of channels (1 = mono, 2 = stereo, ...)
+ unsigned int m_sampleRate; ///< Frequency (samples / second)
+ Uint32 m_format; ///< Format of the internal sound buffers
+ bool m_loop; ///< Loop flag (true to loop, false to play once)
+ Uint64 m_samplesProcessed; ///< Number of buffers processed since beginning of the stream
+ bool m_endBuffers[BufferCount]; ///< Each buffer is marked as "end buffer" or not, for proper duration calculation
};
} // namespace sf
#endif // SFML_SOUNDSTREAM_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SoundStream
+/// \ingroup audio
+///
+/// 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 behaviour 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:
+/// \li onGetData fills a new chunk of audio data to be played
+/// \li 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:
+/// \code
+/// 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
+/// 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();
+/// \endcode
+///
+/// \see sf::Music
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Config.hpp b/include/SFML/Config.hpp
index 84ec60f..933cd11 100755..100644
--- a/include/SFML/Config.hpp
+++ b/include/SFML/Config.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,6 +25,14 @@
#ifndef SFML_CONFIG_HPP
#define SFML_CONFIG_HPP
+
+////////////////////////////////////////////////////////////
+// Define the SFML version
+////////////////////////////////////////////////////////////
+#define SFML_VERSION_MAJOR 2
+#define SFML_VERSION_MINOR 1
+
+
////////////////////////////////////////////////////////////
// Identify the operating system
////////////////////////////////////////////////////////////
@@ -32,9 +40,6 @@
// Windows
#define SFML_SYSTEM_WINDOWS
- #ifndef WIN32_LEAN_AND_MEAN
- #define WIN32_LEAN_AND_MEAN
- #endif
#ifndef NOMINMAX
#define NOMINMAX
#endif
@@ -73,45 +78,47 @@
////////////////////////////////////////////////////////////
-// Define portable import / export macros
+// Define helpers to create portable import / export macros for each module
////////////////////////////////////////////////////////////
-#if defined(SFML_SYSTEM_WINDOWS)
+#if !defined(SFML_STATIC)
- #ifdef SFML_DYNAMIC
+ #if defined(SFML_SYSTEM_WINDOWS)
- // Windows platforms
- #ifdef SFML_EXPORTS
+ // Windows compilers need specific (and different) keywords for export and import
+ #define SFML_API_EXPORT __declspec(dllexport)
+ #define SFML_API_IMPORT __declspec(dllimport)
- // From DLL side, we must export
- #define SFML_API __declspec(dllexport)
-
- #else
+ // For Visual C++ compilers, we also need to turn off this annoying C4251 warning
+ #ifdef _MSC_VER
- // From client application side, we must import
- #define SFML_API __declspec(dllimport)
+ #pragma warning(disable : 4251)
#endif
- // For Visual C++ compilers, we also need to turn off this annoying C4251 warning.
- // You can read lots ot different things about it, but the point is the code will
- // just work fine, and so the simplest way to get rid of this warning is to disable it
- #ifdef _MSC_VER
+ #else // Linux, FreeBSD, Mac OS X
- #pragma warning(disable : 4251)
+ #if __GNUC__ >= 4
- #endif
+ // GCC 4 has special keywords for showing/hidding symbols,
+ // the same keyword is used for both importing and exporting
+ #define SFML_API_EXPORT __attribute__ ((__visibility__ ("default")))
+ #define SFML_API_IMPORT __attribute__ ((__visibility__ ("default")))
- #else
+ #else
- // No specific directive needed for static build
- #define SFML_API
+ // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported
+ #define SFML_API_EXPORT
+ #define SFML_API_IMPORT
+
+ #endif
#endif
#else
- // Other platforms don't need to define anything
- #define SFML_API
+ // Static build doesn't need import/export macros
+ #define SFML_API_EXPORT
+ #define SFML_API_IMPORT
#endif
@@ -119,44 +126,31 @@
////////////////////////////////////////////////////////////
// Define portable fixed-size types
////////////////////////////////////////////////////////////
-#include <climits>
-
namespace sf
{
+ // All "common" platforms use the same size for char, short and int
+ // (basically there are 3 types for 3 sizes, so no other match is possible),
+ // we can use them without doing any kind of check
+
// 8 bits integer types
- #if UCHAR_MAX == 0xFF
- typedef signed char Int8;
- typedef unsigned char Uint8;
- #else
- #error No 8 bits integer type for this platform
- #endif
+ typedef signed char Int8;
+ typedef unsigned char Uint8;
// 16 bits integer types
- #if USHRT_MAX == 0xFFFF
- typedef signed short Int16;
- typedef unsigned short Uint16;
- #elif UINT_MAX == 0xFFFF
- typedef signed int Int16;
- typedef unsigned int Uint16;
- #elif ULONG_MAX == 0xFFFF
- typedef signed long Int16;
- typedef unsigned long Uint16;
- #else
- #error No 16 bits integer type for this platform
- #endif
+ typedef signed short Int16;
+ typedef unsigned short Uint16;
// 32 bits integer types
- #if USHRT_MAX == 0xFFFFFFFF
- typedef signed short Int32;
- typedef unsigned short Uint32;
- #elif UINT_MAX == 0xFFFFFFFF
- typedef signed int Int32;
- typedef unsigned int Uint32;
- #elif ULONG_MAX == 0xFFFFFFFF
- typedef signed long Int32;
- typedef unsigned long Uint32;
+ typedef signed int Int32;
+ typedef unsigned int Uint32;
+
+ // 64 bits integer types
+ #if defined(_MSC_VER)
+ typedef signed __int64 Int64;
+ typedef unsigned __int64 Uint64;
#else
- #error No 32 bits integer type for this platform
+ typedef signed long long Int64;
+ typedef unsigned long long Uint64;
#endif
} // namespace sf
diff --git a/include/SFML/Graphics.hpp b/include/SFML/Graphics.hpp
index ea4d846..0dc6534 100755..100644
--- a/include/SFML/Graphics.hpp
+++ b/include/SFML/Graphics.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -30,16 +30,33 @@
////////////////////////////////////////////////////////////
#include <SFML/Window.hpp>
+#include <SFML/Graphics/BlendMode.hpp>
#include <SFML/Graphics/Color.hpp>
#include <SFML/Graphics/Font.hpp>
#include <SFML/Graphics/Glyph.hpp>
#include <SFML/Graphics/Image.hpp>
-#include <SFML/Graphics/PostFX.hpp>
+#include <SFML/Graphics/RenderStates.hpp>
+#include <SFML/Graphics/RenderTexture.hpp>
#include <SFML/Graphics/RenderWindow.hpp>
+#include <SFML/Graphics/Shader.hpp>
#include <SFML/Graphics/Shape.hpp>
+#include <SFML/Graphics/CircleShape.hpp>
+#include <SFML/Graphics/RectangleShape.hpp>
+#include <SFML/Graphics/ConvexShape.hpp>
#include <SFML/Graphics/Sprite.hpp>
-#include <SFML/Graphics/String.hpp>
+#include <SFML/Graphics/Text.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/Transform.hpp>
+#include <SFML/Graphics/Vertex.hpp>
+#include <SFML/Graphics/VertexArray.hpp>
#include <SFML/Graphics/View.hpp>
#endif // SFML_GRAPHICS_HPP
+
+////////////////////////////////////////////////////////////
+/// \defgroup graphics Graphics module
+///
+/// 2D graphics module: sprites, text, shapes, ...
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/BlendMode.hpp b/include/SFML/Graphics/BlendMode.hpp
new file mode 100644
index 0000000..4b12e11
--- /dev/null
+++ b/include/SFML/Graphics/BlendMode.hpp
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_BLENDMODE_HPP
+#define SFML_BLENDMODE_HPP
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \ingroup graphics
+/// \brief Available blending modes for drawing
+///
+////////////////////////////////////////////////////////////
+enum BlendMode
+{
+ BlendAlpha, ///< Pixel = Source * Source.a + Dest * (1 - Source.a)
+ BlendAdd, ///< Pixel = Source + Dest
+ BlendMultiply, ///< Pixel = Source * Dest
+ BlendNone ///< Pixel = Source
+};
+
+} // namespace sf
+
+
+#endif // SFML_BLENDMODE_HPP
diff --git a/include/SFML/Graphics/CircleShape.hpp b/include/SFML/Graphics/CircleShape.hpp
new file mode 100644
index 0000000..b82539e
--- /dev/null
+++ b/include/SFML/Graphics/CircleShape.hpp
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CIRCLESHAPE_HPP
+#define SFML_CIRCLESHAPE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Shape.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Specialized shape representing a circle
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API CircleShape : public Shape
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// \param radius Radius of the circle
+ /// \param pointCount Number of points composing the circle
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit CircleShape(float radius = 0, unsigned int pointCount = 30);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the radius of the circle
+ ///
+ /// \param radius New radius of the circle
+ ///
+ /// \see getRadius
+ ///
+ ////////////////////////////////////////////////////////////
+ void setRadius(float radius);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the radius of the circle
+ ///
+ /// \return Radius of the circle
+ ///
+ /// \see setRadius
+ ///
+ ////////////////////////////////////////////////////////////
+ float getRadius() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the number of points of the circle
+ ///
+ /// \param count New number of points of the circle
+ ///
+ /// \see getPointCount
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPointCount(unsigned int count);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the number of points of the shape
+ ///
+ /// \return Number of points of the shape
+ ///
+ /// \see setPointCount
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual unsigned int getPointCount() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get a point of the shape
+ ///
+ /// The result is undefined if \a index is out of the valid range.
+ ///
+ /// \param index Index of the point to get, in range [0 .. getPointCount() - 1]
+ ///
+ /// \return Index-th point of the shape
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2f getPoint(unsigned int index) const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ float m_radius; ///< Radius of the circle
+ unsigned int m_pointCount; ///< Number of points composing the circle
+};
+
+} // namespace sf
+
+
+#endif // SFML_CIRCLESHAPE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::CircleShape
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// sf::CircleShape circle;
+/// circle.setRadius(150);
+/// circle.setOutlineColor(sf::Color::Red);
+/// circle.setOutlineThickness(5);
+/// circle.setPosition(10, 20);
+/// ...
+/// window.draw(circle);
+/// \endcode
+///
+/// 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 sf::Shape, sf::RectangleShape, sf::ConvexShape
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Color.hpp b/include/SFML/Graphics/Color.hpp
index 5f4d4d7..fb2aa2d 100755..100644
--- a/include/SFML/Graphics/Color.hpp
+++ b/include/SFML/Graphics/Color.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,87 +28,51 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Graphics/Export.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Color is an utility class for manipulating
-/// 32-bits RGBA colors
+/// \brief Utility class for manpulating RGBA colors
+///
////////////////////////////////////////////////////////////
-class SFML_API Color
+class SFML_GRAPHICS_API Color
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- Color();
-
- ////////////////////////////////////////////////////////////
- /// Construct the color from its 4 RGBA components
- ///
- /// \param R : Red component (0 .. 255)
- /// \param G : Green component (0 .. 255)
- /// \param B : Blue component (0 .. 255)
- /// \param A : Alpha component (0 .. 255) (255 by default)
- ///
- ////////////////////////////////////////////////////////////
- Color(Uint8 R, Uint8 G, Uint8 B, Uint8 A = 255);
-
- ////////////////////////////////////////////////////////////
- /// Operator += overload to add a color
- ///
- /// \param Other : Color to add
- ///
- /// \return Component-wise saturated addition of the two colors
- ///
- ////////////////////////////////////////////////////////////
- Color& operator +=(const Color& Other);
-
- ////////////////////////////////////////////////////////////
- /// Operator *= overload to modulate a color
+ /// \brief Default constructor
///
- /// \param Other : Color to modulate
+ /// Constructs an opaque black color. It is equivalent to
+ /// sf::Color(0, 0, 0, 255).
///
- /// \return Component-wise multiplication of the two colors
- ///
- ////////////////////////////////////////////////////////////
- Color& operator *=(const Color& Other);
-
////////////////////////////////////////////////////////////
- /// Compare two colors (for equality)
- ///
- /// \param Other : Color to compare
- ///
- /// \return True if colors are equal
- ///
- ////////////////////////////////////////////////////////////
- bool operator ==(const Color& Other) const;
+ Color();
////////////////////////////////////////////////////////////
- /// Compare two colors (for difference)
- ///
- /// \param Other : Color to compare
+ /// \brief Construct the color from its 4 RGBA components
///
- /// \return True if colors are different
+ /// \param red Red component (in the range [0, 255])
+ /// \param green Green component (in the range [0, 255])
+ /// \param blue Blue component (in the range [0, 255])
+ /// \param alpha Alpha (opacity) component (in the range [0, 255])
///
////////////////////////////////////////////////////////////
- bool operator !=(const Color& Other) const;
+ Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha = 255);
////////////////////////////////////////////////////////////
// Static member data
////////////////////////////////////////////////////////////
- static const Color Black; ///< Black predefined color
- static const Color White; ///< White predefined color
- static const Color Red; ///< Red predefined color
- static const Color Green; ///< Green predefined color
- static const Color Blue; ///< Blue predefined color
- static const Color Yellow; ///< Yellow predefined color
- static const Color Magenta; ///< Magenta predefined color
- static const Color Cyan; ///< Cyan predefined color
+ static const Color Black; ///< Black predefined color
+ static const Color White; ///< White predefined color
+ static const Color Red; ///< Red predefined color
+ static const Color Green; ///< Green predefined color
+ static const Color Blue; ///< Blue predefined color
+ static const Color Yellow; ///< Yellow predefined color
+ static const Color Magenta; ///< Magenta predefined color
+ static const Color Cyan; ///< Cyan predefined color
+ static const Color Transparent; ///< Transparent (black) predefined color
////////////////////////////////////////////////////////////
// Member data
@@ -116,32 +80,149 @@ public :
Uint8 r; ///< Red component
Uint8 g; ///< Green component
Uint8 b; ///< Blue component
- Uint8 a; ///< Alpha (transparency) component
+ Uint8 a; ///< Alpha (opacity) component
};
////////////////////////////////////////////////////////////
-/// Operator + overload to add two colors
+/// \relates Color
+/// \brief Overload of the == operator
///
-/// \param Color1 : First color
-/// \param Color2 : Second color
+/// This operator compares two colors and check if they are equal.
///
-/// \return Component-wise saturated addition of the two colors
+/// \param left Left operand
+/// \param right Right operand
+///
+/// \return True if colors are equal, false if they are different
///
////////////////////////////////////////////////////////////
-SFML_API Color operator +(const Color& Color1, const Color& Color2);
+SFML_GRAPHICS_API bool operator ==(const Color& left, const Color& right);
////////////////////////////////////////////////////////////
-/// Operator * overload to modulate two colors
+/// \relates Color
+/// \brief Overload of the != operator
+///
+/// This operator compares two colors and check if they are different.
///
-/// \param Color1 : First color
-/// \param Color2 : Second color
+/// \param left Left operand
+/// \param right Right operand
///
-/// \return Component-wise multiplication of the two colors
+/// \return True if colors are different, false if they are equal
///
////////////////////////////////////////////////////////////
-SFML_API Color operator *(const Color& Color1, const Color& Color2);
+SFML_GRAPHICS_API bool operator !=(const Color& left, const Color& right);
+
+////////////////////////////////////////////////////////////
+/// \relates Color
+/// \brief Overload of the binary + operator
+///
+/// This operator returns the component-wise sum of two colors.
+/// Components that exceed 255 are clamped to 255.
+///
+/// \param left Left operand
+/// \param right Right operand
+///
+/// \return Result of \a left + \a right
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Color operator +(const Color& left, const Color& right);
+
+////////////////////////////////////////////////////////////
+/// \relates Color
+/// \brief 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].
+///
+/// \param left Left operand
+/// \param right Right operand
+///
+/// \return Result of \a left * \a right
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Color operator *(const Color& left, const Color& right);
+
+////////////////////////////////////////////////////////////
+/// \relates Color
+/// \brief 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.
+///
+/// \param left Left operand
+/// \param right Right operand
+///
+/// \return Reference to \a left
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Color& operator +=(Color& left, const Color& right);
+
+////////////////////////////////////////////////////////////
+/// \relates Color
+/// \brief 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].
+///
+/// \param left Left operand
+/// \param right Right operand
+///
+/// \return Reference to \a left
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Color& operator *=(Color& left, const Color& right);
} // namespace sf
#endif // SFML_COLOR_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Color
+/// \ingroup graphics
+///
+/// sf::Color is a simple color class composed of 4 components:
+/// \li Red
+/// \li Green
+/// \li Blue
+/// \li 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:
+///
+/// \code
+/// sf::Color color(255, 0, 0); // red
+/// color.r = 0; // make it black
+/// color.b = 128; // make it dark blue
+/// \endcode
+///
+/// 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:
+/// \code
+/// sf::Color black = sf::Color::Black;
+/// sf::Color white = sf::Color::White;
+/// sf::Color red = sf::Color::Red;
+/// sf::Color green = sf::Color::Green;
+/// sf::Color blue = sf::Color::Blue;
+/// sf::Color yellow = sf::Color::Yellow;
+/// sf::Color magenta = sf::Color::Magenta;
+/// sf::Color cyan = sf::Color::Cyan;
+/// sf::Color transparent = sf::Color::Transparent;
+/// \endcode
+///
+/// Colors can also be added and modulated (multiplied) using the
+/// overloaded operators + and *.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/ConvexShape.hpp b/include/SFML/Graphics/ConvexShape.hpp
new file mode 100644
index 0000000..03af57f
--- /dev/null
+++ b/include/SFML/Graphics/ConvexShape.hpp
@@ -0,0 +1,150 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CONVEXSHAPE_HPP
+#define SFML_CONVEXSHAPE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Shape.hpp>
+#include <vector>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Specialized shape representing a convex polygon
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API ConvexShape : public Shape
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// \param pointCount Number of points of the polygon
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit ConvexShape(unsigned int pointCount = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the number of points of the polygon
+ ///
+ /// \a count must be greater than 2 to define a valid shape.
+ ///
+ /// \param count New number of points of the polygon
+ ///
+ /// \see getPointCount
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPointCount(unsigned int count);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the number of points of the polygon
+ ///
+ /// \return Number of points of the polygon
+ ///
+ /// \see setPointCount
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual unsigned int getPointCount() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a index is out
+ /// of the valid range.
+ ///
+ /// \param index Index of the point to change, in range [0 .. getPointCount() - 1]
+ /// \param point New position of the point
+ ///
+ /// \see getPoint
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPoint(unsigned int index, const Vector2f& point);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the position of a point
+ ///
+ /// The result is undefined if \a index is out of the valid range.
+ ///
+ /// \param index Index of the point to get, in range [0 .. getPointCount() - 1]
+ ///
+ /// \return Position of the index-th point of the polygon
+ ///
+ /// \see setPoint
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2f getPoint(unsigned int index) const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ std::vector<Vector2f> m_points; ///< Points composing the convex polygon
+};
+
+} // namespace sf
+
+
+#endif // SFML_CONVEXSHAPE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::ConvexShape
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// sf::ConvexShape polygon;
+/// 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.setOutlineColor(sf::Color::Red);
+/// polygon.setOutlineThickness(5);
+/// polygon.setPosition(10, 20);
+/// ...
+/// window.draw(polygon);
+/// \endcode
+///
+/// \see sf::Shape, sf::RectangleShape, sf::CircleShape
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Drawable.hpp b/include/SFML/Graphics/Drawable.hpp
index a93ec57..accebfc 100755..100644
--- a/include/SFML/Graphics/Drawable.hpp
+++ b/include/SFML/Graphics/Drawable.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,9 +28,8 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Vector2.hpp>
-#include <SFML/Graphics/Color.hpp>
-#include <SFML/Graphics/Matrix3.hpp>
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/RenderStates.hpp>
namespace sf
@@ -38,324 +37,90 @@ namespace sf
class RenderTarget;
////////////////////////////////////////////////////////////
-/// Enumerate the blending modes for drawable objects
+/// \brief Abstract base class for objects that can be drawn
+/// to a render target
+///
////////////////////////////////////////////////////////////
-namespace Blend
-{
- enum Mode
- {
- Alpha, ///< Pixel = Src * a + Dest * (1 - a)
- Add, ///< Pixel = Src + Dest
- Multiply, ///< Pixel = Src * Dest
- None ///< No blending
- };
-}
-
-////////////////////////////////////////////////////////////
-/// Abstract base class for every object that can be drawn
-/// into a render window
-////////////////////////////////////////////////////////////
-class SFML_API Drawable
+class SFML_GRAPHICS_API Drawable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- /// \param Position : Position of the object (0, 0 by default)
- /// \param Scale : Scale factor (1, 1 by default)
- /// \param Rotation : Orientation, in degrees (0 by default)
- /// \param Col : Color of the object (white by default)
- ///
- ////////////////////////////////////////////////////////////
- Drawable(const Vector2f& Position = Vector2f(0, 0), const Vector2f& Scale = Vector2f(1, 1), float Rotation = 0.f, const Color& Col = Color(255, 255, 255, 255));
-
- ////////////////////////////////////////////////////////////
- /// Virtual destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~Drawable();
-
- ////////////////////////////////////////////////////////////
- /// Set the position of the object (take 2 values)
- ///
- /// \param X : New X coordinate
- /// \param Y : New Y coordinate
- ///
- ////////////////////////////////////////////////////////////
- void SetPosition(float X, float Y);
-
- ////////////////////////////////////////////////////////////
- /// Set the position of the object (take a 2D vector)
- ///
- /// \param Position : New position
- ///
- ////////////////////////////////////////////////////////////
- void SetPosition(const Vector2f& Position);
-
- ////////////////////////////////////////////////////////////
- /// Set the X position of the object
- ///
- /// \param X : New X coordinate
- ///
- ////////////////////////////////////////////////////////////
- void SetX(float X);
-
- ////////////////////////////////////////////////////////////
- /// Set the Y position of the object
- ///
- /// \param Y : New Y coordinate
- ///
- ////////////////////////////////////////////////////////////
- void SetY(float Y);
-
- ////////////////////////////////////////////////////////////
- /// Set the scale of the object (take 2 values)
- ///
- /// \param ScaleX : New horizontal scale (must be strictly positive)
- /// \param ScaleY : New vertical scale (must be strictly positive)
- ///
- ////////////////////////////////////////////////////////////
- void SetScale(float ScaleX, float ScaleY);
-
- ////////////////////////////////////////////////////////////
- /// Set the scale of the object (take a 2D vector)
- ///
- /// \param Scale : New scale (both values must be strictly positive)
- ///
- ////////////////////////////////////////////////////////////
- void SetScale(const Vector2f& Scale);
-
- ////////////////////////////////////////////////////////////
- /// Set the X scale factor of the object
- ///
- /// \param X : New X scale factor
+ /// \brief Virtual destructor
///
////////////////////////////////////////////////////////////
- void SetScaleX(float FactorX);
-
- ////////////////////////////////////////////////////////////
- /// Set the Y scale factor of the object
- ///
- /// \param Y : New Y scale factor
- ///
- ////////////////////////////////////////////////////////////
- void SetScaleY(float FactorY);
-
- ////////////////////////////////////////////////////////////
- /// Set the center of the object, in coordinates relative to the
- /// top-left of the object (take 2 values).
- /// The default center is (0, 0)
- ///
- /// \param CenterX : X coordinate of the center
- /// \param CenterY : Y coordinate of the center
- ///
- ////////////////////////////////////////////////////////////
- void SetCenter(float CenterX, float CenterY);
-
- ////////////////////////////////////////////////////////////
- /// Set the center of the object, in coordinates relative to the
- /// top-left of the object (take a 2D vector).
- /// The default center is (0, 0)
- ///
- /// \param Center : New center
- ///
- ////////////////////////////////////////////////////////////
- void SetCenter(const Vector2f& Center);
-
- ////////////////////////////////////////////////////////////
- /// Set the orientation of the object
- ///
- /// \param Rotation : Angle of rotation, in degrees
- ///
- ////////////////////////////////////////////////////////////
- void SetRotation(float Rotation);
-
- ////////////////////////////////////////////////////////////
- /// Set the color of the object.
- /// The default color is white
- ///
- /// \param Col : New color
- ///
- ////////////////////////////////////////////////////////////
- void SetColor(const Color& Col);
-
- ////////////////////////////////////////////////////////////
- /// Set the blending mode for the object.
- /// The default blend mode is Blend::Alpha
- ///
- /// \param Mode : New blending mode
- ///
- ////////////////////////////////////////////////////////////
- void SetBlendMode(Blend::Mode Mode);
-
- ////////////////////////////////////////////////////////////
- /// Get the position of the object
- ///
- /// \return Current position
- ///
- ////////////////////////////////////////////////////////////
- const Vector2f& GetPosition() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the current scale of the object
- ///
- /// \return Current scale factor (always positive)
- ///
- ////////////////////////////////////////////////////////////
- const Vector2f& GetScale() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the center of the object
- ///
- /// \return Current position of the center
- ///
- ////////////////////////////////////////////////////////////
- const Vector2f& GetCenter() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the orientation of the object.
- /// Rotation is always in the range [0, 360]
- ///
- /// \return Current rotation, in degrees
- ///
- ////////////////////////////////////////////////////////////
- float GetRotation() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the color of the object
- ///
- /// \return Current color
- ///
- ////////////////////////////////////////////////////////////
- const Color& GetColor() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the current blending mode
- ///
- /// \return Current blending mode
- ///
- ////////////////////////////////////////////////////////////
- Blend::Mode GetBlendMode() const;
-
- ////////////////////////////////////////////////////////////
- /// Move the object of a given offset (take 2 values)
- ///
- /// \param OffsetX : X offset
- /// \param OffsetY : Y offset
- ///
- ////////////////////////////////////////////////////////////
- void Move(float OffsetX, float OffsetY);
-
- ////////////////////////////////////////////////////////////
- /// Move the object of a given offset (take a 2D vector)
- ///
- /// \param Offset : Amount of units to move the object of
- ///
- ////////////////////////////////////////////////////////////
- void Move(const Vector2f& Offset);
-
- ////////////////////////////////////////////////////////////
- /// Scale the object (take 2 values)
- ///
- /// \param FactorX : Scaling factor on X (must be strictly positive)
- /// \param FactorY : Scaling factor on Y (must be strictly positive)
- ///
- ////////////////////////////////////////////////////////////
- void Scale(float FactorX, float FactorY);
-
- ////////////////////////////////////////////////////////////
- /// Scale the object (take a 2D vector)
- ///
- /// \param Factor : Scaling factors (both values must be strictly positive)
- ///
- ////////////////////////////////////////////////////////////
- void Scale(const Vector2f& Factor);
-
- ////////////////////////////////////////////////////////////
- /// Rotate the object
- ///
- /// \param Angle : Angle of rotation, in degrees
- ///
- ////////////////////////////////////////////////////////////
- void Rotate(float Angle);
-
- ////////////////////////////////////////////////////////////
- /// Transform a point from global coordinates into local coordinates
- /// (ie it applies the inverse of object's center, translation, rotation and scale to the point)
- ///
- /// \param Point : Point to transform
- ///
- /// \return Transformed point
- ///
- ////////////////////////////////////////////////////////////
- sf::Vector2f TransformToLocal(const sf::Vector2f& Point) const;
-
- ////////////////////////////////////////////////////////////
- /// Transform a point from local coordinates into global coordinates
- /// (ie it applies the object's center, translation, rotation and scale to the point)
- ///
- /// \param Point : Point to transform
- ///
- /// \return Transformed point
- ///
- ////////////////////////////////////////////////////////////
- sf::Vector2f TransformToGlobal(const sf::Vector2f& Point) const;
+ virtual ~Drawable() {}
protected :
- ////////////////////////////////////////////////////////////
- /// Get the transform matrix of the drawable
- ///
- /// \return Transform matrix
- ///
- ////////////////////////////////////////////////////////////
- const Matrix3& GetMatrix() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the inverse transform matrix of the drawable
- ///
- /// \return Inverse transform matrix
- ///
- ////////////////////////////////////////////////////////////
- const Matrix3& GetInverseMatrix() const;
-
-private :
-
friend class RenderTarget;
////////////////////////////////////////////////////////////
- /// Draw the object into the specified window
- ///
- /// \param Target : Target into which render the object
+ /// \brief Draw the object to a render target
///
- ////////////////////////////////////////////////////////////
- void Draw(RenderTarget& Target) const;
-
- ////////////////////////////////////////////////////////////
- /// Render the specific geometry of the object
+ /// This is a pure virtual function that has to be implemented
+ /// by the derived class to define how the drawable should be
+ /// drawn.
///
- /// \param Target : Target into which render the object
+ /// \param target Render target to draw to
+ /// \param states Current render states
///
////////////////////////////////////////////////////////////
- virtual void Render(RenderTarget& Target) const = 0;
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- Vector2f myPosition; ///< Position of the object on screen
- Vector2f myScale; ///< Scale of the object
- Vector2f myCenter; ///< Origin of translation / rotation / scaling of the object
- float myRotation; ///< Orientation of the object, in degrees
- Color myColor; ///< Overlay color of the object
- Blend::Mode myBlendMode; ///< Blending mode
- mutable bool myNeedUpdate; ///< Do we need to recompute the transform matrix ?
- mutable bool myInvNeedUpdate; ///< Do we need to recompute the inverse transform matrix ?
- mutable Matrix3 myMatrix; ///< Precomputed transform matrix gathering the translation / rotation / scale / center
- mutable Matrix3 myInvMatrix; ///< Precomputed inverse transform matrix gathering the translation / rotation / scale / center
+ virtual void draw(RenderTarget& target, RenderStates states) const = 0;
};
} // namespace sf
#endif // SFML_DRAWABLE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Drawable
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// 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;
+/// };
+/// \endcode
+///
+/// \see sf::RenderTarget
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Export.hpp b/include/SFML/Graphics/Export.hpp
new file mode 100644
index 0000000..eb76ae8
--- /dev/null
+++ b/include/SFML/Graphics/Export.hpp
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_GRAPHICS_EXPORT_HPP
+#define SFML_GRAPHICS_EXPORT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+////////////////////////////////////////////////////////////
+// Define portable import / export macros
+////////////////////////////////////////////////////////////
+#if defined(SFML_GRAPHICS_EXPORTS)
+
+ #define SFML_GRAPHICS_API SFML_API_EXPORT
+
+#else
+
+ #define SFML_GRAPHICS_API SFML_API_IMPORT
+
+#endif
+
+
+#endif // SFML_GRAPHICS_EXPORT_HPP
diff --git a/include/SFML/Graphics/Font.hpp b/include/SFML/Graphics/Font.hpp
index 866b974..d3b1955 100755..100644
--- a/include/SFML/Graphics/Font.hpp
+++ b/include/SFML/Graphics/Font.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,118 +28,334 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
-#include <SFML/System/Vector2.hpp>
-#include <SFML/System/Unicode.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Glyph.hpp>
-#include <SFML/Graphics/Image.hpp>
+#include <SFML/Graphics/Texture.hpp>
#include <SFML/Graphics/Rect.hpp>
+#include <SFML/System/Vector2.hpp>
+#include <SFML/System/String.hpp>
#include <map>
#include <string>
+#include <vector>
namespace sf
{
-class String;
+class InputStream;
-namespace priv
-{
-class FontLoader;
-}
////////////////////////////////////////////////////////////
-/// Font is the low-level class for loading and
-/// manipulating character fonts. This class is meant to
-/// be used by sf::String
+/// \brief Class for loading and manipulating character fonts
+///
////////////////////////////////////////////////////////////
-class SFML_API Font : public Resource<Font>
+class SFML_GRAPHICS_API Font
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructor defines an empty font
///
////////////////////////////////////////////////////////////
Font();
////////////////////////////////////////////////////////////
- /// Load the font from a file
+ /// \brief Copy constructor
+ ///
+ /// \param copy Instance to copy
+ ///
+ ////////////////////////////////////////////////////////////
+ Font(const Font& copy);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ /// Cleans up all the internal resources used by the font
+ ///
+ ////////////////////////////////////////////////////////////
+ ~Font();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 know nothing about the standard
+ /// fonts installed on the user's system, thus you can't
+ /// load them directly.
+ ///
+ /// \param filename Path of the font file to load
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromMemory, loadFromStream
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromFile(const std::string& filename);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a data has to remain
+ /// valid as long as the font is used.
+ ///
+ /// \param data Pointer to the file data in memory
+ /// \param sizeInBytes Size of the data to load, in bytes
///
- /// \param Filename : Font file to load
- /// \param CharSize : Size of characters in bitmap - the bigger, the higher quality (30 by default)
- /// \param Charset : Characters set to generate (by default, contains the ISO-8859-1 printable characters)
+ /// \return True if loading succeeded, false if it failed
///
- /// \return True if loading was successful
+ /// \see loadFromFile, loadFromStream
///
////////////////////////////////////////////////////////////
- bool LoadFromFile(const std::string& Filename, unsigned int CharSize = 30, const Unicode::Text& Charset = ourDefaultCharset);
+ bool loadFromMemory(const void* data, std::size_t sizeInBytes);
////////////////////////////////////////////////////////////
- /// Load the font from a file in memory
+ /// \brief Load the font from a custom stream
///
- /// \param Data : Pointer to the data to load
- /// \param SizeInBytes : Size of the data, in bytes
- /// \param CharSize : Size of characters in bitmap - the bigger, the higher quality (30 by default)
- /// \param Charset : Characters set to generate (by default, contains the ISO-8859-1 printable characters)
+ /// 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 \a stream have to remain
+ /// valid as long as the font is used.
///
- /// \return True if loading was successful
+ /// \param stream Source stream to read from
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromMemory
///
////////////////////////////////////////////////////////////
- bool LoadFromMemory(const char* Data, std::size_t SizeInBytes, unsigned int CharSize = 30, const Unicode::Text& Charset = ourDefaultCharset);
+ bool loadFromStream(InputStream& stream);
////////////////////////////////////////////////////////////
- /// Get the base size of characters in the font;
- /// All glyphs dimensions are based on this value
+ /// \brief Retrieve a glyph of the font
+ ///
+ /// \param codePoint Unicode code point of the character to get
+ /// \param characterSize Reference character size
+ /// \param bold Retrieve the bold version or the regular one?
///
- /// \return Base size of characters
+ /// \return The glyph corresponding to \a codePoint and \a characterSize
///
////////////////////////////////////////////////////////////
- unsigned int GetCharacterSize() const;
+ const Glyph& getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const;
////////////////////////////////////////////////////////////
- /// Get the description of a glyph (character)
- /// given by its unicode value
+ /// \brief Get the kerning offset of two glyphs
///
- /// \param CodePoint : Unicode value of the character to get
+ /// 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.
///
- /// \return Glyph's visual settings, or an invalid glyph if character not found
+ /// \param first Unicode code point of the first character
+ /// \param second Unicode code point of the second character
+ /// \param characterSize Reference character size
+ ///
+ /// \return Kerning value for \a first and \a second, in pixels
///
////////////////////////////////////////////////////////////
- const Glyph& GetGlyph(Uint32 CodePoint) const;
+ int getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const;
////////////////////////////////////////////////////////////
- /// Get the image containing the rendered characters (glyphs)
+ /// \brief Get the line spacing
+ ///
+ /// Line spacing is the vertical offset to apply between two
+ /// consecutive lines of text.
///
- /// \return Image containing glyphs
+ /// \param characterSize Reference character size
+ ///
+ /// \return Line spacing, in pixels
///
////////////////////////////////////////////////////////////
- const Image& GetImage() const;
+ int getLineSpacing(unsigned int characterSize) const;
////////////////////////////////////////////////////////////
- /// Get the SFML default built-in font (Arial)
+ /// \brief 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.
+ ///
+ /// \param characterSize Reference character size
+ ///
+ /// \return Texture containing the glyphs of the requested size
+ ///
+ ////////////////////////////////////////////////////////////
+ const Texture& getTexture(unsigned int characterSize) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of assignment operator
+ ///
+ /// \param right Instance to assign
///
- /// \return Instance of the default font
+ /// \return Reference to self
///
////////////////////////////////////////////////////////////
- static const Font& GetDefaultFont();
+ Font& operator =(const Font& right);
private :
- friend class priv::FontLoader;
+ ////////////////////////////////////////////////////////////
+ /// \brief Structure defining a row of glyphs
+ ///
+ ////////////////////////////////////////////////////////////
+ struct Row
+ {
+ Row(unsigned int rowTop, unsigned int rowHeight) : width(0), top(rowTop), height(rowHeight) {}
+
+ unsigned int width; ///< Current width of the row
+ unsigned int top; ///< Y position of the row into the texture
+ unsigned int height; ///< Height of the row
+ };
+
+ ////////////////////////////////////////////////////////////
+ // Types
+ ////////////////////////////////////////////////////////////
+ typedef std::map<Uint32, Glyph> GlyphTable; ///< Table mapping a codepoint to its glyph
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Structure defining a page of glyphs
+ ///
+ ////////////////////////////////////////////////////////////
+ struct Page
+ {
+ Page();
+
+ GlyphTable glyphs; ///< Table mapping code points to their corresponding glyph
+ sf::Texture texture; ///< Texture containing the pixels of the glyphs
+ unsigned int nextRow; ///< Y position of the next new row in the texture
+ std::vector<Row> rows; ///< List containing the position of all the existing rows
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Free all the internal resources
+ ///
+ ////////////////////////////////////////////////////////////
+ void cleanup();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load a new glyph and store it in the cache
+ ///
+ /// \param codePoint Unicode code point of the character to load
+ /// \param characterSize Reference character size
+ /// \param bold Retrieve the bold version or the regular one?
+ ///
+ /// \return The glyph corresponding to \a codePoint and \a characterSize
+ ///
+ ////////////////////////////////////////////////////////////
+ Glyph loadGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const;
////////////////////////////////////////////////////////////
- // Static member data
+ /// \brief Find a suitable rectangle within the texture for a glyph
+ ///
+ /// \param page Page of glyphs to search in
+ /// \param width Width of the rectangle
+ /// \param height Height of the rectangle
+ ///
+ /// \return Found rectangle within the texture
+ ///
////////////////////////////////////////////////////////////
- static Uint32 ourDefaultCharset[]; ///< The default charset (all printable ISO-8859-1 characters)
+ IntRect findGlyphRect(Page& page, unsigned int width, unsigned int height) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Make sure that the given size is the current one
+ ///
+ /// \param characterSize Reference character size
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ bool setCurrentSize(unsigned int characterSize) const;
+
+ ////////////////////////////////////////////////////////////
+ // Types
+ ////////////////////////////////////////////////////////////
+ typedef std::map<unsigned int, Page> PageTable; ///< Table mapping a character size to its page (texture)
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- Image myTexture; ///< Texture holding the bitmap font
- unsigned int myCharSize; ///< Size of characters in the bitmap font
- std::map<Uint32, Glyph> myGlyphs; ///< Rendering settings of each character (glyph)
+ void* m_library; ///< Pointer to the internal library interface (it is typeless to avoid exposing implementation details)
+ void* m_face; ///< Pointer to the internal font face (it is typeless to avoid exposing implementation details)
+ void* m_streamRec; ///< Pointer to the stream rec instance (it is typeless to avoid exposing implementation details)
+ int* m_refCount; ///< Reference counter used by implicit sharing
+ mutable PageTable m_pages; ///< Table containing the glyphs pages by character size
+ mutable std::vector<Uint8> m_pixelBuffer; ///< Pixel buffer holding a glyph's pixels before being written to the texture
};
} // namespace sf
#endif // SFML_FONT_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Font
+/// \ingroup graphics
+///
+/// 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:
+/// \li Global metrics, such as the line spacing
+/// \li Per-glyph metrics, such as bounding box or kerning
+/// \li 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:
+/// \code
+/// // 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);
+/// text1.setStyle(sf::Text::Regular);
+///
+/// // Create another text using the same font, but with different parameters
+/// sf::Text text2;
+/// text2.setFont(font);
+/// text2.setCharacterSize(50);
+/// text1.setStyle(sf::Text::Italic);
+/// \endcode
+///
+/// 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.
+///
+/// \see sf::Text
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Glyph.hpp b/include/SFML/Graphics/Glyph.hpp
index ec1b886..d97616f 100755..100644
--- a/include/SFML/Graphics/Glyph.hpp
+++ b/include/SFML/Graphics/Glyph.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,34 +28,52 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Rect.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Structure describing a glyph (a visual character)
+/// \brief Structure describing a glyph
+///
////////////////////////////////////////////////////////////
-class SFML_API Glyph
+class SFML_GRAPHICS_API Glyph
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- Glyph() : Advance(0) {}
+ Glyph() : advance(0) {}
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- int Advance; ///< Offset to move horizontically to the next character
- IntRect Rectangle; ///< Bounding rectangle of the glyph, in relative coordinates
- FloatRect TexCoords; ///< Texture coordinates of the glyph inside the bitmap font
+ int advance; ///< Offset to move horizontically to the next character
+ IntRect bounds; ///< Bounding rectangle of the glyph, in coordinates relative to the baseline
+ IntRect textureRect; ///< Texture coordinates of the glyph inside the font's texture
};
} // namespace sf
#endif // SFML_GLYPH_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Glyph
+/// \ingroup graphics
+///
+/// A glyph is the visual representation of a character.
+///
+/// The sf::Glyph structure provides the information needed
+/// to handle the glyph:
+/// \li its coordinates in the font's texture
+/// \li its bounding rectangle
+/// \li the offset to apply to get the starting position of the next glyph
+///
+/// \see sf::Font
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Image.hpp b/include/SFML/Graphics/Image.hpp
index c2f5c89..0b61d6c 100755..100644
--- a/include/SFML/Graphics/Image.hpp
+++ b/include/SFML/Graphics/Image.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,7 +28,7 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Color.hpp>
#include <SFML/Graphics/Rect.hpp>
#include <string>
@@ -37,296 +37,282 @@
namespace sf
{
-class RenderWindow;
+class InputStream;
////////////////////////////////////////////////////////////
-/// Image is the low-level class for loading and
-/// manipulating images
+/// \brief Class for loading, manipulating and saving images
+///
////////////////////////////////////////////////////////////
-class SFML_API Image : public Resource<Image>
+class SFML_GRAPHICS_API Image
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates an empty image.
///
////////////////////////////////////////////////////////////
Image();
////////////////////////////////////////////////////////////
- /// Copy constructor
+ /// \brief Create the image and fill it with a unique color
///
- /// \param Copy : instance to copy
+ /// \param width Width of the image
+ /// \param height Height of the image
+ /// \param color Fill color
///
////////////////////////////////////////////////////////////
- Image(const Image& Copy);
+ void create(unsigned int width, unsigned int height, const Color& color = Color(0, 0, 0));
////////////////////////////////////////////////////////////
- /// Construct an empty image
- ///
- /// \param Width : Image width
- /// \param Height : Image height
- /// \param Col : Image color (black by default)
+ /// \brief Create the image from an array of pixels
///
- ////////////////////////////////////////////////////////////
- Image(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
-
- ////////////////////////////////////////////////////////////
- /// Construct the image from pixels in memory
+ /// The \a pixel array is assumed to contain 32-bits RGBA pixels,
+ /// and have the given \a width and \a height. If not, this is
+ /// an undefined behaviour.
+ /// If \a pixels is null, an empty image is created.
///
- /// \param Width : Image width
- /// \param Height : Image height
- /// \param Data : Pointer to the pixels in memory (assumed format is RGBA)
+ /// \param width Width of the image
+ /// \param height Height of the image
+ /// \param pixels Array of pixels to copy to the image
///
////////////////////////////////////////////////////////////
- Image(unsigned int Width, unsigned int Height, const Uint8* Data);
+ void create(unsigned int width, unsigned int height, const Uint8* pixels);
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Load the image from a file on disk
///
- ////////////////////////////////////////////////////////////
- ~Image();
-
- ////////////////////////////////////////////////////////////
- /// Load the image from a file
+ /// 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.
///
- /// \param Filename : Path of the image file to load
+ /// \param filename Path of the image file to load
///
/// \return True if loading was successful
///
- ////////////////////////////////////////////////////////////
- bool LoadFromFile(const std::string& Filename);
-
- ////////////////////////////////////////////////////////////
- /// Load the image from a file in memory
- ///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- ///
- /// \return True if loading was successful
+ /// \see loadFromMemory, loadFromStream, saveToFile
///
////////////////////////////////////////////////////////////
- bool LoadFromMemory(const char* Data, std::size_t SizeInBytes);
+ bool loadFromFile(const std::string& filename);
////////////////////////////////////////////////////////////
- /// Load the image directly from an array of pixels
+ /// \brief Load the image from a file in memory
///
- /// \param Width : Image width
- /// \param Height : Image height
- /// \param Data : Pointer to the pixels in memory (assumed format is RGBA)
+ /// 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.
///
- /// \return True if loading was successful
+ /// \param data Pointer to the file data in memory
+ /// \param size Size of the data to load, in bytes
///
- ////////////////////////////////////////////////////////////
- bool LoadFromPixels(unsigned int Width, unsigned int Height, const Uint8* Data);
-
- ////////////////////////////////////////////////////////////
- /// Save the content of the image to a file
- ///
- /// \param Filename : Path of the file to save (overwritten if already exist)
+ /// \return True if loading was successful
///
- /// \return True if saving was successful
+ /// \see loadFromFile, loadFromStream
///
////////////////////////////////////////////////////////////
- bool SaveToFile(const std::string& Filename) const;
+ bool loadFromMemory(const void* data, std::size_t size);
////////////////////////////////////////////////////////////
- /// Create an empty image
+ /// \brief Load the image from a custom stream
///
- /// \param Width : Image width
- /// \param Height : Image height
- /// \param Col : Image color (black by default)
- ///
- /// \return True if creation was successful
- ///
- ////////////////////////////////////////////////////////////
- bool Create(unsigned int Width, unsigned int Height, Color Col = Color(0, 0, 0, 255));
-
- ////////////////////////////////////////////////////////////
- /// Create transparency mask from a specified colorkey
+ /// 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.
///
- /// \param ColorKey : Color to become transparent
- /// \param Alpha : Alpha value to use for transparent pixels (0 by default)
+ /// \param stream Source stream to read from
///
- ////////////////////////////////////////////////////////////
- void CreateMaskFromColor(Color ColorKey, Uint8 Alpha = 0);
-
- ////////////////////////////////////////////////////////////
- /// Copy pixels from another image onto this one.
- /// This function does a slow pixel copy and should only
- /// be used at initialization time
+ /// \return True if loading was successful
///
- /// \param Source : Source image to copy
- /// \param DestX : X coordinate of the destination position
- /// \param DestY : Y coordinate of the destination position
- /// \param SourceRect : Sub-rectangle of the source image to copy (empty by default - entire image)
- /// \param ApplyAlpha : Should the copy take in account the source transparency? (false by default)
+ /// \see loadFromFile, loadFromMemory
///
////////////////////////////////////////////////////////////
- void Copy(const Image& Source, unsigned int DestX, unsigned int DestY, const IntRect& SourceRect = IntRect(0, 0, 0, 0), bool ApplyAlpha = false);
+ bool loadFromStream(InputStream& stream);
////////////////////////////////////////////////////////////
- /// Create the image from the current contents of the
- /// given window
+ /// \brief Save the image to a file on disk
///
- /// \param Window : Window to capture
- /// \param SourceRect : Sub-rectangle of the screen to copy (empty by default - entire image)
+ /// 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.
///
- /// \return True if copy was successful
+ /// \param filename Path of the file to save
///
- ////////////////////////////////////////////////////////////
- bool CopyScreen(RenderWindow& Window, const IntRect& SourceRect = IntRect(0, 0, 0, 0));
-
- ////////////////////////////////////////////////////////////
- /// Change the color of a pixel
+ /// \return True if saving was successful
///
- /// \param X : X coordinate of pixel in the image
- /// \param Y : Y coordinate of pixel in the image
- /// \param Col : New color for pixel (X, Y)
+ /// \see create, loadFromFile, loadFromMemory
///
////////////////////////////////////////////////////////////
- void SetPixel(unsigned int X, unsigned int Y, const Color& Col);
+ bool saveToFile(const std::string& filename) const;
////////////////////////////////////////////////////////////
- /// Get a pixel from the image
- ///
- /// \param X : X coordinate of pixel in the image
- /// \param Y : Y coordinate of pixel in the image
+ /// \brief Return the size (width and height) of the image
///
- /// \return Color of pixel (X, Y)
+ /// \return Size of the image, in pixels
///
////////////////////////////////////////////////////////////
- const Color& GetPixel(unsigned int X, unsigned int Y) const;
+ Vector2u getSize() const;
////////////////////////////////////////////////////////////
- /// Get a read-only pointer to the array of pixels (RGBA 8 bits integers components)
- /// Array size is GetWidth() x GetHeight() x 4
- /// This pointer becomes invalid if you reload or resize the image
+ /// \brief Create a transparency mask from a specified color-key
///
- /// \return Const pointer to the array of pixels
+ /// This function sets the alpha value of every pixel matching
+ /// the given color to \a alpha (0 by default), so that they
+ /// become transparent.
///
- ////////////////////////////////////////////////////////////
- const Uint8* GetPixelsPtr() const;
-
- ////////////////////////////////////////////////////////////
- /// Bind the image for rendering
+ /// \param color Color to make transparent
+ /// \param alpha Alpha value to assign to transparent pixels
///
////////////////////////////////////////////////////////////
- void Bind() const;
+ void createMaskFromColor(const Color& color, Uint8 alpha = 0);
////////////////////////////////////////////////////////////
- /// Enable or disable image smooth filter.
- /// This parameter is enabled by default
+ /// \brief Copy pixels from another image onto this one
///
- /// \param Smooth : True to enable smoothing filter, false to disable it
+ /// 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.
///
- ////////////////////////////////////////////////////////////
- void SetSmooth(bool Smooth);
-
- ////////////////////////////////////////////////////////////
- /// Return the width of the image
+ /// If \a sourceRect is empty, the whole image is copied.
+ /// If \a 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.
///
- /// \return Width in pixels
+ /// \param source Source image to copy
+ /// \param destX X coordinate of the destination position
+ /// \param destY Y coordinate of the destination position
+ /// \param sourceRect Sub-rectangle of the source image to copy
+ /// \param applyAlpha Should the copy take in account the source transparency?
///
////////////////////////////////////////////////////////////
- unsigned int GetWidth() const;
+ void copy(const Image& source, unsigned int destX, unsigned int destY, const IntRect& sourceRect = IntRect(0, 0, 0, 0), bool applyAlpha = false);
////////////////////////////////////////////////////////////
- /// Return the height of the image
+ /// \brief Change the color of a pixel
///
- /// \return Height in pixels
+ /// This function doesn't check the validity of the pixel
+ /// coordinates, using out-of-range values will result in
+ /// an undefined behaviour.
///
- ////////////////////////////////////////////////////////////
- unsigned int GetHeight() const;
-
- ////////////////////////////////////////////////////////////
- /// Tells whether the smooth filtering is enabled or not
+ /// \param x X coordinate of pixel to change
+ /// \param y Y coordinate of pixel to change
+ /// \param color New color of the pixel
///
- /// \return True if image smoothing is enabled
+ /// \see getPixel
///
////////////////////////////////////////////////////////////
- bool IsSmooth() const;
+ void setPixel(unsigned int x, unsigned int y, const Color& color);
////////////////////////////////////////////////////////////
- /// Convert a subrect expressed in pixels, into float
- /// texture coordinates
- ///
- /// \param Rect : Sub-rectangle of image to convert
+ /// \brief Get the color of a pixel
///
- /// \return Texture coordinates corresponding to the sub-rectangle
+ /// This function doesn't check the validity of the pixel
+ /// coordinates, using out-of-range values will result in
+ /// an undefined behaviour.
///
- ////////////////////////////////////////////////////////////
- FloatRect GetTexCoords(const IntRect& Rect) const;
-
- ////////////////////////////////////////////////////////////
- /// Get a valid texture size according to hardware support
+ /// \param x X coordinate of pixel to get
+ /// \param y Y coordinate of pixel to get
///
- /// \param Size : Size to convert
+ /// \return Color of the pixel at coordinates (x, y)
///
- /// \return Valid nearest size (greater than or equal to specified size)
+ /// \see setPixel
///
////////////////////////////////////////////////////////////
- static unsigned int GetValidTextureSize(unsigned int Size);
+ Color getPixel(unsigned int x, unsigned int y) const;
////////////////////////////////////////////////////////////
- /// Assignment operator
+ /// \brief Get a read-only pointer to the array of pixels
///
- /// \param Other : instance to assign
+ /// 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.
///
- /// \return Reference to the image
+ /// \return Read-only pointer to the array of pixels
///
////////////////////////////////////////////////////////////
- Image& operator =(const Image& Other);
-
-private :
+ const Uint8* getPixelsPtr() const;
////////////////////////////////////////////////////////////
- /// Create the OpenGL texture
- ///
- /// \return True if texture has been successfully created
+ /// \brief Flip the image horizontally (left <-> right)
///
////////////////////////////////////////////////////////////
- bool CreateTexture();
-
- ////////////////////////////////////////////////////////////
- /// Make sure the texture in video memory is updated with the
- /// array of pixels
- ////////////////////////////////////////////////////////////
- void EnsureTextureUpdate() const;
-
- ////////////////////////////////////////////////////////////
- /// Make sure the array of pixels is updated with the
- /// texture in video memory
- ////////////////////////////////////////////////////////////
- void EnsureArrayUpdate() const;
+ void flipHorizontally();
////////////////////////////////////////////////////////////
- /// Reset the image attributes
+ /// \brief Flip the image vertically (top <-> bottom)
///
////////////////////////////////////////////////////////////
- void Reset();
+ void flipVertically();
- ////////////////////////////////////////////////////////////
- /// Destroy the OpenGL texture
- ///
- ////////////////////////////////////////////////////////////
- void DestroyTexture();
+private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- unsigned int myWidth; ///< Image width
- unsigned int myHeight; ///< Image Height
- unsigned int myTextureWidth; ///< Actual texture width (can be greater than image width because of padding)
- unsigned int myTextureHeight; ///< Actual texture height (can be greater than image height because of padding)
- unsigned int myTexture; ///< Internal texture identifier
- bool myIsSmooth; ///< Status of the smooth filter
- mutable std::vector<Color> myPixels; ///< Pixels of the image
- mutable bool myNeedTextureUpdate; ///< Status of synchronization between pixels in central memory and the internal texture un video memory
- mutable bool myNeedArrayUpdate; ///< Status of synchronization between pixels in central memory and the internal texture un video memory
+ Vector2u m_size; ///< Image size
+ std::vector<Uint8> m_pixels; ///< Pixels of the image
};
} // namespace sf
#endif // SFML_IMAGE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Image
+/// \ingroup graphics
+///
+/// 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 loadFromPixels) 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:
+/// \code
+/// // 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;
+/// \endcode
+///
+/// \see sf::Texture
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Matrix3.hpp b/include/SFML/Graphics/Matrix3.hpp
deleted file mode 100755
index eeea1b0..0000000
--- a/include/SFML/Graphics/Matrix3.hpp
+++ /dev/null
@@ -1,148 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_MATRIX3_HPP
-#define SFML_MATRIX3_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <SFML/System/Vector2.hpp>
-#include <math.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Utility class to manipulate 3x3 matrices representing
-/// 2D transformations
-////////////////////////////////////////////////////////////
-class SFML_API Matrix3
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor (builds an identity matrix)
- ///
- ////////////////////////////////////////////////////////////
- Matrix3();
-
- ////////////////////////////////////////////////////////////
- /// Construct a matrix from its 9 elements
- ///
- ////////////////////////////////////////////////////////////
- Matrix3(float a00, float a01, float a02,
- float a10, float a11, float a12,
- float a20, float a21, float a22);
-
- ////////////////////////////////////////////////////////////
- /// Build a matrix from a set of transformations
- ///
- /// \param Center : Origin for the transformations
- /// \param Translation : Translation offset
- /// \param Rotation : Rotation angle in degrees
- /// \param Scale : Scaling factors
- ///
- ////////////////////////////////////////////////////////////
- void SetFromTransformations(const Vector2f& Center, const Vector2f& Translation, float Rotation, const Vector2f& Scale);
-
- ////////////////////////////////////////////////////////////
- /// Transform a point by the matrix
- ///
- /// \param Point : Point to transform
- ///
- /// \return Transformed point
- ///
- ////////////////////////////////////////////////////////////
- Vector2f Transform(const Vector2f& Point) const;
-
- ////////////////////////////////////////////////////////////
- /// Return the inverse of the matrix
- ///
- /// \return A new matrix which is the inverse of this
- ///
- ////////////////////////////////////////////////////////////
- Matrix3 GetInverse() const;
-
- ////////////////////////////////////////////////////////////
- /// Return the elements of the matrix as a 4x4,
- /// in an array of 16 floats
- ///
- /// \return Pointer to the 4x4 matrix elements
- ///
- ////////////////////////////////////////////////////////////
- const float* Get4x4Elements() const;
-
- ////////////////////////////////////////////////////////////
- /// Operator () overloads to access the matrix elements
- ///
- /// \param Row : Element row (0 based)
- /// \param Col : Element column (0 based)
- ///
- /// \return Matrix element (Row, Col)
- ///
- ////////////////////////////////////////////////////////////
- float operator ()(unsigned int Row, unsigned int Col) const;
- float& operator ()(unsigned int Row, unsigned int Col);
-
- ////////////////////////////////////////////////////////////
- /// Operator * overload to multiply two matrices
- ///
- /// \param Mat : Matrix to multiply
- ///
- /// \return this * Mat
- ///
- ////////////////////////////////////////////////////////////
- Matrix3 operator *(const Matrix3& Mat) const;
-
- ////////////////////////////////////////////////////////////
- /// Operator *= overload to multiply-assign two matrices
- ///
- /// \param Mat : Matrix to multiply
- ///
- /// \return this * Mat
- ///
- ////////////////////////////////////////////////////////////
- Matrix3& operator *=(const Matrix3& Mat);
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static const Matrix3 Identity; ///< Identity matrix
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- float myData[16]; /// Matrix elements (we directly store it as a 4x4 matrix for optimization purpose)
-};
-
-#include <SFML/Graphics/Matrix3.inl>
-
-} // namespace sf
-
-
-#endif // SFML_MATRIX3_HPP
diff --git a/include/SFML/Graphics/Matrix3.inl b/include/SFML/Graphics/Matrix3.inl
deleted file mode 100755
index 4499415..0000000
--- a/include/SFML/Graphics/Matrix3.inl
+++ /dev/null
@@ -1,186 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFGE - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor (builds an identity matrix)
-////////////////////////////////////////////////////////////
-inline Matrix3::Matrix3()
-{
- myData[0] = 1.f; myData[4] = 0.f; myData[8] = 0.f; myData[12] = 0.f;
- myData[1] = 0.f; myData[5] = 1.f; myData[9] = 0.f; myData[13] = 0.f;
- myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
- myData[3] = 0.f; myData[7] = 0.f; myData[11] = 0.f; myData[15] = 1.f;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct a matrix from its 9 elements
-////////////////////////////////////////////////////////////
-inline Matrix3::Matrix3(float a00, float a01, float a02,
- float a10, float a11, float a12,
- float a20, float a21, float a22)
-{
- myData[0] = a00; myData[4] = a01; myData[8] = 0.f; myData[12] = a02;
- myData[1] = a10; myData[5] = a11; myData[9] = 0.f; myData[13] = a12;
- myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
- myData[3] = a20; myData[7] = a21; myData[11] = 0.f; myData[15] = a22;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Build a matrix from a set of transformations
-////////////////////////////////////////////////////////////
-inline void Matrix3::SetFromTransformations(const Vector2f& Center, const Vector2f& Translation, float Rotation, const Vector2f& Scale)
-{
- float Angle = Rotation * 3.141592654f / 180.f;
- float Cos = static_cast<float>(cos(Angle));
- float Sin = static_cast<float>(sin(Angle));
- float SxCos = Scale.x * Cos;
- float SyCos = Scale.y * Cos;
- float SxSin = Scale.x * Sin;
- float SySin = Scale.y * Sin;
- float Tx = -Center.x * SxCos - Center.y * SySin + Translation.x;
- float Ty = Center.x * SxSin - Center.y * SyCos + Translation.y;
-
- myData[0] = SxCos; myData[4] = SySin; myData[8] = 0.f; myData[12] = Tx;
- myData[1] = -SxSin; myData[5] = SyCos; myData[9] = 0.f; myData[13] = Ty;
- myData[2] = 0.f; myData[6] = 0.f; myData[10] = 1.f; myData[14] = 0.f;
- myData[3] = 0.f; myData[7] = 0.f; myData[11] = 0.f; myData[15] = 1.f;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Transform a point by the matrix
-////////////////////////////////////////////////////////////
-inline Vector2f Matrix3::Transform(const Vector2f& Point) const
-{
- return Vector2f(myData[0] * Point.x + myData[4] * Point.y + myData[12],
- myData[1] * Point.x + myData[5] * Point.y + myData[13]);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the inverse of the matrix
-////////////////////////////////////////////////////////////
-inline Matrix3 Matrix3::GetInverse() const
-{
- // Compute the determinant
- float Det = myData[0] * (myData[15] * myData[5] - myData[7] * myData[13]) -
- myData[1] * (myData[15] * myData[4] - myData[7] * myData[12]) +
- myData[3] * (myData[13] * myData[4] - myData[5] * myData[12]);
-
- // Compute the inverse if determinant is not zero
- if ((Det < -1E-7f) || (Det > 1E-7f))
- {
- return Matrix3( (myData[15] * myData[5] - myData[7] * myData[13]) / Det,
- -(myData[15] * myData[4] - myData[7] * myData[12]) / Det,
- (myData[13] * myData[4] - myData[5] * myData[12]) / Det,
- -(myData[15] * myData[1] - myData[3] * myData[13]) / Det,
- (myData[15] * myData[0] - myData[3] * myData[12]) / Det,
- -(myData[13] * myData[0] - myData[1] * myData[12]) / Det,
- (myData[7] * myData[1] - myData[3] * myData[5]) / Det,
- -(myData[7] * myData[0] - myData[3] * myData[4]) / Det,
- (myData[5] * myData[0] - myData[1] * myData[4]) / Det);
- }
- else
- {
- return Identity;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the elements of the matrix as a 4x4,
-/// in an array of 16 floats
-////////////////////////////////////////////////////////////
-inline const float* Matrix3::Get4x4Elements() const
-{
- return myData;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator () overloads to access the matrix elements
-////////////////////////////////////////////////////////////
-inline float Matrix3::operator ()(unsigned int Row, unsigned int Col) const
-{
- switch (Row + Col * 3)
- {
- case 0 : return myData[0];
- case 1 : return myData[1];
- case 2 : return myData[3];
- case 3 : return myData[4];
- case 4 : return myData[5];
- case 5 : return myData[7];
- case 6 : return myData[12];
- case 7 : return myData[13];
- case 8 : return myData[15];
-
- default : return myData[0];
- }
-}
-inline float& Matrix3::operator ()(unsigned int Row, unsigned int Col)
-{
- switch (Row + Col * 3)
- {
- case 0 : return myData[0];
- case 1 : return myData[1];
- case 2 : return myData[3];
- case 3 : return myData[4];
- case 4 : return myData[5];
- case 5 : return myData[7];
- case 6 : return myData[12];
- case 7 : return myData[13];
- case 8 : return myData[15];
-
- default : return myData[0];
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator * overload to multiply two matrices
-////////////////////////////////////////////////////////////
-inline Matrix3 Matrix3::operator *(const Matrix3& Mat) const
-{
- return Matrix3(myData[0] * Mat.myData[0] + myData[4] * Mat.myData[1] + myData[12] * Mat.myData[3],
- myData[0] * Mat.myData[4] + myData[4] * Mat.myData[5] + myData[12] * Mat.myData[7],
- myData[0] * Mat.myData[12] + myData[4] * Mat.myData[13] + myData[12] * Mat.myData[15],
- myData[1] * Mat.myData[0] + myData[5] * Mat.myData[1] + myData[13] * Mat.myData[3],
- myData[1] * Mat.myData[4] + myData[5] * Mat.myData[5] + myData[13] * Mat.myData[7],
- myData[1] * Mat.myData[12] + myData[5] * Mat.myData[13] + myData[13] * Mat.myData[15],
- myData[3] * Mat.myData[0] + myData[7] * Mat.myData[1] + myData[15] * Mat.myData[3],
- myData[3] * Mat.myData[4] + myData[7] * Mat.myData[5] + myData[15] * Mat.myData[7],
- myData[3] * Mat.myData[12] + myData[7] * Mat.myData[13] + myData[15] * Mat.myData[15]);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator *= overload to multiply-assign two matrices
-////////////////////////////////////////////////////////////
-inline Matrix3& Matrix3::operator *=(const Matrix3& Mat)
-{
- return *this = *this * Mat;
-}
diff --git a/include/SFML/Graphics/PostFX.hpp b/include/SFML/Graphics/PostFX.hpp
deleted file mode 100755
index c875377..0000000
--- a/include/SFML/Graphics/PostFX.hpp
+++ /dev/null
@@ -1,194 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_POSTFX_HPP
-#define SFML_POSTFX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/Drawable.hpp>
-#include <SFML/Graphics/Image.hpp>
-#include <istream>
-#include <map>
-#include <string>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// PostFX is used to apply a post effect to a window
-////////////////////////////////////////////////////////////
-class SFML_API PostFX : public Drawable
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- PostFX();
-
- ////////////////////////////////////////////////////////////
- /// Copy constructor
- ///
- /// \param Copy : Instance to copy
- ///
- ////////////////////////////////////////////////////////////
- PostFX(const PostFX& Copy);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~PostFX();
-
- ////////////////////////////////////////////////////////////
- /// Load the effect from a file
- ///
- /// \param Filename : Path of the effect file to load
- ///
- /// \return True on success
- ///
- ////////////////////////////////////////////////////////////
- bool LoadFromFile(const std::string& Filename);
-
- ////////////////////////////////////////////////////////////
- /// Load the effect from a text in memory
- ///
- /// \param Effect : String containing the effect code
- ///
- /// \return True on success
- ///
- ////////////////////////////////////////////////////////////
- bool LoadFromMemory(const std::string& Effect);
-
- ////////////////////////////////////////////////////////////
- /// Change a parameter of the effect (1 float)
- ///
- /// \param Name : Parameter name in the effect
- /// \param X : Value to assign
- ///
- ////////////////////////////////////////////////////////////
- void SetParameter(const std::string& Name, float X);
-
- ////////////////////////////////////////////////////////////
- /// Change a parameter of the effect (2 floats)
- ///
- /// \param Name : Parameter name in the effect
- /// \param X, Y : Values to assign
- ///
- ////////////////////////////////////////////////////////////
- void SetParameter(const std::string& Name, float X, float Y);
-
- ////////////////////////////////////////////////////////////
- /// Change a parameter of the effect (3 floats)
- ///
- /// \param Name : Parameter name in the effect
- /// \param X, Y, Z : Values to assign
- ///
- ////////////////////////////////////////////////////////////
- void SetParameter(const std::string& Name, float X, float Y, float Z);
-
- ////////////////////////////////////////////////////////////
- /// Change a parameter of the effect (4 floats)
- ///
- /// \param Name : Parameter name in the effect
- /// \param X, Y, Z, W : Values to assign
- ///
- ////////////////////////////////////////////////////////////
- void SetParameter(const std::string& Name, float X, float Y, float Z, float W);
-
- ////////////////////////////////////////////////////////////
- /// Set a texture parameter
- ///
- /// \param Name : Texture name in the effect
- /// \param Texture : Image to set (pass NULL to use content of current framebuffer)
- ///
- ////////////////////////////////////////////////////////////
- void SetTexture(const std::string& Name, Image* Texture);
-
- ////////////////////////////////////////////////////////////
- /// Assignment operator
- ///
- /// \param Other : Instance to assign
- ///
- /// \return Reference to the post-effect
- ///
- ////////////////////////////////////////////////////////////
- PostFX& operator =(const PostFX& Other);
-
- ////////////////////////////////////////////////////////////
- /// Tell whether or not the system supports post-effects
- ///
- /// \return True if the system can use post-effects
- ///
- ////////////////////////////////////////////////////////////
- static bool CanUsePostFX();
-
-protected :
-
- ////////////////////////////////////////////////////////////
- /// /see Drawable::Render
- ///
- ////////////////////////////////////////////////////////////
- virtual void Render(RenderTarget& Target) const;
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Preprocess a SFML effect file
- /// to convert it to a valid GLSL fragment shader
- ///
- /// \param File : Stream containing the code to process
- ///
- /// \return Valid fragment shader source code
- ///
- ////////////////////////////////////////////////////////////
- static std::string PreprocessEffect(std::istream& File);
-
- ////////////////////////////////////////////////////////////
- /// Create the program and attach the shaders
- ///
- ////////////////////////////////////////////////////////////
- void CreateProgram();
-
- ////////////////////////////////////////////////////////////
- // Types
- ////////////////////////////////////////////////////////////
- typedef std::map<std::string, const Image*> TextureTable;
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- unsigned int myShaderProgram; ///< OpenGL identifier for the program
- TextureTable myTextures; ///< Texture variables in the effect
- std::string myFragmentShader; ///< Fragment shader source code
- mutable Image myFrameBuffer; ///< Texture containing the current frame buffer
-};
-
-} // namespace sf
-
-
-#endif // SFML_POSTFX_HPP
diff --git a/include/SFML/Network/SocketHelper.hpp b/include/SFML/Graphics/PrimitiveType.hpp
index 166ce60..8f3cfb2 100755..100644
--- a/include/SFML/Network/SocketHelper.hpp
+++ b/include/SFML/Graphics/PrimitiveType.hpp
@@ -1,64 +1,53 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SOCKETHELPER_HPP
-#define SFML_SOCKETHELPER_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-namespace sf
-{
-namespace Socket
-{
- ////////////////////////////////////////////////////////////
- /// Enumeration of status returned by socket functions
- ////////////////////////////////////////////////////////////
- enum Status
- {
- Done, ///< The socket has sent / received the data
- NotReady, ///< The socket is not ready to send / receive data yet
- Disconnected, ///< The TCP socket has been disconnected
- Error ///< An unexpected error happened
- };
-}
-
-} // namespace sf
-
-
-#ifdef SFML_SYSTEM_WINDOWS
-
- #include <SFML/Network/Win32/SocketHelper.hpp>
-
-#else
-
- #include <SFML/Network/Unix/SocketHelper.hpp>
-
-#endif
-
-
-#endif // SFML_SOCKETHELPER_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_PRIMITIVETYPE_HPP
+#define SFML_PRIMITIVETYPE_HPP
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \ingroup graphics
+/// \brief Types of primitives that a sf::VertexArray can render
+///
+/// Points and lines have no area, therefore their thickness
+/// will always be 1 pixel, regarldess the current transform
+/// and view.
+///
+////////////////////////////////////////////////////////////
+enum PrimitiveType
+{
+ Points, ///< List of individual points
+ Lines, ///< List of individual lines
+ LinesStrip, ///< List of connected lines, a point uses the previous point to form a line
+ Triangles, ///< List of individual triangles
+ TrianglesStrip, ///< List of connected triangles, a point uses the two previous points to form a triangle
+ TrianglesFan, ///< List of connected triangles, a point uses the common center and the previous point to form a triangle
+ Quads ///< List of individual quads
+};
+
+} // namespace sf
+
+
+#endif // SFML_PRIMITIVETYPE_HPP
diff --git a/include/SFML/Graphics/Rect.hpp b/include/SFML/Graphics/Rect.hpp
index 5decd3c..3a3acc7 100755..100644
--- a/include/SFML/Graphics/Rect.hpp
+++ b/include/SFML/Graphics/Rect.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,14 +28,15 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/System/Vector2.hpp>
#include <algorithm>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Rect is an utility class for manipulating rectangles.
-/// Template parameter defines the type of coordinates (integer, float, ...)
+/// \brief Utility class for manipulating 2D axis aligned rectangles
+///
////////////////////////////////////////////////////////////
template <typename T>
class Rect
@@ -43,81 +44,149 @@ class Rect
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates an empty rectangle (it is equivalent to calling
+ /// Rect(0, 0, 0, 0)).
///
////////////////////////////////////////////////////////////
Rect();
////////////////////////////////////////////////////////////
- /// Construct the rectangle from its coordinates
+ /// \brief Construct the rectangle from its coordinates
+ ///
+ /// Be careful, the last two parameters are the width
+ /// and height, not the right and bottom coordinates!
+ ///
+ /// \param rectLeft Left coordinate of the rectangle
+ /// \param rectTop Top coordinate of the rectangle
+ /// \param rectWidth Width of the rectangle
+ /// \param rectHeight Height of the rectangle
+ ///
+ ////////////////////////////////////////////////////////////
+ Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the rectangle from position and size
///
- /// \param LeftCoord : Left coordinate of the rectangle
- /// \param TopCoord : Top coordinate of the rectangle
- /// \param RightCoord : Right coordinate of the rectangle
- /// \param BottomCoord : Bottom coordinate of the rectangle
+ /// Be careful, the last parameter is the size,
+ /// not the bottom-right corner!
+ ///
+ /// \param position Position of the top-left corner of the rectangle
+ /// \param size Size of the rectangle
///
////////////////////////////////////////////////////////////
- Rect(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord);
+ Rect(const Vector2<T>& position, const Vector2<T>& size);
////////////////////////////////////////////////////////////
- /// Get the width of the rectangle
+ /// \brief 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.
///
- /// \return Width of rectangle
+ /// \param rectangle Rectangle to convert
///
////////////////////////////////////////////////////////////
- T GetWidth() const;
+ template <typename U>
+ explicit Rect(const Rect<U>& rectangle);
////////////////////////////////////////////////////////////
- /// Get the height of the rectangle
+ /// \brief Check if a point is inside the rectangle's area
+ ///
+ /// \param x X coordinate of the point to test
+ /// \param y Y coordinate of the point to test
+ ///
+ /// \return True if the point is inside, false otherwise
///
- /// \return Height of rectangle
+ /// \see intersects
///
////////////////////////////////////////////////////////////
- T GetHeight() const;
+ bool contains(T x, T y) const;
////////////////////////////////////////////////////////////
- /// Move the whole rectangle by the given offset
+ /// \brief Check if a point is inside the rectangle's area
///
- /// \param OffsetX : Horizontal offset
- /// \param OffsetY : Vertical offset
+ /// \param point Point to test
+ ///
+ /// \return True if the point is inside, false otherwise
+ ///
+ /// \see intersects
///
////////////////////////////////////////////////////////////
- void Offset(T OffsetX, T OffsetY);
+ bool contains(const Vector2<T>& point) const;
////////////////////////////////////////////////////////////
- /// Check if a point is inside the rectangle's area
+ /// \brief Check the intersection between two rectangles
+ ///
+ /// \param rectangle Rectangle to test
///
- /// \param X : X coordinate of the point to test
- /// \param Y : Y coordinate of the point to test
+ /// \return True if rectangles overlap, false otherwise
///
- /// \return True if the point is inside
+ /// \see contains
///
////////////////////////////////////////////////////////////
- bool Contains(T X, T Y) const;
+ bool intersects(const Rect<T>& rectangle) const;
////////////////////////////////////////////////////////////
- /// Check intersection between two rectangles
+ /// \brief Check the intersection between two rectangles
///
- /// \param Rectangle : Rectangle to test
- /// \param OverlappingRect : Rectangle to be filled with overlapping rect (NULL by default)
+ /// This overload returns the overlapped rectangle in the
+ /// \a intersection parameter.
///
- /// \return True if rectangles overlap
+ /// \param rectangle Rectangle to test
+ /// \param intersection Rectangle to be filled with the intersection
+ ///
+ /// \return True if rectangles overlap, false otherwise
+ ///
+ /// \see contains
///
////////////////////////////////////////////////////////////
- bool Intersects(const Rect<T>& Rectangle, Rect<T>* OverlappingRect = NULL) const;
+ bool intersects(const Rect<T>& rectangle, Rect<T>& intersection) const;
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- T Left; ///< Left coordinate of the rectangle
- T Top; ///< Top coordinate of the rectangle
- T Right; ///< Right coordinate of the rectangle
- T Bottom; ///< Bottom coordinate of the rectangle
+ T left; ///< Left coordinate of the rectangle
+ T top; ///< Top coordinate of the rectangle
+ T width; ///< Width of the rectangle
+ T height; ///< Height of the rectangle
};
+////////////////////////////////////////////////////////////
+/// \relates Rect
+/// \brief Overload of binary operator ==
+///
+/// This operator compares strict equality between two rectangles.
+///
+/// \param left Left operand (a rectangle)
+/// \param right Right operand (a rectangle)
+///
+/// \return True if \a left is equal to \a right
+///
+////////////////////////////////////////////////////////////
+template <typename T>
+bool operator ==(const Rect<T>& left, const Rect<T>& right);
+
+////////////////////////////////////////////////////////////
+/// \relates Rect
+/// \brief Overload of binary operator !=
+///
+/// This operator compares strict difference between two rectangles.
+///
+/// \param left Left operand (a rectangle)
+/// \param right Right operand (a rectangle)
+///
+/// \return True if \a left is not equal to \a right
+///
+////////////////////////////////////////////////////////////
+template <typename T>
+bool operator !=(const Rect<T>& left, const Rect<T>& right);
+
#include <SFML/Graphics/Rect.inl>
-// Define the most common types
+// Create typedefs for the most common types
typedef Rect<int> IntRect;
typedef Rect<float> FloatRect;
@@ -125,3 +194,55 @@ typedef Rect<float> FloatRect;
#endif // SFML_RECT_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Rect
+/// \ingroup graphics
+///
+/// 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:
+/// \li The left and top edges are included in the rectangle's area
+/// \li 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 instanciations used by SFML are typedefed:
+/// \li sf::Rect<int> is sf::IntRect
+/// \li sf::Rect<float> is sf::FloatRect
+///
+/// So that you don't have to care about the template syntax.
+///
+/// Usage example:
+/// \code
+/// // 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)
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Rect.inl b/include/SFML/Graphics/Rect.inl
index 6c5962d..0a97b99 100755..100644
--- a/include/SFML/Graphics/Rect.inl
+++ b/include/SFML/Graphics/Rect.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -24,99 +24,136 @@
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
template <typename T>
Rect<T>::Rect() :
-Left (0),
-Top (0),
-Right (0),
-Bottom(0)
+left (0),
+top (0),
+width (0),
+height(0)
{
}
////////////////////////////////////////////////////////////
-/// Construct the color from its coordinates
-////////////////////////////////////////////////////////////
template <typename T>
-Rect<T>::Rect(T LeftCoord, T TopCoord, T RightCoord, T BottomCoord) :
-Left (LeftCoord),
-Top (TopCoord),
-Right (RightCoord),
-Bottom(BottomCoord)
+Rect<T>::Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight) :
+left (rectLeft),
+top (rectTop),
+width (rectWidth),
+height(rectHeight)
{
}
////////////////////////////////////////////////////////////
-/// Get the width of the rectangle
-////////////////////////////////////////////////////////////
template <typename T>
-T Rect<T>::GetWidth() const
+Rect<T>::Rect(const Vector2<T>& position, const Vector2<T>& size) :
+left (position.x),
+top (position.y),
+width (size.x),
+height(size.y)
{
- return Right - Left;
+
}
////////////////////////////////////////////////////////////
-/// Get the height of the rectangle
-////////////////////////////////////////////////////////////
template <typename T>
-T Rect<T>::GetHeight() const
+template <typename U>
+Rect<T>::Rect(const Rect<U>& rectangle) :
+left (static_cast<T>(rectangle.left)),
+top (static_cast<T>(rectangle.top)),
+width (static_cast<T>(rectangle.width)),
+height(static_cast<T>(rectangle.height))
{
- return Bottom - Top;
}
////////////////////////////////////////////////////////////
-/// Move the whole rectangle by the given offset
-////////////////////////////////////////////////////////////
template <typename T>
-void Rect<T>::Offset(T OffsetX, T OffsetY)
+bool Rect<T>::contains(T x, T y) const
{
- Left += OffsetX;
- Right += OffsetX;
- Top += OffsetY;
- Bottom += OffsetY;
+ // Rectangles with negative dimensions are allowed, so we must handle them correctly
+
+ // Compute the real min and max of the rectangle on both axes
+ T minX = std::min(left, left + width);
+ T maxX = std::max(left, left + width);
+ T minY = std::min(top, top + height);
+ T maxY = std::max(top, top + height);
+
+ return (x >= minX) && (x < maxX) && (y >= minY) && (y < maxY);
}
////////////////////////////////////////////////////////////
-/// Check if a point is inside the rectangle's area
-////////////////////////////////////////////////////////////
template <typename T>
-bool Rect<T>::Contains(T X, T Y) const
+bool Rect<T>::contains(const Vector2<T>& point) const
{
- return (X >= Left) && (X <= Right) && (Y >= Top) && (Y <= Bottom);
+ return contains(point.x, point.y);
}
////////////////////////////////////////////////////////////
-/// Check intersection between two rectangles
+template <typename T>
+bool Rect<T>::intersects(const Rect<T>& rectangle) const
+{
+ Rect<T> intersection;
+ return intersects(rectangle, intersection);
+}
+
+
////////////////////////////////////////////////////////////
template <typename T>
-bool Rect<T>::Intersects(const Rect<T>& Rectangle, Rect<T>* OverlappingRect) const
+bool Rect<T>::intersects(const Rect<T>& rectangle, Rect<T>& intersection) const
{
- // Compute overlapping rect
- Rect Overlapping(std::max(Left, Rectangle.Left),
- std::max(Top, Rectangle.Top),
- std::min(Right, Rectangle.Right),
- std::min(Bottom, Rectangle.Bottom));
-
- // If overlapping rect is valid, then there is intersection
- if ((Overlapping.Left < Overlapping.Right) && (Overlapping.Top < Overlapping.Bottom))
+ // Rectangles with negative dimensions are allowed, so we must handle them correctly
+
+ // Compute the min and max of the first rectangle on both axes
+ T r1MinX = std::min(left, left + width);
+ T r1MaxX = std::max(left, left + width);
+ T r1MinY = std::min(top, top + height);
+ T r1MaxY = std::max(top, top + height);
+
+ // Compute the min and max of the second rectangle on both axes
+ T r2MinX = std::min(rectangle.left, rectangle.left + rectangle.width);
+ T r2MaxX = std::max(rectangle.left, rectangle.left + rectangle.width);
+ T r2MinY = std::min(rectangle.top, rectangle.top + rectangle.height);
+ T r2MaxY = std::max(rectangle.top, rectangle.top + rectangle.height);
+
+ // Compute the intersection boundaries
+ T interLeft = std::max(r1MinX, r2MinX);
+ T interTop = std::max(r1MinY, r2MinY);
+ T interRight = std::min(r1MaxX, r2MaxX);
+ T interBottom = std::min(r1MaxY, r2MaxY);
+
+ // If the intersection is valid (positive non zero area), then there is an intersection
+ if ((interLeft < interRight) && (interTop < interBottom))
{
- if (OverlappingRect)
- *OverlappingRect = Overlapping;
+ intersection = Rect<T>(interLeft, interTop, interRight - interLeft, interBottom - interTop);
return true;
}
else
{
- if (OverlappingRect)
- *OverlappingRect = Rect(0, 0, 0, 0);
+ intersection = Rect<T>(0, 0, 0, 0);
return false;
}
}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+inline bool operator ==(const Rect<T>& left, const Rect<T>& right)
+{
+ return (left.left == right.left) && (left.width == right.width) &&
+ (left.top == right.top) && (left.height == right.height);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+inline bool operator !=(const Rect<T>& left, const Rect<T>& right)
+{
+ return !(left == right);
+}
diff --git a/include/SFML/Graphics/RectangleShape.hpp b/include/SFML/Graphics/RectangleShape.hpp
new file mode 100644
index 0000000..2140e91
--- /dev/null
+++ b/include/SFML/Graphics/RectangleShape.hpp
@@ -0,0 +1,128 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RECTANGLESHAPE_HPP
+#define SFML_RECTANGLESHAPE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Shape.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Specialized shape representing a rectangle
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API RectangleShape : public Shape
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// \param size Size of the rectangle
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit RectangleShape(const Vector2f& size = Vector2f(0, 0));
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the size of the rectangle
+ ///
+ /// \param size New size of the rectangle
+ ///
+ /// \see getSize
+ ///
+ ////////////////////////////////////////////////////////////
+ void setSize(const Vector2f& size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the size of the rectangle
+ ///
+ /// \return Size of the rectangle
+ ///
+ /// \see setSize
+ ///
+ ////////////////////////////////////////////////////////////
+ const Vector2f& getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the number of points defining the shape
+ ///
+ /// \return Number of points of the shape
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual unsigned int getPointCount() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get a point of the shape
+ ///
+ /// The result is undefined if \a index is out of the valid range.
+ ///
+ /// \param index Index of the point to get, in range [0 .. getPointCount() - 1]
+ ///
+ /// \return Index-th point of the shape
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2f getPoint(unsigned int index) const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Vector2f m_size; ///< Size of the rectangle
+};
+
+} // namespace sf
+
+
+#endif // SFML_RECTANGLESHAPE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::RectangleShape
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// sf::RectangleShape rectangle;
+/// rectangle.setSize(sf::Vector2f(100, 50));
+/// rectangle.setOutlineColor(sf::Color::Red);
+/// rectangle.setOutlineThickness(5);
+/// rectangle.setPosition(10, 20);
+/// ...
+/// window.draw(rectangle);
+/// \endcode
+///
+/// \see sf::Shape, sf::CircleShape, sf::ConvexShape
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/RenderStates.hpp b/include/SFML/Graphics/RenderStates.hpp
new file mode 100644
index 0000000..bf4183c
--- /dev/null
+++ b/include/SFML/Graphics/RenderStates.hpp
@@ -0,0 +1,174 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RENDERSTATES_HPP
+#define SFML_RENDERSTATES_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/BlendMode.hpp>
+#include <SFML/Graphics/Transform.hpp>
+
+
+namespace sf
+{
+class Shader;
+class Texture;
+
+////////////////////////////////////////////////////////////
+/// \brief Define the states used for drawing to a RenderTarget
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API RenderStates
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Constructing a default set of render states is equivalent
+ /// to using sf::RenderStates::Default.
+ /// The default set defines:
+ /// \li the BlendAlpha blend mode
+ /// \li the identity transform
+ /// \li a null texture
+ /// \li a null shader
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a default set of render states with a custom blend mode
+ ///
+ /// \param theBlendMode Blend mode to use
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates(BlendMode theBlendMode);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a default set of render states with a custom transform
+ ///
+ /// \param theTransform Transform to use
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates(const Transform& theTransform);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a default set of render states with a custom texture
+ ///
+ /// \param theTexture Texture to use
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates(const Texture* theTexture);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a default set of render states with a custom shader
+ ///
+ /// \param theShader Shader to use
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates(const Shader* theShader);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a set of render states with all its attributes
+ ///
+ /// \param theBlendMode Blend mode to use
+ /// \param theTransform Transform to use
+ /// \param theTexture Texture to use
+ /// \param theShader Shader to use
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderStates(BlendMode theBlendMode, const Transform& theTransform,
+ const Texture* theTexture, const Shader* theShader);
+
+ ////////////////////////////////////////////////////////////
+ // Static member data
+ ////////////////////////////////////////////////////////////
+ static const RenderStates Default; ///< Special instance holding the default render states
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ BlendMode blendMode; ///< Blending mode
+ Transform transform; ///< Transform
+ const Texture* texture; ///< Texture
+ const Shader* shader; ///< Shader
+};
+
+} // namespace sf
+
+
+#endif // SFML_RENDERSTATES_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::RenderStates
+/// \ingroup graphics
+///
+/// There are four global states that can be applied to
+/// the drawn objects:
+/// \li the blend mode: how pixels of the object are blended with the background
+/// \li the transform: how the object is positioned/rotated/scaled
+/// \li the texture: what image is mapped to the object
+/// \li 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 explicitely -- the
+/// default set of states is ok in most cases.
+/// \code
+/// window.Draw(sprite);
+/// \endcode
+///
+/// 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.
+/// \code
+/// window.draw(sprite, shader);
+/// \endcode
+///
+/// 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 sf::RenderTarget, sf::Drawable
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/RenderTarget.hpp b/include/SFML/Graphics/RenderTarget.hpp
index ea303d9..5f69e7f 100755..100644
--- a/include/SFML/Graphics/RenderTarget.hpp
+++ b/include/SFML/Graphics/RenderTarget.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,9 +28,16 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Color.hpp>
-#include <SFML/Graphics/View.hpp>
#include <SFML/Graphics/Rect.hpp>
+#include <SFML/Graphics/View.hpp>
+#include <SFML/Graphics/Transform.hpp>
+#include <SFML/Graphics/BlendMode.hpp>
+#include <SFML/Graphics/RenderStates.hpp>
+#include <SFML/Graphics/PrimitiveType.hpp>
+#include <SFML/Graphics/Vertex.hpp>
+#include <SFML/System/NonCopyable.hpp>
namespace sf
@@ -38,129 +45,407 @@ namespace sf
class Drawable;
////////////////////////////////////////////////////////////
-/// Base class for all render targets (window, image, ...)
+/// \brief Base class for all render targets (window, texture, ...)
+///
////////////////////////////////////////////////////////////
-class SFML_API RenderTarget
+class SFML_GRAPHICS_API RenderTarget : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
virtual ~RenderTarget();
////////////////////////////////////////////////////////////
- /// Clear the entire target with a single color
+ /// \brief Clear the entire target with a single color
+ ///
+ /// This function is usually called once every frame,
+ /// to clear the previous contents of the target.
+ ///
+ /// \param color Fill color to use to clear the render target
+ ///
+ ////////////////////////////////////////////////////////////
+ void clear(const Color& color = Color(0, 0, 0, 255));
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param view New view to use
+ ///
+ /// \see getView, getDefaultView
+ ///
+ ////////////////////////////////////////////////////////////
+ void setView(const View& view);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the view currently in use in the render target
+ ///
+ /// \return The view object that is currently used
+ ///
+ /// \see setView, getDefaultView
+ ///
+ ////////////////////////////////////////////////////////////
+ const View& getView() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return The default view of the render target
+ ///
+ /// \see setView, getView
+ ///
+ ////////////////////////////////////////////////////////////
+ const View& getDefaultView() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param view The view for which we want to compute the viewport
+ ///
+ /// \return Viewport rectangle, expressed in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ IntRect getViewport(const View& view) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a point from target coordinates to world
+ /// coordinates, using the current view
+ ///
+ /// This function is an overload of the mapPixelToCoords
+ /// function that implicitely uses the current view.
+ /// It is equivalent to:
+ /// \code
+ /// target.mapPixelToCoords(point, target.getView());
+ /// \endcode
+ ///
+ /// \param point Pixel to convert
+ ///
+ /// \return The converted point, in "world" coordinates
+ ///
+ /// \see mapCoordsToPixel
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2f mapPixelToCoords(const Vector2i& point) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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, ie. 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.
+ ///
+ /// \param point Pixel to convert
+ /// \param view The view to use for converting the point
+ ///
+ /// \return The converted point, in "world" units
+ ///
+ /// \see mapCoordsToPixel
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2f mapPixelToCoords(const Vector2i& point, const View& view) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a point from world coordinates to target
+ /// coordinates, using the current view
+ ///
+ /// This function is an overload of the mapCoordsToPixel
+ /// function that implicitely uses the current view.
+ /// It is equivalent to:
+ /// \code
+ /// target.mapCoordsToPixel(point, target.getView());
+ /// \endcode
+ ///
+ /// \param point Point to convert
///
- /// \param FillColor : Color to use to clear the render target
+ /// \return The converted point, in target coordinates (pixels)
+ ///
+ /// \see mapPixelToCoords
///
////////////////////////////////////////////////////////////
- void Clear(const Color& FillColor = Color(0, 0, 0));
+ Vector2i mapCoordsToPixel(const Vector2f& point) const;
////////////////////////////////////////////////////////////
- /// Draw something into the target
+ /// \brief 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, ie. 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.
+ ///
+ /// \param point Point to convert
+ /// \param view The view to use for converting the point
+ ///
+ /// \return The converted point, in target coordinates (pixels)
///
- /// \param Object : Object to draw
+ /// \see mapPixelToCoords
///
////////////////////////////////////////////////////////////
- virtual void Draw(const Drawable& Object);
+ Vector2i mapCoordsToPixel(const Vector2f& point, const View& view) const;
////////////////////////////////////////////////////////////
- /// Get the width of the rendering region of the target
+ /// \brief Draw a drawable object to the render-target
///
- /// \return Width in pixels
+ /// \param drawable Object to draw
+ /// \param states Render states to use for drawing
///
////////////////////////////////////////////////////////////
- virtual unsigned int GetWidth() const = 0;
+ void draw(const Drawable& drawable, const RenderStates& states = RenderStates::Default);
////////////////////////////////////////////////////////////
- /// Get the height of the rendering region of the target
+ /// \brief Draw primitives defined by an array of vertices
///
- /// \return Height in pixels
+ /// \param vertices Pointer to the vertices
+ /// \param vertexCount Number of vertices in the array
+ /// \param type Type of primitives to draw
+ /// \param states Render states to use for drawing
///
////////////////////////////////////////////////////////////
- virtual unsigned int GetHeight() const = 0;
+ void draw(const Vertex* vertices, unsigned int vertexCount,
+ PrimitiveType type, const RenderStates& states = RenderStates::Default);
////////////////////////////////////////////////////////////
- /// Change the current active view.
+ /// \brief Return the size of the rendering region of the target
///
- /// \param NewView : New view to use (pass GetDefaultView() to set the default view)
+ /// \return Size in pixels
///
////////////////////////////////////////////////////////////
- void SetView(const View& NewView);
+ virtual Vector2u getSize() const = 0;
////////////////////////////////////////////////////////////
- /// Get the current view
+ /// \brief Save the current OpenGL render states and matrices
///
- /// \return Current view active in the window
+ /// This function can be used when you mix SFML drawing
+ /// and direct OpenGL rendering. Combined with PopGLStates,
+ /// it ensures that:
+ /// \li SFML's internal states are not messed up by your OpenGL code
+ /// \li 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:
+ /// \code
+ /// // OpenGL code here...
+ /// window.pushGLStates();
+ /// window.draw(...);
+ /// window.draw(...);
+ /// window.popGLStates();
+ /// // OpenGL code here...
+ /// \endcode
+ ///
+ /// 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 popGLStates
///
////////////////////////////////////////////////////////////
- const View& GetView() const;
+ void pushGLStates();
////////////////////////////////////////////////////////////
- /// Get the default view of the window for read / write
+ /// \brief Restore the previously saved OpenGL render states and matrices
///
- /// \return Default view
+ /// See the description of pushGLStates to get a detailed
+ /// description of these functions.
+ ///
+ /// \see pushGLStates
///
////////////////////////////////////////////////////////////
- View& GetDefaultView();
+ void popGLStates();
////////////////////////////////////////////////////////////
- /// Tell SFML to preserve external OpenGL states, at the expense of
- /// more CPU charge. Use this function if you don't want SFML
- /// to mess up your own OpenGL states (if any).
- /// Don't enable state preservation if not needed, as it will allow
- /// SFML to do internal optimizations and improve performances.
- /// This parameter is false by default
+ /// \brief 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.
///
- /// \param Preserve : True to preserve OpenGL states, false to let SFML optimize
+ /// Example:
+ /// \code
+ /// // OpenGL code here...
+ /// glPushAttrib(...);
+ /// window.resetGLStates();
+ /// window.draw(...);
+ /// window.draw(...);
+ /// glPopAttrib(...);
+ /// // OpenGL code here...
+ /// \endcode
///
////////////////////////////////////////////////////////////
- void PreserveOpenGLStates(bool Preserve);
+ void resetGLStates();
protected :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
RenderTarget();
////////////////////////////////////////////////////////////
- /// Called by the derived class when it's ready to be initialized
+ /// \brief Performs the common initialization step after creation
+ ///
+ /// The derived classes must call this function after the
+ /// target is created and ready for drawing.
///
////////////////////////////////////////////////////////////
- void Initialize();
+ void initialize();
-private :
+private:
////////////////////////////////////////////////////////////
- /// Activate the target for rendering
+ /// \brief Apply the current view
///
- /// \param Active : True to activate rendering, false to deactivate
+ ////////////////////////////////////////////////////////////
+ void applyCurrentView();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Apply a new blending mode
///
- /// \return True if activation succeeded
+ /// \param mode Blending mode to apply
///
////////////////////////////////////////////////////////////
- virtual bool Activate(bool Active) = 0;
+ void applyBlendMode(BlendMode mode);
////////////////////////////////////////////////////////////
- /// Set the OpenGL render states needed for the SFML rendering
+ /// \brief Apply a new transform
+ ///
+ /// \param transform Transform to apply
///
////////////////////////////////////////////////////////////
- void SetRenderStates();
+ void applyTransform(const Transform& transform);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Apply a new texture
+ ///
+ /// \param texture Texture to apply
+ ///
+ ////////////////////////////////////////////////////////////
+ void applyTexture(const Texture* texture);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Apply a new shader
+ ///
+ /// \param shader Shader to apply
+ ///
+ ////////////////////////////////////////////////////////////
+ void applyShader(const Shader* shader);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the target for rendering
+ ///
+ /// This function must be implemented by derived classes to make
+ /// their OpenGL context current; it is called by the base class
+ /// everytime it's going to use OpenGL calls.
+ ///
+ /// \param active True to make the target active, false to deactivate it
+ ///
+ /// \return True if the function succeeded
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool activate(bool active) = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Render states cache
+ ///
+ ////////////////////////////////////////////////////////////
+ struct StatesCache
+ {
+ enum {VertexCacheSize = 4};
+
+ bool glStatesSet; ///< Are our internal GL states set yet?
+ bool viewChanged; ///< Has the current view changed since last draw?
+ BlendMode lastBlendMode; ///< Cached blending mode
+ Uint64 lastTextureId; ///< Cached texture
+ bool useVertexCache; ///< Did we previously use the vertex cache?
+ Vertex vertexCache[VertexCacheSize]; ///< Pre-transformed vertices cache
+ };
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- View myDefaultView; ///< Default view
- const View* myCurrentView; ///< Current active view
- bool myPreserveStates; ///< Should we preserve external OpenGL states ?
- bool myIsDrawing; ///< True when Draw is called from inside, to allow some renderstates optimizations
+ View m_defaultView; ///< Default view
+ View m_view; ///< Current view
+ StatesCache m_cache; ///< Render states cache
};
} // namespace sf
#endif // SFML_RENDERTARGET_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::RenderTarget
+/// \ingroup graphics
+///
+/// sf::RenderTarget defines the common behaviour 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 sf::RenderWindow, sf::RenderTexture, sf::View
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/RenderTexture.hpp b/include/SFML/Graphics/RenderTexture.hpp
new file mode 100644
index 0000000..384e459
--- /dev/null
+++ b/include/SFML/Graphics/RenderTexture.hpp
@@ -0,0 +1,280 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RENDERTEXTURE_HPP
+#define SFML_RENDERTEXTURE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/RenderTarget.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+ class RenderTextureImpl;
+}
+
+////////////////////////////////////////////////////////////
+/// \brief Target for off-screen 2D rendering into a texture
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API RenderTexture : public RenderTarget
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Constructs an empty, invalid render-texture. You must
+ /// call create to have a valid render-texture.
+ ///
+ /// \see create
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderTexture();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~RenderTexture();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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, \a 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).
+ ///
+ /// \param width Width of the render-texture
+ /// \param height Height of the render-texture
+ /// \param depthBuffer Do you want this render-texture to have a depth buffer?
+ ///
+ /// \return True if creation has been successful
+ ///
+ ////////////////////////////////////////////////////////////
+ bool create(unsigned int width, unsigned int height, bool depthBuffer = false);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enable or disable texture smoothing
+ ///
+ /// This function is similar to Texture::setSmooth.
+ /// This parameter is disabled by default.
+ ///
+ /// \param smooth True to enable smoothing, false to disable it
+ ///
+ /// \see isSmooth
+ ///
+ ////////////////////////////////////////////////////////////
+ void setSmooth(bool smooth);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the smooth filtering is enabled or not
+ ///
+ /// \return True if texture smoothing is enabled
+ ///
+ /// \see setSmooth
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isSmooth() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enable or disable texture repeating
+ ///
+ /// This function is similar to Texture::setRepeated.
+ /// This parameter is disabled by default.
+ ///
+ /// \param repeated True to enable repeating, false to disable it
+ ///
+ /// \see isRepeated
+ ///
+ ////////////////////////////////////////////////////////////
+ void setRepeated(bool repeated);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the texture is repeated or not
+ ///
+ /// \return True if texture is repeated
+ ///
+ /// \see setRepeated
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isRepeated() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate of 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.
+ ///
+ /// \param active True to activate, false to deactivate
+ ///
+ /// \return True if operation was successful, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ bool setActive(bool active = true);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ ////////////////////////////////////////////////////////////
+ void display();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the size of the rendering region of the texture
+ ///
+ /// The returned value is the size that you passed to
+ /// the create function.
+ ///
+ /// \return Size in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2u getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Const reference to the texture
+ ///
+ ////////////////////////////////////////////////////////////
+ const Texture& getTexture() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the target for rendering
+ ///
+ /// This function is called by the base class
+ /// everytime it's going to use OpenGL calls.
+ ///
+ /// \param active True to make the target active, false to deactivate it
+ ///
+ /// \return True if the function succeeded
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool activate(bool active);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ priv::RenderTextureImpl* m_impl; ///< Platform/hardware specific implementation
+ Texture m_texture; ///< Target texture to draw on
+};
+
+} // namespace sf
+
+
+#endif // SFML_RENDERTEXTURE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::RenderTexture
+/// \ingroup graphics
+///
+/// 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:
+/// \li precomputing a complex static texture (like a level's background from multiple tiles)
+/// \li applying post-effects to the whole scene with shaders
+/// \li creating a sprite from a 3D object rendered with OpenGL
+/// \li etc.
+///
+/// Usage example:
+///
+/// \code
+/// // Create a new render-window
+/// sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
+///
+/// // Create a new render-texture
+/// sf::RenderTexture texture;
+/// if (!texture.create(500, 500))
+/// return -1;
+///
+/// // The main loop
+/// while (window.isOpen())
+/// {
+/// // Event processing
+/// // ...
+///
+/// // Clear the whole texture with red color
+/// texture.clear(sf::Color::Red);
+///
+/// // 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();
+/// }
+/// \endcode
+///
+/// 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 sf::RenderTarget, sf::RenderWindow, sf::View, sf::Texture
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/RenderWindow.hpp b/include/SFML/Graphics/RenderWindow.hpp
index 088e368..b069347 100755..100644
--- a/include/SFML/Graphics/RenderWindow.hpp
+++ b/include/SFML/Graphics/RenderWindow.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,108 +28,239 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Graphics/Image.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/RenderTarget.hpp>
+#include <SFML/Graphics/Image.hpp>
#include <SFML/Window/Window.hpp>
#include <string>
namespace sf
{
-class Drawable;
-
////////////////////////////////////////////////////////////
-/// Simple wrapper for sf::Window that allows easy
-/// 2D rendering
+/// \brief Window that can serve as a target for 2D drawing
+///
////////////////////////////////////////////////////////////
-class SFML_API RenderWindow : public Window, public RenderTarget
+class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructor doesn't actually create the window,
+ /// use the other constructors or call "create" to do so.
///
////////////////////////////////////////////////////////////
RenderWindow();
////////////////////////////////////////////////////////////
- /// Construct the window
+ /// \brief Construct a new window
+ ///
+ /// This constructor creates the window with the size and pixel
+ /// depth defined in \a mode. An optional style can be passed to
+ /// customize the look and behaviour 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.
///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style, see sf::Style (Resize | Close by default)
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window)
+ /// \param title Title of the window
+ /// \param style Window style
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- RenderWindow(VideoMode Mode, const std::string& Title, unsigned long WindowStyle = Style::Resize | Style::Close, const WindowSettings& Params = WindowSettings());
+ RenderWindow(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Construct the window from an existing control
+ /// \brief Construct the window from an existing control
///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// Use this constructor if you want to create an SFML
+ /// rendering area into an already existing control.
+ ///
+ /// 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.
+ ///
+ /// \param handle Platform-specific handle of the control
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- RenderWindow(WindowHandle Handle, const WindowSettings& Params = WindowSettings());
+ explicit RenderWindow(WindowHandle handle, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
+ ///
+ /// Closes the window and free all the resources attached to it.
///
////////////////////////////////////////////////////////////
virtual ~RenderWindow();
////////////////////////////////////////////////////////////
- /// Get the width of the rendering region of the window
+ /// \brief Get the size of the rendering region of the window
///
- /// \return Width in pixels
+ /// The size doesn't include the titlebar and borders
+ /// of the window.
+ ///
+ /// \return Size in pixels
///
////////////////////////////////////////////////////////////
- virtual unsigned int GetWidth() const;
+ virtual Vector2u getSize() const;
////////////////////////////////////////////////////////////
- /// Get the height of the rendering region of the window
+ /// \brief Copy the current contents of the window to an image
+ ///
+ /// 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.
///
- /// \return Height in pixels
+ /// \return Image containing the captured contents
///
////////////////////////////////////////////////////////////
- virtual unsigned int GetHeight() const;
+ Image capture() const;
+
+protected:
////////////////////////////////////////////////////////////
- /// Save the content of the window to an image
+ /// \brief Function called after the window has been created
///
- /// \return Image instance containing the contents of the screen
+ /// This function is called so that derived classes can
+ /// perform their own specific initialization as soon as
+ /// the window is created.
///
////////////////////////////////////////////////////////////
- Image Capture() const;
+ virtual void onCreate();
////////////////////////////////////////////////////////////
- /// Convert a point in window coordinates into view coordinates
- ///
- /// \param WindowX : X coordinate of the point to convert, relative to the window
- /// \param WindowY : Y coordinate of the point to convert, relative to the window
- /// \param TargetView : Target view to convert the point to (NULL by default -- uses the current view)
+ /// \brief Function called after the window has been resized
///
- /// \return Converted point
+ /// This function is called so that derived classes can
+ /// perform custom actions when the size of the window changes.
///
////////////////////////////////////////////////////////////
- sf::Vector2f ConvertCoords(unsigned int WindowX, unsigned int WindowY, const View* TargetView = NULL) const;
+ virtual void onResize();
private :
////////////////////////////////////////////////////////////
- /// /see Window::OnCreate
+ /// \brief Activate the target for rendering
///
- ////////////////////////////////////////////////////////////
- virtual void OnCreate();
-
- ////////////////////////////////////////////////////////////
- /// /see RenderTarget::Activate
+ /// \param active True to make the target active, false to deactivate it
+ ///
+ /// \return True if the function succeeded
///
////////////////////////////////////////////////////////////
- virtual bool Activate(bool Active);
+ virtual bool activate(bool active);
};
} // namespace sf
#endif // SFML_RENDERWINDOW_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::RenderWindow
+/// \ingroup graphics
+///
+/// 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:
+///
+/// \code
+/// // 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();
+/// }
+/// \endcode
+///
+/// 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.
+///
+/// \code
+/// // 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();
+/// }
+/// \endcode
+///
+/// \see sf::Window, sf::RenderTarget, sf::RenderTexture, sf::View
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Shader.hpp b/include/SFML/Graphics/Shader.hpp
new file mode 100644
index 0000000..2fbbf6e
--- /dev/null
+++ b/include/SFML/Graphics/Shader.hpp
@@ -0,0 +1,635 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SHADER_HPP
+#define SFML_SHADER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Transform.hpp>
+#include <SFML/Graphics/Color.hpp>
+#include <SFML/Window/GlResource.hpp>
+#include <SFML/System/NonCopyable.hpp>
+#include <SFML/System/Vector2.hpp>
+#include <SFML/System/Vector3.hpp>
+#include <map>
+#include <string>
+
+
+namespace sf
+{
+class InputStream;
+class Texture;
+
+////////////////////////////////////////////////////////////
+/// \brief Shader class (vertex and fragment)
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Shader : GlResource, NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Types of shaders
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Type
+ {
+ Vertex, ///< Vertex shader
+ Fragment ///< Fragment (pixel) shader
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Special type/value that can be passed to setParameter,
+ /// and that represents the texture of the object being drawn
+ ///
+ ////////////////////////////////////////////////////////////
+ struct CurrentTextureType {};
+ static CurrentTextureType CurrentTexture;
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor creates an invalid shader.
+ ///
+ ////////////////////////////////////////////////////////////
+ Shader();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~Shader();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load either the vertex or fragment shader from a file
+ ///
+ /// This function loads a single shader, either vertex 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.
+ ///
+ /// \param filename Path of the vertex or fragment shader file to load
+ /// \param type Type of shader (vertex or fragment)
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromMemory, loadFromStream
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromFile(const std::string& filename, Type type);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param vertexShaderFilename Path of the vertex shader file to load
+ /// \param fragmentShaderFilename Path of the fragment shader file to load
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromMemory, loadFromStream
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromFile(const std::string& vertexShaderFilename, const std::string& fragmentShaderFilename);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load either the vertex or fragment shader from a source code in memory
+ ///
+ /// This function loads a single shader, either vertex 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.
+ ///
+ /// \param shader String containing the source code of the shader
+ /// \param type Type of shader (vertex or fragment)
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromStream
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromMemory(const std::string& shader, Type type);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param vertexShader String containing the source code of the vertex shader
+ /// \param fragmentShader String containing the source code of the fragment shader
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromStream
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromMemory(const std::string& vertexShader, const std::string& fragmentShader);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load either the vertex or fragment shader from a custom stream
+ ///
+ /// This function loads a single shader, either vertex 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.
+ ///
+ /// \param stream Source stream to read from
+ /// \param type Type of shader (vertex or fragment)
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromMemory
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromStream(InputStream& stream, Type type);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param vertexShaderStream Source stream to read the vertex shader from
+ /// \param fragmentShaderStream Source stream to read the fragment shader from
+ ///
+ /// \return True if loading succeeded, false if it failed
+ ///
+ /// \see loadFromFile, loadFromMemory
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromStream(InputStream& vertexShaderStream, InputStream& fragmentShaderStream);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a float parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a float
+ /// (float GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform float myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", 5.2f);
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param x Value to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, float x);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a 2-components vector parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 2x1 vector
+ /// (vec2 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec2 myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", 5.2f, 6.0f);
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param x First component of the value to assign
+ /// \param y Second component of the value to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, float x, float y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a 3-components vector parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 3x1 vector
+ /// (vec3 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec3 myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", 5.2f, 6.0f, -8.1f);
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param x First component of the value to assign
+ /// \param y Second component of the value to assign
+ /// \param z Third component of the value to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, float x, float y, float z);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a 4-components vector parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 4x1 vector
+ /// (vec4 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec4 myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", 5.2f, 6.0f, -8.1f, 0.4f);
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param x First component of the value to assign
+ /// \param y Second component of the value to assign
+ /// \param z Third component of the value to assign
+ /// \param w Fourth component of the value to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, float x, float y, float z, float w);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a 2-components vector parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 2x1 vector
+ /// (vec2 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec2 myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", sf::Vector2f(5.2f, 6.0f));
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param vector Vector to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, const Vector2f& vector);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a 3-components vector parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 3x1 vector
+ /// (vec3 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec3 myparam; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("myparam", sf::Vector3f(5.2f, 6.0f, -8.1f));
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param vector Vector to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, const Vector3f& vector);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a color parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 4x1 vector
+ /// (vec4 GLSL type).
+ ///
+ /// 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, 125, 0, 255) will be transformed
+ /// to a vec4(1.0, 0.5, 0.0, 1.0) in the shader.
+ ///
+ /// Example:
+ /// \code
+ /// uniform vec4 color; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("color", sf::Color(255, 128, 0, 255));
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param color Color to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, const Color& color);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a matrix parameter of the shader
+ ///
+ /// \a name is the name of the variable to change in the shader.
+ /// The corresponding parameter in the shader must be a 4x4 matrix
+ /// (mat4 GLSL type).
+ ///
+ /// Example:
+ /// \code
+ /// uniform mat4 matrix; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// sf::Transform transform;
+ /// transform.translate(5, 10);
+ /// shader.setParameter("matrix", transform);
+ /// \endcode
+ ///
+ /// \param name Name of the parameter in the shader
+ /// \param transform Transform to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, const sf::Transform& transform);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a texture parameter of the shader
+ ///
+ /// \a 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:
+ /// \code
+ /// uniform sampler2D the_texture; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// sf::Texture texture;
+ /// ...
+ /// shader.setParameter("the_texture", texture);
+ /// \endcode
+ /// It is important to note that \a texture must remain alive as long
+ /// as the shader uses it, no copy is made internally.
+ ///
+ /// To use the texture of the object being draw, which cannot be
+ /// known in advance, you can pass the special value
+ /// sf::Shader::CurrentTexture:
+ /// \code
+ /// shader.setParameter("the_texture", sf::Shader::CurrentTexture).
+ /// \endcode
+ ///
+ /// \param name Name of the texture in the shader
+ /// \param texture Texture to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, const Texture& texture);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change a texture parameter of the shader
+ ///
+ /// 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:
+ /// \code
+ /// uniform sampler2D current; // this is the variable in the shader
+ /// \endcode
+ /// \code
+ /// shader.setParameter("current", sf::Shader::CurrentTexture);
+ /// \endcode
+ ///
+ /// \param name Name of the texture in the shader
+ ///
+ ////////////////////////////////////////////////////////////
+ void setParameter(const std::string& name, CurrentTextureType);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \code
+ /// sf::Shader s1, s2;
+ /// ...
+ /// sf::Shader::bind(&s1);
+ /// // draw OpenGL stuff that use s1...
+ /// sf::Shader::bind(&s2);
+ /// // draw OpenGL stuff that use s2...
+ /// sf::Shader::bind(NULL);
+ /// // draw OpenGL stuff that use no shader...
+ /// \endcode
+ ///
+ /// \param shader Shader to bind, can be null to use no shader
+ ///
+ ////////////////////////////////////////////////////////////
+ static void bind(const Shader* shader);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return True if shaders are supported, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isAvailable();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Compile the shader(s) and create the program
+ ///
+ /// If one of the arguments is NULL, the corresponding shader
+ /// is not created.
+ ///
+ /// \param vertexShaderCode Source code of the vertex shader
+ /// \param fragmentShaderCode Source code of the fragment shader
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ bool compile(const char* vertexShaderCode, const char* fragmentShaderCode);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Bind all the textures used by the shader
+ ///
+ /// This function each texture to a different unit, and
+ /// updates the corresponding variables in the shader accordingly.
+ ///
+ ////////////////////////////////////////////////////////////
+ void bindTextures() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the location ID of a shader parameter
+ ///
+ /// \param name Name of the parameter to search
+ ///
+ /// \return Location ID of the parameter, or -1 if not found
+ ///
+ ////////////////////////////////////////////////////////////
+ int getParamLocation(const std::string& name);
+
+ ////////////////////////////////////////////////////////////
+ // Types
+ ////////////////////////////////////////////////////////////
+ typedef std::map<int, const Texture*> TextureTable;
+ typedef std::map<std::string, int> ParamTable;
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ unsigned int m_shaderProgram; ///< OpenGL identifier for the program
+ int m_currentTexture; ///< Location of the current texture in the shader
+ TextureTable m_textures; ///< Texture variables in the shader, mapped to their location
+ ParamTable m_params; ///< Parameters location cache
+};
+
+} // namespace sf
+
+
+#endif // SFML_SHADER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Shader
+/// \ingroup graphics
+///
+/// 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 two kinds of shaders:
+/// \li Vertex shaders, that process vertices
+/// \li Fragment (pixel) shaders, that process pixels
+///
+/// A sf::Shader can be composed of either a vertex shader
+/// alone, a fragment shader alone, or both combined
+/// (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 shader has its own variables
+/// that you can set from your C++ application. sf::Shader
+/// handles 5 different types of variables:
+/// \li floats
+/// \li vectors (2, 3 or 4 components)
+/// \li colors
+/// \li textures
+/// \li transforms (matrices)
+///
+/// The value of the variables can be changed at any time
+/// with the various overloads of the setParameter function:
+/// \code
+/// shader.setParameter("offset", 2.f);
+/// shader.setParameter("point", 0.5f, 0.8f, 0.3f);
+/// shader.setParameter("color", sf::Color(128, 50, 255));
+/// shader.setParameter("matrix", transform); // transform is a sf::Transform
+/// shader.setParameter("overlay", texture); // texture is a sf::Texture
+/// shader.setParameter("texture", sf::Shader::CurrentTexture);
+/// \endcode
+///
+/// The special Shader::CurrentTexture argument maps the
+/// given texture variable 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 Draw function:
+/// \code
+/// window.draw(sprite, &shader);
+/// \endcode
+///
+/// ... which is in fact just a shortcut for this:
+/// \code
+/// sf::RenderStates states;
+/// states.shader = &shader;
+/// window.draw(sprite, states);
+/// \endcode
+///
+/// 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:
+/// \li draw everything to a sf::RenderTexture, then draw it to
+/// the main target using the shader
+/// \li 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.
+/// \code
+/// sf::Shader::bind(&shader);
+/// ... render OpenGL geometry ...
+/// sf::Shader::bind(NULL);
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Shape.hpp b/include/SFML/Graphics/Shape.hpp
index 37fb3c4..bc38775 100755..100644
--- a/include/SFML/Graphics/Shape.hpp
+++ b/include/SFML/Graphics/Shape.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,283 +28,318 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Drawable.hpp>
+#include <SFML/Graphics/Transformable.hpp>
+#include <SFML/Graphics/VertexArray.hpp>
#include <SFML/System/Vector2.hpp>
-#include <vector>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Shape defines a drawable convex shape ; it also defines
-/// helper functions to draw simple shapes like
-/// lines, rectangles, circles, etc.
+/// \brief Base class for textured shapes with outline
+///
////////////////////////////////////////////////////////////
-class SFML_API Shape : public sf::Drawable
+class SFML_GRAPHICS_API Shape : public Drawable, public Transformable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Virtual destructor
///
////////////////////////////////////////////////////////////
- Shape();
+ virtual ~Shape();
////////////////////////////////////////////////////////////
- /// Add a point to the shape
+ /// \brief Change the source texture of the shape
///
- /// \param X, Y : Position of the point
- /// \param Col : Color of the point (white by default)
- /// \param OutlineCol : Outline color of the point (black by default)
+ /// The \a 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 behaviour is undefined.
+ /// \a texture can be NULL to disable texturing.
+ /// If \a 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.
///
- ////////////////////////////////////////////////////////////
- void AddPoint(float X, float Y, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
-
- ////////////////////////////////////////////////////////////
- /// Add a point to the shape
+ /// \param texture New texture
+ /// \param resetRect Should the texture rect be reset to the size of the new texture?
///
- /// \param Position : Position of the point
- /// \param Col : Color of the point (white by default)
- /// \param OutlineCol : Outline color of the point (black by default)
+ /// \see getTexture, setTextureRect
///
////////////////////////////////////////////////////////////
- void AddPoint(const Vector2f& Position, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
+ void setTexture(const Texture* texture, bool resetRect = false);
////////////////////////////////////////////////////////////
- /// Get the number of points composing the shape
+ /// \brief Set the sub-rectangle of the texture that the shape will display
///
- /// \param Total number of points
+ /// 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.
///
- ////////////////////////////////////////////////////////////
- unsigned int GetNbPoints() const;
-
- ////////////////////////////////////////////////////////////
- /// Enable or disable filling the shape.
- /// Fill is enabled by default
+ /// \param rect Rectangle defining the region of the texture to display
///
- /// \param Enable : True to enable, false to disable
+ /// \see getTextureRect, setTexture
///
////////////////////////////////////////////////////////////
- void EnableFill(bool Enable);
+ void setTextureRect(const IntRect& rect);
////////////////////////////////////////////////////////////
- /// Enable or disable drawing the shape outline.
- /// Outline is enabled by default
+ /// \brief Set the fill color of the shape
///
- /// \param Enable : True to enable, false to disable
+ /// 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.
///
- ////////////////////////////////////////////////////////////
- void EnableOutline(bool Enable);
-
- ////////////////////////////////////////////////////////////
- /// Set the position of a point
+ /// \param color New color of the shape
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
- /// \param Position : New position of the Index-th point
+ /// \see getFillColor, setOutlineColor
///
////////////////////////////////////////////////////////////
- void SetPointPosition(unsigned int Index, const Vector2f& Position);
+ void setFillColor(const Color& color);
////////////////////////////////////////////////////////////
- /// Set the position of a point
+ /// \brief Set the outline color of the shape
+ ///
+ /// By default, the shape's outline color is opaque white.
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
- /// \param X : New X coordinate of the Index-th point
- /// \param Y : New Y coordinate of the Index-th point
+ /// \param color New outline color of the shape
+ ///
+ /// \see getOutlineColor, setFillColor
///
////////////////////////////////////////////////////////////
- void SetPointPosition(unsigned int Index, float X, float Y);
+ void setOutlineColor(const Color& color);
////////////////////////////////////////////////////////////
- /// Set the color of a point
+ /// \brief 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.
+ ///
+ /// \param thickness New outline thickness
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
- /// \param Col : New color of the Index-th point
+ /// \see getOutlineThickness
///
////////////////////////////////////////////////////////////
- void SetPointColor(unsigned int Index, const Color& Col);
+ void setOutlineThickness(float thickness);
////////////////////////////////////////////////////////////
- /// Set the outline color of a point
+ /// \brief 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.
+ ///
+ /// \return Pointer to the shape's texture
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
- /// \param OutlineCol : New outline color of the Index-th point
+ /// \see setTexture
///
////////////////////////////////////////////////////////////
- void SetPointOutlineColor(unsigned int Index, const Color& OutlineCol);
+ const Texture* getTexture() const;
////////////////////////////////////////////////////////////
- /// Change the width of the shape outline
+ /// \brief Get the sub-rectangle of the texture displayed by the shape
///
- /// \param Width : New width
+ /// \return Texture rectangle of the shape
+ ///
+ /// \see setTextureRect
///
////////////////////////////////////////////////////////////
- void SetOutlineWidth(float Width);
+ const IntRect& getTextureRect() const;
////////////////////////////////////////////////////////////
- /// Get the position of a point
+ /// \brief Get the fill color of the shape
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
+ /// \return Fill color of the shape
///
- /// \return Position of the Index-th point
+ /// \see setFillColor
///
////////////////////////////////////////////////////////////
- const Vector2f& GetPointPosition(unsigned int Index) const;
+ const Color& getFillColor() const;
////////////////////////////////////////////////////////////
- /// Get the color of a point
+ /// \brief Get the outline color of the shape
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
+ /// \return Outline color of the shape
///
- /// \return Color of the Index-th point
+ /// \see setOutlineColor
///
////////////////////////////////////////////////////////////
- const Color& GetPointColor(unsigned int Index) const;
+ const Color& getOutlineColor() const;
////////////////////////////////////////////////////////////
- /// Get the outline color of a point
+ /// \brief Get the outline thickness of the shape
///
- /// \param Index : Index of the point, in range [0, GetNbPoints() - 1]
+ /// \return Outline thickness of the shape
///
- /// \return Outline color of the Index-th point
+ /// \see setOutlineThickness
///
////////////////////////////////////////////////////////////
- const Color& GetPointOutlineColor(unsigned int Index) const;
+ float getOutlineThickness() const;
////////////////////////////////////////////////////////////
- /// Get the width of the shape outline
+ /// \brief Get the total number of points of the shape
+ ///
+ /// \return Number of points of the shape
///
- /// \return Current outline width
+ /// \see getPoint
///
////////////////////////////////////////////////////////////
- float GetOutlineWidth() const;
+ virtual unsigned int getPointCount() const = 0;
////////////////////////////////////////////////////////////
- /// Create a shape made of a single line (use floats)
+ /// \brief Get a point of the shape
+ ///
+ /// The result is undefined if \a index is out of the valid range.
+ ///
+ /// \param index Index of the point to get, in range [0 .. getPointCount() - 1]
+ ///
+ /// \return Index-th point of the shape
///
- /// \param P1X, P1Y : Position of the first point
- /// \param P2X, P2Y : Position second point
- /// \param Thickness : Line thickness
- /// \param Col : Color used to draw the line
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// \see getPointCount
///
////////////////////////////////////////////////////////////
- static Shape Line(float P1X, float P1Y, float P2X, float P2Y, float Thickness, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
+ virtual Vector2f getPoint(unsigned int index) const = 0;
////////////////////////////////////////////////////////////
- /// Create a shape made of a single line (use vectors)
+ /// \brief Get the local bounding rectangle of the entity
///
- /// \param P1X, P1Y : Position of the first point
- /// \param P2X, P2Y : Position second point
- /// \param Thickness : Line thickness
- /// \param Col : Color used to draw the line
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// 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.
+ ///
+ /// \return Local bounding rectangle of the entity
///
////////////////////////////////////////////////////////////
- static Shape Line(const Vector2f& P1, const Vector2f& P2, float Thickness, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
+ FloatRect getLocalBounds() const;
////////////////////////////////////////////////////////////
- /// Create a shape made of a single rectangle (use floats)
+ /// \brief Get the global bounding rectangle of the entity
+ ///
+ /// The returned rectangle is in global coordinates, which means
+ /// that it takes in 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.
///
- /// \param P1X, P1Y : Position of the first point
- /// \param P2X, P2Y : Position second point
- /// \param Col : Color used to fill the rectangle
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// \return Global bounding rectangle of the entity
///
////////////////////////////////////////////////////////////
- static Shape Rectangle(float P1X, float P1Y, float P2X, float P2Y, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
+ FloatRect getGlobalBounds() const;
+
+protected :
////////////////////////////////////////////////////////////
- /// Create a shape made of a single rectangle (use vectors)
- ///
- /// \param P1 : Position of the first point
- /// \param P2 : Position second point
- /// \param Col : Color used to fill the rectangle
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- static Shape Rectangle(const Vector2f& P1, const Vector2f& P2, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
+ Shape();
////////////////////////////////////////////////////////////
- /// Create a shape made of a single circle (use floats)
+ /// \brief Recompute the internal geometry of the shape
///
- /// \param X, Y : Position of the center
- /// \param Radius : Radius
- /// \param Col : Color used to fill the circle
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// This function must be called by the derived class everytime
+ /// the shape's points change (ie. the result of either
+ /// getPointCount or getPoint is different).
///
////////////////////////////////////////////////////////////
- static Shape Circle(float X, float Y, float Radius, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
+ void update();
+
+private :
////////////////////////////////////////////////////////////
- /// Create a shape made of a single circle (use vectors)
+ /// \brief Draw the shape to a render target
///
- /// \param Center : Position of the center
- /// \param Radius : Radius
- /// \param Col : Color used to fill the circle
- /// \param Outline : Outline width (0 by default)
- /// \param OutlineCol : Color used to draw the outline (black by default)
+ /// \param target Render target to draw to
+ /// \param states Current render states
///
////////////////////////////////////////////////////////////
- static Shape Circle(const Vector2f& Center, float Radius, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
-
-protected :
+ virtual void draw(RenderTarget& target, RenderStates states) const;
////////////////////////////////////////////////////////////
- /// /see Drawable::Render
+ /// \brief Update the fill vertices' color
///
////////////////////////////////////////////////////////////
- virtual void Render(RenderTarget& Target) const;
-
-private :
+ void updateFillColors();
////////////////////////////////////////////////////////////
- /// Compile the shape : compute its center and its outline
+ /// \brief Update the fill vertices' texture coordinates
///
////////////////////////////////////////////////////////////
- void Compile();
+ void updateTexCoords();
////////////////////////////////////////////////////////////
- /// Compute the normal of a given 2D segment
- ///
- /// \param P1 : First point of the segment
- /// \param P2 : Second point of the segment
- /// \param Normal : Calculated normal
- ///
- /// \return False if the normal couldn't be calculated (segment is null)
+ /// \brief Update the outline vertices' position
///
////////////////////////////////////////////////////////////
- static bool ComputeNormal(const Vector2f& P1, const Vector2f& P2, Vector2f& Normal);
+ void updateOutline();
////////////////////////////////////////////////////////////
- /// Defines a simple 2D point
+ /// \brief Update the outline vertices' color
+ ///
////////////////////////////////////////////////////////////
- struct Point
- {
- Point(const Vector2f& Pos = Vector2f(0, 0), const Color& C = Color(255, 255, 255), const Color& OutlineC = Color(255, 255, 255));
+ void updateOutlineColors();
- Vector2f Position; ///< Position
- Vector2f Normal; ///< Extruded normal
- Color Col; ///< Color of the point
- Color OutlineCol; ///< Outline color of the point
- };
+private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::vector<Point> myPoints; ///< Points composing the shape
- float myOutline; ///< Outline width
- bool myIsFillEnabled; ///< Should we draw the inside if the shape ?
- bool myIsOutlineEnabled; ///< Should we draw the outline if the shape ?
- bool myIsCompiled; ///< Compiled state of the shape
+ const Texture* m_texture; ///< Texture of the shape
+ IntRect m_textureRect; ///< Rectangle defining the area of the source texture to display
+ Color m_fillColor; ///< Fill color
+ Color m_outlineColor; ///< Outline color
+ float m_outlineThickness; ///< Thickness of the shape's outline
+ VertexArray m_vertices; ///< Vertex array containing the fill geometry
+ VertexArray m_outlineVertices; ///< Vertex array containing the outline geometry
+ FloatRect m_insideBounds; ///< Bounding rectangle of the inside (fill)
+ FloatRect m_bounds; ///< Bounding rectangle of the whole shape (outline + fill)
};
} // namespace sf
#endif // SFML_SHAPE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Shape
+/// \ingroup graphics
+///
+/// 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:
+/// \li a texture
+/// \li a texture rectangle
+/// \li a fill color
+/// \li an outline color
+/// \li an outline thickness
+///
+/// Each feature is optional, and can be disabled easily:
+/// \li the texture can be null
+/// \li the fill/outline colors can be sf::Color::Transparent
+/// \li the outline thickness can be zero
+///
+/// You can write your own derived shape class, there are only
+/// two virtual functions to override:
+/// \li getPointCount must return the number of points of the shape
+/// \li getPoint must return the points of the shape
+///
+/// \see sf::RectangleShape, sf::CircleShape, sf::ConvexShape, sf::Transformable
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Sprite.hpp b/include/SFML/Graphics/Sprite.hpp
index 9d47bb4..954881d 100755..100644
--- a/include/SFML/Graphics/Sprite.hpp
+++ b/include/SFML/Graphics/Sprite.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,149 +28,250 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Drawable.hpp>
+#include <SFML/Graphics/Transformable.hpp>
+#include <SFML/Graphics/Vertex.hpp>
#include <SFML/Graphics/Rect.hpp>
namespace sf
{
-class Image;
+class Texture;
////////////////////////////////////////////////////////////
-/// Sprite defines a sprite : texture, transformations,
-/// color, and draw on screen
+/// \brief Drawable representation of a texture, with its
+/// own transformations, color, etc.
+///
////////////////////////////////////////////////////////////
-class SFML_API Sprite : public Drawable
+class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates an empty sprite with no source texture.
///
////////////////////////////////////////////////////////////
Sprite();
////////////////////////////////////////////////////////////
- /// Construct the sprite from a source image
+ /// \brief Construct the sprite from a source texture
+ ///
+ /// \param texture Source texture
///
- /// \param Img : Image of the sprite
- /// \param Position : Position of the sprite (0, 0 by default)
- /// \param Scale : Scale factor (1, 1 by default)
- /// \param Rotation : Orientation, in degrees (0 by default)
- /// \param Col : Color of the sprite (white by default)
+ /// \see setTexture
///
////////////////////////////////////////////////////////////
- explicit Sprite(const Image& Img, const Vector2f& Position = Vector2f(0, 0), const Vector2f& Scale = Vector2f(1, 1), float Rotation = 0.f, const Color& Col = Color(255, 255, 255, 255));
+ explicit Sprite(const Texture& texture);
////////////////////////////////////////////////////////////
- /// Change the image of the sprite
+ /// \brief Construct the sprite from a sub-rectangle of a source texture
///
- /// \param Img : New image
+ /// \param texture Source texture
+ /// \param rectangle Sub-rectangle of the texture to assign to the sprite
+ ///
+ /// \see setTexture, setTextureRect
///
////////////////////////////////////////////////////////////
- void SetImage(const Image& Img);
+ Sprite(const Texture& texture, const IntRect& rectangle);
////////////////////////////////////////////////////////////
- /// Set the sub-rectangle of the sprite inside the source image.
- /// By default, the subrect covers the entire source image
+ /// \brief Change the source texture of the sprite
+ ///
+ /// The \a 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 behaviour is undefined.
+ /// If \a 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.
///
- /// \param SubRect : New sub-rectangle
+ /// \param texture New texture
+ /// \param resetRect Should the texture rect be reset to the size of the new texture?
+ ///
+ /// \see getTexture, setTextureRect
///
////////////////////////////////////////////////////////////
- void SetSubRect(const IntRect& SubRect);
+ void setTexture(const Texture& texture, bool resetRect = false);
////////////////////////////////////////////////////////////
- /// Resize the sprite (by changing its scale factors) (take 2 values).
- /// The default size is defined by the subrect
+ /// \brief 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.
+ ///
+ /// \param rectangle Rectangle defining the region of the texture to display
///
- /// \param Width : New width (must be strictly positive)
- /// \param Height : New height (must be strictly positive)
+ /// \see getTextureRect, setTexture
///
////////////////////////////////////////////////////////////
- void Resize(float Width, float Height);
+ void setTextureRect(const IntRect& rectangle);
////////////////////////////////////////////////////////////
- /// Resize the sprite (by changing its scale factors) (take a 2D vector).
- /// The default size is defined by the subrect
+ /// \brief Set the global color of the sprite
///
- /// \param Size : New size (both coordinates must be strictly positive)
+ /// 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.
+ ///
+ /// \param color New color of the sprite
+ ///
+ /// \see getColor
///
////////////////////////////////////////////////////////////
- void Resize(const Vector2f& Size);
+ void setColor(const Color& color);
////////////////////////////////////////////////////////////
- /// Flip the sprite horizontally
+ /// \brief 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.
+ ///
+ /// \return Pointer to the sprite's texture
///
- /// \param Flipped : True to flip the sprite
+ /// \see setTexture
///
////////////////////////////////////////////////////////////
- void FlipX(bool Flipped);
+ const Texture* getTexture() const;
////////////////////////////////////////////////////////////
- /// Flip the sprite vertically
+ /// \brief Get the sub-rectangle of the texture displayed by the sprite
///
- /// \param Flipped : True to flip the sprite
+ /// \return Texture rectangle of the sprite
+ ///
+ /// \see setTextureRect
///
////////////////////////////////////////////////////////////
- void FlipY(bool Flipped);
+ const IntRect& getTextureRect() const;
////////////////////////////////////////////////////////////
- /// Get the source image of the sprite
+ /// \brief Get the global color of the sprite
+ ///
+ /// \return Global color of the sprite
///
- /// \return Pointer to the image (can be NULL)
+ /// \see setColor
///
////////////////////////////////////////////////////////////
- const Image* GetImage() const;
+ const Color& getColor() const;
////////////////////////////////////////////////////////////
- /// Get the sub-rectangle of the sprite inside the source image
+ /// \brief 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.
///
- /// \return Sub-rectangle
+ /// \return Local bounding rectangle of the entity
///
////////////////////////////////////////////////////////////
- const IntRect& GetSubRect() const;
+ FloatRect getLocalBounds() const;
////////////////////////////////////////////////////////////
- /// Get the sprite size
+ /// \brief Get the global bounding rectangle of the entity
///
- /// \return Size of the sprite
+ /// The returned rectangle is in global coordinates, which means
+ /// that it takes in 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.
+ ///
+ /// \return Global bounding rectangle of the entity
///
////////////////////////////////////////////////////////////
- Vector2f GetSize() const;
+ FloatRect getGlobalBounds() const;
+
+private :
////////////////////////////////////////////////////////////
- /// Get the color of a given pixel in the sprite
- /// (point is in local coordinates)
- ///
- /// \param X : X coordinate of the pixel to get
- /// \param Y : Y coordinate of the pixel to get
+ /// \brief Draw the sprite to a render target
///
- /// \return Color of pixel (X, Y)
+ /// \param target Render target to draw to
+ /// \param states Current render states
///
////////////////////////////////////////////////////////////
- Color GetPixel(unsigned int X, unsigned int Y) const;
-
-protected :
+ virtual void draw(RenderTarget& target, RenderStates states) const;
////////////////////////////////////////////////////////////
- /// /see Drawable::Render
+ /// \brief Update the vertices' positions
///
////////////////////////////////////////////////////////////
- virtual void Render(RenderTarget& Target) const;
+ void updatePositions();
-private :
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the vertices' texture coordinates
+ ///
+ ////////////////////////////////////////////////////////////
+ void updateTexCoords();
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- ResourcePtr<Image> myImage; ///< Image used to draw the sprite
- IntRect mySubRect; ///< Sub-rectangle of source image to assign to the sprite
- bool myIsFlippedX; ///< Is the sprite flipped on the X axis ?
- bool myIsFlippedY; ///< Is the sprite flipped on the Y axis ?
+ Vertex m_vertices[4]; ///< Vertices defining the sprite's geometry
+ const Texture* m_texture; ///< Texture of the sprite
+ IntRect m_textureRect; ///< Rectangle defining the area of the source texture to display
};
} // namespace sf
#endif // SFML_SPRITE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Sprite
+/// \ingroup graphics
+///
+/// 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).
+///
+/// Usage example:
+/// \code
+/// // 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);
+/// \endcode
+///
+/// \see sf::Texture, sf::Transformable
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/String.hpp b/include/SFML/Graphics/String.hpp
deleted file mode 100755
index b0ca81b..0000000
--- a/include/SFML/Graphics/String.hpp
+++ /dev/null
@@ -1,191 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_STRING_HPP
-#define SFML_STRING_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Resource.hpp>
-#include <SFML/System/Unicode.hpp>
-#include <SFML/Graphics/Drawable.hpp>
-#include <SFML/Graphics/Font.hpp>
-#include <SFML/Graphics/Rect.hpp>
-#include <string>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// String defines a graphical 2D text, that can be drawn on screen
-////////////////////////////////////////////////////////////
-class SFML_API String : public Drawable
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Enumerate the string drawing styles
- ////////////////////////////////////////////////////////////
- enum Style
- {
- Regular = 0, ///< Regular characters, no style
- Bold = 1 << 0, ///< Characters are bold
- Italic = 1 << 1, ///< Characters are in italic
- Underlined = 1 << 2 ///< Characters are underlined
- };
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- String();
-
- ////////////////////////////////////////////////////////////
- /// Construct the string from any kind of text
- ///
- /// \param Text : Text assigned to the string
- /// \param Font : Font used to draw the string (SFML built-in font by default)
- /// \param Size : Characters size (30 by default)
- ///
- ////////////////////////////////////////////////////////////
- explicit String(const Unicode::Text& Text, const Font& CharFont = Font::GetDefaultFont(), float Size = 30.f);
-
- ////////////////////////////////////////////////////////////
- /// Set the text (from any kind of string)
- ///
- /// \param Text : New text
- ///
- ////////////////////////////////////////////////////////////
- void SetText(const Unicode::Text& Text);
-
- ////////////////////////////////////////////////////////////
- /// Set the font of the string
- ///
- /// \param Font : Font to use
- ///
- ////////////////////////////////////////////////////////////
- void SetFont(const Font& CharFont);
-
- ////////////////////////////////////////////////////////////
- /// Set the size of the string
- /// The default size is 30
- ///
- /// \param Size : New size, in pixels
- ///
- ////////////////////////////////////////////////////////////
- void SetSize(float Size);
-
- ////////////////////////////////////////////////////////////
- /// Set the style of the text
- /// The default style is Regular
- ///
- /// \param TextStyle : New text style, (combination of Style enum values)
- ///
- ////////////////////////////////////////////////////////////
- void SetStyle(unsigned long TextStyle);
-
- ////////////////////////////////////////////////////////////
- /// Get the text (the returned text can be converted implicitely to any kind of string)
- ///
- /// \return String's text
- ///
- ////////////////////////////////////////////////////////////
- const Unicode::Text& GetText() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the font used by the string
- ///
- /// \return Font used
- ///
- ////////////////////////////////////////////////////////////
- const Font& GetFont() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the size of the characters
- ///
- /// \return Size of the characters
- ///
- ////////////////////////////////////////////////////////////
- float GetSize() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the style of the text
- ///
- /// \return Current string style (combination of Style enum values)
- ///
- ////////////////////////////////////////////////////////////
- unsigned long GetStyle() const;
-
- ////////////////////////////////////////////////////////////
- /// Return the visual position of the Index-th character of the string,
- /// in coordinates relative to the string
- /// (note : translation, center, rotation and scale are not applied)
- ///
- /// \param Index : Index of the character
- ///
- /// \return Position of the Index-th character (end of string if Index is out of range)
- ///
- ////////////////////////////////////////////////////////////
- sf::Vector2f GetCharacterPos(std::size_t Index) const;
-
- ////////////////////////////////////////////////////////////
- /// Get the string rectangle on screen
- ///
- /// \return Rectangle contaning the string in screen coordinates
- ///
- ////////////////////////////////////////////////////////////
- FloatRect GetRect() const;
-
-protected :
-
- ////////////////////////////////////////////////////////////
- /// /see Drawable::Render
- ///
- ////////////////////////////////////////////////////////////
- virtual void Render(RenderTarget& Target) const;
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Recompute the bounding rectangle of the text
- ///
- ////////////////////////////////////////////////////////////
- void RecomputeRect();
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- Unicode::Text myText; ///< Text to display
- ResourcePtr<Font> myFont; ///< Font used to display the string
- float mySize; ///< Size of the characters
- unsigned long myStyle; ///< Text style (see Style enum)
- FloatRect myBaseRect; ///< Bounding rectangle of the text in object coordinates
- bool myNeedRectUpdate; ///< Does the bounding rect need an update ?
-};
-
-} // namespace sf
-
-
-#endif // SFML_STRING_HPP
diff --git a/include/SFML/Graphics/Text.hpp b/include/SFML/Graphics/Text.hpp
new file mode 100644
index 0000000..04abd24
--- /dev/null
+++ b/include/SFML/Graphics/Text.hpp
@@ -0,0 +1,351 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TEXT_HPP
+#define SFML_TEXT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Drawable.hpp>
+#include <SFML/Graphics/Transformable.hpp>
+#include <SFML/Graphics/Font.hpp>
+#include <SFML/Graphics/Rect.hpp>
+#include <SFML/Graphics/VertexArray.hpp>
+#include <SFML/System/String.hpp>
+#include <string>
+#include <vector>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Graphical text that can be drawn to a render target
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Text : public Drawable, public Transformable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enumeration of the string drawing styles
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Style
+ {
+ Regular = 0, ///< Regular characters, no style
+ Bold = 1 << 0, ///< Bold characters
+ Italic = 1 << 1, ///< Italic characters
+ Underlined = 1 << 2 ///< Underlined characters
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Creates an empty text.
+ ///
+ ////////////////////////////////////////////////////////////
+ Text();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the text from a string, font and size
+ ///
+ /// \param string Text assigned to the string
+ /// \param font Font used to draw the string
+ /// \param characterSize Base size of characters, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ Text(const String& string, const Font& font, unsigned int characterSize = 30);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the text's string
+ ///
+ /// The \a string argument is a sf::String, which can
+ /// automatically be constructed from standard string types.
+ /// So, the following calls are all valid:
+ /// \code
+ /// text.setString("hello");
+ /// text.setString(L"hello");
+ /// text.setString(std::string("hello"));
+ /// text.setString(std::wstring(L"hello"));
+ /// \endcode
+ /// A text's string is empty by default.
+ ///
+ /// \param string New string
+ ///
+ /// \see getString
+ ///
+ ////////////////////////////////////////////////////////////
+ void setString(const String& string);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the text's font
+ ///
+ /// The \a 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 behaviour is undefined.
+ ///
+ /// \param font New font
+ ///
+ /// \see getFont
+ ///
+ ////////////////////////////////////////////////////////////
+ void setFont(const Font& font);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the character size
+ ///
+ /// The default size is 30.
+ ///
+ /// \param size New character size, in pixels
+ ///
+ /// \see getCharacterSize
+ ///
+ ////////////////////////////////////////////////////////////
+ void setCharacterSize(unsigned int size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param style New style
+ ///
+ /// \see getStyle
+ ///
+ ////////////////////////////////////////////////////////////
+ void setStyle(Uint32 style);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the global color of the text
+ ///
+ /// By default, the text's color is opaque white.
+ ///
+ /// \param color New color of the text
+ ///
+ /// \see getColor
+ ///
+ ////////////////////////////////////////////////////////////
+ void setColor(const Color& color);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// sf::String s1 = text.getString();
+ /// std::string s2 = text.getString();
+ /// std::wstring s3 = text.getString();
+ /// \endcode
+ ///
+ /// \return Text's string
+ ///
+ /// \see setString
+ ///
+ ////////////////////////////////////////////////////////////
+ const String& getString() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the text's font
+ ///
+ /// If the text has no font attached, a NULL pointer is returned.
+ /// The returned reference is const, which means that you
+ /// cannot modify the font when you get it from this function.
+ ///
+ /// \return Pointer to the text's font
+ ///
+ /// \see setFont
+ ///
+ ////////////////////////////////////////////////////////////
+ const Font* getFont() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the character size
+ ///
+ /// \return Size of the characters, in pixels
+ ///
+ /// \see setCharacterSize
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned int getCharacterSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the text's style
+ ///
+ /// \return Text's style
+ ///
+ /// \see setStyle
+ ///
+ ////////////////////////////////////////////////////////////
+ Uint32 getStyle() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the global color of the text
+ ///
+ /// \return Global color of the text
+ ///
+ /// \see setColor
+ ///
+ ////////////////////////////////////////////////////////////
+ const Color& getColor() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the position of the \a 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 \a index is out of range, the position of the end of
+ /// the string is returned.
+ ///
+ /// \param index Index of the character
+ ///
+ /// \return Position of the character
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2f findCharacterPos(std::size_t index) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Local bounding rectangle of the entity
+ ///
+ ////////////////////////////////////////////////////////////
+ FloatRect getLocalBounds() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the global bounding rectangle of the entity
+ ///
+ /// The returned rectangle is in global coordinates, which means
+ /// that it takes in 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.
+ ///
+ /// \return Global bounding rectangle of the entity
+ ///
+ ////////////////////////////////////////////////////////////
+ FloatRect getGlobalBounds() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Draw the text to a render target
+ ///
+ /// \param target Render target to draw to
+ /// \param states Current render states
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void draw(RenderTarget& target, RenderStates states) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the text's geometry
+ ///
+ ////////////////////////////////////////////////////////////
+ void updateGeometry();
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ String m_string; ///< String to display
+ const Font* m_font; ///< Font used to display the string
+ unsigned int m_characterSize; ///< Base size of characters, in pixels
+ Uint32 m_style; ///< Text style (see Style enum)
+ Color m_color; ///< Text color
+ VertexArray m_vertices; ///< Vertex array containing the text's geometry
+ FloatRect m_bounds; ///< Bounding rectangle of the text (in local coordinates)
+};
+
+} // namespace sf
+
+
+#endif // SFML_TEXT_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Text
+/// \ingroup graphics
+///
+/// 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), the global color
+/// 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).
+///
+/// Usage example:
+/// \code
+/// // Declare and load a font
+/// sf::Font font;
+/// font.loadFromFile("arial.ttf");
+///
+/// // Create a text
+/// sf::Text text("hello", font);
+/// text.setCharacterSize(30);
+/// text.setStyle(sf::Text::Bold);
+/// text.setColor(sf::Color::Red);
+///
+/// // Draw it
+/// window.draw(text);
+/// \endcode
+///
+/// \see sf::Font, sf::Transformable
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Texture.hpp b/include/SFML/Graphics/Texture.hpp
new file mode 100644
index 0000000..ba61f54
--- /dev/null
+++ b/include/SFML/Graphics/Texture.hpp
@@ -0,0 +1,602 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TEXTURE_HPP
+#define SFML_TEXTURE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Image.hpp>
+#include <SFML/Window/GlResource.hpp>
+
+
+namespace sf
+{
+class Window;
+class RenderTarget;
+class RenderTexture;
+class InputStream;
+
+////////////////////////////////////////////////////////////
+/// \brief Image living on the graphics card that can be used for drawing
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Texture : GlResource
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Types of texture coordinates that can be used for rendering
+ ///
+ ////////////////////////////////////////////////////////////
+ enum CoordinateType
+ {
+ Normalized, ///< Texture coordinates in range [0 .. 1]
+ Pixels ///< Texture coordinates in range [0 .. size]
+ };
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Creates an empty texture.
+ ///
+ ////////////////////////////////////////////////////////////
+ Texture();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Copy constructor
+ ///
+ /// \param copy instance to copy
+ ///
+ ////////////////////////////////////////////////////////////
+ Texture(const Texture& copy);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~Texture();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the texture
+ ///
+ /// If this function fails, the texture is left unchanged.
+ ///
+ /// \param width Width of the texture
+ /// \param height Height of the texture
+ ///
+ /// \return True if creation was successful
+ ///
+ ////////////////////////////////////////////////////////////
+ bool create(unsigned int width, unsigned int height);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the texture from a file on disk
+ ///
+ /// This function is a shortcut for the following code:
+ /// \code
+ /// sf::Image image;
+ /// image.loadFromFile(filename);
+ /// texture.loadFromImage(image, area);
+ /// \endcode
+ ///
+ /// The \a 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 \a 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.
+ ///
+ /// \param filename Path of the image file to load
+ /// \param area Area of the image to load
+ ///
+ /// \return True if loading was successful
+ ///
+ /// \see loadFromMemory, loadFromStream, loadFromImage
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromFile(const std::string& filename, const IntRect& area = IntRect());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the texture from a file in memory
+ ///
+ /// This function is a shortcut for the following code:
+ /// \code
+ /// sf::Image image;
+ /// image.loadFromMemory(data, size);
+ /// texture.loadFromImage(image, area);
+ /// \endcode
+ ///
+ /// The \a 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 \a 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.
+ ///
+ /// \param data Pointer to the file data in memory
+ /// \param size Size of the data to load, in bytes
+ /// \param area Area of the image to load
+ ///
+ /// \return True if loading was successful
+ ///
+ /// \see loadFromFile, loadFromStream, loadFromImage
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromMemory(const void* data, std::size_t size, const IntRect& area = IntRect());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the texture from a custom stream
+ ///
+ /// This function is a shortcut for the following code:
+ /// \code
+ /// sf::Image image;
+ /// image.loadFromStream(stream);
+ /// texture.loadFromImage(image, area);
+ /// \endcode
+ ///
+ /// The \a 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 \a 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.
+ ///
+ /// \param stream Source stream to read from
+ /// \param area Area of the image to load
+ ///
+ /// \return True if loading was successful
+ ///
+ /// \see loadFromFile, loadFromMemory, loadFromImage
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromStream(sf::InputStream& stream, const IntRect& area = IntRect());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the texture from an image
+ ///
+ /// The \a 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 \a 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.
+ ///
+ /// \param image Image to load into the texture
+ /// \param area Area of the image to load
+ ///
+ /// \return True if loading was successful
+ ///
+ /// \see loadFromFile, loadFromMemory
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadFromImage(const Image& image, const IntRect& area = IntRect());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the size of the texture
+ ///
+ /// \return Size in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2u getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \return Image containing the texture's pixels
+ ///
+ /// \see loadFromImage
+ ///
+ ////////////////////////////////////////////////////////////
+ Image copyToImage() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the whole texture from an array of pixels
+ ///
+ /// The \a pixel array is assumed to have the same size as
+ /// the \a 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
+ /// behaviour.
+ ///
+ /// This function does nothing if \a pixels is null or if the
+ /// texture was not previously created.
+ ///
+ /// \param pixels Array of pixels to copy to the texture
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Uint8* pixels);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update a part of the texture from an array of pixels
+ ///
+ /// The size of the \a pixel array must match the \a width and
+ /// \a 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 behaviour.
+ ///
+ /// This function does nothing if \a pixels is null or if the
+ /// texture was not previously created.
+ ///
+ /// \param pixels Array of pixels to copy to the texture
+ /// \param width Width of the pixel region contained in \a pixels
+ /// \param height Height of the pixel region contained in \a pixels
+ /// \param x X offset in the texture where to copy the source pixels
+ /// \param y Y offset in the texture where to copy the source pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 behaviour.
+ ///
+ /// This function does nothing if the texture was not
+ /// previously created.
+ ///
+ /// \param image Image to copy to the texture
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Image& image);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 behaviour.
+ ///
+ /// This function does nothing if the texture was not
+ /// previously created.
+ ///
+ /// \param image Image to copy to the texture
+ /// \param x X offset in the texture where to copy the source image
+ /// \param y Y offset in the texture where to copy the source image
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Image& image, unsigned int x, unsigned int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 behaviour.
+ ///
+ /// This function does nothing if either the texture or the window
+ /// was not previously created.
+ ///
+ /// \param window Window to copy to the texture
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Window& window);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 behaviour.
+ ///
+ /// This function does nothing if either the texture or the window
+ /// was not previously created.
+ ///
+ /// \param window Window to copy to the texture
+ /// \param x X offset in the texture where to copy the source window
+ /// \param y Y offset in the texture where to copy the source window
+ ///
+ ////////////////////////////////////////////////////////////
+ void update(const Window& window, unsigned int x, unsigned int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param smooth True to enable smoothing, false to disable it
+ ///
+ /// \see isSmooth
+ ///
+ ////////////////////////////////////////////////////////////
+ void setSmooth(bool smooth);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the smooth filter is enabled or not
+ ///
+ /// \return True if smoothing is enabled, false if it is disabled
+ ///
+ /// \see setSmooth
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isSmooth() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param repeated True to repeat the texture, false to disable repeating
+ ///
+ /// \see isRepeated
+ ///
+ ////////////////////////////////////////////////////////////
+ void setRepeated(bool repeated);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the texture is repeated or not
+ ///
+ /// \return True if repeat mode is enabled, false if it is disabled
+ ///
+ /// \see setRepeated
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isRepeated() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of assignment operator
+ ///
+ /// \param right Instance to assign
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ Texture& operator =(const Texture& right);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \code
+ /// sf::Texture t1, t2;
+ /// ...
+ /// sf::Texture::bind(&t1);
+ /// // draw OpenGL stuff that use t1...
+ /// sf::Texture::bind(&t2);
+ /// // draw OpenGL stuff that use t2...
+ /// sf::Texture::bind(NULL);
+ /// // draw OpenGL stuff that use no texture...
+ /// \endcode
+ ///
+ /// The \a 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.
+ ///
+ /// \param texture Pointer to the texture to bind, can be null to use no texture
+ /// \param coordinateType Type of texture coordinates to use
+ ///
+ ////////////////////////////////////////////////////////////
+ static void bind(const Texture* texture, CoordinateType coordinateType = Normalized);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Maximum size allowed for textures, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ static unsigned int getMaximumSize();
+
+private :
+
+ friend class RenderTexture;
+ friend class RenderTarget;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get a valid image size according to hardware support
+ ///
+ /// This function checks whether the graphics driver supports
+ /// non power of two sizes or not, and adjusts the size
+ /// accordingly.
+ /// The returned size is greater than or equal to the original size.
+ ///
+ /// \param Size size to convert
+ ///
+ /// \return Valid nearest size (greater than or equal to specified size)
+ ///
+ ////////////////////////////////////////////////////////////
+ static unsigned int getValidSize(unsigned int size);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Vector2u m_size; ///< Public texture size
+ Vector2u m_actualSize; ///< Actual texture size (can be greater than public size because of padding)
+ unsigned int m_texture; ///< Internal texture identifier
+ bool m_isSmooth; ///< Status of the smooth filter
+ bool m_isRepeated; ///< Is the texture in repeat mode?
+ mutable bool m_pixelsFlipped; ///< To work around the inconsistency in Y orientation
+ Uint64 m_cacheId; ///< Unique number that identifies the texture to the render target's cache
+};
+
+} // namespace sf
+
+
+#endif // SFML_TEXTURE_HPP
+
+////////////////////////////////////////////////////////////
+/// \class sf::Texture
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// // 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);
+/// \endcode
+///
+/// \code
+/// // 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);
+///
+/// ...
+/// }
+///
+/// \endcode
+///
+/// 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.
+/// \code
+/// sf::Texture::bind(&texture);
+/// ... render OpenGL geometry ...
+/// sf::Texture::bind(NULL);
+/// \endcode
+///
+/// \see sf::Sprite, sf::Image, sf::RenderTexture
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Transform.hpp b/include/SFML/Graphics/Transform.hpp
new file mode 100644
index 0000000..3b91a8a
--- /dev/null
+++ b/include/SFML/Graphics/Transform.hpp
@@ -0,0 +1,450 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TRANSFORM_HPP
+#define SFML_TRANSFORM_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Rect.hpp>
+#include <SFML/System/Vector2.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Define a 3x3 transform matrix
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Transform
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Creates an identity transform (a transform that does nothing).
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct a transform from a 3x3 matrix
+ ///
+ /// \param a00 Element (0, 0) of the matrix
+ /// \param a01 Element (0, 1) of the matrix
+ /// \param a02 Element (0, 2) of the matrix
+ /// \param a10 Element (1, 0) of the matrix
+ /// \param a11 Element (1, 1) of the matrix
+ /// \param a12 Element (1, 2) of the matrix
+ /// \param a20 Element (2, 0) of the matrix
+ /// \param a21 Element (2, 1) of the matrix
+ /// \param a22 Element (2, 2) of the matrix
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform(float a00, float a01, float a02,
+ float a10, float a11, float a12,
+ float a20, float a21, float a22);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \code
+ /// sf::Transform transform = ...;
+ /// glLoadMatrixf(transform.getMatrix());
+ /// \endcode
+ ///
+ /// \return Pointer to a 4x4 matrix
+ ///
+ ////////////////////////////////////////////////////////////
+ const float* getMatrix() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the inverse of the transform
+ ///
+ /// If the inverse cannot be computed, an identity transform
+ /// is returned.
+ ///
+ /// \return A new transform which is the inverse of self
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform getInverse() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Transform a 2D point
+ ///
+ /// \param x X coordinate of the point to transform
+ /// \param y Y coordinate of the point to transform
+ ///
+ /// \return Transformed point
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2f transformPoint(float x, float y) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Transform a 2D point
+ ///
+ /// \param point Point to transform
+ ///
+ /// \return Transformed point
+ ///
+ ////////////////////////////////////////////////////////////
+ Vector2f transformPoint(const Vector2f& point) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param rectangle Rectangle to transform
+ ///
+ /// \return Transformed rectangle
+ ///
+ ////////////////////////////////////////////////////////////
+ FloatRect transformRect(const FloatRect& rectangle) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with another one
+ ///
+ /// The result is a transform that is equivalent to applying
+ /// *this followed by \a transform. Mathematically, it is
+ /// equivalent to a matrix multiplication.
+ ///
+ /// \param transform Transform to combine with this transform
+ ///
+ /// \return Reference to *this
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& combine(const Transform& transform);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with a translation
+ ///
+ /// This function returns a reference to *this, so that calls
+ /// can be chained.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.translate(100, 200).rotate(45);
+ /// \endcode
+ ///
+ /// \param x Offset to apply on X axis
+ /// \param y Offset to apply on Y axis
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see rotate, scale
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& translate(float x, float y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with a translation
+ ///
+ /// This function returns a reference to *this, so that calls
+ /// can be chained.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.translate(sf::Vector2f(100, 200)).rotate(45);
+ /// \endcode
+ ///
+ /// \param offset Translation offset to apply
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see rotate, scale
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& translate(const Vector2f& offset);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with a rotation
+ ///
+ /// This function returns a reference to *this, so that calls
+ /// can be chained.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.rotate(90).translate(50, 20);
+ /// \endcode
+ ///
+ /// \param angle Rotation angle, in degrees
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, scale
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& rotate(float angle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.rotate(90, 8, 3).translate(50, 20);
+ /// \endcode
+ ///
+ /// \param angle Rotation angle, in degrees
+ /// \param centerX X coordinate of the center of rotation
+ /// \param centerY Y coordinate of the center of rotation
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, scale
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& rotate(float angle, float centerX, float centerY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.rotate(90, sf::Vector2f(8, 3)).translate(sf::Vector2f(50, 20));
+ /// \endcode
+ ///
+ /// \param angle Rotation angle, in degrees
+ /// \param center Center of rotation
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, scale
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& rotate(float angle, const Vector2f& center);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with a scaling
+ ///
+ /// This function returns a reference to *this, so that calls
+ /// can be chained.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.scale(2, 1).rotate(45);
+ /// \endcode
+ ///
+ /// \param scaleX Scaling factor on the X axis
+ /// \param scaleY Scaling factor on the Y axis
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, rotate
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& scale(float scaleX, float scaleY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.scale(2, 1, 8, 3).rotate(45);
+ /// \endcode
+ ///
+ /// \param scaleX Scaling factor on X axis
+ /// \param scaleY Scaling factor on Y axis
+ /// \param centerX X coordinate of the center of scaling
+ /// \param centerY Y coordinate of the center of scaling
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, rotate
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& scale(float scaleX, float scaleY, float centerX, float centerY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Combine the current transform with a scaling
+ ///
+ /// This function returns a reference to *this, so that calls
+ /// can be chained.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.scale(sf::Vector2f(2, 1)).rotate(45);
+ /// \endcode
+ ///
+ /// \param factors Scaling factors
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, rotate
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& scale(const Vector2f& factors);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// \code
+ /// sf::Transform transform;
+ /// transform.scale(sf::Vector2f(2, 1), sf::Vector2f(8, 3)).rotate(45);
+ /// \endcode
+ ///
+ /// \param factors Scaling factors
+ /// \param center Center of scaling
+ ///
+ /// \return Reference to *this
+ ///
+ /// \see translate, rotate
+ ///
+ ////////////////////////////////////////////////////////////
+ Transform& scale(const Vector2f& factors, const Vector2f& center);
+
+ ////////////////////////////////////////////////////////////
+ // Static member data
+ ////////////////////////////////////////////////////////////
+ static const Transform Identity; ///< The identity transform (does nothing)
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ float m_matrix[16]; ///< 4x4 matrix defining the transformation
+};
+
+////////////////////////////////////////////////////////////
+/// \relates sf::Transform
+/// \brief Overload of binary operator * to combine two transforms
+///
+/// This call is equivalent to calling Transform(left).combine(right).
+///
+/// \param left Left operand (the first transform)
+/// \param right Right operand (the second transform)
+///
+/// \return New combined transform
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Transform operator *(const Transform& left, const Transform& right);
+
+////////////////////////////////////////////////////////////
+/// \relates sf::Transform
+/// \brief Overload of binary operator *= to combine two transforms
+///
+/// This call is equivalent to calling left.combine(right).
+///
+/// \param left Left operand (the first transform)
+/// \param right Right operand (the second transform)
+///
+/// \return The combined transform
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Transform& operator *=(Transform& left, const Transform& right);
+
+////////////////////////////////////////////////////////////
+/// \relates sf::Transform
+/// \brief Overload of binary operator * to transform a point
+///
+/// This call is equivalent to calling left.transformPoint(right).
+///
+/// \param left Left operand (the transform)
+/// \param right Right operand (the point to transform)
+///
+/// \return New transformed point
+///
+////////////////////////////////////////////////////////////
+SFML_GRAPHICS_API Vector2f operator *(const Transform& left, const Vector2f& right);
+
+} // namespace sf
+
+
+#endif // SFML_TRANSFORM_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Transform
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// // 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));
+/// \endcode
+///
+/// \see sf::Transformable, sf::RenderStates
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Transformable.hpp b/include/SFML/Graphics/Transformable.hpp
new file mode 100644
index 0000000..28fb386
--- /dev/null
+++ b/include/SFML/Graphics/Transformable.hpp
@@ -0,0 +1,417 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TRANSFORMABLE_HPP
+#define SFML_TRANSFORMABLE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Transform.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Decomposed transform defined by a position, a rotation and a scale
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Transformable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ Transformable();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Virtual destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~Transformable();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param x X coordinate of the new position
+ /// \param y Y coordinate of the new position
+ ///
+ /// \see move, getPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPosition(float x, float y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param position New position
+ ///
+ /// \see move, getPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPosition(const Vector2f& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param angle New rotation, in degrees
+ ///
+ /// \see rotate, getRotation
+ ///
+ ////////////////////////////////////////////////////////////
+ void setRotation(float angle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param factorX New horizontal scale factor
+ /// \param factorY New vertical scale factor
+ ///
+ /// \see scale, getScale
+ ///
+ ////////////////////////////////////////////////////////////
+ void setScale(float factorX, float factorY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param factors New scale factors
+ ///
+ /// \see scale, getScale
+ ///
+ ////////////////////////////////////////////////////////////
+ void setScale(const Vector2f& factors);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param x X coordinate of the new origin
+ /// \param y Y coordinate of the new origin
+ ///
+ /// \see getOrigin
+ ///
+ ////////////////////////////////////////////////////////////
+ void setOrigin(float x, float y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param origin New origin
+ ///
+ /// \see getOrigin
+ ///
+ ////////////////////////////////////////////////////////////
+ void setOrigin(const Vector2f& origin);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the position of the object
+ ///
+ /// \return Current position
+ ///
+ /// \see setPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ const Vector2f& getPosition() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the orientation of the object
+ ///
+ /// The rotation is always in the range [0, 360].
+ ///
+ /// \return Current rotation, in degrees
+ ///
+ /// \see setRotation
+ ///
+ ////////////////////////////////////////////////////////////
+ float getRotation() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the current scale of the object
+ ///
+ /// \return Current scale factors
+ ///
+ /// \see setScale
+ ///
+ ////////////////////////////////////////////////////////////
+ const Vector2f& getScale() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the local origin of the object
+ ///
+ /// \return Current origin
+ ///
+ /// \see setOrigin
+ ///
+ ////////////////////////////////////////////////////////////
+ const Vector2f& getOrigin() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// sf::Vector2f pos = object.getPosition();
+ /// object.setPosition(pos.x + offsetX, pos.y + offsetY);
+ /// \endcode
+ ///
+ /// \param offsetX X offset
+ /// \param offsetY Y offset
+ ///
+ /// \see setPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void move(float offsetX, float offsetY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// object.setPosition(object.getPosition() + offset);
+ /// \endcode
+ ///
+ /// \param offset Offset
+ ///
+ /// \see setPosition
+ ///
+ ////////////////////////////////////////////////////////////
+ void move(const Vector2f& offset);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// object.setRotation(object.getRotation() + angle);
+ /// \endcode
+ ///
+ /// \param angle Angle of rotation, in degrees
+ ///
+ ////////////////////////////////////////////////////////////
+ void rotate(float angle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// sf::Vector2f scale = object.getScale();
+ /// object.setScale(scale.x * factorX, scale.y * factorY);
+ /// \endcode
+ ///
+ /// \param factorX Horizontal scale factor
+ /// \param factorY Vertical scale factor
+ ///
+ /// \see setScale
+ ///
+ ////////////////////////////////////////////////////////////
+ void scale(float factorX, float factorY);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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:
+ /// \code
+ /// sf::Vector2f scale = object.getScale();
+ /// object.setScale(scale.x * factor.x, scale.y * factor.y);
+ /// \endcode
+ ///
+ /// \param factor Scale factors
+ ///
+ /// \see setScale
+ ///
+ ////////////////////////////////////////////////////////////
+ void scale(const Vector2f& factor);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the combined transform of the object
+ ///
+ /// \return Transform combining the position/rotation/scale/origin of the object
+ ///
+ /// \see getInverseTransform
+ ///
+ ////////////////////////////////////////////////////////////
+ const Transform& getTransform() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief get the inverse of the combined transform of the object
+ ///
+ /// \return Inverse of the combined transformations applied to the object
+ ///
+ /// \see getTransform
+ ///
+ ////////////////////////////////////////////////////////////
+ const Transform& getInverseTransform() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Vector2f m_origin; ///< Origin of translation/rotation/scaling of the object
+ Vector2f m_position; ///< Position of the object in the 2D world
+ float m_rotation; ///< Orientation of the object, in degrees
+ Vector2f m_scale; ///< Scale of the object
+ mutable Transform m_transform; ///< Combined transformation of the object
+ mutable bool m_transformNeedUpdate; ///< Does the transform need to be recomputed?
+ mutable Transform m_inverseTransform; ///< Combined transformation of the object
+ mutable bool m_inverseTransformNeedUpdate; ///< Does the transform need to be recomputed?
+};
+
+} // namespace sf
+
+
+#endif // SFML_TRANSFORMABLE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Transformable
+/// \ingroup graphics
+///
+/// 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.
+/// \code
+/// 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);
+/// \endcode
+///
+/// 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).
+/// \code
+/// 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;
+/// };
+/// \endcode
+///
+/// \see sf::Transform
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/Vertex.hpp b/include/SFML/Graphics/Vertex.hpp
new file mode 100644
index 0000000..b983ef2
--- /dev/null
+++ b/include/SFML/Graphics/Vertex.hpp
@@ -0,0 +1,148 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_VERTEX_HPP
+#define SFML_VERTEX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Color.hpp>
+#include <SFML/System/Vector2.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Define a point with color and texture coordinates
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API Vertex
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the vertex from its position
+ ///
+ /// The vertex color is white and texture coordinates are (0, 0).
+ ///
+ /// \param thePosition Vertex position
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex(const Vector2f& thePosition);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the vertex from its position and color
+ ///
+ /// The texture coordinates are (0, 0).
+ ///
+ /// \param thePosition Vertex position
+ /// \param theColor Vertex color
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex(const Vector2f& thePosition, const Color& theColor);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the vertex from its position and texture coordinates
+ ///
+ /// The vertex color is white.
+ ///
+ /// \param thePosition Vertex position
+ /// \param theTexCoords Vertex texture coordinates
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex(const Vector2f& thePosition, const Vector2f& theTexCoords);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the vertex from its position, color and texture coordinates
+ ///
+ /// \param thePosition Vertex position
+ /// \param theColor Vertex color
+ /// \param theTexCoords Vertex texture coordinates
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex(const Vector2f& thePosition, const Color& theColor, const Vector2f& theTexCoords);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Vector2f position; ///< 2D position of the vertex
+ Color color; ///< Color of the vertex
+ Vector2f texCoords; ///< Coordinates of the texture's pixel to map to the vertex
+};
+
+} // namespace sf
+
+
+#endif // SFML_VERTEX_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Vertex
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// // define a 100x100 square, red, with a 10x10 texture mapped on it
+/// sf::Vertex vertices[] =
+/// {
+/// sf::Vertex(sf::Vector2f( 0, 0), sf::Color::Red, sf::Vector2f( 0, 0)),
+/// sf::Vertex(sf::Vector2f( 0, 100), sf::Color::Red, sf::Vector2f( 0, 10)),
+/// sf::Vertex(sf::Vector2f(100, 100), sf::Color::Red, sf::Vector2f(10, 10)),
+/// sf::Vertex(sf::Vector2f(100, 0), sf::Color::Red, sf::Vector2f(10, 0))
+/// };
+///
+/// // draw it
+/// window.draw(vertices, 4, sf::Quads);
+/// \endcode
+///
+/// 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 sf::VertexArray
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/VertexArray.hpp b/include/SFML/Graphics/VertexArray.hpp
new file mode 100644
index 0000000..fc67845
--- /dev/null
+++ b/include/SFML/Graphics/VertexArray.hpp
@@ -0,0 +1,223 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_VERTEXARRAY_HPP
+#define SFML_VERTEXARRAY_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Export.hpp>
+#include <SFML/Graphics/Vertex.hpp>
+#include <SFML/Graphics/PrimitiveType.hpp>
+#include <SFML/Graphics/Rect.hpp>
+#include <SFML/Graphics/Drawable.hpp>
+#include <vector>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Define a set of one or more 2D primitives
+///
+////////////////////////////////////////////////////////////
+class SFML_GRAPHICS_API VertexArray : public Drawable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Creates an empty vertex array.
+ ///
+ ////////////////////////////////////////////////////////////
+ VertexArray();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the vertex array with a type and an initial number of vertices
+ ///
+ /// \param type Type of primitives
+ /// \param vertexCount Initial number of vertices in the array
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit VertexArray(PrimitiveType type, unsigned int vertexCount = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the vertex count
+ ///
+ /// \return Number of vertices in the array
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned int getVertexCount() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get a read-write access to a vertex by its index
+ ///
+ /// This function doesn't check \a index, it must be in range
+ /// [0, getVertexCount() - 1]. The behaviour is undefined
+ /// otherwise.
+ ///
+ /// \param index Index of the vertex to get
+ ///
+ /// \return Reference to the index-th vertex
+ ///
+ /// \see getVertexCount
+ ///
+ ////////////////////////////////////////////////////////////
+ Vertex& operator [](unsigned int index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get a read-only access to a vertex by its index
+ ///
+ /// This function doesn't check \a index, it must be in range
+ /// [0, getVertexCount() - 1]. The behaviour is undefined
+ /// otherwise.
+ ///
+ /// \param index Index of the vertex to get
+ ///
+ /// \return Const reference to the index-th vertex
+ ///
+ /// \see getVertexCount
+ ///
+ ////////////////////////////////////////////////////////////
+ const Vertex& operator [](unsigned int index) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ ////////////////////////////////////////////////////////////
+ void clear();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Resize the vertex array
+ ///
+ /// If \a vertexCount is greater than the current size, the previous
+ /// vertices are kept and new (default-constructed) vertices are
+ /// added.
+ /// If \a vertexCount is less than the current size, existing vertices
+ /// are removed from the array.
+ ///
+ /// \param vertexCount New size of the array (number of vertices)
+ ///
+ ////////////////////////////////////////////////////////////
+ void resize(unsigned int vertexCount);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Add a vertex to the array
+ ///
+ /// \param vertex Vertex to add
+ ///
+ ////////////////////////////////////////////////////////////
+ void append(const Vertex& vertex);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the type of primitives to draw
+ ///
+ /// This function defines how the vertices must be interpreted
+ /// when it's time to draw them:
+ /// \li As points
+ /// \li As lines
+ /// \li As triangles
+ /// \li As quads
+ /// The default primitive type is sf::Points.
+ ///
+ /// \param type Type of primitive
+ ///
+ ////////////////////////////////////////////////////////////
+ void setPrimitiveType(PrimitiveType type);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the type of primitives drawn by the vertex array
+ ///
+ /// \return Primitive type
+ ///
+ ////////////////////////////////////////////////////////////
+ PrimitiveType getPrimitiveType() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Compute the bounding rectangle of the vertex array
+ ///
+ /// This function returns the axis-aligned rectangle that
+ /// contains all the vertices of the array.
+ ///
+ /// \return Bounding rectangle of the vertex array
+ ///
+ ////////////////////////////////////////////////////////////
+ FloatRect getBounds() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Draw the vertex array to a render target
+ ///
+ /// \param target Render target to draw to
+ /// \param states Current render states
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void draw(RenderTarget& target, RenderStates states) const;
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ std::vector<Vertex> m_vertices; ///< Vertices contained in the array
+ PrimitiveType m_primitiveType; ///< Type of primitives to draw
+};
+
+} // namespace sf
+
+
+#endif // SFML_VERTEXARRAY_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::VertexArray
+/// \ingroup graphics
+///
+/// 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:
+/// \code
+/// sf::VertexArray lines(sf::LinesStrip, 4);
+/// 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);
+/// \endcode
+///
+/// \see sf::Vertex
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Graphics/View.hpp b/include/SFML/Graphics/View.hpp
index d5e401a..7713aef 100755..100644
--- a/include/SFML/Graphics/View.hpp
+++ b/include/SFML/Graphics/View.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,161 +28,314 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Graphics/Export.hpp>
#include <SFML/Graphics/Rect.hpp>
-#include <SFML/Graphics/Matrix3.hpp>
+#include <SFML/Graphics/Transform.hpp>
#include <SFML/System/Vector2.hpp>
namespace sf
{
-class RenderTarget;
-
////////////////////////////////////////////////////////////
-/// This class defines a view (position, size, etc.) ;
-/// you can consider it as a 2D camera
+/// \brief 2D camera that defines what region is shown on screen
+///
////////////////////////////////////////////////////////////
-class SFML_API View
+class SFML_GRAPHICS_API View
{
public :
////////////////////////////////////////////////////////////
- /// Construct the view from a rectangle
+ /// \brief Default constructor
+ ///
+ /// This constructor creates a default view of (0, 0, 1000, 1000)
+ ///
+ ////////////////////////////////////////////////////////////
+ View();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the view from a rectangle
+ ///
+ /// \param rectangle Rectangle defining the zone to display
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit View(const FloatRect& rectangle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the view from its center and size
+ ///
+ /// \param center Center of the zone to display
+ /// \param size Size of zone to display
+ ///
+ ////////////////////////////////////////////////////////////
+ View(const Vector2f& center, const Vector2f& size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the center of the view
///
- /// \param ViewRect : Rectangle defining the position and size of the view (1000x1000 by default)
+ /// \param x X coordinate of the new center
+ /// \param y Y coordinate of the new center
+ ///
+ /// \see setSize, getCenter
///
////////////////////////////////////////////////////////////
- explicit View(const FloatRect& ViewRect = FloatRect(0, 0, 1000, 1000));
+ void setCenter(float x, float y);
////////////////////////////////////////////////////////////
- /// Construct the view from its center and half-size
+ /// \brief Set the center of the view
+ ///
+ /// \param center New center
///
- /// \param Center : Center of the view
- /// \param HalfSize : Half-size of the view (from center to corner)
+ /// \see setSize, getCenter
///
////////////////////////////////////////////////////////////
- View(const sf::Vector2f& Center, const sf::Vector2f& HalfSize);
+ void setCenter(const Vector2f& center);
////////////////////////////////////////////////////////////
- /// Change the center of the view (take 2 values)
+ /// \brief Set the size of the view
///
- /// \param X : X coordinate of the new center
- /// \param Y : Y coordinate of the new center
+ /// \param width New width of the view
+ /// \param height New height of the view
+ ///
+ /// \see setCenter, getCenter
///
////////////////////////////////////////////////////////////
- void SetCenter(float X, float Y);
+ void setSize(float width, float height);
////////////////////////////////////////////////////////////
- /// Change the center of the view (take a vector)
+ /// \brief Set the size of the view
+ ///
+ /// \param size New size
///
- /// \param Center : New center
+ /// \see setCenter, getCenter
///
////////////////////////////////////////////////////////////
- void SetCenter(const sf::Vector2f& Center);
+ void setSize(const Vector2f& size);
////////////////////////////////////////////////////////////
- /// Change the half-size of the view (take 2 values)
+ /// \brief Set the orientation of the view
+ ///
+ /// The default rotation of a view is 0 degree.
///
- /// \param HalfWidth : New half-width
- /// \param HalfHeight : New half-height
+ /// \param angle New angle, in degrees
+ ///
+ /// \see getRotation
///
////////////////////////////////////////////////////////////
- void SetHalfSize(float HalfWidth, float HalfHeight);
+ void setRotation(float angle);
////////////////////////////////////////////////////////////
- /// Change the half-size of the view (take a vector)
+ /// \brief 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.
///
- /// \param HalfSize : New half-size
+ /// \param viewport New viewport rectangle
+ ///
+ /// \see getViewport
///
////////////////////////////////////////////////////////////
- void SetHalfSize(const sf::Vector2f& HalfSize);
+ void setViewport(const FloatRect& viewport);
////////////////////////////////////////////////////////////
- /// Rebuild the view from a rectangle
+ /// \brief Reset the view to the given rectangle
+ ///
+ /// Note that this function resets the rotation angle to 0.
///
- /// \param ViewRect : Rectangle defining the position and size of the view
+ /// \param rectangle Rectangle defining the zone to display
+ ///
+ /// \see setCenter, setSize, setRotation
///
////////////////////////////////////////////////////////////
- void SetFromRect(const FloatRect& ViewRect);
+ void reset(const FloatRect& rectangle);
////////////////////////////////////////////////////////////
- /// Get the center of the view
+ /// \brief Get the center of the view
///
/// \return Center of the view
///
+ /// \see getSize, setCenter
+ ///
////////////////////////////////////////////////////////////
- const sf::Vector2f& GetCenter() const;
+ const Vector2f& getCenter() const;
////////////////////////////////////////////////////////////
- /// Get the half-size of the view
+ /// \brief Get the size of the view
+ ///
+ /// \return Size of the view
///
- /// \return Half-size of the view
+ /// \see getCenter, setSize
///
////////////////////////////////////////////////////////////
- const sf::Vector2f& GetHalfSize() const;
+ const Vector2f& getSize() const;
////////////////////////////////////////////////////////////
- /// Get the bounding rectangle of the view
+ /// \brief Get the current orientation of the view
///
- /// \return Bounding rectangle of the view
+ /// \return Rotation angle of the view, in degrees
+ ///
+ /// \see setRotation
///
////////////////////////////////////////////////////////////
- const sf::FloatRect& GetRect() const;
+ float getRotation() const;
////////////////////////////////////////////////////////////
- /// Move the view (take 2 values)
+ /// \brief Get the target viewport rectangle of the view
+ ///
+ /// \return Viewport rectangle, expressed as a factor of the target size
///
- /// \param OffsetX : Offset to move the view, on X axis
- /// \param OffsetY : Offset to move the view, on Y axis
+ /// \see setViewport
///
////////////////////////////////////////////////////////////
- void Move(float OffsetX, float OffsetY);
+ const FloatRect& getViewport() const;
////////////////////////////////////////////////////////////
- /// Move the view (take a vector)
+ /// \brief Move the view relatively to its current position
///
- /// \param Offset : Offset to move the view
+ /// \param offsetX X coordinate of the move offset
+ /// \param offsetY Y coordinate of the move offset
+ ///
+ /// \see setCenter, rotate, zoom
///
////////////////////////////////////////////////////////////
- void Move(const sf::Vector2f& Offset);
+ void move(float offsetX, float offsetY);
////////////////////////////////////////////////////////////
- /// Resize the view rectangle to simulate a zoom / unzoom effect
+ /// \brief Move the view relatively to its current position
+ ///
+ /// \param offset Move offset
///
- /// \param Factor : Zoom factor to apply, relative to the current zoom
+ /// \see setCenter, rotate, zoom
///
////////////////////////////////////////////////////////////
- void Zoom(float Factor);
+ void move(const Vector2f& offset);
-private :
+ ////////////////////////////////////////////////////////////
+ /// \brief Rotate the view relatively to its current orientation
+ ///
+ /// \param angle Angle to rotate, in degrees
+ ///
+ /// \see setRotation, move, zoom
+ ///
+ ////////////////////////////////////////////////////////////
+ void rotate(float angle);
- friend class RenderTarget;
+ ////////////////////////////////////////////////////////////
+ /// \brief Resize the view rectangle relatively to its current size
+ ///
+ /// Resizing the view simulates a zoom, as the zone displayed on
+ /// screen grows or shrinks.
+ /// \a factor is a multiplier:
+ /// \li 1 keeps the size unchanged
+ /// \li > 1 makes the view bigger (objects appear smaller)
+ /// \li < 1 makes the view smaller (objects appear bigger)
+ ///
+ /// \param factor Zoom factor to apply
+ ///
+ /// \see setSize, move, rotate
+ ///
+ ////////////////////////////////////////////////////////////
+ void zoom(float factor);
////////////////////////////////////////////////////////////
- /// Get the projection matrix of the view
+ /// \brief Get the projection transform of the view
+ ///
+ /// This function is meant for internal use only.
+ ///
+ /// \return Projection transform defining the view
///
- /// \return Projection matrix containing the view settings
+ /// \see getInverseTransform
///
////////////////////////////////////////////////////////////
- const Matrix3& GetMatrix() const;
+ const Transform& getTransform() const;
////////////////////////////////////////////////////////////
- /// Recompute the view rectangle and the projection matrix
+ /// \brief Get the inverse projection transform of the view
+ ///
+ /// This function is meant for internal use only.
+ ///
+ /// \return Inverse of the projection transform defining the view
+ ///
+ /// \see getTransform
///
////////////////////////////////////////////////////////////
- void RecomputeMatrix();
+ const Transform& getInverseTransform() const;
+
+private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- sf::Vector2f myCenter; ///< Center of the view
- sf::Vector2f myHalfSize; ///< Half-size of the view
- FloatRect myRect; ///< Rectangle defining the bounds of the view
- Matrix3 myMatrix; ///< Precomputed projection matrix corresponding to the view
- bool myNeedUpdate; ///< Internal state telling if the matrix needs to be updated
+ Vector2f m_center; ///< Center of the view, in scene coordinates
+ Vector2f m_size; ///< Size of the view, in scene coordinates
+ float m_rotation; ///< Angle of rotation of the view rectangle, in degrees
+ FloatRect m_viewport; ///< Viewport rectangle, expressed as a factor of the render-target's size
+ mutable Transform m_transform; ///< Precomputed projection transform corresponding to the view
+ mutable Transform m_inverseTransform; ///< Precomputed inverse projection transform corresponding to the view
+ mutable bool m_transformUpdated; ///< Internal state telling if the transform needs to be updated
+ mutable bool m_invTransformUpdated; ///< Internal state telling if the inverse transform needs to be updated
};
} // namespace sf
#endif // SFML_VIEW_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::View
+/// \ingroup graphics
+///
+/// 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 has not 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, every objects drawn in this render target will be
+/// affected by the view until you use another view.
+///
+/// Usage example:
+/// \code
+/// sf::RenderWindow window;
+/// 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);
+/// \endcode
+///
+/// \see sf::RenderWindow, sf::RenderTexture
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network.hpp b/include/SFML/Network.hpp
index 6ec13d3..66b3b85 100755..100644
--- a/include/SFML/Network.hpp
+++ b/include/SFML/Network.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -32,11 +32,20 @@
#include <SFML/System.hpp>
#include <SFML/Network/Ftp.hpp>
#include <SFML/Network/Http.hpp>
-#include <SFML/Network/IPAddress.hpp>
+#include <SFML/Network/IpAddress.hpp>
#include <SFML/Network/Packet.hpp>
-#include <SFML/Network/Selector.hpp>
-#include <SFML/Network/SocketTCP.hpp>
-#include <SFML/Network/SocketUDP.hpp>
+#include <SFML/Network/SocketSelector.hpp>
+#include <SFML/Network/TcpListener.hpp>
+#include <SFML/Network/TcpSocket.hpp>
+#include <SFML/Network/UdpSocket.hpp>
#endif // SFML_NETWORK_HPP
+
+////////////////////////////////////////////////////////////
+/// \defgroup network Network module
+///
+/// Socket-based communication, utilities and higher-level
+/// network protocols (HTTP, FTP).
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/Export.hpp b/include/SFML/Network/Export.hpp
new file mode 100644
index 0000000..7dcd1d0
--- /dev/null
+++ b/include/SFML/Network/Export.hpp
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_NETWORK_EXPORT_HPP
+#define SFML_NETWORK_EXPORT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+////////////////////////////////////////////////////////////
+// Define portable import / export macros
+////////////////////////////////////////////////////////////
+#if defined(SFML_NETWORK_EXPORTS)
+
+ #define SFML_NETWORK_API SFML_API_EXPORT
+
+#else
+
+ #define SFML_NETWORK_API SFML_API_IMPORT
+
+#endif
+
+
+#endif // SFML_NETWORK_EXPORT_HPP
diff --git a/include/SFML/Network/Ftp.hpp b/include/SFML/Network/Ftp.hpp
index f2f1bd3..9b8ed9b 100755..100644
--- a/include/SFML/Network/Ftp.hpp
+++ b/include/SFML/Network/Ftp.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,28 +28,29 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/TcpSocket.hpp>
#include <SFML/System/NonCopyable.hpp>
-#include <SFML/Network/SocketTCP.hpp>
+#include <SFML/System/Time.hpp>
#include <string>
#include <vector>
namespace sf
{
-class IPAddress;
+class IpAddress;
////////////////////////////////////////////////////////////
-/// This class provides methods for manipulating the FTP
-/// protocol (described in RFC 959).
-/// It provides easy access and transfers to remote
-/// directories and files on a FTP server
+/// \brief A FTP client
+///
////////////////////////////////////////////////////////////
-class SFML_API Ftp : NonCopyable
+class SFML_NETWORK_API Ftp : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Enumeration of transfer modes
+ /// \brief Enumeration of transfer modes
+ ///
////////////////////////////////////////////////////////////
enum TransferMode
{
@@ -59,17 +60,16 @@ public :
};
////////////////////////////////////////////////////////////
- /// This class wraps a FTP response, which is basically :
- /// - a status code
- /// - a message
+ /// \brief Define a FTP response
+ ///
////////////////////////////////////////////////////////////
- class SFML_API Response
+ class SFML_NETWORK_API Response
{
public :
////////////////////////////////////////////////////////////
- /// Enumerate all the valid status codes returned in
- /// a FTP response
+ /// \brief Status codes possibly returned by a FTP response
+ ///
////////////////////////////////////////////////////////////
enum Status
{
@@ -134,303 +134,383 @@ public :
};
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
- /// \param Code : Response status code (InvalidResponse by default)
- /// \param Message : Response message (empty by default)
+ /// This constructor is used by the FTP client to build
+ /// the response.
+ ///
+ /// \param code Response status code
+ /// \param message Response message
///
////////////////////////////////////////////////////////////
- Response(Status Code = InvalidResponse, const std::string& Message = "");
+ explicit Response(Status code = InvalidResponse, const std::string& message = "");
////////////////////////////////////////////////////////////
- /// Convenience function to check if the response status code
- /// means a success
+ /// \brief 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.
///
- /// \return True if status is success (code < 400)
+ /// \return True if the status is a success, false if it is a failure
///
////////////////////////////////////////////////////////////
- bool IsOk() const;
+ bool isOk() const;
////////////////////////////////////////////////////////////
- /// Get the response status code
+ /// \brief Get the status code of the response
///
/// \return Status code
///
////////////////////////////////////////////////////////////
- Status GetStatus() const;
+ Status getStatus() const;
////////////////////////////////////////////////////////////
- /// Get the full message contained in the response
+ /// \brief Get the full message contained in the response
///
/// \return The response message
///
////////////////////////////////////////////////////////////
- const std::string& GetMessage() const;
+ const std::string& getMessage() const;
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- Status myStatus; ///< Status code returned from the server
- std::string myMessage; ///< Last message received from the server
+ Status m_status; ///< Status code returned from the server
+ std::string m_message; ///< Last message received from the server
};
////////////////////////////////////////////////////////////
- /// Specialization of FTP response returning a directory
+ /// \brief Specialization of FTP response returning a directory
+ ///
////////////////////////////////////////////////////////////
- class SFML_API DirectoryResponse : public Response
+ class SFML_NETWORK_API DirectoryResponse : public Response
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
- /// \param Resp : Source response
+ /// \param response Source response
///
////////////////////////////////////////////////////////////
- DirectoryResponse(Response Resp);
+ DirectoryResponse(const Response& response);
////////////////////////////////////////////////////////////
- /// Get the directory returned in the response
+ /// \brief Get the directory returned in the response
///
/// \return Directory name
///
////////////////////////////////////////////////////////////
- const std::string& GetDirectory() const;
+ const std::string& getDirectory() const;
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::string myDirectory; ///< Directory extracted from the response message
+ std::string m_directory; ///< Directory extracted from the response message
};
////////////////////////////////////////////////////////////
- /// Specialization of FTP response returning a filename lisiting
+ /// \brief Specialization of FTP response returning a
+ /// filename lisiting
////////////////////////////////////////////////////////////
- class SFML_API ListingResponse : public Response
+ class SFML_NETWORK_API ListingResponse : public Response
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- /// \param Resp : Source response
- /// \param Data : Data containing the raw listing
- ///
- ////////////////////////////////////////////////////////////
- ListingResponse(Response Resp, const std::vector<char>& Data);
-
- ////////////////////////////////////////////////////////////
- /// Get the number of filenames in the listing
+ /// \brief Default constructor
///
- /// \return Total number of filenames
+ /// \param response Source response
+ /// \param data Data containing the raw listing
///
////////////////////////////////////////////////////////////
- std::size_t GetCount() const;
+ ListingResponse(const Response& response, const std::vector<char>& data);
////////////////////////////////////////////////////////////
- /// Get the Index-th filename in the directory
+ /// \brief Return the array of directory/file names
///
- /// \param Index : Index of the filename to get
- ///
- /// \return Index-th filename
+ /// \return Array containing the requested listing
///
////////////////////////////////////////////////////////////
- const std::string& GetFilename(std::size_t Index) const;
+ const std::vector<std::string>& getListing() const;
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::vector<std::string> myFilenames; ///< Filenames extracted from the data
+ std::vector<std::string> m_listing; ///< Directory/file names extracted from the data
};
////////////////////////////////////////////////////////////
- /// Destructor -- close the connection with the server
+ /// \brief Destructor
+ ///
+ /// Automatically closes the connection with the server if
+ /// it is still opened.
///
////////////////////////////////////////////////////////////
~Ftp();
////////////////////////////////////////////////////////////
- /// Connect to the specified FTP server
+ /// \brief 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).
///
- /// \param Server : FTP server to connect to
- /// \param Port : Port used for connection (21 by default, standard FTP port)
- /// \param Timeout : Maximum time to wait, in seconds (0 by default, means no timeout)
+ /// \param server Name or address of the FTP server to connect to
+ /// \param port Port used for the connection
+ /// \param timeout Maximum time to wait
///
/// \return Server response to the request
///
+ /// \see disconnect
+ ///
////////////////////////////////////////////////////////////
- Response Connect(const IPAddress& Server, unsigned short Port = 21, float Timeout = 0.f);
+ Response connect(const IpAddress& server, unsigned short port = 21, Time timeout = Time::Zero);
////////////////////////////////////////////////////////////
- /// Log in using anonymous account
+ /// \brief Close the connection with the server
///
/// \return Server response to the request
///
+ /// \see connect
+ ///
////////////////////////////////////////////////////////////
- Response Login();
+ Response disconnect();
////////////////////////////////////////////////////////////
- /// Log in using a username and a password
+ /// \brief Log in using an anonymous account
///
- /// \param UserName : User name
- /// \param Password : Password
+ /// Logging in is mandatory after connecting to the server.
+ /// Users that are not logged in cannot perform any operation.
///
/// \return Server response to the request
///
////////////////////////////////////////////////////////////
- Response Login(const std::string& UserName, const std::string& Password);
+ Response login();
////////////////////////////////////////////////////////////
- /// Close the connection with FTP server
+ /// \brief 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.
+ ///
+ /// \param name User name
+ /// \param password Password
///
/// \return Server response to the request
///
////////////////////////////////////////////////////////////
- Response Disconnect();
+ Response login(const std::string& name, const std::string& password);
////////////////////////////////////////////////////////////
- /// Send a null command just to prevent from being disconnected
+ /// \brief 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.
///
/// \return Server response to the request
///
////////////////////////////////////////////////////////////
- Response KeepAlive();
+ Response keepAlive();
////////////////////////////////////////////////////////////
- /// Get the current working directory
+ /// \brief Get the current working directory
+ ///
+ /// The working directory is the root path for subsequent
+ /// operations involving directories and/or filenames.
///
/// \return Server response to the request
///
+ /// \see getDirectoryListing, changeDirectory, parentDirectory
+ ///
////////////////////////////////////////////////////////////
- DirectoryResponse GetWorkingDirectory();
+ DirectoryResponse getWorkingDirectory();
////////////////////////////////////////////////////////////
- /// Get the contents of the given directory
- /// (subdirectories and files)
+ /// \brief 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 \a directory parameter is relative to the current
+ /// working directory.
///
- /// \param Directory : Directory to list ("" by default, the current one)
+ /// \param directory Directory to list
///
/// \return Server response to the request
///
+ /// \see getWorkingDirectory, changeDirectory, parentDirectory
+ ///
////////////////////////////////////////////////////////////
- ListingResponse GetDirectoryListing(const std::string& Directory = "");
+ ListingResponse getDirectoryListing(const std::string& directory = "");
////////////////////////////////////////////////////////////
- /// Change the current working directory
+ /// \brief Change the current working directory
+ ///
+ /// The new directory must be relative to the current one.
///
- /// \param Directory : New directory, relative to the current one
+ /// \param directory New working directory
///
/// \return Server response to the request
///
+ /// \see getWorkingDirectory, getDirectoryListing, parentDirectory
+ ///
////////////////////////////////////////////////////////////
- Response ChangeDirectory(const std::string& Directory);
+ Response changeDirectory(const std::string& directory);
////////////////////////////////////////////////////////////
- /// Go to the parent directory of the current one
+ /// \brief Go to the parent directory of the current one
///
/// \return Server response to the request
///
+ /// \see getWorkingDirectory, getDirectoryListing, changeDirectory
+ ///
////////////////////////////////////////////////////////////
- Response ParentDirectory();
+ Response parentDirectory();
////////////////////////////////////////////////////////////
- /// Create a new directory
+ /// \brief Create a new directory
+ ///
+ /// The new directory is created as a child of the current
+ /// working directory.
///
- /// \param Name : Name of the directory to create
+ /// \param name Name of the directory to create
///
/// \return Server response to the request
///
+ /// \see deleteDirectory
+ ///
////////////////////////////////////////////////////////////
- Response MakeDirectory(const std::string& Name);
+ Response createDirectory(const std::string& name);
////////////////////////////////////////////////////////////
- /// Remove an existing directory
+ /// \brief Remove an existing directory
///
- /// \param Name : Name of the directory to remove
+ /// The directory to remove must be relative to the
+ /// current working directory.
+ /// Use this function with caution, the directory will
+ /// be removed permanently!
+ ///
+ /// \param name Name of the directory to remove
///
/// \return Server response to the request
///
+ /// \see createDirectory
+ ///
////////////////////////////////////////////////////////////
- Response DeleteDirectory(const std::string& Name);
+ Response deleteDirectory(const std::string& name);
////////////////////////////////////////////////////////////
- /// Rename a file
+ /// \brief Rename an existing file
+ ///
+ /// The filenames must be relative to the current working
+ /// directory.
///
- /// \param File : File to rename
- /// \param NewName : New name
+ /// \param file File to rename
+ /// \param newName New name of the file
///
/// \return Server response to the request
///
+ /// \see deleteFile
+ ///
////////////////////////////////////////////////////////////
- Response RenameFile(const std::string& File, const std::string& NewName);
+ Response renameFile(const std::string& file, const std::string& newName);
////////////////////////////////////////////////////////////
- /// Remove an existing file
+ /// \brief 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!
///
- /// \param Name : File to remove
+ /// \param name File to remove
///
/// \return Server response to the request
///
+ /// \see renameFile
+ ///
////////////////////////////////////////////////////////////
- Response DeleteFile(const std::string& Name);
+ Response deleteFile(const std::string& name);
////////////////////////////////////////////////////////////
- /// Download a file from the server
+ /// \brief 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.
///
- /// \param DistantFile : Path of the distant file to download
- /// \param DestPath : Where to put to file on the local computer
- /// \param Mode : Transfer mode (binary by default)
+ /// \param remoteFile Filename of the distant file to download
+ /// \param localPath Where to put to file on the local computer
+ /// \param mode Transfer mode
///
/// \return Server response to the request
///
+ /// \see upload
+ ///
////////////////////////////////////////////////////////////
- Response Download(const std::string& DistantFile, const std::string& DestPath, TransferMode Mode = Binary);
+ Response download(const std::string& remoteFile, const std::string& localPath, TransferMode mode = Binary);
////////////////////////////////////////////////////////////
- /// Upload a file to the server
+ /// \brief Upload a file to the server
///
- /// \param LocalFile : Path of the local file to upload
- /// \param DestPath : Where to put to file on the server
- /// \param Mode : Transfer mode (binary by default)
+ /// 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.
+ ///
+ /// \param localFile Path of the local file to upload
+ /// \param remotePath Where to put to file on the server
+ /// \param mode Transfer mode
///
/// \return Server response to the request
///
+ /// \see download
+ ///
////////////////////////////////////////////////////////////
- Response Upload(const std::string& LocalFile, const std::string& DestPath, TransferMode Mode = Binary);
+ Response upload(const std::string& localFile, const std::string& remotePath, TransferMode mode = Binary);
private :
////////////////////////////////////////////////////////////
- /// Send a command to the FTP server
+ /// \brief Send a command to the FTP server
///
- /// \param Command : Command to send
- /// \param Parameter : Command parameter ("" by default)
+ /// \param command Command to send
+ /// \param parameter Command parameter
///
/// \return Server response to the request
///
////////////////////////////////////////////////////////////
- Response SendCommand(const std::string& Command, const std::string& Parameter = "");
+ Response sendCommand(const std::string& command, const std::string& parameter = "");
////////////////////////////////////////////////////////////
- /// Receive a response from the server
- /// (usually after a command has been sent)
+ /// \brief Receive a response from the server
+ ///
+ /// This function must be called after each call to
+ /// SendCommand that expects a response.
///
/// \return Server response to the request
///
////////////////////////////////////////////////////////////
- Response GetResponse();
+ Response getResponse();
////////////////////////////////////////////////////////////
- /// Utility class for exchanging datas with the server
- /// on the data channel
+ /// \brief Utility class for exchanging datas with the server
+ /// on the data channel
+ ///
////////////////////////////////////////////////////////////
class DataChannel;
@@ -439,10 +519,73 @@ private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- SocketTCP myCommandSocket; ///< Socket holding the control connection with the server
+ TcpSocket m_commandSocket; ///< Socket holding the control connection with the server
};
} // namespace sf
#endif // SFML_FTP_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Ftp
+/// \ingroup network
+///
+/// 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:
+/// \li Connecting to the FTP server
+/// \li Logging in (either as a registered user or anonymously)
+/// \li Sending commands to the server
+/// \li Disconnecting (this part can be done implicitely 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.
+///
+/// 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:
+/// \code
+/// // 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
+/// sf::Ftp::DirectoryResponse directory = ftp.getWorkingDirectory();
+/// 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;
+///
+/// // Disconnect from the server (optional)
+/// ftp.disconnect();
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/Http.hpp b/include/SFML/Network/Http.hpp
index 54e5c1f..7338f5a 100755..100644
--- a/include/SFML/Network/Http.hpp
+++ b/include/SFML/Network/Http.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,9 +28,11 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/IpAddress.hpp>
+#include <SFML/Network/TcpSocket.hpp>
#include <SFML/System/NonCopyable.hpp>
-#include <SFML/Network/IPAddress.hpp>
-#include <SFML/Network/SocketTCP.hpp>
+#include <SFML/System/Time.hpp>
#include <map>
#include <string>
@@ -38,25 +40,24 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// This class provides methods for manipulating the HTTP
-/// protocol (described in RFC 1945).
-/// It can connect to a website, get its files, send requests, etc.
+/// \brief A HTTP client
+///
////////////////////////////////////////////////////////////
-class SFML_API Http : NonCopyable
+class SFML_NETWORK_API Http : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// This class wraps an HTTP request, which is basically :
- /// - a header with a method, a target URI, and a set of field/value pairs
- /// - an optional body (for POST requests)
+ /// \brief Define a HTTP request
+ ///
////////////////////////////////////////////////////////////
- class SFML_API Request
+ class SFML_NETWORK_API Request
{
public :
////////////////////////////////////////////////////////////
- /// Enumerate the available HTTP methods for a request
+ /// \brief Enumerate the available HTTP methods for a request
+ ///
////////////////////////////////////////////////////////////
enum Method
{
@@ -66,83 +67,106 @@ public :
};
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
- /// \param RequestMethod : Method to use for the request (Get by default)
- /// \param URI : Target URI ("/" by default -- index page)
- /// \param Body : Content of the request's body (empty by default)
+ /// This constructor creates a GET request, with the root
+ /// URI ("/") and an empty body.
+ ///
+ /// \param uri Target URI
+ /// \param method Method to use for the request
+ /// \param body Content of the request's body
///
////////////////////////////////////////////////////////////
- Request(Method RequestMethod = Get, const std::string& URI = "/", const std::string& Body = "");
+ Request(const std::string& uri = "/", Method method = Get, const std::string& body = "");
////////////////////////////////////////////////////////////
- /// Set the value of a field; the field is added if it doesn't exist
+ /// \brief 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).
///
- /// \param Field : Name of the field to set (case-insensitive)
- /// \param Value : Value of the field
+ /// \param field Name of the field to set
+ /// \param value Value of the field
///
////////////////////////////////////////////////////////////
- void SetField(const std::string& Field, const std::string& Value);
+ void setField(const std::string& field, const std::string& value);
////////////////////////////////////////////////////////////
- /// Set the request method.
- /// This parameter is Http::Request::Get by default
+ /// \brief Set the request method
///
- /// \param RequestMethod : Method to use for the request
+ /// See the Method enumeration for a complete list of all
+ /// the availale methods.
+ /// The method is Http::Request::Get by default.
+ ///
+ /// \param method Method to use for the request
///
////////////////////////////////////////////////////////////
- void SetMethod(Method RequestMethod);
+ void setMethod(Method method);
////////////////////////////////////////////////////////////
- /// Set the target URI of the request.
- /// This parameter is "/" by default
+ /// \brief 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.
///
- /// \param URI : URI to request, local to the host
+ /// \param uri URI to request, relative to the host
///
////////////////////////////////////////////////////////////
- void SetURI(const std::string& URI);
+ void setUri(const std::string& uri);
////////////////////////////////////////////////////////////
- /// Set the HTTP version of the request.
- /// This parameter is 1.0 by default
+ /// \brief Set the HTTP version for the request
+ ///
+ /// The HTTP version is 1.0 by default.
///
- /// \param Major : Major version number
- /// \param Minor : Minor version number
+ /// \param major Major HTTP version number
+ /// \param minor Minor HTTP version number
///
////////////////////////////////////////////////////////////
- void SetHttpVersion(unsigned int Major, unsigned int Minor);
+ void setHttpVersion(unsigned int major, unsigned int minor);
////////////////////////////////////////////////////////////
- /// Set the body of the request. This parameter is optional and
- /// makes sense only for POST requests.
- /// This parameter is empty by default
+ /// \brief Set the body of the request
///
- /// \param Body : Content of the request body
+ /// 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.
+ ///
+ /// \param body Content of the body
///
////////////////////////////////////////////////////////////
- void SetBody(const std::string& Body);
+ void setBody(const std::string& body);
private :
friend class Http;
////////////////////////////////////////////////////////////
- /// Get the string representation of the request header
+ /// \brief Prepare the final request to send to the server
+ ///
+ /// This is used internally by Http before sending the
+ /// request to the web server.
///
- /// \return String containing the request
+ /// \return String containing the request, ready to be sent
///
////////////////////////////////////////////////////////////
- std::string ToString() const;
+ std::string prepare() const;
////////////////////////////////////////////////////////////
- /// Check if the given field has been defined
+ /// \brief Check if the request defines a field
+ ///
+ /// This function uses case-insensitive comparisons.
///
- /// \param Field : Name of the field to check (case-insensitive)
+ /// \param field Name of the field to test
///
- /// \return True if the field exists
+ /// \return True if the field exists, false otherwise
///
////////////////////////////////////////////////////////////
- bool HasField(const std::string& Field) const;
+ bool hasField(const std::string& field) const;
////////////////////////////////////////////////////////////
// Types
@@ -152,34 +176,35 @@ public :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- FieldTable myFields; ///< Fields of the header
- Method myMethod; ///< Method to use for the request
- std::string myURI; ///< Target URI of the request
- unsigned int myMajorVersion; ///< Major HTTP version
- unsigned int myMinorVersion; ///< Minor HTTP version
- std::string myBody; ///< Body of the request
+ FieldTable m_fields; ///< Fields of the header associated to their value
+ Method m_method; ///< Method to use for the request
+ std::string m_uri; ///< Target URI of the request
+ unsigned int m_majorVersion; ///< Major HTTP version
+ unsigned int m_minorVersion; ///< Minor HTTP version
+ std::string m_body; ///< Body of the request
};
////////////////////////////////////////////////////////////
- /// This class wraps an HTTP response, which is basically :
- /// - a header with a status code and a set of field/value pairs
- /// - a body (the content of the requested resource)
+ /// \brief Define a HTTP response
+ ///
////////////////////////////////////////////////////////////
- class SFML_API Response
+ class SFML_NETWORK_API Response
{
public :
////////////////////////////////////////////////////////////
- /// Enumerate all the valid status codes returned in
- /// a HTTP response
+ /// \brief Enumerate all the valid status codes for a response
+ ///
////////////////////////////////////////////////////////////
enum Status
{
// 2xx: success
- Ok = 200, ///< Most common code returned when operation was successful
- Created = 201, ///< The resource has successfully been created
- Accepted = 202, ///< The request has been accepted, but will be processed later by the server
- NoContent = 204, ///< Sent when the server didn't send any data in return
+ Ok = 200, ///< Most common code returned when operation was successful
+ Created = 201, ///< The resource has successfully been created
+ Accepted = 202, ///< The request has been accepted, but will be processed later by the server
+ NoContent = 204, ///< The server didn't send any data in return
+ ResetContent = 205, ///< The server informs the client that it should clear the view (form) that caused the request to be sent
+ PartialContent = 206, ///< The server has sent a part of the resource, as a response to a partial GET request
// 3xx: redirection
MultipleChoices = 300, ///< The requested page can be accessed from several locations
@@ -188,16 +213,19 @@ public :
NotModified = 304, ///< For conditionnal requests, means the requested page hasn't changed and doesn't need to be refreshed
// 4xx: client error
- BadRequest = 400, ///< The server couldn't understand the request (syntax error)
- Unauthorized = 401, ///< The requested page needs an authentification to be accessed
- Forbidden = 403, ///< The requested page cannot be accessed at all, even with authentification
- NotFound = 404, ///< The requested page doesn't exist
+ BadRequest = 400, ///< The server couldn't understand the request (syntax error)
+ Unauthorized = 401, ///< The requested page needs an authentification to be accessed
+ Forbidden = 403, ///< The requested page cannot be accessed at all, even with authentification
+ NotFound = 404, ///< The requested page doesn't exist
+ RangeNotSatisfiable = 407, ///< The server can't satisfy the partial GET request (with a "Range" header field)
// 5xx: server error
InternalServerError = 500, ///< The server encountered an unexpected error
NotImplemented = 501, ///< The server doesn't implement a requested feature
BadGateway = 502, ///< The gateway server has received an error from the source server
ServiceNotAvailable = 503, ///< The server is temporarily unavailable (overloaded, in maintenance, ...)
+ GatewayTimeout = 504, ///< The gateway server couldn't receive a response from the source server
+ VersionNotSupported = 505, ///< The server doesn't support the requested HTTP version
// 10xx: SFML custom codes
InvalidResponse = 1000, ///< Response is not a valid HTTP one
@@ -205,68 +233,88 @@ public :
};
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Constructs an empty response.
///
////////////////////////////////////////////////////////////
Response();
////////////////////////////////////////////////////////////
- /// Get the value of a field
+ /// \brief Get the value of a field
///
- /// \param Field : Name of the field to get (case-insensitive)
+ /// If the field \a field is not found in the response header,
+ /// the empty string is returned. This function uses
+ /// case-insensitive comparisons.
+ ///
+ /// \param field Name of the field to get
///
/// \return Value of the field, or empty string if not found
///
////////////////////////////////////////////////////////////
- const std::string& GetField(const std::string& Field) const;
+ const std::string& getField(const std::string& field) const;
////////////////////////////////////////////////////////////
- /// Get the header's status code
+ /// \brief 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).
///
- /// \return Header's status code
+ /// \return Status code of the response
///
////////////////////////////////////////////////////////////
- Status GetStatus() const;
+ Status getStatus() const;
////////////////////////////////////////////////////////////
- /// Get the major HTTP version number of the response
+ /// \brief Get the major HTTP version number of the response
///
- /// \return Major version number
+ /// \return Major HTTP version number
+ ///
+ /// \see getMinorHttpVersion
///
////////////////////////////////////////////////////////////
- unsigned int GetMajorHttpVersion() const;
+ unsigned int getMajorHttpVersion() const;
////////////////////////////////////////////////////////////
- /// Get the major HTTP version number of the response
+ /// \brief Get the minor HTTP version number of the response
+ ///
+ /// \return Minor HTTP version number
///
- /// \return Major version number
+ /// \see getMajorHttpVersion
///
////////////////////////////////////////////////////////////
- unsigned int GetMinorHttpVersion() const;
+ unsigned int getMinorHttpVersion() const;
////////////////////////////////////////////////////////////
- /// Get the body of the response. The body can contain :
- /// - the requested page (for GET requests)
- /// - a response from the server (for POST requests)
- /// - nothing (for HEAD requests)
- /// - an error message (in case of an error)
+ /// \brief Get the body of the response
+ ///
+ /// The body of a response may contain:
+ /// \li the requested page (for GET requests)
+ /// \li a response from the server (for POST requests)
+ /// \li nothing (for HEAD requests)
+ /// \li an error message (in case of an error)
///
/// \return The response body
///
////////////////////////////////////////////////////////////
- const std::string& GetBody() const;
+ const std::string& getBody() const;
private :
friend class Http;
////////////////////////////////////////////////////////////
- /// Construct the header from a response string
+ /// \brief Construct the header from a response string
+ ///
+ /// This function is used by Http to build the response
+ /// of a request.
///
- /// \param Data : Content of the response's header to parse
+ /// \param data Content of the response to parse
///
////////////////////////////////////////////////////////////
- void FromString(const std::string& Data);
+ void parse(const std::string& data);
////////////////////////////////////////////////////////////
// Types
@@ -276,65 +324,144 @@ public :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- FieldTable myFields; ///< Fields of the header
- Status myStatus; ///< Status code
- unsigned int myMajorVersion; ///< Major HTTP version
- unsigned int myMinorVersion; ///< Minor HTTP version
- std::string myBody; ///< Body of the response
+ FieldTable m_fields; ///< Fields of the header
+ Status m_status; ///< Status code
+ unsigned int m_majorVersion; ///< Major HTTP version
+ unsigned int m_minorVersion; ///< Minor HTTP version
+ std::string m_body; ///< Body of the response
};
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
Http();
////////////////////////////////////////////////////////////
- /// Construct the Http instance with the target host
+ /// \brief 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, 443 for HTTPS). You should
+ /// leave it like this unless you really need a port other
+ /// than the standard one, or use an unknown protocol.
///
- /// \param Host : Web server to connect to
- /// \param Port : Port to use for connection (0 by default -- use the standard port of the protocol used)
+ /// \param host Web server to connect to
+ /// \param port Port to use for connection
///
////////////////////////////////////////////////////////////
- Http(const std::string& Host, unsigned short Port = 0);
+ Http(const std::string& host, unsigned short port = 0);
////////////////////////////////////////////////////////////
- /// Set the target host
+ /// \brief Set the target host
///
- /// \param Host : Web server to connect to
- /// \param Port : Port to use for connection (0 by default -- use the standard port of the protocol used)
+ /// 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, 443 for HTTPS). You should
+ /// leave it like this unless you really need a port other
+ /// than the standard one, or use an unknown protocol.
+ ///
+ /// \param host Web server to connect to
+ /// \param port Port to use for connection
///
////////////////////////////////////////////////////////////
- void SetHost(const std::string& Host, unsigned short Port = 0);
+ void setHost(const std::string& host, unsigned short port = 0);
////////////////////////////////////////////////////////////
- /// Send a HTTP request and return the server's response.
- /// You must be connected to a host before sending requests.
- /// Any missing mandatory header field will be added with an appropriate value.
- /// Warning : this function waits for the server's response and may
+ /// \brief 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.
+ /// application, or use a timeout to limit the time to wait. A value
+ /// of Time::Zero means that the client will use the system defaut timeout
+ /// (which is usually pretty long).
///
- /// \param Req : Request to send
- /// \param Timeout : Maximum time to wait, in seconds (0 by default, means no timeout)
+ /// \param request Request to send
+ /// \param timeout Maximum time to wait
///
/// \return Server's response
///
////////////////////////////////////////////////////////////
- Response SendRequest(const Request& Req, float Timeout = 0.f);
+ Response sendRequest(const Request& request, Time timeout = Time::Zero);
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- SocketTCP myConnection; ///< Connection to the host
- IPAddress myHost; ///< Web host address
- std::string myHostName; ///< Web host name
- unsigned short myPort; ///< Port used for connection with host
+ TcpSocket m_connection; ///< Connection to the host
+ IpAddress m_host; ///< Web host address
+ std::string m_hostName; ///< Web host name
+ unsigned short m_port; ///< Port used for connection with host
};
} // namespace sf
#endif // SFML_HTTP_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Http
+/// \ingroup network
+///
+/// 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 HTTP client is split into 3 classes:
+/// \li sf::Http::Request
+/// \li sf::Http::Response
+/// \li sf::Http
+///
+/// sf::Http::Request builds the request that will be
+/// sent to the server. A request is made of:
+/// \li a method (what you want to do)
+/// \li a target URI (usually the name of the web page or file)
+/// \li one or more header fields (options that you can pass to the server)
+/// \li 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:
+/// \li a status code
+/// \li header fields (that may be answers to the ones that you requested)
+/// \li 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:
+/// \code
+/// // 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
+/// sf::Http::Response::Status status = response.getStatus();
+/// if (status == sf::Http::Response::Ok)
+/// {
+/// std::cout << response.getBody() << std::endl;
+/// }
+/// else
+/// {
+/// std::cout << "Error " << status << std::endl;
+/// }
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/IPAddress.hpp b/include/SFML/Network/IPAddress.hpp
deleted file mode 100755
index 638dc47..0000000
--- a/include/SFML/Network/IPAddress.hpp
+++ /dev/null
@@ -1,231 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_IPADDRESS_HPP
-#define SFML_IPADDRESS_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <istream>
-#include <ostream>
-#include <string>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// IPAddress provides easy manipulation of IP v4 addresses
-////////////////////////////////////////////////////////////
-class SFML_API IPAddress
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor -- constructs an invalid address
- ///
- ////////////////////////////////////////////////////////////
- IPAddress();
-
- ////////////////////////////////////////////////////////////
- /// Construct the address from a string
- ///
- /// \param Address : IP address ("xxx.xxx.xxx.xxx") or network name
- ///
- ////////////////////////////////////////////////////////////
- IPAddress(const std::string& Address);
-
- ////////////////////////////////////////////////////////////
- /// Construct the address from a C-style string ;
- /// Needed for implicit conversions from literal strings to IPAddress to work
- ///
- /// \param Address : IP address ("xxx.xxx.xxx.xxx") or network name
- ///
- ////////////////////////////////////////////////////////////
- IPAddress(const char* Address);
-
- ////////////////////////////////////////////////////////////
- /// Construct the address from 4 bytes
- ///
- /// \param Byte0 : First byte of the address
- /// \param Byte1 : Second byte of the address
- /// \param Byte2 : Third byte of the address
- /// \param Byte3 : Fourth byte of the address
- ///
- ////////////////////////////////////////////////////////////
- IPAddress(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3);
-
- ////////////////////////////////////////////////////////////
- /// Construct the address from a 32-bits integer
- ///
- /// \param Address : 4 bytes of the address packed into a 32-bits integer
- ///
- ////////////////////////////////////////////////////////////
- IPAddress(Uint32 Address);
-
- ////////////////////////////////////////////////////////////
- /// Tell if the address is a valid one
- ///
- /// \return True if address has a valid syntax
- ///
- ////////////////////////////////////////////////////////////
- bool IsValid() const;
-
- ////////////////////////////////////////////////////////////
- /// Get a string representation of the address
- ///
- /// \return String representation of the IP address ("xxx.xxx.xxx.xxx")
- ///
- ////////////////////////////////////////////////////////////
- std::string ToString() const;
-
- ////////////////////////////////////////////////////////////
- /// Get an integer representation of the address
- ///
- /// \return 32-bits integer containing the 4 bytes of the address, in system endianness
- ///
- ////////////////////////////////////////////////////////////
- Uint32 ToInteger() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the computer's local IP address (from the LAN point of view)
- ///
- /// \return Local IP address
- ///
- ////////////////////////////////////////////////////////////
- static IPAddress GetLocalAddress();
-
- ////////////////////////////////////////////////////////////
- /// Get the computer's public IP address (from the web point of view).
- /// The only way to get a public address is to ask it to a
- /// distant website ; as a consequence, this function may be
- /// very slow -- use it as few as possible !
- ///
- /// \param Timeout : Maximum time to wait, in seconds (0 by default : no timeout)
- ///
- /// \return Public IP address
- ///
- ////////////////////////////////////////////////////////////
- static IPAddress GetPublicAddress(float Timeout = 0.f);
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator ==
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this == Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator ==(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator !=
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this != Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator !=(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator <
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this < Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator <(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator >
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this > Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator >(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator <=
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this <= Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator <=(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator >=
- ///
- /// \param Other : Address to compare
- ///
- /// \return True if *this >= Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator >=(const IPAddress& Other) const;
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static const IPAddress LocalHost; ///< Local host address (to connect to the same computer)
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- Uint32 myAddress; ///< Address stored as an unsigned 32 bits integer
-};
-
-////////////////////////////////////////////////////////////
-/// Operator >> overload to extract an address from an input stream
-///
-/// \param Stream : Input stream
-/// \param Address : Address to extract
-///
-/// \return Reference to the input stream
-///
-////////////////////////////////////////////////////////////
-SFML_API std::istream& operator >>(std::istream& Stream, IPAddress& Address);
-
-////////////////////////////////////////////////////////////
-/// Operator << overload to print an address to an output stream
-///
-/// \param Stream : Output stream
-/// \param Address : Address to print
-///
-/// \return Reference to the output stream
-///
-////////////////////////////////////////////////////////////
-SFML_API std::ostream& operator <<(std::ostream& Stream, const IPAddress& Address);
-
-} // namespace sf
-
-
-#endif // SFML_IPADDRESS_HPP
diff --git a/include/SFML/Network/IpAddress.hpp b/include/SFML/Network/IpAddress.hpp
new file mode 100644
index 0000000..15c4ac3
--- /dev/null
+++ b/include/SFML/Network/IpAddress.hpp
@@ -0,0 +1,316 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_IPADDRESS_HPP
+#define SFML_IPADDRESS_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/System/Time.hpp>
+#include <istream>
+#include <ostream>
+#include <string>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Encapsulate an IPv4 network address
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API IpAddress
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor creates an empty (invalid) address
+ ///
+ ////////////////////////////////////////////////////////////
+ IpAddress();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the address from a string
+ ///
+ /// Here \a address can be either a decimal address
+ /// (ex: "192.168.1.56") or a network name (ex: "localhost").
+ ///
+ /// \param address IP address or network name
+ ///
+ ////////////////////////////////////////////////////////////
+ IpAddress(const std::string& address);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the address from a string
+ ///
+ /// Here \a 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.
+ ///
+ /// \param address IP address or network name
+ ///
+ ////////////////////////////////////////////////////////////
+ IpAddress(const char* address);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param byte0 First byte of the address
+ /// \param byte1 Second byte of the address
+ /// \param byte2 Third byte of the address
+ /// \param byte3 Fourth byte of the address
+ ///
+ ////////////////////////////////////////////////////////////
+ IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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().
+ ///
+ /// \param address 4 bytes of the address packed into a 32-bits integer
+ ///
+ /// \see toInteger
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit IpAddress(Uint32 address);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return String representation of the address
+ ///
+ /// \see toInteger
+ ///
+ ////////////////////////////////////////////////////////////
+ std::string toString() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return 32-bits unsigned integer representation of the address
+ ///
+ /// \see toString
+ ///
+ ////////////////////////////////////////////////////////////
+ Uint32 toInteger() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Local IP address of the computer
+ ///
+ /// \see getPublicAddress
+ ///
+ ////////////////////////////////////////////////////////////
+ static IpAddress getLocalAddress();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param timeout Maximum time to wait
+ ///
+ /// \return Public IP address of the computer
+ ///
+ /// \see getLocalAddress
+ ///
+ ////////////////////////////////////////////////////////////
+ static IpAddress getPublicAddress(Time timeout = Time::Zero);
+
+ ////////////////////////////////////////////////////////////
+ // Static member data
+ ////////////////////////////////////////////////////////////
+ static const IpAddress None; ///< Value representing an empty/invalid address
+ static const IpAddress LocalHost; ///< The "localhost" address (for connecting a computer to itself locally)
+ static const IpAddress Broadcast; ///< The "broadcast" address (for sending UDP messages to everyone on a local network)
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Uint32 m_address; ///< Address stored as an unsigned 32 bits integer
+};
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of == operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if both addresses are equal
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator ==(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of != operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if both addresses are different
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator !=(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of < operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if \a left is lesser than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of > operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if \a left is greater than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator >(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of <= operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if \a left is lesser or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator <=(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of >= operator to compare two IP addresses
+///
+/// \param left Left operand (a IP address)
+/// \param right Right operand (a IP address)
+///
+/// \return True if \a left is greater or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API bool operator >=(const IpAddress& left, const IpAddress& right);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of >> operator to extract an IP address from an input stream
+///
+/// \param stream Input stream
+/// \param address IP address to extract
+///
+/// \return Reference to the input stream
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API std::istream& operator >>(std::istream& stream, IpAddress& address);
+
+////////////////////////////////////////////////////////////
+/// \brief Overload of << operator to print an IP address to an output stream
+///
+/// \param stream Output stream
+/// \param address IP address to print
+///
+/// \return Reference to the output stream
+///
+////////////////////////////////////////////////////////////
+SFML_NETWORK_API std::ostream& operator <<(std::ostream& stream, const IpAddress& address);
+
+} // namespace sf
+
+
+#endif // SFML_IPADDRESS_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::IpAddress
+/// \ingroup network
+///
+/// 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:
+/// \code
+/// 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
+/// \endcode
+///
+/// Note that sf::IpAddress currently doesn't support IPv6
+/// nor other types of network addresses.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/Packet.hpp b/include/SFML/Network/Packet.hpp
index 9c5463f..2d3e201 100755..100644
--- a/include/SFML/Network/Packet.hpp
+++ b/include/SFML/Network/Packet.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,160 +28,380 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Network/Export.hpp>
#include <string>
#include <vector>
namespace sf
{
+class String;
+class TcpSocket;
+class UdpSocket;
+
////////////////////////////////////////////////////////////
-/// Packet wraps data to send / to receive through the network
+/// \brief Utility class to build blocks of data to transfer
+/// over the network
+///
////////////////////////////////////////////////////////////
-class SFML_API Packet
+class SFML_NETWORK_API Packet
{
+ // A bool-like type that cannot be converted to integer or pointer types
+ typedef bool (Packet::*BoolType)(std::size_t);
+
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates an empty packet.
///
////////////////////////////////////////////////////////////
Packet();
////////////////////////////////////////////////////////////
- /// Virtual destructor
+ /// \brief Virtual destructor
///
////////////////////////////////////////////////////////////
virtual ~Packet();
////////////////////////////////////////////////////////////
- /// Append data to the end of the packet
+ /// \brief Append data to the end of the packet
///
- /// \param Data : Pointer to the bytes to append
- /// \param SizeInBytes : Number of bytes to append
+ /// \param data Pointer to the sequence of bytes to append
+ /// \param sizeInBytes Number of bytes to append
+ ///
+ /// \see clear
///
////////////////////////////////////////////////////////////
- void Append(const void* Data, std::size_t SizeInBytes);
+ void append(const void* data, std::size_t sizeInBytes);
////////////////////////////////////////////////////////////
- /// Clear the packet data
+ /// \brief Clear the packet
+ ///
+ /// After calling Clear, the packet is empty.
+ ///
+ /// \see append
///
////////////////////////////////////////////////////////////
- void Clear();
+ void clear();
////////////////////////////////////////////////////////////
- /// Get a pointer to the data contained in the packet
- /// Warning : the returned pointer may be invalid after you
- /// append data to the packet
+ /// \brief 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.
///
/// \return Pointer to the data
///
+ /// \see getDataSize
+ ///
////////////////////////////////////////////////////////////
- const char* GetData() const;
+ const void* getData() const;
////////////////////////////////////////////////////////////
- /// Get the size of the data contained in the packet
+ /// \brief Get the size of the data contained in the packet
+ ///
+ /// This function returns the number of bytes pointed to by
+ /// what getData returns.
///
/// \return Data size, in bytes
///
+ /// \see getData
+ ///
////////////////////////////////////////////////////////////
- std::size_t GetDataSize() const;
+ std::size_t getDataSize() const;
////////////////////////////////////////////////////////////
- /// Tell if the reading position has reached the end of the packet
+ /// \brief Tell if the reading position has reached the
+ /// end of the packet
///
- /// \return True if all data have been read into the packet
+ /// This function is useful to know if there is some data
+ /// left to be read, without actually reading it.
+ ///
+ /// \return True if all data was read, false otherwise
+ ///
+ /// \see operator bool
///
////////////////////////////////////////////////////////////
- bool EndOfPacket() const;
+ bool endOfPacket() const;
+
+public:
////////////////////////////////////////////////////////////
- /// Return the validity of packet
+ /// \brief 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 behaviour is the same as standard C++ streams.
+ ///
+ /// Usage example:
+ /// \code
+ /// float x;
+ /// packet >> x;
+ /// if (packet)
+ /// {
+ /// // ok, x was extracted successfully
+ /// }
+ ///
+ /// // -- or --
+ ///
+ /// float x;
+ /// if (packet >> x)
+ /// {
+ /// // ok, x was extracted successfully
+ /// }
+ /// \endcode
+ ///
+ /// Don't focus on the return type, it's equivalent to bool but
+ /// it disallows unwanted implicit conversions to integer or
+ /// pointer types.
///
/// \return True if last data extraction from packet was successful
///
+ /// \see endOfPacket
+ ///
////////////////////////////////////////////////////////////
- operator bool() const;
+ operator BoolType() const;
////////////////////////////////////////////////////////////
- /// Operator >> overloads to extract data from the packet
+ /// Overloads of operator >> to read data from the packet
///
////////////////////////////////////////////////////////////
- Packet& operator >>(bool& Data);
- Packet& operator >>(Int8& Data);
- Packet& operator >>(Uint8& Data);
- Packet& operator >>(Int16& Data);
- Packet& operator >>(Uint16& Data);
- Packet& operator >>(Int32& Data);
- Packet& operator >>(Uint32& Data);
- Packet& operator >>(float& Data);
- Packet& operator >>(double& Data);
- Packet& operator >>(char* Data);
- Packet& operator >>(std::string& Data);
- Packet& operator >>(wchar_t* Data);
- Packet& operator >>(std::wstring& Data);
+ Packet& operator >>(bool& data);
+ Packet& operator >>(Int8& data);
+ Packet& operator >>(Uint8& data);
+ Packet& operator >>(Int16& data);
+ Packet& operator >>(Uint16& data);
+ Packet& operator >>(Int32& data);
+ Packet& operator >>(Uint32& data);
+ Packet& operator >>(float& data);
+ Packet& operator >>(double& data);
+ Packet& operator >>(char* data);
+ Packet& operator >>(std::string& data);
+ Packet& operator >>(wchar_t* data);
+ Packet& operator >>(std::wstring& data);
+ Packet& operator >>(String& data);
////////////////////////////////////////////////////////////
- /// Operator << overloads to put data into the packet
+ /// Overloads of operator << to write data into the packet
///
////////////////////////////////////////////////////////////
- Packet& operator <<(bool Data);
- Packet& operator <<(Int8 Data);
- Packet& operator <<(Uint8 Data);
- Packet& operator <<(Int16 Data);
- Packet& operator <<(Uint16 Data);
- Packet& operator <<(Int32 Data);
- Packet& operator <<(Uint32 Data);
- Packet& operator <<(float Data);
- Packet& operator <<(double Data);
- Packet& operator <<(const char* Data);
- Packet& operator <<(const std::string& Data);
- Packet& operator <<(const wchar_t* Data);
- Packet& operator <<(const std::wstring& Data);
+ Packet& operator <<(bool data);
+ Packet& operator <<(Int8 data);
+ Packet& operator <<(Uint8 data);
+ Packet& operator <<(Int16 data);
+ Packet& operator <<(Uint16 data);
+ Packet& operator <<(Int32 data);
+ Packet& operator <<(Uint32 data);
+ Packet& operator <<(float data);
+ Packet& operator <<(double data);
+ Packet& operator <<(const char* data);
+ Packet& operator <<(const std::string& data);
+ Packet& operator <<(const wchar_t* data);
+ Packet& operator <<(const std::wstring& data);
+ Packet& operator <<(const String& data);
-private :
+protected:
- friend class SocketTCP;
- friend class SocketUDP;
+ friend class TcpSocket;
+ friend class UdpSocket;
////////////////////////////////////////////////////////////
- /// Check if the packet can extract a given size of bytes
+ /// \brief 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.
///
- /// \param Size : Size to check
+ /// \param size Variable to fill with the size of data to send
+ ///
+ /// \return Pointer to the array of bytes to send
///
- /// \return True if Size bytes can be read from the packet's data
+ /// \see onReceive
///
////////////////////////////////////////////////////////////
- bool CheckSize(std::size_t Size);
+ virtual const void* onSend(std::size_t& size);
////////////////////////////////////////////////////////////
- /// Called before the packet is sent to the network
+ /// \brief Called after the packet is received over the network
///
- /// \param DataSize : Variable to fill with the size of data to send
+ /// This function can be defined by derived classes to
+ /// transform the data after it is received; this can be
+ /// used for uncompression, 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.
///
- /// \return Pointer to the array of bytes to send
+ /// \param data Pointer to the received bytes
+ /// \param size Number of bytes
+ ///
+ /// \see onSend
///
////////////////////////////////////////////////////////////
- virtual const char* OnSend(std::size_t& DataSize);
+ virtual void onReceive(const void* data, std::size_t size);
+
+private :
////////////////////////////////////////////////////////////
- /// Called after the packet has been received from the network
+ /// Disallow comparisons between packets
///
- /// \param Data : Pointer to the array of received bytes
- /// \param DataSize : Size of the array of bytes
+ ////////////////////////////////////////////////////////////
+ bool operator ==(const Packet& right) const;
+ bool operator !=(const Packet& right) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if the packet can extract a given number of bytes
+ ///
+ /// This function updates accordingly the state of the packet.
+ ///
+ /// \param size Size to check
+ ///
+ /// \return True if \a size bytes can be read from the packet
///
////////////////////////////////////////////////////////////
- virtual void OnReceive(const char* Data, std::size_t DataSize);
+ bool checkSize(std::size_t size);
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::vector<char> myData; ///< Data stored in the packet
- std::size_t myReadPos; ///< Current reading position in the packet
- bool myIsValid; ///< Reading state of the packet
+ std::vector<char> m_data; ///< Data stored in the packet
+ std::size_t m_readPos; ///< Current reading position in the packet
+ bool m_isValid; ///< Reading state of the packet
};
} // namespace sf
#endif // SFML_PACKET_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Packet
+/// \ingroup 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
+/// transfering data over the network:
+/// \li data is interpreted correctly according to the endianness
+/// \li 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 behaviour 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:
+/// \code
+/// 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...
+/// }
+/// \endcode
+///
+/// Packets have built-in operator >> and << overloads for
+/// standard types:
+/// \li bool
+/// \li fixed-size integer types (sf::Int8/16/32, sf::Uint8/16/32)
+/// \li floating point numbers (float, double)
+/// \li 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.
+///
+/// \code
+/// 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;
+/// }
+/// \endcode
+///
+/// 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:
+/// \code
+/// 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;
+/// ...
+/// \endcode
+///
+/// \see sf::TcpSocket, sf::UdpSocket
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/Selector.inl b/include/SFML/Network/Selector.inl
deleted file mode 100755
index 40ac948..0000000
--- a/include/SFML/Network/Selector.inl
+++ /dev/null
@@ -1,97 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-/// Add a socket to watch
-////////////////////////////////////////////////////////////
-template <typename Type>
-void Selector<Type>::Add(Type Socket)
-{
- if (Socket.IsValid())
- {
- SelectorBase::Add(Socket.mySocket);
- mySockets[Socket.mySocket] = Socket;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Remove a socket
-////////////////////////////////////////////////////////////
-template <typename Type>
-void Selector<Type>::Remove(Type Socket)
-{
- typename SocketTable::iterator It = mySockets.find(Socket.mySocket);
- if (It != mySockets.end())
- {
- SelectorBase::Remove(Socket.mySocket);
- mySockets.erase(It);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Remove all sockets
-////////////////////////////////////////////////////////////
-template <typename Type>
-void Selector<Type>::Clear()
-{
- SelectorBase::Clear();
- mySockets.clear();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Wait and collect sockets which are ready for reading.
-/// This functions will return either when at least one socket
-/// is ready, or when the given time is out
-////////////////////////////////////////////////////////////
-template <typename Type>
-unsigned int Selector<Type>::Wait(float Timeout)
-{
- // No socket in the selector : return 0
- if (mySockets.empty())
- return 0;
-
- return SelectorBase::Wait(Timeout);
-}
-
-
-////////////////////////////////////////////////////////////
-/// After a call to Wait(), get the Index-th socket which is
-/// ready for reading. The total number of sockets ready
-/// is the integer returned by the previous call to Wait()
-////////////////////////////////////////////////////////////
-template <typename Type>
-Type Selector<Type>::GetSocketReady(unsigned int Index)
-{
- SocketHelper::SocketType Socket = SelectorBase::GetSocketReady(Index);
-
- typename SocketTable::const_iterator It = mySockets.find(Socket);
- if (It != mySockets.end())
- return It->second;
- else
- return Type(Socket);
-}
diff --git a/include/SFML/Network/Socket.hpp b/include/SFML/Network/Socket.hpp
new file mode 100644
index 0000000..4b30307
--- /dev/null
+++ b/include/SFML/Network/Socket.hpp
@@ -0,0 +1,218 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SOCKET_HPP
+#define SFML_SOCKET_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/SocketHandle.hpp>
+#include <SFML/System/NonCopyable.hpp>
+#include <vector>
+
+
+namespace sf
+{
+class SocketSelector;
+
+////////////////////////////////////////////////////////////
+/// \brief Base class for all the socket types
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API Socket : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Status codes that may be returned by socket functions
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Status
+ {
+ Done, ///< The socket has sent / received the data
+ NotReady, ///< The socket is not ready to send / receive data yet
+ Disconnected, ///< The TCP socket has been disconnected
+ Error ///< An unexpected error happened
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Some special values used by sockets
+ ///
+ ////////////////////////////////////////////////////////////
+ enum
+ {
+ AnyPort = 0 ///< Special value that tells the system to pick any available port
+ };
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~Socket();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param blocking True to set the socket as blocking, false for non-blocking
+ ///
+ /// \see isBlocking
+ ///
+ ////////////////////////////////////////////////////////////
+ void setBlocking(bool blocking);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Tell whether the socket is in blocking or non-blocking mode
+ ///
+ /// \return True if the socket is blocking, false otherwise
+ ///
+ /// \see setBlocking
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isBlocking() const;
+
+protected :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Types of protocols that the socket can use
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Type
+ {
+ Tcp, ///< TCP protocol
+ Udp ///< UDP protocol
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor can only be accessed by derived classes.
+ ///
+ /// \param type Type of the socket (TCP or UDP)
+ ///
+ ////////////////////////////////////////////////////////////
+ Socket(Type type);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return The internal (OS-specific) handle of the socket
+ ///
+ ////////////////////////////////////////////////////////////
+ SocketHandle getHandle() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the internal representation of the socket
+ ///
+ /// This function can only be accessed by derived classes.
+ ///
+ ////////////////////////////////////////////////////////////
+ void create();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the internal representation of the socket
+ /// from a socket handle
+ ///
+ /// This function can only be accessed by derived classes.
+ ///
+ /// \param handle OS-specific handle of the socket to wrap
+ ///
+ ////////////////////////////////////////////////////////////
+ void create(SocketHandle handle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Close the socket gracefully
+ ///
+ /// This function can only be accessed by derived classes.
+ ///
+ ////////////////////////////////////////////////////////////
+ void close();
+
+private :
+
+ friend class SocketSelector;
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Type m_type; ///< Type of the socket (TCP or UDP)
+ SocketHandle m_socket; ///< Socket descriptor
+ bool m_isBlocking; ///< Current blocking mode of the socket
+};
+
+} // namespace sf
+
+
+#endif // SFML_SOCKET_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Socket
+/// \ingroup network
+///
+/// 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 sf::TcpListener, sf::TcpSocket, sf::UdpSocket
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/SocketHandle.hpp b/include/SFML/Network/SocketHandle.hpp
new file mode 100644
index 0000000..8edd46a
--- /dev/null
+++ b/include/SFML/Network/SocketHandle.hpp
@@ -0,0 +1,57 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SOCKETHANDLE_HPP
+#define SFML_SOCKETHANDLE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <basetsd.h>
+#endif
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+// Define the low-level socket handle type, specific to
+// each platform
+////////////////////////////////////////////////////////////
+#if defined(SFML_SYSTEM_WINDOWS)
+
+ typedef UINT_PTR SocketHandle;
+
+#else
+
+ typedef int SocketHandle;
+
+#endif
+
+} // namespace sf
+
+
+#endif // SFML_SOCKETHANDLE_HPP
diff --git a/include/SFML/Network/SocketSelector.hpp b/include/SFML/Network/SocketSelector.hpp
new file mode 100644
index 0000000..414a941
--- /dev/null
+++ b/include/SFML/Network/SocketSelector.hpp
@@ -0,0 +1,263 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SOCKETSELECTOR_HPP
+#define SFML_SOCKETSELECTOR_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+class Socket;
+
+////////////////////////////////////////////////////////////
+/// \brief Multiplexer that allows to read from multiple sockets
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API SocketSelector
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ SocketSelector();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Copy constructor
+ ///
+ /// \param copy Instance to copy
+ ///
+ ////////////////////////////////////////////////////////////
+ SocketSelector(const SocketSelector& copy);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~SocketSelector();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param socket Reference to the socket to add
+ ///
+ /// \see remove, clear
+ ///
+ ////////////////////////////////////////////////////////////
+ void add(Socket& socket);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Remove a socket from the selector
+ ///
+ /// This function doesn't destroy the socket, it simply
+ /// removes the reference that the selector has to it.
+ ///
+ /// \param socket Reference to the socket to remove
+ ///
+ /// \see add, clear
+ ///
+ ////////////////////////////////////////////////////////////
+ void remove(Socket& socket);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 add, remove
+ ///
+ ////////////////////////////////////////////////////////////
+ void clear();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param timeout Maximum time to wait, (use Time::Zero for infinity)
+ ///
+ /// \return True if there are sockets ready, false otherwise
+ ///
+ /// \see isReady
+ ///
+ ////////////////////////////////////////////////////////////
+ bool wait(Time timeout = Time::Zero);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param socket Socket to test
+ ///
+ /// \return True if the socket is ready to read, false otherwise
+ ///
+ /// \see isReady
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isReady(Socket& socket) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of assignment operator
+ ///
+ /// \param right Instance to assign
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ SocketSelector& operator =(const SocketSelector& right);
+
+private :
+
+ struct SocketSelectorImpl;
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ SocketSelectorImpl* m_impl; ///< Opaque pointer to the implementation (which requires OS-specific types)
+};
+
+} // namespace sf
+
+
+#endif // SFML_SOCKETSELECTOR_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::SocketSelector
+/// \ingroup network
+///
+/// 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:
+/// \li sf::TcpListener
+/// \li sf::TcpSocket
+/// \li sf::UdpSocket
+///
+/// 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 oustide and make sure
+/// that they are alive as long as they are used in the selector.
+///
+/// Using a selector is simple:
+/// \li populate the selector with all the sockets that you want to observe
+/// \li make it wait until there is data available on any of the sockets
+/// \li test each socket to find out which ones are ready
+///
+/// Usage example:
+/// \code
+/// // 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
+/// sf::SocketSelector 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
+/// sf::TcpSocket* client = new sf::TcpSocket;
+/// 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)
+/// {
+/// ...
+/// }
+/// }
+/// }
+/// }
+/// }
+/// }
+/// \endcode
+///
+/// \see sf::Socket
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/SocketTCP.hpp b/include/SFML/Network/SocketTCP.hpp
deleted file mode 100755
index 8929dc9..0000000
--- a/include/SFML/Network/SocketTCP.hpp
+++ /dev/null
@@ -1,227 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SOCKETTCP_HPP
-#define SFML_SOCKETTCP_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketHelper.hpp>
-#include <vector>
-
-
-namespace sf
-{
-class Packet;
-class IPAddress;
-template <typename> class Selector;
-
-////////////////////////////////////////////////////////////
-/// SocketTCP wraps a socket using TCP protocol to
-/// send data safely (but a bit slower)
-////////////////////////////////////////////////////////////
-class SFML_API SocketTCP
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- SocketTCP();
-
- ////////////////////////////////////////////////////////////
- /// Change the blocking state of the socket.
- /// The default behaviour of a socket is blocking
- ///
- /// \param Blocking : Pass true to set the socket as blocking, or false for non-blocking
- ///
- ////////////////////////////////////////////////////////////
- void SetBlocking(bool Blocking);
-
- ////////////////////////////////////////////////////////////
- /// Connect to another computer on a specified port
- ///
- /// \param Port : Port to use for transfers (warning : ports < 1024 are reserved)
- /// \param HostAddress : IP Address of the host to connect to
- /// \param Timeout : Maximum time to wait, in seconds (0 by default : no timeout) (this parameter is ignored for non-blocking sockets)
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Connect(unsigned short Port, const IPAddress& HostAddress, float Timeout = 0.f);
-
- ////////////////////////////////////////////////////////////
- /// Listen to a specified port for incoming data or connections
- ///
- /// \param Port : Port to listen to
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- bool Listen(unsigned short Port);
-
- ////////////////////////////////////////////////////////////
- /// Wait for a connection (must be listening to a port).
- /// This function will block if the socket is blocking
- ///
- /// \param Connected : Socket containing the connection with the connected client
- /// \param Address : Pointer to an address to fill with client infos (NULL by default)
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Accept(SocketTCP& Connected, IPAddress* Address = NULL);
-
- ////////////////////////////////////////////////////////////
- /// Send an array of bytes to the host (must be connected first)
- ///
- /// \param Data : Pointer to the bytes to send
- /// \param Size : Number of bytes to send
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Send(const char* Data, std::size_t Size);
-
- ////////////////////////////////////////////////////////////
- /// Receive an array of bytes from the host (must be connected first).
- /// This function will block if the socket is blocking
- ///
- /// \param Data : Pointer to a byte array to fill (make sure it is big enough)
- /// \param MaxSize : Maximum number of bytes to read
- /// \param SizeReceived : Number of bytes received
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived);
-
- ////////////////////////////////////////////////////////////
- /// Send a packet of data to the host (must be connected first)
- ///
- /// \param PacketToSend : Packet to send
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Send(Packet& PacketToSend);
-
- ////////////////////////////////////////////////////////////
- /// Receive a packet from the host (must be connected first).
- /// This function will block if the socket is blocking
- ///
- /// \param PacketToReceive : Packet to fill with received data
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Receive(Packet& PacketToReceive);
-
- ////////////////////////////////////////////////////////////
- /// Close the socket
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- bool Close();
-
- ////////////////////////////////////////////////////////////
- /// Check if the socket is in a valid state ; this function
- /// can be called any time to check if the socket is OK
- ///
- /// \return True if the socket is valid
- ///
- ////////////////////////////////////////////////////////////
- bool IsValid() const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator ==
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this == Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator ==(const SocketTCP& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator !=
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this != Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator !=(const SocketTCP& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator <.
- /// Provided for compatibility with standard containers, as
- /// comparing two sockets doesn't make much sense...
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this < Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator <(const SocketTCP& Other) const;
-
-private :
-
- friend class Selector<SocketTCP>;
-
- ////////////////////////////////////////////////////////////
- /// Construct the socket from a socket descriptor
- /// (for internal use only)
- ///
- /// \param Descriptor : Socket descriptor
- ///
- ////////////////////////////////////////////////////////////
- SocketTCP(SocketHelper::SocketType Descriptor);
-
- ////////////////////////////////////////////////////////////
- /// Create the socket
- ///
- /// \param Descriptor : System socket descriptor to use (0 by default -- create a new socket)
- ///
- ////////////////////////////////////////////////////////////
- void Create(SocketHelper::SocketType Descriptor = 0);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- SocketHelper::SocketType mySocket; ///< Socket descriptor
- Uint32 myPendingHeader; ///< Data of the current pending packet header, if any
- Uint32 myPendingHeaderSize; ///< Size of the current pending packet header, if any
- std::vector<char> myPendingPacket; ///< Data of the current pending packet, if any
- Int32 myPendingPacketSize; ///< Size of the current pending packet, if any
- bool myIsBlocking; ///< Is the socket blocking or non-blocking ?
-};
-
-} // namespace sf
-
-
-#endif // SFML_SOCKETTCP_HPP
diff --git a/include/SFML/Network/SocketUDP.hpp b/include/SFML/Network/SocketUDP.hpp
deleted file mode 100755
index 7cb6b19..0000000
--- a/include/SFML/Network/SocketUDP.hpp
+++ /dev/null
@@ -1,228 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SOCKETUDP_HPP
-#define SFML_SOCKETUDP_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketHelper.hpp>
-#include <vector>
-
-
-namespace sf
-{
-class Packet;
-class IPAddress;
-template <typename> class Selector;
-
-////////////////////////////////////////////////////////////
-/// SocketUDP wraps a socket using UDP protocol to
-/// send data fastly (but with less safety)
-////////////////////////////////////////////////////////////
-class SFML_API SocketUDP
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- SocketUDP();
-
- ////////////////////////////////////////////////////////////
- /// Change the blocking state of the socket.
- /// The default behaviour of a socket is blocking
- ///
- /// \param Blocking : Pass true to set the socket as blocking, or false for non-blocking
- ///
- ////////////////////////////////////////////////////////////
- void SetBlocking(bool Blocking);
-
- ////////////////////////////////////////////////////////////
- /// Bind the socket to a specific port
- ///
- /// \param Port : Port to bind the socket to
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- bool Bind(unsigned short Port);
-
- ////////////////////////////////////////////////////////////
- /// Unbind the socket from its previous port, if any
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- bool Unbind();
-
- ////////////////////////////////////////////////////////////
- /// Send an array of bytes
- ///
- /// \param Data : Pointer to the bytes to send
- /// \param Size : Number of bytes to send
- /// \param Address : Address of the computer to send the packet to
- /// \param Port : Port to send the data to
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Send(const char* Data, std::size_t Size, const IPAddress& Address, unsigned short Port);
-
- ////////////////////////////////////////////////////////////
- /// Receive an array of bytes.
- /// This function will block if the socket is blocking
- ///
- /// \param Data : Pointer to a byte array to fill (make sure it is big enough)
- /// \param MaxSize : Maximum number of bytes to read
- /// \param SizeReceived : Number of bytes received
- /// \param Address : Address of the computer which sent the data
- /// \param Port : Port on which the remote computer sent the data
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived, IPAddress& Address, unsigned short& Port);
-
- ////////////////////////////////////////////////////////////
- /// Send a packet of data
- ///
- /// \param PacketToSend : Packet to send
- /// \param Address : Address of the computer to send the packet to
- /// \param Port : Port to send the data to
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Send(Packet& PacketToSend, const IPAddress& Address, unsigned short Port);
-
- ////////////////////////////////////////////////////////////
- /// Receive a packet.
- /// This function will block if the socket is blocking
- ///
- /// \param PacketToReceive : Packet to fill with received data
- /// \param Address : Address of the computer which sent the packet
- /// \param Port : Port on which the remote computer sent the data
- ///
- /// \return Status code
- ///
- ////////////////////////////////////////////////////////////
- Socket::Status Receive(Packet& PacketToReceive, IPAddress& Address, unsigned short& Port);
-
- ////////////////////////////////////////////////////////////
- /// Close the socket
- ///
- /// \return True if operation has been successful
- ///
- ////////////////////////////////////////////////////////////
- bool Close();
-
- ////////////////////////////////////////////////////////////
- /// Check if the socket is in a valid state ; this function
- /// can be called any time to check if the socket is OK
- ///
- /// \return True if the socket is valid
- ///
- ////////////////////////////////////////////////////////////
- bool IsValid() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the port the socket is currently bound to
- ///
- /// \return Current port (0 means the socket is not bound)
- ///
- ////////////////////////////////////////////////////////////
- unsigned short GetPort() const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator ==
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this == Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator ==(const SocketUDP& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator !=
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this != Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator !=(const SocketUDP& Other) const;
-
- ////////////////////////////////////////////////////////////
- /// Comparison operator <.
- /// Provided for compatibility with standard containers, as
- /// comparing two sockets doesn't make much sense...
- ///
- /// \param Other : Socket to compare
- ///
- /// \return True if *this < Other
- ///
- ////////////////////////////////////////////////////////////
- bool operator <(const SocketUDP& Other) const;
-
-private :
-
- friend class Selector<SocketUDP>;
-
- ////////////////////////////////////////////////////////////
- /// Construct the socket from a socket descriptor
- /// (for internal use only)
- ///
- /// \param Descriptor : Socket descriptor
- ///
- ////////////////////////////////////////////////////////////
- SocketUDP(SocketHelper::SocketType Descriptor);
-
- ////////////////////////////////////////////////////////////
- /// Create the socket
- ///
- /// \param Descriptor : System socket descriptor to use (0 by default -- create a new socket)
- ///
- ////////////////////////////////////////////////////////////
- void Create(SocketHelper::SocketType Descriptor = 0);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- SocketHelper::SocketType mySocket; ///< Socket identifier
- unsigned short myPort; ///< Port to which the socket is bound
- Uint32 myPendingHeader; ///< Data of the current pending packet header, if any
- Uint32 myPendingHeaderSize; ///< Size of the current pending packet header, if any
- std::vector<char> myPendingPacket; ///< Data of the current pending packet, if any
- Int32 myPendingPacketSize; ///< Size of the current pending packet, if any
- bool myIsBlocking; ///< Is the socket blocking or non-blocking ?
-};
-
-} // namespace sf
-
-
-#endif // SFML_SOCKETUDP_HPP
diff --git a/include/SFML/Network/TcpListener.hpp b/include/SFML/Network/TcpListener.hpp
new file mode 100644
index 0000000..5a5bdb3
--- /dev/null
+++ b/include/SFML/Network/TcpListener.hpp
@@ -0,0 +1,162 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TCPLISTENER_HPP
+#define SFML_TCPLISTENER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/Socket.hpp>
+
+
+namespace sf
+{
+class TcpSocket;
+
+////////////////////////////////////////////////////////////
+/// \brief Socket that listens to new TCP connections
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API TcpListener : public Socket
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ TcpListener();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the port to which the socket is bound locally
+ ///
+ /// If the socket is not listening to a port, this function
+ /// returns 0.
+ ///
+ /// \return Port to which the socket is bound
+ ///
+ /// \see listen
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned short getLocalPort() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Start listening for connections
+ ///
+ /// This functions makes the socket listen to the specified
+ /// port, waiting for new connections.
+ /// If the socket was previously listening to another port,
+ /// it will be stopped first and bound to the new port.
+ ///
+ /// \param port Port to listen for new connections
+ ///
+ /// \return Status code
+ ///
+ /// \see accept, close
+ ///
+ ////////////////////////////////////////////////////////////
+ Status listen(unsigned short port);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Stop listening and close the socket
+ ///
+ /// This function gracefully stops the listener. If the
+ /// socket is not listening, this function has no effect.
+ ///
+ /// \see listen
+ ///
+ ////////////////////////////////////////////////////////////
+ void close();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Accept a new connection
+ ///
+ /// If the socket is in blocking mode, this function will
+ /// not return until a connection is actually received.
+ ///
+ /// \param socket Socket that will hold the new connection
+ ///
+ /// \return Status code
+ ///
+ /// \see listen
+ ///
+ ////////////////////////////////////////////////////////////
+ Status accept(TcpSocket& socket);
+};
+
+
+} // namespace sf
+
+
+#endif // SFML_TCPLISTENER_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::TcpListener
+/// \ingroup network
+///
+/// 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:
+/// \code
+/// // 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);
+/// }
+/// }
+/// \endcode
+///
+/// \see sf::TcpSocket, sf::Socket
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/TcpSocket.hpp b/include/SFML/Network/TcpSocket.hpp
new file mode 100644
index 0000000..2db2b72
--- /dev/null
+++ b/include/SFML/Network/TcpSocket.hpp
@@ -0,0 +1,292 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TCPSOCKET_HPP
+#define SFML_TCPSOCKET_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/Socket.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+class TcpListener;
+class IpAddress;
+class Packet;
+
+////////////////////////////////////////////////////////////
+/// \brief Specialized socket using the TCP protocol
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API TcpSocket : public Socket
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ TcpSocket();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the port to which the socket is bound locally
+ ///
+ /// If the socket is not connected, this function returns 0.
+ ///
+ /// \return Port to which the socket is bound
+ ///
+ /// \see connect, getRemotePort
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned short getLocalPort() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the address of the connected peer
+ ///
+ /// It the socket is not connected, this function returns
+ /// sf::IpAddress::None.
+ ///
+ /// \return Address of the remote peer
+ ///
+ /// \see getRemotePort
+ ///
+ ////////////////////////////////////////////////////////////
+ IpAddress getRemoteAddress() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the port of the connected peer to which
+ /// the socket is connected
+ ///
+ /// If the socket is not connected, this function returns 0.
+ ///
+ /// \return Remote port to which the socket is connected
+ ///
+ /// \see getRemoteAddress
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned short getRemotePort() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 was previously connected, it is first disconnected.
+ ///
+ /// \param remoteAddress Address of the remote peer
+ /// \param remotePort Port of the remote peer
+ /// \param timeout Optional maximum time to wait
+ ///
+ /// \return Status code
+ ///
+ /// \see disconnect
+ ///
+ ////////////////////////////////////////////////////////////
+ Status connect(const IpAddress& remoteAddress, unsigned short remotePort, Time timeout = Time::Zero);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 connect
+ ///
+ ////////////////////////////////////////////////////////////
+ void disconnect();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Send raw data to the remote peer
+ ///
+ /// This function will fail if the socket is not connected.
+ ///
+ /// \param data Pointer to the sequence of bytes to send
+ /// \param size Number of bytes to send
+ ///
+ /// \return Status code
+ ///
+ /// \see receive
+ ///
+ ////////////////////////////////////////////////////////////
+ Status send(const void* data, std::size_t size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param data Pointer to the array to fill with the received bytes
+ /// \param size Maximum number of bytes that can be received
+ /// \param received This variable is filled with the actual number of bytes received
+ ///
+ /// \return Status code
+ ///
+ /// \see send
+ ///
+ ////////////////////////////////////////////////////////////
+ Status receive(void* data, std::size_t size, std::size_t& received);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Send a formatted packet of data to the remote peer
+ ///
+ /// This function will fail if the socket is not connected.
+ ///
+ /// \param packet Packet to send
+ ///
+ /// \return Status code
+ ///
+ /// \see receive
+ ///
+ ////////////////////////////////////////////////////////////
+ Status send(Packet& packet);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param packet Packet to fill with the received data
+ ///
+ /// \return Status code
+ ///
+ /// \see send
+ ///
+ ////////////////////////////////////////////////////////////
+ Status receive(Packet& packet);
+
+private:
+
+ friend class TcpListener;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Structure holding the data of a pending packet
+ ///
+ ////////////////////////////////////////////////////////////
+ struct PendingPacket
+ {
+ PendingPacket();
+
+ Uint32 Size; ///< Data of packet size
+ std::size_t SizeReceived; ///< Number of size bytes received so far
+ std::vector<char> Data; ///< Data of the packet
+ };
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ PendingPacket m_pendingPacket; ///< Temporary data of the packet currently being received
+};
+
+} // namespace sf
+
+
+#endif // SFML_TCPSOCKET_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::TcpSocket
+/// \ingroup network
+///
+/// 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 explicitely close the connection while
+/// the socket instance is still alive, you can call disconnect.
+///
+/// Usage example:
+/// \code
+/// // ----- The client -----
+///
+/// // Create a socket and connect it to 192.168.1.50 on port 55001
+/// sf::TcpSocket socket;
+/// 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
+/// sf::TcpSocket socket;
+/// 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);
+/// \endcode
+///
+/// \see sf::Socket, sf::UdpSocket, sf::Packet
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Network/UdpSocket.hpp b/include/SFML/Network/UdpSocket.hpp
new file mode 100644
index 0000000..e5fa3b0
--- /dev/null
+++ b/include/SFML/Network/UdpSocket.hpp
@@ -0,0 +1,283 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_UDPSOCKET_HPP
+#define SFML_UDPSOCKET_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Export.hpp>
+#include <SFML/Network/Socket.hpp>
+#include <vector>
+
+
+namespace sf
+{
+class IpAddress;
+class Packet;
+
+////////////////////////////////////////////////////////////
+/// \brief Specialized socket using the UDP protocol
+///
+////////////////////////////////////////////////////////////
+class SFML_NETWORK_API UdpSocket : public Socket
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ // Constants
+ ////////////////////////////////////////////////////////////
+ enum
+ {
+ MaxDatagramSize = 65507 ///< The maximum number of bytes that can be sent in a single UDP datagram
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ UdpSocket();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the port to which the socket is bound locally
+ ///
+ /// If the socket is not bound to a port, this function
+ /// returns 0.
+ ///
+ /// \return Port to which the socket is bound
+ ///
+ /// \see bind
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned short getLocalPort() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param port Port to bind the socket to
+ ///
+ /// \return Status code
+ ///
+ /// \see unbind, getLocalPort
+ ///
+ ////////////////////////////////////////////////////////////
+ Status bind(unsigned short port);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Unbind the socket from the local port to which it is bound
+ ///
+ /// The port that the socket was previously using is immediately
+ /// available after this function is called. If the
+ /// socket is not bound to a port, this function has no effect.
+ ///
+ /// \see bind
+ ///
+ ////////////////////////////////////////////////////////////
+ void unbind();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Send raw data to a remote peer
+ ///
+ /// Make sure that \a size is not greater than
+ /// UdpSocket::MaxDatagramSize, otherwise this function will
+ /// fail and no data will be sent.
+ ///
+ /// \param data Pointer to the sequence of bytes to send
+ /// \param size Number of bytes to send
+ /// \param remoteAddress Address of the receiver
+ /// \param remotePort Port of the receiver to send the data to
+ ///
+ /// \return Status code
+ ///
+ /// \see receive
+ ///
+ ////////////////////////////////////////////////////////////
+ Status send(const void* data, std::size_t size, const IpAddress& remoteAddress, unsigned short remotePort);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param data Pointer to the array to fill with the received bytes
+ /// \param size Maximum number of bytes that can be received
+ /// \param received This variable is filled with the actual number of bytes received
+ /// \param remoteAddress Address of the peer that sent the data
+ /// \param remotePort Port of the peer that sent the data
+ ///
+ /// \return Status code
+ ///
+ /// \see send
+ ///
+ ////////////////////////////////////////////////////////////
+ Status receive(void* data, std::size_t size, std::size_t& received, IpAddress& remoteAddress, unsigned short& remotePort);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param packet Packet to send
+ /// \param remoteAddress Address of the receiver
+ /// \param remotePort Port of the receiver to send the data to
+ ///
+ /// \return Status code
+ ///
+ /// \see receive
+ ///
+ ////////////////////////////////////////////////////////////
+ Status send(Packet& packet, const IpAddress& remoteAddress, unsigned short remotePort);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Receive a formatted packet of data from a remote peer
+ ///
+ /// In blocking mode, this function will wait until the whole packet
+ /// has been received.
+ ///
+ /// \param packet Packet to fill with the received data
+ /// \param remoteAddress Address of the peer that sent the data
+ /// \param remotePort Port of the peer that sent the data
+ ///
+ /// \return Status code
+ ///
+ /// \see send
+ ///
+ ////////////////////////////////////////////////////////////
+ Status receive(Packet& packet, IpAddress& remoteAddress, unsigned short& remotePort);
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ std::vector<char> m_buffer; ///< Temporary buffer holding the received data in Receive(Packet)
+};
+
+} // namespace sf
+
+
+#endif // SFML_UDPSOCKET_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::UdpSocket
+/// \ingroup network
+///
+/// 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 explicitely with the Unbind
+/// function if necessary, to stop receiving messages or
+/// make the port available for other sockets.
+///
+/// Usage example:
+/// \code
+/// // ----- The client -----
+///
+/// // Create a socket and bind it to the port 55001
+/// sf::UdpSocket socket;
+/// 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;
+/// sf::IpAddress sender;
+/// 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
+/// sf::UdpSocket socket;
+/// socket.bind(55002);
+///
+/// // Receive a message from anyone
+/// char buffer[1024];
+/// std::size_t received = 0;
+/// sf::IpAddress sender;
+/// 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);
+/// \endcode
+///
+/// \see sf::Socket, sf::TcpSocket, sf::Packet
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/OpenGL.hpp b/include/SFML/OpenGL.hpp
index fcd4868..3d04603 100755..100644
--- a/include/SFML/Window/OpenGL.hpp
+++ b/include/SFML/OpenGL.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -38,7 +38,11 @@
////////////////////////////////////////////////////////////
#if defined(SFML_SYSTEM_WINDOWS)
- #include <windows.h>
+ // The Visual C++ version of gl.h uses WINGDIAPI and APIENTRY but doesn't define them
+ #ifdef _MSC_VER
+ #include <windows.h>
+ #endif
+
#include <GL/gl.h>
#include <GL/glu.h>
@@ -56,4 +60,3 @@
#endif // SFML_OPENGL_HPP
-
diff --git a/include/SFML/System.hpp b/include/SFML/System.hpp
index f2b6844..9d2166b 100755..100644
--- a/include/SFML/System.hpp
+++ b/include/SFML/System.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -31,13 +31,26 @@
#include <SFML/Config.hpp>
#include <SFML/System/Clock.hpp>
+#include <SFML/System/Err.hpp>
+#include <SFML/System/InputStream.hpp>
#include <SFML/System/Lock.hpp>
#include <SFML/System/Mutex.hpp>
-#include <SFML/System/Randomizer.hpp>
#include <SFML/System/Sleep.hpp>
+#include <SFML/System/String.hpp>
#include <SFML/System/Thread.hpp>
-#include <SFML/System/Unicode.hpp>
+#include <SFML/System/ThreadLocal.hpp>
+#include <SFML/System/ThreadLocalPtr.hpp>
+#include <SFML/System/Utf.hpp>
#include <SFML/System/Vector2.hpp>
#include <SFML/System/Vector3.hpp>
#endif // SFML_SYSTEM_HPP
+
+////////////////////////////////////////////////////////////
+/// \defgroup system System module
+///
+/// Base module of SFML, defining various utilities. It provides
+/// vector classes, unicode strings and conversion functions,
+/// threads and mutexes, timing classes.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Clock.hpp b/include/SFML/System/Clock.hpp
index 76c0055..4ae0f2d 100755..100644
--- a/include/SFML/System/Clock.hpp
+++ b/include/SFML/System/Clock.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,47 +28,90 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/System/Export.hpp>
+#include <SFML/System/Time.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Clock is an utility class for manipulating time
+/// \brief Utility class that measures the elapsed time
+///
////////////////////////////////////////////////////////////
-class SFML_API Clock
+class SFML_SYSTEM_API Clock
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// The clock starts automatically after being constructed.
///
////////////////////////////////////////////////////////////
Clock();
////////////////////////////////////////////////////////////
- /// Get the time elapsed since last reset
+ /// \brief 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).
///
- /// \return Time elapsed, in seconds
+ /// \return Time elapsed
///
////////////////////////////////////////////////////////////
- float GetElapsedTime() const;
+ Time getElapsedTime() const;
////////////////////////////////////////////////////////////
- /// Restart the timer
+ /// \brief Restart the clock
+ ///
+ /// This function puts the time counter back to zero.
+ /// It also returns the time elapsed since the clock was started.
+ ///
+ /// \return Time elapsed
///
////////////////////////////////////////////////////////////
- void Reset();
+ Time restart();
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- double myStartTime; ///< Time of last reset
+ Time m_startTime; ///< Time of last reset, in microseconds
};
} // namespace sf
#endif // SFML_CLOCK_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Clock
+/// \ingroup system
+///
+/// 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:
+/// \code
+/// sf::Clock clock;
+/// ...
+/// Time time1 = clock.getElapsedTime();
+/// ...
+/// Time time2 = clock.restart();
+/// \endcode
+///
+/// The sf::Time value returned by the clock can then be
+/// converted to a number of seconds, milliseconds or even
+/// microseconds.
+///
+/// \see sf::Time
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Err.hpp b/include/SFML/System/Err.hpp
new file mode 100644
index 0000000..7903020
--- /dev/null
+++ b/include/SFML/System/Err.hpp
@@ -0,0 +1,78 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_ERR_HPP
+#define SFML_ERR_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Export.hpp>
+#include <ostream>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Standard stream used by SFML to output warnings and errors
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API std::ostream& err();
+
+} // namespace sf
+
+
+#endif // SFML_ERR_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \fn sf::err
+/// \ingroup system
+///
+/// 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, independantly
+/// of std::cerr, by using the rdbuf() function provided by the
+/// std::ostream class.
+///
+/// Example:
+/// \code
+/// // 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);
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Export.hpp b/include/SFML/System/Export.hpp
new file mode 100644
index 0000000..ec08fbe
--- /dev/null
+++ b/include/SFML/System/Export.hpp
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SYSTEM_EXPORT_HPP
+#define SFML_SYSTEM_EXPORT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+////////////////////////////////////////////////////////////
+// Define portable import / export macros
+////////////////////////////////////////////////////////////
+#if defined(SFML_SYSTEM_EXPORTS)
+
+ #define SFML_SYSTEM_API SFML_API_EXPORT
+
+#else
+
+ #define SFML_SYSTEM_API SFML_API_IMPORT
+
+#endif
+
+
+#endif // SFML_SYSTEM_EXPORT_HPP
diff --git a/include/SFML/System/InputStream.hpp b/include/SFML/System/InputStream.hpp
new file mode 100644
index 0000000..b79436a
--- /dev/null
+++ b/include/SFML/System/InputStream.hpp
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_INPUTSTREAM_HPP
+#define SFML_INPUTSTREAM_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Abstract class for custom file input streams
+///
+////////////////////////////////////////////////////////////
+class InputStream
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Virtual destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~InputStream() {}
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Read data from the stream
+ ///
+ /// After reading, the stream's reading position must be
+ /// advanced by the amount of bytes read.
+ ///
+ /// \param data Buffer where to copy the read data
+ /// \param size Desired number of bytes to read
+ ///
+ /// \return The number of bytes actually read, or -1 on error
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Int64 read(void* data, Int64 size) = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the current reading position
+ ///
+ /// \param position The position to seek to, from the beginning
+ ///
+ /// \return The position actually sought to, or -1 on error
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Int64 seek(Int64 position) = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current reading position in the stream
+ ///
+ /// \return The current position, or -1 on error.
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Int64 tell() = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the size of the stream
+ ///
+ /// \return The total number of bytes available in the stream, or -1 on error
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Int64 getSize() = 0;
+};
+
+} // namespace sf
+
+
+#endif // SFML_INPUTSTREAM_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::InputStream
+/// \ingroup system
+///
+/// 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:
+/// \code
+/// // 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.
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Lock.hpp b/include/SFML/System/Lock.hpp
index 6f84f73..09c2a8e 100755..100644
--- a/include/SFML/System/Lock.hpp
+++ b/include/SFML/System/Lock.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,6 +28,7 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/System/Export.hpp>
#include <SFML/System/NonCopyable.hpp>
@@ -36,23 +37,27 @@ namespace sf
class Mutex;
////////////////////////////////////////////////////////////
-/// Lock is an exception-safe automatic wrapper for
-/// locking and unlocking mutexes
+/// \brief Automatic wrapper for locking and unlocking mutexes
+///
////////////////////////////////////////////////////////////
-class SFML_API Lock : NonCopyable
+class SFML_SYSTEM_API Lock : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Construct the lock with a target mutex (lock it)
+ /// \brief Construct the lock with a target mutex
///
- /// @param Mutex : Mutex to lock
+ /// The mutex passed to sf::Lock is automatically locked.
+ ///
+ /// \param mutex Mutex to lock
///
////////////////////////////////////////////////////////////
- Lock(Mutex& Mutex);
+ explicit Lock(Mutex& mutex);
////////////////////////////////////////////////////////////
- /// Destructor (unlocks the mutex)
+ /// \brief Destructor
+ ///
+ /// The destructor of sf::Lock automatically unlocks its mutex.
///
////////////////////////////////////////////////////////////
~Lock();
@@ -62,10 +67,73 @@ private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- Mutex& myMutex; ///< Mutex to lock / unlock
+ Mutex& m_mutex; ///< Mutex to lock / unlock
};
} // namespace sf
#endif // SFML_LOCK_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Lock
+/// \ingroup system
+///
+/// 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:
+/// \code
+/// 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
+/// \endcode
+///
+/// Because the mutex is not explicitely 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.
+///
+/// \code
+/// sf::Mutex mutex;
+///
+/// void function()
+/// {
+/// {
+/// sf::Lock lock(mutex);
+/// codeThatRequiresProtection();
+///
+/// } // mutex is unlocked here
+///
+/// codeThatDoesntCareAboutTheMutex();
+/// }
+/// \endcode
+///
+/// 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 sf::Mutex
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Mutex.hpp b/include/SFML/System/Mutex.hpp
index 536c537..ac95236 100755..100644
--- a/include/SFML/System/Mutex.hpp
+++ b/include/SFML/System/Mutex.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,18 +28,121 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/System/Export.hpp>
+#include <SFML/System/NonCopyable.hpp>
-#ifdef SFML_SYSTEM_WINDOWS
+namespace sf
+{
+namespace priv
+{
+ class MutexImpl;
+}
- #include <SFML/System/Win32/Mutex.hpp>
+////////////////////////////////////////////////////////////
+/// \brief Blocks concurrent access to shared resources
+/// from multiple threads
+///
+////////////////////////////////////////////////////////////
+class SFML_SYSTEM_API Mutex : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ Mutex();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~Mutex();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Lock the mutex
+ ///
+ /// If the mutex is already locked in another thread,
+ /// this call will block the execution until the mutex
+ /// is released.
+ ///
+ /// \see unlock
+ ///
+ ////////////////////////////////////////////////////////////
+ void lock();
-#else
+ ////////////////////////////////////////////////////////////
+ /// \brief Unlock the mutex
+ ///
+ /// \see lock
+ ///
+ ////////////////////////////////////////////////////////////
+ void unlock();
- #include <SFML/System/Unix/Mutex.hpp>
+private :
-#endif
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ priv::MutexImpl* m_mutexImpl; ///< OS-specific implementation
+};
+
+} // namespace sf
#endif // SFML_MUTEX_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Mutex
+/// \ingroup system
+///
+/// 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:
+/// \code
+/// 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
+/// }
+/// \endcode
+///
+/// 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 sf::Lock
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/NonCopyable.hpp b/include/SFML/System/NonCopyable.hpp
index 3ac6719..8c9cdb6 100755..100644
--- a/include/SFML/System/NonCopyable.hpp
+++ b/include/SFML/System/NonCopyable.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,21 +28,26 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/System/Export.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Utility base class to easily declare non-copyable classes.
-/// Just inherit from NonCopyable to get a non-copyable class
+/// \brief Utility class that makes any derived
+/// class non-copyable
+///
////////////////////////////////////////////////////////////
-struct SFML_API NonCopyable
+class SFML_SYSTEM_API NonCopyable
{
protected :
////////////////////////////////////////////////////////////
- /// The default constructor won't be generated, so provide it
+ /// \brief 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 explicitely.
///
////////////////////////////////////////////////////////////
NonCopyable() {}
@@ -50,15 +55,25 @@ protected :
private :
////////////////////////////////////////////////////////////
- /// Copy constructor : declare it private and don't implement
- /// it to prevent from calling it
+ /// \brief Disabled copy constructor
+ ///
+ /// By making the copy constructor private, the compiler will
+ /// trigger an error if anyone outside tries to use it.
+ /// To prevent NonCopyable or friend classes from using it,
+ /// we also give no definition, so that the linker will
+ /// produce an error if the first protection was inefficient.
///
////////////////////////////////////////////////////////////
NonCopyable(const NonCopyable&);
////////////////////////////////////////////////////////////
- /// Assignment operator : declare it private and don't implement
- /// it to prevent from calling it
+ /// \brief Disabled assignment operator
+ ///
+ /// By making the assignment operator private, the compiler will
+ /// trigger an error if anyone outside tries to use it.
+ /// To prevent NonCopyable or friend classes from using it,
+ /// we also give no definition, so that the linker will
+ /// produce an error if the first protection was inefficient.
///
////////////////////////////////////////////////////////////
NonCopyable& operator =(const NonCopyable&);
@@ -68,3 +83,37 @@ private :
#endif // SFML_NONCOPYABLE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::NonCopyable
+/// \ingroup system
+///
+/// This class makes its instances non-copyable, by explicitely
+/// 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:
+/// \code
+/// class MyNonCopyableClass : sf::NonCopyable
+/// {
+/// ...
+/// };
+/// \endcode
+///
+/// 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.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Randomizer.hpp b/include/SFML/System/Randomizer.hpp
deleted file mode 100755
index 8ed27cd..0000000
--- a/include/SFML/System/Randomizer.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_RANDOMIZER_HPP
-#define SFML_RANDOMIZER_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Randomizer is an utility class for generating pseudo-random
-/// numbers
-////////////////////////////////////////////////////////////
-class SFML_API Randomizer
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Set the seed for the generator. Using a known seed
- /// allows you to reproduce the same sequence of random number
- ///
- /// \param Seed : Number to use as the seed
- ///
- ////////////////////////////////////////////////////////////
- static void SetSeed(unsigned int Seed);
-
- ////////////////////////////////////////////////////////////
- /// Get the seed used to generate random numbers the generator.
- ///
- /// \return Current seed
- ///
- ////////////////////////////////////////////////////////////
- static unsigned int GetSeed();
-
- ////////////////////////////////////////////////////////////
- /// Get a random float number in a given range
- ///
- /// \return Start : Start of the range
- /// \return End : End of the range
- ///
- /// \return Random number in [Begin, End]
- ///
- ////////////////////////////////////////////////////////////
- static float Random(float Begin, float End);
-
- ////////////////////////////////////////////////////////////
- /// Get a random integer number in a given range
- ///
- /// \return Start : Start of the range
- /// \return End : End of the range
- ///
- /// \return Random number in [Begin, End]
- ///
- ////////////////////////////////////////////////////////////
- static int Random(int Begin, int End);
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Static member variables
- ////////////////////////////////////////////////////////////
- static unsigned int ourSeed;
-};
-
-} // namespace sf
-
-
-#endif // SFML_RANDOMIZER_HPP
diff --git a/include/SFML/System/Resource.hpp b/include/SFML/System/Resource.hpp
deleted file mode 100755
index 8f5088d..0000000
--- a/include/SFML/System/Resource.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_RESOURCE_HPP
-#define SFML_RESOURCE_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <set>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-// These two classes are defined in the same header because
-// they depend on each other. And as they're template classes,
-// they must be entirely defined in header files, which
-// prevents from proper separate compiling
-////////////////////////////////////////////////////////////
-
-template <typename> class ResourcePtr;
-
-////////////////////////////////////////////////////////////
-/// Base class for every resource that needs to notify
-/// dependent classes about its destruction
-////////////////////////////////////////////////////////////
-template <typename T>
-class Resource
-{
-protected :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- Resource();
-
- ////////////////////////////////////////////////////////////
- /// Copy constructor
- ///
- /// \param Copy : Resource to copy
- ///
- ////////////////////////////////////////////////////////////
- Resource(const Resource<T>& Copy);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~Resource();
-
- ////////////////////////////////////////////////////////////
- /// Assignment operator
- ///
- /// \param Other : Resource to copy
- ///
- /// \return Reference to this
- ///
- ////////////////////////////////////////////////////////////
- Resource<T>& operator =(const Resource<T>& Other);
-
-private :
-
- friend class ResourcePtr<T>;
-
- ////////////////////////////////////////////////////////////
- /// Connect a ResourcePtr to this resource
- ///
- /// \param Observer : Observer to add
- ///
- ////////////////////////////////////////////////////////////
- void Connect(ResourcePtr<T>& Observer) const;
-
- ////////////////////////////////////////////////////////////
- /// Disconnect a ResourcePtr from this resource
- ///
- /// \param Observer : Observer to remove
- ///
- ////////////////////////////////////////////////////////////
- void Disconnect(ResourcePtr<T>& Observer) const;
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- mutable std::set<ResourcePtr<T>*> myObservers;
-};
-
-
-////////////////////////////////////////////////////////////
-/// Safe pointer to a T resource (inheriting from sf::Resource<T>),
-/// its pointer is automatically reseted when the resource is destroyed
-////////////////////////////////////////////////////////////
-template <typename T>
-class ResourcePtr
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- ResourcePtr();
-
- ////////////////////////////////////////////////////////////
- /// Construct from a raw resource
- ///
- /// \param Resource : Internal resource
- ///
- ////////////////////////////////////////////////////////////
- ResourcePtr(const T* Resource);
-
- ////////////////////////////////////////////////////////////
- /// Copy constructor
- ///
- /// \param Copy : Instance to copy
- ///
- ////////////////////////////////////////////////////////////
- ResourcePtr(const ResourcePtr<T>& Copy);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~ResourcePtr();
-
- ////////////////////////////////////////////////////////////
- /// Assignment operator from another ResourcePtr
- ///
- /// \param Other : Resource pointer to assign
- ///
- /// \return Reference to this
- ///
- ////////////////////////////////////////////////////////////
- ResourcePtr<T>& operator =(const ResourcePtr<T>& Other);
-
- ////////////////////////////////////////////////////////////
- /// Assignment operator from a raw resource
- ///
- /// \param Resource : Resource to assign
- ///
- /// \return Reference to this
- ///
- ////////////////////////////////////////////////////////////
- ResourcePtr<T>& operator =(const T* Resource);
-
- ////////////////////////////////////////////////////////////
- /// Cast operator to implicitely convert the resource pointer to
- /// its raw pointer type.
- /// This might be dangerous in the general case, but in this context
- /// it is safe enough to define this operator
- ///
- /// \return Pointer to the actual resource
- ///
- ////////////////////////////////////////////////////////////
- operator const T*() const;
-
- ////////////////////////////////////////////////////////////
- /// Operator * overload to return a reference to the actual resource
- ///
- /// \return Reference to the internal resource
- ///
- ////////////////////////////////////////////////////////////
- const T& operator *() const;
-
- ////////////////////////////////////////////////////////////
- /// Operator -> overload to return a pointer to the actual resource
- ///
- /// \return Pointer to the internal resource
- ///
- ////////////////////////////////////////////////////////////
- const T* operator ->() const;
-
- ////////////////////////////////////////////////////////////
- /// Function called when the observed resource is about to be
- /// destroyed
- ///
- ////////////////////////////////////////////////////////////
- void OnResourceDestroyed();
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- const T* myResource; /// Pointer to the actual resource
-};
-
-#include <SFML/System/Resource.inl>
-#include <SFML/System/ResourcePtr.inl>
-
-} // namespace sf
-
-
-#endif // SFML_RESOURCE_HPP
diff --git a/include/SFML/System/Resource.inl b/include/SFML/System/Resource.inl
deleted file mode 100755
index c4276a1..0000000
--- a/include/SFML/System/Resource.inl
+++ /dev/null
@@ -1,88 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-template <typename T>
-Resource<T>::Resource()
-{
- // Nothing to do
-}
-
-
-////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-template <typename T>
-Resource<T>::Resource(const Resource<T>&)
-{
- // Nothing to do, we don't want to copy observers
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-template <typename T>
-Resource<T>::~Resource()
-{
- // Notify all observers
- for (typename std::set<ResourcePtr<T>*>::iterator i = myObservers.begin(); i != myObservers.end(); ++i)
- {
- (*i)->OnResourceDestroyed();
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator
-////////////////////////////////////////////////////////////
-template <typename T>
-Resource<T>& Resource<T>::operator =(const Resource<T>&)
-{
- // Nothing to do, we don't want to copy observers
- return *this;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Connect a ResourcePtr to this resource
-////////////////////////////////////////////////////////////
-template <typename T>
-void Resource<T>::Connect(ResourcePtr<T>& Observer) const
-{
- myObservers.insert(&Observer);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Disconnect a ResourcePtr from this resource
-////////////////////////////////////////////////////////////
-template <typename T>
-void Resource<T>::Disconnect(ResourcePtr<T>& Observer) const
-{
- myObservers.erase(&Observer);
-}
diff --git a/include/SFML/System/ResourcePtr.inl b/include/SFML/System/ResourcePtr.inl
deleted file mode 100755
index dbfcd0d..0000000
--- a/include/SFML/System/ResourcePtr.inl
+++ /dev/null
@@ -1,149 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>::ResourcePtr() :
-myResource(NULL)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct from a raw resource
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>::ResourcePtr(const T* Resource) :
-myResource(Resource)
-{
- if (myResource)
- myResource->Connect(*this);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>::ResourcePtr(const ResourcePtr<T>& Copy) :
-myResource(Copy.myResource)
-{
- if (myResource)
- myResource->Connect(*this);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>::~ResourcePtr()
-{
- if (myResource)
- myResource->Disconnect(*this);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator from another ResourcePtr
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>& ResourcePtr<T>::operator =(const ResourcePtr<T>& Other)
-{
- if (myResource)
- myResource->Disconnect(*this);
-
- myResource = Other.myResource;
-
- if (myResource)
- myResource->Connect(*this);
-
- return *this;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator from a raw resource
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>& ResourcePtr<T>::operator =(const T* Resource)
-{
- if (myResource)
- myResource->Disconnect(*this);
-
- myResource = Resource;
-
- if (myResource)
- myResource->Connect(*this);
-
- return *this;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Cast operator to implicitely convert the resource pointer to
-/// its raw pointer type.
-/// This might be dangerous in the general case, but in this context
-/// it is safe enough to define this operator
-////////////////////////////////////////////////////////////
-template <typename T>
-ResourcePtr<T>::operator const T*() const
-{
- return myResource;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator * overload to return a reference to the actual resource
-////////////////////////////////////////////////////////////
-template <typename T>
-const T& ResourcePtr<T>::operator *() const
-{
- return *myResource;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator -> overload to return a pointer to the actual resource
-////////////////////////////////////////////////////////////
-template <typename T>
-const T* ResourcePtr<T>::operator ->() const
-{
- return myResource;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Function called when the observed resource is about to be
-/// destroyed
-////////////////////////////////////////////////////////////
-template <typename T>
-void ResourcePtr<T>::OnResourceDestroyed()
-{
- myResource = NULL;
-}
diff --git a/include/SFML/System/Sleep.hpp b/include/SFML/System/Sleep.hpp
index 2d0ebca..47567a9 100755..100644
--- a/include/SFML/System/Sleep.hpp
+++ b/include/SFML/System/Sleep.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,18 +28,23 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/System/Export.hpp>
+#include <SFML/System/Time.hpp>
namespace sf
{
- ////////////////////////////////////////////////////////////
- /// Make the current thread sleep for a given time
- ///
- /// \param Duration : Time to sleep, in seconds (must be >= 0)
- ///
- ////////////////////////////////////////////////////////////
- void SFML_API Sleep(float Duration);
+////////////////////////////////////////////////////////////
+/// \ingroup system
+/// \brief 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.
+///
+/// \param duration Time to sleep
+///
+////////////////////////////////////////////////////////////
+void SFML_SYSTEM_API sleep(Time duration);
} // namespace sf
diff --git a/include/SFML/System/String.hpp b/include/SFML/System/String.hpp
new file mode 100644
index 0000000..080a809
--- /dev/null
+++ b/include/SFML/System/String.hpp
@@ -0,0 +1,543 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_STRING_HPP
+#define SFML_STRING_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Export.hpp>
+#include <locale>
+#include <string>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Utility string class that automatically handles
+/// conversions between types and encodings
+///
+////////////////////////////////////////////////////////////
+class SFML_SYSTEM_API String
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ // Types
+ ////////////////////////////////////////////////////////////
+ typedef std::basic_string<Uint32>::iterator Iterator; ///< Iterator type
+ typedef std::basic_string<Uint32>::const_iterator ConstIterator; ///< Constant iterator type
+
+ ////////////////////////////////////////////////////////////
+ // Static member data
+ ////////////////////////////////////////////////////////////
+ static const std::size_t InvalidPos; ///< Represents an invalid position in the string
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor creates an empty string.
+ ///
+ ////////////////////////////////////////////////////////////
+ String();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from a single ANSI character and a locale
+ ///
+ /// The source character is converted to UTF-32 according
+ /// to the given locale.
+ ///
+ /// \param ansiChar ANSI character to convert
+ /// \param locale Locale to use for conversion
+ ///
+ ////////////////////////////////////////////////////////////
+ String(char ansiChar, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from single wide character
+ ///
+ /// \param wideChar Wide character to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ String(wchar_t wideChar);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from single UTF-32 character
+ ///
+ /// \param utf32Char UTF-32 character to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ String(Uint32 utf32Char);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param ansiString ANSI string to convert
+ /// \param locale Locale to use for conversion
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const char* ansiString, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from an ANSI string and a locale
+ ///
+ /// The source string is converted to UTF-32 according
+ /// to the given locale.
+ ///
+ /// \param ansiString ANSI string to convert
+ /// \param locale Locale to use for conversion
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const std::string& ansiString, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from null-terminated C-style wide string
+ ///
+ /// \param wideString Wide string to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const wchar_t* wideString);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from a wide string
+ ///
+ /// \param wideString Wide string to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const std::wstring& wideString);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from a null-terminated C-style UTF-32 string
+ ///
+ /// \param utf32String UTF-32 string to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const Uint32* utf32String);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from an UTF-32 string
+ ///
+ /// \param utf32String UTF-32 string to assign
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const std::basic_string<Uint32>& utf32String);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Copy constructor
+ ///
+ /// \param copy Instance to copy
+ ///
+ ////////////////////////////////////////////////////////////
+ String(const String& copy);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Implicit cast operator to std::string (ANSI string)
+ ///
+ /// The current global locale is used for conversion. If you
+ /// want to explicitely 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().
+ ///
+ /// \return Converted ANSI string
+ ///
+ /// \see toAnsiString, operator std::wstring
+ ///
+ ////////////////////////////////////////////////////////////
+ operator std::string() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Implicit cast 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().
+ ///
+ /// \return Converted wide string
+ ///
+ /// \see toWideString, operator std::string
+ ///
+ ////////////////////////////////////////////////////////////
+ operator std::wstring() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert the unicode string to an ANSI string
+ ///
+ /// The UTF-32 string is converted to an ANSI string in
+ /// the encoding defined by \a locale.
+ /// Characters that do not fit in the target encoding are
+ /// discarded from the returned string.
+ ///
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Converted ANSI string
+ ///
+ /// \see toWideString, operator std::string
+ ///
+ ////////////////////////////////////////////////////////////
+ std::string toAnsiString(const std::locale& locale = std::locale()) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert the unicode string to a wide string
+ ///
+ /// Characters that do not fit in the target encoding are
+ /// discarded from the returned string.
+ ///
+ /// \return Converted wide string
+ ///
+ /// \see toAnsiString, operator std::wstring
+ ///
+ ////////////////////////////////////////////////////////////
+ std::wstring toWideString() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of assignment operator
+ ///
+ /// \param right Instance to assign
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ String& operator =(const String& right);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of += operator to append an UTF-32 string
+ ///
+ /// \param right String to append
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ String& operator +=(const String& right);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of [] operator to access a character by its position
+ ///
+ /// This function provides read-only access to characters.
+ /// Note: this function doesn't throw if \a index is out of range.
+ ///
+ /// \param index Index of the character to get
+ ///
+ /// \return Character at position \a index
+ ///
+ ////////////////////////////////////////////////////////////
+ Uint32 operator [](std::size_t index) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of [] operator to access a character by its position
+ ///
+ /// This function provides read and write access to characters.
+ /// Note: this function doesn't throw if \a index is out of range.
+ ///
+ /// \param index Index of the character to get
+ ///
+ /// \return Reference to the character at position \a index
+ ///
+ ////////////////////////////////////////////////////////////
+ Uint32& operator [](std::size_t index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Clear the string
+ ///
+ /// This function removes all the characters from the string.
+ ///
+ /// \see isEmpty, erase
+ ///
+ ////////////////////////////////////////////////////////////
+ void clear();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the size of the string
+ ///
+ /// \return Number of characters in the string
+ ///
+ /// \see isEmpty
+ ///
+ ////////////////////////////////////////////////////////////
+ std::size_t getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check whether the string is empty or not
+ ///
+ /// \return True if the string is empty (i.e. contains no character)
+ ///
+ /// \see clear, getSize
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isEmpty() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Erase one or more characters from the string
+ ///
+ /// This function removes a sequence of \a count characters
+ /// starting from \a position.
+ ///
+ /// \param position Position of the first character to erase
+ /// \param count Number of characters to erase
+ ///
+ ////////////////////////////////////////////////////////////
+ void erase(std::size_t position, std::size_t count = 1);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Insert one or more characters into the string
+ ///
+ /// This function inserts the characters of \a str
+ /// into the string, starting from \a position.
+ ///
+ /// \param position Position of insertion
+ /// \param str Characters to insert
+ ///
+ ////////////////////////////////////////////////////////////
+ void insert(std::size_t position, const String& str);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Find a sequence of one or more characters in the string
+ ///
+ /// This function searches for the characters of \a str
+ /// into the string, starting from \a start.
+ ///
+ /// \param str Characters to find
+ /// \param start Where to begin searching
+ ///
+ /// \return Position of \a str in the string, or String::InvalidPos if not found
+ ///
+ ////////////////////////////////////////////////////////////
+ std::size_t find(const String& str, std::size_t start = 0) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Read-only pointer to the array of characters
+ ///
+ ////////////////////////////////////////////////////////////
+ const Uint32* getData() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return an iterator to the beginning of the string
+ ///
+ /// \return Read-write iterator to the beginning of the string characters
+ ///
+ /// \see end
+ ///
+ ////////////////////////////////////////////////////////////
+ Iterator begin();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return an iterator to the beginning of the string
+ ///
+ /// \return Read-only iterator to the beginning of the string characters
+ ///
+ /// \see end
+ ///
+ ////////////////////////////////////////////////////////////
+ ConstIterator begin() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return an iterator to the beginning 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.
+ ///
+ /// \return Read-write iterator to the end of the string characters
+ ///
+ /// \see begin
+ ///
+ ////////////////////////////////////////////////////////////
+ Iterator end();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return an iterator to the beginning 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.
+ ///
+ /// \return Read-only iterator to the end of the string characters
+ ///
+ /// \see begin
+ ///
+ ////////////////////////////////////////////////////////////
+ ConstIterator end() const;
+
+private :
+
+ friend SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
+ friend SFML_SYSTEM_API bool operator <(const String& left, const String& right);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ std::basic_string<Uint32> m_string; ///< Internal string of UTF-32 characters
+};
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of == operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if both strings are equal
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator ==(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of != operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if both strings are different
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator !=(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of < operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if \a left is alphabetically lesser than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator <(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of > operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if \a left is alphabetically greater than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator >(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of <= operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if \a left is alphabetically lesser or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator <=(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of >= operator to compare two UTF-32 strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return True if \a left is alphabetically greater or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator >=(const String& left, const String& right);
+
+////////////////////////////////////////////////////////////
+/// \relates String
+/// \brief Overload of binary + operator to concatenate two strings
+///
+/// \param left Left operand (a string)
+/// \param right Right operand (a string)
+///
+/// \return Concatenated string
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API String operator +(const String& left, const String& right);
+
+} // namespace sf
+
+
+#endif // SFML_STRING_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::String
+/// \ingroup system
+///
+/// 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.
+///
+/// \code
+/// sf::String s;
+///
+/// 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
+/// \endcode
+///
+/// Conversions involving ANSI strings use the default user locale. However
+/// it is possible to use a custom locale if necessary:
+/// \code
+/// std::locale locale;
+/// sf::String s;
+/// ...
+/// std::string s1 = s.toAnsiString(locale);
+/// s = sf::String("hello", locale);
+/// \endcode
+///
+/// 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.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Thread.hpp b/include/SFML/System/Thread.hpp
index 1cfe1e6..8313646 100755..100644
--- a/include/SFML/System/Thread.hpp
+++ b/include/SFML/System/Thread.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,18 +28,255 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/System/Export.hpp>
+#include <SFML/System/NonCopyable.hpp>
+#include <cstdlib>
-#ifdef SFML_SYSTEM_WINDOWS
+namespace sf
+{
+namespace priv
+{
+ class ThreadImpl;
+ struct ThreadFunc;
+}
- #include <SFML/System/Win32/Thread.hpp>
+////////////////////////////////////////////////////////////
+/// \brief Utility class to manipulate threads
+///
+////////////////////////////////////////////////////////////
+class SFML_SYSTEM_API Thread : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the thread from a functor with no argument
+ ///
+ /// This constructor works for function objects, as well
+ /// as free function.
+ ///
+ /// Use this constructor for this kind of function:
+ /// \code
+ /// void function();
+ ///
+ /// // --- or ----
+ ///
+ /// struct Functor
+ /// {
+ /// void operator()();
+ /// };
+ /// \endcode
+ /// Note: this does *not* run the thread, use Launch().
+ ///
+ /// \param function Functor or free function to use as the entry point of the thread
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename F>
+ Thread(F function);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the thread from a functor with an argument
+ ///
+ /// This constructor works for function objects, as well
+ /// as free function.
+ /// 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:
+ /// \code
+ /// void function(int arg);
+ ///
+ /// // --- or ----
+ ///
+ /// struct Functor
+ /// {
+ /// void operator()(std::string arg);
+ /// };
+ /// \endcode
+ /// Note: this does *not* run the thread, use Launch().
+ ///
+ /// \param function Functor or free function to use as the entry point of the thread
+ /// \param argument argument to forward to the function
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename F, typename A>
+ Thread(F function, A argument);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the thread from a member function and an object
+ ///
+ /// This constructor is template, which means that you can
+ /// use it with any class.
+ /// Use this constructor for this kind of function:
+ /// \code
+ /// class MyClass
+ /// {
+ /// public :
+ ///
+ /// void function();
+ /// };
+ /// \endcode
+ /// Note: this does *not* run the thread, use Launch().
+ ///
+ /// \param function Entry point of the thread
+ /// \param object Pointer to the object to use
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename C>
+ Thread(void(C::*function)(), C* object);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ /// This destructor calls Wait(), so that the internal thread
+ /// cannot survive after its sf::Thread instance is destroyed.
+ ///
+ ////////////////////////////////////////////////////////////
+ ~Thread();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ ////////////////////////////////////////////////////////////
+ void launch();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ ////////////////////////////////////////////////////////////
+ void wait();
-#else
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ ////////////////////////////////////////////////////////////
+ void terminate();
- #include <SFML/System/Unix/Thread.hpp>
+private :
-#endif
+ friend class priv::ThreadImpl;
+ ////////////////////////////////////////////////////////////
+ /// \brief Internal entry point of the thread
+ ///
+ /// This function is called by the thread implementation.
+ ///
+ ////////////////////////////////////////////////////////////
+ void run();
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ priv::ThreadImpl* m_impl; ///< OS-specific implementation of the thread
+ priv::ThreadFunc* m_entryPoint; ///< Abstraction of the function to run
+};
+
+#include <SFML/System/Thread.inl>
+
+} // namespace sf
#endif // SFML_THREAD_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Thread
+/// \ingroup system
+///
+/// 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:
+/// \li non-member functions with no argument
+/// \li non-member functions with one argument of any type
+/// \li functors with no argument (this one is particularly useful for compatibility with boost/std::bind)
+/// \li functors with one argument of any type
+/// \li 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:
+/// \code
+/// // 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))
+/// \endcode
+///
+/// \code
+/// // 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())
+/// \endcode
+///
+/// \code
+/// // example 3: functor
+///
+/// struct Task
+/// {
+/// void operator()()
+/// {
+/// ...
+/// }
+/// };
+///
+/// sf::Thread thread(Task());
+/// thread.launch(); // start the thread (internally calls operator() on the Task instance)
+/// \endcode
+///
+/// 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 sf::Mutex
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Thread.inl b/include/SFML/System/Thread.inl
new file mode 100644
index 0000000..126228a
--- /dev/null
+++ b/include/SFML/System/Thread.inl
@@ -0,0 +1,90 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+namespace priv
+{
+// Base class for abstract thread functions
+struct ThreadFunc
+{
+ virtual ~ThreadFunc() {}
+ virtual void run() = 0;
+};
+
+// Specialization using a functor (including free functions) with no argument
+template <typename T>
+struct ThreadFunctor : ThreadFunc
+{
+ ThreadFunctor(T functor) : m_functor(functor) {}
+ virtual void run() {m_functor();}
+ T m_functor;
+};
+
+// Specialization using a functor (including free functions) with one argument
+template <typename F, typename A>
+struct ThreadFunctorWithArg : ThreadFunc
+{
+ ThreadFunctorWithArg(F function, A arg) : m_function(function), m_arg(arg) {}
+ virtual void run() {m_function(m_arg);}
+ F m_function;
+ A m_arg;
+};
+
+// Specialization using a member function
+template <typename C>
+struct ThreadMemberFunc : ThreadFunc
+{
+ ThreadMemberFunc(void(C::*function)(), C* object) : m_function(function), m_object(object) {}
+ virtual void run() {(m_object->*m_function)();}
+ void(C::*m_function)();
+ C* m_object;
+};
+
+} // namespace priv
+
+
+////////////////////////////////////////////////////////////
+template <typename F>
+Thread::Thread(F functor) :
+m_impl (NULL),
+m_entryPoint(new priv::ThreadFunctor<F>(functor))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename F, typename A>
+Thread::Thread(F function, A argument) :
+m_impl (NULL),
+m_entryPoint(new priv::ThreadFunctorWithArg<F, A>(function, argument))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename C>
+Thread::Thread(void(C::*function)(), C* object) :
+m_impl (NULL),
+m_entryPoint(new priv::ThreadMemberFunc<C>(function, object))
+{
+}
diff --git a/src/SFML/Window/Win32/Joystick.hpp b/include/SFML/System/ThreadLocal.hpp
index 1538069..fe2ba82 100755..100644
--- a/src/SFML/Window/Win32/Joystick.hpp
+++ b/include/SFML/System/ThreadLocal.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,74 +22,82 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_JOYSTICKWIN32_HPP
-#define SFML_JOYSTICKWIN32_HPP
+#ifndef SFML_THREADLOCAL_HPP
+#define SFML_THREADLOCAL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/System/Export.hpp>
+#include <SFML/System/NonCopyable.hpp>
+#include <cstdlib>
namespace sf
{
namespace priv
{
+ class ThreadLocalImpl;
+}
+
////////////////////////////////////////////////////////////
-/// Win32 implementation of Joystick
+/// \brief Defines variables with thread-local storage
+///
////////////////////////////////////////////////////////////
-class Joystick
+class SFML_SYSTEM_API ThreadLocal : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Initialize the instance and bind it to a physical joystick
+ /// \brief Default constructor
///
- /// \param Index : Index of the physical joystick to bind to
+ /// \param value Optional value to initalize the variable
///
////////////////////////////////////////////////////////////
- void Initialize(unsigned int Index);
+ ThreadLocal(void* value = NULL);
////////////////////////////////////////////////////////////
- /// Update the current joystick and return its new state
- ///
- /// \return Current state of the joystick
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
- JoystickState UpdateState();
+ ~ThreadLocal();
////////////////////////////////////////////////////////////
- /// Check if the joystick supports the given axis
+ /// \brief Set the thread-specific value of the variable
///
- /// \param Axis : Axis to check
- ///
- /// \return True of the axis is supported, false otherwise
+ /// \param value Value of the variable for the current thread
///
////////////////////////////////////////////////////////////
- bool HasAxis(Joy::Axis Axis) const;
+ void setValue(void* value);
////////////////////////////////////////////////////////////
- /// Get the number of buttons supported by the joystick
+ /// \brief Retrieve the thread-specific value of the variable
///
- /// \return Number of buttons
+ /// \return Value of the variable for the current thread
///
////////////////////////////////////////////////////////////
- unsigned int GetButtonsCount() const;
+ void* getValue() const;
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- bool myIsConnected; ///< Is there a joystick connected?
- unsigned int myIndex; ///< Windows ID of the joystick
- unsigned int myNbButtons; ///< Number of buttons supported by the joystick
- bool myAxes[Joy::AxisCount]; ///< Supported axes
- bool myHasContinuousPOV; ///< True if the driver supports continuous values for the POV
+ priv::ThreadLocalImpl* m_impl; ///< Pointer to the OS specific implementation
};
-} // namespace priv
-
} // namespace sf
-#endif // SFML_JOYSTICKWIN32_HPP
+#endif // SFML_THREADLOCAL_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::ThreadLocal
+/// \ingroup system
+///
+/// This class manipulates void* parameters and thus is not
+/// appropriate for strongly-typed variables. You should rather
+/// use the sf::ThreadLocalPtr template class.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/ThreadLocalPtr.hpp b/include/SFML/System/ThreadLocalPtr.hpp
new file mode 100644
index 0000000..e6dc1eb
--- /dev/null
+++ b/include/SFML/System/ThreadLocalPtr.hpp
@@ -0,0 +1,158 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_THREADLOCALPTR_HPP
+#define SFML_THREADLOCALPTR_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/ThreadLocal.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Pointer to a thread-local variable
+///
+////////////////////////////////////////////////////////////
+template <typename T>
+class ThreadLocalPtr : private ThreadLocal
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// \param value Optional value to initalize the variable
+ ///
+ ////////////////////////////////////////////////////////////
+ ThreadLocalPtr(T* value = NULL);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of unary operator *
+ ///
+ /// Like raw pointers, applying the * operator returns a
+ /// reference to the pointed object.
+ ///
+ /// \return Reference to the pointed object
+ ///
+ ////////////////////////////////////////////////////////////
+ T& operator *() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Overload of operator ->
+ ///
+ /// Like raw pointers, applying the -> operator returns the
+ /// pointed object.
+ ///
+ /// \return Pointed object
+ ///
+ ////////////////////////////////////////////////////////////
+ T* operator ->() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Cast operator to implicitely convert the
+ /// pointer to its raw pointer type (T*)
+ ///
+ /// \return Pointer to the actual object
+ ///
+ ////////////////////////////////////////////////////////////
+ operator T*() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Assignment operator for a raw pointer parameter
+ ///
+ /// \param value Pointer to assign
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ ThreadLocalPtr<T>& operator =(T* value);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Assignment operator for a ThreadLocalPtr parameter
+ ///
+ /// \param right ThreadLocalPtr to assign
+ ///
+ /// \return Reference to self
+ ///
+ ////////////////////////////////////////////////////////////
+ ThreadLocalPtr<T>& operator =(const ThreadLocalPtr<T>& right);
+};
+
+} // namespace sf
+
+#include <SFML/System/ThreadLocalPtr.inl>
+
+
+#endif // SFML_THREADLOCALPTR_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::ThreadLocalPtr
+/// \ingroup system
+///
+/// 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 variable 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:
+/// \code
+/// MyClass object1;
+/// MyClass object2;
+/// sf::ThreadLocalPtr<MyClass> objectPtr;
+///
+/// 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;
+/// }
+/// \endcode
+///
+/// ThreadLocalPtr is designed for internal use; however you
+/// can use it if you feel like it fits well your implementation.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/ThreadLocalPtr.inl b/include/SFML/System/ThreadLocalPtr.inl
new file mode 100644
index 0000000..8442025
--- /dev/null
+++ b/include/SFML/System/ThreadLocalPtr.inl
@@ -0,0 +1,77 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+template <typename T>
+ThreadLocalPtr<T>::ThreadLocalPtr(T* value) :
+ThreadLocal(value)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+T& ThreadLocalPtr<T>::operator *() const
+{
+ return *static_cast<T*>(getValue());
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+T* ThreadLocalPtr<T>::operator ->() const
+{
+ return static_cast<T*>(getValue());
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+ThreadLocalPtr<T>::operator T*() const
+{
+ return static_cast<T*>(getValue());
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+ThreadLocalPtr<T>& ThreadLocalPtr<T>::operator =(T* value)
+{
+ setValue(value);
+ return *this;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename T>
+ThreadLocalPtr<T>& ThreadLocalPtr<T>::operator =(const ThreadLocalPtr<T>& right)
+{
+ setValue(right.getValue());
+ return *this;
+}
+
+} // namespace sf
diff --git a/include/SFML/System/Time.hpp b/include/SFML/System/Time.hpp
new file mode 100644
index 0000000..5037f52
--- /dev/null
+++ b/include/SFML/System/Time.hpp
@@ -0,0 +1,452 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TIME_HPP
+#define SFML_TIME_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Export.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Represents a time value
+///
+////////////////////////////////////////////////////////////
+class SFML_SYSTEM_API Time
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// Sets the time value to zero.
+ ///
+ ////////////////////////////////////////////////////////////
+ Time();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the time value as a number of seconds
+ ///
+ /// \return Time in seconds
+ ///
+ /// \see asMilliseconds, asMicroseconds
+ ///
+ ////////////////////////////////////////////////////////////
+ float asSeconds() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the time value as a number of milliseconds
+ ///
+ /// \return Time in milliseconds
+ ///
+ /// \see asSeconds, asMicroseconds
+ ///
+ ////////////////////////////////////////////////////////////
+ Int32 asMilliseconds() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the time value as a number of microseconds
+ ///
+ /// \return Time in microseconds
+ ///
+ /// \see asSeconds, asMilliseconds
+ ///
+ ////////////////////////////////////////////////////////////
+ Int64 asMicroseconds() const;
+
+ ////////////////////////////////////////////////////////////
+ // Static member data
+ ////////////////////////////////////////////////////////////
+ static const Time Zero; ///< Predefined "zero" time value
+
+private :
+
+ friend SFML_SYSTEM_API Time seconds(float);
+ friend SFML_SYSTEM_API Time milliseconds(Int32);
+ friend SFML_SYSTEM_API Time microseconds(Int64);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct from a number of microseconds
+ ///
+ /// This function is internal. To construct time values,
+ /// use sf::seconds, sf::milliseconds or sf::microseconds instead.
+ ///
+ /// \param microseconds Number of microseconds
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit Time(Int64 microseconds);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Int64 m_microseconds; ///< Time value stored as microseconds
+};
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Construct a time value from a number of seconds
+///
+/// \param amount Number of seconds
+///
+/// \return Time value constructed from the amount of seconds
+///
+/// \see milliseconds, microseconds
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time seconds(float amount);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Construct a time value from a number of milliseconds
+///
+/// \param amount Number of milliseconds
+///
+/// \return Time value constructed from the amount of milliseconds
+///
+/// \see seconds, microseconds
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time milliseconds(Int32 amount);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Construct a time value from a number of microseconds
+///
+/// \param amount Number of microseconds
+///
+/// \return Time value constructed from the amount of microseconds
+///
+/// \see seconds, milliseconds
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time microseconds(Int64 amount);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of == operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if both time values are equal
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator ==(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of != operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if both time values are different
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator !=(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of < operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if \a left is lesser than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator <(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of > operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if \a left is greater than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator >(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of <= operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if \a left is lesser or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator <=(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of >= operator to compare two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return True if \a left is greater or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API bool operator >=(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of unary - operator to negate a time value
+///
+/// \param right Right operand (a time)
+///
+/// \return Opposite of the time value
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator -(Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary + operator to add two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return Sum of the two times values
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator +(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary += operator to add/assign two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return Sum of the two times values
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator +=(Time& left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary - operator to subtract two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return Difference of the two times values
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator -(Time left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary -= operator to subtract/assign two time values
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a time)
+///
+/// \return Difference of the two times values
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator -=(Time& left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary * operator to scale a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator *(Time left, float right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary * operator to scale a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator *(Time left, Int64 right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary * operator to scale a time value
+///
+/// \param left Left operand (a number)
+/// \param right Right operand (a time)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator *(float left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary * operator to scale a time value
+///
+/// \param left Left operand (a number)
+/// \param right Right operand (a time)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator *(Int64 left, Time right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary *= operator to scale/assign a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator *=(Time& left, float right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary *= operator to scale/assign a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left multiplied by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator *=(Time& left, Int64 right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary / operator to scale a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left divided by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator /(Time left, float right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary / operator to scale a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left divided by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time operator /(Time left, Int64 right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary /= operator to scale/assign a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left divided by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator /=(Time& left, float right);
+
+////////////////////////////////////////////////////////////
+/// \relates Time
+/// \brief Overload of binary /= operator to scale/assign a time value
+///
+/// \param left Left operand (a time)
+/// \param right Right operand (a number)
+///
+/// \return \a left divided by \a right
+///
+////////////////////////////////////////////////////////////
+SFML_SYSTEM_API Time& operator /=(Time& left, Int64 right);
+
+} // namespace sf
+
+
+#endif // SFML_TIME_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Time
+/// \ingroup system
+///
+/// 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:
+/// \code
+/// 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
+/// \endcode
+///
+/// \code
+/// void update(sf::Time elapsed)
+/// {
+/// position += speed * elapsed.asSeconds();
+/// }
+///
+/// update(sf::milliseconds(100));
+/// \endcode
+///
+/// \see sf::Clock
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Unicode.hpp b/include/SFML/System/Unicode.hpp
deleted file mode 100755
index f807fb3..0000000
--- a/include/SFML/System/Unicode.hpp
+++ /dev/null
@@ -1,290 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_UNICODE_HPP
-#define SFML_UNICODE_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <iterator>
-#include <locale>
-#include <string>
-#include <stdlib.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Provides utility functions to convert from and to
-/// any unicode and ASCII encoding
-////////////////////////////////////////////////////////////
-class SFML_API Unicode
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Define a string type for each encoding
- /// Warning : in UTF8 and UTF16 strings, one element doesn't
- /// necessarily maps to one character ; only an UTF32 element
- /// is wide enough to hold all possible unicode values
- ////////////////////////////////////////////////////////////
- typedef std::basic_string<Uint8> UTF8String;
- typedef std::basic_string<Uint16> UTF16String;
- typedef std::basic_string<Uint32> UTF32String;
-
- ////////////////////////////////////////////////////////////
- /// This class is an abstract definition of a unicode text,
- /// it can be converted from and to any kind of string
- /// and encoding
- ////////////////////////////////////////////////////////////
- class SFML_API Text
- {
- public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor (empty text)
- ///
- ////////////////////////////////////////////////////////////
- Text();
-
- ////////////////////////////////////////////////////////////
- /// Construct the unicode text from any type of string
- ///
- /// \param Str : String to convert
- ///
- ////////////////////////////////////////////////////////////
- Text(const char* Str);
- Text(const wchar_t* Str);
- Text(const Uint8* Str);
- Text(const Uint16* Str);
- Text(const Uint32* Str);
- Text(const std::string& Str);
- Text(const std::wstring& Str);
- Text(const Unicode::UTF8String& Str);
- Text(const Unicode::UTF16String& Str);
- Text(const Unicode::UTF32String& Str);
-
- ////////////////////////////////////////////////////////////
- /// Operator to cast the text to any type of string
- ///
- /// \return Converted string
- ///
- ////////////////////////////////////////////////////////////
- operator std::string () const;
- operator std::wstring () const;
- operator Unicode::UTF8String () const;
- operator Unicode::UTF16String () const;
- operator const Unicode::UTF32String&() const;
-
- private :
-
- ////////////////////////////////////////////////////////////
- // Data member
- ////////////////////////////////////////////////////////////
- sf::Unicode::UTF32String myUTF32String; ///< UTF-32 unicode text
- };
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-32 characters range
- /// to an ANSI characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- /// \param Locale : Locale to use for conversion (uses the current one by default)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF32ToANSI(In Begin, In End, Out Output, char Replacement = '?', const std::locale& Locale = GetDefaultLocale());
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an ANSI characters range
- /// to an UTF-32 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Locale : Locale to use for conversion (uses the current one by default)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out ANSIToUTF32(In Begin, In End, Out Output, const std::locale& Locale = GetDefaultLocale());
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-8 characters range
- /// to an UTF-16 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF8ToUTF16(In Begin, In End, Out Output, Uint16 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-8 characters range
- /// to an UTF-32 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF8ToUTF32(In Begin, In End, Out Output, Uint32 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-16 characters range
- /// to an UTF-8 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF16ToUTF8(In Begin, In End, Out Output, Uint8 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-16 characters range
- /// to an UTF-32 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF16ToUTF32(In Begin, In End, Out Output, Uint32 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-32 characters range
- /// to an UTF-8 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF32ToUTF8(In Begin, In End, Out Output, Uint8 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Generic function to convert an UTF-32 characters range
- /// to an UTF-16 characters range, using the given locale
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- /// \param Output : Iterator pointing to the beginning of the output sequence
- /// \param Replacement : Replacement character for characters not convertible to output encoding ('?' by default -- use 0 to use no replacement character)
- ///
- /// \return Iterator to the end of the output sequence which has been written
- ///
- ////////////////////////////////////////////////////////////
- template <typename In, typename Out>
- static Out UTF32ToUTF16(In Begin, In End, Out Output, Uint16 Replacement = '?');
-
- ////////////////////////////////////////////////////////////
- /// Get the number of characters composing an UTF-8 string
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- ///
- /// \return Count of the characters in the string
- ///
- ////////////////////////////////////////////////////////////
- template <typename In>
- static std::size_t GetUTF8Length(In Begin, In End);
-
- ////////////////////////////////////////////////////////////
- /// Get the number of characters composing an UTF-16 string
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- ///
- /// \return Count of the characters in the string
- ///
- ////////////////////////////////////////////////////////////
- template <typename In>
- static std::size_t GetUTF16Length(In Begin, In End);
-
- ////////////////////////////////////////////////////////////
- /// Get the number of characters composing an UTF-32 string
- ///
- /// \param Begin : Iterator pointing to the beginning of the input sequence
- /// \param End : Iterator pointing to the end of the input sequence
- ///
- /// \return Count of the characters in the string
- ///
- ////////////////////////////////////////////////////////////
- template <typename In>
- static std::size_t GetUTF32Length(In Begin, In End);
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Get the default system locale
- ///
- /// \return Reference to the default system locale
- ///
- ////////////////////////////////////////////////////////////
- static const std::locale& GetDefaultLocale();
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static const int UTF8TrailingBytes[256]; ///< Lookup table to find the length of an UTF-8 sequence
- static const Uint32 UTF8Offsets[6]; ///< Magic values to subtract during UTF-8 conversions
- static const Uint8 UTF8FirstBytes[7]; ///< First bytes for UTF-8 sequences
-};
-
-#include <SFML/System/Unicode.inl>
-
-} // namespace sf
-
-
-#endif // SFML_UNICODE_HPP
diff --git a/include/SFML/System/Unicode.inl b/include/SFML/System/Unicode.inl
deleted file mode 100755
index a169811..0000000
--- a/include/SFML/System/Unicode.inl
+++ /dev/null
@@ -1,474 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-32 characters range
-/// to an ANSI characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF32ToANSI(In Begin, In End, Out Output, char Replacement, const std::locale& Locale)
-{
- #ifdef __MINGW32__
-
- // MinGW has a almost no support for unicode stuff
- // As a consequence, the MinGW version of this function can only use the default locale
- // and ignores the one passed as parameter
- while (Begin < End)
- {
- char Char = 0;
- if (wctomb(&Char, static_cast<wchar_t>(*Begin++)) >= 0)
- *Output++ = Char;
- else if (Replacement)
- *Output++ = Replacement;
- }
-
- #else
-
- // Get the facet of the locale which deals with character conversion
- const std::ctype<wchar_t>& Facet = std::use_facet< std::ctype<wchar_t> >(Locale);
-
- // Use the facet to convert each character of the input string
- while (Begin < End)
- *Output++ = Facet.narrow(static_cast<wchar_t>(*Begin++), Replacement);
-
- #endif
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an ANSI characters range
-/// to an UTF-32 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::ANSIToUTF32(In Begin, In End, Out Output, const std::locale& Locale)
-{
- #ifdef __MINGW32__
-
- // MinGW has a almost no support for unicode stuff
- // As a consequence, the MinGW version of this function can only use the default locale
- // and ignores the one passed as parameter
- while (Begin < End)
- {
- wchar_t Char = 0;
- mbtowc(&Char, &*Begin, 1);
- Begin++;
- *Output++ = static_cast<Uint32>(Char);
- }
-
- #else
-
- // Get the facet of the locale which deals with character conversion
- const std::ctype<wchar_t>& Facet = std::use_facet< std::ctype<wchar_t> >(Locale);
-
- // Use the facet to convert each character of the input string
- while (Begin < End)
- *Output++ = static_cast<Uint32>(Facet.widen(*Begin++));
-
- #endif
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-8 characters range
-/// to an UTF-16 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF8ToUTF16(In Begin, In End, Out Output, Uint16 Replacement)
-{
- while (Begin < End)
- {
- Uint32 c = 0;
- int TrailingBytes = UTF8TrailingBytes[static_cast<int>(*Begin)];
- if (Begin + TrailingBytes < End)
- {
- // First decode the UTF-8 character
- switch (TrailingBytes)
- {
- case 5 : c += *Begin++; c <<= 6;
- case 4 : c += *Begin++; c <<= 6;
- case 3 : c += *Begin++; c <<= 6;
- case 2 : c += *Begin++; c <<= 6;
- case 1 : c += *Begin++; c <<= 6;
- case 0 : c += *Begin++;
- }
- c -= UTF8Offsets[TrailingBytes];
-
- // Then encode it in UTF-16
- if (c < 0xFFFF)
- {
- // Character can be converted directly to 16 bits, just need to check it's in the valid range
- if ((c >= 0xD800) && (c <= 0xDFFF))
- {
- // Invalid character (this range is reserved)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Valid character directly convertible to 16 bits
- *Output++ = static_cast<Uint16>(c);
- }
- }
- else if (c > 0x0010FFFF)
- {
- // Invalid character (greater than the maximum unicode value)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Character will be converted to 2 UTF-16 elements
- c -= 0x0010000;
- *Output++ = static_cast<Uint16>((c >> 10) + 0xD800);
- *Output++ = static_cast<Uint16>((c & 0x3FFUL) + 0xDC00);
- }
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-8 characters range
-/// to an UTF-32 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF8ToUTF32(In Begin, In End, Out Output, Uint32 Replacement)
-{
- while (Begin < End)
- {
- Uint32 c = 0;
- int TrailingBytes = UTF8TrailingBytes[static_cast<int>(*Begin)];
- if (Begin + TrailingBytes < End)
- {
- // First decode the UTF-8 character
- switch (TrailingBytes)
- {
- case 5 : c += *Begin++; c <<= 6;
- case 4 : c += *Begin++; c <<= 6;
- case 3 : c += *Begin++; c <<= 6;
- case 2 : c += *Begin++; c <<= 6;
- case 1 : c += *Begin++; c <<= 6;
- case 0 : c += *Begin++;
- }
- c -= UTF8Offsets[TrailingBytes];
-
- // Then write it if valid
- if ((c < 0xD800) || (c > 0xDFFF))
- {
- // Valid UTF-32 character
- *Output++ = c;
- }
- else
- {
- // Invalid UTF-32 character
- if (Replacement)
- *Output++ = Replacement;
- }
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-16 characters range
-/// to an UTF-8 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF16ToUTF8(In Begin, In End, Out Output, Uint8 Replacement)
-{
- while (Begin < End)
- {
- Uint32 c = *Begin++;
-
- // If it's a surrogate pair, first convert to a single UTF-32 character
- if ((c >= 0xD800) && (c <= 0xDBFF))
- {
- if (Begin < End)
- {
- // The second element is valid : convert the two elements to a UTF-32 character
- Uint32 d = *Begin++;
- if ((d >= 0xDC00) && (d <= 0xDFFF))
- c = static_cast<Uint32>(((c - 0xD800) << 10) + (d - 0xDC00) + 0x0010000);
- }
- else
- {
- // Invalid second element
- if (Replacement)
- *Output++ = Replacement;
- }
- }
-
- // Then convert to UTF-8
- if (c > 0x0010FFFF)
- {
- // Invalid character (greater than the maximum unicode value)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Valid character
-
- // Get number of bytes to write
- int BytesToWrite = 1;
- if (c < 0x80) BytesToWrite = 1;
- else if (c < 0x800) BytesToWrite = 2;
- else if (c < 0x10000) BytesToWrite = 3;
- else if (c <= 0x0010FFFF) BytesToWrite = 4;
-
- // Extract bytes to write
- Uint8 Bytes[4];
- switch (BytesToWrite)
- {
- case 4 : Bytes[3] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 3 : Bytes[2] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 2 : Bytes[1] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 1 : Bytes[0] = static_cast<Uint8> (c | UTF8FirstBytes[BytesToWrite]);
- }
-
- // Add them to the output
- const Uint8* CurByte = Bytes;
- switch (BytesToWrite)
- {
- case 4 : *Output++ = *CurByte++;
- case 3 : *Output++ = *CurByte++;
- case 2 : *Output++ = *CurByte++;
- case 1 : *Output++ = *CurByte++;
- }
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-16 characters range
-/// to an UTF-32 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF16ToUTF32(In Begin, In End, Out Output, Uint32 Replacement)
-{
- while (Begin < End)
- {
- Uint16 c = *Begin++;
- if ((c >= 0xD800) && (c <= 0xDBFF))
- {
- // We have a surrogate pair, ie. a character composed of two elements
- if (Begin < End)
- {
- Uint16 d = *Begin++;
- if ((d >= 0xDC00) && (d <= 0xDFFF))
- {
- // The second element is valid : convert the two elements to a UTF-32 character
- *Output++ = static_cast<Uint32>(((c - 0xD800) << 10) + (d - 0xDC00) + 0x0010000);
- }
- else
- {
- // Invalid second element
- if (Replacement)
- *Output++ = Replacement;
- }
- }
- }
- else if ((c >= 0xDC00) && (c <= 0xDFFF))
- {
- // Invalid character
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Valid character directly convertible to UTF-32
- *Output++ = static_cast<Uint32>(c);
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-32 characters range
-/// to an UTF-8 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF32ToUTF8(In Begin, In End, Out Output, Uint8 Replacement)
-{
- while (Begin < End)
- {
- Uint32 c = *Begin++;
- if (c > 0x0010FFFF)
- {
- // Invalid character (greater than the maximum unicode value)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Valid character
-
- // Get number of bytes to write
- int BytesToWrite = 1;
- if (c < 0x80) BytesToWrite = 1;
- else if (c < 0x800) BytesToWrite = 2;
- else if (c < 0x10000) BytesToWrite = 3;
- else if (c <= 0x0010FFFF) BytesToWrite = 4;
-
- // Extract bytes to write
- Uint8 Bytes[4];
- switch (BytesToWrite)
- {
- case 4 : Bytes[3] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 3 : Bytes[2] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 2 : Bytes[1] = static_cast<Uint8>((c | 0x80) & 0xBF); c >>= 6;
- case 1 : Bytes[0] = static_cast<Uint8> (c | UTF8FirstBytes[BytesToWrite]);
- }
-
- // Add them to the output
- const Uint8* CurByte = Bytes;
- switch (BytesToWrite)
- {
- case 4 : *Output++ = *CurByte++;
- case 3 : *Output++ = *CurByte++;
- case 2 : *Output++ = *CurByte++;
- case 1 : *Output++ = *CurByte++;
- }
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Generic function to convert an UTF-32 characters range
-/// to an UTF-16 characters range, using the given locale
-////////////////////////////////////////////////////////////
-template <typename In, typename Out>
-inline Out Unicode::UTF32ToUTF16(In Begin, In End, Out Output, Uint16 Replacement)
-{
- while (Begin < End)
- {
- Uint32 c = *Begin++;
- if (c < 0xFFFF)
- {
- // Character can be converted directly to 16 bits, just need to check it's in the valid range
- if ((c >= 0xD800) && (c <= 0xDFFF))
- {
- // Invalid character (this range is reserved)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Valid character directly convertible to 16 bits
- *Output++ = static_cast<Uint16>(c);
- }
- }
- else if (c > 0x0010FFFF)
- {
- // Invalid character (greater than the maximum unicode value)
- if (Replacement)
- *Output++ = Replacement;
- }
- else
- {
- // Character will be converted to 2 UTF-16 elements
- c -= 0x0010000;
- *Output++ = static_cast<Uint16>((c >> 10) + 0xD800);
- *Output++ = static_cast<Uint16>((c & 0x3FFUL) + 0xDC00);
- }
- }
-
- return Output;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of characters composing an UTF-8 string
-////////////////////////////////////////////////////////////
-template <typename In>
-inline std::size_t Unicode::GetUTF8Length(In Begin, In End)
-{
- std::size_t Length = 0;
- while (Begin < End)
- {
- int NbBytes = UTF8TrailingBytes[static_cast<int>(*Begin)];
- if (Begin + NbBytes < End)
- ++Length;
-
- Begin += NbBytes + 1;
- }
-
- return Length;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of characters composing an UTF-16 string
-////////////////////////////////////////////////////////////
-template <typename In>
-inline std::size_t Unicode::GetUTF16Length(In Begin, In End)
-{
- std::size_t Length = 0;
- while (Begin < End)
- {
- if ((*Begin >= 0xD800) && (*Begin <= 0xDBFF))
- {
- ++Begin;
- if ((Begin < End) && ((*Begin >= 0xDC00) && (*Begin <= 0xDFFF)))
- {
- ++Length;
- }
- }
- else
- {
- ++Length;
- }
-
- ++Begin;
- }
-
- return Length;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of characters composing an UTF-32 string
-////////////////////////////////////////////////////////////
-template <typename In>
-inline std::size_t Unicode::GetUTF32Length(In Begin, In End)
-{
- return End - Begin;
-}
diff --git a/include/SFML/System/Utf.hpp b/include/SFML/System/Utf.hpp
new file mode 100644
index 0000000..48e6e1b
--- /dev/null
+++ b/include/SFML/System/Utf.hpp
@@ -0,0 +1,763 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_UTF_HPP
+#define SFML_UTF_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <algorithm>
+#include <locale>
+#include <string>
+#include <cstdlib>
+
+
+namespace sf
+{
+template <unsigned int N>
+class Utf;
+
+////////////////////////////////////////////////////////////
+/// \brief Specialization of the Utf template for UTF-8
+///
+////////////////////////////////////////////////////////////
+template <>
+class Utf<8>
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Decode a single UTF-8 character
+ ///
+ /// Decoding a character means finding its unique 32-bits
+ /// code (called the codepoint) in the Unicode standard.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Codepoint of the decoded UTF-8 character
+ /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param input Codepoint to encode as UTF-8
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to UTF-8 (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename Out>
+ static Out encode(Uint32 input, Out output, Uint8 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In next(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static std::size_t count(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a wide characters range to UTF-8
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromWide(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-8
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromLatin1(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-8 characters range to wide characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toLatin1(In begin, In end, Out output, char replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf8(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-8 characters range to UTF-16
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf16(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-8 characters range to UTF-32
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf32(In begin, In end, Out output);
+};
+
+////////////////////////////////////////////////////////////
+/// \brief Specialization of the Utf template for UTF-16
+///
+////////////////////////////////////////////////////////////
+template <>
+class Utf<16>
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Decode a single UTF-16 character
+ ///
+ /// Decoding a character means finding its unique 32-bits
+ /// code (called the codepoint) in the Unicode standard.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Codepoint of the decoded UTF-16 character
+ /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param input Codepoint to encode as UTF-16
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to UTF-16 (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename Out>
+ static Out encode(Uint32 input, Out output, Uint16 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In next(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static std::size_t count(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a wide characters range to UTF-16
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromWide(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-16
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromLatin1(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-16 characters range to wide characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toLatin1(In begin, In end, Out output, char replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-16 characters range to UTF-8
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf8(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf16(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-16 characters range to UTF-32
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf32(In begin, In end, Out output);
+};
+
+////////////////////////////////////////////////////////////
+/// \brief Specialization of the Utf template for UTF-32
+///
+////////////////////////////////////////////////////////////
+template <>
+class Utf<32>
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Codepoint of the decoded UTF-32 character
+ /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param input Codepoint to encode as UTF-32
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to UTF-32 (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename Out>
+ static Out encode(Uint32 input, Out output, Uint32 replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Advance to the next UTF-32 character
+ ///
+ /// This function is trivial for UTF-32, which can store
+ /// every character in a single storage element.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static In next(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ ///
+ /// \return Iterator pointing to one past the last read element of the input sequence
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static std::size_t count(In begin, In end);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a wide characters range to UTF-32
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromWide(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-32
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out fromLatin1(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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 \a locale parameter.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them)
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-32 characters range to wide characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toLatin1(In begin, In end, Out output, char replacement = 0);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-32 characters range to UTF-8
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf8(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a UTF-32 characters range to UTF-16
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf16(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param begin Iterator pointing to the beginning of the input sequence
+ /// \param end Iterator pointing to the end of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In, typename Out>
+ static Out toUtf32(In begin, In end, Out output);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param input Input ANSI character
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Converted character
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static Uint32 decodeAnsi(In input, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param input Input wide character
+ ///
+ /// \return Converted character
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename In>
+ static Uint32 decodeWide(In input);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param codepoint Iterator pointing to the beginning of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement if the input character is not convertible to ANSI (use 0 to skip it)
+ /// \param locale Locale to use for conversion
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename Out>
+ static Out encodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale());
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param codepoint Iterator pointing to the beginning of the input sequence
+ /// \param output Iterator pointing to the beginning of the output sequence
+ /// \param replacement Replacement if the input character is not convertible to wide (use 0 to skip it)
+ ///
+ /// \return Iterator to the end of the output sequence which has been written
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename Out>
+ static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0);
+};
+
+#include <SFML/System/Utf.inl>
+
+// Make typedefs to get rid of the template syntax
+typedef Utf<8> Utf8;
+typedef Utf<16> Utf16;
+typedef Utf<32> Utf32;
+
+} // namespace sf
+
+
+#endif // SFML_UTF_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Utf
+/// \ingroup system
+///
+/// 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 instanciated. All the functions are template, so that you
+/// can use any character / string type for a given encoding.
+///
+/// It has 3 specializations:
+/// \li sf::Utf<8> (typedef'd to sf::Utf8)
+/// \li sf::Utf<16> (typedef'd to sf::Utf16)
+/// \li sf::Utf<32> (typedef'd to sf::Utf32)
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Utf.inl b/include/SFML/System/Utf.inl
new file mode 100644
index 0000000..672a0fa
--- /dev/null
+++ b/include/SFML/System/Utf.inl
@@ -0,0 +1,752 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////
+// References :
+//
+// http://www.unicode.org/
+// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.c
+// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.h
+// http://people.w3.org/rishida/scripts/uniview/conversion
+//
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<8>::decode(In begin, In end, Uint32& output, Uint32 replacement)
+{
+ // Some useful precomputed data
+ static const int trailing[256] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
+ };
+ static const Uint32 offsets[6] =
+ {
+ 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080
+ };
+
+ // decode the character
+ int trailingBytes = trailing[static_cast<Uint8>(*begin)];
+ if (begin + trailingBytes < end)
+ {
+ output = 0;
+ switch (trailingBytes)
+ {
+ case 5 : output += static_cast<Uint8>(*begin++); output <<= 6;
+ case 4 : output += static_cast<Uint8>(*begin++); output <<= 6;
+ case 3 : output += static_cast<Uint8>(*begin++); output <<= 6;
+ case 2 : output += static_cast<Uint8>(*begin++); output <<= 6;
+ case 1 : output += static_cast<Uint8>(*begin++); output <<= 6;
+ case 0 : output += static_cast<Uint8>(*begin++);
+ }
+ output -= offsets[trailingBytes];
+ }
+ else
+ {
+ // Incomplete character
+ begin = end;
+ output = replacement;
+ }
+
+ return begin;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename Out>
+Out Utf<8>::encode(Uint32 input, Out output, Uint8 replacement)
+{
+ // Some useful precomputed data
+ static const Uint8 firstBytes[7] =
+ {
+ 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
+ };
+
+ // encode the character
+ if ((input > 0x0010FFFF) || ((input >= 0xD800) && (input <= 0xDBFF)))
+ {
+ // Invalid character
+ if (replacement)
+ *output++ = replacement;
+ }
+ else
+ {
+ // Valid character
+
+ // Get the number of bytes to write
+ std::size_t bytestoWrite = 1;
+ if (input < 0x80) bytestoWrite = 1;
+ else if (input < 0x800) bytestoWrite = 2;
+ else if (input < 0x10000) bytestoWrite = 3;
+ else if (input <= 0x0010FFFF) bytestoWrite = 4;
+
+ // Extract the bytes to write
+ Uint8 bytes[4];
+ switch (bytestoWrite)
+ {
+ case 4 : bytes[3] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
+ case 3 : bytes[2] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
+ case 2 : bytes[1] = static_cast<Uint8>((input | 0x80) & 0xBF); input >>= 6;
+ case 1 : bytes[0] = static_cast<Uint8> (input | firstBytes[bytestoWrite]);
+ }
+
+ // Add them to the output
+ output = std::copy(bytes, bytes + bytestoWrite, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<8>::next(In begin, In end)
+{
+ Uint32 codepoint;
+ return decode(begin, end, codepoint);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+std::size_t Utf<8>::count(In begin, In end)
+{
+ std::size_t length = 0;
+ while (begin < end)
+ {
+ begin = next(begin, end);
+ ++length;
+ }
+
+ return length;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::fromAnsi(In begin, In end, Out output, const std::locale& locale)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint = Utf<32>::decodeAnsi(*begin++, locale);
+ output = encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::fromWide(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint = Utf<32>::decodeWide(*begin++);
+ output = encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::fromLatin1(In begin, In end, Out output)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ while (begin < end)
+ output = encode(*begin++, output);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<32>::encodeAnsi(codepoint, output, replacement, locale);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toWide(In begin, In end, Out output, wchar_t replacement)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<32>::encodeWide(codepoint, output, replacement);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toLatin1(In begin, In end, Out output, char replacement)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ *output++ = codepoint < 256 ? static_cast<char>(codepoint) : replacement;
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toUtf8(In begin, In end, Out output)
+{
+ return std::copy(begin, end, output);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toUtf16(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<16>::encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<8>::toUtf32(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ *output++ = codepoint;
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<16>::decode(In begin, In end, Uint32& output, Uint32 replacement)
+{
+ Uint16 first = *begin++;
+
+ // If it's a surrogate pair, first convert to a single UTF-32 character
+ if ((first >= 0xD800) && (first <= 0xDBFF))
+ {
+ if (begin < end)
+ {
+ Uint32 second = *begin++;
+ if ((second >= 0xDC00) && (second <= 0xDFFF))
+ {
+ // The second element is valid: convert the two elements to a UTF-32 character
+ output = static_cast<Uint32>(((first - 0xD800) << 10) + (second - 0xDC00) + 0x0010000);
+ }
+ else
+ {
+ // Invalid character
+ output = replacement;
+ }
+ }
+ else
+ {
+ // Invalid character
+ begin = end;
+ output = replacement;
+ }
+ }
+ else
+ {
+ // We can make a direct copy
+ output = first;
+ }
+
+ return begin;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename Out>
+Out Utf<16>::encode(Uint32 input, Out output, Uint16 replacement)
+{
+ if (input < 0xFFFF)
+ {
+ // The character can be copied directly, we just need to check if it's in the valid range
+ if ((input >= 0xD800) && (input <= 0xDFFF))
+ {
+ // Invalid character (this range is reserved)
+ if (replacement)
+ *output++ = replacement;
+ }
+ else
+ {
+ // Valid character directly convertible to a single UTF-16 character
+ *output++ = static_cast<Uint16>(input);
+ }
+ }
+ else if (input > 0x0010FFFF)
+ {
+ // Invalid character (greater than the maximum unicode value)
+ if (replacement)
+ *output++ = replacement;
+ }
+ else
+ {
+ // The input character will be converted to two UTF-16 elements
+ input -= 0x0010000;
+ *output++ = static_cast<Uint16>((input >> 10) + 0xD800);
+ *output++ = static_cast<Uint16>((input & 0x3FFUL) + 0xDC00);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<16>::next(In begin, In end)
+{
+ Uint32 codepoint;
+ return decode(begin, end, codepoint);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+std::size_t Utf<16>::count(In begin, In end)
+{
+ std::size_t length = 0;
+ while (begin < end)
+ {
+ begin = next(begin, end);
+ ++length;
+ }
+
+ return length;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::fromAnsi(In begin, In end, Out output, const std::locale& locale)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint = Utf<32>::decodeAnsi(*begin++, locale);
+ output = encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::fromWide(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint = Utf<32>::decodeWide(*begin++);
+ output = encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::fromLatin1(In begin, In end, Out output)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ return std::copy(begin, end, output);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<32>::encodeAnsi(codepoint, output, replacement, locale);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toWide(In begin, In end, Out output, wchar_t replacement)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<32>::encodeWide(codepoint, output, replacement);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toLatin1(In begin, In end, Out output, char replacement)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ while (begin < end)
+ {
+ *output++ = *begin < 256 ? static_cast<char>(*begin) : replacement;
+ begin++;
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toUtf8(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ output = Utf<8>::encode(codepoint, output);
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toUtf16(In begin, In end, Out output)
+{
+ return std::copy(begin, end, output);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<16>::toUtf32(In begin, In end, Out output)
+{
+ while (begin < end)
+ {
+ Uint32 codepoint;
+ begin = decode(begin, end, codepoint);
+ *output++ = codepoint;
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<32>::decode(In begin, In /*end*/, Uint32& output, Uint32 /*replacement*/)
+{
+ output = *begin++;
+ return begin;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename Out>
+Out Utf<32>::encode(Uint32 input, Out output, Uint32 /*replacement*/)
+{
+ *output++ = input;
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+In Utf<32>::next(In begin, In /*end*/)
+{
+ return ++begin;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+std::size_t Utf<32>::count(In begin, In end)
+{
+ return begin - end;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::fromAnsi(In begin, In end, Out output, const std::locale& locale)
+{
+ while (begin < end)
+ *output++ = decodeAnsi(*begin++, locale);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::fromWide(In begin, In end, Out output)
+{
+ while (begin < end)
+ *output++ = decodeWide(*begin++);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::fromLatin1(In begin, In end, Out output)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ return std::copy(begin, end, output);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale)
+{
+ while (begin < end)
+ output = encodeAnsi(*begin++, output, replacement, locale);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toWide(In begin, In end, Out output, wchar_t replacement)
+{
+ while (begin < end)
+ output = encodeWide(*begin++, output, replacement);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toLatin1(In begin, In end, Out output, char replacement)
+{
+ // Latin-1 is directly compatible with Unicode encodings,
+ // and can thus be treated as (a sub-range of) UTF-32
+ while (begin < end)
+ {
+ *output++ = *begin < 256 ? static_cast<char>(*begin) : replacement;
+ begin++;
+ }
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toUtf8(In begin, In end, Out output)
+{
+ while (begin < end)
+ output = Utf<8>::encode(*begin++, output);
+
+ return output;
+}
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toUtf16(In begin, In end, Out output)
+{
+ while (begin < end)
+ output = Utf<16>::encode(*begin++, output);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In, typename Out>
+Out Utf<32>::toUtf32(In begin, In end, Out output)
+{
+ return std::copy(begin, end, output);
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+Uint32 Utf<32>::decodeAnsi(In input, const std::locale& locale)
+{
+ // On Windows, gcc's standard library (glibc++) has almost
+ // no support for Unicode stuff. As a consequence, in this
+ // context we can only use the default locale and ignore
+ // the one passed as parameter.
+
+ #if defined(SFML_SYSTEM_WINDOWS) && /* if Windows ... */ \
+ (defined(__GLIBCPP__) || defined (__GLIBCXX__)) && /* ... and standard library is glibc++ ... */ \
+ !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */
+
+ (void)locale; // to avoid warnings
+
+ wchar_t character = 0;
+ mbtowc(&character, &input, 1);
+ return static_cast<Uint32>(character);
+
+ #else
+
+ // Get the facet of the locale which deals with character conversion
+ const std::ctype<wchar_t>& facet = std::use_facet< std::ctype<wchar_t> >(locale);
+
+ // Use the facet to convert each character of the input string
+ return static_cast<Uint32>(facet.widen(input));
+
+ #endif
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename In>
+Uint32 Utf<32>::decodeWide(In input)
+{
+ // The encoding of wide characters is not well defined and is left to the system;
+ // however we can safely assume that it is UCS-2 on Windows and
+ // UCS-4 on Unix systems.
+ // In both cases, a simple copy is enough (UCS-2 is a subset of UCS-4,
+ // and UCS-4 *is* UTF-32).
+
+ return input;
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename Out>
+Out Utf<32>::encodeAnsi(Uint32 codepoint, Out output, char replacement, const std::locale& locale)
+{
+ // On Windows, gcc's standard library (glibc++) has almost
+ // no support for Unicode stuff. As a consequence, in this
+ // context we can only use the default locale and ignore
+ // the one passed as parameter.
+
+ #if defined(SFML_SYSTEM_WINDOWS) && /* if Windows ... */ \
+ (defined(__GLIBCPP__) || defined (__GLIBCXX__)) && /* ... and standard library is glibc++ ... */ \
+ !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */
+
+ (void)locale; // to avoid warnings
+
+ char character = 0;
+ if (wctomb(&character, static_cast<wchar_t>(codepoint)) >= 0)
+ *output++ = character;
+ else if (replacement)
+ *output++ = replacement;
+
+ return output;
+
+ #else
+
+ // Get the facet of the locale which deals with character conversion
+ const std::ctype<wchar_t>& facet = std::use_facet< std::ctype<wchar_t> >(locale);
+
+ // Use the facet to convert each character of the input string
+ *output++ = facet.narrow(static_cast<wchar_t>(codepoint), replacement);
+
+ return output;
+
+ #endif
+}
+
+
+////////////////////////////////////////////////////////////
+template <typename Out>
+Out Utf<32>::encodeWide(Uint32 codepoint, Out output, wchar_t replacement)
+{
+ // The encoding of wide characters is not well defined and is left to the system;
+ // however we can safely assume that it is UCS-2 on Windows and
+ // UCS-4 on Unix systems.
+ // For UCS-2 we need to check if the source characters fits in (UCS-2 is a subset of UCS-4).
+ // For UCS-4 we can do a direct copy (UCS-4 *is* UTF-32).
+
+ switch (sizeof(wchar_t))
+ {
+ case 4:
+ {
+ *output++ = static_cast<wchar_t>(codepoint);
+ break;
+ }
+
+ default:
+ {
+ if ((codepoint <= 0xFFFF) && ((codepoint < 0xD800) || (codepoint > 0xDFFF)))
+ {
+ *output++ = static_cast<wchar_t>(codepoint);
+ }
+ else if (replacement)
+ {
+ *output++ = replacement;
+ }
+ break;
+ }
+ }
+
+ return output;
+}
diff --git a/include/SFML/System/Vector2.hpp b/include/SFML/System/Vector2.hpp
index 0a5267c..5c3bb64 100755..100644
--- a/include/SFML/System/Vector2.hpp
+++ b/include/SFML/System/Vector2.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,9 +29,9 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// Vector2 is an utility class for manipulating 2 dimensional
-/// vectors. Template parameter defines the type of coordinates
-/// (integer, float, ...)
+/// \brief Utility template class for manipulating
+/// 2-dimensional vectors
+///
////////////////////////////////////////////////////////////
template <typename T>
class Vector2
@@ -39,21 +39,37 @@ class Vector2
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates a Vector2(0, 0).
///
////////////////////////////////////////////////////////////
Vector2();
////////////////////////////////////////////////////////////
- /// Construct the vector from its coordinates
+ /// \brief Construct the vector from its coordinates
///
- /// \param X : X coordinate
- /// \param Y : Y coordinate
+ /// \param X X coordinate
+ /// \param Y Y coordinate
///
////////////////////////////////////////////////////////////
Vector2(T X, T Y);
////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param vector Vector to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename U>
+ explicit Vector2(const Vector2<U>& vector);
+
+ ////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
T x; ///< X coordinate of the vector
@@ -61,155 +77,225 @@ public :
};
////////////////////////////////////////////////////////////
-/// Operator - overload ; returns the opposite of a vector
+/// \relates Vector2
+/// \brief Overload of unary operator -
///
-/// \param V : Vector to negate
+/// \param right Vector to negate
///
-/// \return -V
+/// \return Memberwise opposite of the vector
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator -(const Vector2<T>& V);
+Vector2<T> operator -(const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator += overload ; add two vectors and assign to the first op
+/// \relates Vector2
+/// \brief Overload of binary operator +=
+///
+/// This operator performs a memberwise addition of both vectors,
+/// and assigns the result to \a left.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 + V2
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator +=(Vector2<T>& V1, const Vector2<T>& V2);
+Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator -= overload ; subtract two vectors and assign to the first op
+/// \relates Vector2
+/// \brief Overload of binary operator -=
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// This operator performs a memberwise subtraction of both vectors,
+/// and assigns the result to \a left.
///
-/// \return V1 - V2
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
+///
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator -=(Vector2<T>& V1, const Vector2<T>& V2);
+Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator + overload ; adds two vectors
+/// \relates Vector2
+/// \brief Overload of binary operator +
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 + V2
+/// \return Memberwise addition of both vectors
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator +(const Vector2<T>& V1, const Vector2<T>& V2);
+Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator - overload ; subtracts two vectors
+/// \relates Vector2
+/// \brief Overload of binary operator -
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 - V2
+/// \return Memberwise subtraction of both vectors
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator -(const Vector2<T>& V1, const Vector2<T>& V2);
+Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a vector by a scalar value
+/// \relates Vector2
+/// \brief Overload of binary operator *
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V * X
+/// \return Memberwise multiplication by \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator *(const Vector2<T>& V, T X);
+Vector2<T> operator *(const Vector2<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a scalar value by a vector
+/// \relates Vector2
+/// \brief Overload of binary operator *
///
-/// \param X : Scalar value
-/// \param V : Vector
+/// \param left Left operand (a scalar value)
+/// \param right Right operand (a vector)
///
-/// \return X * V
+/// \return Memberwise multiplication by \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator *(T X, const Vector2<T>& V);
+Vector2<T> operator *(T left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator *= overload ; multiply-assign a vector by a scalar value
+/// \relates Vector2
+/// \brief Overload of binary operator *=
+///
+/// This operator performs a memberwise multiplication by \a right,
+/// and assigns the result to \a left.
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V * X
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator *=(Vector2<T>& V, T X);
+Vector2<T>& operator *=(Vector2<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator / overload ; divide a vector by a scalar value
+/// \relates Vector2
+/// \brief Overload of binary operator /
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V / X
+/// \return Memberwise division by \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator /(const Vector2<T>& V, T X);
+Vector2<T> operator /(const Vector2<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator /= overload ; divide-assign a vector by a scalar value
+/// \relates Vector2
+/// \brief Overload of binary operator /=
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// This operator performs a memberwise division by \a right,
+/// and assigns the result to \a left.
///
-/// \return V / X
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
+///
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator /=(Vector2<T>& V, T X);
+Vector2<T>& operator /=(Vector2<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator == overload ; compares the equality of two vectors
+/// \relates Vector2
+/// \brief Overload of binary operator ==
+///
+/// This operator compares strict equality between two vectors.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return True if V1 is equal to V2
+/// \return True if \a left is equal to \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-bool operator ==(const Vector2<T>& V1, const Vector2<T>& V2);
+bool operator ==(const Vector2<T>& left, const Vector2<T>& right);
////////////////////////////////////////////////////////////
-/// Operator != overload ; compares the difference of two vectors
+/// \relates Vector2
+/// \brief Overload of binary operator !=
+///
+/// This operator compares strict difference between two vectors.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return True if V1 is different than V2
+/// \return True if \a left is not equal to \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-bool operator !=(const Vector2<T>& V1, const Vector2<T>& V2);
+bool operator !=(const Vector2<T>& left, const Vector2<T>& right);
#include <SFML/System/Vector2.inl>
// Define the most common types
-typedef Vector2<int> Vector2i;
-typedef Vector2<float> Vector2f;
+typedef Vector2<int> Vector2i;
+typedef Vector2<unsigned int> Vector2u;
+typedef Vector2<float> Vector2f;
} // namespace sf
#endif // SFML_VECTOR2_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Vector2
+/// \ingroup system
+///
+/// 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:
+/// \li sf::Vector2<float> is sf::Vector2f
+/// \li sf::Vector2<int> is sf::Vector2i
+/// \li 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's no accessor like setX(), getX()) and it
+/// contains no mathematical function like dot product, cross product, length, etc.
+///
+/// Usage example:
+/// \code
+/// sf::Vector2f v1(16.5f, 24.f);
+/// v1.x = 18.2f;
+/// float y = v1.y;
+///
+/// sf::Vector2f v2 = v1 * 5.f;
+/// sf::Vector2f v3;
+/// v3 = v1 + v2;
+///
+/// bool different = (v2 != v3);
+/// \endcode
+///
+/// Note: for 3-dimensional vectors, see sf::Vector3.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Vector2.inl b/include/SFML/System/Vector2.inl
index febd493..e1a87ae 100755..100644
--- a/include/SFML/System/Vector2.inl
+++ b/include/SFML/System/Vector2.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -24,10 +24,8 @@
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>::Vector2() :
+inline Vector2<T>::Vector2() :
x(0),
y(0)
{
@@ -36,10 +34,8 @@ y(0)
////////////////////////////////////////////////////////////
-/// Construct the color from its coordinates
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>::Vector2(T X, T Y) :
+inline Vector2<T>::Vector2(T X, T Y) :
x(X),
y(Y)
{
@@ -48,132 +44,118 @@ y(Y)
////////////////////////////////////////////////////////////
-/// Operator - overload ; returns the opposite of a vector
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator -(const Vector2<T>& V)
+template <typename U>
+inline Vector2<T>::Vector2(const Vector2<U>& vector) :
+x(static_cast<T>(vector.x)),
+y(static_cast<T>(vector.y))
{
- return Vector2<T>(-V.x, -V.y);
}
////////////////////////////////////////////////////////////
-/// Operator += overload ; add two vectors and assign to the first op
+template <typename T>
+inline Vector2<T> operator -(const Vector2<T>& right)
+{
+ return Vector2<T>(-right.x, -right.y);
+}
+
+
////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator +=(Vector2<T>& V1, const Vector2<T>& V2)
+inline Vector2<T>& operator +=(Vector2<T>& left, const Vector2<T>& right)
{
- V1.x += V2.x;
- V1.y += V2.y;
+ left.x += right.x;
+ left.y += right.y;
- return V1;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator -= overload ; subtract two vectors and assign to the first op
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator -=(Vector2<T>& V1, const Vector2<T>& V2)
+inline Vector2<T>& operator -=(Vector2<T>& left, const Vector2<T>& right)
{
- V1.x -= V2.x;
- V1.y -= V2.y;
+ left.x -= right.x;
+ left.y -= right.y;
- return V1;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator + overload ; adds two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator +(const Vector2<T>& V1, const Vector2<T>& V2)
+inline Vector2<T> operator +(const Vector2<T>& left, const Vector2<T>& right)
{
- return Vector2<T>(V1.x + V2.x, V1.y + V2.y);
+ return Vector2<T>(left.x + right.x, left.y + right.y);
}
////////////////////////////////////////////////////////////
-/// Operator - overload ; subtracts two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator -(const Vector2<T>& V1, const Vector2<T>& V2)
+inline Vector2<T> operator -(const Vector2<T>& left, const Vector2<T>& right)
{
- return Vector2<T>(V1.x - V2.x, V1.y - V2.y);
+ return Vector2<T>(left.x - right.x, left.y - right.y);
}
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator *(const Vector2<T>& V, T X)
+inline Vector2<T> operator *(const Vector2<T>& left, T right)
{
- return Vector2<T>(V.x * X, V.y * X);
+ return Vector2<T>(left.x * right, left.y * right);
}
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a scalar value by a vector
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator *(T X, const Vector2<T>& V)
+inline Vector2<T> operator *(T left, const Vector2<T>& right)
{
- return Vector2<T>(V.x * X, V.y * X);
+ return Vector2<T>(right.x * left, right.y * left);
}
////////////////////////////////////////////////////////////
-/// Operator *= overload ; multiply-assign a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator *=(Vector2<T>& V, T X)
+inline Vector2<T>& operator *=(Vector2<T>& left, T right)
{
- V.x *= X;
- V.y *= X;
+ left.x *= right;
+ left.y *= right;
- return V;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator / overload ; divide a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T> operator /(const Vector2<T>& V, T X)
+inline Vector2<T> operator /(const Vector2<T>& left, T right)
{
- return Vector2<T>(V.x / X, V.y / X);
+ return Vector2<T>(left.x / right, left.y / right);
}
////////////////////////////////////////////////////////////
-/// Operator /= overload ; divide-assign a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector2<T>& operator /=(Vector2<T>& V, T X)
+inline Vector2<T>& operator /=(Vector2<T>& left, T right)
{
- V.x /= X;
- V.y /= X;
+ left.x /= right;
+ left.y /= right;
- return V;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator == overload ; compares the equality of two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-bool operator ==(const Vector2<T>& V1, const Vector2<T>& V2)
+inline bool operator ==(const Vector2<T>& left, const Vector2<T>& right)
{
- return (V1.x == V2.x) && (V1.y == V2.y);
+ return (left.x == right.x) && (left.y == right.y);
}
////////////////////////////////////////////////////////////
-/// Operator != overload ; compares the difference of two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-bool operator !=(const Vector2<T>& V1, const Vector2<T>& V2)
+inline bool operator !=(const Vector2<T>& left, const Vector2<T>& right)
{
- return (V1.x != V2.x) || (V1.y != V2.y);
+ return (left.x != right.x) || (left.y != right.y);
}
diff --git a/include/SFML/System/Vector3.hpp b/include/SFML/System/Vector3.hpp
index 6ab4b84..76a26cb 100755..100644
--- a/include/SFML/System/Vector3.hpp
+++ b/include/SFML/System/Vector3.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,9 +29,9 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// Vector3 is an utility class for manipulating 3 dimensional
-/// vectors. Template parameter defines the type of coordinates
-/// (integer, float, ...)
+/// \brief Utility template class for manipulating
+/// 3-dimensional vectors
+///
////////////////////////////////////////////////////////////
template <typename T>
class Vector3
@@ -39,22 +39,38 @@ class Vector3
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// Creates a Vector3(0, 0, 0).
///
////////////////////////////////////////////////////////////
Vector3();
////////////////////////////////////////////////////////////
- /// Construct the vector from its coordinates
+ /// \brief Construct the vector from its coordinates
///
- /// \param X : X coordinate
- /// \param Y : Y coordinate
- /// \param Z : Z coordinate
+ /// \param X X coordinate
+ /// \param Y Y coordinate
+ /// \param Z Z coordinate
///
////////////////////////////////////////////////////////////
Vector3(T X, T Y, T Z);
////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param vector Vector to convert
+ ///
+ ////////////////////////////////////////////////////////////
+ template <typename U>
+ explicit Vector3(const Vector3<U>& vector);
+
+ ////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
T x; ///< X coordinate of the vector
@@ -63,147 +79,175 @@ public :
};
////////////////////////////////////////////////////////////
-/// Operator - overload ; returns the opposite of a vector
+/// \relates Vector3
+/// \brief Overload of unary operator -
///
-/// \param V : Vector to negate
+/// \param left Vector to negate
///
-/// \return -V
+/// \return Memberwise opposite of the vector
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator -(const Vector3<T>& V);
+Vector3<T> operator -(const Vector3<T>& left);
////////////////////////////////////////////////////////////
-/// Operator += overload ; add two vectors and assign to the first op
+/// \relates Vector3
+/// \brief Overload of binary operator +=
+///
+/// This operator performs a memberwise addition of both vectors,
+/// and assigns the result to \a left.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 + V2
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator +=(Vector3<T>& V1, const Vector3<T>& V2);
+Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator -= overload ; subtract two vectors and assign to the first op
+/// \relates Vector3
+/// \brief Overload of binary operator -=
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// This operator performs a memberwise subtraction of both vectors,
+/// and assigns the result to \a left.
///
-/// \return V1 - V2
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
+///
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator -=(Vector3<T>& V1, const Vector3<T>& V2);
+Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator + overload ; adds two vectors
+/// \relates Vector3
+/// \brief Overload of binary operator +
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 + V2
+/// \return Memberwise addition of both vectors
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator +(const Vector3<T>& V1, const Vector3<T>& V2);
+Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator - overload ; subtracts two vectors
+/// \relates Vector3
+/// \brief Overload of binary operator -
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return V1 - V2
+/// \return Memberwise subtraction of both vectors
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator -(const Vector3<T>& V1, const Vector3<T>& V2);
+Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a vector by a scalar value
+/// \relates Vector3
+/// \brief Overload of binary operator *
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V * X
+/// \return Memberwise multiplication by \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator *(const Vector3<T>& V, T X);
+Vector3<T> operator *(const Vector3<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a scalar value by a vector
+/// \relates Vector3
+/// \brief Overload of binary operator *
///
-/// \param X : Scalar value
-/// \param V : Vector
+/// \param left Left operand (a scalar value)
+/// \param right Right operand (a vector)
///
-/// \return X * V
+/// \return Memberwise multiplication by \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator *(T X, const Vector3<T>& V);
+Vector3<T> operator *(T left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator *= overload ; multiply-assign a vector by a scalar value
+/// \relates Vector3
+/// \brief Overload of binary operator *=
+///
+/// This operator performs a memberwise multiplication by \a right,
+/// and assigns the result to \a left.
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V * X
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator *=(Vector3<T>& V, T X);
+Vector3<T>& operator *=(Vector3<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator / overload ; divide a vector by a scalar value
+/// \relates Vector3
+/// \brief Overload of binary operator /
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
///
-/// \return V / X
+/// \return Memberwise division by \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator /(const Vector3<T>& V, T X);
+Vector3<T> operator /(const Vector3<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator /= overload ; divide-assign a vector by a scalar value
+/// \relates Vector3
+/// \brief Overload of binary operator /=
///
-/// \param V : Vector
-/// \param X : Scalar value
+/// This operator performs a memberwise division by \a right,
+/// and assigns the result to \a left.
///
-/// \return V / X
+/// \param left Left operand (a vector)
+/// \param right Right operand (a scalar value)
+///
+/// \return Reference to \a left
///
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator /=(Vector3<T>& V, T X);
+Vector3<T>& operator /=(Vector3<T>& left, T right);
////////////////////////////////////////////////////////////
-/// Operator == overload ; compares the equality of two vectors
+/// \relates Vector3
+/// \brief Overload of binary operator ==
+///
+/// This operator compares strict equality between two vectors.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return True if V1 is equal to V2
+/// \return True if \a left is equal to \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-bool operator ==(const Vector3<T>& V1, const Vector3<T>& V2);
+bool operator ==(const Vector3<T>& left, const Vector3<T>& right);
////////////////////////////////////////////////////////////
-/// Operator != overload ; compares the difference of two vectors
+/// \relates Vector3
+/// \brief Overload of binary operator !=
+///
+/// This operator compares strict difference between two vectors.
///
-/// \param V1 : First vector
-/// \param V2 : Second vector
+/// \param left Left operand (a vector)
+/// \param right Right operand (a vector)
///
-/// \return True if V1 is different than V2
+/// \return True if \a left is not equal to \a right
///
////////////////////////////////////////////////////////////
template <typename T>
-bool operator !=(const Vector3<T>& V1, const Vector3<T>& V2);
+bool operator !=(const Vector3<T>& left, const Vector3<T>& right);
#include <SFML/System/Vector3.inl>
@@ -215,3 +259,44 @@ typedef Vector3<float> Vector3f;
#endif // SFML_VECTOR3_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Vector3
+/// \ingroup system
+///
+/// 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:
+/// \li sf::Vector3<float> is sf::Vector3f
+/// \li 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's no accessor like setX(), getX()) and it
+/// contains no mathematical function like dot product, cross product, length, etc.
+///
+/// Usage example:
+/// \code
+/// 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;
+/// sf::Vector3f v3;
+/// v3 = v1 + v2;
+///
+/// bool different = (v2 != v3);
+/// \endcode
+///
+/// Note: for 2-dimensional vectors, see sf::Vector2.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/System/Vector3.inl b/include/SFML/System/Vector3.inl
index 8594601..cff1a30 100755..100644
--- a/include/SFML/System/Vector3.inl
+++ b/include/SFML/System/Vector3.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2012 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -24,10 +24,8 @@
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>::Vector3() :
+inline Vector3<T>::Vector3() :
x(0),
y(0),
z(0)
@@ -37,10 +35,8 @@ z(0)
////////////////////////////////////////////////////////////
-/// Construct the color from its coordinates
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>::Vector3(T X, T Y, T Z) :
+inline Vector3<T>::Vector3(T X, T Y, T Z) :
x(X),
y(Y),
z(Z)
@@ -50,136 +46,123 @@ z(Z)
////////////////////////////////////////////////////////////
-/// Operator - overload ; returns the opposite of a vector
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator -(const Vector3<T>& V)
+template <typename U>
+inline Vector3<T>::Vector3(const Vector3<U>& vector) :
+x(static_cast<T>(vector.x)),
+y(static_cast<T>(vector.y)),
+z(static_cast<T>(vector.z))
{
- return Vector3<T>(-V.x, -V.y, -V.z);
}
////////////////////////////////////////////////////////////
-/// Operator += overload ; add two vectors and assign to the first op
+template <typename T>
+inline Vector3<T> operator -(const Vector3<T>& left)
+{
+ return Vector3<T>(-left.x, -left.y, -left.z);
+}
+
+
////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator +=(Vector3<T>& V1, const Vector3<T>& V2)
+inline Vector3<T>& operator +=(Vector3<T>& left, const Vector3<T>& right)
{
- V1.x += V2.x;
- V1.y += V2.y;
- V1.z += V2.z;
+ left.x += right.x;
+ left.y += right.y;
+ left.z += right.z;
- return V1;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator -= overload ; subtract two vectors and assign to the first op
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator -=(Vector3<T>& V1, const Vector3<T>& V2)
+inline Vector3<T>& operator -=(Vector3<T>& left, const Vector3<T>& right)
{
- V1.x -= V2.x;
- V1.y -= V2.y;
- V1.z -= V2.z;
+ left.x -= right.x;
+ left.y -= right.y;
+ left.z -= right.z;
- return V1;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator + overload ; adds two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator +(const Vector3<T>& V1, const Vector3<T>& V2)
+inline Vector3<T> operator +(const Vector3<T>& left, const Vector3<T>& right)
{
- return Vector3<T>(V1.x + V2.x, V1.y + V2.y, V1.z + V2.z);
+ return Vector3<T>(left.x + right.x, left.y + right.y, left.z + right.z);
}
////////////////////////////////////////////////////////////
-/// Operator - overload ; subtracts two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator -(const Vector3<T>& V1, const Vector3<T>& V2)
+inline Vector3<T> operator -(const Vector3<T>& left, const Vector3<T>& right)
{
- return Vector3<T>(V1.x - V2.x, V1.y - V2.y, V1.z - V2.z);
+ return Vector3<T>(left.x - right.x, left.y - right.y, left.z - right.z);
}
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator *(const Vector3<T>& V, T X)
+inline Vector3<T> operator *(const Vector3<T>& left, T right)
{
- return Vector3<T>(V.x * X, V.y * X, V.z * X);
+ return Vector3<T>(left.x * right, left.y * right, left.z * right);
}
////////////////////////////////////////////////////////////
-/// Operator * overload ; multiply a scalar value by a vector
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator *(T X, const Vector3<T>& V)
+inline Vector3<T> operator *(T left, const Vector3<T>& right)
{
- return Vector3<T>(V.x * X, V.y * X, V.z * X);
+ return Vector3<T>(right.x * left, right.y * left, right.z * left);
}
////////////////////////////////////////////////////////////
-/// Operator *= overload ; multiply-assign a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator *=(Vector3<T>& V, T X)
+inline Vector3<T>& operator *=(Vector3<T>& left, T right)
{
- V.x *= X;
- V.y *= X;
- V.z *= X;
+ left.x *= right;
+ left.y *= right;
+ left.z *= right;
- return V;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator / overload ; divide a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T> operator /(const Vector3<T>& V, T X)
+inline Vector3<T> operator /(const Vector3<T>& left, T right)
{
- return Vector3<T>(V.x / X, V.y / X, V.z / X);
+ return Vector3<T>(left.x / right, left.y / right, left.z / right);
}
////////////////////////////////////////////////////////////
-/// Operator /= overload ; divide-assign a vector by a scalar value
-////////////////////////////////////////////////////////////
template <typename T>
-Vector3<T>& operator /=(Vector3<T>& V, T X)
+inline Vector3<T>& operator /=(Vector3<T>& left, T right)
{
- V.x /= X;
- V.y /= X;
- V.z /= X;
+ left.x /= right;
+ left.y /= right;
+ left.z /= right;
- return V;
+ return left;
}
////////////////////////////////////////////////////////////
-/// Operator == overload ; compares the equality of two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-bool operator ==(const Vector3<T>& V1, const Vector3<T>& V2)
+inline bool operator ==(const Vector3<T>& left, const Vector3<T>& right)
{
- return (V1.x == V2.x) && (V1.y == V2.y) && (V1.z == V2.z);
+ return (left.x == right.x) && (left.y == right.y) && (left.z == right.z);
}
////////////////////////////////////////////////////////////
-/// Operator != overload ; compares the difference of two vectors
-////////////////////////////////////////////////////////////
template <typename T>
-bool operator !=(const Vector3<T>& V1, const Vector3<T>& V2)
+inline bool operator !=(const Vector3<T>& left, const Vector3<T>& right)
{
- return (V1.x != V2.x) || (V1.y != V2.y) || (V1.z != V2.z);
+ return (left.x != right.x) || (left.y != right.y) || (left.z != right.z);
}
diff --git a/include/SFML/Window.hpp b/include/SFML/Window.hpp
index 3a516a0..5d51134 100755..100644
--- a/include/SFML/Window.hpp
+++ b/include/SFML/Window.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -31,13 +31,22 @@
#include <SFML/System.hpp>
#include <SFML/Window/Context.hpp>
+#include <SFML/Window/ContextSettings.hpp>
#include <SFML/Window/Event.hpp>
-#include <SFML/Window/Input.hpp>
+#include <SFML/Window/Joystick.hpp>
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
#include <SFML/Window/VideoMode.hpp>
#include <SFML/Window/Window.hpp>
-#include <SFML/Window/WindowListener.hpp>
#include <SFML/Window/WindowStyle.hpp>
-#include <SFML/Window/OpenGL.hpp>
#endif // SFML_SFML_WINDOW_HPP
+
+////////////////////////////////////////////////////////////
+/// \defgroup window Window module
+///
+/// Provides OpenGL-based windows, and abstractions for
+/// events and input handling.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Context.hpp b/include/SFML/Window/Context.hpp
index fede21c..5f67164 100755..100644
--- a/include/SFML/Window/Context.hpp
+++ b/include/SFML/Window/Context.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,7 +28,9 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Window/Export.hpp>
+#include <SFML/Window/GlResource.hpp>
+#include <SFML/Window/ContextSettings.hpp>
#include <SFML/System/NonCopyable.hpp>
@@ -36,65 +38,103 @@ namespace sf
{
namespace priv
{
- class WindowImpl;
+ class GlContext;
}
////////////////////////////////////////////////////////////
-/// Class wrapping an OpenGL context.
-/// All SFML windows already have their own context, so
-/// this class is more a helper for specific issues involving
-/// OpenGL and multi-threading.
-/// It's meant to be used internally.
+/// \brief Class holding a valid drawing context
+///
////////////////////////////////////////////////////////////
-class SFML_API Context : NonCopyable
+class SFML_WINDOW_API Context : GlResource, NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor, create the context
+ /// \brief Default constructor
+ ///
+ /// The constructor creates and activates the context
///
////////////////////////////////////////////////////////////
Context();
////////////////////////////////////////////////////////////
- /// Destructor, destroy the context
+ /// \brief Destructor
+ ///
+ /// The desctructor deactivates and destroys the context
///
////////////////////////////////////////////////////////////
~Context();
////////////////////////////////////////////////////////////
- /// Activate or deactivate the context
- ///
- /// \param Active : True to activate the context, false to deactivate it
+ /// \brief Activate or deactivate explicitely the context
///
- ////////////////////////////////////////////////////////////
- void SetActive(bool Active);
-
- ////////////////////////////////////////////////////////////
- /// Check if there's a context bound to the current thread
+ /// \param active True to activate, false to deactivate
///
- /// \return True if there's a context bound to the current thread
+ /// \return True on success, false on failure
///
////////////////////////////////////////////////////////////
- static bool IsContextActive();
+ bool setActive(bool active);
+
+public :
////////////////////////////////////////////////////////////
- /// Get the global context
+ /// \brief Construct a in-memory context
+ ///
+ /// This constructor is for internal use, you don't need
+ /// to bother with it.
///
- /// \return Reference to the global context
+ /// \param settings Creation parameters
+ /// \param width Back buffer width
+ /// \param height Back buffer height
///
////////////////////////////////////////////////////////////
- static Context& GetGlobal();
+ Context(const ContextSettings& settings, unsigned int width, unsigned int height);
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- priv::WindowImpl* myDummyWindow; ///< Dummy window holding the context
+ priv::GlContext* m_context; ///< Internal OpenGL context
};
} // namespace sf
#endif // SFML_CONTEXT_HPP
+
+////////////////////////////////////////////////////////////
+/// \class sf::Context
+/// \ingroup window
+///
+/// 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:
+/// \code
+/// 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
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/ContextSettings.hpp b/include/SFML/Window/ContextSettings.hpp
new file mode 100644
index 0000000..1bd2b3e
--- /dev/null
+++ b/include/SFML/Window/ContextSettings.hpp
@@ -0,0 +1,104 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CONTEXTSETTINGS_HPP
+#define SFML_CONTEXTSETTINGS_HPP
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Structure defining the settings of the OpenGL
+/// context attached to a window
+///
+////////////////////////////////////////////////////////////
+struct ContextSettings
+{
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// \param depth Depth buffer bits
+ /// \param stencil Stencil buffer bits
+ /// \param antialiasing Antialiasing level
+ /// \param major Major number of the context version
+ /// \param minor Minor number of the context version
+ ///
+ ////////////////////////////////////////////////////////////
+ explicit ContextSettings(unsigned int depth = 0, unsigned int stencil = 0, unsigned int antialiasing = 0, unsigned int major = 2, unsigned int minor = 0) :
+ depthBits (depth),
+ stencilBits (stencil),
+ antialiasingLevel(antialiasing),
+ majorVersion (major),
+ minorVersion (minor)
+ {
+ }
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ unsigned int depthBits; ///< Bits of the depth buffer
+ unsigned int stencilBits; ///< Bits of the stencil buffer
+ unsigned int antialiasingLevel; ///< Level of antialiasing
+ unsigned int majorVersion; ///< Major number of the context version to create
+ unsigned int minorVersion; ///< Minor number of the context version to create
+};
+
+} // namespace sf
+
+
+#endif // SFML_CONTEXTSETTINGS_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::ContextSettings
+/// \ingroup window
+///
+/// ContextSettings allows to define several advanced settings
+/// of the OpenGL context attached to a window. All these
+/// settings have no impact on the regular SFML rendering
+/// (graphics module) -- except the anti-aliasing level, so
+/// you may need to use this structure only if you're using
+/// SFML as a windowing system for custom OpenGL rendering.
+///
+/// The depthBits and stencilBits members define the number
+/// of bits per pixel requested for the (respectively) depth
+/// and stencil buffers.
+///
+/// antialiasingLevel represents the requested number of
+/// multisampling levels for anti-aliasing.
+///
+/// majorVersion and minorVersion define the version of the
+/// OpenGL context that you want. Only versions greater or
+/// equal to 3.0 are relevant; versions lesser than 3.0 are
+/// all handled the same way (i.e. you can use any version
+/// < 3.0 if you don't want an OpenGL 3 context).
+///
+/// Please note that these values are only a hint.
+/// No failure will be reported if one or more of these values
+/// are not supported by the system; instead, SFML will try to
+/// find the closest valid match. You can then retrieve the
+/// settings that the window actually used to create its context,
+/// with Window::getSettings().
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Event.hpp b/include/SFML/Window/Event.hpp
index 35ac575..e86c2bf 100755..100644
--- a/include/SFML/Window/Event.hpp
+++ b/include/SFML/Window/Event.hpp
@@ -1,321 +1,237 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_EVENT_HPP
-#define SFML_EVENT_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Definition of key codes for keyboard events
-////////////////////////////////////////////////////////////
-namespace Key
-{
- enum Code
- {
- A = 'a',
- B = 'b',
- C = 'c',
- D = 'd',
- E = 'e',
- F = 'f',
- G = 'g',
- H = 'h',
- I = 'i',
- J = 'j',
- K = 'k',
- L = 'l',
- M = 'm',
- N = 'n',
- O = 'o',
- P = 'p',
- Q = 'q',
- R = 'r',
- S = 's',
- T = 't',
- U = 'u',
- V = 'v',
- W = 'w',
- X = 'x',
- Y = 'y',
- Z = 'z',
- Num0 = '0',
- Num1 = '1',
- Num2 = '2',
- Num3 = '3',
- Num4 = '4',
- Num5 = '5',
- Num6 = '6',
- Num7 = '7',
- Num8 = '8',
- Num9 = '9',
- Escape = 256,
- LControl,
- LShift,
- LAlt,
- LSystem, ///< OS specific key (left side) : windows (Win and Linux), apple (MacOS), ...
- RControl,
- RShift,
- RAlt,
- RSystem, ///< OS specific key (right side) : windows (Win and Linux), apple (MacOS), ...
- Menu,
- LBracket, ///< [
- RBracket, ///< ]
- SemiColon, ///< ;
- Comma, ///< ,
- Period, ///< .
- Quote, ///< '
- Slash, ///< /
- BackSlash,
- Tilde, ///< ~
- Equal, ///< =
- Dash, ///< -
- Space,
- Return,
- Back,
- Tab,
- PageUp,
- PageDown,
- End,
- Home,
- Insert,
- Delete,
- Add, ///< +
- Subtract, ///< -
- Multiply, ///< *
- Divide, ///< /
- Left, ///< Left arrow
- Right, ///< Right arrow
- Up, ///< Up arrow
- Down, ///< Down arrow
- 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,
-
- Count // Keep last -- total number of keyboard keys
- };
-}
-
-
-////////////////////////////////////////////////////////////
-/// Definition of button codes for mouse events
-////////////////////////////////////////////////////////////
-namespace Mouse
-{
- enum Button
- {
- Left,
- Right,
- Middle,
- XButton1,
- XButton2,
-
- ButtonCount // Keep last -- total number of mouse buttons
- };
-}
-
-
-////////////////////////////////////////////////////////////
-/// Definition of joystick axis for joystick events
-////////////////////////////////////////////////////////////
-namespace Joy
-{
- enum Axis
- {
- AxisX,
- AxisY,
- AxisZ,
- AxisR,
- AxisU,
- AxisV,
- AxisPOV,
-
- AxisCount // Keep last -- total number of joystick axis
- };
-
- enum
- {
- Count = 4, ///< Total number of supported joysticks
- ButtonCount = 32 ///< Total number of supported joystick buttons
- };
-}
-
-
-////////////////////////////////////////////////////////////
-/// Event defines a system event and its parameters
-////////////////////////////////////////////////////////////
-class Event
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Keyboard event parameters
- ////////////////////////////////////////////////////////////
- struct KeyEvent
- {
- Key::Code Code;
- bool Alt;
- bool Control;
- bool Shift;
- };
-
- ////////////////////////////////////////////////////////////
- /// Text event parameters
- ////////////////////////////////////////////////////////////
- struct TextEvent
- {
- Uint32 Unicode;
- };
-
- ////////////////////////////////////////////////////////////
- /// Mouse move event parameters
- ////////////////////////////////////////////////////////////
- struct MouseMoveEvent
- {
- int X;
- int Y;
- };
-
- ////////////////////////////////////////////////////////////
- /// Mouse buttons events parameters
- ////////////////////////////////////////////////////////////
- struct MouseButtonEvent
- {
- Mouse::Button Button;
- int X;
- int Y;
- };
-
- ////////////////////////////////////////////////////////////
- /// Mouse wheel events parameters
- ////////////////////////////////////////////////////////////
- struct MouseWheelEvent
- {
- int Delta;
- };
-
- ////////////////////////////////////////////////////////////
- /// Joystick axis move event parameters
- ////////////////////////////////////////////////////////////
- struct JoyMoveEvent
- {
- unsigned int JoystickId;
- Joy::Axis Axis;
- float Position;
- };
-
- ////////////////////////////////////////////////////////////
- /// Joystick buttons events parameters
- ////////////////////////////////////////////////////////////
- struct JoyButtonEvent
- {
- unsigned int JoystickId;
- unsigned int Button;
- };
-
- ////////////////////////////////////////////////////////////
- /// Size events parameters
- ////////////////////////////////////////////////////////////
- struct SizeEvent
- {
- unsigned int Width;
- unsigned int Height;
- };
-
- ////////////////////////////////////////////////////////////
- /// Enumeration of the different types of events
- ////////////////////////////////////////////////////////////
- enum EventType
- {
- Closed,
- Resized,
- LostFocus,
- GainedFocus,
- TextEntered,
- KeyPressed,
- KeyReleased,
- MouseWheelMoved,
- MouseButtonPressed,
- MouseButtonReleased,
- MouseMoved,
- MouseEntered,
- MouseLeft,
- JoyButtonPressed,
- JoyButtonReleased,
- JoyMoved,
-
- Count // Keep last -- total number of event types
- };
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- EventType Type; ///< Type of the event
-
- union
- {
- KeyEvent Key;
- TextEvent Text;
- MouseMoveEvent MouseMove;
- MouseButtonEvent MouseButton;
- MouseWheelEvent MouseWheel;
- JoyMoveEvent JoyMove;
- JoyButtonEvent JoyButton;
- SizeEvent Size;
- };
-};
-
-} // namespace sf
-
-
-#endif // SFML_EVENT_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_EVENT_HPP
+#define SFML_EVENT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/Window/Joystick.hpp>
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Defines a system event and its parameters
+///
+////////////////////////////////////////////////////////////
+class Event
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Size events parameters (Resized)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct SizeEvent
+ {
+ unsigned int width; ///< New width, in pixels
+ unsigned int height; ///< New height, in pixels
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Keyboard event parameters (KeyPressed, KeyReleased)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct KeyEvent
+ {
+ Keyboard::Key code; ///< Code of the key that has been pressed
+ bool alt; ///< Is the Alt key pressed?
+ bool control; ///< Is the Control key pressed?
+ bool shift; ///< Is the Shift key pressed?
+ bool system; ///< Is the System key pressed?
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Text event parameters (TextEntered)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct TextEvent
+ {
+ Uint32 unicode; ///< UTF-32 unicode value of the character
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse move event parameters (MouseMoved)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct MouseMoveEvent
+ {
+ int x; ///< X position of the mouse pointer, relative to the left of the owner window
+ int y; ///< Y position of the mouse pointer, relative to the top of the owner window
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse buttons events parameters
+ /// (MouseButtonPressed, MouseButtonReleased)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct MouseButtonEvent
+ {
+ Mouse::Button button; ///< Code of the button that has been pressed
+ int x; ///< X position of the mouse pointer, relative to the left of the owner window
+ int y; ///< Y position of the mouse pointer, relative to the top of the owner window
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse wheel events parameters (MouseWheelMoved)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct MouseWheelEvent
+ {
+ int delta; ///< Number of ticks the wheel has moved (positive is up, negative is down)
+ int x; ///< X position of the mouse pointer, relative to the left of the owner window
+ int y; ///< Y position of the mouse pointer, relative to the top of the owner window
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Joystick connection events parameters
+ /// (JoystickConnected, JoystickDisconnected)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct JoystickConnectEvent
+ {
+ unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1])
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Joystick axis move event parameters (JoystickMoved)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct JoystickMoveEvent
+ {
+ unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1])
+ Joystick::Axis axis; ///< Axis on which the joystick moved
+ float position; ///< New position on the axis (in range [-100 .. 100])
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Joystick buttons events parameters
+ /// (JoystickButtonPressed, JoystickButtonReleased)
+ ///
+ ////////////////////////////////////////////////////////////
+ struct JoystickButtonEvent
+ {
+ unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1])
+ unsigned int button; ///< Index of the button that has been pressed (in range [0 .. Joystick::ButtonCount - 1])
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enumeration of the different types of events
+ ///
+ ////////////////////////////////////////////////////////////
+ enum EventType
+ {
+ 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)
+ 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)
+
+ Count ///< Keep last -- the total number of event types
+ };
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ EventType type; ///< Type of the event
+
+ union
+ {
+ SizeEvent size; ///< Size event parameters (Event::Resized)
+ KeyEvent key; ///< Key event parameters (Event::KeyPressed, Event::KeyReleased)
+ TextEvent text; ///< Text event parameters (Event::TextEntered)
+ MouseMoveEvent mouseMove; ///< Mouse move event parameters (Event::MouseMoved)
+ MouseButtonEvent mouseButton; ///< Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased)
+ MouseWheelEvent mouseWheel; ///< Mouse wheel event parameters (Event::MouseWheelMoved)
+ JoystickMoveEvent joystickMove; ///< Joystick move event parameters (Event::JoystickMoved)
+ JoystickButtonEvent joystickButton; ///< Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased)
+ JoystickConnectEvent joystickConnect; ///< Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected)
+ };
+};
+
+} // namespace sf
+
+
+#endif // SFML_EVENT_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Event
+/// \ingroup window
+///
+/// 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:
+/// \code
+/// 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 ...
+/// }
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Export.hpp b/include/SFML/Window/Export.hpp
new file mode 100644
index 0000000..ff06576
--- /dev/null
+++ b/include/SFML/Window/Export.hpp
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_WINDOW_EXPORT_HPP
+#define SFML_WINDOW_EXPORT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+
+
+////////////////////////////////////////////////////////////
+// Define portable import / export macros
+////////////////////////////////////////////////////////////
+#if defined(SFML_WINDOW_EXPORTS)
+
+ #define SFML_WINDOW_API SFML_API_EXPORT
+
+#else
+
+ #define SFML_WINDOW_API SFML_API_IMPORT
+
+#endif
+
+
+#endif // SFML_WINDOW_EXPORT_HPP
diff --git a/include/SFML/Window/WindowListener.hpp b/include/SFML/Window/GlResource.hpp
index e085880..560a637 100755..100644
--- a/include/SFML/Window/WindowListener.hpp
+++ b/include/SFML/Window/GlResource.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,45 +22,55 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_WINDOWLISTENER_HPP
-#define SFML_WINDOWLISTENER_HPP
+#ifndef SFML_GLRESOURCE_HPP
+#define SFML_GLRESOURCE_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
+#include <SFML/Window/Export.hpp>
namespace sf
{
-class Event;
-
////////////////////////////////////////////////////////////
-/// Base class for classes that want to receive events
-/// from a window (for internal use only)
+/// \brief Base class for classes that require an OpenGL context
+///
////////////////////////////////////////////////////////////
-class SFML_API WindowListener
+class SFML_WINDOW_API GlResource
{
-public :
+protected :
////////////////////////////////////////////////////////////
- /// Called each time an event is received from attached window
- ///
- /// \param EventReceived : Event received
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- virtual void OnEvent(const Event& EventReceived) = 0;
+ GlResource();
-protected :
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~GlResource();
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Make sure that a valid OpenGL context exists in the current thread
///
////////////////////////////////////////////////////////////
- virtual ~WindowListener() {}
+ static void ensureGlContext();
};
} // namespace sf
-#endif // SFML_WINDOWLISTENER_HPP
+#endif // SFML_GLRESOURCE_HPP
+
+////////////////////////////////////////////////////////////
+/// \class sf::GlResource
+/// \ingroup window
+///
+/// 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.
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Input.hpp b/include/SFML/Window/Input.hpp
deleted file mode 100755
index e9e9c5e..0000000
--- a/include/SFML/Window/Input.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_INPUT_HPP
-#define SFML_INPUT_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <SFML/System/NonCopyable.hpp>
-#include <SFML/Window/Event.hpp>
-#include <SFML/Window/WindowListener.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Input handles real-time input from keyboard and mouse.
-/// Use it instead of events to handle continuous moves and more
-/// game-friendly inputs
-////////////////////////////////////////////////////////////
-class SFML_API Input : public WindowListener, NonCopyable
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- Input();
-
- ////////////////////////////////////////////////////////////
- /// Get the state of a key
- ///
- /// \param KeyCode : Key to check
- ///
- /// \return True if key is down, false if key is up
- ///
- ////////////////////////////////////////////////////////////
- bool IsKeyDown(Key::Code KeyCode) const;
-
- ////////////////////////////////////////////////////////////
- /// Get the state of a mouse button
- ///
- /// \param Button : Button to check
- ///
- /// \return True if button is down, false if button is up
- ///
- ////////////////////////////////////////////////////////////
- bool IsMouseButtonDown(Mouse::Button Button) const;
-
- ////////////////////////////////////////////////////////////
- /// Get the state of a joystick button
- ///
- /// \param JoyId : Identifier of the joystick to check (0 or 1)
- /// \param Button : Button to check
- ///
- /// \return True if button is down, false if button is up
- ///
- ////////////////////////////////////////////////////////////
- bool IsJoystickButtonDown(unsigned int JoyId, unsigned int Button) const;
-
- ////////////////////////////////////////////////////////////
- /// Get the mouse X position
- ///
- /// \return Current mouse left position, relative to owner window
- ///
- ////////////////////////////////////////////////////////////
- int GetMouseX() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the mouse Y position
- ///
- /// \return Current mouse top position, relative to owner window
- ///
- ////////////////////////////////////////////////////////////
- int GetMouseY() const;
-
- ////////////////////////////////////////////////////////////
- /// Get a joystick axis position
- ///
- /// \param JoyId : Identifier of the joystick to check (0 or 1)
- /// \param Axis : Axis to get
- ///
- /// \return Current axis position, in the range [-100, 100] (except for POV, which is [0, 360])
- ///
- ////////////////////////////////////////////////////////////
- float GetJoystickAxis(unsigned int JoyId, Joy::Axis Axis) const;
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see WindowListener::OnEvent
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnEvent(const Event& EventReceived);
-
- ////////////////////////////////////////////////////////////
- /// Reset all the states
- ///
- ////////////////////////////////////////////////////////////
- void ResetStates();
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- bool myKeys[Key::Count]; ///< Array containing the state of all keyboard keys
- bool myMouseButtons[Mouse::ButtonCount]; ///< Array containing the state of all mouse buttons
- int myMouseX; ///< Mouse position on X
- int myMouseY; ///< Mouse position on Y
- bool myJoystickButtons[Joy::Count][Joy::ButtonCount]; ///< Array containing the state of all joysticks buttons
- float myJoystickAxis[Joy::Count][Joy::AxisCount]; ///< Joysticks position on each axis
-};
-
-} // namespace sf
-
-
-#endif // SFML_INPUT_HPP
diff --git a/include/SFML/Window/Joystick.hpp b/include/SFML/Window/Joystick.hpp
new file mode 100644
index 0000000..8e65309
--- /dev/null
+++ b/include/SFML/Window/Joystick.hpp
@@ -0,0 +1,203 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_JOYSTICK_HPP
+#define SFML_JOYSTICK_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Export.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Give access to the real-time state of the joysticks
+///
+////////////////////////////////////////////////////////////
+class SFML_WINDOW_API Joystick
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Constants related to joysticks capabilities
+ ///
+ ////////////////////////////////////////////////////////////
+ enum
+ {
+ Count = 8, ///< Maximum number of supported joysticks
+ ButtonCount = 32, ///< Maximum number of supported buttons
+ AxisCount = 8 ///< Maximum number of supported axes
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Axes supported by SFML joysticks
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Axis
+ {
+ X, ///< The X axis
+ Y, ///< The Y axis
+ Z, ///< The Z axis
+ R, ///< The R axis
+ U, ///< The U axis
+ V, ///< The V axis
+ PovX, ///< The X axis of the point-of-view hat
+ PovY ///< The Y axis of the point-of-view hat
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a joystick is connected
+ ///
+ /// \param joystick Index of the joystick to check
+ ///
+ /// \return True if the joystick is connected, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isConnected(unsigned int joystick);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Return the number of buttons supported by a joystick
+ ///
+ /// If the joystick is not connected, this function returns 0.
+ ///
+ /// \param joystick Index of the joystick
+ ///
+ /// \return Number of buttons supported by the joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ static unsigned int getButtonCount(unsigned int joystick);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a joystick supports a given axis
+ ///
+ /// If the joystick is not connected, this function returns false.
+ ///
+ /// \param joystick Index of the joystick
+ /// \param axis Axis to check
+ ///
+ /// \return True if the joystick supports the axis, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool hasAxis(unsigned int joystick, Axis axis);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a joystick button is pressed
+ ///
+ /// If the joystick is not connected, this function returns false.
+ ///
+ /// \param joystick Index of the joystick
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isButtonPressed(unsigned int joystick, unsigned int button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current position of a joystick axis
+ ///
+ /// If the joystick is not connected, this function returns 0.
+ ///
+ /// \param joystick Index of the joystick
+ /// \param axis Axis to check
+ ///
+ /// \return Current position of the axis, in range [-100 .. 100]
+ ///
+ ////////////////////////////////////////////////////////////
+ static float getAxisPosition(unsigned int joystick, Axis axis);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the states of all joysticks
+ ///
+ /// This function is used internally by SFML, so you normally
+ /// don't have to call it explicitely. However, you may need to
+ /// call it if you have no window yet (or no window at all):
+ /// in this case the joysticks states are not updated automatically.
+ ///
+ ////////////////////////////////////////////////////////////
+ static void update();
+};
+
+} // namespace sf
+
+
+#endif // SFML_JOYSTICK_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Joystick
+/// \ingroup window
+///
+/// sf::Joystick provides an interface to the state of the
+/// joysticks. It only contains static functions, so it's not
+/// meant to be instanciated. 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:
+/// \li 8 joysticks (sf::Joystick::Count)
+/// \li 32 buttons per joystick (sf::Joystick::ButtonCount)
+/// \li 8 axes per joystick (sf::Joystick::AxisCount)
+///
+/// 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 explicitely.
+///
+/// Usage example:
+/// \code
+/// // 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?
+/// bool hasX = sf::Joystick::hasAxis(0, sf::Joystick::X);
+///
+/// // 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?
+/// float position = sf::Joystick::getAxisPosition(0, sf::Joystick::Y);
+/// \endcode
+///
+/// \see sf::Keyboard, sf::Mouse
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Keyboard.hpp b/include/SFML/Window/Keyboard.hpp
new file mode 100644
index 0000000..f10dc7c
--- /dev/null
+++ b/include/SFML/Window/Keyboard.hpp
@@ -0,0 +1,209 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_KEYBOARD_HPP
+#define SFML_KEYBOARD_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Export.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+/// \brief Give access to the real-time state of the keyboard
+///
+////////////////////////////////////////////////////////////
+class SFML_WINDOW_API Keyboard
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Key codes
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Key
+ {
+ Unknown = -1, ///< Unhandled key
+ A = 0, ///< The A key
+ B, ///< The B key
+ C, ///< The C key
+ D, ///< The D key
+ E, ///< The E key
+ F, ///< The F key
+ G, ///< The G key
+ H, ///< The H key
+ I, ///< The I key
+ J, ///< The J key
+ K, ///< The K key
+ L, ///< The L key
+ M, ///< The M key
+ N, ///< The N key
+ O, ///< The O key
+ P, ///< The P key
+ Q, ///< The Q key
+ R, ///< The R key
+ S, ///< The S key
+ T, ///< The T key
+ U, ///< The U key
+ V, ///< The V key
+ W, ///< The W key
+ X, ///< The X key
+ Y, ///< The Y key
+ Z, ///< 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
+ Dash, ///< The - key
+ Space, ///< The Space key
+ Return, ///< The Return key
+ 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
+ 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
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param key Key to check
+ ///
+ /// \return True if the key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Key key);
+};
+
+} // namespace sf
+
+
+#endif // SFML_KEYBOARD_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Keyboard
+/// \ingroup window
+///
+/// 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 instanciated.
+///
+/// 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:
+/// \code
+/// if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
+/// {
+/// // move left...
+/// }
+/// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
+/// {
+/// // move right...
+/// }
+/// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
+/// {
+/// // quit...
+/// }
+/// \endcode
+///
+/// \see sf::Joystick, sf::Mouse
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Mouse.hpp b/include/SFML/Window/Mouse.hpp
new file mode 100644
index 0000000..dd26d1a
--- /dev/null
+++ b/include/SFML/Window/Mouse.hpp
@@ -0,0 +1,167 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_MOUSE_HPP
+#define SFML_MOUSE_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Export.hpp>
+#include <SFML/System/Vector2.hpp>
+
+
+namespace sf
+{
+class Window;
+
+////////////////////////////////////////////////////////////
+/// \brief Give access to the real-time state of the mouse
+///
+////////////////////////////////////////////////////////////
+class SFML_WINDOW_API Mouse
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse buttons
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Button
+ {
+ 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
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a mouse button is pressed
+ ///
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isButtonPressed(Button button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current position of the mouse in desktop coordinates
+ ///
+ /// This function returns the global position of the mouse
+ /// cursor on the desktop.
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getPosition();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param relativeTo Reference window
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getPosition(const Window& relativeTo);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the current position of the mouse in desktop coordinates
+ ///
+ /// This function sets the global position of the mouse
+ /// cursor on the desktop.
+ ///
+ /// \param position New position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setPosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \param position New position of the mouse
+ /// \param relativeTo Reference window
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setPosition(const Vector2i& position, const Window& relativeTo);
+};
+
+} // namespace sf
+
+
+#endif // SFML_MOUSE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Mouse
+/// \ingroup window
+///
+/// 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 instanciated.
+///
+/// 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:
+/// \code
+/// if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
+/// {
+/// // left click...
+/// }
+///
+/// // get global mouse position
+/// sf::Vector2i position = sf::Mouse::getPosition();
+///
+/// // set mouse position relative to a window
+/// sf::Mouse::setPosition(sf::Vector2i(100, 200), window);
+/// \endcode
+///
+/// \see sf::Joystick, sf::Keyboard
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/VideoMode.hpp b/include/SFML/Window/VideoMode.hpp
index b439e64..beec607 100755..100644
--- a/include/SFML/Window/VideoMode.hpp
+++ b/include/SFML/Window/VideoMode.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,109 +28,201 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <cstdlib>
+#include <SFML/Window/Export.hpp>
+#include <vector>
namespace sf
{
////////////////////////////////////////////////////////////
-/// VideoMode defines a video mode (width, height, bpp, frequency)
-/// and provides static functions for getting modes supported
-/// by the display device
+/// \brief VideoMode defines a video mode (width, height, bpp)
+///
////////////////////////////////////////////////////////////
-class SFML_API VideoMode
+class SFML_WINDOW_API VideoMode
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructors initializes all members to 0.
///
////////////////////////////////////////////////////////////
VideoMode();
////////////////////////////////////////////////////////////
- /// Construct the video mode with its attributes
+ /// \brief Construct the video mode with its attributes
///
- /// \param ModeWidth : Width in pixels
- /// \param ModeHeight : Height in pixels
- /// \param ModeBpp : Pixel depths in bits per pixel (32 by default)
+ /// \param modeWidth Width in pixels
+ /// \param modeHeight Height in pixels
+ /// \param modeBitsPerPixel Pixel depths in bits per pixel
///
////////////////////////////////////////////////////////////
- VideoMode(unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp = 32);
+ VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel = 32);
////////////////////////////////////////////////////////////
- /// Get the current desktop video mode
+ /// \brief Get the current desktop video mode
///
/// \return Current desktop video mode
///
////////////////////////////////////////////////////////////
- static VideoMode GetDesktopMode();
+ static VideoMode getDesktopMode();
////////////////////////////////////////////////////////////
- /// Get a valid video mode
- /// Index must be in range [0, GetModesCount()[
- /// Modes are sorted from best to worst
+ /// \brief Retrieve all the video modes supported in fullscreen mode
///
- /// \param Index : Index of video mode to get
+ /// 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).
///
- /// \return Corresponding video mode (invalid mode if index is out of range)
+ /// \return Array containing all the supported fullscreen modes
///
////////////////////////////////////////////////////////////
- static VideoMode GetMode(std::size_t Index);
+ static const std::vector<VideoMode>& getFullscreenModes();
////////////////////////////////////////////////////////////
- /// Get valid video modes count
- ///
- /// \return Number of valid video modes available
+ /// \brief Tell whether or not the video mode is valid
///
- ////////////////////////////////////////////////////////////
- static std::size_t GetModesCount();
-
- ////////////////////////////////////////////////////////////
- /// Tell whether or not the video mode is supported
+ /// The validity of video modes is only relevant when using
+ /// fullscreen windows; otherwise any video mode can be used
+ /// with no restriction.
///
- /// \return True if video mode is supported, false otherwise
+ /// \return True if the video mode is valid for fullscreen mode
///
////////////////////////////////////////////////////////////
- bool IsValid() const;
+ bool isValid() const;
////////////////////////////////////////////////////////////
- /// Comparison operator overload -- tell if two video modes are equal
- ///
- /// \param Other : Video mode to compare
- ///
- /// \return True if modes are equal
- ///
+ // Member data
////////////////////////////////////////////////////////////
- bool operator ==(const VideoMode& Other) const;
+ unsigned int width; ///< Video mode width, in pixels
+ unsigned int height; ///< Video mode height, in pixels
+ unsigned int bitsPerPixel; ///< Video mode pixel depth, in bits per pixels
+};
- ////////////////////////////////////////////////////////////
- /// Comparison operator overload -- tell if two video modes are different
- ///
- /// \param Other : Video mode to compare
- ///
- /// \return True if modes are different
- ///
- ////////////////////////////////////////////////////////////
- bool operator !=(const VideoMode& Other) const;
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of == operator to compare two video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if modes are equal
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator ==(const VideoMode& left, const VideoMode& right);
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- unsigned int Width; ///< Video mode width, in pixels
- unsigned int Height; ///< Video mode height, in pixels
- unsigned int BitsPerPixel; ///< Video mode pixel depth, in bits per pixels
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of != operator to compare two video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if modes are different
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator !=(const VideoMode& left, const VideoMode& right);
-private :
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of < operator to compare video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if \a left is lesser than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator <(const VideoMode& left, const VideoMode& right);
- ////////////////////////////////////////////////////////////
- /// Get and sort valid video modes
- ////////////////////////////////////////////////////////////
- static void InitializeModes();
-};
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of > operator to compare video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if \a left is greater than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator >(const VideoMode& left, const VideoMode& right);
+
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of <= operator to compare video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if \a left is lesser or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator <=(const VideoMode& left, const VideoMode& right);
+
+////////////////////////////////////////////////////////////
+/// \relates VideoMode
+/// \brief Overload of >= operator to compare video modes
+///
+/// \param left Left operand (a video mode)
+/// \param right Right operand (a video mode)
+///
+/// \return True if \a left is greater or equal than \a right
+///
+////////////////////////////////////////////////////////////
+SFML_WINDOW_API bool operator >=(const VideoMode& left, const VideoMode& right);
} // namespace sf
#endif // SFML_VIDEOMODE_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::VideoMode
+/// \ingroup window
+///
+/// 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.
+///
+/// Additionnally, 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:
+/// \code
+/// // 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
+/// sf::VideoMode desktop = sf::VideoMode::getDesktopMode();
+/// window.create(sf::VideoMode(1024, 768, desktop.bitsPerPixel), "SFML window");
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Window.hpp b/include/SFML/Window/Window.hpp
index 5199021..21bb2c5 100755..100644
--- a/include/SFML/Window/Window.hpp
+++ b/include/SFML/Window/Window.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,299 +28,514 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Window/Event.hpp>
-#include <SFML/Window/Input.hpp>
+#include <SFML/Window/Export.hpp>
+#include <SFML/Window/ContextSettings.hpp>
#include <SFML/Window/VideoMode.hpp>
#include <SFML/Window/WindowHandle.hpp>
-#include <SFML/Window/WindowListener.hpp>
-#include <SFML/Window/WindowSettings.hpp>
#include <SFML/Window/WindowStyle.hpp>
+#include <SFML/Window/GlResource.hpp>
#include <SFML/System/Clock.hpp>
+#include <SFML/System/Vector2.hpp>
#include <SFML/System/NonCopyable.hpp>
-#include <queue>
-#include <string>
+#include <SFML/System/String.hpp>
namespace sf
{
namespace priv
{
+ class GlContext;
class WindowImpl;
}
+class Event;
+
////////////////////////////////////////////////////////////
-/// Window is a rendering window ; it can create a new window
-/// or connect to an existing one
+/// \brief Window that serves as a target for OpenGL rendering
+///
////////////////////////////////////////////////////////////
-class SFML_API Window : public WindowListener, NonCopyable
+class SFML_WINDOW_API Window : GlResource, NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
+ ///
+ /// This constructor doesn't actually create the window,
+ /// use the other constructors or call "create" to do so.
///
////////////////////////////////////////////////////////////
Window();
////////////////////////////////////////////////////////////
- /// Construct a new window
+ /// \brief Construct a new window
+ ///
+ /// This constructor creates the window with the size and pixel
+ /// depth defined in \a mode. An optional style can be passed to
+ /// customize the look and behaviour of the window (borders,
+ /// title bar, resizable, closable, ...). If \a style contains
+ /// Style::Fullscreen, then \a 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.
///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style, see sf::Style (Resize | Close by default)
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window)
+ /// \param title Title of the window
+ /// \param style Window style
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- Window(VideoMode Mode, const std::string& Title, unsigned long WindowStyle = Style::Resize | Style::Close, const WindowSettings& Params = WindowSettings());
+ Window(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Construct the window from an existing control
+ /// \brief Construct the window from an existing control
///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// 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.
+ ///
+ /// \param handle Platform-specific handle of the control
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- Window(WindowHandle Handle, const WindowSettings& Params = WindowSettings());
+ explicit Window(WindowHandle handle, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
+ ///
+ /// Closes the window and free all the resources attached to it.
///
////////////////////////////////////////////////////////////
virtual ~Window();
////////////////////////////////////////////////////////////
- /// Create (or recreate) the window
+ /// \brief Create (or recreate) the window
///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style, see sf::Style (Resize | Close by default)
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// If the window was already created, it closes it first.
+ /// If \a style contains Style::Fullscreen, then \a mode
+ /// must be a valid video mode.
+ ///
+ /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window)
+ /// \param title Title of the window
+ /// \param style Window style
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- void Create(VideoMode Mode, const std::string& Title, unsigned long WindowStyle = Style::Resize | Style::Close, const WindowSettings& Params = WindowSettings());
+ void create(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Create (or recreate) the window from an existing control
+ /// \brief 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.
///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters (see default constructor for default values)
+ /// \param handle Platform-specific handle of the control
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- void Create(WindowHandle Handle, const WindowSettings& Params = WindowSettings());
+ void create(WindowHandle handle, const ContextSettings& settings = ContextSettings());
////////////////////////////////////////////////////////////
- /// Close (destroy) the window.
- /// The sf::Window instance remains valid and you can call
- /// Create to recreate the window
+ /// \brief 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.
///
////////////////////////////////////////////////////////////
- void Close();
+ void close();
////////////////////////////////////////////////////////////
- /// Tell whether or not the window is opened (ie. has been created).
- /// Note that a hidden window (Show(false))
- /// will still return true
+ /// \brief Tell whether or not the window is open
///
- /// \return True if the window is opened
+ /// This function returns whether or not the window exists.
+ /// Note that a hidden window (setVisible(false)) is open
+ /// (therefore this function would return true).
+ ///
+ /// \return True if the window is open, false if it has been closed
///
////////////////////////////////////////////////////////////
- bool IsOpened() const;
+ bool isOpen() const;
////////////////////////////////////////////////////////////
- /// Get the width of the rendering region of the window
+ /// \brief 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.
///
- /// \return Width in pixels
+ /// \return Structure containing the OpenGL context settings
///
////////////////////////////////////////////////////////////
- unsigned int GetWidth() const;
+ const ContextSettings& getSettings() const;
////////////////////////////////////////////////////////////
- /// Get the height of the rendering region of the window
+ /// \brief 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 \a 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.
+ /// \code
+ /// sf::Event event;
+ /// while (window.pollEvent(event))
+ /// {
+ /// // process event...
+ /// }
+ /// \endcode
///
- /// \return Height in pixels
+ /// \param event Event to be returned
+ ///
+ /// \return True if an event was returned, or false if the event queue was empty
+ ///
+ /// \see waitEvent
///
////////////////////////////////////////////////////////////
- unsigned int GetHeight() const;
+ bool pollEvent(Event& event);
////////////////////////////////////////////////////////////
- /// Get the creation settings of the window
+ /// \brief 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 occured),
+ /// the \a 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.
+ /// \code
+ /// sf::Event event;
+ /// if (window.waitEvent(event))
+ /// {
+ /// // process event...
+ /// }
+ /// \endcode
+ ///
+ /// \param event Event to be returned
///
- /// \return Structure containing the creation settings
+ /// \return False if any error occured
+ ///
+ /// \see pollEvent
///
////////////////////////////////////////////////////////////
- const WindowSettings& GetSettings() const;
+ bool waitEvent(Event& event);
////////////////////////////////////////////////////////////
- /// Get the event on top of events stack, if any, and pop it
+ /// \brief Get the position of the window
///
- /// \param EventReceived : Event to fill, if any
+ /// \return Position of the window, in pixels
///
- /// \return True if an event was returned, false if events stack was empty
+ /// \see setPosition
///
////////////////////////////////////////////////////////////
- bool GetEvent(Event& EventReceived);
+ Vector2i getPosition() const;
////////////////////////////////////////////////////////////
- /// Enable / disable vertical synchronization
+ /// \brief 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).
+ ///
+ /// \param position New position, in pixels
///
- /// \param Enabled : True to enable v-sync, false to deactivate
+ /// \see getPosition
///
////////////////////////////////////////////////////////////
- void UseVerticalSync(bool Enabled);
+ void setPosition(const Vector2i& position);
////////////////////////////////////////////////////////////
- /// Show or hide the mouse cursor
+ /// \brief Get the size of the rendering region of the window
///
- /// \param Show : True to show, false to hide
+ /// The size doesn't include the titlebar and borders
+ /// of the window.
+ ///
+ /// \return Size in pixels
+ ///
+ /// \see setSize
///
////////////////////////////////////////////////////////////
- void ShowMouseCursor(bool Show);
+ Vector2u getSize() const;
////////////////////////////////////////////////////////////
- /// Change the position of the mouse cursor
+ /// \brief Change the size of the rendering region of the window
+ ///
+ /// \param size New size, in pixels
///
- /// \param Left : Left coordinate of the cursor, relative to the window
- /// \param Top : Top coordinate of the cursor, relative to the window
+ /// \see getSize
///
////////////////////////////////////////////////////////////
- void SetCursorPosition(unsigned int Left, unsigned int Top);
+ void setSize(const Vector2u size);
////////////////////////////////////////////////////////////
- /// Change the position of the window on screen.
- /// Only works for top-level windows
+ /// \brief Change the title of the window
///
- /// \param Left : Left position
- /// \param Top : Top position
+ /// \param title New title
+ ///
+ /// \see setIcon
///
////////////////////////////////////////////////////////////
- void SetPosition(int Left, int Top);
+ void setTitle(const String& title);
////////////////////////////////////////////////////////////
- /// Change the size of the rendering region of the window
+ /// \brief Change the window's icon
+ ///
+ /// \a pixels must be an array of \a width x \a height pixels
+ /// in 32-bits RGBA format.
+ ///
+ /// The OS default icon is used by default.
///
- /// \param Width : New width
- /// \param Height : New height
+ /// \param width Icon's width, in pixels
+ /// \param height Icon's height, in pixels
+ /// \param pixels Pointer to the array of pixels in memory
+ ///
+ /// \see setTitle
///
////////////////////////////////////////////////////////////
- void SetSize(unsigned int Width, unsigned int Height);
+ void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
////////////////////////////////////////////////////////////
- /// Show or hide the window
+ /// \brief Show or hide the window
+ ///
+ /// The window is shown by default.
///
- /// \param State : True to show, false to hide
+ /// \param visible True to show the window, false to hide it
///
////////////////////////////////////////////////////////////
- void Show(bool State);
+ void setVisible(bool visible);
////////////////////////////////////////////////////////////
- /// Enable or disable automatic key-repeat.
- /// Automatic key-repeat is enabled by default
+ /// \brief 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.
///
- /// \param Enabled : True to enable, false to disable
+ /// \param enabled True to enable v-sync, false to deactivate it
///
////////////////////////////////////////////////////////////
- void EnableKeyRepeat(bool Enabled);
+ void setVerticalSyncEnabled(bool enabled);
////////////////////////////////////////////////////////////
- /// Change the window's icon
+ /// \brief Show or hide the mouse cursor
///
- /// \param Width : Icon's width, in pixels
- /// \param Height : Icon's height, in pixels
- /// \param Pixels : Pointer to the pixels in memory, format must be RGBA 32 bits
+ /// The mouse cursor is visible by default.
+ ///
+ /// \param visible True to show the mouse cursor, false to hide it
///
////////////////////////////////////////////////////////////
- void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels);
+ void setMouseCursorVisible(bool visible);
////////////////////////////////////////////////////////////
- /// Activate of deactivate the window as the current target
- /// for rendering
+ /// \brief Enable or disable automatic key-repeat
///
- /// \param Active : True to activate, false to deactivate (true by default)
+ /// 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.
///
- /// \return True if operation was successful, false otherwise
+ /// Key repeat is enabled by default.
+ ///
+ /// \param enabled True to enable, false to disable
///
////////////////////////////////////////////////////////////
- bool SetActive(bool Active = true) const;
+ void setKeyRepeatEnabled(bool enabled);
////////////////////////////////////////////////////////////
- /// Display the window on screen
+ /// \brief 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).
+ ///
+ /// \param limit Framerate limit, in frames per seconds (use 0 to disable limit)
///
////////////////////////////////////////////////////////////
- void Display();
+ void setFramerateLimit(unsigned int limit);
////////////////////////////////////////////////////////////
- /// Get the input manager of the window
+ /// \brief Change the joystick threshold
+ ///
+ /// The joystick threshold is the value below which
+ /// no JoystickMoved event will be generated.
///
- /// \return Reference to the input
+ /// The threshold value is 0.1 by default.
+ ///
+ /// \param threshold New threshold, in the range [0, 100]
///
////////////////////////////////////////////////////////////
- const Input& GetInput() const;
+ void setJoystickThreshold(float threshold);
////////////////////////////////////////////////////////////
- /// Limit the framerate to a maximum fixed frequency
+ /// \brief 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.
+ ///
+ /// \param active True to activate, false to deactivate
///
- /// \param Limit : Framerate limit, in frames per seconds (use 0 to disable limit)
+ /// \return True if operation was successful, false otherwise
///
////////////////////////////////////////////////////////////
- void SetFramerateLimit(unsigned int Limit);
+ bool setActive(bool active = true) const;
////////////////////////////////////////////////////////////
- /// Get time elapsed since last frame
+ /// \brief Display on screen what has been rendered to the window so far
///
- /// \return Time elapsed, in seconds
+ /// This function is typically called after all OpenGL rendering
+ /// has been done for the current frame, in order to show
+ /// it on screen.
///
////////////////////////////////////////////////////////////
- float GetFrameTime() const;
+ void display();
////////////////////////////////////////////////////////////
- /// Change the joystick threshold, ie. the value below which
- /// no move event will be generated
+ /// \brief 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.
///
- /// \param Threshold : New threshold, in range [0, 100]
+ /// \return System handle of the window
///
////////////////////////////////////////////////////////////
- void SetJoystickThreshold(float Threshold);
+ WindowHandle getSystemHandle() const;
-private :
+protected :
////////////////////////////////////////////////////////////
- /// Called after the window has been created
+ /// \brief 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.
///
////////////////////////////////////////////////////////////
- virtual void OnCreate();
+ virtual void onCreate();
////////////////////////////////////////////////////////////
- /// /see WindowListener::OnEvent
+ /// \brief Function called after the window has been resized
///
- /// \param EventReceived : Event received
+ /// This function is called so that derived classes can
+ /// perform custom actions when the size of the window changes.
///
////////////////////////////////////////////////////////////
- virtual void OnEvent(const Event& EventReceived);
+ virtual void onResize();
+
+private:
////////////////////////////////////////////////////////////
- /// Initialize internal window
+ /// \brief Processes an event before it is sent to the user
///
- /// \param Impl : New internal window implementation
+ /// This function is called every time an event is received
+ /// from the internal window (through pollEvent or waitEvent).
+ /// It filters out unwanted events, and performs whatever internal
+ /// stuff the window needs before the event is returned to the
+ /// user.
+ ///
+ /// \param event Event to filter
///
////////////////////////////////////////////////////////////
- void Initialize(priv::WindowImpl* Impl);
+ bool filterEvent(const Event& event);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform some common internal initializations
+ ///
+ ////////////////////////////////////////////////////////////
+ void initialize();
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- priv::WindowImpl* myWindow; ///< Platform-specific implementation of window
- std::queue<Event> myEvents; ///< Queue of received events
- Input myInput; ///< Input manager connected to window
- Clock myClock; ///< Clock for measuring the elapsed time between frames
- WindowSettings mySettings; ///< Creation settings of the window
- float myLastFrameTime; ///< Time elapsed since last frame
- bool myIsExternal; ///< Tell whether the window is internal or external (created by SFML or not)
- unsigned int myFramerateLimit; ///< Current framerate limit
- int mySetCursorPosX; ///< X coordinate passed to the last call to SetCursorPosition
- int mySetCursorPosY; ///< Y coordinate passed to the last call to SetCursorPosition
+ priv::WindowImpl* m_impl; ///< Platform-specific implementation of the window
+ priv::GlContext* m_context; ///< Platform-specific implementation of the OpenGL context
+ Clock m_clock; ///< Clock for measuring the elapsed time between frames
+ Time m_frameTimeLimit; ///< Current framerate limit
+ Vector2u m_size; ///< Current size of the window
};
} // namespace sf
#endif // SFML_WINDOW_HPP
+
+
+////////////////////////////////////////////////////////////
+/// \class sf::Window
+/// \ingroup window
+///
+/// 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.
+///
+/// Usage example:
+/// \code
+/// // 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();
+/// }
+/// \endcode
+///
+////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/WindowHandle.hpp b/include/SFML/Window/WindowHandle.hpp
index 852036c..7fb2bb8 100755..100644
--- a/include/SFML/Window/WindowHandle.hpp
+++ b/include/SFML/Window/WindowHandle.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -30,6 +30,10 @@
////////////////////////////////////////////////////////////
#include <SFML/Config.hpp>
+// Windows' HWND is a typedef on struct HWND__*
+#if defined(SFML_SYSTEM_WINDOWS)
+ struct HWND__;
+#endif
namespace sf
{
@@ -39,18 +43,18 @@ namespace sf
////////////////////////////////////////////////////////////
#if defined(SFML_SYSTEM_WINDOWS)
- // Windows defines a void* handle (HWND)
- typedef void* WindowHandle;
+ // Window handle is HWND (HWND__*) on Windows
+ typedef HWND__* WindowHandle;
#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)
- // Unix - X11 defines an unsigned integer handle (Window)
+ // Window handle is Window (unsigned long) on Unix - X11
typedef unsigned long WindowHandle;
#elif defined(SFML_SYSTEM_MACOS)
- // Mac OS X defines a void* handle (NSWindow)
- typedef void* WindowHandle;
+ // Window handle is NSWindow (void*) on Mac OS X - Cocoa
+ typedef void* WindowHandle;
#endif
diff --git a/include/SFML/Window/WindowSettings.hpp b/include/SFML/Window/WindowSettings.hpp
deleted file mode 100755
index 78f9ecd..0000000
--- a/include/SFML/Window/WindowSettings.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_WINDOWSETTINGS_HPP
-#define SFML_WINDOWSETTINGS_HPP
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Structure defining the creation settings of windows
-////////////////////////////////////////////////////////////
-struct WindowSettings
-{
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- /// \param Depth : Depth buffer bits (24 by default)
- /// \param Stencil : Stencil buffer bits (8 by default)
- /// \param Antialiasing : Antialiasing level (0 by default)
- ///
- ////////////////////////////////////////////////////////////
- explicit WindowSettings(unsigned int Depth = 24, unsigned int Stencil = 8, unsigned int Antialiasing = 0) :
- DepthBits (Depth),
- StencilBits (Stencil),
- AntialiasingLevel(Antialiasing)
- {
- }
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- unsigned int DepthBits; ///< Bits of the depth buffer
- unsigned int StencilBits; ///< Bits of the stencil buffer
- unsigned int AntialiasingLevel; ///< Level of antialiasing
-};
-
-} // namespace sf
-
-
-#endif // SFML_WINDOWSETTINGS_HPP
diff --git a/include/SFML/Window/WindowStyle.hpp b/include/SFML/Window/WindowStyle.hpp
index 9fcc2e7..fa69d32 100755..100644
--- a/include/SFML/Window/WindowStyle.hpp
+++ b/include/SFML/Window/WindowStyle.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,23 +28,25 @@
namespace sf
{
-
-////////////////////////////////////////////////////////////
-/// Enumeration of window creation styles
-////////////////////////////////////////////////////////////
namespace Style
{
+ ////////////////////////////////////////////////////////////
+ /// \ingroup window
+ /// \brief Enumeration of the window styles
+ ///
+ ////////////////////////////////////////////////////////////
enum
{
None = 0, ///< No border / title bar (this flag and all others are mutually exclusive)
Titlebar = 1 << 0, ///< Title bar + fixed border
Resize = 1 << 1, ///< Titlebar + resizable border + maximize button
Close = 1 << 2, ///< Titlebar + close button
- Fullscreen = 1 << 3 ///< Fullscreen mode (this flag and all others are mutually exclusive)
+ Fullscreen = 1 << 3, ///< Fullscreen mode (this flag and all others are mutually exclusive)
+
+ Default = Titlebar | Resize | Close ///< Default window style
};
}
-
} // namespace sf
diff --git a/license.txt b/license.txt
index 87f61e6..b374541 100755..100644
--- a/license.txt
+++ b/license.txt
@@ -1,7 +1,7 @@
SFML
----
-SFML - Copyright (c) 2007-2009 Laurent Gomila - laurent.gom@gmail.com
+SFML - Copyright (C) 2007-2013 Laurent Gomila - laurent.gom@gmail.com
This software is provided 'as-is', without any express or
implied warranty. In no event will the authors be held
@@ -30,9 +30,7 @@ External libraries used by SFML
* OpenAL-Soft is under the LGPL license
* libsndfile is under the LGPL license
-* stb_vorbis is public domain
* libjpeg is public domain
-* libpng is under the zlib/png license
-* zlib is under the zlib/png license
-* SOIL is public domain
+* stb_image and stb_image_write are public domain
* freetype is under the FreeType license or the GPL license
+* GLEW is under the modified BSD License, the Mesa 3-D License (MIT License), and the Khronos License (MIT License)
diff --git a/readme-en.txt b/readme-en.txt
deleted file mode 100755
index 23a8ece..0000000
--- a/readme-en.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-To install and use SFML with your favorite compiler, go to the tutorials web page:
-
-http://www.sfml-dev.org/tutorials/
diff --git a/readme-fr.txt b/readme-fr.txt
deleted file mode 100755
index 87e0f1b..0000000
--- a/readme-fr.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Pour installer et utiliser SFML avec votre compilateur préféré, rendez-vous sur la page des tutoriels :
-
-http://www.sfml-dev.org/tutorials/index-fr.php
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..10b80ca
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,40 @@
+SFML - Simple and Fast Multimedia Library
+=========================================
+
+SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing, graphics,
+audio and network.
+It is written in C++, and has bindings for various languages such as C, .Net, Ruby, Python.
+
+Authors
+-------
+
+Laurent Gomila - main developer (laurent.gom@gmail.com)
+Marco Antognini - OS X developer (antognini.marco@gmail.com)
+
+Download
+--------
+
+You can get the latest official release on SFML website (http://www.sfml-dev.org/download.php).
+You can also get the current development version from the git repository (https://github.com/LaurentGomila/SFML).
+
+Install
+-------
+
+Follow the instructions of the tutorials (http://www.sfml-dev.org/tutorials.php), there is one for each platform/compiler that SFML supports.
+
+Learn
+-----
+
+There are several places to learn SFML:
+* The official tutorials (http://www.sfml-dev.org/resources.php#tutorials)
+* The online API documentation (http://www.sfml-dev.org/resources.php#documentation)
+* The community wiki (https://github.com/LaurentGomila/SFML/wiki/)
+* The community forum (http://en.sfml-dev.org/forums/) (or http://fr.sfml-dev.org/forums/ for french people)
+
+Contribute
+----------
+
+SFML is an open-source project, and it needs your help to go on growing and improving.
+Don't hesitate to post suggestions or bug reports on the forum (http://en.sfml-dev.org/forums/),
+submit patches by e-mail, or post new bugs/features requests on the task tracker (https://github.com/LaurentGomila/SFML/issues/).
+You can even fork the project on github, maintain your own version and send us pull requests periodically to merge your work.
diff --git a/samples/Makefile b/samples/Makefile
deleted file mode 100755
index 938152a..0000000
--- a/samples/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-export DEBUGBUILD = no
-ifeq ($(DEBUGBUILD), yes)
- DEBUGFLAGS = -g -DDEBUG
-else
- DEBUGFLAGS = -O2 -DNDEBUG
-endif
-
-export CC = g++
-export CFLAGS = -W -Wall -ansi -I../../include $(DEBUGFLAGS)
-export LDFLAGS =
-export EXECPATH = ../bin
-
-all: ftp-sample opengl-sample pong-sample post-fx-sample qt-sample sockets-sample sound-sample sound_capture-sample voip-sample window-sample wxwidgets-sample X11-sample
-
-ftp-sample:
- @(mkdir -p bin)
- @(cd ./ftp && $(MAKE))
-
-opengl-sample:
- @(mkdir -p bin)
- @(cd ./opengl && $(MAKE))
-
-pong-sample:
- @(mkdir -p bin)
- @(cd ./pong && $(MAKE))
-
-post-fx-sample:
- @(mkdir -p bin)
- @(cd ./post-fx && $(MAKE))
-
-qt-sample:
- @(mkdir -p bin)
- @(cd ./qt && $(MAKE))
-
-sockets-sample:
- @(mkdir -p bin)
- @(cd ./sockets && $(MAKE))
-
-sound-sample:
- @(mkdir -p bin)
- @(cd ./sound && $(MAKE))
-
-sound_capture-sample:
- @(mkdir -p bin)
- @(cd ./sound_capture && $(MAKE))
-
-voip-sample:
- @(mkdir -p bin)
- @(cd ./voip && $(MAKE))
-
-window-sample:
- @(mkdir -p bin)
- @(cd ./window && $(MAKE))
-
-wxwidgets-sample:
- @(mkdir -p bin)
- @(cd ./wxwidgets && $(MAKE))
-
-X11-sample:
- @(mkdir -p bin)
- @(cd ./X11 && $(MAKE))
-
-.PHONY: clean mrproper
-
-clean:
- @(cd ./ftp && $(MAKE) $@ && \
- cd ../opengl && $(MAKE) $@ && \
- cd ../pong && $(MAKE) $@ && \
- cd ../post-fx && $(MAKE) $@ && \
- cd ../qt && $(MAKE) $@ && \
- cd ../sockets && $(MAKE) $@ && \
- cd ../sound && $(MAKE) $@ && \
- cd ../sound_capture && $(MAKE) $@ && \
- cd ../voip && $(MAKE) $@ && \
- cd ../window && $(MAKE) $@ && \
- cd ../wxwidgets && $(MAKE) $@ && \
- cd ../X11 && $(MAKE) $@)
-
-mrproper: clean
- @(cd ./ftp && $(MAKE) $@ && \
- cd ../opengl && $(MAKE) $@ && \
- cd ../pong && $(MAKE) $@ && \
- cd ../post-fx && $(MAKE) $@ && \
- cd ../qt && $(MAKE) $@ && \
- cd ../sockets && $(MAKE) $@ && \
- cd ../sound && $(MAKE) $@ && \
- cd ../sound_capture && $(MAKE) $@ && \
- cd ../voip && $(MAKE) $@ && \
- cd ../window && $(MAKE) $@ && \
- cd ../wxwidgets && $(MAKE) $@ && \
- cd ../X11 && $(MAKE) $@)
diff --git a/samples/X11/Makefile b/samples/X11/Makefile
deleted file mode 100755
index eca4cee..0000000
--- a/samples/X11/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = X11
-OBJ = X11.o
-
-all: $(EXEC)
-
-X11: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-window -lsfml-system -lGLU -lGL -lX11
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/ftp/Makefile b/samples/ftp/Makefile
deleted file mode 100755
index 8bd25ae..0000000
--- a/samples/ftp/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = ftp
-OBJ = Ftp.o
-
-all: $(EXEC)
-
-ftp: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-network -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/opengl/Makefile b/samples/opengl/Makefile
deleted file mode 100755
index 42ff5ca..0000000
--- a/samples/opengl/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = opengl
-OBJ = OpenGL.o
-
-all: $(EXEC)
-
-opengl: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-graphics -lsfml-window -lsfml-system -lGLU -lGL
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/opengl/OpenGL.cpp b/samples/opengl/OpenGL.cpp
deleted file mode 100644
index b08a549..0000000
--- a/samples/opengl/OpenGL.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics.hpp>
-#include <iostream>
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main()
-{
- // Create main window
- sf::RenderWindow App(sf::VideoMode(800, 600), "SFML OpenGL");
- App.PreserveOpenGLStates(true);
-
- // Create a sprite for the background
- sf::Image BackgroundImage;
- if (!BackgroundImage.LoadFromFile("datas/opengl/background.jpg"))
- return EXIT_FAILURE;
- sf::Sprite Background(BackgroundImage);
-
- // Load an OpenGL texture.
- // We could directly use a sf::Image as an OpenGL texture (with its Bind() member function),
- // but here we want more control on it (generate mipmaps, ...) so we create a new one
- GLuint Texture = 0;
- {
- sf::Image Image;
- if (!Image.LoadFromFile("datas/opengl/texture.jpg"))
- return EXIT_FAILURE;
- glGenTextures(1, &Texture);
- glBindTexture(GL_TEXTURE_2D, Texture);
- gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Image.GetWidth(), Image.GetHeight(), GL_RGBA, GL_UNSIGNED_BYTE, Image.GetPixelsPtr());
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
- }
-
- // Enable Z-buffer read and write
- glEnable(GL_DEPTH_TEST);
- glDepthMask(GL_TRUE);
- glClearDepth(1.f);
-
- // Setup a perspective projection
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(90.f, 1.f, 1.f, 500.f);
-
- // Bind our texture
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, Texture);
- glColor4f(1.f, 1.f, 1.f, 1.f);
-
- // Create a clock for measuring the time elapsed
- sf::Clock Clock;
-
- // Start game loop
- while (App.IsOpened())
- {
- // Process events
- sf::Event Event;
- while (App.GetEvent(Event))
- {
- // Close window : exit
- if (Event.Type == sf::Event::Closed)
- App.Close();
-
- // Escape key : exit
- if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
- App.Close();
-
- // Adjust the viewport when the window is resized
- if (Event.Type == sf::Event::Resized)
- glViewport(0, 0, Event.Size.Width, Event.Size.Height);
- }
-
- // Draw background
- App.Draw(Background);
-
- // Clear depth buffer
- glClear(GL_DEPTH_BUFFER_BIT);
-
- // Apply some transformations
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.f, 0.f, -200.f);
- glRotatef(Clock.GetElapsedTime() * 50, 1.f, 0.f, 0.f);
- glRotatef(Clock.GetElapsedTime() * 30, 0.f, 1.f, 0.f);
- glRotatef(Clock.GetElapsedTime() * 90, 0.f, 0.f, 1.f);
-
- // Draw a cube
- glBegin(GL_QUADS);
-
- glTexCoord2f(0, 0); glVertex3f(-50.f, -50.f, -50.f);
- glTexCoord2f(0, 1); glVertex3f(-50.f, 50.f, -50.f);
- glTexCoord2f(1, 1); glVertex3f( 50.f, 50.f, -50.f);
- glTexCoord2f(1, 0); glVertex3f( 50.f, -50.f, -50.f);
-
- glTexCoord2f(0, 0); glVertex3f(-50.f, -50.f, 50.f);
- glTexCoord2f(0, 1); glVertex3f(-50.f, 50.f, 50.f);
- glTexCoord2f(1, 1); glVertex3f( 50.f, 50.f, 50.f);
- glTexCoord2f(1, 0); glVertex3f( 50.f, -50.f, 50.f);
-
- glTexCoord2f(0, 0); glVertex3f(-50.f, -50.f, -50.f);
- glTexCoord2f(0, 1); glVertex3f(-50.f, 50.f, -50.f);
- glTexCoord2f(1, 1); glVertex3f(-50.f, 50.f, 50.f);
- glTexCoord2f(1, 0); glVertex3f(-50.f, -50.f, 50.f);
-
- glTexCoord2f(0, 0); glVertex3f(50.f, -50.f, -50.f);
- glTexCoord2f(0, 1); glVertex3f(50.f, 50.f, -50.f);
- glTexCoord2f(1, 1); glVertex3f(50.f, 50.f, 50.f);
- glTexCoord2f(1, 0); glVertex3f(50.f, -50.f, 50.f);
-
- glTexCoord2f(0, 1); glVertex3f(-50.f, -50.f, 50.f);
- glTexCoord2f(0, 0); glVertex3f(-50.f, -50.f, -50.f);
- glTexCoord2f(1, 0); glVertex3f( 50.f, -50.f, -50.f);
- glTexCoord2f(1, 1); glVertex3f( 50.f, -50.f, 50.f);
-
- glTexCoord2f(0, 1); glVertex3f(-50.f, 50.f, 50.f);
- glTexCoord2f(0, 0); glVertex3f(-50.f, 50.f, -50.f);
- glTexCoord2f(1, 0); glVertex3f( 50.f, 50.f, -50.f);
- glTexCoord2f(1, 1); glVertex3f( 50.f, 50.f, 50.f);
-
- glEnd();
-
- // Draw some text on top of our OpenGL object
- sf::String Text("This is a rotating cube");
- Text.SetPosition(250.f, 300.f);
- Text.SetColor(sf::Color(128, 0, 128));
- App.Draw(Text);
-
- // Finally, display the rendered frame on screen
- App.Display();
- }
-
- // Don't forget to destroy our texture
- glDeleteTextures(1, &Texture);
-
- return EXIT_SUCCESS;
-}
diff --git a/samples/pong/Makefile b/samples/pong/Makefile
deleted file mode 100755
index 314ace2..0000000
--- a/samples/pong/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = pong
-OBJ = Pong.o
-
-all: $(EXEC)
-
-pong: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-audio -lsfml-graphics -lsfml-window -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/pong/Pong.cpp b/samples/pong/Pong.cpp
deleted file mode 100644
index 6ca169c..0000000
--- a/samples/pong/Pong.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics.hpp>
-#include <SFML/Audio.hpp>
-#include <cmath>
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main()
-{
- // Defines PI
- const float PI = 3.14159f;
-
- // Create the window of the application
- sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Pong");
-
- // Load the sounds used in the game
- sf::SoundBuffer BallSoundBuffer;
- if (!BallSoundBuffer.LoadFromFile("datas/pong/ball.wav"))
- {
- return EXIT_FAILURE;
- }
- sf::Sound BallSound(BallSoundBuffer);
-
- // Load the images used in the game
- sf::Image BackgroundImage, LeftPaddleImage, RightPaddleImage, BallImage;
- if (!BackgroundImage.LoadFromFile("datas/pong/background.jpg") ||
- !LeftPaddleImage.LoadFromFile("datas/pong/paddle_left.png") ||
- !RightPaddleImage.LoadFromFile("datas/pong/paddle_right.png") ||
- !BallImage.LoadFromFile("datas/pong/ball.png"))
- {
- return EXIT_FAILURE;
- }
-
- // Load the text font
- sf::Font Cheeseburger;
- if (!Cheeseburger.LoadFromFile("datas/post-fx/cheeseburger.ttf"))
- return EXIT_FAILURE;
-
- // Initialize the end text
- sf::String End;
- End.SetFont(Cheeseburger);
- End.SetSize(60.f);
- End.Move(150.f, 200.f);
- End.SetColor(sf::Color(50, 50, 250));
-
- // Create the sprites of the background, the paddles and the ball
- sf::Sprite Background(BackgroundImage);
- sf::Sprite LeftPaddle(LeftPaddleImage);
- sf::Sprite RightPaddle(RightPaddleImage);
- sf::Sprite Ball(BallImage);
-
- LeftPaddle.Move(10, (App.GetView().GetRect().GetHeight() - LeftPaddle.GetSize().y) / 2);
- RightPaddle.Move(App.GetView().GetRect().GetWidth() - RightPaddle.GetSize().x - 10, (App.GetView().GetRect().GetHeight() - RightPaddle.GetSize().y) / 2);
- Ball.Move((App.GetView().GetRect().GetWidth() - Ball.GetSize().x) / 2, (App.GetView().GetRect().GetHeight() - Ball.GetSize().y) / 2);
-
- // Define the paddles properties
- sf::Clock AITimer;
- const float AITime = 0.1f;
- float LeftPaddleSpeed = 400.f;
- float RightPaddleSpeed = 400.f;
-
- // Define the ball properties
- float BallSpeed = 400.f;
- float BallAngle;
- do
- {
- // Make sure the ball initial angle is not too much vertical
- BallAngle = sf::Randomizer::Random(0.f, 2 * PI);
- } while (std::abs(std::cos(BallAngle)) < 0.7f);
-
- bool IsPlaying = true;
- while (App.IsOpened())
- {
- // Handle events
- sf::Event Event;
- while (App.GetEvent(Event))
- {
- // Window closed or escape key pressed : exit
- if ((Event.Type == sf::Event::Closed) ||
- ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape)))
- {
- App.Close();
- break;
- }
- }
-
- if (IsPlaying)
- {
- // Move the player's paddle
- if (App.GetInput().IsKeyDown(sf::Key::Up) && (LeftPaddle.GetPosition().y > 5.f))
- LeftPaddle.Move(0.f, -LeftPaddleSpeed * App.GetFrameTime());
- if (App.GetInput().IsKeyDown(sf::Key::Down) && (LeftPaddle.GetPosition().y < App.GetView().GetRect().GetHeight() - LeftPaddle.GetSize().y - 5.f))
- LeftPaddle.Move(0.f, LeftPaddleSpeed * App.GetFrameTime());
-
- // Move the computer's paddle
- if (((RightPaddleSpeed < 0.f) && (RightPaddle.GetPosition().y > 5.f)) ||
- ((RightPaddleSpeed > 0.f) && (RightPaddle.GetPosition().y < App.GetView().GetRect().GetHeight() - RightPaddle.GetSize().y - 5.f)))
- {
- RightPaddle.Move(0.f, RightPaddleSpeed * App.GetFrameTime());
- }
-
- // Update the computer's paddle direction according to the ball position
- if (AITimer.GetElapsedTime() > AITime)
- {
- AITimer.Reset();
- if ((RightPaddleSpeed < 0) && (Ball.GetPosition().y + Ball.GetSize().y > RightPaddle.GetPosition().y + RightPaddle.GetSize().y))
- RightPaddleSpeed = -RightPaddleSpeed;
- if ((RightPaddleSpeed > 0) && (Ball.GetPosition().y < RightPaddle.GetPosition().y))
- RightPaddleSpeed = -RightPaddleSpeed;
- }
-
- // Move the ball
- float Factor = BallSpeed * App.GetFrameTime();
- Ball.Move(std::cos(BallAngle) * Factor, std::sin(BallAngle) * Factor);
-
- // Check collisions between the ball and the screen
- if (Ball.GetPosition().x < 0.f)
- {
- IsPlaying = false;
- End.SetText("You lost !\n(press escape to exit)");
- }
- if (Ball.GetPosition().x + Ball.GetSize().x > App.GetView().GetRect().GetWidth())
- {
- IsPlaying = false;
- End.SetText("You won !\n(press escape to exit)");
- }
- if (Ball.GetPosition().y < 0.f)
- {
- BallSound.Play();
- BallAngle = -BallAngle;
- Ball.SetY(0.1f);
- }
- if (Ball.GetPosition().y + Ball.GetSize().y > App.GetView().GetRect().GetHeight())
- {
- BallSound.Play();
- BallAngle = -BallAngle;
- Ball.SetY(App.GetView().GetRect().GetHeight() - Ball.GetSize().y - 0.1f);
- }
-
- // Check the collisions between the ball and the paddles
- // Left Paddle
- if (Ball.GetPosition().x < LeftPaddle.GetPosition().x + LeftPaddle.GetSize().x &&
- Ball.GetPosition().x > LeftPaddle.GetPosition().x + (LeftPaddle.GetSize().x / 2.0f) &&
- Ball.GetPosition().y + Ball.GetSize().y >= LeftPaddle.GetPosition().y &&
- Ball.GetPosition().y <= LeftPaddle.GetPosition().y + LeftPaddle.GetSize().y)
- {
- BallSound.Play();
- BallAngle = PI - BallAngle;
- Ball.SetX(LeftPaddle.GetPosition().x + LeftPaddle.GetSize().x + 0.1f);
- }
-
- // Right Paddle
- if (Ball.GetPosition().x + Ball.GetSize().x > RightPaddle.GetPosition().x &&
- Ball.GetPosition().x + Ball.GetSize().x < RightPaddle.GetPosition().x + (RightPaddle.GetSize().x / 2.0f) &&
- Ball.GetPosition().y + Ball.GetSize().y >= RightPaddle.GetPosition().y &&
- Ball.GetPosition().y <= RightPaddle.GetPosition().y + RightPaddle.GetSize().y)
- {
- BallSound.Play();
- BallAngle = PI - BallAngle;
- Ball.SetX(RightPaddle.GetPosition().x - Ball.GetSize().x - 0.1f);
- }
- }
-
- // Clear the window
- App.Clear();
-
- // Draw the background, paddles and ball sprites
- App.Draw(Background);
- App.Draw(LeftPaddle);
- App.Draw(RightPaddle);
- App.Draw(Ball);
-
- // If the game is over, display the end message
- if (!IsPlaying)
- App.Draw(End);
-
- // Display things on screen
- App.Display();
- }
-
- return EXIT_SUCCESS;
-}
diff --git a/samples/post-fx/Makefile b/samples/post-fx/Makefile
deleted file mode 100755
index 2c25988..0000000
--- a/samples/post-fx/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = post-fx
-OBJ = PostFX.o
-
-all: $(EXEC)
-
-post-fx: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-graphics -lsfml-window -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/post-fx/PostFX.cpp b/samples/post-fx/PostFX.cpp
deleted file mode 100644
index 8a3e4bc..0000000
--- a/samples/post-fx/PostFX.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics.hpp>
-#include <map>
-
-void DisplayError();
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main()
-{
- // Check that the system can use post effects
- if (sf::PostFX::CanUsePostFX() == false)
- {
- DisplayError();
- return EXIT_SUCCESS;
- }
-
- // Create the main window
- sf::RenderWindow App(sf::VideoMode(800, 600), "SFML PostFX");
-
- // Load a cute background image to display :)
- sf::Image BackgroundImage;
- if (!BackgroundImage.LoadFromFile("datas/post-fx/background.jpg"))
- return EXIT_FAILURE;
- sf::Sprite Background(BackgroundImage);
-
- // Load the text font
- sf::Font Cheeseburger;
- if (!Cheeseburger.LoadFromFile("datas/post-fx/cheeseburger.ttf"))
- return EXIT_FAILURE;
-
- // Load the image needed for the wave effect
- sf::Image WaveImage;
- if (!WaveImage.LoadFromFile("datas/post-fx/wave.jpg"))
- return EXIT_FAILURE;
-
- // Load all effects
- std::map<std::string, sf::PostFX> Effects;
- if (!Effects["nothing"].LoadFromFile("datas/post-fx/nothing.sfx")) return EXIT_FAILURE;
- if (!Effects["blur"].LoadFromFile("datas/post-fx/blur.sfx")) return EXIT_FAILURE;
- if (!Effects["colorize"].LoadFromFile("datas/post-fx/colorize.sfx")) return EXIT_FAILURE;
- if (!Effects["fisheye"].LoadFromFile("datas/post-fx/fisheye.sfx")) return EXIT_FAILURE;
- if (!Effects["wave"].LoadFromFile("datas/post-fx/wave.sfx")) return EXIT_FAILURE;
- std::map<std::string, sf::PostFX>::iterator CurrentEffect = Effects.find("nothing");
-
- // Do specific initializations
- Effects["nothing"].SetTexture("framebuffer", NULL);
- Effects["blur"].SetTexture("framebuffer", NULL);
- Effects["blur"].SetParameter("offset", 0.f);
- Effects["colorize"].SetTexture("framebuffer", NULL);
- Effects["colorize"].SetParameter("color", 1.f, 1.f, 1.f);
- Effects["fisheye"].SetTexture("framebuffer", NULL);
- Effects["wave"].SetTexture("framebuffer", NULL);
- Effects["wave"].SetTexture("wave", &WaveImage);
-
- // Define a string for displaying current effect description
- sf::String CurFXStr;
- CurFXStr.SetText("Current effect is \"" + CurrentEffect->first + "\"");
- CurFXStr.SetFont(Cheeseburger);
- CurFXStr.SetPosition(20.f, 0.f);
-
- // Define a string for displaying help
- sf::String InfoStr;
- InfoStr.SetText("Move your mouse to change the effect parameters\nPress numpad + and - to change effect\nWarning : some effects may not work\ndepending on your graphics card");
- InfoStr.SetFont(Cheeseburger);
- InfoStr.SetPosition(20.f, 460.f);
- InfoStr.SetColor(sf::Color(200, 100, 150));
-
- // Start the game loop
- while (App.IsOpened())
- {
- // Process events
- sf::Event Event;
- while (App.GetEvent(Event))
- {
- // Close window : exit
- if (Event.Type == sf::Event::Closed)
- App.Close();
-
- if (Event.Type == sf::Event::KeyPressed)
- {
- // Escape key : exit
- if (Event.Key.Code == sf::Key::Escape)
- App.Close();
-
- // Add key : next effect
- if (Event.Key.Code == sf::Key::Add)
- {
- CurrentEffect++;
- if (CurrentEffect == Effects.end())
- CurrentEffect = Effects.begin();
- CurFXStr.SetText("Current effect is \"" + CurrentEffect->first + "\"");
- }
-
- // Subtract key : previous effect
- if (Event.Key.Code == sf::Key::Subtract)
- {
- if (CurrentEffect == Effects.begin())
- CurrentEffect = Effects.end();
- CurrentEffect--;
- CurFXStr.SetText("Current effect is \"" + CurrentEffect->first + "\"");
- }
- }
- }
-
- // Get the mouse position in the range [0, 1]
- float X = App.GetInput().GetMouseX() / static_cast<float>(App.GetWidth());
- float Y = App.GetInput().GetMouseY() / static_cast<float>(App.GetHeight());
-
- // Update the current effect
- if (CurrentEffect->first == "blur") CurrentEffect->second.SetParameter("offset", X * Y * 0.1f);
- else if (CurrentEffect->first == "colorize") CurrentEffect->second.SetParameter("color", 0.3f, X, Y);
- else if (CurrentEffect->first == "fisheye") CurrentEffect->second.SetParameter("mouse", X, 1.f - Y);
- else if (CurrentEffect->first == "wave") CurrentEffect->second.SetParameter("offset", X, Y);
-
- // Clear the window
- App.Clear();
-
- // Draw background and apply the post-fx
- App.Draw(Background);
- App.Draw(CurrentEffect->second);
-
- // Draw interface strings
- App.Draw(CurFXStr);
- App.Draw(InfoStr);
-
- // Finally, display the rendered frame on screen
- App.Display();
- }
-
- return EXIT_SUCCESS;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Fonction called when the post-effects are not supported ;
-/// Display an error message and wait until the user exits
-///
-////////////////////////////////////////////////////////////
-void DisplayError()
-{
- // Create the main window
- sf::RenderWindow App(sf::VideoMode(800, 600), "SFML PostFX");
-
- // Define a string for displaying the error message
- sf::String ErrorStr("Sorry, your system doesn't support post-effects");
- ErrorStr.SetPosition(100.f, 250.f);
- ErrorStr.SetColor(sf::Color(200, 100, 150));
-
- // Start the game loop
- bool Running = true;
- while (Running)
- {
- // Process events
- sf::Event Event;
- while (App.GetEvent(Event))
- {
- // Close window : exit
- if (Event.Type == sf::Event::Closed)
- Running = false;
-
- // Escape key : exit
- if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
- Running = false;
- }
-
- // Clear the window
- App.Clear();
-
- // Draw the error message
- App.Draw(ErrorStr);
-
- // Finally, display the rendered frame on screen
- App.Display();
- }
-}
diff --git a/samples/qt/Main.cpp b/samples/qt/Main.cpp
deleted file mode 100644
index 29f9dd8..0000000
--- a/samples/qt/Main.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include "QSFMLCanvas.hpp"
-#include <QApplication>
-#include <QVBoxLayout>
-#include <QFrame>
-#include <QLabel>
-
-
-////////////////////////////////////////////////////////////
-/// Custom SFML canvas
-////////////////////////////////////////////////////////////
-class MyCanvas : public QSFMLCanvas
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Construct the canvas
- ///
- ////////////////////////////////////////////////////////////
- MyCanvas(QWidget* Parent = NULL) :
- QSFMLCanvas(QSize(100, 100), 0, Parent)
- {
-
- }
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see QSFMLCanvas::OnInit
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnInit()
- {
- // Load the image
- myImage.LoadFromFile("datas/qt/sfml.png");
-
- // Setup the sprite
- mySprite.SetImage(myImage);
- mySprite.SetCenter(mySprite.GetSize() / 2.f);
- }
-
- ////////////////////////////////////////////////////////////
- /// /see QSFMLCanvas::OnUpdate
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnUpdate()
- {
- sf::Event Event;
- while (GetEvent(Event))
- {
- // Stick the sprite to the mouse cursor
- if (Event.Type == sf::Event::MouseMoved)
- {
- mySprite.SetPosition(ConvertCoords(Event.MouseMove.X, Event.MouseMove.Y));
- }
-
- // Adjust the size of the default view when the widget is resized
- if (Event.Type == sf::Event::Resized)
- {
- GetDefaultView().SetFromRect(sf::FloatRect(0, 0, Event.Size.Width, Event.Size.Height));
- }
- }
-
- // Rotate the sprite
- mySprite.Rotate(GetFrameTime() * 100.f);
-
- // Clear the view
- Clear(sf::Color(0, 128, 0));
-
- // Draw it
- Draw(mySprite);
- }
-
- ////////////////////////////////////////////////////////////
- /// Member data
- ////////////////////////////////////////////////////////////
- sf::Image myImage; ///< Some image to show
- sf::Sprite mySprite; ///< A sprite to display the image
-};
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main(int argc, char **argv)
-{
- QApplication App(argc, argv);
-
- // Create the main frame
- QFrame* MainFrame = new QFrame;
- MainFrame->setWindowTitle("Qt SFML");
- MainFrame->resize(400, 400);
- MainFrame->show();
-
- // Create a label for showing some text
- QLabel* Label = new QLabel("This is a SFML window\nembedded into a Qt frame :", MainFrame);
- Label->setFont(QFont("courier new", 14, 1, false));
-
- // Create a SFML view inside the main frame
- MyCanvas* SFMLView = new MyCanvas(MainFrame);
-
- // Create the main layout
- QVBoxLayout* Layout = new QVBoxLayout;
- Layout->addWidget(Label, 0);
- Layout->addWidget(SFMLView, 1);
- MainFrame->setLayout(Layout);
-
- return App.exec();
-}
diff --git a/samples/qt/Makefile b/samples/qt/Makefile
deleted file mode 100755
index 43d09cd..0000000
--- a/samples/qt/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = qt
-OBJ = Main.o QSFMLCanvas.o
-
-all: $(EXEC)
-
-qt: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-graphics -lsfml-window -lsfml-system -lQtCore -lQtGui -lX11
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS) -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/qt/QSFMLCanvas.cpp b/samples/qt/QSFMLCanvas.cpp
deleted file mode 100644
index 2f75566..0000000
--- a/samples/qt/QSFMLCanvas.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include "QSFMLCanvas.hpp"
-#include <QEvent>
-
-// Platform-specific headers
-#ifdef Q_WS_X11
- #include <Qt/qx11info_x11.h>
- #include <X11/Xlib.h>
-#endif
-
-
-////////////////////////////////////////////////////////////
-/// Construct the QSFMLCanvas
-////////////////////////////////////////////////////////////
-QSFMLCanvas::QSFMLCanvas(const QSize& Size, unsigned int FrameTime, QWidget* Parent) :
-QWidget(Parent)
-{
- // Resize the widget
- resize(Size);
-
- // Setup some states to allow direct rendering into the widget
- setAttribute(Qt::WA_PaintOnScreen);
- setAttribute(Qt::WA_OpaquePaintEvent);
- setAttribute(Qt::WA_NoSystemBackground);
-
- // Set strong focus to enable keyboard events to be received
- setFocusPolicy(Qt::StrongFocus);
-
- // Setup the timer
- myTimer.setInterval(FrameTime);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-QSFMLCanvas::~QSFMLCanvas()
-{
- // Nothing to do...
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification for the derived class that moment is good
-/// for doing initializations
-////////////////////////////////////////////////////////////
-void QSFMLCanvas::OnInit()
-{
- // Nothing to do by default...
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification for the derived class that moment is good
-/// for doing its update and drawing stuff
-////////////////////////////////////////////////////////////
-void QSFMLCanvas::OnUpdate()
-{
- // Nothing to do by default...
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the paint engine used by the widget to draw itself
-////////////////////////////////////////////////////////////
-QPaintEngine* QSFMLCanvas::paintEngine() const
-{
- return 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called each time an event is received by the widget ;
-/// we use it to catch the Polish event and initialize
-/// our SFML window
-////////////////////////////////////////////////////////////
-bool QSFMLCanvas::event(QEvent* Event)
-{
- if (Event->type() == QEvent::Polish)
- {
- // Under X11, we need to flush the commands sent to the server to ensure that
- // SFML will get an updated view of the windows
- #ifdef Q_WS_X11
- XFlush(QX11Info::display());
- #endif
-
- // Create the SFML window with the widget handle
- Create(winId());
-
- // Let the derived class do its specific stuff
- OnInit();
-
- // Setup the timer to trigger a refresh at specified framerate
- connect(&myTimer, SIGNAL(timeout()), this, SLOT(repaint()));
- myTimer.start();
- }
-
- return QWidget::event(Event);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called when the widget needs to be painted ;
-/// we use it to display a new frame
-////////////////////////////////////////////////////////////
-void QSFMLCanvas::paintEvent(QPaintEvent*)
-{
- // Let the derived class do its specific stuff
- OnUpdate();
-
- // Display on screen
- Display();
-}
diff --git a/samples/qt/QSFMLCanvas.hpp b/samples/qt/QSFMLCanvas.hpp
deleted file mode 100644
index 22a58ea..0000000
--- a/samples/qt/QSFMLCanvas.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-
-#ifndef QSFMLCANVAS_HPP
-#define QSFMLCANVAS_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics.hpp>
-#include <QWidget>
-#include <QTimer>
-
-
-class QEvent;
-
-////////////////////////////////////////////////////////////
-/// QSFMLCanvas allows to run SFML in a Qt control
-////////////////////////////////////////////////////////////
-class QSFMLCanvas : public QWidget, public sf::RenderWindow
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Construct the QSFMLCanvas
- ///
- /// \param Size : Initial size of the widget
- /// \param FrameTime : Frame duration, in milliseconds (0 by default)
- /// \param Parent : Parent of the widget (NULL by default)
- ///
- ////////////////////////////////////////////////////////////
- QSFMLCanvas(const QSize& Size, unsigned int FrameTime = 0, QWidget* Parent = NULL);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~QSFMLCanvas();
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Notification for the derived class that moment is good
- /// for doing initializations
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnInit();
-
- ////////////////////////////////////////////////////////////
- /// Notification for the derived class that moment is good
- /// for doing its update and drawing stuff
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnUpdate();
-
- ////////////////////////////////////////////////////////////
- /// Return the paint engine used by the widget to draw itself
- ///
- ////////////////////////////////////////////////////////////
- virtual QPaintEngine* paintEngine() const;
-
- ////////////////////////////////////////////////////////////
- /// Called each time an event is received by the widget ;
- /// we use it to catch the Polish event and initialize
- /// our SFML window
- ///
- ////////////////////////////////////////////////////////////
- virtual bool event(QEvent* Event);
-
- ////////////////////////////////////////////////////////////
- /// Called when the widget needs to be painted ;
- /// we use it to display a new frame
- ///
- ////////////////////////////////////////////////////////////
- virtual void paintEvent(QPaintEvent*);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- QTimer myTimer; ///< Timer used to update the view
-};
-
-
-#endif // QSFMLCANVAS_HPP
diff --git a/samples/sockets/Makefile b/samples/sockets/Makefile
deleted file mode 100755
index 6adf020..0000000
--- a/samples/sockets/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = sockets
-OBJ = Sockets.o TCP.o UDP.o
-
-all: $(EXEC)
-
-sockets: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-network -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/sockets/Sockets.cpp b/samples/sockets/Sockets.cpp
deleted file mode 100644
index 8c8d5c8..0000000
--- a/samples/sockets/Sockets.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <iostream>
-#include <cstdlib>
-
-
-////////////////////////////////////////////////////////////
-// Function prototypes
-// (I'm too lazy to put them into separate headers...)
-////////////////////////////////////////////////////////////
-void DoClientTCP(unsigned short Port);
-void DoClientUDP(unsigned short Port);
-void DoServerTCP(unsigned short Port);
-void DoServerUDP(unsigned short Port);
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main()
-{
- // Choose a random port for opening sockets (ports < 1024 are reserved)
- const unsigned short Port = 2435;
-
- // TCP or UDP ?
- char Protocol;
- std::cout << "Do you want to use TCP ('t') or UDP ('u') ? ";
- std::cin >> Protocol;
-
- // Client or server ?
- char Who;
- std::cout << "Do you want to be a server ('s') or a client ('c') ? ";
- std::cin >> Who;
-
- if (Who == 's')
- {
- // Run as a server
- if (Protocol == 't')
- DoServerTCP(Port);
- else
- DoServerUDP(Port);
- }
- else
- {
- // Run as a client
- if (Protocol == 't')
- DoClientTCP(Port);
- else
- DoClientUDP(Port);
- }
-
- // Wait until the user presses 'enter' key
- std::cout << "Press enter to exit..." << std::endl;
- std::cin.ignore(10000, '\n');
- std::cin.ignore(10000, '\n');
-
- return EXIT_SUCCESS;
-}
diff --git a/samples/sockets/TCP.cpp b/samples/sockets/TCP.cpp
deleted file mode 100644
index 25fbb9a..0000000
--- a/samples/sockets/TCP.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network.hpp>
-#include <iostream>
-
-
-////////////////////////////////////////////////////////////
-/// Create a client and connect it to a running server
-///
-////////////////////////////////////////////////////////////
-void DoClientTCP(unsigned short Port)
-{
- // Ask for server address
- sf::IPAddress ServerAddress;
- do
- {
- std::cout << "Type address or name of the server to connect to : ";
- std::cin >> ServerAddress;
- }
- while (!ServerAddress.IsValid());
-
- // Create a TCP socket for communicating with server
- sf::SocketTCP Client;
-
- // Connect to the specified server
- if (Client.Connect(Port, ServerAddress) != sf::Socket::Done)
- return;
- std::cout << "Connected to server " << ServerAddress << std::endl;
-
- // Receive a message from the client
- char Message[128];
- std::size_t Received;
- if (Client.Receive(Message, sizeof(Message), Received) != sf::Socket::Done)
- return;
-
- // Show it
- std::cout << "Message received from server : \"" << Message << "\"" << std::endl;
-
- // Define a message to send back to the server
- char ToSend[] = "Hi, I'm a client !";
-
- // Send the message
- if (Client.Send(ToSend, sizeof(ToSend)) != sf::Socket::Done)
- return;
- std::cout << "Message sent to server : \"" << ToSend << "\"" << std::endl;
-
- // Close the socket when we're done
- Client.Close();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Launch a server and wait for incoming connections
-///
-////////////////////////////////////////////////////////////
-void DoServerTCP(unsigned short Port)
-{
- // Create a TCP socket for communicating with clients
- sf::SocketTCP Server;
-
- // Listen to a port for incoming connections
- if (!Server.Listen(Port))
- return;
- std::cout << "Server is listening to port " << Port << ", waiting for connections... " << std::endl;
-
- // Wait for a connection
- sf::IPAddress ClientAddress;
- sf::SocketTCP Client;
- if (Server.Accept(Client, &ClientAddress) != sf::Socket::Done)
- return;
- std::cout << "Client connected : " << ClientAddress << std::endl;
-
- // Send a message to the client
- char ToSend[] = "Hi, I'm the server";
- if (Client.Send(ToSend, sizeof(ToSend)) != sf::Socket::Done)
- return;
- std::cout << "Message sent to the client : \"" << ToSend << "\"" << std::endl;
-
- // Receive a message back from the client
- char Message[128];
- std::size_t Received;
- if (Client.Receive(Message, sizeof(Message), Received) != sf::Socket::Done)
- return;
-
- // Show the message
- std::cout << "Message received from the client : \"" << Message << "\"" << std::endl;
-
- // Close the sockets when we're done
- Client.Close();
- Server.Close();
-}
diff --git a/samples/sockets/UDP.cpp b/samples/sockets/UDP.cpp
deleted file mode 100644
index b0bdb8d..0000000
--- a/samples/sockets/UDP.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network.hpp>
-#include <iostream>
-
-
-////////////////////////////////////////////////////////////
-/// Create a client and send a message to a running server
-///
-////////////////////////////////////////////////////////////
-void DoClientUDP(unsigned short Port)
-{
- // Ask for server address
- sf::IPAddress ServerAddress;
- do
- {
- std::cout << "Type address or name of the server to send the message to : ";
- std::cin >> ServerAddress;
- }
- while (!ServerAddress.IsValid());
-
- // Create a UDP socket for communicating with server
- sf::SocketUDP Client;
-
- // Send a message to the server
- char Message[] = "Hi, I'm a client !";
- if (Client.Send(Message, sizeof(Message), ServerAddress, Port) != sf::Socket::Done)
- return;
- std::cout << "Message sent to server : \"" << Message << "\"" << std::endl;
-
- // Close the socket when we're done
- Client.Close();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Launch a server and wait for incoming messages
-///
-////////////////////////////////////////////////////////////
-void DoServerUDP(unsigned short Port)
-{
- // Create a UDP socket for communicating with clients
- sf::SocketUDP Server;
-
- // Bind it to the specified port
- if (!Server.Bind(Port))
- return;
-
- // Receive a message from anyone
- sf::IPAddress ClientAddress;
- unsigned short ClientPort;
- char Message[128];
- std::size_t Received;
- if (Server.Receive(Message, sizeof(Message), Received, ClientAddress, ClientPort) != sf::Socket::Done)
- return;
-
- // Display it
- std::cout << "Message received from " << ClientAddress << " on port " << ClientPort
- << ": \"" << Message << "\"" << std::endl;
-
- // Close the socket when we're done
- Server.Close();
-}
diff --git a/samples/sound/Makefile b/samples/sound/Makefile
deleted file mode 100755
index 495c13e..0000000
--- a/samples/sound/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = sound
-OBJ = Sound.o
-
-all: $(EXEC)
-
-sound: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-audio -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/sound_capture/Makefile b/samples/sound_capture/Makefile
deleted file mode 100755
index bc49217..0000000
--- a/samples/sound_capture/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = sound_capture
-OBJ = SoundCapture.o
-
-all: $(EXEC)
-
-sound_capture: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-audio -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/voip/Client.cpp b/samples/voip/Client.cpp
deleted file mode 100644
index 7f23e3b..0000000
--- a/samples/voip/Client.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio.hpp>
-#include <SFML/Network.hpp>
-#include <iostream>
-
-
-const sf::Uint8 AudioData = 1;
-const sf::Uint8 EndOfStream = 2;
-
-
-////////////////////////////////////////////////////////////
-/// Specialization of audio recorder for sending recorded audio
-/// data through the network
-////////////////////////////////////////////////////////////
-class NetworkRecorder : public sf::SoundRecorder
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Constructor
- ///
- /// \param Socket : Socket that holds the connection with the server
- ///
- ////////////////////////////////////////////////////////////
- NetworkRecorder(sf::SocketTCP Socket) :
- mySocket(Socket)
- {
-
- }
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see SoundRecorder::ProcessSamples
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OnProcessSamples(const sf::Int16* Samples, std::size_t SamplesCount)
- {
- // Pack the audio samples into a network packet
- sf::Packet PacketOut;
- PacketOut << AudioData;
- PacketOut.Append(Samples, SamplesCount * sizeof(sf::Int16));
-
- // Send the audio packet to the server
- return mySocket.Send(PacketOut) == sf::Socket::Done;
- }
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- sf::SocketTCP mySocket; ///< Socket used to communicate with the server
-};
-
-
-////////////////////////////////////////////////////////////
-/// Create a client, connect it to a running server and
-/// start sending him audio data
-///
-////////////////////////////////////////////////////////////
-void DoClient(unsigned short Port)
-{
- // Check that the device can capture audio
- if (sf::SoundRecorder::CanCapture() == false)
- {
- std::cout << "Sorry, audio capture is not supported by your system" << std::endl;
- return;
- }
-
- // Ask for server address
- sf::IPAddress ServerAddress;
- do
- {
- std::cout << "Type address or name of the server to connect to : ";
- std::cin >> ServerAddress;
- }
- while (!ServerAddress.IsValid());
-
- // Create a TCP socket for communicating with server
- sf::SocketTCP Socket;
-
- // Connect to the specified server
- if (Socket.Connect(Port, ServerAddress) != sf::Socket::Done)
- return;
- std::cout << "Connected to server " << ServerAddress << std::endl;
-
- // Wait for user input...
- std::cin.ignore(10000, '\n');
- std::cout << "Press enter to start recording audio";
- std::cin.ignore(10000, '\n');
-
- // Create a instance of our custom recorder
- NetworkRecorder Recorder(Socket);
-
- // Start capturing audio data
- Recorder.Start(44100);
- std::cout << "Recording... press enter to stop";
- std::cin.ignore(10000, '\n');
- Recorder.Stop();
-
- // Send a "end-of-stream" packet
- sf::Packet PacketOut;
- PacketOut << EndOfStream;
- Socket.Send(PacketOut);
-
- // Close the socket when we're done
- Socket.Close();
-}
diff --git a/samples/voip/Makefile b/samples/voip/Makefile
deleted file mode 100755
index 1adca4e..0000000
--- a/samples/voip/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = voip
-OBJ = VoIP.o Client.o Server.o
-
-all: $(EXEC)
-
-voip: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-audio -lsfml-network -lsfml-system
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/window/Makefile b/samples/window/Makefile
deleted file mode 100755
index 6aa0abc..0000000
--- a/samples/window/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = window
-OBJ = Window.o
-
-all: $(EXEC)
-
-window: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-window -lsfml-system -lGLU
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/window/Window.cpp b/samples/window/Window.cpp
deleted file mode 100644
index 0f45741..0000000
--- a/samples/window/Window.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window.hpp>
-#include <fstream>
-
-
-////////////////////////////////////////////////////////////
-/// Entry point of application
-///
-/// \return Application exit code
-///
-////////////////////////////////////////////////////////////
-int main()
-{
- // Create the main window
- sf::Window App(sf::VideoMode(640, 480, 32), "SFML Window");
-
- // Create a clock for measuring the time elapsed
- sf::Clock Clock;
-
- // Set the color and depth clear values
- glClearDepth(1.f);
- glClearColor(0.f, 0.f, 0.f, 0.f);
-
- // Enable Z-buffer read and write
- glEnable(GL_DEPTH_TEST);
- glDepthMask(GL_TRUE);
-
- // Setup a perspective projection
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(90.f, 1.f, 1.f, 500.f);
-
- // Start the game loop
- while (App.IsOpened())
- {
- // Process events
- sf::Event Event;
- while (App.GetEvent(Event))
- {
- // Close window : exit
- if (Event.Type == sf::Event::Closed)
- App.Close();
-
- // Escape key : exit
- if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
- App.Close();
-
- // Resize event : adjust viewport
- if (Event.Type == sf::Event::Resized)
- glViewport(0, 0, Event.Size.Width, Event.Size.Height);
- }
-
- // Set the active window before using OpenGL commands
- // It's useless here because the active window is always the same,
- // but don't forget it if you use multiple windows
- App.SetActive();
-
- // Clear color and depth buffer
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- // Apply some transformations
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.f, 0.f, -200.f);
- glRotatef(Clock.GetElapsedTime() * 50, 1.f, 0.f, 0.f);
- glRotatef(Clock.GetElapsedTime() * 30, 0.f, 1.f, 0.f);
- glRotatef(Clock.GetElapsedTime() * 90, 0.f, 0.f, 1.f);
-
- // Draw a cube
- glBegin(GL_QUADS);
-
- glColor3f(1.f, 0.f, 0.f);
- glVertex3f(-50.f, -50.f, -50.f);
- glVertex3f(-50.f, 50.f, -50.f);
- glVertex3f( 50.f, 50.f, -50.f);
- glVertex3f( 50.f, -50.f, -50.f);
-
- glColor3f(1.f, 0.f, 0.f);
- glVertex3f(-50.f, -50.f, 50.f);
- glVertex3f(-50.f, 50.f, 50.f);
- glVertex3f( 50.f, 50.f, 50.f);
- glVertex3f( 50.f, -50.f, 50.f);
-
- glColor3f(0.f, 1.f, 0.f);
- glVertex3f(-50.f, -50.f, -50.f);
- glVertex3f(-50.f, 50.f, -50.f);
- glVertex3f(-50.f, 50.f, 50.f);
- glVertex3f(-50.f, -50.f, 50.f);
-
- glColor3f(0.f, 1.f, 0.f);
- glVertex3f(50.f, -50.f, -50.f);
- glVertex3f(50.f, 50.f, -50.f);
- glVertex3f(50.f, 50.f, 50.f);
- glVertex3f(50.f, -50.f, 50.f);
-
- glColor3f(0.f, 0.f, 1.f);
- glVertex3f(-50.f, -50.f, 50.f);
- glVertex3f(-50.f, -50.f, -50.f);
- glVertex3f( 50.f, -50.f, -50.f);
- glVertex3f( 50.f, -50.f, 50.f);
-
- glColor3f(0.f, 0.f, 1.f);
- glVertex3f(-50.f, 50.f, 50.f);
- glVertex3f(-50.f, 50.f, -50.f);
- glVertex3f( 50.f, 50.f, -50.f);
- glVertex3f( 50.f, 50.f, 50.f);
-
- glEnd();
-
- // Finally, display the rendered frame on screen
- App.Display();
- }
-
- return EXIT_SUCCESS;
-}
diff --git a/samples/wxwidgets/Main.cpp b/samples/wxwidgets/Main.cpp
deleted file mode 100644
index 1757afb..0000000
--- a/samples/wxwidgets/Main.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include "wxSFMLCanvas.hpp"
-#include <iostream>
-
-
-////////////////////////////////////////////////////////////
-/// Custom SFML canvas
-////////////////////////////////////////////////////////////
-class MyCanvas : public wxSFMLCanvas
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Construct the canvas
- ///
- ////////////////////////////////////////////////////////////
- MyCanvas(wxWindow* Parent, wxWindowID Id, const wxPoint& Position, const wxSize& Size, long Style = 0) :
- wxSFMLCanvas(Parent, Id, Position, Size, Style)
- {
- // Load an image and assign it to our sprite
- myImage.LoadFromFile("datas/wxwidgets/sfml.png");
- mySprite.SetImage(myImage);
- mySprite.SetCenter(mySprite.GetSize() / 2.f);
-
- // Catch the mouse move event
- Connect(wxEVT_MOTION, wxMouseEventHandler(MyCanvas::OnMouseMove));
- }
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see wxSFMLCanvas::OnUpdate
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnUpdate()
- {
- // Rotate the sprite
- if (GetInput().IsMouseButtonDown(sf::Mouse::Left)) mySprite.Rotate( GetFrameTime() * 50);
- if (GetInput().IsMouseButtonDown(sf::Mouse::Right)) mySprite.Rotate(-GetFrameTime() * 50);
-
- // Clear the view
- Clear(sf::Color(0, 128, 128));
-
- // Display the sprite in the view
- Draw(mySprite);
- }
-
- ////////////////////////////////////////////////////////////
- /// Function called when the mouse cursor moves
- ///
- ////////////////////////////////////////////////////////////
- void OnMouseMove(wxMouseEvent& Event)
- {
- // Make the sprite follow the mouse cursor
- mySprite.SetX(Event.GetX());
- mySprite.SetY(Event.GetY());
- }
-
- ////////////////////////////////////////////////////////////
- /// Member data
- ////////////////////////////////////////////////////////////
- sf::Image myImage; ///< Some image to load...
- sf::Sprite mySprite; ///< Something to draw...
-};
-
-
-////////////////////////////////////////////////////////////
-/// Our main window
-////////////////////////////////////////////////////////////
-class MyFrame : public wxFrame
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor : setup the window
- ///
- ////////////////////////////////////////////////////////////
- MyFrame() :
- wxFrame(NULL, wxID_ANY, wxT("SFML wxWidgets"), wxDefaultPosition, wxSize(440, 280))
- {
- // Let's create a SFML view
- new MyCanvas(this, wxID_ANY, wxPoint(20, 20), wxSize(400, 200));
- }
-};
-
-
-////////////////////////////////////////////////////////////
-/// Our application class
-////////////////////////////////////////////////////////////
-class MyApplication : public wxApp
-{
-private :
-
- ////////////////////////////////////////////////////////////
- /// Initialize the application
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OnInit()
- {
- // Create the main window
- MyFrame* MainFrame = new MyFrame;
- MainFrame->Show();
-
- return true;
- }
-};
-
-IMPLEMENT_APP(MyApplication);
diff --git a/samples/wxwidgets/Makefile b/samples/wxwidgets/Makefile
deleted file mode 100755
index e6586ec..0000000
--- a/samples/wxwidgets/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-EXEC = wxwidgets
-OBJ = Main.o wxSFMLCanvas.o
-
-all: $(EXEC)
-
-wxwidgets: $(OBJ)
- $(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-graphics -lsfml-window -lsfml-system `wx-config --libs` `pkg-config --libs gtk+-2.0`
-
-%.o: %.cpp
- $(CC) -o $@ -c $< $(CFLAGS) -I/usr/include/gtk-2.0 `wx-config --cppflags` `pkg-config --cflags gtk+-2.0`
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf *.o
-
-mrproper: clean
- @rm -rf $(EXECPATH)/$(EXEC)
diff --git a/samples/wxwidgets/wxSFMLCanvas.cpp b/samples/wxwidgets/wxSFMLCanvas.cpp
deleted file mode 100644
index 915b9f1..0000000
--- a/samples/wxwidgets/wxSFMLCanvas.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include "wxSFMLCanvas.hpp"
-
-// Platform-specific includes
-#ifdef __WXGTK__
- #include <gdk/gdkx.h>
- #include <gtk/gtk.h>
- #include <wx/gtk/win_gtk.h>
-#endif
-
-
-////////////////////////////////////////////////////////////
-// Event table
-////////////////////////////////////////////////////////////
-BEGIN_EVENT_TABLE(wxSFMLCanvas, wxControl)
- EVT_IDLE(wxSFMLCanvas::OnIdle)
- EVT_PAINT(wxSFMLCanvas::OnPaint)
- EVT_ERASE_BACKGROUND(wxSFMLCanvas::OnEraseBackground)
-END_EVENT_TABLE()
-
-
-////////////////////////////////////////////////////////////
-/// Construct the wxSFMLCanvas
-////////////////////////////////////////////////////////////
-wxSFMLCanvas::wxSFMLCanvas(wxWindow* Parent, wxWindowID Id, const wxPoint& Position, const wxSize& Size, long Style) :
-wxControl(Parent, Id, Position, Size, Style)
-{
- #ifdef __WXGTK__
-
- // GTK implementation requires to go deeper to find the low-level X11 identifier of the widget
- gtk_widget_realize(m_wxwindow);
- gtk_widget_set_double_buffered(m_wxwindow, false);
- GdkWindow* Win = GTK_PIZZA(m_wxwindow)->bin_window;
- XFlush(GDK_WINDOW_XDISPLAY(Win));
- sf::RenderWindow::Create(GDK_WINDOW_XWINDOW(Win));
-
- #else
-
- // Tested under Windows XP only (should work with X11 and other Windows versions - no idea about MacOS)
- sf::RenderWindow::Create(GetHandle());
-
- #endif
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-wxSFMLCanvas::~wxSFMLCanvas()
-{
- // Nothing to do...
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification for the derived class that moment is good
-/// for doing its update and drawing stuff
-////////////////////////////////////////////////////////////
-void wxSFMLCanvas::OnUpdate()
-{
- // Nothing to do by default...
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called when the control is idle - we can refresh our
-/// SFML window
-////////////////////////////////////////////////////////////
-void wxSFMLCanvas::OnIdle(wxIdleEvent&)
-{
- // Send a paint message when the control is idle, to ensure maximum framerate
- Refresh();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called when the control is repainted - we can display our
-/// SFML window
-////////////////////////////////////////////////////////////
-void wxSFMLCanvas::OnPaint(wxPaintEvent&)
-{
- // Make sure the control is able to be repainted
- wxPaintDC Dc(this);
-
- // Let the derived class do its specific stuff
- OnUpdate();
-
- // Display on screen
- Display();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called when the control needs to draw its background
-////////////////////////////////////////////////////////////
-void wxSFMLCanvas::OnEraseBackground(wxEraseEvent&)
-{
- // Don't do anything. We intercept this event in order to prevent the
- // parent class to draw the background before repainting the window,
- // which would cause some flickering
-}
diff --git a/samples/wxwidgets/wxSFMLCanvas.hpp b/samples/wxwidgets/wxSFMLCanvas.hpp
deleted file mode 100644
index d73e614..0000000
--- a/samples/wxwidgets/wxSFMLCanvas.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-
-#ifndef WXSFMLCANVAS_HPP
-#define WXSFMLCANVAS_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics.hpp>
-#include <wx/wx.h>
-
-
-////////////////////////////////////////////////////////////
-/// wxSFMLCanvas allows to run SFML in a wxWidgets control
-////////////////////////////////////////////////////////////
-class wxSFMLCanvas : public wxControl, public sf::RenderWindow
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Construct the wxSFMLCanvas
- ///
- /// \param Parent : Parent of the control (NULL by default)
- /// \param Id : Identifier of the control (-1 by default)
- /// \param Position : Position of the control (wxDefaultPosition by default)
- /// \param Size : Size of the control (wxDefaultSize by default)
- /// \param Style : Style of the control (0 by default)
- ///
- ////////////////////////////////////////////////////////////
- wxSFMLCanvas(wxWindow* Parent = NULL, wxWindowID Id = -1, const wxPoint& Position = wxDefaultPosition, const wxSize& Size = wxDefaultSize, long Style = 0);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~wxSFMLCanvas();
-
-private :
-
- DECLARE_EVENT_TABLE()
-
- ////////////////////////////////////////////////////////////
- /// Notification for the derived class that moment is good
- /// for doing its update and drawing stuff
- ///
- ////////////////////////////////////////////////////////////
- virtual void OnUpdate();
-
- ////////////////////////////////////////////////////////////
- /// Called when the window is idle - we can refresh our
- /// SFML window
- ///
- ////////////////////////////////////////////////////////////
- void OnIdle(wxIdleEvent&);
-
- ////////////////////////////////////////////////////////////
- /// Called when the window is repainted - we can display our
- /// SFML window
- ///
- ////////////////////////////////////////////////////////////
- void OnPaint(wxPaintEvent&);
-
- ////////////////////////////////////////////////////////////
- /// Called when the window needs to draw its background
- ///
- ////////////////////////////////////////////////////////////
- void OnEraseBackground(wxEraseEvent&);
-};
-
-
-#endif // WXSFMLCANVAS_HPP
diff --git a/src/SFML/Audio/OpenAL.hpp b/src/SFML/Audio/ALCheck.cpp
index c1dea8c..0558f11 100755..100644
--- a/src/SFML/Audio/OpenAL.hpp
+++ b/src/SFML/Audio/ALCheck.cpp
@@ -1,132 +1,109 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_OPENAL_HPP
-#define SFML_OPENAL_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-#if defined(SFML_SYSTEM_MACOS)
-#include <OpenAL/al.h>
-#include <OpenAL/alc.h>
-#else
-#include <AL/al.h>
-#include <AL/alc.h>
-#endif
-
-#include <iostream>
-#include <string>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Let's define a macro to quickly check every OpenAL
-/// API calls
-///
-////////////////////////////////////////////////////////////
-#ifdef SFML_DEBUG
-
- // If in debug mode, perform a test on every call
- #define ALCheck(Func) ((Func), priv::ALCheckError(__FILE__, __LINE__))
-
-#else
-
- // Else, we don't add any overhead
- #define ALCheck(Func) (Func)
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-/// Check last OpenAL error
-///
-////////////////////////////////////////////////////////////
-inline void ALCheckError(const std::string& File, unsigned int Line)
-{
- // Get the last error
- ALenum ErrorCode = alGetError();
-
- if (ErrorCode != AL_NO_ERROR)
- {
- std::string Error, Desc;
-
- // Decode the error code
- switch (ErrorCode)
- {
- case AL_INVALID_NAME :
- {
- Error = "AL_INVALID_NAME";
- Desc = "an unacceptable name has been specified";
- break;
- }
-
- case AL_INVALID_ENUM :
- {
- Error = "AL_INVALID_ENUM";
- Desc = "an unacceptable value has been specified for an enumerated argument";
- break;
- }
-
- case AL_INVALID_VALUE :
- {
- Error = "AL_INVALID_VALUE";
- Desc = "a numeric argument is out of range";
- break;
- }
-
- case AL_INVALID_OPERATION :
- {
- Error = "AL_INVALID_OPERATION";
- Desc = "the specified operation is not allowed in the current state";
- break;
- }
-
- case AL_OUT_OF_MEMORY :
- {
- Error = "AL_OUT_OF_MEMORY";
- Desc = "there is not enough memory left to execute the command";
- break;
- }
- }
-
- // Log the error
- std::cerr << "An internal OpenAL call failed in "
- << File.substr(File.find_last_of("\\/") + 1) << " (" << Line << ") : "
- << Error << ", " << Desc
- << std::endl;
- }
-}
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_OPENAL_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Audio/ALCheck.hpp>
+#include <SFML/Audio/AudioDevice.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void alCheckError(const std::string& file, unsigned int line)
+{
+ // Get the last error
+ ALenum errorCode = alGetError();
+
+ if (errorCode != AL_NO_ERROR)
+ {
+ std::string error, description;
+
+ // Decode the error code
+ switch (errorCode)
+ {
+ case AL_INVALID_NAME :
+ {
+ error = "AL_INVALID_NAME";
+ description = "an unacceptable name has been specified";
+ break;
+ }
+
+ case AL_INVALID_ENUM :
+ {
+ error = "AL_INVALID_ENUM";
+ description = "an unacceptable value has been specified for an enumerated argument";
+ break;
+ }
+
+ case AL_INVALID_VALUE :
+ {
+ error = "AL_INVALID_VALUE";
+ description = "a numeric argument is out of range";
+ break;
+ }
+
+ case AL_INVALID_OPERATION :
+ {
+ error = "AL_INVALID_OPERATION";
+ description = "the specified operation is not allowed in the current state";
+ break;
+ }
+
+ case AL_OUT_OF_MEMORY :
+ {
+ error = "AL_OUT_OF_MEMORY";
+ description = "there is not enough memory left to execute the command";
+ break;
+ }
+ }
+
+ // Log the error
+ err() << "An internal OpenAL call failed in "
+ << file.substr(file.find_last_of("\\/") + 1) << " (" << line << ") : "
+ << error << ", " << description
+ << std::endl;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+/// Make sure that OpenAL is initialized
+////////////////////////////////////////////////////////////
+void ensureALInit()
+{
+ // The audio device is instanciated on demand rather than at global startup,
+ // which solves a lot of weird crashes and errors.
+ // It is destroyed at global exit which is fine.
+
+ static AudioDevice globalDevice;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Template for new ports/Joystick.cpp b/src/SFML/Audio/ALCheck.hpp
index 442e329..7c7d659 100755..100644
--- a/src/SFML/Window/Template for new ports/Joystick.cpp
+++ b/src/SFML/Audio/ALCheck.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,10 +22,17 @@
//
////////////////////////////////////////////////////////////
+#ifndef SFML_ALCHECK_HPP
+#define SFML_ALCHECK_HPP
+
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/xxx/Joystick.hpp>
+#include <SFML/Config.hpp>
+#include <iostream>
+#include <string>
+#include <al.h>
+#include <alc.h>
namespace sf
@@ -33,42 +40,39 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Initialize the instance and bind it to a physical joystick
+/// Let's define a macro to quickly check every OpenAL API calls
////////////////////////////////////////////////////////////
-void Joystick::Initialize(unsigned int Index)
-{
- // Reset the joystick state
-
- // Initialize the Index-th available joystick
-}
+#ifdef SFML_DEBUG
+ // If in debug mode, perform a test on every call
+ #define alCheck(Func) ((Func), priv::alCheckError(__FILE__, __LINE__))
-////////////////////////////////////////////////////////////
-/// Update the current joystick and return its new state
-////////////////////////////////////////////////////////////
-JoystickState Joystick::UpdateState()
-{
- // Fill a JoystickState instance with the current joystick state
-}
+#else
+
+ // Else, we don't add any overhead
+ #define alCheck(Func) (Func)
+
+#endif
////////////////////////////////////////////////////////////
-/// Get the number of axes supported by the joystick
+/// Check the last OpenAL error
+///
+/// \param file Source file where the call is located
+/// \param line Line number of the source file where the call is located
+///
////////////////////////////////////////////////////////////
-unsigned int Joystick::GetAxesCount() const
-{
- // Return number of supported axes
-}
-
+void alCheckError(const std::string& file, unsigned int line);
////////////////////////////////////////////////////////////
-/// Get the number of buttons supported by the joystick
+/// Make sure that OpenAL is initialized
+///
////////////////////////////////////////////////////////////
-unsigned int Joystick::GetButtonsCount() const
-{
- // Return number of supported buttons
-}
+void ensureALInit();
} // namespace priv
} // namespace sf
+
+
+#endif // SFML_ALCHECK_HPP
diff --git a/src/SFML/Audio/AudioDevice.cpp b/src/SFML/Audio/AudioDevice.cpp
index 096a163..d218b91 100755..100644
--- a/src/SFML/Audio/AudioDevice.cpp
+++ b/src/SFML/Audio/AudioDevice.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,143 +26,98 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Audio/AudioDevice.hpp>
-#include <SFML/Audio/AudioResource.hpp>
+#include <SFML/Audio/ALCheck.hpp>
#include <SFML/Audio/Listener.hpp>
-#include <algorithm>
-#include <iostream>
+#include <SFML/System/Err.hpp>
+namespace
+{
+ ALCdevice* audioDevice = NULL;
+ ALCcontext* audioContext = NULL;
+}
+
namespace sf
{
namespace priv
{
////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-AudioDevice* AudioDevice::ourInstance;
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-AudioDevice::AudioDevice() :
-myRefCount(0)
+AudioDevice::AudioDevice()
{
// Create the device
- myDevice = alcOpenDevice(NULL);
+ audioDevice = alcOpenDevice(NULL);
- if (myDevice)
+ if (audioDevice)
{
// Create the context
- myContext = alcCreateContext(myDevice, NULL);
+ audioContext = alcCreateContext(audioDevice, NULL);
- if (myContext)
+ if (audioContext)
{
// Set the context as the current one (we'll only need one)
- alcMakeContextCurrent(myContext);
-
- // Initialize the listener, located at the origin and looking along the Z axis
- Listener::SetPosition(0.f, 0.f, 0.f);
- Listener::SetTarget(0.f, 0.f, -1.f);
+ alcMakeContextCurrent(audioContext);
}
else
{
- std::cerr << "Failed to create the audio context" << std::endl;
+ err() << "Failed to create the audio context" << std::endl;
}
}
else
{
- std::cerr << "Failed to open the audio device" << std::endl;
+ err() << "Failed to open the audio device" << std::endl;
}
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
AudioDevice::~AudioDevice()
{
// Destroy the context
alcMakeContextCurrent(NULL);
- if (myContext)
- alcDestroyContext(myContext);
-
- // Destroy the device
- if (myDevice)
- alcCloseDevice(myDevice);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the unique instance of the class
-////////////////////////////////////////////////////////////
-AudioDevice& AudioDevice::GetInstance()
-{
- // Create the audio device if it doesn't exist
- if (!ourInstance)
- ourInstance = new AudioDevice;
-
- return *ourInstance;
-}
-
+ if (audioContext)
+ alcDestroyContext(audioContext);
-////////////////////////////////////////////////////////////
-/// Add a reference to the audio device
-////////////////////////////////////////////////////////////
-void AudioDevice::AddReference()
-{
- // Create the audio device if it doesn't exist
- if (!ourInstance)
- ourInstance = new AudioDevice;
-
- // Increase the references count
- ourInstance->myRefCount++;
+ // Destroy the device
+ if (audioDevice)
+ alcCloseDevice(audioDevice);
}
////////////////////////////////////////////////////////////
-/// Remove a reference to the audio device
-////////////////////////////////////////////////////////////
-void AudioDevice::RemoveReference()
+bool AudioDevice::isExtensionSupported(const std::string& extension)
{
- // Decrease the references count
- ourInstance->myRefCount--;
+ ensureALInit();
- // Destroy the audio device if the references count reaches 0
- if (ourInstance->myRefCount == 0)
- {
- delete ourInstance;
- ourInstance = NULL;
- }
+ if ((extension.length() > 2) && (extension.substr(0, 3) == "ALC"))
+ return alcIsExtensionPresent(audioDevice, extension.c_str()) != AL_FALSE;
+ else
+ return alIsExtensionPresent(extension.c_str()) != AL_FALSE;
}
////////////////////////////////////////////////////////////
-/// Get the OpenAL audio device
-////////////////////////////////////////////////////////////
-ALCdevice* AudioDevice::GetDevice() const
+int AudioDevice::getFormatFromChannelCount(unsigned int channelCount)
{
- return myDevice;
-}
-
+ ensureALInit();
-////////////////////////////////////////////////////////////
-/// Get the OpenAL format that matches the given number of channels
-////////////////////////////////////////////////////////////
-ALenum AudioDevice::GetFormatFromChannelsCount(unsigned int ChannelsCount) const
-{
// Find the good format according to the number of channels
- switch (ChannelsCount)
+ int format = 0;
+ switch (channelCount)
{
- case 1 : return AL_FORMAT_MONO16;
- case 2 : return AL_FORMAT_STEREO16;
- case 4 : return alGetEnumValue("AL_FORMAT_QUAD16");
- case 6 : return alGetEnumValue("AL_FORMAT_51CHN16");
- case 7 : return alGetEnumValue("AL_FORMAT_61CHN16");
- case 8 : return alGetEnumValue("AL_FORMAT_71CHN16");
+ case 1 : format = AL_FORMAT_MONO16; break;
+ case 2 : format = AL_FORMAT_STEREO16; break;
+ case 4 : format = alGetEnumValue("AL_FORMAT_QUAD16"); break;
+ case 6 : format = alGetEnumValue("AL_FORMAT_51CHN16"); break;
+ case 7 : format = alGetEnumValue("AL_FORMAT_61CHN16"); break;
+ case 8 : format = alGetEnumValue("AL_FORMAT_71CHN16"); break;
+ default : format = 0; break;
}
- return 0;
+ // Fixes a bug on OS X
+ if (format == -1)
+ format = 0;
+
+ return format;
}
} // namespace priv
diff --git a/src/SFML/Audio/AudioDevice.hpp b/src/SFML/Audio/AudioDevice.hpp
index 6b47177..01c7b4c 100755..100644
--- a/src/SFML/Audio/AudioDevice.hpp
+++ b/src/SFML/Audio/AudioDevice.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,90 +28,59 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Audio/OpenAL.hpp>
#include <set>
#include <string>
namespace sf
{
-class AudioResource;
-
namespace priv
{
-
////////////////////////////////////////////////////////////
-/// AudioDevice is the high-level wrapper around the audio API,
-/// it manages creation and destruction of the audio device and context
-/// and stores the device capabilities
+/// \brief High-level wrapper around the audio API, it manages
+/// the creation and destruction of the audio device and
+/// context and stores the device capabilities
+///
////////////////////////////////////////////////////////////
class AudioDevice
{
public :
////////////////////////////////////////////////////////////
- /// Get the unique instance of the class
- ///
- /// \return Unique instance of the class
- ///
- ////////////////////////////////////////////////////////////
- static AudioDevice& GetInstance();
-
- ////////////////////////////////////////////////////////////
- /// Add a reference to the audio device
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- static void AddReference();
+ AudioDevice();
////////////////////////////////////////////////////////////
- /// Remove a reference to the audio device
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
- static void RemoveReference();
+ ~AudioDevice();
////////////////////////////////////////////////////////////
- /// Get the OpenAL audio device
- ///
- /// \return OpenAL device (cannot be NULL)
+ /// \brief Check if an OpenAL extension is supported
///
- ////////////////////////////////////////////////////////////
- ALCdevice* GetDevice() const;
-
- ////////////////////////////////////////////////////////////
- /// Get the OpenAL format that matches the given number of channels
+ /// This functions automatically finds whether it
+ /// is an AL or ALC extension, and calls the corresponding
+ /// function.
///
- /// \param ChannelsCount : Number of channels
+ /// \param extension Name of the extension to test
///
- /// \return OpenAL device (cannot be NULL)
+ /// \return True if the extension is supported, false if not
///
////////////////////////////////////////////////////////////
- ALenum GetFormatFromChannelsCount(unsigned int ChannelsCount) const;
-
-private :
+ static bool isExtensionSupported(const std::string& extension);
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Get the OpenAL format that matches the given number of channels
///
- ////////////////////////////////////////////////////////////
- AudioDevice();
-
- ////////////////////////////////////////////////////////////
- /// Destructor
+ /// \param channelCount Number of channels
+ ///
+ /// \return Corresponding format
///
////////////////////////////////////////////////////////////
- ~AudioDevice();
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static AudioDevice* ourInstance; ///< Unique instance of the audio device
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- ALCdevice* myDevice; ///< Audio device
- ALCcontext* myContext; ///< Audio context
- unsigned int myRefCount; ///< References count
+ static int getFormatFromChannelCount(unsigned int channelCount);
};
} // namespace priv
diff --git a/src/SFML/Audio/CMakeLists.txt b/src/SFML/Audio/CMakeLists.txt
new file mode 100644
index 0000000..818b9b6
--- /dev/null
+++ b/src/SFML/Audio/CMakeLists.txt
@@ -0,0 +1,53 @@
+
+set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFML/Audio)
+set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/Audio)
+
+# all source files
+set(SRC
+ ${SRCROOT}/ALCheck.cpp
+ ${SRCROOT}/ALCheck.hpp
+ ${SRCROOT}/AudioDevice.cpp
+ ${SRCROOT}/AudioDevice.hpp
+ ${INCROOT}/Export.hpp
+ ${SRCROOT}/Listener.cpp
+ ${INCROOT}/Listener.hpp
+ ${SRCROOT}/Music.cpp
+ ${INCROOT}/Music.hpp
+ ${SRCROOT}/Sound.cpp
+ ${INCROOT}/Sound.hpp
+ ${SRCROOT}/SoundBuffer.cpp
+ ${INCROOT}/SoundBuffer.hpp
+ ${SRCROOT}/SoundBufferRecorder.cpp
+ ${INCROOT}/SoundBufferRecorder.hpp
+ ${SRCROOT}/SoundFile.cpp
+ ${SRCROOT}/SoundFile.hpp
+ ${SRCROOT}/SoundRecorder.cpp
+ ${INCROOT}/SoundRecorder.hpp
+ ${SRCROOT}/SoundSource.cpp
+ ${INCROOT}/SoundSource.hpp
+ ${SRCROOT}/SoundStream.cpp
+ ${INCROOT}/SoundStream.hpp
+)
+source_group("" FILES ${SRC})
+
+# let CMake know about our additional audio libraries paths (on Windows and OSX)
+if(WINDOWS)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/AL")
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libsndfile/windows")
+elseif (MACOSX)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libsndfile/osx")
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-osx/Frameworks")
+endif()
+
+# find external libraries
+find_package(OpenAL REQUIRED)
+find_package(Sndfile REQUIRED)
+
+# add include paths of external libraries
+include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR})
+
+# define the sfml-audio target
+sfml_add_library(sfml-audio
+ SOURCES ${SRC}
+ DEPENDS sfml-system
+ EXTERNAL_LIBS ${OPENAL_LIBRARY} ${SNDFILE_LIBRARY})
diff --git a/src/SFML/Audio/Listener.cpp b/src/SFML/Audio/Listener.cpp
index b51b3c5..a4995ce 100755..100644
--- a/src/SFML/Audio/Listener.cpp
+++ b/src/SFML/Audio/Listener.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,93 +26,86 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Audio/Listener.hpp>
-#include <SFML/Audio/OpenAL.hpp>
+#include <SFML/Audio/ALCheck.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Change the global volume of all the sounds
-////////////////////////////////////////////////////////////
-void Listener::SetGlobalVolume(float Volume)
+void Listener::setGlobalVolume(float volume)
{
- ALCheck(alListenerf(AL_GAIN, Volume * 0.01f));
+ priv::ensureALInit();
+
+ alCheck(alListenerf(AL_GAIN, volume * 0.01f));
}
////////////////////////////////////////////////////////////
-/// Get the current value of the global volume of all the sounds
-////////////////////////////////////////////////////////////
-float Listener::GetGlobalVolume()
+float Listener::getGlobalVolume()
{
- float Volume = 0.f;
- ALCheck(alGetListenerf(AL_GAIN, &Volume));
+ priv::ensureALInit();
+
+ float volume = 0.f;
+ alCheck(alGetListenerf(AL_GAIN, &volume));
- return Volume;
+ return volume * 100;
}
////////////////////////////////////////////////////////////
-/// Change the position of the listener (take 3 values)
-////////////////////////////////////////////////////////////
-void Listener::SetPosition(float X, float Y, float Z)
+void Listener::setPosition(float x, float y, float z)
{
- ALCheck(alListener3f(AL_POSITION, X, Y, Z));
+ priv::ensureALInit();
+
+ alCheck(alListener3f(AL_POSITION, x, y, z));
}
////////////////////////////////////////////////////////////
-/// Change the position of the listener (take a 3D vector)
-////////////////////////////////////////////////////////////
-void Listener::SetPosition(const Vector3f& Position)
+void Listener::setPosition(const Vector3f& position)
{
- SetPosition(Position.x, Position.y, Position.z);
+ setPosition(position.x, position.y, position.z);
}
////////////////////////////////////////////////////////////
-/// Get the current position of the listener
-////////////////////////////////////////////////////////////
-Vector3f Listener::GetPosition()
+Vector3f Listener::getPosition()
{
- Vector3f Position;
- ALCheck(alGetListener3f(AL_POSITION, &Position.x, &Position.y, &Position.z));
+ priv::ensureALInit();
+
+ Vector3f position;
+ alCheck(alGetListener3f(AL_POSITION, &position.x, &position.y, &position.z));
- return Position;
+ return position;
}
////////////////////////////////////////////////////////////
-/// Change the orientation of the listener (the point
-/// he must look at) (take 3 values)
-////////////////////////////////////////////////////////////
-void Listener::SetTarget(float X, float Y, float Z)
+void Listener::setDirection(float x, float y, float z)
{
- float Orientation[] = {X, Y, Z, 0.f, 1.f, 0.f};
- ALCheck(alListenerfv(AL_ORIENTATION, Orientation));
+ priv::ensureALInit();
+
+ float orientation[] = {x, y, z, 0.f, 1.f, 0.f};
+ alCheck(alListenerfv(AL_ORIENTATION, orientation));
}
////////////////////////////////////////////////////////////
-/// Change the orientation of the listener (the point
-/// he must look at) (take a 3D vector)
-////////////////////////////////////////////////////////////
-void Listener::SetTarget(const Vector3f& Target)
+void Listener::setDirection(const Vector3f& direction)
{
- SetTarget(Target.x, Target.y, Target.z);
+ setDirection(direction.x, direction.y, direction.z);
}
////////////////////////////////////////////////////////////
-/// Get the current orientation of the listener (the point
-/// he's looking at)
-////////////////////////////////////////////////////////////
-Vector3f Listener::GetTarget()
+Vector3f Listener::getDirection()
{
- float Orientation[6];
- ALCheck(alGetListenerfv(AL_ORIENTATION, Orientation));
+ priv::ensureALInit();
+
+ float orientation[6];
+ alCheck(alGetListenerfv(AL_ORIENTATION, orientation));
- return Vector3f(Orientation[0], Orientation[1], Orientation[2]);
+ return Vector3f(orientation[0], orientation[1], orientation[2]);
}
} // namespace sf
diff --git a/src/SFML/Audio/Makefile b/src/SFML/Audio/Makefile
deleted file mode 100755
index 0215e80..0000000
--- a/src/SFML/Audio/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-SRC = $(wildcard *.cpp)
-SRCVORBIS = $(wildcard ./stb_vorbis/*.c)
-OBJ = $(SRC:.cpp=.o)
-OBJVORBIS = $(SRCVORBIS:.c=.o)
-
-ifeq ($(STATIC), yes)
- LIB = libsfml-audio-s.a
- LIBNAME = $(LIBPATH)/$(LIB)
- INSTALL =
-else
- LIB = libsfml-audio.so
- LIBNAME = $(LIBPATH)/$(LIB).$(VERSION)
- INSTALL = && $(LN) $(LNFLAGS) $(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)
-endif
-
-all: $(LIB)
-
-libsfml-audio-s.a: $(OBJ) $(OBJVORBIS)
- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ) $(OBJVORBIS)
-
-libsfml-audio.so: $(OBJ) $(OBJVORBIS)
- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) $(OBJVORBIS) -lsndfile -lopenal
-
-$(OBJ): %.o: %.cpp
- $(CPP) -o $@ -c $< $(CFLAGS)
-
-$(OBJVORBIS): %.o: %.c
- $(CC) -o $@ -c $< $(CFLAGSEXT)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf $(OBJ) $(OBJVORBIS)
-
-mrproper: clean
- @rm -rf $(LIBNAME)
-
-install:
- @($(CP) $(LIBNAME) $(DESTLIBDIR) $(INSTALL))
diff --git a/src/SFML/Audio/Music.cpp b/src/SFML/Audio/Music.cpp
index 5023ff5..ef784e4 100755..100644
--- a/src/SFML/Audio/Music.cpp
+++ b/src/SFML/Audio/Music.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,128 +26,126 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Audio/Music.hpp>
-#include <SFML/Audio/OpenAL.hpp>
+#include <SFML/Audio/ALCheck.hpp>
#include <SFML/Audio/SoundFile.hpp>
+#include <SFML/System/Lock.hpp>
+#include <SFML/System/Err.hpp>
#include <fstream>
-#include <iostream>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Construct the music with a buffer size
-////////////////////////////////////////////////////////////
-Music::Music(std::size_t BufferSize) :
-myFile (NULL),
-myDuration(0.f),
-mySamples (BufferSize)
+Music::Music() :
+m_file (new priv::SoundFile),
+m_duration()
{
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
Music::~Music()
{
// We must stop before destroying the file :)
- Stop();
+ stop();
- delete myFile;
+ delete m_file;
}
////////////////////////////////////////////////////////////
-/// Open a music file (doesn't play it -- call Play() for that)
-////////////////////////////////////////////////////////////
-bool Music::OpenFromFile(const std::string& Filename)
+bool Music::openFromFile(const std::string& filename)
{
// First stop the music if it was already running
- Stop();
-
- // Create the sound file implementation, and open it in read mode
- delete myFile;
- myFile = priv::SoundFile::CreateRead(Filename);
- if (!myFile)
- {
- std::cerr << "Failed to open \"" << Filename << "\" for reading" << std::endl;
- return false;
- }
+ stop();
- // Compute the duration
- myDuration = static_cast<float>(myFile->GetSamplesCount()) / myFile->GetSampleRate() / myFile->GetChannelsCount();
+ // Open the underlying sound file
+ if (!m_file->openRead(filename))
+ return false;
- // Initialize the stream
- Initialize(myFile->GetChannelsCount(), myFile->GetSampleRate());
+ // Perform common initializations
+ initialize();
return true;
}
////////////////////////////////////////////////////////////
-/// Open a music file from memory (doesn't play it -- call Play() for that)
-////////////////////////////////////////////////////////////
-bool Music::OpenFromMemory(const char* Data, std::size_t SizeInBytes)
+bool Music::openFromMemory(const void* data, std::size_t sizeInBytes)
{
// First stop the music if it was already running
- Stop();
-
- // Create the sound file implementation, and open it in read mode
- delete myFile;
- myFile = priv::SoundFile::CreateRead(Data, SizeInBytes);
- if (!myFile)
- {
- std::cerr << "Failed to open music from memory for reading" << std::endl;
- return false;
- }
+ stop();
- // Compute the duration
- myDuration = static_cast<float>(myFile->GetSamplesCount()) / myFile->GetSampleRate();
+ // Open the underlying sound file
+ if (!m_file->openRead(data, sizeInBytes))
+ return false;
- // Initialize the stream
- Initialize(myFile->GetChannelsCount(), myFile->GetSampleRate());
+ // Perform common initializations
+ initialize();
return true;
}
////////////////////////////////////////////////////////////
-/// /see SoundStream::OnStart
-////////////////////////////////////////////////////////////
-bool Music::OnStart()
+bool Music::openFromStream(InputStream& stream)
{
- return myFile && myFile->Restart();
+ // First stop the music if it was already running
+ stop();
+
+ // Open the underlying sound file
+ if (!m_file->openRead(stream))
+ return false;
+
+ // Perform common initializations
+ initialize();
+
+ return true;
}
////////////////////////////////////////////////////////////
-/// /see SoundStream::OnGetData
+Time Music::getDuration() const
+{
+ return m_duration;
+}
+
+
////////////////////////////////////////////////////////////
-bool Music::OnGetData(SoundStream::Chunk& Data)
+bool Music::onGetData(SoundStream::Chunk& data)
{
- if (myFile)
- {
- // Fill the chunk parameters
- Data.Samples = &mySamples[0];
- Data.NbSamples = myFile->Read(&mySamples[0], mySamples.size());
-
- // Check if we have reached the end of the audio file
- return Data.NbSamples == mySamples.size();
- }
- else
- {
- return false;
- }
+ Lock lock(m_mutex);
+
+ // Fill the chunk parameters
+ data.samples = &m_samples[0];
+ data.sampleCount = m_file->read(&m_samples[0], m_samples.size());
+
+ // Check if we have reached the end of the audio file
+ return data.sampleCount == m_samples.size();
}
////////////////////////////////////////////////////////////
-/// Get the sound duration
+void Music::onSeek(Time timeOffset)
+{
+ Lock lock(m_mutex);
+
+ m_file->seek(timeOffset);
+}
+
+
////////////////////////////////////////////////////////////
-float Music::GetDuration() const
+void Music::initialize()
{
- return myDuration;
+ // Compute the music duration
+ m_duration = seconds(static_cast<float>(m_file->getSampleCount()) / m_file->getSampleRate() / m_file->getChannelCount());
+
+ // Resize the internal buffer so that it can contain 1 second of audio samples
+ m_samples.resize(m_file->getSampleRate() * m_file->getChannelCount());
+
+ // Initialize the stream
+ SoundStream::initialize(m_file->getChannelCount(), m_file->getSampleRate());
}
} // namespace sf
diff --git a/src/SFML/Audio/Sound.cpp b/src/SFML/Audio/Sound.cpp
index 84136db..8619cab 100755..100644
--- a/src/SFML/Audio/Sound.cpp
+++ b/src/SFML/Audio/Sound.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,378 +27,170 @@
////////////////////////////////////////////////////////////
#include <SFML/Audio/Sound.hpp>
#include <SFML/Audio/SoundBuffer.hpp>
-#include <SFML/Audio/OpenAL.hpp>
+#include <SFML/Audio/ALCheck.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Sound::Sound()
+Sound::Sound() :
+m_buffer(NULL)
{
- ALCheck(alGenSources(1, &mySource));
- ALCheck(alSourcei(mySource, AL_BUFFER, 0));
}
////////////////////////////////////////////////////////////
-/// Construct the sound from its parameters
-////////////////////////////////////////////////////////////
-Sound::Sound(const SoundBuffer& Buffer, bool Loop, float Pitch, float Volume, const Vector3f& Position) :
-myBuffer(NULL)
+Sound::Sound(const SoundBuffer& buffer) :
+m_buffer(NULL)
{
- ALCheck(alGenSources(1, &mySource));
-
- SetBuffer(Buffer);
- SetLoop(Loop);
- SetPitch(Pitch);
- SetVolume(Volume);
- SetPosition(Position);
+ setBuffer(buffer);
}
////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-Sound::Sound(const Sound& Copy) :
-AudioResource(Copy),
-myBuffer(NULL)
+Sound::Sound(const Sound& copy) :
+SoundSource(copy),
+m_buffer (NULL)
{
- ALCheck(alGenSources(1, &mySource));
-
- if (Copy.myBuffer)
- SetBuffer(*Copy.myBuffer);
- SetLoop(Copy.GetLoop());
- SetPitch(Copy.GetPitch());
- SetVolume(Copy.GetVolume());
- SetPosition(Copy.GetPosition());
- SetRelativeToListener(Copy.IsRelativeToListener());
- SetMinDistance(Copy.GetMinDistance());
- SetAttenuation(Copy.GetAttenuation());
+ if (copy.m_buffer)
+ setBuffer(*copy.m_buffer);
+ setLoop(copy.getLoop());
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
Sound::~Sound()
{
- if (mySource)
- {
- if (myBuffer)
- {
- Stop();
- ALCheck(alSourcei(mySource, AL_BUFFER, 0));
- myBuffer->DetachSound(this);
- }
- ALCheck(alDeleteSources(1, &mySource));
- }
+ stop();
+ if (m_buffer)
+ m_buffer->detachSound(this);
}
////////////////////////////////////////////////////////////
-/// Play the sound
-////////////////////////////////////////////////////////////
-void Sound::Play()
+void Sound::play()
{
- ALCheck(alSourcePlay(mySource));
+ alCheck(alSourcePlay(m_source));
}
////////////////////////////////////////////////////////////
-/// Pause the sound
-////////////////////////////////////////////////////////////
-void Sound::Pause()
+void Sound::pause()
{
- ALCheck(alSourcePause(mySource));
+ alCheck(alSourcePause(m_source));
}
////////////////////////////////////////////////////////////
-/// Stop the sound
-////////////////////////////////////////////////////////////
-void Sound::Stop()
+void Sound::stop()
{
- ALCheck(alSourceStop(mySource));
+ alCheck(alSourceStop(m_source));
}
////////////////////////////////////////////////////////////
-/// Set the source buffer
-////////////////////////////////////////////////////////////
-void Sound::SetBuffer(const SoundBuffer& Buffer)
+void Sound::setBuffer(const SoundBuffer& buffer)
{
// First detach from the previous buffer
- if (myBuffer)
+ if (m_buffer)
{
- Stop();
- myBuffer->DetachSound(this);
+ stop();
+ m_buffer->detachSound(this);
}
// Assign and use the new buffer
- myBuffer = &Buffer;
- myBuffer->AttachSound(this);
- ALCheck(alSourcei(mySource, AL_BUFFER, myBuffer->myBuffer));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the sound loop state
-////////////////////////////////////////////////////////////
-void Sound::SetLoop(bool Loop)
-{
- ALCheck(alSourcei(mySource, AL_LOOPING, Loop));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the sound pitch
-////////////////////////////////////////////////////////////
-void Sound::SetPitch(float Pitch)
-{
- ALCheck(alSourcef(mySource, AL_PITCH, Pitch));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the sound volume
-////////////////////////////////////////////////////////////
-void Sound::SetVolume(float Volume)
-{
- ALCheck(alSourcef(mySource, AL_GAIN, Volume * 0.01f));
-}
-
-////////////////////////////////////////////////////////////
-/// Set the sound position (take 3 values).
-/// The default position is (0, 0, 0)
-////////////////////////////////////////////////////////////
-void Sound::SetPosition(float X, float Y, float Z)
-{
- ALCheck(alSource3f(mySource, AL_POSITION, X, Y, Z));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the sound position (take a 3D vector).
-/// The default position is (0, 0, 0)
-////////////////////////////////////////////////////////////
-void Sound::SetPosition(const Vector3f& Position)
-{
- SetPosition(Position.x, Position.y, Position.z);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Make the sound's position relative to the listener's
-/// position, or absolute.
-/// The default value is false (absolute)
-////////////////////////////////////////////////////////////
-void Sound::SetRelativeToListener(bool Relative)
-{
- ALCheck(alSourcei(mySource, AL_SOURCE_RELATIVE, Relative));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the minimum distance - closer than this distance,
-/// the listener will hear the sound at its maximum volume.
-/// The default minimum distance is 1.0
-////////////////////////////////////////////////////////////
-void Sound::SetMinDistance(float MinDistance)
-{
- ALCheck(alSourcef(mySource, AL_REFERENCE_DISTANCE, MinDistance));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the attenuation factor - the higher the attenuation, the
-/// more the sound will be attenuated with distance from listener.
-/// The default attenuation factor 1.0
-////////////////////////////////////////////////////////////
-void Sound::SetAttenuation(float Attenuation)
-{
- ALCheck(alSourcef(mySource, AL_ROLLOFF_FACTOR, Attenuation));
+ m_buffer = &buffer;
+ m_buffer->attachSound(this);
+ alCheck(alSourcei(m_source, AL_BUFFER, m_buffer->m_buffer));
}
////////////////////////////////////////////////////////////
-/// Set the current playing position of the sound
-////////////////////////////////////////////////////////////
-void Sound::SetPlayingOffset(float TimeOffset)
+void Sound::setLoop(bool Loop)
{
- ALCheck(alSourcef(mySource, AL_SEC_OFFSET, TimeOffset));
+ alCheck(alSourcei(m_source, AL_LOOPING, Loop));
}
////////////////////////////////////////////////////////////
-/// Get the source buffer
-////////////////////////////////////////////////////////////
-const SoundBuffer* Sound::GetBuffer() const
+void Sound::setPlayingOffset(Time timeOffset)
{
- return myBuffer;
+ alCheck(alSourcef(m_source, AL_SEC_OFFSET, timeOffset.asSeconds()));
}
////////////////////////////////////////////////////////////
-/// Tell whether or not the sound is looping
-////////////////////////////////////////////////////////////
-bool Sound::GetLoop() const
+const SoundBuffer* Sound::getBuffer() const
{
- ALint Loop;
- ALCheck(alGetSourcei(mySource, AL_LOOPING, &Loop));
-
- return Loop != 0;
+ return m_buffer;
}
////////////////////////////////////////////////////////////
-/// Get the pitch
-////////////////////////////////////////////////////////////
-float Sound::GetPitch() const
+bool Sound::getLoop() const
{
- ALfloat Pitch;
- ALCheck(alGetSourcef(mySource, AL_PITCH, &Pitch));
+ ALint loop;
+ alCheck(alGetSourcei(m_source, AL_LOOPING, &loop));
- return Pitch;
+ return loop != 0;
}
////////////////////////////////////////////////////////////
-/// Get the volume
-////////////////////////////////////////////////////////////
-float Sound::GetVolume() const
+Time Sound::getPlayingOffset() const
{
- ALfloat Gain;
- ALCheck(alGetSourcef(mySource, AL_GAIN, &Gain));
+ ALfloat secs = 0.f;
+ alCheck(alGetSourcef(m_source, AL_SEC_OFFSET, &secs));
- return Gain * 100.f;
+ return seconds(secs);
}
////////////////////////////////////////////////////////////
-/// Get the sound position
-////////////////////////////////////////////////////////////
-Vector3f Sound::GetPosition() const
+Sound::Status Sound::getStatus() const
{
- Vector3f Position;
- ALCheck(alGetSource3f(mySource, AL_POSITION, &Position.x, &Position.y, &Position.z));
-
- return Position;
+ return SoundSource::getStatus();
}
////////////////////////////////////////////////////////////
-/// Tell if the sound's position is relative to the listener's
-/// position, or if it's absolute
-////////////////////////////////////////////////////////////
-bool Sound::IsRelativeToListener() const
-{
- ALint Relative;
- ALCheck(alGetSourcei(mySource, AL_SOURCE_RELATIVE, &Relative));
-
- return Relative != 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the minimum distance
-////////////////////////////////////////////////////////////
-float Sound::GetMinDistance() const
-{
- ALfloat MinDistance;
- ALCheck(alGetSourcef(mySource, AL_REFERENCE_DISTANCE, &MinDistance));
-
- return MinDistance;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the attenuation factor
-////////////////////////////////////////////////////////////
-float Sound::GetAttenuation() const
-{
- ALfloat Attenuation;
- ALCheck(alGetSourcef(mySource, AL_ROLLOFF_FACTOR, &Attenuation));
-
- return Attenuation;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the current playing position of the sound
-////////////////////////////////////////////////////////////
-float Sound::GetPlayingOffset() const
-{
- ALfloat Seconds = 0.f;
- ALCheck(alGetSourcef(mySource, AL_SEC_OFFSET, &Seconds));
-
- return Seconds;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the status of the sound (stopped, paused, playing)
-////////////////////////////////////////////////////////////
-Sound::Status Sound::GetStatus() const
-{
- ALint State;
- ALCheck(alGetSourcei(mySource, AL_SOURCE_STATE, &State));
-
- switch (State)
- {
- case AL_INITIAL :
- case AL_STOPPED : return Stopped;
- case AL_PAUSED : return Paused;
- case AL_PLAYING : return Playing;
- }
-
- return Stopped;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator
-////////////////////////////////////////////////////////////
-Sound& Sound::operator =(const Sound& Other)
+Sound& Sound::operator =(const Sound& right)
{
// Here we don't use the copy-and-swap idiom, because it would mess up
// the list of sound instances contained in the buffers
// Detach the sound instance from the previous buffer (if any)
- if (myBuffer)
+ if (m_buffer)
{
- Stop();
- myBuffer->DetachSound(this);
- myBuffer = NULL;
+ stop();
+ m_buffer->detachSound(this);
+ m_buffer = NULL;
}
// Copy the sound attributes
- if (Other.myBuffer)
- SetBuffer(*Other.myBuffer);
- SetLoop(Other.GetLoop());
- SetPitch(Other.GetPitch());
- SetVolume(Other.GetVolume());
- SetPosition(Other.GetPosition());
- SetRelativeToListener(Other.IsRelativeToListener());
- SetMinDistance(Other.GetMinDistance());
- SetAttenuation(Other.GetAttenuation());
+ if (right.m_buffer)
+ setBuffer(*right.m_buffer);
+ setLoop(right.getLoop());
+ setPitch(right.getPitch());
+ setVolume(right.getVolume());
+ setPosition(right.getPosition());
+ setRelativeToListener(right.isRelativeToListener());
+ setMinDistance(right.getMinDistance());
+ setAttenuation(right.getAttenuation());
return *this;
}
////////////////////////////////////////////////////////////
-/// Reset the internal buffer
-////////////////////////////////////////////////////////////
-void Sound::ResetBuffer()
+void Sound::resetBuffer()
{
// First stop the sound in case it is playing
- Stop();
+ stop();
// Detach the buffer
- ALCheck(alSourcei(mySource, AL_BUFFER, 0));
- myBuffer = NULL;
+ alCheck(alSourcei(m_source, AL_BUFFER, 0));
+ m_buffer = NULL;
}
} // namespace sf
diff --git a/src/SFML/Audio/SoundBuffer.cpp b/src/SFML/Audio/SoundBuffer.cpp
index e726b13..406a9fe 100755..100644
--- a/src/SFML/Audio/SoundBuffer.cpp
+++ b/src/SFML/Audio/SoundBuffer.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,164 +29,106 @@
#include <SFML/Audio/SoundFile.hpp>
#include <SFML/Audio/Sound.hpp>
#include <SFML/Audio/AudioDevice.hpp>
-#include <SFML/Audio/OpenAL.hpp>
-#include <iostream>
+#include <SFML/Audio/ALCheck.hpp>
+#include <SFML/System/Err.hpp>
#include <memory>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
SoundBuffer::SoundBuffer() :
-myBuffer (0),
-myDuration(0.f)
+m_buffer (0),
+m_duration()
{
+ priv::ensureALInit();
+
// Create the buffer
- ALCheck(alGenBuffers(1, &myBuffer));
+ alCheck(alGenBuffers(1, &m_buffer));
}
////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-SoundBuffer::SoundBuffer(const SoundBuffer& Copy) :
-AudioResource (Copy),
-Resource<SoundBuffer>(Copy),
-myBuffer (0),
-mySamples (Copy.mySamples),
-myDuration (Copy.myDuration),
-mySounds () // don't copy the attached sounds
+SoundBuffer::SoundBuffer(const SoundBuffer& copy) :
+m_buffer (0),
+m_samples (copy.m_samples),
+m_duration(copy.m_duration),
+m_sounds () // don't copy the attached sounds
{
// Create the buffer
- ALCheck(alGenBuffers(1, &myBuffer));
+ alCheck(alGenBuffers(1, &m_buffer));
// Update the internal buffer with the new samples
- Update(Copy.GetChannelsCount(), Copy.GetSampleRate());
+ update(copy.getChannelCount(), copy.getSampleRate());
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
SoundBuffer::~SoundBuffer()
{
// First detach the buffer from the sounds that use it (to avoid OpenAL errors)
- for (SoundList::const_iterator it = mySounds.begin(); it != mySounds.end(); ++it)
- (*it)->ResetBuffer();
+ for (SoundList::const_iterator it = m_sounds.begin(); it != m_sounds.end(); ++it)
+ (*it)->resetBuffer();
// Destroy the buffer
- if (myBuffer)
- ALCheck(alDeleteBuffers(1, &myBuffer));
+ if (m_buffer)
+ alCheck(alDeleteBuffers(1, &m_buffer));
}
////////////////////////////////////////////////////////////
-/// Load the sound buffer from a file
-////////////////////////////////////////////////////////////
-bool SoundBuffer::LoadFromFile(const std::string& Filename)
+bool SoundBuffer::loadFromFile(const std::string& filename)
{
- // Create the sound file
- std::auto_ptr<priv::SoundFile> File(priv::SoundFile::CreateRead(Filename));
-
- // Open the sound file
- if (File.get())
- {
- // Get the sound parameters
- std::size_t NbSamples = File->GetSamplesCount();
- unsigned int ChannelsCount = File->GetChannelsCount();
- unsigned int SampleRate = File->GetSampleRate();
-
- // Read the samples from the opened file
- mySamples.resize(NbSamples);
- if (File->Read(&mySamples[0], NbSamples) == NbSamples)
- {
- // Update the internal buffer with the new samples
- return Update(ChannelsCount, SampleRate);
- }
- else
- {
- // Error...
- std::cerr << "Failed to read audio data from file \"" << Filename << "\"" << std::endl;
-
- return false;
- }
- }
+ priv::SoundFile file;
+ if (file.openRead(filename))
+ return initialize(file);
else
- {
- // Error...
- std::cerr << "Failed to load sound buffer from file \"" << Filename << "\"" << std::endl;
-
return false;
- }
}
////////////////////////////////////////////////////////////
-/// Load the sound buffer from a file in memory
-////////////////////////////////////////////////////////////
-bool SoundBuffer::LoadFromMemory(const char* Data, std::size_t SizeInBytes)
+bool SoundBuffer::loadFromMemory(const void* data, std::size_t sizeInBytes)
{
- // Create the sound file
- std::auto_ptr<priv::SoundFile> File(priv::SoundFile::CreateRead(Data, SizeInBytes));
-
- // Open the sound file
- if (File.get())
- {
- // Get the sound parameters
- std::size_t NbSamples = File->GetSamplesCount();
- unsigned int ChannelsCount = File->GetChannelsCount();
- unsigned int SampleRate = File->GetSampleRate();
-
- // Read the samples from the opened file
- mySamples.resize(NbSamples);
- if (File->Read(&mySamples[0], NbSamples) == NbSamples)
- {
- // Update the internal buffer with the new samples
- return Update(ChannelsCount, SampleRate);
- }
- else
- {
- // Error...
- std::cerr << "Failed to read audio data from file in memory" << std::endl;
-
- return false;
- }
- }
+ priv::SoundFile file;
+ if (file.openRead(data, sizeInBytes))
+ return initialize(file);
else
- {
- // Error...
- std::cerr << "Failed to load sound buffer from file in memory" << std::endl;
-
return false;
- }
}
////////////////////////////////////////////////////////////
-/// Load the sound buffer from an array of samples - assumed format for
-/// samples is 16 bits signed integer
+bool SoundBuffer::loadFromStream(InputStream& stream)
+{
+ priv::SoundFile file;
+ if (file.openRead(stream))
+ return initialize(file);
+ else
+ return false;
+}
+
+
////////////////////////////////////////////////////////////
-bool SoundBuffer::LoadFromSamples(const Int16* Samples, std::size_t SamplesCount, unsigned int ChannelsCount, unsigned int SampleRate)
+bool SoundBuffer::loadFromSamples(const Int16* samples, std::size_t sampleCount, unsigned int channelCount, unsigned int sampleRate)
{
- if (Samples && SamplesCount && ChannelsCount && SampleRate)
+ if (samples && sampleCount && channelCount && sampleRate)
{
// Copy the new audio samples
- mySamples.assign(Samples, Samples + SamplesCount);
+ m_samples.assign(samples, samples + sampleCount);
// Update the internal buffer with the new samples
- return Update(ChannelsCount, SampleRate);
+ return update(channelCount, sampleRate);
}
else
{
// Error...
- std::cerr << "Failed to load sound buffer from memory ("
- << "Samples : " << Samples << ", "
- << "Samples count : " << SamplesCount << ", "
- << "Channels count : " << ChannelsCount << ", "
- << "Sample rate : " << SampleRate << ")"
- << std::endl;
+ err() << "Failed to load sound buffer from samples ("
+ << "array: " << samples << ", "
+ << "count: " << sampleCount << ", "
+ << "channels: " << channelCount << ", "
+ << "samplerate: " << sampleRate << ")"
+ << std::endl;
return false;
}
@@ -194,141 +136,140 @@ bool SoundBuffer::LoadFromSamples(const Int16* Samples, std::size_t SamplesCount
////////////////////////////////////////////////////////////
-/// Save the sound buffer to a file
-////////////////////////////////////////////////////////////
-bool SoundBuffer::SaveToFile(const std::string& Filename) const
+bool SoundBuffer::saveToFile(const std::string& filename) const
{
// Create the sound file in write mode
- std::auto_ptr<priv::SoundFile> File(priv::SoundFile::CreateWrite(Filename, GetChannelsCount(), GetSampleRate()));
- if (File.get())
+ priv::SoundFile file;
+ if (file.openWrite(filename, getChannelCount(), getSampleRate()))
{
// Write the samples to the opened file
- File->Write(&mySamples[0], mySamples.size());
+ file.write(&m_samples[0], m_samples.size());
return true;
}
else
{
- // Error...
- std::cerr << "Failed to save sound buffer to file \"" << Filename << "\"" << std::endl;
-
return false;
}
}
////////////////////////////////////////////////////////////
-/// Return the sound samples
-////////////////////////////////////////////////////////////
-const Int16* SoundBuffer::GetSamples() const
+const Int16* SoundBuffer::getSamples() const
{
- return mySamples.empty() ? NULL : &mySamples[0];
+ return m_samples.empty() ? NULL : &m_samples[0];
}
////////////////////////////////////////////////////////////
-/// Return the samples count
-////////////////////////////////////////////////////////////
-std::size_t SoundBuffer::GetSamplesCount() const
+std::size_t SoundBuffer::getSampleCount() const
{
- return mySamples.size();
+ return m_samples.size();
}
////////////////////////////////////////////////////////////
-/// Get the sample rate
-////////////////////////////////////////////////////////////
-unsigned int SoundBuffer::GetSampleRate() const
+unsigned int SoundBuffer::getSampleRate() const
{
- ALint SampleRate;
- ALCheck(alGetBufferi(myBuffer, AL_FREQUENCY, &SampleRate));
+ ALint sampleRate;
+ alCheck(alGetBufferi(m_buffer, AL_FREQUENCY, &sampleRate));
- return SampleRate;
+ return sampleRate;
}
////////////////////////////////////////////////////////////
-/// Return the number of channels (1 = mono, 2 = stereo, ...)
-////////////////////////////////////////////////////////////
-unsigned int SoundBuffer::GetChannelsCount() const
+unsigned int SoundBuffer::getChannelCount() const
{
- ALint ChannelsCount;
- ALCheck(alGetBufferi(myBuffer, AL_CHANNELS, &ChannelsCount));
+ ALint channelCount;
+ alCheck(alGetBufferi(m_buffer, AL_CHANNELS, &channelCount));
- return ChannelsCount;
+ return channelCount;
}
////////////////////////////////////////////////////////////
-/// Get the sound duration
-////////////////////////////////////////////////////////////
-float SoundBuffer::GetDuration() const
+Time SoundBuffer::getDuration() const
{
- return myDuration;
+ return m_duration;
}
////////////////////////////////////////////////////////////
-/// Assignment operator
-////////////////////////////////////////////////////////////
-SoundBuffer& SoundBuffer::operator =(const SoundBuffer& Other)
+SoundBuffer& SoundBuffer::operator =(const SoundBuffer& right)
{
- SoundBuffer Temp(Other);
+ SoundBuffer temp(right);
- std::swap(mySamples, Temp.mySamples);
- std::swap(myBuffer, Temp.myBuffer);
- std::swap(myDuration, Temp.myDuration);
- std::swap(mySounds, Temp.mySounds); // swap sounds too, so that they are detached when Temp is destroyed
+ std::swap(m_samples, temp.m_samples);
+ std::swap(m_buffer, temp.m_buffer);
+ std::swap(m_duration, temp.m_duration);
+ std::swap(m_sounds, temp.m_sounds); // swap sounds too, so that they are detached when temp is destroyed
return *this;
}
////////////////////////////////////////////////////////////
-/// Update the internal buffer with the audio samples
+bool SoundBuffer::initialize(priv::SoundFile& file)
+{
+ // Retrieve the sound parameters
+ std::size_t sampleCount = file.getSampleCount();
+ unsigned int channelCount = file.getChannelCount();
+ unsigned int sampleRate = file.getSampleRate();
+
+ // Read the samples from the provided file
+ m_samples.resize(sampleCount);
+ if (file.read(&m_samples[0], sampleCount) == sampleCount)
+ {
+ // Update the internal buffer with the new samples
+ return update(channelCount, sampleRate);
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
////////////////////////////////////////////////////////////
-bool SoundBuffer::Update(unsigned int ChannelsCount, unsigned int SampleRate)
+bool SoundBuffer::update(unsigned int channelCount, unsigned int sampleRate)
{
// Check parameters
- if (!SampleRate || !ChannelsCount || mySamples.empty())
+ if (!channelCount || !sampleRate || m_samples.empty())
return false;
// Find the good format according to the number of channels
- ALenum Format = priv::AudioDevice::GetInstance().GetFormatFromChannelsCount(ChannelsCount);
+ ALenum format = priv::AudioDevice::getFormatFromChannelCount(channelCount);
// Check if the format is valid
- if (Format == 0)
+ if (format == 0)
{
- std::cerr << "Unsupported number of channels (" << ChannelsCount << ")" << std::endl;
+ err() << "Failed to load sound buffer (unsupported number of channels: " << channelCount << ")" << std::endl;
return false;
}
// Fill the buffer
- ALsizei Size = static_cast<ALsizei>(mySamples.size()) * sizeof(Int16);
- ALCheck(alBufferData(myBuffer, Format, &mySamples[0], Size, SampleRate));
+ ALsizei size = static_cast<ALsizei>(m_samples.size()) * sizeof(Int16);
+ alCheck(alBufferData(m_buffer, format, &m_samples[0], size, sampleRate));
// Compute the duration
- myDuration = static_cast<float>(mySamples.size()) / SampleRate / ChannelsCount;
+ m_duration = milliseconds(1000 * m_samples.size() / sampleRate / channelCount);
return true;
}
////////////////////////////////////////////////////////////
-/// Add a sound to the list of sounds that use this buffer
-////////////////////////////////////////////////////////////
-void SoundBuffer::AttachSound(Sound* Instance) const
+void SoundBuffer::attachSound(Sound* sound) const
{
- mySounds.insert(Instance);
+ m_sounds.insert(sound);
}
////////////////////////////////////////////////////////////
-/// Remove a sound from the list of sounds that use this buffer
-////////////////////////////////////////////////////////////
-void SoundBuffer::DetachSound(Sound* Instance) const
+void SoundBuffer::detachSound(Sound* sound) const
{
- mySounds.erase(Instance);
+ m_sounds.erase(sound);
}
} // namespace sf
diff --git a/src/SFML/Audio/SoundBufferRecorder.cpp b/src/SFML/Audio/SoundBufferRecorder.cpp
index c0af7bf..a8b2993 100755..100644
--- a/src/SFML/Audio/SoundBufferRecorder.cpp
+++ b/src/SFML/Audio/SoundBufferRecorder.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -33,43 +33,36 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// /see SoundBuffer::OnStart
-////////////////////////////////////////////////////////////
-bool SoundBufferRecorder::OnStart()
+bool SoundBufferRecorder::onStart()
{
- mySamples.clear();
+ m_samples.clear();
+ m_buffer = SoundBuffer();
return true;
}
////////////////////////////////////////////////////////////
-/// /see SoundBuffer::OnProcessSamples
-////////////////////////////////////////////////////////////
-bool SoundBufferRecorder::OnProcessSamples(const Int16* Samples, std::size_t SamplesCount)
+bool SoundBufferRecorder::onProcessSamples(const Int16* samples, std::size_t sampleCount)
{
- std::copy(Samples, Samples + SamplesCount, std::back_inserter(mySamples));
+ std::copy(samples, samples + sampleCount, std::back_inserter(m_samples));
return true;
}
////////////////////////////////////////////////////////////
-/// /see SoundBuffer::OnStop
-////////////////////////////////////////////////////////////
-void SoundBufferRecorder::OnStop()
+void SoundBufferRecorder::onStop()
{
- if (!mySamples.empty())
- myBuffer.LoadFromSamples(&mySamples[0], mySamples.size(), 1, GetSampleRate());
+ if (!m_samples.empty())
+ m_buffer.loadFromSamples(&m_samples[0], m_samples.size(), 1, getSampleRate());
}
////////////////////////////////////////////////////////////
-/// Get the sound buffer containing the captured audio data
-////////////////////////////////////////////////////////////
-const SoundBuffer& SoundBufferRecorder::GetBuffer() const
+const SoundBuffer& SoundBufferRecorder::getBuffer() const
{
- return myBuffer;
+ return m_buffer;
}
} // namespace sf
diff --git a/src/SFML/Audio/SoundFile.cpp b/src/SFML/Audio/SoundFile.cpp
index 0554d8b..91db819 100755..100644
--- a/src/SFML/Audio/SoundFile.cpp
+++ b/src/SFML/Audio/SoundFile.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,9 +26,22 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Audio/SoundFile.hpp>
-#include <SFML/Audio/SoundFileDefault.hpp>
-#include <SFML/Audio/SoundFileOgg.hpp>
-#include <iostream>
+#include <SFML/System/InputStream.hpp>
+#include <SFML/System/Err.hpp>
+#include <cstring>
+#include <cctype>
+
+
+namespace
+{
+ // Convert a string to lower case
+ std::string toLower(std::string str)
+ {
+ for (std::string::iterator i = str.begin(); i != str.end(); ++i)
+ *i = static_cast<char>(std::tolower(*i));
+ return str;
+ }
+}
namespace sf
@@ -36,234 +49,375 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Create a new sound from a file, for reading
-////////////////////////////////////////////////////////////
-SoundFile* SoundFile::CreateRead(const std::string& Filename)
+SoundFile::SoundFile() :
+m_file (NULL),
+m_sampleCount (0),
+m_channelCount(0),
+m_sampleRate (0)
{
- // Create the file according to its type
- SoundFile* File = NULL;
- if (SoundFileOgg::IsFileSupported(Filename, true)) File = new SoundFileOgg;
- else if (SoundFileDefault::IsFileSupported(Filename, true)) File = new SoundFileDefault;
- // Open it for reading
- if (File)
- {
- std::size_t SamplesCount;
- unsigned int ChannelsCount;
- unsigned int SampleRate;
+}
- if (File->OpenRead(Filename, SamplesCount, ChannelsCount, SampleRate))
- {
- File->myFilename = Filename;
- File->myData = NULL;
- File->mySize = 0;
- File->myNbSamples = SamplesCount;
- File->myChannelsCount = ChannelsCount;
- File->mySampleRate = SampleRate;
- }
- else
- {
- delete File;
- File = NULL;
- }
- }
- return File;
+////////////////////////////////////////////////////////////
+SoundFile::~SoundFile()
+{
+ if (m_file)
+ sf_close(m_file);
}
////////////////////////////////////////////////////////////
-/// Create a new sound from a file in memory, for reading
-////////////////////////////////////////////////////////////
-SoundFile* SoundFile::CreateRead(const char* Data, std::size_t SizeInMemory)
+std::size_t SoundFile::getSampleCount() const
{
- // Create the file according to its type
- SoundFile* File = NULL;
- if (SoundFileOgg::IsFileSupported(Data, SizeInMemory)) File = new SoundFileOgg;
- else if (SoundFileDefault::IsFileSupported(Data, SizeInMemory)) File = new SoundFileDefault;
-
- // Open it for reading
- if (File)
- {
- std::size_t SamplesCount;
- unsigned int ChannelsCount;
- unsigned int SampleRate;
+ return m_sampleCount;
+}
- if (File->OpenRead(Data, SizeInMemory, SamplesCount, ChannelsCount, SampleRate))
- {
- File->myFilename = "";
- File->myData = Data;
- File->mySize = SizeInMemory;
- File->myNbSamples = SamplesCount;
- File->myChannelsCount = ChannelsCount;
- File->mySampleRate = SampleRate;
- }
- else
- {
- delete File;
- File = NULL;
- }
- }
- return File;
+////////////////////////////////////////////////////////////
+unsigned int SoundFile::getChannelCount() const
+{
+ return m_channelCount;
}
////////////////////////////////////////////////////////////
-/// Create a new sound from a file, for writing
-////////////////////////////////////////////////////////////
-SoundFile* SoundFile::CreateWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate)
+unsigned int SoundFile::getSampleRate() const
{
- // Create the file according to its type
- SoundFile* File = NULL;
- if (SoundFileOgg::IsFileSupported(Filename, false)) File = new SoundFileOgg;
- else if (SoundFileDefault::IsFileSupported(Filename, false)) File = new SoundFileDefault;
+ return m_sampleRate;
+}
+
- // Open it for writing
- if (File)
+////////////////////////////////////////////////////////////
+bool SoundFile::openRead(const std::string& filename)
+{
+ // If the file is already opened, first close it
+ if (m_file)
+ sf_close(m_file);
+
+ // Open the sound file
+ SF_INFO fileInfo;
+ fileInfo.format = 0;
+ m_file = sf_open(filename.c_str(), SFM_READ, &fileInfo);
+ if (!m_file)
{
- if (File->OpenWrite(Filename, ChannelsCount, SampleRate))
- {
- File->myFilename = "";
- File->myData = NULL;
- File->mySize = 0;
- File->myNbSamples = 0;
- File->myChannelsCount = ChannelsCount;
- File->mySampleRate = SampleRate;
- }
- else
- {
- delete File;
- File = NULL;
- }
+ err() << "Failed to open sound file \"" << filename << "\" (" << sf_strerror(m_file) << ")" << std::endl;
+ return false;
}
- return File;
+ // Initialize the internal state from the loaded information
+ initialize(fileInfo);
+
+ return true;
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SoundFile::SoundFile() :
-myNbSamples (0),
-myChannelsCount(0),
-mySampleRate (0)
+bool SoundFile::openRead(const void* data, std::size_t sizeInBytes)
{
+ // If the file is already opened, first close it
+ if (m_file)
+ sf_close(m_file);
+
+ // Prepare the memory I/O structure
+ SF_VIRTUAL_IO io;
+ io.get_filelen = &Memory::getLength;
+ io.read = &Memory::read;
+ io.seek = &Memory::seek;
+ io.tell = &Memory::tell;
+
+ // Initialize the memory data
+ m_memory.begin = static_cast<const char*>(data);
+ m_memory.current = m_memory.begin;
+ m_memory.size = sizeInBytes;
+
+ // Open the sound file
+ SF_INFO fileInfo;
+ fileInfo.format = 0;
+ m_file = sf_open_virtual(&io, SFM_READ, &fileInfo, &m_memory);
+ if (!m_file)
+ {
+ err() << "Failed to open sound file from memory (" << sf_strerror(m_file) << ")" << std::endl;
+ return false;
+ }
+
+ // Initialize the internal state from the loaded information
+ initialize(fileInfo);
+ return true;
}
////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
-SoundFile::~SoundFile()
+bool SoundFile::openRead(InputStream& stream)
{
- // Nothing to do
+ // If the file is already opened, first close it
+ if (m_file)
+ sf_close(m_file);
+
+ // Prepare the memory I/O structure
+ SF_VIRTUAL_IO io;
+ io.get_filelen = &Stream::getLength;
+ io.read = &Stream::read;
+ io.seek = &Stream::seek;
+ io.tell = &Stream::tell;
+
+ // Initialize the stream data
+ m_stream.source = &stream;
+ m_stream.size = stream.getSize();
+
+ // Make sure that the stream's reading position is at the beginning
+ stream.seek(0);
+
+ // Open the sound file
+ SF_INFO fileInfo;
+ fileInfo.format = 0;
+ m_file = sf_open_virtual(&io, SFM_READ, &fileInfo, &m_stream);
+ if (!m_file)
+ {
+ err() << "Failed to open sound file from stream (" << sf_strerror(m_file) << ")" << std::endl;
+ return false;
+ }
+
+ // Initialize the internal state from the loaded information
+ initialize(fileInfo);
+
+ return true;
}
////////////////////////////////////////////////////////////
-/// Get the total number of samples in the file
-////////////////////////////////////////////////////////////
-std::size_t SoundFile::GetSamplesCount() const
+bool SoundFile::openWrite(const std::string& filename, unsigned int channelCount, unsigned int sampleRate)
{
- return myNbSamples;
+ // If the file is already opened, first close it
+ if (m_file)
+ sf_close(m_file);
+
+ // Find the right format according to the file extension
+ int format = getFormatFromFilename(filename);
+ if (format == -1)
+ {
+ // Error : unrecognized extension
+ err() << "Failed to create sound file \"" << filename << "\" (unknown format)" << std::endl;
+ return false;
+ }
+
+ // Fill the sound infos with parameters
+ SF_INFO fileInfos;
+ fileInfos.channels = channelCount;
+ fileInfos.samplerate = sampleRate;
+ fileInfos.format = format | (format == SF_FORMAT_OGG ? SF_FORMAT_VORBIS : SF_FORMAT_PCM_16);
+
+ // Open the sound file for writing
+ m_file = sf_open(filename.c_str(), SFM_WRITE, &fileInfos);
+ if (!m_file)
+ {
+ err() << "Failed to create sound file \"" << filename << "\" (" << sf_strerror(m_file) << ")" << std::endl;
+ return false;
+ }
+
+ // Set the sound parameters
+ m_channelCount = channelCount;
+ m_sampleRate = sampleRate;
+ m_sampleCount = 0;
+
+ return true;
}
////////////////////////////////////////////////////////////
-/// Get the number of channels used by the sound
-////////////////////////////////////////////////////////////
-unsigned int SoundFile::GetChannelsCount() const
+std::size_t SoundFile::read(Int16* data, std::size_t sampleCount)
{
- return myChannelsCount;
+ if (m_file && data && sampleCount)
+ return static_cast<std::size_t>(sf_read_short(m_file, data, sampleCount));
+ else
+ return 0;
}
////////////////////////////////////////////////////////////
-/// Get the sample rate of the sound
-////////////////////////////////////////////////////////////
-unsigned int SoundFile::GetSampleRate() const
+void SoundFile::write(const Int16* data, std::size_t sampleCount)
{
- return mySampleRate;
+ if (m_file && data && sampleCount)
+ {
+ // Write small chunks instead of everything at once,
+ // to avoid a stack overflow in libsndfile (happens only with OGG format)
+ while (sampleCount > 0)
+ {
+ std::size_t count = sampleCount > 10000 ? 10000 : sampleCount;
+ sf_write_short(m_file, data, count);
+ data += count;
+ sampleCount -= count;
+ }
+ }
}
////////////////////////////////////////////////////////////
-/// Restart the sound from the beginning
-////////////////////////////////////////////////////////////
-bool SoundFile::Restart()
+void SoundFile::seek(Time timeOffset)
{
- if (myData)
- {
- // Reopen from memory
- return OpenRead(myData, mySize, myNbSamples, myChannelsCount, mySampleRate);
- }
- else if (myFilename != "")
- {
- // Reopen from file
- return OpenRead(myFilename, myNbSamples, myChannelsCount, mySampleRate);
- }
- else
+ if (m_file)
{
- // Trying to reopen a file opened in write mode... error
- std::cerr << "Warning : trying to restart a sound opened in write mode, which is not allowed" << std::endl;
- return false;
+ sf_count_t frameOffset = static_cast<sf_count_t>(timeOffset.asSeconds() * m_sampleRate);
+ sf_seek(m_file, frameOffset, SEEK_SET);
}
}
////////////////////////////////////////////////////////////
-/// Open the sound file for reading
-////////////////////////////////////////////////////////////
-bool SoundFile::OpenRead(const std::string& Filename, std::size_t&, unsigned int&, unsigned int&)
+void SoundFile::initialize(SF_INFO fileInfo)
{
- std::cerr << "Failed to open sound file \"" << Filename << "\", format is not supported by SFML" << std::endl;
+ // Save the sound properties
+ m_channelCount = fileInfo.channels;
+ m_sampleRate = fileInfo.samplerate;
+ m_sampleCount = static_cast<std::size_t>(fileInfo.frames) * fileInfo.channels;
+
+ // Enable scaling for Vorbis files (float samples)
+ // @todo enable when it's faster (it currently has to iterate over the *whole* music)
+ //if (fileInfo.format & SF_FORMAT_VORBIS)
+ // sf_command(m_file, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE);
+}
- return false;
+
+////////////////////////////////////////////////////////////
+int SoundFile::getFormatFromFilename(const std::string& filename)
+{
+ // Extract the extension
+ std::string ext = "wav";
+ std::string::size_type pos = filename.find_last_of(".");
+ if (pos != std::string::npos)
+ ext = filename.substr(pos + 1);
+
+ // Match every supported extension with its format constant
+ if (toLower(ext) == "wav" ) return SF_FORMAT_WAV;
+ if (toLower(ext) == "aif" ) return SF_FORMAT_AIFF;
+ if (toLower(ext) == "aiff" ) return SF_FORMAT_AIFF;
+ if (toLower(ext) == "au" ) return SF_FORMAT_AU;
+ if (toLower(ext) == "raw" ) return SF_FORMAT_RAW;
+ if (toLower(ext) == "paf" ) return SF_FORMAT_PAF;
+ if (toLower(ext) == "svx" ) return SF_FORMAT_SVX;
+ if (toLower(ext) == "nist" ) return SF_FORMAT_NIST;
+ if (toLower(ext) == "voc" ) return SF_FORMAT_VOC;
+ if (toLower(ext) == "sf" ) return SF_FORMAT_IRCAM;
+ if (toLower(ext) == "w64" ) return SF_FORMAT_W64;
+ if (toLower(ext) == "mat4" ) return SF_FORMAT_MAT4;
+ if (toLower(ext) == "mat5" ) return SF_FORMAT_MAT5;
+ if (toLower(ext) == "pvf" ) return SF_FORMAT_PVF;
+ if (toLower(ext) == "xi" ) return SF_FORMAT_XI;
+ if (toLower(ext) == "htk" ) return SF_FORMAT_HTK;
+ if (toLower(ext) == "sds" ) return SF_FORMAT_SDS;
+ if (toLower(ext) == "avr" ) return SF_FORMAT_AVR;
+ if (toLower(ext) == "sd2" ) return SF_FORMAT_SD2;
+ if (toLower(ext) == "flac" ) return SF_FORMAT_FLAC;
+ if (toLower(ext) == "caf" ) return SF_FORMAT_CAF;
+ if (toLower(ext) == "wve" ) return SF_FORMAT_WVE;
+ if (toLower(ext) == "ogg" ) return SF_FORMAT_OGG;
+ if (toLower(ext) == "mpc2k") return SF_FORMAT_MPC2K;
+ if (toLower(ext) == "rf64" ) return SF_FORMAT_RF64;
+
+ return -1;
}
////////////////////////////////////////////////////////////
-/// Open the sound file in memory for reading
+sf_count_t SoundFile::Memory::getLength(void* user)
+{
+ Memory* memory = static_cast<Memory*>(user);
+ return memory->size;
+}
+
+
////////////////////////////////////////////////////////////
-bool SoundFile::OpenRead(const char*, std::size_t, std::size_t&, unsigned int&, unsigned int&)
+sf_count_t SoundFile::Memory::read(void* ptr, sf_count_t count, void* user)
{
- std::cerr << "Failed to open sound file from memory, format is not supported by SFML" << std::endl;
+ Memory* memory = static_cast<Memory*>(user);
- return false;
+ sf_count_t position = tell(user);
+ if (position + count >= memory->size)
+ count = memory->size - position;
+
+ std::memcpy(ptr, memory->current, static_cast<std::size_t>(count));
+ memory->current += count;
+ return count;
}
////////////////////////////////////////////////////////////
-/// Open the sound file for writing
-////////////////////////////////////////////////////////////
-bool SoundFile::OpenWrite(const std::string& Filename, unsigned int, unsigned int)
+sf_count_t SoundFile::Memory::seek(sf_count_t offset, int whence, void* user)
{
- std::cerr << "Failed to open sound file \"" << Filename << "\", format is not supported by SFML" << std::endl;
+ Memory* memory = static_cast<Memory*>(user);
+ sf_count_t position = 0;
+ switch (whence)
+ {
+ case SEEK_SET : position = offset; break;
+ case SEEK_CUR : position = memory->current - memory->begin + offset; break;
+ case SEEK_END : position = memory->size - offset; break;
+ default : position = 0; break;
+ }
+
+ if (position >= memory->size)
+ position = memory->size - 1;
+ else if (position < 0)
+ position = 0;
- return false;
+ memory->current = memory->begin + position;
+ return position;
}
////////////////////////////////////////////////////////////
-/// Read samples from the loaded sound
+sf_count_t SoundFile::Memory::tell(void* user)
+{
+ Memory* memory = static_cast<Memory*>(user);
+ return memory->current - memory->begin;
+}
+
+
////////////////////////////////////////////////////////////
-std::size_t SoundFile::Read(Int16*, std::size_t)
+sf_count_t SoundFile::Stream::getLength(void* userData)
{
- std::cerr << "Failed to read from sound file (not supported)" << std::endl;
+ Stream* stream = static_cast<Stream*>(userData);
+ return stream->size;
+}
- return 0;
+
+////////////////////////////////////////////////////////////
+sf_count_t SoundFile::Stream::read(void* ptr, sf_count_t count, void* userData)
+{
+ Stream* stream = static_cast<Stream*>(userData);
+ Int64 position = stream->source->tell();
+ if (position != -1)
+ {
+ if (count > stream->size - position)
+ count = stream->size - position;
+ return stream->source->read(reinterpret_cast<char*>(ptr), count);
+ }
+ else
+ {
+ return -1;
+ }
}
////////////////////////////////////////////////////////////
-/// Write samples to the file
+sf_count_t SoundFile::Stream::seek(sf_count_t offset, int whence, void* userData)
+{
+ Stream* stream = static_cast<Stream*>(userData);
+ switch (whence)
+ {
+ case SEEK_SET : return stream->source->seek(offset);
+ case SEEK_CUR : return stream->source->seek(stream->source->tell() + offset);
+ case SEEK_END : return stream->source->seek(stream->size - offset);
+ default : return stream->source->seek(0);
+ }
+}
+
+
////////////////////////////////////////////////////////////
-void SoundFile::Write(const Int16*, std::size_t)
+sf_count_t SoundFile::Stream::tell(void* userData)
{
- std::cerr << "Failed to write to sound file (not supported)" << std::endl;
+ Stream* stream = static_cast<Stream*>(userData);
+ return stream->source->tell();
}
} // namespace priv
diff --git a/src/SFML/Audio/SoundFile.hpp b/src/SFML/Audio/SoundFile.hpp
index fb36bdd..105a951 100755..100644
--- a/src/SFML/Audio/SoundFile.hpp
+++ b/src/SFML/Audio/SoundFile.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,176 +29,195 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/NonCopyable.hpp>
+#include <SFML/System/Time.hpp>
+#include <sndfile.h>
#include <string>
namespace sf
{
+class InputStream;
+
namespace priv
{
////////////////////////////////////////////////////////////
-/// SoundFile is the abstract base class for loading
-/// and saving different sound file formats
+/// \brief Provide read and write access to sound files
+///
////////////////////////////////////////////////////////////
class SoundFile : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Create a new sound from a file, for reading
- ///
- /// \param Filename : Path of sound file
- /// \param NbSamples : Number of samples in the file
- /// \param ChannelsCount : Number of channels in the loaded sound
- /// \param SampleRate : Sample rate of the loaded sound
- ///
- /// \return Pointer to the new sound file (NULL if failed)
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- static SoundFile* CreateRead(const std::string& Filename);
+ SoundFile();
////////////////////////////////////////////////////////////
- /// Create a new sound from a file in memory, for reading
+ /// \brief Destructor
///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- /// \param NbSamples : Number of samples in the file
- /// \param ChannelsCount : Number of channels in the loaded sound
- /// \param SampleRate : Sample rate of the loaded sound
+ ////////////////////////////////////////////////////////////
+ ~SoundFile();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the total number of audio samples in the file
///
- /// \return Pointer to the new sound file (NULL if failed)
+ /// \return Number of samples
///
////////////////////////////////////////////////////////////
- static SoundFile* CreateRead(const char* Data, std::size_t SizeInBytes);
+ std::size_t getSampleCount() const;
////////////////////////////////////////////////////////////
- /// Create a new sound from a file, for writing
- ///
- /// \param Filename : Path of sound file
- /// \param ChannelsCount : Number of channels in the sound
- /// \param SampleRate : Sample rate of the sound
+ /// \brief Get the number of channels used by the sound
///
- /// \return Pointer to the new sound file (NULL if failed)
+ /// \return Number of channels (1 = mono, 2 = stereo)
///
////////////////////////////////////////////////////////////
- static SoundFile* CreateWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate);
+ unsigned int getChannelCount() const;
////////////////////////////////////////////////////////////
- /// Virtual destructor
+ /// \brief Get the sample rate of the sound
+ ///
+ /// \return Sample rate, in samples per second
///
////////////////////////////////////////////////////////////
- virtual ~SoundFile();
+ unsigned int getSampleRate() const;
////////////////////////////////////////////////////////////
- /// Get the total number of samples in the file
+ /// \brief Open a sound file for reading
///
- /// \return Number of samples
+ /// \param filename Path of the sound file to load
+ ///
+ /// \return True if the file was successfully opened
///
////////////////////////////////////////////////////////////
- std::size_t GetSamplesCount() const;
+ bool openRead(const std::string& filename);
////////////////////////////////////////////////////////////
- /// Get the number of channels used by the sound
+ /// \brief Open a sound file in memory for reading
///
- /// \return Number of channels (1 = mono, 2 = stereo)
+ /// \param data Pointer to the file data in memory
+ /// \param sizeInBytes Size of the data to load, in bytes
+ ///
+ /// \return True if the file was successfully opened
///
////////////////////////////////////////////////////////////
- unsigned int GetChannelsCount() const;
+ bool openRead(const void* data, std::size_t sizeInBytes);
////////////////////////////////////////////////////////////
- /// Get the sample rate of the sound
+ /// \brief Open a sound file from a custom stream for reading
///
- /// \return Sample rate, in samples / sec
+ /// \param stream Source stream to read from
+ ///
+ /// \return True if the file was successfully opened
///
////////////////////////////////////////////////////////////
- unsigned int GetSampleRate() const;
+ bool openRead(InputStream& stream);
////////////////////////////////////////////////////////////
- /// Restart the sound from the beginning
+ /// \brief a the sound file for writing
///
- /// \return True if restart was successful
+ /// \param filename Path of the sound file to write
+ /// \param channelCount Number of channels in the sound
+ /// \param sampleRate Sample rate of the sound
+ ///
+ /// \return True if the file was successfully opened
///
////////////////////////////////////////////////////////////
- bool Restart();
+ bool openWrite(const std::string& filename, unsigned int channelCount, unsigned int sampleRate);
////////////////////////////////////////////////////////////
- /// Read samples from the loaded sound
+ /// \brief Read audio samples from the loaded sound
///
- /// \param Data : Pointer to the samples array to fill
- /// \param NbSamples : Number of samples to read
+ /// \param data Pointer to the sample array to fill
+ /// \param sampleCount Number of samples to read
///
- /// \return Number of samples read
+ /// \return Number of samples actually read (may be less than \a sampleCount)
///
////////////////////////////////////////////////////////////
- virtual std::size_t Read(Int16* Data, std::size_t NbSamples);
+ std::size_t read(Int16* data, std::size_t sampleCount);
////////////////////////////////////////////////////////////
- /// Write samples to the file
+ /// \brief Write audio samples to the file
///
- /// \param Data : Pointer to the samples array to write
- /// \param NbSamples : Number of samples to write
+ /// \param data Pointer to the sample array to write
+ /// \param sampleCount Number of samples to write
///
////////////////////////////////////////////////////////////
- virtual void Write(const Int16* Data, std::size_t NbSamples);
-
-protected :
+ void write(const Int16* data, std::size_t sampleCount);
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Change the current read position in the file
+ ///
+ /// \param timeOffset New playing position, from the beginning of the file
///
////////////////////////////////////////////////////////////
- SoundFile();
+ void seek(Time timeOffset);
private :
////////////////////////////////////////////////////////////
- /// Open the sound file for reading
+ /// \brief Initialize the internal state of the sound file
///
- /// \param Filename : Path of sound file to load
- /// \param NbSamples : Number of samples in the file
- /// \param ChannelsCount : Number of channels in the loaded sound
- /// \param SampleRate : Sample rate of the loaded sound
+ /// This function is called by all the openRead functions.
///
- /// \return True if the file was successfully opened
+ /// \param fileInfo Information about the loaded sound file
///
////////////////////////////////////////////////////////////
- virtual bool OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
+ void initialize(SF_INFO fileInfo);
////////////////////////////////////////////////////////////
- /// Open the sound file in memory for reading
+ /// \brief Get the internal format of an audio file according to
+ /// its filename extension
///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- /// \param NbSamples : Number of samples in the file
- /// \param ChannelsCount : Number of channels in the loaded sound
- /// \param SampleRate : Sample rate of the loaded sound
+ /// \param filename Filename to check
///
- /// \return True if the file was successfully opened
+ /// \return Internal format matching the filename (-1 if no match)
///
////////////////////////////////////////////////////////////
- virtual bool OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
+ static int getFormatFromFilename(const std::string& filename);
////////////////////////////////////////////////////////////
- /// Open the sound file for writing
- ///
- /// \param Filename : Path of sound file to write
- /// \param ChannelsCount : Number of channels in the sound
- /// \param SampleRate : Sample rate of the sound
+ /// \brief Data and callbacks for opening from memory
///
- /// \return True if the file was successfully opened
+ ////////////////////////////////////////////////////////////
+ struct Memory
+ {
+ const char* begin;
+ const char* current;
+ sf_count_t size;
+
+ static sf_count_t getLength(void* user);
+ static sf_count_t read(void* ptr, sf_count_t count, void* user);
+ static sf_count_t seek(sf_count_t offset, int whence, void* user);
+ static sf_count_t tell(void* user);
+ };
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Data and callbacks for opening from stream
///
////////////////////////////////////////////////////////////
- virtual bool OpenWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate);
+ struct Stream
+ {
+ InputStream* source;
+ Int64 size;
+
+ static sf_count_t getLength(void* user);
+ static sf_count_t read(void* ptr, sf_count_t count, void* user);
+ static sf_count_t seek(sf_count_t offset, int whence, void* user);
+ static sf_count_t tell(void* user);
+ };
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::size_t myNbSamples; ///< Total number of samples in the file
- unsigned int myChannelsCount; ///< Number of channels used by the sound
- unsigned int mySampleRate; ///< Number of samples per second
- std::string myFilename; ///< Path of the file (valid if loaded from a file)
- const char* myData; ///< Pointer to the file in memory (valid if loaded from memory)
- std::size_t mySize; ///< Size of the file in memory (valid if loaded from memory)
+ SNDFILE* m_file; ///< File descriptor
+ Memory m_memory; ///< Memory reading info
+ Stream m_stream; ///< Stream reading info
+ std::size_t m_sampleCount; ///< Total number of samples in the file
+ unsigned int m_channelCount; ///< Number of channels used by the sound
+ unsigned int m_sampleRate; ///< Number of samples per second
};
} // namespace priv
diff --git a/src/SFML/Audio/SoundFileDefault.cpp b/src/SFML/Audio/SoundFileDefault.cpp
deleted file mode 100755
index 4413f6b..0000000
--- a/src/SFML/Audio/SoundFileDefault.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio/SoundFileDefault.hpp>
-#include <iostream>
-#include <string.h>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SoundFileDefault::SoundFileDefault() :
-myFile(NULL)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-SoundFileDefault::~SoundFileDefault()
-{
- if (myFile)
- sf_close(myFile);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if a given file is supported by this loader
-////////////////////////////////////////////////////////////
-bool SoundFileDefault::IsFileSupported(const std::string& Filename, bool Read)
-{
- if (Read)
- {
- // Open the sound file
- SF_INFO FileInfos;
- SNDFILE* File = sf_open(Filename.c_str(), SFM_READ, &FileInfos);
-
- if (File)
- {
- sf_close(File);
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- // Check the extension
- return GetFormatFromFilename(Filename) != -1;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if a given file in memory is supported by this loader
-////////////////////////////////////////////////////////////
-bool SoundFileDefault::IsFileSupported(const char* Data, std::size_t SizeInBytes)
-{
- // Define the I/O custom functions for reading from memory
- SF_VIRTUAL_IO VirtualIO;
- VirtualIO.get_filelen = &SoundFileDefault::MemoryGetLength;
- VirtualIO.read = &SoundFileDefault::MemoryRead;
- VirtualIO.seek = &SoundFileDefault::MemorySeek;
- VirtualIO.tell = &SoundFileDefault::MemoryTell;
- VirtualIO.write = &SoundFileDefault::MemoryWrite;
-
- // Initialize the memory data
- MemoryInfos Memory;
- Memory.DataStart = Data;
- Memory.DataPtr = Data;
- Memory.TotalSize = SizeInBytes;
-
- // Open the sound file
- SF_INFO FileInfos;
- SNDFILE* File = sf_open_virtual(&VirtualIO, SFM_READ, &FileInfos, &Memory);
-
- if (File)
- {
- sf_close(File);
- return true;
- }
- else
- {
- return false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Open the sound file for reading
-////////////////////////////////////////////////////////////
-bool SoundFileDefault::OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate)
-{
- // If the file is already opened, first close it
- if (myFile)
- sf_close(myFile);
-
- // Open the sound file
- SF_INFO FileInfos;
- myFile = sf_open(Filename.c_str(), SFM_READ, &FileInfos);
- if (!myFile)
- {
- std::cerr << "Failed to read sound file \"" << Filename << "\"" << std::endl;
- return false;
- }
-
- // Set the sound parameters
- ChannelsCount = FileInfos.channels;
- SampleRate = FileInfos.samplerate;
- NbSamples = static_cast<std::size_t>(FileInfos.frames) * ChannelsCount;
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sf::SoundFile::OpenRead
-////////////////////////////////////////////////////////////
-bool SoundFileDefault::OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate)
-{
- // If the file is already opened, first close it
- if (myFile)
- sf_close(myFile);
-
- // Define the I/O custom functions for reading from memory
- SF_VIRTUAL_IO VirtualIO;
- VirtualIO.get_filelen = &SoundFileDefault::MemoryGetLength;
- VirtualIO.read = &SoundFileDefault::MemoryRead;
- VirtualIO.seek = &SoundFileDefault::MemorySeek;
- VirtualIO.tell = &SoundFileDefault::MemoryTell;
- VirtualIO.write = &SoundFileDefault::MemoryWrite;
-
- // Initialize the memory data
- myMemory.DataStart = Data;
- myMemory.DataPtr = Data;
- myMemory.TotalSize = SizeInBytes;
-
- // Open the sound file
- SF_INFO FileInfos;
- myFile = sf_open_virtual(&VirtualIO, SFM_READ, &FileInfos, &myMemory);
- if (!myFile)
- {
- std::cerr << "Failed to read sound file from memory" << std::endl;
- return false;
- }
-
- // Set the sound parameters
- ChannelsCount = FileInfos.channels;
- SampleRate = FileInfos.samplerate;
- NbSamples = static_cast<std::size_t>(FileInfos.frames) * ChannelsCount;
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Open the sound file for writing
-////////////////////////////////////////////////////////////
-bool SoundFileDefault::OpenWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate)
-{
- // If the file is already opened, first close it
- if (myFile)
- sf_close(myFile);
-
- // Find the right format according to the file extension
- int Format = GetFormatFromFilename(Filename);
- if (Format == -1)
- {
- // Error : unrecognized extension
- std::cerr << "Failed to create sound file \"" << Filename << "\" : unknown format" << std::endl;
- return false;
- }
-
- // Fill the sound infos with parameters
- SF_INFO FileInfos;
- FileInfos.channels = ChannelsCount;
- FileInfos.samplerate = SampleRate;
- FileInfos.format = Format | SF_FORMAT_PCM_16;
-
- // Open the sound file for writing
- myFile = sf_open(Filename.c_str(), SFM_WRITE, &FileInfos);
- if (!myFile)
- {
- std::cerr << "Failed to create sound file \"" << Filename << "\"" << std::endl;
- return false;
- }
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Read samples from the loaded sound
-////////////////////////////////////////////////////////////
-std::size_t SoundFileDefault::Read(Int16* Data, std::size_t NbSamples)
-{
- if (myFile && Data && NbSamples)
- return static_cast<std::size_t>(sf_read_short(myFile, Data, NbSamples));
- else
- return 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Write samples to the file
-////////////////////////////////////////////////////////////
-void SoundFileDefault::Write(const Int16* Data, std::size_t NbSamples)
-{
- if (myFile && Data && NbSamples)
- sf_write_short(myFile, Data, NbSamples);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the internal format of an audio file according to
-/// its filename extension
-////////////////////////////////////////////////////////////
-int SoundFileDefault::GetFormatFromFilename(const std::string& Filename)
-{
- // Extract the extension
- std::string Ext = "wav";
- std::string::size_type Pos = Filename.find_last_of(".");
- if (Pos != std::string::npos)
- Ext = Filename.substr(Pos + 1);
-
- // Match every supported extension with its format constant
- if (Ext == "wav" || Ext == "WAV" ) return SF_FORMAT_WAV;
- if (Ext == "aif" || Ext == "AIF" ) return SF_FORMAT_AIFF;
- if (Ext == "aiff" || Ext == "AIFF") return SF_FORMAT_AIFF;
- if (Ext == "au" || Ext == "AU" ) return SF_FORMAT_AU;
- if (Ext == "raw" || Ext == "RAW" ) return SF_FORMAT_RAW;
- if (Ext == "paf" || Ext == "PAF" ) return SF_FORMAT_PAF;
- if (Ext == "svx" || Ext == "SVX" ) return SF_FORMAT_SVX;
- if (Ext == "voc" || Ext == "VOC" ) return SF_FORMAT_VOC;
- if (Ext == "sf" || Ext == "SF" ) return SF_FORMAT_IRCAM;
- if (Ext == "w64" || Ext == "W64" ) return SF_FORMAT_W64;
- if (Ext == "mat4" || Ext == "MAT4") return SF_FORMAT_MAT4;
- if (Ext == "mat5" || Ext == "MAT5") return SF_FORMAT_MAT5;
- if (Ext == "pvf" || Ext == "PVF" ) return SF_FORMAT_PVF;
- if (Ext == "htk" || Ext == "HTK" ) return SF_FORMAT_HTK;
- if (Ext == "caf" || Ext == "CAF" ) return SF_FORMAT_CAF;
- if (Ext == "nist" || Ext == "NIST") return SF_FORMAT_NIST; // SUPPORTED ?
- if (Ext == "sds" || Ext == "SDS" ) return SF_FORMAT_SDS; // SUPPORTED ?
- if (Ext == "avr" || Ext == "AVR" ) return SF_FORMAT_AVR; // SUPPORTED ?
- if (Ext == "sd2" || Ext == "SD2" ) return SF_FORMAT_SD2; // SUPPORTED ?
- if (Ext == "flac" || Ext == "FLAC") return SF_FORMAT_FLAC; // SUPPORTED ?
-
- return -1;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Functions for implementing custom read and write to memory files
-///
-////////////////////////////////////////////////////////////
-sf_count_t SoundFileDefault::MemoryGetLength(void* UserData)
-{
- MemoryInfos* Memory = static_cast<MemoryInfos*>(UserData);
-
- return Memory->TotalSize;
-}
-sf_count_t SoundFileDefault::MemoryRead(void* Ptr, sf_count_t Count, void* UserData)
-{
- MemoryInfos* Memory = static_cast<MemoryInfos*>(UserData);
-
- sf_count_t Position = Memory->DataPtr - Memory->DataStart;
- if (Position + Count >= Memory->TotalSize)
- Count = Memory->TotalSize - Position;
-
- memcpy(Ptr, Memory->DataPtr, static_cast<std::size_t>(Count));
-
- Memory->DataPtr += Count;
-
- return Count;
-}
-sf_count_t SoundFileDefault::MemorySeek(sf_count_t Offset, int Whence, void* UserData)
-{
- MemoryInfos* Memory = static_cast<MemoryInfos*>(UserData);
-
- sf_count_t Position = 0;
- switch (Whence)
- {
- case SEEK_SET :
- Position = Offset;
- break;
- case SEEK_CUR :
- Position = Memory->DataPtr - Memory->DataStart + Offset;
- break;
- case SEEK_END :
- Position = Memory->TotalSize - Offset;
- break;
- default :
- Position = 0;
- break;
- }
-
- if (Position >= Memory->TotalSize)
- Position = Memory->TotalSize - 1;
- else if (Position < 0)
- Position = 0;
-
- Memory->DataPtr = Memory->DataStart + Position;
-
- return Position;
-}
-sf_count_t SoundFileDefault::MemoryTell(void* UserData)
-{
- MemoryInfos* Memory = static_cast<MemoryInfos*>(UserData);
-
- return Memory->DataPtr - Memory->DataStart;
-}
-sf_count_t SoundFileDefault::MemoryWrite(const void*, sf_count_t, void*)
-{
- return 0;
-}
-
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Audio/SoundFileDefault.hpp b/src/SFML/Audio/SoundFileDefault.hpp
deleted file mode 100755
index 8317d54..0000000
--- a/src/SFML/Audio/SoundFileDefault.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SOUNDFILEDEFAULT_HPP
-#define SFML_SOUNDFILEDEFAULT_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio/SoundFile.hpp>
-#include <sndfile.h>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Specialization of SoundFile that can handle a lot of
-/// sound formats (see libsndfile homepage for a complete list)
-////////////////////////////////////////////////////////////
-class SoundFileDefault : public SoundFile
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- SoundFileDefault();
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~SoundFileDefault();
-
- ////////////////////////////////////////////////////////////
- /// Check if a given file is supported by this loader
- ///
- /// \param Filename : Path of the file to check
- /// \param Read : Is the file opened for reading or writing ?
- ///
- /// \param return True if the loader can handle this file
- ///
- ////////////////////////////////////////////////////////////
- static bool IsFileSupported(const std::string& Filename, bool Read);
-
- ////////////////////////////////////////////////////////////
- /// Check if a given file in memory is supported by this loader
- ///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- ///
- /// \param return True if the loader can handle this file
- ///
- ////////////////////////////////////////////////////////////
- static bool IsFileSupported(const char* Data, std::size_t SizeInBytes);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::Read
- ///
- ////////////////////////////////////////////////////////////
- virtual std::size_t Read(Int16* Data, std::size_t NbSamples);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::Write
- ///
- ////////////////////////////////////////////////////////////
- virtual void Write(const Int16* Data, std::size_t NbSamples);
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::OpenRead
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::OpenRead
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::OpenWrite
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OpenWrite(const std::string& Filename, unsigned int ChannelsCount, unsigned int SampleRate);
-
- ////////////////////////////////////////////////////////////
- /// Get the internal format of an audio file according to
- /// its filename extension
- ///
- /// \param Filename : Filename to check
- ///
- /// \return Internal format matching the filename (-1 if no match)
- ///
- ////////////////////////////////////////////////////////////
- static int GetFormatFromFilename(const std::string& Filename);
-
- ////////////////////////////////////////////////////////////
- /// Functions for implementing custom read and write to memory files
- ///
- ////////////////////////////////////////////////////////////
- static sf_count_t MemoryGetLength(void* UserData);
- static sf_count_t MemoryRead(void* Ptr, sf_count_t Count, void* UserData);
- static sf_count_t MemorySeek(sf_count_t Offset, int Whence, void* UserData);
- static sf_count_t MemoryTell(void* UserData);
- static sf_count_t MemoryWrite(const void* Ptr, sf_count_t Count, void* UserData);
-
- ////////////////////////////////////////////////////////////
- /// Structure holding data related to memory operations
- ////////////////////////////////////////////////////////////
- struct MemoryInfos
- {
- const char* DataStart; ///< Pointer to the begining of the data
- const char* DataPtr; ///< Pointer to the current read / write position
- sf_count_t TotalSize; ///< Total size of the data, in bytes
- };
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- SNDFILE* myFile; ///< File descriptor
- MemoryInfos myMemory; ///< Memory read / write data
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_SOUNDFILEDEFAULT_HPP
diff --git a/src/SFML/Audio/SoundFileOgg.cpp b/src/SFML/Audio/SoundFileOgg.cpp
deleted file mode 100755
index 8aa94f8..0000000
--- a/src/SFML/Audio/SoundFileOgg.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio/SoundFileOgg.hpp>
-#include <SFML/Audio/stb_vorbis/stb_vorbis.h>
-#include <iostream>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SoundFileOgg::SoundFileOgg() :
-myStream (NULL),
-myChannelsCount(0)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-SoundFileOgg::~SoundFileOgg()
-{
- if (myStream)
- stb_vorbis_close(myStream);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if a given file is supported by this loader
-////////////////////////////////////////////////////////////
-bool SoundFileOgg::IsFileSupported(const std::string& Filename, bool Read)
-{
- if (Read)
- {
- // Open the vorbis stream
- stb_vorbis* Stream = stb_vorbis_open_filename(const_cast<char*>(Filename.c_str()), NULL, NULL);
-
- if (Stream)
- {
- stb_vorbis_close(Stream);
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- // No support for writing ogg files yet...
- return false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if a given file in memory is supported by this loader
-////////////////////////////////////////////////////////////
-bool SoundFileOgg::IsFileSupported(const char* Data, std::size_t SizeInBytes)
-{
- // Open the vorbis stream
- unsigned char* Buffer = reinterpret_cast<unsigned char*>(const_cast<char*>(Data));
- int Length = static_cast<int>(SizeInBytes);
- stb_vorbis* Stream = stb_vorbis_open_memory(Buffer, Length, NULL, NULL);
-
- if (Stream)
- {
- stb_vorbis_close(Stream);
- return true;
- }
- else
- {
- return false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Open the sound file for reading
-////////////////////////////////////////////////////////////
-bool SoundFileOgg::OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate)
-{
- // Close the file if already opened
- if (myStream)
- stb_vorbis_close(myStream);
-
- // Open the vorbis stream
- myStream = stb_vorbis_open_filename(const_cast<char*>(Filename.c_str()), NULL, NULL);
- if (myStream == NULL)
- {
- std::cerr << "Failed to read sound file \"" << Filename << "\" (cannot open the file)" << std::endl;
- return false;
- }
-
- // Get the music parameters
- stb_vorbis_info Infos = stb_vorbis_get_info(myStream);
- ChannelsCount = myChannelsCount = Infos.channels;
- SampleRate = Infos.sample_rate;
- NbSamples = static_cast<std::size_t>(stb_vorbis_stream_length_in_samples(myStream) * ChannelsCount);
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sf::SoundFile::OpenRead
-////////////////////////////////////////////////////////////
-bool SoundFileOgg::OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate)
-{
- // Close the file if already opened
- if (myStream)
- stb_vorbis_close(myStream);
-
- // Open the vorbis stream
- unsigned char* Buffer = reinterpret_cast<unsigned char*>(const_cast<char*>(Data));
- int Length = static_cast<int>(SizeInBytes);
- myStream = stb_vorbis_open_memory(Buffer, Length, NULL, NULL);
- if (myStream == NULL)
- {
- std::cerr << "Failed to read sound file from memory (cannot open the file)" << std::endl;
- return false;
- }
-
- // Get the music parameters
- stb_vorbis_info Infos = stb_vorbis_get_info(myStream);
- ChannelsCount = myChannelsCount = Infos.channels;
- SampleRate = Infos.sample_rate;
- NbSamples = static_cast<std::size_t>(stb_vorbis_stream_length_in_samples(myStream) * ChannelsCount);
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Read samples from the loaded sound
-////////////////////////////////////////////////////////////
-std::size_t SoundFileOgg::Read(Int16* Data, std::size_t NbSamples)
-{
- if (myStream && Data && NbSamples)
- {
- int Read = stb_vorbis_get_samples_short_interleaved(myStream, myChannelsCount, Data, static_cast<int>(NbSamples));
- return static_cast<std::size_t>(Read * myChannelsCount);
- }
- else
- {
- return 0;
- }
-}
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Audio/SoundRecorder.cpp b/src/SFML/Audio/SoundRecorder.cpp
index c12a49d..bf7b03f 100755..100644
--- a/src/SFML/Audio/SoundRecorder.cpp
+++ b/src/SFML/Audio/SoundRecorder.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,35 +27,33 @@
////////////////////////////////////////////////////////////
#include <SFML/Audio/SoundRecorder.hpp>
#include <SFML/Audio/AudioDevice.hpp>
-#include <SFML/Audio/OpenAL.hpp>
+#include <SFML/Audio/ALCheck.hpp>
#include <SFML/System/Sleep.hpp>
-#include <iostream>
+#include <SFML/System/Err.hpp>
+
+#ifdef _MSC_VER
+ #pragma warning(disable : 4355) // 'this' used in base member initializer list
+#endif
-////////////////////////////////////////////////////////////
-// Private data
-////////////////////////////////////////////////////////////
namespace
{
- ALCdevice* CaptureDevice = NULL;
+ ALCdevice* captureDevice = NULL;
}
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
SoundRecorder::SoundRecorder() :
-mySampleRate (0),
-myIsCapturing(false)
+m_thread (&SoundRecorder::record, this),
+m_sampleRate (0),
+m_isCapturing(false)
{
-
+ priv::ensureALInit();
}
////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
SoundRecorder::~SoundRecorder()
{
// Nothing to do
@@ -63,89 +61,75 @@ SoundRecorder::~SoundRecorder()
////////////////////////////////////////////////////////////
-/// Start the capture.
-/// Warning : only one capture can happen at the same time
-////////////////////////////////////////////////////////////
-void SoundRecorder::Start(unsigned int SampleRate)
+void SoundRecorder::start(unsigned int sampleRate)
{
// Check if the device can do audio capture
- if (!CanCapture())
+ if (!isAvailable())
{
- std::cerr << "Failed to start capture : your system cannot capture audio data (call SoundRecorder::CanCapture to check it)" << std::endl;
+ err() << "Failed to start capture : your system cannot capture audio data (call SoundRecorder::IsAvailable to check it)" << std::endl;
return;
}
// Check that another capture is not already running
- if (CaptureDevice)
+ if (captureDevice)
{
- std::cerr << "Trying to start audio capture, but another capture is already running" << std::endl;
+ err() << "Trying to start audio capture, but another capture is already running" << std::endl;
return;
}
// Open the capture device for capturing 16 bits mono samples
- CaptureDevice = alcCaptureOpenDevice(NULL, SampleRate, AL_FORMAT_MONO16, SampleRate);
- if (!CaptureDevice)
+ captureDevice = alcCaptureOpenDevice(NULL, sampleRate, AL_FORMAT_MONO16, sampleRate);
+ if (!captureDevice)
{
- std::cerr << "Failed to open the audio capture device" << std::endl;
+ err() << "Failed to open the audio capture device" << std::endl;
return;
}
- // Clear the sample array
- mySamples.clear();
+ // Clear the array of samples
+ m_samples.clear();
// Store the sample rate
- mySampleRate = SampleRate;
+ m_sampleRate = sampleRate;
// Notify derived class
- if (OnStart())
+ if (onStart())
{
// Start the capture
- alcCaptureStart(CaptureDevice);
+ alcCaptureStart(captureDevice);
// Start the capture in a new thread, to avoid blocking the main thread
- myIsCapturing = true;
- Launch();
+ m_isCapturing = true;
+ m_thread.launch();
}
}
////////////////////////////////////////////////////////////
-/// Stop the capture
-////////////////////////////////////////////////////////////
-void SoundRecorder::Stop()
+void SoundRecorder::stop()
{
// Stop the capturing thread
- myIsCapturing = false;
- Wait();
+ m_isCapturing = false;
+ m_thread.wait();
}
////////////////////////////////////////////////////////////
-/// Get the sample rate
-////////////////////////////////////////////////////////////
-unsigned int SoundRecorder::GetSampleRate() const
+unsigned int SoundRecorder::getSampleRate() const
{
- return mySampleRate;
+ return m_sampleRate;
}
////////////////////////////////////////////////////////////
-/// Tell if the system supports sound capture.
-/// If not, this class won't be usable
-////////////////////////////////////////////////////////////
-bool SoundRecorder::CanCapture()
+bool SoundRecorder::isAvailable()
{
- ALCdevice* Device = priv::AudioDevice::GetInstance().GetDevice();
-
- return (alcIsExtensionPresent(Device, "ALC_EXT_CAPTURE") != AL_FALSE) ||
- (alcIsExtensionPresent(Device, "ALC_EXT_capture") != AL_FALSE); // "bug" in Mac OS X 10.5 and 10.6
+ return (priv::AudioDevice::isExtensionSupported("ALC_EXT_CAPTURE") != AL_FALSE) ||
+ (priv::AudioDevice::isExtensionSupported("ALC_EXT_capture") != AL_FALSE); // "bug" in Mac OS X 10.5 and 10.6
}
////////////////////////////////////////////////////////////
-/// Start recording audio data
-////////////////////////////////////////////////////////////
-bool SoundRecorder::OnStart()
+bool SoundRecorder::onStart()
{
// Nothing to do
return true;
@@ -153,75 +137,67 @@ bool SoundRecorder::OnStart()
////////////////////////////////////////////////////////////
-/// Stop recording audio data
-////////////////////////////////////////////////////////////
-void SoundRecorder::OnStop()
+void SoundRecorder::onStop()
{
// Nothing to do
}
////////////////////////////////////////////////////////////
-/// /see Thread::Run
-////////////////////////////////////////////////////////////
-void SoundRecorder::Run()
+void SoundRecorder::record()
{
- while (myIsCapturing)
+ while (m_isCapturing)
{
// Process available samples
- ProcessCapturedSamples();
+ processCapturedSamples();
// Don't bother the CPU while waiting for more captured data
- Sleep(0.1f);
+ sleep(milliseconds(100));
}
// Capture is finished : clean up everything
- CleanUp();
+ cleanup();
// Notify derived class
- OnStop();
+ onStop();
}
////////////////////////////////////////////////////////////
-/// Get available captured samples and process them
-////////////////////////////////////////////////////////////
-void SoundRecorder::ProcessCapturedSamples()
+void SoundRecorder::processCapturedSamples()
{
// Get the number of samples available
- ALCint SamplesAvailable;
- alcGetIntegerv(CaptureDevice, ALC_CAPTURE_SAMPLES, 1, &SamplesAvailable);
+ ALCint samplesAvailable;
+ alcGetIntegerv(captureDevice, ALC_CAPTURE_SAMPLES, 1, &samplesAvailable);
- if (SamplesAvailable > 0)
+ if (samplesAvailable > 0)
{
// Get the recorded samples
- mySamples.resize(SamplesAvailable);
- alcCaptureSamples(CaptureDevice, &mySamples[0], SamplesAvailable);
+ m_samples.resize(samplesAvailable);
+ alcCaptureSamples(captureDevice, &m_samples[0], samplesAvailable);
// Forward them to the derived class
- if (!OnProcessSamples(&mySamples[0], mySamples.size()))
+ if (!onProcessSamples(&m_samples[0], m_samples.size()))
{
// The user wants to stop the capture
- myIsCapturing = false;
+ m_isCapturing = false;
}
}
}
////////////////////////////////////////////////////////////
-/// Clean up recorder internal resources
-////////////////////////////////////////////////////////////
-void SoundRecorder::CleanUp()
+void SoundRecorder::cleanup()
{
// Stop the capture
- alcCaptureStop(CaptureDevice);
+ alcCaptureStop(captureDevice);
// Get the samples left in the buffer
- ProcessCapturedSamples();
+ processCapturedSamples();
// Close the device
- alcCaptureCloseDevice(CaptureDevice);
- CaptureDevice = NULL;
+ alcCaptureCloseDevice(captureDevice);
+ captureDevice = NULL;
}
} // namespace sf
diff --git a/src/SFML/Audio/SoundSource.cpp b/src/SFML/Audio/SoundSource.cpp
new file mode 100644
index 0000000..c5a6524
--- /dev/null
+++ b/src/SFML/Audio/SoundSource.cpp
@@ -0,0 +1,194 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Audio/SoundSource.hpp>
+#include <SFML/Audio/ALCheck.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+SoundSource::SoundSource()
+{
+ priv::ensureALInit();
+
+ alCheck(alGenSources(1, &m_source));
+ alCheck(alSourcei(m_source, AL_BUFFER, 0));
+}
+
+
+////////////////////////////////////////////////////////////
+SoundSource::SoundSource(const SoundSource& copy)
+{
+ priv::ensureALInit();
+
+ alCheck(alGenSources(1, &m_source));
+ alCheck(alSourcei(m_source, AL_BUFFER, 0));
+
+ setPitch(copy.getPitch());
+ setVolume(copy.getVolume());
+ setPosition(copy.getPosition());
+ setRelativeToListener(copy.isRelativeToListener());
+ setMinDistance(copy.getMinDistance());
+ setAttenuation(copy.getAttenuation());
+}
+
+
+////////////////////////////////////////////////////////////
+SoundSource::~SoundSource()
+{
+ alCheck(alSourcei(m_source, AL_BUFFER, 0));
+ alCheck(alDeleteSources(1, &m_source));
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setPitch(float pitch)
+{
+ alCheck(alSourcef(m_source, AL_PITCH, pitch));
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setVolume(float volume)
+{
+ alCheck(alSourcef(m_source, AL_GAIN, volume * 0.01f));
+}
+
+////////////////////////////////////////////////////////////
+void SoundSource::setPosition(float x, float y, float z)
+{
+ alCheck(alSource3f(m_source, AL_POSITION, x, y, z));
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setPosition(const Vector3f& position)
+{
+ setPosition(position.x, position.y, position.z);
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setRelativeToListener(bool relative)
+{
+ alCheck(alSourcei(m_source, AL_SOURCE_RELATIVE, relative));
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setMinDistance(float distance)
+{
+ alCheck(alSourcef(m_source, AL_REFERENCE_DISTANCE, distance));
+}
+
+
+////////////////////////////////////////////////////////////
+void SoundSource::setAttenuation(float attenuation)
+{
+ alCheck(alSourcef(m_source, AL_ROLLOFF_FACTOR, attenuation));
+}
+
+
+////////////////////////////////////////////////////////////
+float SoundSource::getPitch() const
+{
+ ALfloat pitch;
+ alCheck(alGetSourcef(m_source, AL_PITCH, &pitch));
+
+ return pitch;
+}
+
+
+////////////////////////////////////////////////////////////
+float SoundSource::getVolume() const
+{
+ ALfloat gain;
+ alCheck(alGetSourcef(m_source, AL_GAIN, &gain));
+
+ return gain * 100.f;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector3f SoundSource::getPosition() const
+{
+ Vector3f position;
+ alCheck(alGetSource3f(m_source, AL_POSITION, &position.x, &position.y, &position.z));
+
+ return position;
+}
+
+
+////////////////////////////////////////////////////////////
+bool SoundSource::isRelativeToListener() const
+{
+ ALint relative;
+ alCheck(alGetSourcei(m_source, AL_SOURCE_RELATIVE, &relative));
+
+ return relative != 0;
+}
+
+
+////////////////////////////////////////////////////////////
+float SoundSource::getMinDistance() const
+{
+ ALfloat distance;
+ alCheck(alGetSourcef(m_source, AL_REFERENCE_DISTANCE, &distance));
+
+ return distance;
+}
+
+
+////////////////////////////////////////////////////////////
+float SoundSource::getAttenuation() const
+{
+ ALfloat attenuation;
+ alCheck(alGetSourcef(m_source, AL_ROLLOFF_FACTOR, &attenuation));
+
+ return attenuation;
+}
+
+
+////////////////////////////////////////////////////////////
+SoundSource::Status SoundSource::getStatus() const
+{
+ ALint status;
+ alCheck(alGetSourcei(m_source, AL_SOURCE_STATE, &status));
+
+ switch (status)
+ {
+ case AL_INITIAL :
+ case AL_STOPPED : return Stopped;
+ case AL_PAUSED : return Paused;
+ case AL_PLAYING : return Playing;
+ }
+
+ return Stopped;
+}
+
+} // namespace sf
diff --git a/src/SFML/Audio/SoundStream.cpp b/src/SFML/Audio/SoundStream.cpp
index 9530d78..31df188 100755..100644
--- a/src/SFML/Audio/SoundStream.cpp
+++ b/src/SFML/Audio/SoundStream.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,342 +27,339 @@
////////////////////////////////////////////////////////////
#include <SFML/Audio/SoundStream.hpp>
#include <SFML/Audio/AudioDevice.hpp>
-#include <SFML/Audio/OpenAL.hpp>
+#include <SFML/Audio/ALCheck.hpp>
#include <SFML/System/Sleep.hpp>
+#include <SFML/System/Err.hpp>
+
+#ifdef _MSC_VER
+ #pragma warning(disable : 4355) // 'this' used in base member initializer list
+#endif
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
SoundStream::SoundStream() :
-myIsStreaming (false),
-myChannelsCount (0),
-mySampleRate (0),
-myFormat (0),
-myLoop (false),
-mySamplesProcessed(0)
+m_thread (&SoundStream::streamData, this),
+m_isStreaming (false),
+m_channelCount (0),
+m_sampleRate (0),
+m_format (0),
+m_loop (false),
+m_samplesProcessed(0)
{
}
////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
SoundStream::~SoundStream()
{
// Stop the sound if it was playing
- Stop();
+ stop();
}
////////////////////////////////////////////////////////////
-/// Set the audio stream parameters, you must call it before Play()
-////////////////////////////////////////////////////////////
-void SoundStream::Initialize(unsigned int ChannelsCount, unsigned int SampleRate)
+void SoundStream::initialize(unsigned int channelCount, unsigned int sampleRate)
{
- myChannelsCount = ChannelsCount;
- mySampleRate = SampleRate;
+ m_channelCount = channelCount;
+ m_sampleRate = sampleRate;
// Deduce the format from the number of channels
- myFormat = priv::AudioDevice::GetInstance().GetFormatFromChannelsCount(ChannelsCount);
+ m_format = priv::AudioDevice::getFormatFromChannelCount(channelCount);
// Check if the format is valid
- if (myFormat == 0)
+ if (m_format == 0)
{
- myChannelsCount = 0;
- mySampleRate = 0;
- std::cerr << "Unsupported number of channels (" << myChannelsCount << ")" << std::endl;
+ m_channelCount = 0;
+ m_sampleRate = 0;
+ err() << "Unsupported number of channels (" << m_channelCount << ")" << std::endl;
}
}
////////////////////////////////////////////////////////////
-/// Start playing the audio stream
-////////////////////////////////////////////////////////////
-void SoundStream::Play()
+void SoundStream::play()
{
// Check if the sound parameters have been set
- if (myFormat == 0)
+ if (m_format == 0)
{
- std::cerr << "Failed to play audio stream : sound parameters have not been initialized (call Initialize first)" << std::endl;
+ err() << "Failed to play audio stream: sound parameters have not been initialized (call Initialize first)" << std::endl;
return;
}
// If the sound is already playing (probably paused), just resume it
- if (myIsStreaming)
+ if (m_isStreaming)
{
- Sound::Play();
+ alCheck(alSourcePlay(m_source));
return;
}
- // Notify the derived class
- if (OnStart())
- {
- // Start updating the stream in a separate thread to avoid blocking the application
- mySamplesProcessed = 0;
- myIsStreaming = true;
- Launch();
- }
+ // Move to the beginning
+ onSeek(Time::Zero);
+
+ // Start updating the stream in a separate thread to avoid blocking the application
+ m_samplesProcessed = 0;
+ m_isStreaming = true;
+ m_thread.launch();
}
////////////////////////////////////////////////////////////
-/// Stop playing the audio stream
+void SoundStream::pause()
+{
+ alCheck(alSourcePause(m_source));
+}
+
+
////////////////////////////////////////////////////////////
-void SoundStream::Stop()
+void SoundStream::stop()
{
// Wait for the thread to terminate
- myIsStreaming = false;
- Wait();
+ m_isStreaming = false;
+ m_thread.wait();
}
////////////////////////////////////////////////////////////
-/// Return the number of channels (1 = mono, 2 = stereo, ...)
-////////////////////////////////////////////////////////////
-unsigned int SoundStream::GetChannelsCount() const
+unsigned int SoundStream::getChannelCount() const
{
- return myChannelsCount;
+ return m_channelCount;
}
////////////////////////////////////////////////////////////
-/// Get the sound frequency (sample rate)
-////////////////////////////////////////////////////////////
-unsigned int SoundStream::GetSampleRate() const
+unsigned int SoundStream::getSampleRate() const
{
- return mySampleRate;
+ return m_sampleRate;
}
////////////////////////////////////////////////////////////
-/// Get the status of the sound (stopped, paused, playing)
-////////////////////////////////////////////////////////////
-Sound::Status SoundStream::GetStatus() const
+SoundStream::Status SoundStream::getStatus() const
{
- Status Status = Sound::GetStatus();
+ Status status = SoundSource::getStatus();
- // To compensate for the lag between Play() and alSourcePlay()
- if ((Status == Stopped) && myIsStreaming)
- Status = Playing;
+ // To compensate for the lag between play() and alSourceplay()
+ if ((status == Stopped) && m_isStreaming)
+ status = Playing;
- return Status;
+ return status;
}
////////////////////////////////////////////////////////////
-/// Get the current playing position of the stream
-///
-/// \return Current playing position, expressed in seconds
-///
-////////////////////////////////////////////////////////////
-float SoundStream::GetPlayingOffset() const
+void SoundStream::setPlayingOffset(Time timeOffset)
{
- return Sound::GetPlayingOffset() + static_cast<float>(mySamplesProcessed) / mySampleRate / myChannelsCount;
+ // Stop the stream
+ stop();
+
+ // Let the derived class update the current position
+ onSeek(timeOffset);
+
+ // Restart streaming
+ m_samplesProcessed = static_cast<Uint64>(timeOffset.asSeconds() * m_sampleRate * m_channelCount);
+ m_isStreaming = true;
+ m_thread.launch();
}
////////////////////////////////////////////////////////////
-/// Set the music loop state
-////////////////////////////////////////////////////////////
-void SoundStream::SetLoop(bool Loop)
+Time SoundStream::getPlayingOffset() const
{
- myLoop = Loop;
+ if (m_sampleRate && m_channelCount)
+ {
+ ALfloat secs = 0.f;
+ alCheck(alGetSourcef(m_source, AL_SEC_OFFSET, &secs));
+
+ return seconds(secs + static_cast<float>(m_samplesProcessed) / m_sampleRate / m_channelCount);
+ }
+ else
+ {
+ return Time::Zero;
+ }
}
////////////////////////////////////////////////////////////
-/// Tell whether or not the music is looping
-////////////////////////////////////////////////////////////
-bool SoundStream::GetLoop() const
+void SoundStream::setLoop(bool loop)
{
- return myLoop;
+ m_loop = loop;
}
////////////////////////////////////////////////////////////
-/// /see Thread::Run
+bool SoundStream::getLoop() const
+{
+ return m_loop;
+}
+
+
////////////////////////////////////////////////////////////
-void SoundStream::Run()
+void SoundStream::streamData()
{
// Create the buffers
- ALCheck(alGenBuffers(BuffersCount, myBuffers));
- for (int i = 0; i < BuffersCount; ++i)
- myEndBuffers[i] = false;
+ alCheck(alGenBuffers(BufferCount, m_buffers));
+ for (int i = 0; i < BufferCount; ++i)
+ m_endBuffers[i] = false;
// Fill the queue
- bool RequestStop = FillQueue();
+ bool requestStop = fillQueue();
// Play the sound
- Sound::Play();
+ alCheck(alSourcePlay(m_source));
- while (myIsStreaming)
+ while (m_isStreaming)
{
- // The stream has been interrupted !
- if (Sound::GetStatus() == Stopped)
+ // The stream has been interrupted!
+ if (SoundSource::getStatus() == Stopped)
{
- if (!RequestStop)
+ if (!requestStop)
{
// Just continue
- Sound::Play();
+ alCheck(alSourcePlay(m_source));
}
else
{
// End streaming
- myIsStreaming = false;
+ m_isStreaming = false;
}
}
// Get the number of buffers that have been processed (ie. ready for reuse)
- ALint NbProcessed;
- ALCheck(alGetSourcei(Sound::mySource, AL_BUFFERS_PROCESSED, &NbProcessed));
+ ALint nbProcessed = 0;
+ alCheck(alGetSourcei(m_source, AL_BUFFERS_PROCESSED, &nbProcessed));
- while (NbProcessed--)
+ while (nbProcessed--)
{
// Pop the first unused buffer from the queue
- ALuint Buffer;
- ALCheck(alSourceUnqueueBuffers(Sound::mySource, 1, &Buffer));
+ ALuint buffer;
+ alCheck(alSourceUnqueueBuffers(m_source, 1, &buffer));
// Find its number
- unsigned int BufferNum = 0;
- for (int i = 0; i < BuffersCount; ++i)
- if (myBuffers[i] == Buffer)
+ unsigned int bufferNum = 0;
+ for (int i = 0; i < BufferCount; ++i)
+ if (m_buffers[i] == buffer)
{
- BufferNum = i;
+ bufferNum = i;
break;
}
// Retrieve its size and add it to the samples count
- if (myEndBuffers[BufferNum])
+ if (m_endBuffers[bufferNum])
{
// This was the last buffer: reset the sample count
- mySamplesProcessed = 0;
- myEndBuffers[BufferNum] = false;
+ m_samplesProcessed = 0;
+ m_endBuffers[bufferNum] = false;
}
else
{
- ALint Size;
- ALCheck(alGetBufferi(Buffer, AL_SIZE, &Size));
- mySamplesProcessed += Size / sizeof(Int16);
+ ALint size, bits;
+ alCheck(alGetBufferi(buffer, AL_SIZE, &size));
+ alCheck(alGetBufferi(buffer, AL_BITS, &bits));
+ m_samplesProcessed += size / (bits / 8);
}
// Fill it and push it back into the playing queue
- if (!RequestStop)
+ if (!requestStop)
{
- if (FillAndPushBuffer(BufferNum))
- RequestStop = true;
+ if (fillAndPushBuffer(bufferNum))
+ requestStop = true;
}
}
// Leave some time for the other threads if the stream is still playing
- if (Sound::GetStatus() != Stopped)
- Sleep(0.1f);
+ if (SoundSource::getStatus() != Stopped)
+ sleep(milliseconds(10));
}
// Stop the playback
- Sound::Stop();
+ alCheck(alSourceStop(m_source));
// Unqueue any buffer left in the queue
- ClearQueue();
+ clearQueue();
// Delete the buffers
- ALCheck(alSourcei(Sound::mySource, AL_BUFFER, 0));
- ALCheck(alDeleteBuffers(BuffersCount, myBuffers));
+ alCheck(alSourcei(m_source, AL_BUFFER, 0));
+ alCheck(alDeleteBuffers(BufferCount, m_buffers));
}
////////////////////////////////////////////////////////////
-/// Fill a new buffer with audio data, and push it to the
-/// playing queue
-////////////////////////////////////////////////////////////
-bool SoundStream::FillAndPushBuffer(unsigned int BufferNum)
+bool SoundStream::fillAndPushBuffer(unsigned int bufferNum)
{
- bool RequestStop = false;
+ bool requestStop = false;
// Acquire audio data
- Chunk Data = {NULL, 0};
- if (!OnGetData(Data))
+ Chunk data = {NULL, 0};
+ if (!onGetData(data))
{
// Mark the buffer as the last one (so that we know when to reset the playing position)
- myEndBuffers[BufferNum] = true;
+ m_endBuffers[bufferNum] = true;
// Check if the stream must loop or stop
- if (myLoop && OnStart())
+ if (m_loop)
{
- // If we succeeded to restart and we previously had no data, try to fill the buffer once again
- if (!Data.Samples || (Data.NbSamples == 0))
+ // Return to the beginning of the stream source
+ onSeek(Time::Zero);
+
+ // If we previously had no data, try to fill the buffer once again
+ if (!data.samples || (data.sampleCount == 0))
{
- return FillAndPushBuffer(BufferNum);
+ return fillAndPushBuffer(bufferNum);
}
}
else
{
- // Not looping or restart failed: request stop
- RequestStop = true;
+ // Not looping: request stop
+ requestStop = true;
}
}
// Fill the buffer if some data was returned
- if (Data.Samples && Data.NbSamples)
+ if (data.samples && data.sampleCount)
{
- unsigned int Buffer = myBuffers[BufferNum];
+ unsigned int buffer = m_buffers[bufferNum];
// Fill the buffer
- ALsizei Size = static_cast<ALsizei>(Data.NbSamples) * sizeof(Int16);
- ALCheck(alBufferData(Buffer, myFormat, Data.Samples, Size, mySampleRate));
+ ALsizei size = static_cast<ALsizei>(data.sampleCount) * sizeof(Int16);
+ alCheck(alBufferData(buffer, m_format, data.samples, size, m_sampleRate));
// Push it into the sound queue
- ALCheck(alSourceQueueBuffers(Sound::mySource, 1, &Buffer));
+ alCheck(alSourceQueueBuffers(m_source, 1, &buffer));
}
- return RequestStop;
+ return requestStop;
}
////////////////////////////////////////////////////////////
-/// Fill the buffers queue with all available buffers
-////////////////////////////////////////////////////////////
-bool SoundStream::FillQueue()
+bool SoundStream::fillQueue()
{
// Fill and enqueue all the available buffers
- bool RequestStop = false;
- for (int i = 0; (i < BuffersCount) && !RequestStop; ++i)
+ bool requestStop = false;
+ for (int i = 0; (i < BufferCount) && !requestStop; ++i)
{
- if (FillAndPushBuffer(i))
- RequestStop = true;
+ if (fillAndPushBuffer(i))
+ requestStop = true;
}
- return RequestStop;
+ return requestStop;
}
////////////////////////////////////////////////////////////
-/// Clear the queue of any remaining buffers
-////////////////////////////////////////////////////////////
-void SoundStream::ClearQueue()
+void SoundStream::clearQueue()
{
// Get the number of buffers still in the queue
- ALint NbQueued;
- ALCheck(alGetSourcei(Sound::mySource, AL_BUFFERS_QUEUED, &NbQueued));
+ ALint nbQueued;
+ alCheck(alGetSourcei(m_source, AL_BUFFERS_QUEUED, &nbQueued));
// Unqueue them all
- ALuint Buffer;
- for (ALint i = 0; i < NbQueued; ++i)
- ALCheck(alSourceUnqueueBuffers(Sound::mySource, 1, &Buffer));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Called when the sound restarts
-////////////////////////////////////////////////////////////
-bool SoundStream::OnStart()
-{
- // Does nothing by default
-
- return true;
+ ALuint buffer;
+ for (ALint i = 0; i < nbQueued; ++i)
+ alCheck(alSourceUnqueueBuffers(m_source, 1, &buffer));
}
} // namespace sf
diff --git a/src/SFML/Audio/stb_vorbis/stb_vorbis.c b/src/SFML/Audio/stb_vorbis/stb_vorbis.c
deleted file mode 100755
index 902761a..0000000
--- a/src/SFML/Audio/stb_vorbis/stb_vorbis.c
+++ /dev/null
@@ -1,5039 +0,0 @@
-// Ogg Vorbis I audio decoder -- version 0.99994
-//
-// Written in April 2007 by Sean Barrett, sponsored by RAD Game Tools.
-//
-// Placed in the public domain April 2007 by the author: no copyright is
-// claimed, and you may use it for any purpose you like.
-//
-// No warranty for any purpose is expressed or implied by the author (nor
-// by RAD Game Tools). Report bugs and send enhancements to the author.
-//
-// Get the latest version and other information at:
-// http://nothings.org/stb_vorbis/
-
-
-// Todo:
-//
-// - seeking (note you can seek yourself using the pushdata API)
-//
-// Limitations:
-//
-// - floor 0 not supported (used in old ogg vorbis files)
-// - lossless sample-truncation at beginning ignored
-// - cannot concatenate multiple vorbis streams
-// - sample positions are 32-bit, limiting seekable 192Khz
-// files to around 6 hours (Ogg supports 64-bit)
-//
-// All of these limitations may be removed in future versions.
-
-#include "stb_vorbis.h"
-
-#ifndef STB_VORBIS_HEADER_ONLY
-
-// global configuration settings (e.g. set these in the project/makefile),
-// or just set them in this file at the top (although ideally the first few
-// should be visible when the header file is compiled too, although it's not
-// crucial)
-
-// STB_VORBIS_NO_PUSHDATA_API
-// does not compile the code for the various stb_vorbis_*_pushdata()
-// functions
-// #define STB_VORBIS_NO_PUSHDATA_API
-
-// STB_VORBIS_NO_PULLDATA_API
-// does not compile the code for the non-pushdata APIs
-// #define STB_VORBIS_NO_PULLDATA_API
-
-// STB_VORBIS_NO_STDIO
-// does not compile the code for the APIs that use FILE *s internally
-// or externally (implied by STB_VORBIS_NO_PULLDATA_API)
-// #define STB_VORBIS_NO_STDIO
-
-// STB_VORBIS_NO_INTEGER_CONVERSION
-// does not compile the code for converting audio sample data from
-// float to integer (implied by STB_VORBIS_NO_PULLDATA_API)
-// #define STB_VORBIS_NO_INTEGER_CONVERSION
-
-// STB_VORBIS_NO_FAST_SCALED_FLOAT
-// does not use a fast float-to-int trick to accelerate float-to-int on
-// most platforms which requires endianness be defined correctly.
-#define STB_VORBIS_NO_FAST_SCALED_FLOAT
-
-
-// STB_VORBIS_MAX_CHANNELS [number]
-// globally define this to the maximum number of channels you need.
-// The spec does not put a restriction on channels except that
-// the count is stored in a byte, so 255 is the hard limit.
-// Reducing this saves about 16 bytes per value, so using 16 saves
-// (255-16)*16 or around 4KB. Plus anything other memory usage
-// I forgot to account for. Can probably go as low as 8 (7.1 audio),
-// 6 (5.1 audio), or 2 (stereo only).
-#ifndef STB_VORBIS_MAX_CHANNELS
-#define STB_VORBIS_MAX_CHANNELS 16 // enough for anyone?
-#endif
-
-// STB_VORBIS_PUSHDATA_CRC_COUNT [number]
-// after a flush_pushdata(), stb_vorbis begins scanning for the
-// next valid page, without backtracking. when it finds something
-// that looks like a page, it streams through it and verifies its
-// CRC32. Should that validation fail, it keeps scanning. But it's
-// possible that _while_ streaming through to check the CRC32 of
-// one candidate page, it sees another candidate page. This #define
-// determines how many "overlapping" candidate pages it can search
-// at once. Note that "real" pages are typically ~4KB to ~8KB, whereas
-// garbage pages could be as big as 64KB, but probably average ~16KB.
-// So don't hose ourselves by scanning an apparent 64KB page and
-// missing a ton of real ones in the interim; so minimum of 2
-#ifndef STB_VORBIS_PUSHDATA_CRC_COUNT
-#define STB_VORBIS_PUSHDATA_CRC_COUNT 4
-#endif
-
-// STB_VORBIS_FAST_HUFFMAN_LENGTH [number]
-// sets the log size of the huffman-acceleration table. Maximum
-// supported value is 24. with larger numbers, more decodings are O(1),
-// but the table size is larger so worse cache missing, so you'll have
-// to probe (and try multiple ogg vorbis files) to find the sweet spot.
-#ifndef STB_VORBIS_FAST_HUFFMAN_LENGTH
-#define STB_VORBIS_FAST_HUFFMAN_LENGTH 10
-#endif
-
-// STB_VORBIS_FAST_BINARY_LENGTH [number]
-// sets the log size of the binary-search acceleration table. this
-// is used in similar fashion to the fast-huffman size to set initial
-// parameters for the binary search
-
-// STB_VORBIS_FAST_HUFFMAN_INT
-// The fast huffman tables are much more efficient if they can be
-// stored as 16-bit results instead of 32-bit results. This restricts
-// the codebooks to having only 65535 possible outcomes, though.
-// (At least, accelerated by the huffman table.)
-#ifndef STB_VORBIS_FAST_HUFFMAN_INT
-#define STB_VORBIS_FAST_HUFFMAN_SHORT
-#endif
-
-// STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
-// If the 'fast huffman' search doesn't succeed, then stb_vorbis falls
-// back on binary searching for the correct one. This requires storing
-// extra tables with the huffman codes in sorted order. Defining this
-// symbol trades off space for speed by forcing a linear search in the
-// non-fast case, except for "sparse" codebooks.
-// #define STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
-
-// STB_VORBIS_DIVIDES_IN_RESIDUE
-// stb_vorbis precomputes the result of the scalar residue decoding
-// that would otherwise require a divide per chunk. you can trade off
-// space for time by defining this symbol.
-// #define STB_VORBIS_DIVIDES_IN_RESIDUE
-
-// STB_VORBIS_DIVIDES_IN_CODEBOOK
-// vorbis VQ codebooks can be encoded two ways: with every case explicitly
-// stored, or with all elements being chosen from a small range of values,
-// and all values possible in all elements. By default, stb_vorbis expands
-// this latter kind out to look like the former kind for ease of decoding,
-// because otherwise an integer divide-per-vector-element is required to
-// unpack the index. If you define STB_VORBIS_DIVIDES_IN_CODEBOOK, you can
-// trade off storage for speed.
-//#define STB_VORBIS_DIVIDES_IN_CODEBOOK
-
-// STB_VORBIS_CODEBOOK_SHORTS
-// The vorbis file format encodes VQ codebook floats as ax+b where a and
-// b are floating point per-codebook constants, and x is a 16-bit int.
-// Normally, stb_vorbis decodes them to floats rather than leaving them
-// as 16-bit ints and computing ax+b while decoding. This is a speed/space
-// tradeoff; you can save space by defining this flag.
-#ifndef STB_VORBIS_CODEBOOK_SHORTS
-#define STB_VORBIS_CODEBOOK_FLOATS
-#endif
-
-// STB_VORBIS_DIVIDE_TABLE
-// this replaces small integer divides in the floor decode loop with
-// table lookups. made less than 1% difference, so disabled by default.
-
-// STB_VORBIS_NO_INLINE_DECODE
-// disables the inlining of the scalar codebook fast-huffman decode.
-// might save a little codespace; useful for debugging
-// #define STB_VORBIS_NO_INLINE_DECODE
-
-// STB_VORBIS_NO_DEFER_FLOOR
-// Normally we only decode the floor without synthesizing the actual
-// full curve. We can instead synthesize the curve immediately. This
-// requires more memory and is very likely slower, so I don't think
-// you'd ever want to do it except for debugging.
-// #define STB_VORBIS_NO_DEFER_FLOOR
-
-
-
-
-//////////////////////////////////////////////////////////////////////////////
-
-#ifdef STB_VORBIS_NO_PULLDATA_API
- #define STB_VORBIS_NO_INTEGER_CONVERSION
- #define STB_VORBIS_NO_STDIO
-#endif
-
-#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO)
- #define STB_VORBIS_NO_STDIO 1
-#endif
-
-#ifndef STB_VORBIS_NO_INTEGER_CONVERSION
-#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT
-
- // only need endianness for fast-float-to-int, which we don't
- // use for pushdata
-
- #ifndef STB_VORBIS_BIG_ENDIAN
- #define STB_VORBIS_ENDIAN 0
- #else
- #define STB_VORBIS_ENDIAN 1
- #endif
-
-#endif
-#endif
-
-
-#ifndef STB_VORBIS_NO_STDIO
-#include <stdio.h>
-#endif
-
-#ifndef STB_VORBIS_NO_CRT
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#if !defined(__APPLE__) && !defined(MACOSX) && !defined(macintosh) && !defined(Macintosh) &&!defined(__FreeBSD__)
-#include <malloc.h>
-#endif
-
-#else
-#define NULL 0
-#endif
-
-#ifndef _MSC_VER
- #if __GNUC__
- #define __forceinline inline
- #else
- #define __forceinline
- #endif
-#endif
-
-#if STB_VORBIS_MAX_CHANNELS > 256
-#error "Value of STB_VORBIS_MAX_CHANNELS outside of allowed range"
-#endif
-
-#if STB_VORBIS_FAST_HUFFMAN_LENGTH > 24
-#error "Value of STB_VORBIS_FAST_HUFFMAN_LENGTH outside of allowed range"
-#endif
-
-
-#define MAX_BLOCKSIZE_LOG 13 // from specification
-#define MAX_BLOCKSIZE (1 << MAX_BLOCKSIZE_LOG)
-
-
-typedef unsigned char uint8;
-typedef signed char int8;
-typedef unsigned short uint16;
-typedef signed short int16;
-typedef unsigned int uint32;
-typedef signed int int32;
-
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-#ifdef STB_VORBIS_CODEBOOK_FLOATS
-typedef float codetype;
-#else
-typedef uint16 codetype;
-#endif
-
-// @NOTE
-//
-// Some arrays below are tagged "//varies", which means it's actually
-// a variable-sized piece of data, but rather than malloc I assume it's
-// small enough it's better to just allocate it all together with the
-// main thing
-//
-// Most of the variables are specified with the smallest size I could pack
-// them into. It might give better performance to make them all full-sized
-// integers. It should be safe to freely rearrange the structures or change
-// the sizes larger--nothing relies on silently truncating etc., nor the
-// order of variables.
-
-#define FAST_HUFFMAN_TABLE_SIZE (1 << STB_VORBIS_FAST_HUFFMAN_LENGTH)
-#define FAST_HUFFMAN_TABLE_MASK (FAST_HUFFMAN_TABLE_SIZE - 1)
-
-typedef struct
-{
- int dimensions, entries;
- uint8 *codeword_lengths;
- float minimum_value;
- float delta_value;
- uint8 value_bits;
- uint8 lookup_type;
- uint8 sequence_p;
- uint8 sparse;
- uint32 lookup_values;
- codetype *multiplicands;
- uint32 *codewords;
- #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT
- int16 fast_huffman[FAST_HUFFMAN_TABLE_SIZE];
- #else
- int32 fast_huffman[FAST_HUFFMAN_TABLE_SIZE];
- #endif
- uint32 *sorted_codewords;
- int *sorted_values;
- int sorted_entries;
-} Codebook;
-
-typedef struct
-{
- uint8 order;
- uint16 rate;
- uint16 bark_map_size;
- uint8 amplitude_bits;
- uint8 amplitude_offset;
- uint8 number_of_books;
- uint8 book_list[16]; // varies
-} Floor0;
-
-typedef struct
-{
- uint8 partitions;
- uint8 partition_class_list[32]; // varies
- uint8 class_dimensions[16]; // varies
- uint8 class_subclasses[16]; // varies
- uint8 class_masterbooks[16]; // varies
- int16 subclass_books[16][8]; // varies
- uint16 Xlist[31*8+2]; // varies
- uint8 sorted_order[31*8+2];
- uint8 neighbors[31*8+2][2];
- uint8 floor1_multiplier;
- uint8 rangebits;
- int values;
-} Floor1;
-
-typedef union
-{
- Floor0 floor0;
- Floor1 floor1;
-} Floor;
-
-typedef struct
-{
- uint32 begin, end;
- uint32 part_size;
- uint8 classifications;
- uint8 classbook;
- uint8 **classdata;
- int16 (*residue_books)[8];
-} Residue;
-
-typedef struct
-{
- uint8 magnitude;
- uint8 angle;
- uint8 mux;
-} MappingChannel;
-
-typedef struct
-{
- uint16 coupling_steps;
- MappingChannel *chan;
- uint8 submaps;
- uint8 submap_floor[15]; // varies
- uint8 submap_residue[15]; // varies
-} Mapping;
-
-typedef struct
-{
- uint8 blockflag;
- uint8 mapping;
- uint16 windowtype;
- uint16 transformtype;
-} Mode;
-
-typedef struct
-{
- uint32 goal_crc; // expected crc if match
- int bytes_left; // bytes left in packet
- uint32 crc_so_far; // running crc
- int bytes_done; // bytes processed in _current_ chunk
- uint32 sample_loc; // granule pos encoded in page
-} CRCscan;
-
-typedef struct
-{
- uint32 page_start, page_end;
- uint32 after_previous_page_start;
- uint32 first_decoded_sample;
- uint32 last_decoded_sample;
-} ProbedPage;
-
-struct stb_vorbis
-{
- // user-accessible info
- unsigned int sample_rate;
- int channels;
-
- unsigned int setup_memory_required;
- unsigned int temp_memory_required;
- unsigned int setup_temp_memory_required;
-
- // input config
-#ifndef STB_VORBIS_NO_STDIO
- FILE *f;
- uint32 f_start;
- int close_on_free;
-#endif
-
- uint8 *stream;
- uint8 *stream_start;
- uint8 *stream_end;
-
- uint32 stream_len;
-
- uint8 push_mode;
-
- uint32 first_audio_page_offset;
-
- ProbedPage p_first, p_last;
-
- // memory management
- stb_vorbis_alloc alloc;
- int setup_offset;
- int temp_offset;
-
- // run-time results
- int eof;
- enum STBVorbisError error;
-
- // user-useful data
-
- // header info
- int blocksize[2];
- int blocksize_0, blocksize_1;
- int codebook_count;
- Codebook *codebooks;
- int floor_count;
- uint16 floor_types[64]; // varies
- Floor *floor_config;
- int residue_count;
- uint16 residue_types[64]; // varies
- Residue *residue_config;
- int mapping_count;
- Mapping *mapping;
- int mode_count;
- Mode mode_config[64]; // varies
-
- uint32 total_samples;
-
- // decode buffer
- float *channel_buffers[STB_VORBIS_MAX_CHANNELS];
- float *outputs [STB_VORBIS_MAX_CHANNELS];
-
- float *previous_window[STB_VORBIS_MAX_CHANNELS];
- int previous_length;
-
- #ifndef STB_VORBIS_NO_DEFER_FLOOR
- int16 *finalY[STB_VORBIS_MAX_CHANNELS];
- #else
- float *floor_buffers[STB_VORBIS_MAX_CHANNELS];
- #endif
-
- uint32 current_loc; // sample location of next frame to decode
- int current_loc_valid;
-
- // per-blocksize precomputed data
-
- // twiddle factors
- float *A[2],*B[2],*C[2];
- float *window[2];
- uint16 *bit_reverse[2];
-
- // current page/packet/segment streaming info
- uint32 serial; // stream serial number for verification
- int last_page;
- int segment_count;
- uint8 segments[255];
- uint8 page_flag;
- uint8 bytes_in_seg;
- uint8 first_decode;
- int next_seg;
- int last_seg; // flag that we're on the last segment
- int last_seg_which; // what was the segment number of the last seg?
- uint32 acc;
- int valid_bits;
- int packet_bytes;
- int end_seg_with_known_loc;
- uint32 known_loc_for_packet;
- int discard_samples_deferred;
- uint32 samples_output;
-
- // push mode scanning
- int page_crc_tests; // only in push_mode: number of tests active; -1 if not searching
-#ifndef STB_VORBIS_NO_PUSHDATA_API
- CRCscan scan[STB_VORBIS_PUSHDATA_CRC_COUNT];
-#endif
-
- // sample-access
- int channel_buffer_start;
- int channel_buffer_end;
-};
-
-extern int my_prof(int slot);
-//#define stb_prof my_prof
-
-#ifndef stb_prof
-#define stb_prof(x) 0
-#endif
-
-#if defined(STB_VORBIS_NO_PUSHDATA_API)
- #define IS_PUSH_MODE(f) FALSE
-#elif defined(STB_VORBIS_NO_PULLDATA_API)
- #define IS_PUSH_MODE(f) TRUE
-#else
- #define IS_PUSH_MODE(f) ((f)->push_mode)
-#endif
-
-typedef struct stb_vorbis vorb;
-
-static int error(vorb *f, enum STBVorbisError e)
-{
- f->error = e;
- if (!f->eof && e != VORBIS_need_more_data) {
- f->error=e; // breakpoint for debugging
- }
- return 0;
-}
-
-
-// these functions are used for allocating temporary memory
-// while decoding. if you can afford the stack space, use
-// alloca(); otherwise, provide a temp buffer and it will
-// allocate out of those.
-
-#define array_size_required(count,size) (count*(sizeof(void *)+(size)))
-
-#define temp_alloc(f,size) (f->alloc.alloc_buffer ? setup_temp_malloc(f,size) : alloca(size))
-#ifdef dealloca
-#define temp_free(f,p) (f->alloc.alloc_buffer ? 0 : dealloca(size))
-#else
-#define temp_free(f,p) 0
-#endif
-#define temp_alloc_save(f) ((f)->temp_offset)
-#define temp_alloc_restore(f,p) ((f)->temp_offset = (p))
-
-#define temp_block_array(f,count,size) make_block_array(temp_alloc(f,array_size_required(count,size)), count, size)
-
-// given a sufficiently large block of memory, make an array of pointers to subblocks of it
-static void *make_block_array(void *mem, int count, int size)
-{
- int i;
- void ** p = (void **) mem;
- char *q = (char *) (p + count);
- for (i=0; i < count; ++i) {
- p[i] = q;
- q += size;
- }
- return p;
-}
-
-static void *setup_malloc(vorb *f, int sz)
-{
- sz = (sz+3) & ~3;
- f->setup_memory_required += sz;
- if (f->alloc.alloc_buffer) {
- void *p = (char *) f->alloc.alloc_buffer + f->setup_offset;
- if (f->setup_offset + sz > f->temp_offset) return NULL;
- f->setup_offset += sz;
- return p;
- }
- return sz ? malloc(sz) : NULL;
-}
-
-static void setup_free(vorb *f, void *p)
-{
- if (f->alloc.alloc_buffer) return; // do nothing; setup mem is not a stack
- free(p);
-}
-
-static void *setup_temp_malloc(vorb *f, int sz)
-{
- sz = (sz+3) & ~3;
- if (f->alloc.alloc_buffer) {
- if (f->temp_offset - sz < f->setup_offset) return NULL;
- f->temp_offset -= sz;
- return (char *) f->alloc.alloc_buffer + f->temp_offset;
- }
- return malloc(sz);
-}
-
-static void setup_temp_free(vorb *f, void *p, size_t sz)
-{
- if (f->alloc.alloc_buffer) {
- f->temp_offset += (sz+3)&~3;
- return;
- }
- free(p);
-}
-
-#define CRC32_POLY 0x04c11db7 // from spec
-
-static uint32 crc_table[256];
-static void crc32_init(void)
-{
- int i,j;
- uint32 s;
- for(i=0; i < 256; i++) {
- for (s=i<<24, j=0; j < 8; ++j)
- s = (s << 1) ^ (s >= (1<<31) ? CRC32_POLY : 0);
- crc_table[i] = s;
- }
-}
-
-static __forceinline uint32 crc32_update(uint32 crc, uint8 byte)
-{
- return (crc << 8) ^ crc_table[byte ^ (crc >> 24)];
-}
-
-
-// used in setup, and for huffman that doesn't go fast path
-static unsigned int bit_reverse(unsigned int n)
-{
- n = ((n & 0xAAAAAAAA) >> 1) | ((n & 0x55555555) << 1);
- n = ((n & 0xCCCCCCCC) >> 2) | ((n & 0x33333333) << 2);
- n = ((n & 0xF0F0F0F0) >> 4) | ((n & 0x0F0F0F0F) << 4);
- n = ((n & 0xFF00FF00) >> 8) | ((n & 0x00FF00FF) << 8);
- return (n >> 16) | (n << 16);
-}
-
-static float square(float x)
-{
- return x*x;
-}
-
-// this is a weird definition of log2() for which log2(1) = 1, log2(2) = 2, log2(4) = 3
-// as required by the specification. fast(?) implementation from stb.h
-// @OPTIMIZE: called multiple times per-packet with "constants"; move to setup
-static int ilog(int32 n)
-{
- static signed char log2_4[16] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4 };
-
- // 2 compares if n < 16, 3 compares otherwise (4 if signed or n > 1<<29)
- if (n < (1U << 14))
- if (n < (1U << 4)) return 0 + log2_4[n ];
- else if (n < (1U << 9)) return 5 + log2_4[n >> 5];
- else return 10 + log2_4[n >> 10];
- else if (n < (1U << 24))
- if (n < (1U << 19)) return 15 + log2_4[n >> 15];
- else return 20 + log2_4[n >> 20];
- else if (n < (1U << 29)) return 25 + log2_4[n >> 25];
- else if (n < (1U << 31)) return 30 + log2_4[n >> 30];
- else return 0; // signed n returns 0
-}
-
-#ifndef M_PI
- #define M_PI 3.14159265358979323846264f // from CRC
-#endif
-
-// code length assigned to a value with no huffman encoding
-#define NO_CODE 255
-
-/////////////////////// LEAF SETUP FUNCTIONS //////////////////////////
-//
-// these functions are only called at setup, and only a few times
-// per file
-
-static float float32_unpack(uint32 x)
-{
- // from the specification
- uint32 mantissa = x & 0x1fffff;
- uint32 sign = x & 0x80000000;
- uint32 exp = (x & 0x7fe00000) >> 21;
- double res = sign ? -(double)mantissa : (double)mantissa;
- return (float) ldexp((float)res, exp-788);
-}
-
-
-// zlib & jpeg huffman tables assume that the output symbols
-// can either be arbitrarily arranged, or have monotonically
-// increasing frequencies--they rely on the lengths being sorted;
-// this makes for a very simple generation algorithm.
-// vorbis allows a huffman table with non-sorted lengths. This
-// requires a more sophisticated construction, since symbols in
-// order do not map to huffman codes "in order".
-static void add_entry(Codebook *c, uint32 huff_code, int symbol, int count, int len, uint32 *values)
-{
- if (!c->sparse) {
- c->codewords [symbol] = huff_code;
- } else {
- c->codewords [count] = huff_code;
- c->codeword_lengths[count] = len;
- values [count] = symbol;
- }
-}
-
-static int compute_codewords(Codebook *c, uint8 *len, int n, uint32 *values)
-{
- int i,k,m=0;
- uint32 available[32];
-
- memset(available, 0, sizeof(available));
- // find the first entry
- for (k=0; k < n; ++k) if (len[k] < NO_CODE) break;
- if (k == n) { assert(c->sorted_entries == 0); return TRUE; }
- // add to the list
- add_entry(c, 0, k, m++, len[k], values);
- // add all available leaves
- for (i=1; i <= len[k]; ++i)
- available[i] = 1 << (32-i);
- // note that the above code treats the first case specially,
- // but it's really the same as the following code, so they
- // could probably be combined (except the initial code is 0,
- // and I use 0 in available[] to mean 'empty')
- for (i=k+1; i < n; ++i) {
- uint32 res;
- int z = len[i], y;
- if (z == NO_CODE) continue;
- // find lowest available leaf (should always be earliest,
- // which is what the specification calls for)
- // note that this property, and the fact we can never have
- // more than one free leaf at a given level, isn't totally
- // trivial to prove, but it seems true and the assert never
- // fires, so!
- while (z > 0 && !available[z]) --z;
- if (z == 0) { assert(0); return FALSE; }
- res = available[z];
- available[z] = 0;
- add_entry(c, bit_reverse(res), i, m++, len[i], values);
- // propogate availability up the tree
- if (z != len[i]) {
- for (y=len[i]; y > z; --y) {
- assert(available[y] == 0);
- available[y] = res + (1 << (32-y));
- }
- }
- }
- return TRUE;
-}
-
-// accelerated huffman table allows fast O(1) match of all symbols
-// of length <= STB_VORBIS_FAST_HUFFMAN_LENGTH
-static void compute_accelerated_huffman(Codebook *c)
-{
- int i, len;
- for (i=0; i < FAST_HUFFMAN_TABLE_SIZE; ++i)
- c->fast_huffman[i] = -1;
-
- len = c->sparse ? c->sorted_entries : c->entries;
- #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT
- if (len > 32767) len = 32767; // largest possible value we can encode!
- #endif
- for (i=0; i < len; ++i) {
- if (c->codeword_lengths[i] <= STB_VORBIS_FAST_HUFFMAN_LENGTH) {
- uint32 z = c->sparse ? bit_reverse(c->sorted_codewords[i]) : c->codewords[i];
- // set table entries for all bit combinations in the higher bits
- while (z < FAST_HUFFMAN_TABLE_SIZE) {
- c->fast_huffman[z] = i;
- z += 1 << c->codeword_lengths[i];
- }
- }
- }
-}
-
-static int uint32_compare(const void *p, const void *q)
-{
- uint32 x = * (uint32 *) p;
- uint32 y = * (uint32 *) q;
- return x < y ? -1 : x > y;
-}
-
-static int include_in_sort(Codebook *c, uint8 len)
-{
- if (c->sparse) { assert(len != NO_CODE); return TRUE; }
- if (len == NO_CODE) return FALSE;
- if (len > STB_VORBIS_FAST_HUFFMAN_LENGTH) return TRUE;
- return FALSE;
-}
-
-// if the fast table above doesn't work, we want to binary
-// search them... need to reverse the bits
-static void compute_sorted_huffman(Codebook *c, uint8 *lengths, uint32 *values)
-{
- int i, len;
- // build a list of all the entries
- // OPTIMIZATION: don't include the short ones, since they'll be caught by FAST_HUFFMAN.
- // this is kind of a frivolous optimization--I don't see any performance improvement,
- // but it's like 4 extra lines of code, so.
- if (!c->sparse) {
- int k = 0;
- for (i=0; i < c->entries; ++i)
- if (include_in_sort(c, lengths[i]))
- c->sorted_codewords[k++] = bit_reverse(c->codewords[i]);
- assert(k == c->sorted_entries);
- } else {
- for (i=0; i < c->sorted_entries; ++i)
- c->sorted_codewords[i] = bit_reverse(c->codewords[i]);
- }
-
- qsort(c->sorted_codewords, c->sorted_entries, sizeof(c->sorted_codewords[0]), uint32_compare);
- c->sorted_codewords[c->sorted_entries] = 0xffffffff;
-
- len = c->sparse ? c->sorted_entries : c->entries;
- // now we need to indicate how they correspond; we could either
- // #1: sort a different data structure that says who they correspond to
- // #2: for each sorted entry, search the original list to find who corresponds
- // #3: for each original entry, find the sorted entry
- // #1 requires extra storage, #2 is slow, #3 can use binary search!
- for (i=0; i < len; ++i) {
- int huff_len = c->sparse ? lengths[values[i]] : lengths[i];
- if (include_in_sort(c,huff_len)) {
- uint32 code = bit_reverse(c->codewords[i]);
- int x=0, n=c->sorted_entries;
- while (n > 1) {
- // invariant: sc[x] <= code < sc[x+n]
- int m = x + (n >> 1);
- if (c->sorted_codewords[m] <= code) {
- x = m;
- n -= (n>>1);
- } else {
- n >>= 1;
- }
- }
- assert(c->sorted_codewords[x] == code);
- if (c->sparse) {
- c->sorted_values[x] = values[i];
- c->codeword_lengths[x] = huff_len;
- } else {
- c->sorted_values[x] = i;
- }
- }
- }
-}
-
-// only run while parsing the header (3 times)
-static int vorbis_validate(uint8 *data)
-{
- static uint8 vorbis[6] = { 'v', 'o', 'r', 'b', 'i', 's' };
- return memcmp(data, vorbis, 6) == 0;
-}
-
-// called from setup only, once per code book
-// (formula implied by specification)
-static int lookup1_values(int entries, int dim)
-{
- int r = (int) floor(exp((float) log((float) entries) / dim));
- if ((int) floor(pow((float) r+1, dim)) <= entries) // (int) cast for MinGW warning;
- ++r; // floor() to avoid _ftol() when non-CRT
- assert(pow((float) r+1, dim) > entries);
- assert((int) floor(pow((float) r, dim)) <= entries); // (int),floor() as above
- return r;
-}
-
-// called twice per file
-static void compute_twiddle_factors(int n, float *A, float *B, float *C)
-{
- int n4 = n >> 2, n8 = n >> 3;
- int k,k2;
-
- for (k=k2=0; k < n4; ++k,k2+=2) {
- A[k2 ] = (float) cos(4*k*M_PI/n);
- A[k2+1] = (float) -sin(4*k*M_PI/n);
- B[k2 ] = (float) cos((k2+1)*M_PI/n/2) * 0.5f;
- B[k2+1] = (float) sin((k2+1)*M_PI/n/2) * 0.5f;
- }
- for (k=k2=0; k < n8; ++k,k2+=2) {
- C[k2 ] = (float) cos(2*(k2+1)*M_PI/n);
- C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n);
- }
-}
-
-static void compute_window(int n, float *window)
-{
- int n2 = n >> 1, i;
- for (i=0; i < n2; ++i)
- window[i] = (float) sin(0.5 * M_PI * square((float) sin((i - 0 + 0.5) / n2 * 0.5 * M_PI)));
-}
-
-static void compute_bitreverse(int n, uint16 *rev)
-{
- int ld = ilog(n) - 1; // ilog is off-by-one from normal definitions
- int i, n8 = n >> 3;
- for (i=0; i < n8; ++i)
- rev[i] = (bit_reverse(i) >> (32-ld+3)) << 2;
-}
-
-static int init_blocksize(vorb *f, int b, int n)
-{
- int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3;
- f->A[b] = (float *) setup_malloc(f, sizeof(float) * n2);
- f->B[b] = (float *) setup_malloc(f, sizeof(float) * n2);
- f->C[b] = (float *) setup_malloc(f, sizeof(float) * n4);
- if (!f->A[b] || !f->B[b] || !f->C[b]) return error(f, VORBIS_outofmem);
- compute_twiddle_factors(n, f->A[b], f->B[b], f->C[b]);
- f->window[b] = (float *) setup_malloc(f, sizeof(float) * n2);
- if (!f->window[b]) return error(f, VORBIS_outofmem);
- compute_window(n, f->window[b]);
- f->bit_reverse[b] = (uint16 *) setup_malloc(f, sizeof(uint16) * n8);
- if (!f->bit_reverse[b]) return error(f, VORBIS_outofmem);
- compute_bitreverse(n, f->bit_reverse[b]);
- return TRUE;
-}
-
-static void neighbors(uint16 *x, int n, int *plow, int *phigh)
-{
- int low = -1;
- int high = 65536;
- int i;
- for (i=0; i < n; ++i) {
- if (x[i] > low && x[i] < x[n]) { *plow = i; low = x[i]; }
- if (x[i] < high && x[i] > x[n]) { *phigh = i; high = x[i]; }
- }
-}
-
-// this has been repurposed so y is now the original index instead of y
-typedef struct
-{
- uint16 x,y;
-} Point;
-
-int point_compare(const void *p, const void *q)
-{
- Point *a = (Point *) p;
- Point *b = (Point *) q;
- return a->x < b->x ? -1 : a->x > b->x;
-}
-
-//
-/////////////////////// END LEAF SETUP FUNCTIONS //////////////////////////
-
-
-#if defined(STB_VORBIS_NO_STDIO)
- #define USE_MEMORY(z) TRUE
-#else
- #define USE_MEMORY(z) ((z)->stream)
-#endif
-
-static uint8 get8(vorb *z)
-{
- if (USE_MEMORY(z)) {
- if (z->stream >= z->stream_end) { z->eof = TRUE; return 0; }
- return *z->stream++;
- }
-
- #ifndef STB_VORBIS_NO_STDIO
- {
- int c = fgetc(z->f);
- if (c == EOF) { z->eof = TRUE; return 0; }
- return c;
- }
- #endif
-}
-
-static uint32 get32(vorb *f)
-{
- uint32 x;
- x = get8(f);
- x += get8(f) << 8;
- x += get8(f) << 16;
- x += get8(f) << 24;
- return x;
-}
-
-static int getn(vorb *z, uint8 *data, int n)
-{
- if (USE_MEMORY(z)) {
- if (z->stream+n > z->stream_end) { z->eof = 1; return 0; }
- memcpy(data, z->stream, n);
- z->stream += n;
- return 1;
- }
-
- #ifndef STB_VORBIS_NO_STDIO
- if (fread(data, n, 1, z->f) == 1)
- return 1;
- else {
- z->eof = 1;
- return 0;
- }
- #endif
-}
-
-static void skip(vorb *z, int n)
-{
- if (USE_MEMORY(z)) {
- z->stream += n;
- if (z->stream >= z->stream_end) z->eof = 1;
- return;
- }
- #ifndef STB_VORBIS_NO_STDIO
- {
- long x = ftell(z->f);
- fseek(z->f, x+n, SEEK_SET);
- }
- #endif
-}
-
-static int set_file_offset(stb_vorbis *f, unsigned int loc)
-{
- #ifndef STB_VORBIS_NO_PUSHDATA_API
- if (f->push_mode) return 0;
- #endif
- f->eof = 0;
- if (USE_MEMORY(f)) {
- if (f->stream_start + loc >= f->stream_end || f->stream_start + loc < f->stream_start) {
- f->stream = f->stream_end;
- f->eof = 1;
- return 0;
- } else {
- f->stream = f->stream_start + loc;
- return 1;
- }
- }
- #ifndef STB_VORBIS_NO_STDIO
- if (loc + f->f_start < loc || loc >= 0x80000000) {
- loc = 0x7fffffff;
- f->eof = 1;
- } else {
- loc += f->f_start;
- }
- if (!fseek(f->f, loc, SEEK_SET))
- return 1;
- f->eof = 1;
- fseek(f->f, f->f_start, SEEK_END);
- return 0;
- #endif
-}
-
-
-static uint8 ogg_page_header[4] = { 0x4f, 0x67, 0x67, 0x53 };
-
-static int capture_pattern(vorb *f)
-{
- if (0x4f != get8(f)) return FALSE;
- if (0x67 != get8(f)) return FALSE;
- if (0x67 != get8(f)) return FALSE;
- if (0x53 != get8(f)) return FALSE;
- return TRUE;
-}
-
-#define PAGEFLAG_continued_packet 1
-#define PAGEFLAG_first_page 2
-#define PAGEFLAG_last_page 4
-
-static int start_page_no_capturepattern(vorb *f)
-{
- uint32 loc0,loc1,n,i;
- // stream structure version
- if (0 != get8(f)) return error(f, VORBIS_invalid_stream_structure_version);
- // header flag
- f->page_flag = get8(f);
- // absolute granule position
- loc0 = get32(f);
- loc1 = get32(f);
- // @TODO: validate loc0,loc1 as valid positions?
- // stream serial number -- vorbis doesn't interleave, so discard
- get32(f);
- //if (f->serial != get32(f)) return error(f, VORBIS_incorrect_stream_serial_number);
- // page sequence number
- n = get32(f);
- f->last_page = n;
- // CRC32
- get32(f);
- // page_segments
- f->segment_count = get8(f);
- if (!getn(f, f->segments, f->segment_count))
- return error(f, VORBIS_unexpected_eof);
- // assume we _don't_ know any the sample position of any segments
- f->end_seg_with_known_loc = -2;
- if (loc0 != ~0 || loc1 != ~0) {
- // determine which packet is the last one that will complete
- for (i=f->segment_count-1; i >= 0; --i)
- if (f->segments[i] < 255)
- break;
- // 'i' is now the index of the _last_ segment of a packet that ends
- if (i >= 0) {
- f->end_seg_with_known_loc = i;
- f->known_loc_for_packet = loc0;
- }
- }
- if (f->first_decode) {
- int i,len;
- ProbedPage p;
- len = 0;
- for (i=0; i < f->segment_count; ++i)
- len += f->segments[i];
- len += 27 + f->segment_count;
- p.page_start = f->first_audio_page_offset;
- p.page_end = p.page_start + len;
- p.after_previous_page_start = p.page_start;
- p.first_decoded_sample = 0;
- p.last_decoded_sample = loc0;
- f->p_first = p;
- }
- f->next_seg = 0;
- return TRUE;
-}
-
-static int start_page(vorb *f)
-{
- if (!capture_pattern(f)) return error(f, VORBIS_missing_capture_pattern);
- return start_page_no_capturepattern(f);
-}
-
-static int start_packet(vorb *f)
-{
- while (f->next_seg == -1) {
- if (!start_page(f)) return FALSE;
- if (f->page_flag & PAGEFLAG_continued_packet)
- return error(f, VORBIS_continued_packet_flag_invalid);
- }
- f->last_seg = FALSE;
- f->valid_bits = 0;
- f->packet_bytes = 0;
- f->bytes_in_seg = 0;
- // f->next_seg is now valid
- return TRUE;
-}
-
-static int maybe_start_packet(vorb *f)
-{
- if (f->next_seg == -1) {
- int x = get8(f);
- if (f->eof) return FALSE; // EOF at page boundary is not an error!
- if (0x4f != x ) return error(f, VORBIS_missing_capture_pattern);
- if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern);
- if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern);
- if (0x53 != get8(f)) return error(f, VORBIS_missing_capture_pattern);
- if (!start_page_no_capturepattern(f)) return FALSE;
- if (f->page_flag & PAGEFLAG_continued_packet) {
- // set up enough state that we can read this packet if we want,
- // e.g. during recovery
- f->last_seg = FALSE;
- f->bytes_in_seg = 0;
- return error(f, VORBIS_continued_packet_flag_invalid);
- }
- }
- return start_packet(f);
-}
-
-static int next_segment(vorb *f)
-{
- int len;
- if (f->last_seg) return 0;
- if (f->next_seg == -1) {
- f->last_seg_which = f->segment_count-1; // in case start_page fails
- if (!start_page(f)) { f->last_seg = 1; return 0; }
- if (!(f->page_flag & PAGEFLAG_continued_packet)) return error(f, VORBIS_continued_packet_flag_invalid);
- }
- len = f->segments[f->next_seg++];
- if (len < 255) {
- f->last_seg = TRUE;
- f->last_seg_which = f->next_seg-1;
- }
- if (f->next_seg >= f->segment_count)
- f->next_seg = -1;
- assert(f->bytes_in_seg == 0);
- f->bytes_in_seg = len;
- return len;
-}
-
-#define EOP (-1)
-#define INVALID_BITS (-1)
-
-static int get8_packet_raw(vorb *f)
-{
- if (!f->bytes_in_seg)
- if (f->last_seg) return EOP;
- else if (!next_segment(f)) return EOP;
- assert(f->bytes_in_seg > 0);
- --f->bytes_in_seg;
- ++f->packet_bytes;
- return get8(f);
-}
-
-static int get8_packet(vorb *f)
-{
- int x = get8_packet_raw(f);
- f->valid_bits = 0;
- return x;
-}
-
-static void flush_packet(vorb *f)
-{
- while (get8_packet_raw(f) != EOP);
-}
-
-// @OPTIMIZE: this is the secondary bit decoder, so it's probably not as important
-// as the huffman decoder?
-static uint32 get_bits(vorb *f, int n)
-{
- uint32 z;
-
- if (f->valid_bits < 0) return 0;
- if (f->valid_bits < n) {
- if (n > 24) {
- // the accumulator technique below would not work correctly in this case
- z = get_bits(f, 24);
- z += get_bits(f, n-24) << 24;
- return z;
- }
- if (f->valid_bits == 0) f->acc = 0;
- while (f->valid_bits < n) {
- int z = get8_packet_raw(f);
- if (z == EOP) {
- f->valid_bits = INVALID_BITS;
- return 0;
- }
- f->acc += z << f->valid_bits;
- f->valid_bits += 8;
- }
- }
- if (f->valid_bits < 0) return 0;
- z = f->acc & ((1 << n)-1);
- f->acc >>= n;
- f->valid_bits -= n;
- return z;
-}
-
-static int32 get_bits_signed(vorb *f, int n)
-{
- uint32 z = get_bits(f, n);
- if (z & (1 << (n-1)))
- z += ~((1 << n) - 1);
- return (int32) z;
-}
-
-// @OPTIMIZE: primary accumulator for huffman
-// expand the buffer to as many bits as possible without reading off end of packet
-// it might be nice to allow f->valid_bits and f->acc to be stored in registers,
-// e.g. cache them locally and decode locally
-static __forceinline void prep_huffman(vorb *f)
-{
- if (f->valid_bits <= 24) {
- if (f->valid_bits == 0) f->acc = 0;
- do {
- int z;
- if (f->last_seg && !f->bytes_in_seg) return;
- z = get8_packet_raw(f);
- if (z == EOP) return;
- f->acc += z << f->valid_bits;
- f->valid_bits += 8;
- } while (f->valid_bits <= 24);
- }
-}
-
-enum
-{
- VORBIS_packet_id = 1,
- VORBIS_packet_comment = 3,
- VORBIS_packet_setup = 5,
-};
-
-static int codebook_decode_scalar_raw(vorb *f, Codebook *c)
-{
- int i;
- prep_huffman(f);
-
- assert(c->sorted_codewords || c->codewords);
- // cases to use binary search: sorted_codewords && !c->codewords
- // sorted_codewords && c->entries > 8
- if (c->entries > 8 ? c->sorted_codewords!=NULL : !c->codewords) {
- // binary search
- uint32 code = bit_reverse(f->acc);
- int x=0, n=c->sorted_entries, len;
-
- while (n > 1) {
- // invariant: sc[x] <= code < sc[x+n]
- int m = x + (n >> 1);
- if (c->sorted_codewords[m] <= code) {
- x = m;
- n -= (n>>1);
- } else {
- n >>= 1;
- }
- }
- // x is now the sorted index
- if (!c->sparse) x = c->sorted_values[x];
- // x is now sorted index if sparse, or symbol otherwise
- len = c->codeword_lengths[x];
- if (f->valid_bits >= len) {
- f->acc >>= len;
- f->valid_bits -= len;
- return x;
- }
-
- f->valid_bits = 0;
- return -1;
- }
-
- // if small, linear search
- assert(!c->sparse);
- for (i=0; i < c->entries; ++i) {
- if (c->codeword_lengths[i] == NO_CODE) continue;
- if (c->codewords[i] == (f->acc & ((1 << c->codeword_lengths[i])-1))) {
- if (f->valid_bits >= c->codeword_lengths[i]) {
- f->acc >>= c->codeword_lengths[i];
- f->valid_bits -= c->codeword_lengths[i];
- return i;
- }
- f->valid_bits = 0;
- return -1;
- }
- }
-
- error(f, VORBIS_invalid_stream);
- f->valid_bits = 0;
- return -1;
-}
-
-static int codebook_decode_scalar(vorb *f, Codebook *c)
-{
- int i;
- if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH)
- prep_huffman(f);
- // fast huffman table lookup
- i = f->acc & FAST_HUFFMAN_TABLE_MASK;
- i = c->fast_huffman[i];
- if (i >= 0) {
- f->acc >>= c->codeword_lengths[i];
- f->valid_bits -= c->codeword_lengths[i];
- if (f->valid_bits < 0) { f->valid_bits = 0; return -1; }
- return i;
- }
- return codebook_decode_scalar_raw(f,c);
-}
-
-#ifndef STB_VORBIS_NO_INLINE_DECODE
-
-#define DECODE_RAW(var, f,c) \
- if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH) \
- prep_huffman(f); \
- var = f->acc & FAST_HUFFMAN_TABLE_MASK; \
- var = c->fast_huffman[var]; \
- if (var >= 0) { \
- int n = c->codeword_lengths[var]; \
- f->acc >>= n; \
- f->valid_bits -= n; \
- if (f->valid_bits < 0) { f->valid_bits = 0; var = -1; } \
- } else { \
- var = codebook_decode_scalar_raw(f,c); \
- }
-
-#else
-
-#define DECODE_RAW(var,f,c) var = codebook_decode_scalar(f,c);
-
-#endif
-
-#define DECODE(var,f,c) \
- DECODE_RAW(var,f,c) \
- if (c->sparse) var = c->sorted_values[var];
-
-#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK
- #define DECODE_VQ(var,f,c) DECODE_RAW(var,f,c)
-#else
- #define DECODE_VQ(var,f,c) DECODE(var,f,c)
-#endif
-
-
-
-
-
-
-// CODEBOOK_ELEMENT_FAST is an optimization for the CODEBOOK_FLOATS case
-// where we avoid one addition
-#ifndef STB_VORBIS_CODEBOOK_FLOATS
- #define CODEBOOK_ELEMENT(c,off) (c->multiplicands[off] * c->delta_value + c->minimum_value)
- #define CODEBOOK_ELEMENT_FAST(c,off) (c->multiplicands[off] * c->delta_value)
- #define CODEBOOK_ELEMENT_BASE(c) (c->minimum_value)
-#else
- #define CODEBOOK_ELEMENT(c,off) (c->multiplicands[off])
- #define CODEBOOK_ELEMENT_FAST(c,off) (c->multiplicands[off])
- #define CODEBOOK_ELEMENT_BASE(c) (0)
-#endif
-
-static int codebook_decode_start(vorb *f, Codebook *c, int len)
-{
- int z = -1;
-
- // type 0 is only legal in a scalar context
- if (c->lookup_type == 0)
- error(f, VORBIS_invalid_stream);
- else {
- DECODE_VQ(z,f,c);
- if (c->sparse) assert(z < c->sorted_entries);
- if (z < 0) { // check for EOP
- if (!f->bytes_in_seg)
- if (f->last_seg)
- return z;
- error(f, VORBIS_invalid_stream);
- }
- }
- return z;
-}
-
-static int codebook_decode(vorb *f, Codebook *c, float *output, int len)
-{
- int i,z = codebook_decode_start(f,c,len);
- if (z < 0) return FALSE;
- if (len > c->dimensions) len = c->dimensions;
-
-#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK
- if (c->lookup_type == 1) {
- float last = CODEBOOK_ELEMENT_BASE(c);
- int div = 1;
- for (i=0; i < len; ++i) {
- int off = (z / div) % c->lookup_values;
- float val = CODEBOOK_ELEMENT_FAST(c,off) + last;
- output[i] += val;
- if (c->sequence_p) last = val + c->minimum_value;
- div *= c->lookup_values;
- }
- return TRUE;
- }
-#endif
-
- z *= c->dimensions;
- if (c->sequence_p) {
- float last = CODEBOOK_ELEMENT_BASE(c);
- for (i=0; i < len; ++i) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- output[i] += val;
- last = val + c->minimum_value;
- }
- } else {
- float last = CODEBOOK_ELEMENT_BASE(c);
- for (i=0; i < len; ++i) {
- output[i] += CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- }
- }
-
- return TRUE;
-}
-
-static int codebook_decode_step(vorb *f, Codebook *c, float *output, int len, int step)
-{
- int i,z = codebook_decode_start(f,c,len);
- float last = CODEBOOK_ELEMENT_BASE(c);
- if (z < 0) return FALSE;
- if (len > c->dimensions) len = c->dimensions;
-
-#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK
- if (c->lookup_type == 1) {
- int div = 1;
- for (i=0; i < len; ++i) {
- int off = (z / div) % c->lookup_values;
- float val = CODEBOOK_ELEMENT_FAST(c,off) + last;
- output[i*step] += val;
- if (c->sequence_p) last = val;
- div *= c->lookup_values;
- }
- return TRUE;
- }
-#endif
-
- z *= c->dimensions;
- for (i=0; i < len; ++i) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- output[i*step] += val;
- if (c->sequence_p) last = val;
- }
-
- return TRUE;
-}
-
-static int codebook_decode_deinterleave_repeat(vorb *f, Codebook *c, float **outputs, int ch, int *c_inter_p, int *p_inter_p, int len, int total_decode)
-{
- int c_inter = *c_inter_p;
- int p_inter = *p_inter_p;
- int i,z, effective = c->dimensions;
-
- // type 0 is only legal in a scalar context
- if (c->lookup_type == 0) return error(f, VORBIS_invalid_stream);
-
- while (total_decode > 0) {
- float last = CODEBOOK_ELEMENT_BASE(c);
- DECODE_VQ(z,f,c);
- #ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK
- assert(!c->sparse || z < c->sorted_entries);
- #endif
- if (z < 0) {
- if (!f->bytes_in_seg)
- if (f->last_seg) return FALSE;
- return error(f, VORBIS_invalid_stream);
- }
-
- // if this will take us off the end of the buffers, stop short!
- // we check by computing the length of the virtual interleaved
- // buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter),
- // and the length we'll be using (effective)
- if (c_inter + p_inter*ch + effective > len * ch) {
- effective = len*ch - (p_inter*ch - c_inter);
- }
-
- #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK
- if (c->lookup_type == 1) {
- int div = 1;
- for (i=0; i < effective; ++i) {
- int off = (z / div) % c->lookup_values;
- float val = CODEBOOK_ELEMENT_FAST(c,off) + last;
- outputs[c_inter][p_inter] += val;
- if (++c_inter == ch) { c_inter = 0; ++p_inter; }
- if (c->sequence_p) last = val;
- div *= c->lookup_values;
- }
- } else
- #endif
- {
- z *= c->dimensions;
- if (c->sequence_p) {
- for (i=0; i < effective; ++i) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- outputs[c_inter][p_inter] += val;
- if (++c_inter == ch) { c_inter = 0; ++p_inter; }
- last = val;
- }
- } else {
- for (i=0; i < effective; ++i) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- outputs[c_inter][p_inter] += val;
- if (++c_inter == ch) { c_inter = 0; ++p_inter; }
- }
- }
- }
-
- total_decode -= effective;
- }
- *c_inter_p = c_inter;
- *p_inter_p = p_inter;
- return TRUE;
-}
-
-#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK
-static int codebook_decode_deinterleave_repeat_2(vorb *f, Codebook *c, float **outputs, int *c_inter_p, int *p_inter_p, int len, int total_decode)
-{
- int c_inter = *c_inter_p;
- int p_inter = *p_inter_p;
- int i,z, effective = c->dimensions;
-
- // type 0 is only legal in a scalar context
- if (c->lookup_type == 0) return error(f, VORBIS_invalid_stream);
-
- while (total_decode > 0) {
- float last = CODEBOOK_ELEMENT_BASE(c);
- DECODE_VQ(z,f,c);
-
- if (z < 0) {
- if (!f->bytes_in_seg)
- if (f->last_seg) return FALSE;
- return error(f, VORBIS_invalid_stream);
- }
-
- // if this will take us off the end of the buffers, stop short!
- // we check by computing the length of the virtual interleaved
- // buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter),
- // and the length we'll be using (effective)
- if (c_inter + p_inter*2 + effective > len * 2) {
- effective = len*2 - (p_inter*2 - c_inter);
- }
-
- {
- z *= c->dimensions;
- stb_prof(11);
- if (c->sequence_p) {
- // haven't optimized this case because I don't have any examples
- for (i=0; i < effective; ++i) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- outputs[c_inter][p_inter] += val;
- if (++c_inter == 2) { c_inter = 0; ++p_inter; }
- last = val;
- }
- } else {
- i=0;
- if (c_inter == 1) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- outputs[c_inter][p_inter] += val;
- c_inter = 0; ++p_inter;
- ++i;
- }
- {
- float *z0 = outputs[0];
- float *z1 = outputs[1];
- for (; i+1 < effective;) {
- z0[p_inter] += CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- z1[p_inter] += CODEBOOK_ELEMENT_FAST(c,z+i+1) + last;
- ++p_inter;
- i += 2;
- }
- }
- if (i < effective) {
- float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;
- outputs[c_inter][p_inter] += val;
- if (++c_inter == 2) { c_inter = 0; ++p_inter; }
- }
- }
- }
-
- total_decode -= effective;
- }
- *c_inter_p = c_inter;
- *p_inter_p = p_inter;
- return TRUE;
-}
-#endif
-
-static int predict_point(int x, int x0, int x1, int y0, int y1)
-{
- int dy = y1 - y0;
- int adx = x1 - x0;
- // @OPTIMIZE: force int division to round in the right direction... is this necessary on x86?
- int err = abs(dy) * (x - x0);
- int off = err / adx;
- return dy < 0 ? y0 - off : y0 + off;
-}
-
-// the following table is block-copied from the specification
-static float inverse_db_table[256] =
-{
- 1.0649863e-07f, 1.1341951e-07f, 1.2079015e-07f, 1.2863978e-07f,
- 1.3699951e-07f, 1.4590251e-07f, 1.5538408e-07f, 1.6548181e-07f,
- 1.7623575e-07f, 1.8768855e-07f, 1.9988561e-07f, 2.1287530e-07f,
- 2.2670913e-07f, 2.4144197e-07f, 2.5713223e-07f, 2.7384213e-07f,
- 2.9163793e-07f, 3.1059021e-07f, 3.3077411e-07f, 3.5226968e-07f,
- 3.7516214e-07f, 3.9954229e-07f, 4.2550680e-07f, 4.5315863e-07f,
- 4.8260743e-07f, 5.1396998e-07f, 5.4737065e-07f, 5.8294187e-07f,
- 6.2082472e-07f, 6.6116941e-07f, 7.0413592e-07f, 7.4989464e-07f,
- 7.9862701e-07f, 8.5052630e-07f, 9.0579828e-07f, 9.6466216e-07f,
- 1.0273513e-06f, 1.0941144e-06f, 1.1652161e-06f, 1.2409384e-06f,
- 1.3215816e-06f, 1.4074654e-06f, 1.4989305e-06f, 1.5963394e-06f,
- 1.7000785e-06f, 1.8105592e-06f, 1.9282195e-06f, 2.0535261e-06f,
- 2.1869758e-06f, 2.3290978e-06f, 2.4804557e-06f, 2.6416497e-06f,
- 2.8133190e-06f, 2.9961443e-06f, 3.1908506e-06f, 3.3982101e-06f,
- 3.6190449e-06f, 3.8542308e-06f, 4.1047004e-06f, 4.3714470e-06f,
- 4.6555282e-06f, 4.9580707e-06f, 5.2802740e-06f, 5.6234160e-06f,
- 5.9888572e-06f, 6.3780469e-06f, 6.7925283e-06f, 7.2339451e-06f,
- 7.7040476e-06f, 8.2047000e-06f, 8.7378876e-06f, 9.3057248e-06f,
- 9.9104632e-06f, 1.0554501e-05f, 1.1240392e-05f, 1.1970856e-05f,
- 1.2748789e-05f, 1.3577278e-05f, 1.4459606e-05f, 1.5399272e-05f,
- 1.6400004e-05f, 1.7465768e-05f, 1.8600792e-05f, 1.9809576e-05f,
- 2.1096914e-05f, 2.2467911e-05f, 2.3928002e-05f, 2.5482978e-05f,
- 2.7139006e-05f, 2.8902651e-05f, 3.0780908e-05f, 3.2781225e-05f,
- 3.4911534e-05f, 3.7180282e-05f, 3.9596466e-05f, 4.2169667e-05f,
- 4.4910090e-05f, 4.7828601e-05f, 5.0936773e-05f, 5.4246931e-05f,
- 5.7772202e-05f, 6.1526565e-05f, 6.5524908e-05f, 6.9783085e-05f,
- 7.4317983e-05f, 7.9147585e-05f, 8.4291040e-05f, 8.9768747e-05f,
- 9.5602426e-05f, 0.00010181521f, 0.00010843174f, 0.00011547824f,
- 0.00012298267f, 0.00013097477f, 0.00013948625f, 0.00014855085f,
- 0.00015820453f, 0.00016848555f, 0.00017943469f, 0.00019109536f,
- 0.00020351382f, 0.00021673929f, 0.00023082423f, 0.00024582449f,
- 0.00026179955f, 0.00027881276f, 0.00029693158f, 0.00031622787f,
- 0.00033677814f, 0.00035866388f, 0.00038197188f, 0.00040679456f,
- 0.00043323036f, 0.00046138411f, 0.00049136745f, 0.00052329927f,
- 0.00055730621f, 0.00059352311f, 0.00063209358f, 0.00067317058f,
- 0.00071691700f, 0.00076350630f, 0.00081312324f, 0.00086596457f,
- 0.00092223983f, 0.00098217216f, 0.0010459992f, 0.0011139742f,
- 0.0011863665f, 0.0012634633f, 0.0013455702f, 0.0014330129f,
- 0.0015261382f, 0.0016253153f, 0.0017309374f, 0.0018434235f,
- 0.0019632195f, 0.0020908006f, 0.0022266726f, 0.0023713743f,
- 0.0025254795f, 0.0026895994f, 0.0028643847f, 0.0030505286f,
- 0.0032487691f, 0.0034598925f, 0.0036847358f, 0.0039241906f,
- 0.0041792066f, 0.0044507950f, 0.0047400328f, 0.0050480668f,
- 0.0053761186f, 0.0057254891f, 0.0060975636f, 0.0064938176f,
- 0.0069158225f, 0.0073652516f, 0.0078438871f, 0.0083536271f,
- 0.0088964928f, 0.009474637f, 0.010090352f, 0.010746080f,
- 0.011444421f, 0.012188144f, 0.012980198f, 0.013823725f,
- 0.014722068f, 0.015678791f, 0.016697687f, 0.017782797f,
- 0.018938423f, 0.020169149f, 0.021479854f, 0.022875735f,
- 0.024362330f, 0.025945531f, 0.027631618f, 0.029427276f,
- 0.031339626f, 0.033376252f, 0.035545228f, 0.037855157f,
- 0.040315199f, 0.042935108f, 0.045725273f, 0.048696758f,
- 0.051861348f, 0.055231591f, 0.058820850f, 0.062643361f,
- 0.066714279f, 0.071049749f, 0.075666962f, 0.080584227f,
- 0.085821044f, 0.091398179f, 0.097337747f, 0.10366330f,
- 0.11039993f, 0.11757434f, 0.12521498f, 0.13335215f,
- 0.14201813f, 0.15124727f, 0.16107617f, 0.17154380f,
- 0.18269168f, 0.19456402f, 0.20720788f, 0.22067342f,
- 0.23501402f, 0.25028656f, 0.26655159f, 0.28387361f,
- 0.30232132f, 0.32196786f, 0.34289114f, 0.36517414f,
- 0.38890521f, 0.41417847f, 0.44109412f, 0.46975890f,
- 0.50028648f, 0.53279791f, 0.56742212f, 0.60429640f,
- 0.64356699f, 0.68538959f, 0.72993007f, 0.77736504f,
- 0.82788260f, 0.88168307f, 0.9389798f, 1.0f
-};
-
-
-// @OPTIMIZE: if you want to replace this bresenham line-drawing routine,
-// note that you must produce bit-identical output to decode correctly;
-// this specific sequence of operations is specified in the spec (it's
-// drawing integer-quantized frequency-space lines that the encoder
-// expects to be exactly the same)
-// ... also, isn't the whole point of Bresenham's algorithm to NOT
-// have to divide in the setup? sigh.
-#ifndef STB_VORBIS_NO_DEFER_FLOOR
-#define LINE_OP(a,b) a *= b
-#else
-#define LINE_OP(a,b) a = b
-#endif
-
-#ifdef STB_VORBIS_DIVIDE_TABLE
-#define DIVTAB_NUMER 32
-#define DIVTAB_DENOM 64
-int8 integer_divide_table[DIVTAB_NUMER][DIVTAB_DENOM]; // 2KB
-#endif
-
-static __forceinline void draw_line(float *output, int x0, int y0, int x1, int y1, int n)
-{
- int dy = y1 - y0;
- int adx = x1 - x0;
- int ady = abs(dy);
- int base;
- int x=x0,y=y0;
- int err = 0;
- int sy;
-
-#ifdef STB_VORBIS_DIVIDE_TABLE
- if (adx < DIVTAB_DENOM && ady < DIVTAB_NUMER) {
- if (dy < 0) {
- base = -integer_divide_table[ady][adx];
- sy = base-1;
- } else {
- base = integer_divide_table[ady][adx];
- sy = base+1;
- }
- } else {
- base = dy / adx;
- if (dy < 0)
- sy = base - 1;
- else
- sy = base+1;
- }
-#else
- base = dy / adx;
- if (dy < 0)
- sy = base - 1;
- else
- sy = base+1;
-#endif
- ady -= abs(base) * adx;
- if (x1 > n) x1 = n;
- LINE_OP(output[x], inverse_db_table[y]);
- for (++x; x < x1; ++x) {
- err += ady;
- if (err >= adx) {
- err -= adx;
- y += sy;
- } else
- y += base;
- LINE_OP(output[x], inverse_db_table[y]);
- }
-}
-
-static int residue_decode(vorb *f, Codebook *book, float *target, int offset, int n, int rtype)
-{
- int k;
- if (rtype == 0) {
- int step = n / book->dimensions;
- for (k=0; k < step; ++k)
- if (!codebook_decode_step(f, book, target+offset+k, n-offset-k, step))
- return FALSE;
- } else {
- for (k=0; k < n; ) {
- if (!codebook_decode(f, book, target+offset, n-k))
- return FALSE;
- k += book->dimensions;
- offset += book->dimensions;
- }
- }
- return TRUE;
-}
-
-static void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int rn, uint8 *do_not_decode)
-{
- int i,j,pass;
- Residue *r = f->residue_config + rn;
- int rtype = f->residue_types[rn];
- int c = r->classbook;
- int classwords = f->codebooks[c].dimensions;
- int n_read = r->end - r->begin;
- int part_read = n_read / r->part_size;
- int temp_alloc_point = temp_alloc_save(f);
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- uint8 ***part_classdata = (uint8 ***) temp_block_array(f,f->channels, part_read * sizeof(**part_classdata));
- #else
- int **classifications = (int **) temp_block_array(f,f->channels, part_read * sizeof(**classifications));
- #endif
-
- stb_prof(2);
- for (i=0; i < ch; ++i)
- if (!do_not_decode[i])
- memset(residue_buffers[i], 0, sizeof(float) * n);
-
- if (rtype == 2 && ch != 1) {
- int len = ch * n;
- for (j=0; j < ch; ++j)
- if (!do_not_decode[j])
- break;
- if (j == ch)
- goto done;
-
- stb_prof(3);
- for (pass=0; pass < 8; ++pass) {
- int pcount = 0, class_set = 0;
- if (ch == 2) {
- stb_prof(13);
- while (pcount < part_read) {
- int z = r->begin + pcount*r->part_size;
- int c_inter = (z & 1), p_inter = z>>1;
- if (pass == 0) {
- Codebook *c = f->codebooks+r->classbook;
- int q;
- DECODE(q,f,c);
- if (q == EOP) goto done;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- part_classdata[0][class_set] = r->classdata[q];
- #else
- for (i=classwords-1; i >= 0; --i) {
- classifications[0][i+pcount] = q % r->classifications;
- q /= r->classifications;
- }
- #endif
- }
- stb_prof(5);
- for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {
- int z = r->begin + pcount*r->part_size;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- int c = part_classdata[0][class_set][i];
- #else
- int c = classifications[0][pcount];
- #endif
- int b = r->residue_books[c][pass];
- if (b >= 0) {
- Codebook *book = f->codebooks + b;
- stb_prof(20); // accounts for X time
- #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK
- if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))
- goto done;
- #else
- // saves 1%
- if (!codebook_decode_deinterleave_repeat_2(f, book, residue_buffers, &c_inter, &p_inter, n, r->part_size))
- goto done;
- #endif
- stb_prof(7);
- } else {
- z += r->part_size;
- c_inter = z & 1;
- p_inter = z >> 1;
- }
- }
- stb_prof(8);
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- ++class_set;
- #endif
- }
- } else if (ch == 1) {
- while (pcount < part_read) {
- int z = r->begin + pcount*r->part_size;
- int c_inter = 0, p_inter = z;
- if (pass == 0) {
- Codebook *c = f->codebooks+r->classbook;
- int q;
- DECODE(q,f,c);
- if (q == EOP) goto done;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- part_classdata[0][class_set] = r->classdata[q];
- #else
- for (i=classwords-1; i >= 0; --i) {
- classifications[0][i+pcount] = q % r->classifications;
- q /= r->classifications;
- }
- #endif
- }
- for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {
- int z = r->begin + pcount*r->part_size;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- int c = part_classdata[0][class_set][i];
- #else
- int c = classifications[0][pcount];
- #endif
- int b = r->residue_books[c][pass];
- if (b >= 0) {
- Codebook *book = f->codebooks + b;
- stb_prof(22);
- if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))
- goto done;
- stb_prof(3);
- } else {
- z += r->part_size;
- c_inter = 0;
- p_inter = z;
- }
- }
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- ++class_set;
- #endif
- }
- } else {
- while (pcount < part_read) {
- int z = r->begin + pcount*r->part_size;
- int c_inter = z % ch, p_inter = z/ch;
- if (pass == 0) {
- Codebook *c = f->codebooks+r->classbook;
- int q;
- DECODE(q,f,c);
- if (q == EOP) goto done;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- part_classdata[0][class_set] = r->classdata[q];
- #else
- for (i=classwords-1; i >= 0; --i) {
- classifications[0][i+pcount] = q % r->classifications;
- q /= r->classifications;
- }
- #endif
- }
- for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {
- int z = r->begin + pcount*r->part_size;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- int c = part_classdata[0][class_set][i];
- #else
- int c = classifications[0][pcount];
- #endif
- int b = r->residue_books[c][pass];
- if (b >= 0) {
- Codebook *book = f->codebooks + b;
- stb_prof(22);
- if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))
- goto done;
- stb_prof(3);
- } else {
- z += r->part_size;
- c_inter = z % ch;
- p_inter = z / ch;
- }
- }
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- ++class_set;
- #endif
- }
- }
- }
- goto done;
- }
- stb_prof(9);
-
- for (pass=0; pass < 8; ++pass) {
- int pcount = 0, class_set=0;
- while (pcount < part_read) {
- if (pass == 0) {
- for (j=0; j < ch; ++j) {
- if (!do_not_decode[j]) {
- Codebook *c = f->codebooks+r->classbook;
- int temp;
- DECODE(temp,f,c);
- if (temp == EOP) goto done;
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- part_classdata[j][class_set] = r->classdata[temp];
- #else
- for (i=classwords-1; i >= 0; --i) {
- classifications[j][i+pcount] = temp % r->classifications;
- temp /= r->classifications;
- }
- #endif
- }
- }
- }
- for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {
- for (j=0; j < ch; ++j) {
- if (!do_not_decode[j]) {
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- int c = part_classdata[j][class_set][i];
- #else
- int c = classifications[j][pcount];
- #endif
- int b = r->residue_books[c][pass];
- if (b >= 0) {
- float *target = residue_buffers[j];
- int offset = r->begin + pcount * r->part_size;
- int n = r->part_size;
- Codebook *book = f->codebooks + b;
- if (!residue_decode(f, book, target, offset, n, rtype))
- goto done;
- }
- }
- }
- }
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- ++class_set;
- #endif
- }
- }
- done:
- stb_prof(0);
- temp_alloc_restore(f,temp_alloc_point);
-}
-
-
-#if 0
-// slow way for debugging
-void inverse_mdct_slow(float *buffer, int n)
-{
- int i,j;
- int n2 = n >> 1;
- float *x = (float *) malloc(sizeof(*x) * n2);
- memcpy(x, buffer, sizeof(*x) * n2);
- for (i=0; i < n; ++i) {
- float acc = 0;
- for (j=0; j < n2; ++j)
- // formula from paper:
- //acc += n/4.0f * x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));
- // formula from wikipedia
- //acc += 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));
- // these are equivalent, except the formula from the paper inverts the multiplier!
- // however, what actually works is NO MULTIPLIER!?!
- //acc += 64 * 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));
- acc += x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));
- buffer[i] = acc;
- }
- free(x);
-}
-#elif 0
-// same as above, but just barely able to run in real time on modern machines
-void inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype)
-{
- float mcos[16384];
- int i,j;
- int n2 = n >> 1, nmask = (n << 2) -1;
- float *x = (float *) malloc(sizeof(*x) * n2);
- memcpy(x, buffer, sizeof(*x) * n2);
- for (i=0; i < 4*n; ++i)
- mcos[i] = (float) cos(M_PI / 2 * i / n);
-
- for (i=0; i < n; ++i) {
- float acc = 0;
- for (j=0; j < n2; ++j)
- acc += x[j] * mcos[(2 * i + 1 + n2)*(2*j+1) & nmask];
- buffer[i] = acc;
- }
- free(x);
-}
-#else
-// transform to use a slow dct-iv; this is STILL basically trivial,
-// but only requires half as many ops
-void dct_iv_slow(float *buffer, int n)
-{
- float mcos[16384];
- float x[2048];
- int i,j;
- int n2 = n >> 1, nmask = (n << 3) - 1;
- memcpy(x, buffer, sizeof(*x) * n);
- for (i=0; i < 8*n; ++i)
- mcos[i] = (float) cos(M_PI / 4 * i / n);
- for (i=0; i < n; ++i) {
- float acc = 0;
- for (j=0; j < n; ++j)
- acc += x[j] * mcos[((2 * i + 1)*(2*j+1)) & nmask];
- //acc += x[j] * cos(M_PI / n * (i + 0.5) * (j + 0.5));
- buffer[i] = acc;
- }
-}
-
-void inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype)
-{
- int i, n4 = n >> 2, n2 = n >> 1, n3_4 = n - n4;
- float temp[4096];
-
- memcpy(temp, buffer, n2 * sizeof(float));
- dct_iv_slow(temp, n2); // returns -c'-d, a-b'
-
- for (i=0; i < n4 ; ++i) buffer[i] = temp[i+n4]; // a-b'
- for ( ; i < n3_4; ++i) buffer[i] = -temp[n3_4 - i - 1]; // b-a', c+d'
- for ( ; i < n ; ++i) buffer[i] = -temp[i - n3_4]; // c'+d
-}
-#endif
-
-#ifndef LIBVORBIS_MDCT
-#define LIBVORBIS_MDCT 0
-#endif
-
-#if LIBVORBIS_MDCT
-// directly call the vorbis MDCT using an interface documented
-// by Jeff Roberts... useful for performance comparison
-typedef struct
-{
- int n;
- int log2n;
-
- float *trig;
- int *bitrev;
-
- float scale;
-} mdct_lookup;
-
-extern void mdct_init(mdct_lookup *lookup, int n);
-extern void mdct_clear(mdct_lookup *l);
-extern void mdct_backward(mdct_lookup *init, float *in, float *out);
-
-mdct_lookup M1,M2;
-
-void inverse_mdct(float *buffer, int n, vorb *f, int blocktype)
-{
- mdct_lookup *M;
- if (M1.n == n) M = &M1;
- else if (M2.n == n) M = &M2;
- else if (M1.n == 0) { mdct_init(&M1, n); M = &M1; }
- else {
- if (M2.n) __asm int 3;
- mdct_init(&M2, n);
- M = &M2;
- }
-
- mdct_backward(M, buffer, buffer);
-}
-#endif
-
-
-// the following were split out into separate functions while optimizing;
-// they could be pushed back up but eh. __forceinline showed no change;
-// they're probably already being inlined.
-static void imdct_step3_iter0_loop(int n, float *e, int i_off, int k_off, float *A)
-{
- float *ee0 = e + i_off;
- float *ee2 = ee0 + k_off;
- int i;
-
- assert((n & 3) == 0);
- for (i=(n>>2); i > 0; --i) {
- float k00_20, k01_21;
- k00_20 = ee0[ 0] - ee2[ 0];
- k01_21 = ee0[-1] - ee2[-1];
- ee0[ 0] += ee2[ 0];//ee0[ 0] = ee0[ 0] + ee2[ 0];
- ee0[-1] += ee2[-1];//ee0[-1] = ee0[-1] + ee2[-1];
- ee2[ 0] = k00_20 * A[0] - k01_21 * A[1];
- ee2[-1] = k01_21 * A[0] + k00_20 * A[1];
- A += 8;
-
- k00_20 = ee0[-2] - ee2[-2];
- k01_21 = ee0[-3] - ee2[-3];
- ee0[-2] += ee2[-2];//ee0[-2] = ee0[-2] + ee2[-2];
- ee0[-3] += ee2[-3];//ee0[-3] = ee0[-3] + ee2[-3];
- ee2[-2] = k00_20 * A[0] - k01_21 * A[1];
- ee2[-3] = k01_21 * A[0] + k00_20 * A[1];
- A += 8;
-
- k00_20 = ee0[-4] - ee2[-4];
- k01_21 = ee0[-5] - ee2[-5];
- ee0[-4] += ee2[-4];//ee0[-4] = ee0[-4] + ee2[-4];
- ee0[-5] += ee2[-5];//ee0[-5] = ee0[-5] + ee2[-5];
- ee2[-4] = k00_20 * A[0] - k01_21 * A[1];
- ee2[-5] = k01_21 * A[0] + k00_20 * A[1];
- A += 8;
-
- k00_20 = ee0[-6] - ee2[-6];
- k01_21 = ee0[-7] - ee2[-7];
- ee0[-6] += ee2[-6];//ee0[-6] = ee0[-6] + ee2[-6];
- ee0[-7] += ee2[-7];//ee0[-7] = ee0[-7] + ee2[-7];
- ee2[-6] = k00_20 * A[0] - k01_21 * A[1];
- ee2[-7] = k01_21 * A[0] + k00_20 * A[1];
- A += 8;
- ee0 -= 8;
- ee2 -= 8;
- }
-}
-
-static void imdct_step3_inner_r_loop(int lim, float *e, int d0, int k_off, float *A, int k1)
-{
- int i;
- float k00_20, k01_21;
-
- float *e0 = e + d0;
- float *e2 = e0 + k_off;
-
- for (i=lim >> 2; i > 0; --i) {
- k00_20 = e0[-0] - e2[-0];
- k01_21 = e0[-1] - e2[-1];
- e0[-0] += e2[-0];//e0[-0] = e0[-0] + e2[-0];
- e0[-1] += e2[-1];//e0[-1] = e0[-1] + e2[-1];
- e2[-0] = (k00_20)*A[0] - (k01_21) * A[1];
- e2[-1] = (k01_21)*A[0] + (k00_20) * A[1];
-
- A += k1;
-
- k00_20 = e0[-2] - e2[-2];
- k01_21 = e0[-3] - e2[-3];
- e0[-2] += e2[-2];//e0[-2] = e0[-2] + e2[-2];
- e0[-3] += e2[-3];//e0[-3] = e0[-3] + e2[-3];
- e2[-2] = (k00_20)*A[0] - (k01_21) * A[1];
- e2[-3] = (k01_21)*A[0] + (k00_20) * A[1];
-
- A += k1;
-
- k00_20 = e0[-4] - e2[-4];
- k01_21 = e0[-5] - e2[-5];
- e0[-4] += e2[-4];//e0[-4] = e0[-4] + e2[-4];
- e0[-5] += e2[-5];//e0[-5] = e0[-5] + e2[-5];
- e2[-4] = (k00_20)*A[0] - (k01_21) * A[1];
- e2[-5] = (k01_21)*A[0] + (k00_20) * A[1];
-
- A += k1;
-
- k00_20 = e0[-6] - e2[-6];
- k01_21 = e0[-7] - e2[-7];
- e0[-6] += e2[-6];//e0[-6] = e0[-6] + e2[-6];
- e0[-7] += e2[-7];//e0[-7] = e0[-7] + e2[-7];
- e2[-6] = (k00_20)*A[0] - (k01_21) * A[1];
- e2[-7] = (k01_21)*A[0] + (k00_20) * A[1];
-
- e0 -= 8;
- e2 -= 8;
-
- A += k1;
- }
-}
-
-static void imdct_step3_inner_s_loop(int n, float *e, int i_off, int k_off, float *A, int a_off, int k0)
-{
- int i;
- float A0 = A[0];
- float A1 = A[0+1];
- float A2 = A[0+a_off];
- float A3 = A[0+a_off+1];
- float A4 = A[0+a_off*2+0];
- float A5 = A[0+a_off*2+1];
- float A6 = A[0+a_off*3+0];
- float A7 = A[0+a_off*3+1];
-
- float k00,k11;
-
- float *ee0 = e +i_off;
- float *ee2 = ee0+k_off;
-
- for (i=n; i > 0; --i) {
- k00 = ee0[ 0] - ee2[ 0];
- k11 = ee0[-1] - ee2[-1];
- ee0[ 0] = ee0[ 0] + ee2[ 0];
- ee0[-1] = ee0[-1] + ee2[-1];
- ee2[ 0] = (k00) * A0 - (k11) * A1;
- ee2[-1] = (k11) * A0 + (k00) * A1;
-
- k00 = ee0[-2] - ee2[-2];
- k11 = ee0[-3] - ee2[-3];
- ee0[-2] = ee0[-2] + ee2[-2];
- ee0[-3] = ee0[-3] + ee2[-3];
- ee2[-2] = (k00) * A2 - (k11) * A3;
- ee2[-3] = (k11) * A2 + (k00) * A3;
-
- k00 = ee0[-4] - ee2[-4];
- k11 = ee0[-5] - ee2[-5];
- ee0[-4] = ee0[-4] + ee2[-4];
- ee0[-5] = ee0[-5] + ee2[-5];
- ee2[-4] = (k00) * A4 - (k11) * A5;
- ee2[-5] = (k11) * A4 + (k00) * A5;
-
- k00 = ee0[-6] - ee2[-6];
- k11 = ee0[-7] - ee2[-7];
- ee0[-6] = ee0[-6] + ee2[-6];
- ee0[-7] = ee0[-7] + ee2[-7];
- ee2[-6] = (k00) * A6 - (k11) * A7;
- ee2[-7] = (k11) * A6 + (k00) * A7;
-
- ee0 -= k0;
- ee2 -= k0;
- }
-}
-
-static __forceinline void iter_54(float *z)
-{
- float k00,k11,k22,k33;
- float y0,y1,y2,y3;
-
- k00 = z[ 0] - z[-4];
- y0 = z[ 0] + z[-4];
- y2 = z[-2] + z[-6];
- k22 = z[-2] - z[-6];
-
- z[-0] = y0 + y2; // z0 + z4 + z2 + z6
- z[-2] = y0 - y2; // z0 + z4 - z2 - z6
-
- // done with y0,y2
-
- k33 = z[-3] - z[-7];
-
- z[-4] = k00 + k33; // z0 - z4 + z3 - z7
- z[-6] = k00 - k33; // z0 - z4 - z3 + z7
-
- // done with k33
-
- k11 = z[-1] - z[-5];
- y1 = z[-1] + z[-5];
- y3 = z[-3] + z[-7];
-
- z[-1] = y1 + y3; // z1 + z5 + z3 + z7
- z[-3] = y1 - y3; // z1 + z5 - z3 - z7
- z[-5] = k11 - k22; // z1 - z5 + z2 - z6
- z[-7] = k11 + k22; // z1 - z5 - z2 + z6
-}
-
-static void imdct_step3_inner_s_loop_ld654(int n, float *e, int i_off, float *A, int base_n)
-{
- int k_off = -8;
- int a_off = base_n >> 3;
- float A2 = A[0+a_off];
- float *z = e + i_off;
- float *base = z - 16 * n;
-
- while (z > base) {
- float k00,k11;
-
- k00 = z[-0] - z[-8];
- k11 = z[-1] - z[-9];
- z[-0] = z[-0] + z[-8];
- z[-1] = z[-1] + z[-9];
- z[-8] = k00;
- z[-9] = k11 ;
-
- k00 = z[ -2] - z[-10];
- k11 = z[ -3] - z[-11];
- z[ -2] = z[ -2] + z[-10];
- z[ -3] = z[ -3] + z[-11];
- z[-10] = (k00+k11) * A2;
- z[-11] = (k11-k00) * A2;
-
- k00 = z[-12] - z[ -4]; // reverse to avoid a unary negation
- k11 = z[ -5] - z[-13];
- z[ -4] = z[ -4] + z[-12];
- z[ -5] = z[ -5] + z[-13];
- z[-12] = k11;
- z[-13] = k00;
-
- k00 = z[-14] - z[ -6]; // reverse to avoid a unary negation
- k11 = z[ -7] - z[-15];
- z[ -6] = z[ -6] + z[-14];
- z[ -7] = z[ -7] + z[-15];
- z[-14] = (k00+k11) * A2;
- z[-15] = (k00-k11) * A2;
-
- iter_54(z);
- iter_54(z-8);
- z -= 16;
- }
-}
-
-static void inverse_mdct(float *buffer, int n, vorb *f, int blocktype)
-{
- int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l;
- int n3_4 = n - n4, ld;
- // @OPTIMIZE: reduce register pressure by using fewer variables?
- int save_point = temp_alloc_save(f);
- float *buf2 = (float *) temp_alloc(f, n2 * sizeof(*buf2));
- float *u=NULL,*v=NULL;
- // twiddle factors
- float *A = f->A[blocktype];
-
- // IMDCT algorithm from "The use of multirate filter banks for coding of high quality digital audio"
- // See notes about bugs in that paper in less-optimal implementation 'inverse_mdct_old' after this function.
-
- // kernel from paper
-
-
- // merged:
- // copy and reflect spectral data
- // step 0
-
- // note that it turns out that the items added together during
- // this step are, in fact, being added to themselves (as reflected
- // by step 0). inexplicable inefficiency! this became obvious
- // once I combined the passes.
-
- // so there's a missing 'times 2' here (for adding X to itself).
- // this propogates through linearly to the end, where the numbers
- // are 1/2 too small, and need to be compensated for.
-
- {
- float *d,*e, *AA, *e_stop;
- d = &buf2[n2-2];
- AA = A;
- e = &buffer[0];
- e_stop = &buffer[n2];
- while (e != e_stop) {
- d[1] = (e[0] * AA[0] - e[2]*AA[1]);
- d[0] = (e[0] * AA[1] + e[2]*AA[0]);
- d -= 2;
- AA += 2;
- e += 4;
- }
-
- e = &buffer[n2-3];
- while (d >= buf2) {
- d[1] = (-e[2] * AA[0] - -e[0]*AA[1]);
- d[0] = (-e[2] * AA[1] + -e[0]*AA[0]);
- d -= 2;
- AA += 2;
- e -= 4;
- }
- }
-
- // now we use symbolic names for these, so that we can
- // possibly swap their meaning as we change which operations
- // are in place
-
- u = buffer;
- v = buf2;
-
- // step 2 (paper output is w, now u)
- // this could be in place, but the data ends up in the wrong
- // place... _somebody_'s got to swap it, so this is nominated
- {
- float *AA = &A[n2-8];
- float *d0,*d1, *e0, *e1;
-
- e0 = &v[n4];
- e1 = &v[0];
-
- d0 = &u[n4];
- d1 = &u[0];
-
- while (AA >= A) {
- float v40_20, v41_21;
-
- v41_21 = e0[1] - e1[1];
- v40_20 = e0[0] - e1[0];
- d0[1] = e0[1] + e1[1];
- d0[0] = e0[0] + e1[0];
- d1[1] = v41_21*AA[4] - v40_20*AA[5];
- d1[0] = v40_20*AA[4] + v41_21*AA[5];
-
- v41_21 = e0[3] - e1[3];
- v40_20 = e0[2] - e1[2];
- d0[3] = e0[3] + e1[3];
- d0[2] = e0[2] + e1[2];
- d1[3] = v41_21*AA[0] - v40_20*AA[1];
- d1[2] = v40_20*AA[0] + v41_21*AA[1];
-
- AA -= 8;
-
- d0 += 4;
- d1 += 4;
- e0 += 4;
- e1 += 4;
- }
- }
-
- // step 3
- ld = ilog(n) - 1; // ilog is off-by-one from normal definitions
-
- // optimized step 3:
-
- // the original step3 loop can be nested r inside s or s inside r;
- // it's written originally as s inside r, but this is dumb when r
- // iterates many times, and s few. So I have two copies of it and
- // switch between them halfway.
-
- // this is iteration 0 of step 3
- imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*0, -(n >> 3), A);
- imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*1, -(n >> 3), A);
-
- // this is iteration 1 of step 3
- imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*0, -(n >> 4), A, 16);
- imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*1, -(n >> 4), A, 16);
- imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*2, -(n >> 4), A, 16);
- imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*3, -(n >> 4), A, 16);
-
- l=2;
- for (; l < (ld-3)>>1; ++l) {
- int k0 = n >> (l+2), k0_2 = k0>>1;
- int lim = 1 << (l+1);
- int i;
- for (i=0; i < lim; ++i)
- imdct_step3_inner_r_loop(n >> (l+4), u, n2-1 - k0*i, -k0_2, A, 1 << (l+3));
- }
-
- for (; l < ld-6; ++l) {
- int k0 = n >> (l+2), k1 = 1 << (l+3), k0_2 = k0>>1;
- int rlim = n >> (l+6), r;
- int lim = 1 << (l+1);
- int i_off;
- float *A0 = A;
- i_off = n2-1;
- for (r=rlim; r > 0; --r) {
- imdct_step3_inner_s_loop(lim, u, i_off, -k0_2, A0, k1, k0);
- A0 += k1*4;
- i_off -= 8;
- }
- }
-
- // iterations with count:
- // ld-6,-5,-4 all interleaved together
- // the big win comes from getting rid of needless flops
- // due to the constants on pass 5 & 4 being all 1 and 0;
- // combining them to be simultaneous to improve cache made little difference
- imdct_step3_inner_s_loop_ld654(n >> 5, u, n2-1, A, n);
-
- // output is u
-
- // step 4, 5, and 6
- // cannot be in-place because of step 5
- {
- uint16 *bitrev = f->bit_reverse[blocktype];
- // weirdly, I'd have thought reading sequentially and writing
- // erratically would have been better than vice-versa, but in
- // fact that's not what my testing showed. (That is, with
- // j = bitreverse(i), do you read i and write j, or read j and write i.)
-
- float *d0 = &v[n4-4];
- float *d1 = &v[n2-4];
- while (d0 >= v) {
- int k4;
-
- k4 = bitrev[0];
- d1[3] = u[k4+0];
- d1[2] = u[k4+1];
- d0[3] = u[k4+2];
- d0[2] = u[k4+3];
-
- k4 = bitrev[1];
- d1[1] = u[k4+0];
- d1[0] = u[k4+1];
- d0[1] = u[k4+2];
- d0[0] = u[k4+3];
-
- d0 -= 4;
- d1 -= 4;
- bitrev += 2;
- }
- }
- // (paper output is u, now v)
-
-
- // data must be in buf2
- assert(v == buf2);
-
- // step 7 (paper output is v, now v)
- // this is now in place
- {
- float *C = f->C[blocktype];
- float *d, *e;
-
- d = v;
- e = v + n2 - 4;
-
- while (d < e) {
- float a02,a11,b0,b1,b2,b3;
-
- a02 = d[0] - e[2];
- a11 = d[1] + e[3];
-
- b0 = C[1]*a02 + C[0]*a11;
- b1 = C[1]*a11 - C[0]*a02;
-
- b2 = d[0] + e[ 2];
- b3 = d[1] - e[ 3];
-
- d[0] = b2 + b0;
- d[1] = b3 + b1;
- e[2] = b2 - b0;
- e[3] = b1 - b3;
-
- a02 = d[2] - e[0];
- a11 = d[3] + e[1];
-
- b0 = C[3]*a02 + C[2]*a11;
- b1 = C[3]*a11 - C[2]*a02;
-
- b2 = d[2] + e[ 0];
- b3 = d[3] - e[ 1];
-
- d[2] = b2 + b0;
- d[3] = b3 + b1;
- e[0] = b2 - b0;
- e[1] = b1 - b3;
-
- C += 4;
- d += 4;
- e -= 4;
- }
- }
-
- // data must be in buf2
-
-
- // step 8+decode (paper output is X, now buffer)
- // this generates pairs of data a la 8 and pushes them directly through
- // the decode kernel (pushing rather than pulling) to avoid having
- // to make another pass later
-
- // this cannot POSSIBLY be in place, so we refer to the buffers directly
-
- {
- float *d0,*d1,*d2,*d3;
-
- float *B = f->B[blocktype] + n2 - 8;
- float *e = buf2 + n2 - 8;
- d0 = &buffer[0];
- d1 = &buffer[n2-4];
- d2 = &buffer[n2];
- d3 = &buffer[n-4];
- while (e >= v) {
- float p0,p1,p2,p3;
-
- p3 = e[6]*B[7] - e[7]*B[6];
- p2 = -e[6]*B[6] - e[7]*B[7];
-
- d0[0] = p3;
- d1[3] = - p3;
- d2[0] = p2;
- d3[3] = p2;
-
- p1 = e[4]*B[5] - e[5]*B[4];
- p0 = -e[4]*B[4] - e[5]*B[5];
-
- d0[1] = p1;
- d1[2] = - p1;
- d2[1] = p0;
- d3[2] = p0;
-
- p3 = e[2]*B[3] - e[3]*B[2];
- p2 = -e[2]*B[2] - e[3]*B[3];
-
- d0[2] = p3;
- d1[1] = - p3;
- d2[2] = p2;
- d3[1] = p2;
-
- p1 = e[0]*B[1] - e[1]*B[0];
- p0 = -e[0]*B[0] - e[1]*B[1];
-
- d0[3] = p1;
- d1[0] = - p1;
- d2[3] = p0;
- d3[0] = p0;
-
- B -= 8;
- e -= 8;
- d0 += 4;
- d2 += 4;
- d1 -= 4;
- d3 -= 4;
- }
- }
-
- temp_alloc_restore(f,save_point);
-}
-
-#if 0
-// this is the original version of the above code, if you want to optimize it from scratch
-void inverse_mdct_naive(float *buffer, int n)
-{
- float s;
- float A[1 << 12], B[1 << 12], C[1 << 11];
- int i,k,k2,k4, n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l;
- int n3_4 = n - n4, ld;
- // how can they claim this only uses N words?!
- // oh, because they're only used sparsely, whoops
- float u[1 << 13], X[1 << 13], v[1 << 13], w[1 << 13];
- // set up twiddle factors
-
- for (k=k2=0; k < n4; ++k,k2+=2) {
- A[k2 ] = (float) cos(4*k*M_PI/n);
- A[k2+1] = (float) -sin(4*k*M_PI/n);
- B[k2 ] = (float) cos((k2+1)*M_PI/n/2);
- B[k2+1] = (float) sin((k2+1)*M_PI/n/2);
- }
- for (k=k2=0; k < n8; ++k,k2+=2) {
- C[k2 ] = (float) cos(2*(k2+1)*M_PI/n);
- C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n);
- }
-
- // IMDCT algorithm from "The use of multirate filter banks for coding of high quality digital audio"
- // Note there are bugs in that pseudocode, presumably due to them attempting
- // to rename the arrays nicely rather than representing the way their actual
- // implementation bounces buffers back and forth. As a result, even in the
- // "some formulars corrected" version, a direct implementation fails. These
- // are noted below as "paper bug".
-
- // copy and reflect spectral data
- for (k=0; k < n2; ++k) u[k] = buffer[k];
- for ( ; k < n ; ++k) u[k] = -buffer[n - k - 1];
- // kernel from paper
- // step 1
- for (k=k2=k4=0; k < n4; k+=1, k2+=2, k4+=4) {
- v[n-k4-1] = (u[k4] - u[n-k4-1]) * A[k2] - (u[k4+2] - u[n-k4-3])*A[k2+1];
- v[n-k4-3] = (u[k4] - u[n-k4-1]) * A[k2+1] + (u[k4+2] - u[n-k4-3])*A[k2];
- }
- // step 2
- for (k=k4=0; k < n8; k+=1, k4+=4) {
- w[n2+3+k4] = v[n2+3+k4] + v[k4+3];
- w[n2+1+k4] = v[n2+1+k4] + v[k4+1];
- w[k4+3] = (v[n2+3+k4] - v[k4+3])*A[n2-4-k4] - (v[n2+1+k4]-v[k4+1])*A[n2-3-k4];
- w[k4+1] = (v[n2+1+k4] - v[k4+1])*A[n2-4-k4] + (v[n2+3+k4]-v[k4+3])*A[n2-3-k4];
- }
- // step 3
- ld = ilog(n) - 1; // ilog is off-by-one from normal definitions
- for (l=0; l < ld-3; ++l) {
- int k0 = n >> (l+2), k1 = 1 << (l+3);
- int rlim = n >> (l+4), r4, r;
- int s2lim = 1 << (l+2), s2;
- for (r=r4=0; r < rlim; r4+=4,++r) {
- for (s2=0; s2 < s2lim; s2+=2) {
- u[n-1-k0*s2-r4] = w[n-1-k0*s2-r4] + w[n-1-k0*(s2+1)-r4];
- u[n-3-k0*s2-r4] = w[n-3-k0*s2-r4] + w[n-3-k0*(s2+1)-r4];
- u[n-1-k0*(s2+1)-r4] = (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1]
- - (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1+1];
- u[n-3-k0*(s2+1)-r4] = (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1]
- + (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1+1];
- }
- }
- if (l+1 < ld-3) {
- // paper bug: ping-ponging of u&w here is omitted
- memcpy(w, u, sizeof(u));
- }
- }
-
- // step 4
- for (i=0; i < n8; ++i) {
- int j = bit_reverse(i) >> (32-ld+3);
- assert(j < n8);
- if (i == j) {
- // paper bug: original code probably swapped in place; if copying,
- // need to directly copy in this case
- int i8 = i << 3;
- v[i8+1] = u[i8+1];
- v[i8+3] = u[i8+3];
- v[i8+5] = u[i8+5];
- v[i8+7] = u[i8+7];
- } else if (i < j) {
- int i8 = i << 3, j8 = j << 3;
- v[j8+1] = u[i8+1], v[i8+1] = u[j8 + 1];
- v[j8+3] = u[i8+3], v[i8+3] = u[j8 + 3];
- v[j8+5] = u[i8+5], v[i8+5] = u[j8 + 5];
- v[j8+7] = u[i8+7], v[i8+7] = u[j8 + 7];
- }
- }
- // step 5
- for (k=0; k < n2; ++k) {
- w[k] = v[k*2+1];
- }
- // step 6
- for (k=k2=k4=0; k < n8; ++k, k2 += 2, k4 += 4) {
- u[n-1-k2] = w[k4];
- u[n-2-k2] = w[k4+1];
- u[n3_4 - 1 - k2] = w[k4+2];
- u[n3_4 - 2 - k2] = w[k4+3];
- }
- // step 7
- for (k=k2=0; k < n8; ++k, k2 += 2) {
- v[n2 + k2 ] = ( u[n2 + k2] + u[n-2-k2] + C[k2+1]*(u[n2+k2]-u[n-2-k2]) + C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2;
- v[n-2 - k2] = ( u[n2 + k2] + u[n-2-k2] - C[k2+1]*(u[n2+k2]-u[n-2-k2]) - C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2;
- v[n2+1+ k2] = ( u[n2+1+k2] - u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2;
- v[n-1 - k2] = (-u[n2+1+k2] + u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2;
- }
- // step 8
- for (k=k2=0; k < n4; ++k,k2 += 2) {
- X[k] = v[k2+n2]*B[k2 ] + v[k2+1+n2]*B[k2+1];
- X[n2-1-k] = v[k2+n2]*B[k2+1] - v[k2+1+n2]*B[k2 ];
- }
-
- // decode kernel to output
- // determined the following value experimentally
- // (by first figuring out what made inverse_mdct_slow work); then matching that here
- // (probably vorbis encoder premultiplies by n or n/2, to save it on the decoder?)
- s = 0.5; // theoretically would be n4
-
- // [[[ note! the s value of 0.5 is compensated for by the B[] in the current code,
- // so it needs to use the "old" B values to behave correctly, or else
- // set s to 1.0 ]]]
- for (i=0; i < n4 ; ++i) buffer[i] = s * X[i+n4];
- for ( ; i < n3_4; ++i) buffer[i] = -s * X[n3_4 - i - 1];
- for ( ; i < n ; ++i) buffer[i] = -s * X[i - n3_4];
-}
-#endif
-
-static float *get_window(vorb *f, int len)
-{
- len <<= 1;
- if (len == f->blocksize_0) return f->window[0];
- if (len == f->blocksize_1) return f->window[1];
- assert(0);
- return NULL;
-}
-
-#ifndef STB_VORBIS_NO_DEFER_FLOOR
-typedef int16 YTYPE;
-#else
-typedef int YTYPE;
-#endif
-static int do_floor(vorb *f, Mapping *map, int i, int n, float *target, YTYPE *finalY, uint8 *step2_flag)
-{
- int n2 = n >> 1;
- int s = map->chan[i].mux, floor;
- floor = map->submap_floor[s];
- if (f->floor_types[floor] == 0) {
- return error(f, VORBIS_invalid_stream);
- } else {
- Floor1 *g = &f->floor_config[floor].floor1;
- int j,q;
- int lx = 0, ly = finalY[0] * g->floor1_multiplier;
- for (q=1; q < g->values; ++q) {
- j = g->sorted_order[q];
- #ifndef STB_VORBIS_NO_DEFER_FLOOR
- if (finalY[j] >= 0)
- #else
- if (step2_flag[j])
- #endif
- {
- int hy = finalY[j] * g->floor1_multiplier;
- int hx = g->Xlist[j];
- draw_line(target, lx,ly, hx,hy, n2);
- lx = hx, ly = hy;
- }
- }
- if (lx < n2)
- // optimization of: draw_line(target, lx,ly, n,ly, n2);
- for (j=lx; j < n2; ++j)
- LINE_OP(target[j], inverse_db_table[ly]);
- }
- return TRUE;
-}
-
-static int vorbis_decode_initial(vorb *f, int *p_left_start, int *p_left_end, int *p_right_start, int *p_right_end, int *mode)
-{
- Mode *m;
- int i, n, prev, next, window_center;
- f->channel_buffer_start = f->channel_buffer_end = 0;
-
- retry:
- if (f->eof) return FALSE;
- if (!maybe_start_packet(f))
- return FALSE;
- // check packet type
- if (get_bits(f,1) != 0) {
- if (IS_PUSH_MODE(f))
- return error(f,VORBIS_bad_packet_type);
- while (EOP != get8_packet(f));
- goto retry;
- }
-
- if (f->alloc.alloc_buffer)
- assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);
-
- i = get_bits(f, ilog(f->mode_count-1));
- if (i == EOP) return FALSE;
- if (i >= f->mode_count) return FALSE;
- *mode = i;
- m = f->mode_config + i;
- if (m->blockflag) {
- n = f->blocksize_1;
- prev = get_bits(f,1);
- next = get_bits(f,1);
- } else {
- prev = next = 0;
- n = f->blocksize_0;
- }
-
-// WINDOWING
-
- window_center = n >> 1;
- if (m->blockflag && !prev) {
- *p_left_start = (n - f->blocksize_0) >> 2;
- *p_left_end = (n + f->blocksize_0) >> 2;
- } else {
- *p_left_start = 0;
- *p_left_end = window_center;
- }
- if (m->blockflag && !next) {
- *p_right_start = (n*3 - f->blocksize_0) >> 2;
- *p_right_end = (n*3 + f->blocksize_0) >> 2;
- } else {
- *p_right_start = window_center;
- *p_right_end = n;
- }
- return TRUE;
-}
-
-static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start, int left_end, int right_start, int right_end, int *p_left)
-{
- Mapping *map;
- int i,j,k,n,n2;
- int zero_channel[256];
- int really_zero_channel[256];
- int window_center;
-
-// WINDOWING
-
- n = f->blocksize[m->blockflag];
- window_center = n >> 1;
-
- map = &f->mapping[m->mapping];
-
-// FLOORS
- n2 = n >> 1;
-
- stb_prof(1);
- for (i=0; i < f->channels; ++i) {
- int s = map->chan[i].mux, floor;
- zero_channel[i] = FALSE;
- floor = map->submap_floor[s];
- if (f->floor_types[floor] == 0) {
- return error(f, VORBIS_invalid_stream);
- } else {
- Floor1 *g = &f->floor_config[floor].floor1;
- if (get_bits(f, 1)) {
- short *finalY;
- uint8 step2_flag[256];
- static int range_list[4] = { 256, 128, 86, 64 };
- int range = range_list[g->floor1_multiplier-1];
- int offset = 2;
- finalY = f->finalY[i];
- finalY[0] = get_bits(f, ilog(range)-1);
- finalY[1] = get_bits(f, ilog(range)-1);
- for (j=0; j < g->partitions; ++j) {
- int pclass = g->partition_class_list[j];
- int cdim = g->class_dimensions[pclass];
- int cbits = g->class_subclasses[pclass];
- int csub = (1 << cbits)-1;
- int cval = 0;
- if (cbits) {
- Codebook *c = f->codebooks + g->class_masterbooks[pclass];
- DECODE(cval,f,c);
- }
- for (k=0; k < cdim; ++k) {
- int book = g->subclass_books[pclass][cval & csub];
- cval = cval >> cbits;
- if (book >= 0) {
- int temp;
- Codebook *c = f->codebooks + book;
- DECODE(temp,f,c);
- finalY[offset++] = temp;
- } else
- finalY[offset++] = 0;
- }
- }
- if (f->valid_bits == INVALID_BITS) goto error; // behavior according to spec
- step2_flag[0] = step2_flag[1] = 1;
- for (j=2; j < g->values; ++j) {
- int low, high, pred, highroom, lowroom, room, val;
- low = g->neighbors[j][0];
- high = g->neighbors[j][1];
- //neighbors(g->Xlist, j, &low, &high);
- pred = predict_point(g->Xlist[j], g->Xlist[low], g->Xlist[high], finalY[low], finalY[high]);
- val = finalY[j];
- highroom = range - pred;
- lowroom = pred;
- if (highroom < lowroom)
- room = highroom * 2;
- else
- room = lowroom * 2;
- if (val) {
- step2_flag[low] = step2_flag[high] = 1;
- step2_flag[j] = 1;
- if (val >= room)
- if (highroom > lowroom)
- finalY[j] = val - lowroom + pred;
- else
- finalY[j] = pred - val + highroom - 1;
- else
- if (val & 1)
- finalY[j] = pred - ((val+1)>>1);
- else
- finalY[j] = pred + (val>>1);
- } else {
- step2_flag[j] = 0;
- finalY[j] = pred;
- }
- }
-
-#ifdef STB_VORBIS_NO_DEFER_FLOOR
- do_floor(f, map, i, n, f->floor_buffers[i], finalY, step2_flag);
-#else
- // defer final floor computation until _after_ residue
- for (j=0; j < g->values; ++j) {
- if (!step2_flag[j])
- finalY[j] = -1;
- }
-#endif
- } else {
- error:
- zero_channel[i] = TRUE;
- }
- // So we just defer everything else to later
-
- // at this point we've decoded the floor into buffer
- }
- }
- stb_prof(0);
- // at this point we've decoded all floors
-
- if (f->alloc.alloc_buffer)
- assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);
-
- // re-enable coupled channels if necessary
- memcpy(really_zero_channel, zero_channel, sizeof(really_zero_channel[0]) * f->channels);
- for (i=0; i < map->coupling_steps; ++i)
- if (!zero_channel[map->chan[i].magnitude] || !zero_channel[map->chan[i].angle]) {
- zero_channel[map->chan[i].magnitude] = zero_channel[map->chan[i].angle] = FALSE;
- }
-
-// RESIDUE DECODE
- for (i=0; i < map->submaps; ++i) {
- float *residue_buffers[STB_VORBIS_MAX_CHANNELS];
- int r,t;
- uint8 do_not_decode[256];
- int ch = 0;
- for (j=0; j < f->channels; ++j) {
- if (map->chan[j].mux == i) {
- if (zero_channel[j]) {
- do_not_decode[ch] = TRUE;
- residue_buffers[ch] = NULL;
- } else {
- do_not_decode[ch] = FALSE;
- residue_buffers[ch] = f->channel_buffers[j];
- }
- ++ch;
- }
- }
- r = map->submap_residue[i];
- t = f->residue_types[r];
- decode_residue(f, residue_buffers, ch, n2, r, do_not_decode);
- }
-
- if (f->alloc.alloc_buffer)
- assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);
-
-// INVERSE COUPLING
- stb_prof(14);
- for (i = map->coupling_steps-1; i >= 0; --i) {
- int n2 = n >> 1;
- float *m = f->channel_buffers[map->chan[i].magnitude];
- float *a = f->channel_buffers[map->chan[i].angle ];
- for (j=0; j < n2; ++j) {
- float a2,m2;
- if (m[j] > 0)
- if (a[j] > 0)
- m2 = m[j], a2 = m[j] - a[j];
- else
- a2 = m[j], m2 = m[j] + a[j];
- else
- if (a[j] > 0)
- m2 = m[j], a2 = m[j] + a[j];
- else
- a2 = m[j], m2 = m[j] - a[j];
- m[j] = m2;
- a[j] = a2;
- }
- }
-
- // finish decoding the floors
-#ifndef STB_VORBIS_NO_DEFER_FLOOR
- stb_prof(15);
- for (i=0; i < f->channels; ++i) {
- if (really_zero_channel[i]) {
- memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2);
- } else {
- do_floor(f, map, i, n, f->channel_buffers[i], f->finalY[i], NULL);
- }
- }
-#else
- for (i=0; i < f->channels; ++i) {
- if (really_zero_channel[i]) {
- memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2);
- } else {
- for (j=0; j < n2; ++j)
- f->channel_buffers[i][j] *= f->floor_buffers[i][j];
- }
- }
-#endif
-
-// INVERSE MDCT
- stb_prof(16);
- for (i=0; i < f->channels; ++i)
- inverse_mdct(f->channel_buffers[i], n, f, m->blockflag);
- stb_prof(0);
-
- // this shouldn't be necessary, unless we exited on an error
- // and want to flush to get to the next packet
- flush_packet(f);
-
- if (f->first_decode) {
- // assume we start so first non-discarded sample is sample 0
- // this isn't to spec, but spec would require us to read ahead
- // and decode the size of all current frames--could be done,
- // but presumably it's not a commonly used feature
- f->current_loc = -n2; // start of first frame is positioned for discard
- // we might have to discard samples "from" the next frame too,
- // if we're lapping a large block then a small at the start?
- f->discard_samples_deferred = n - right_end;
- f->current_loc_valid = TRUE;
- f->first_decode = FALSE;
- } else if (f->discard_samples_deferred) {
- left_start += f->discard_samples_deferred;
- *p_left = left_start;
- f->discard_samples_deferred = 0;
- } else if (f->previous_length == 0 && f->current_loc_valid) {
- // we're recovering from a seek... that means we're going to discard
- // the samples from this packet even though we know our position from
- // the last page header, so we need to update the position based on
- // the discarded samples here
- // but wait, the code below is going to add this in itself even
- // on a discard, so we don't need to do it here...
- }
-
- // check if we have ogg information about the sample # for this packet
- if (f->last_seg_which == f->end_seg_with_known_loc) {
- // if we have a valid current loc, and this is final:
- if (f->current_loc_valid && (f->page_flag & PAGEFLAG_last_page)) {
- uint32 current_end = f->known_loc_for_packet - (n-right_end);
- // then let's infer the size of the (probably) short final frame
- if (current_end < f->current_loc + right_end) {
- if (current_end < f->current_loc) {
- // negative truncation, that's impossible!
- *len = 0;
- } else {
- *len = current_end - f->current_loc;
- }
- *len += left_start;
- f->current_loc += *len;
- return TRUE;
- }
- }
- // otherwise, just set our sample loc
- // guess that the ogg granule pos refers to the _middle_ of the
- // last frame?
- // set f->current_loc to the position of left_start
- f->current_loc = f->known_loc_for_packet - (n2-left_start);
- f->current_loc_valid = TRUE;
- }
- if (f->current_loc_valid)
- f->current_loc += (right_start - left_start);
-
- if (f->alloc.alloc_buffer)
- assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);
- *len = right_end; // ignore samples after the window goes to 0
- return TRUE;
-}
-
-static int vorbis_decode_packet(vorb *f, int *len, int *p_left, int *p_right)
-{
- int mode, left_end, right_end;
- if (!vorbis_decode_initial(f, p_left, &left_end, p_right, &right_end, &mode)) return 0;
- return vorbis_decode_packet_rest(f, len, f->mode_config + mode, *p_left, left_end, *p_right, right_end, p_left);
-}
-
-static int vorbis_finish_frame(stb_vorbis *f, int len, int left, int right)
-{
- int prev,i,j;
- // we use right&left (the start of the right- and left-window sin()-regions)
- // to determine how much to return, rather than inferring from the rules
- // (same result, clearer code); 'left' indicates where our sin() window
- // starts, therefore where the previous window's right edge starts, and
- // therefore where to start mixing from the previous buffer. 'right'
- // indicates where our sin() ending-window starts, therefore that's where
- // we start saving, and where our returned-data ends.
-
- // mixin from previous window
- if (f->previous_length) {
- int i,j, n = f->previous_length;
- float *w = get_window(f, n);
- for (i=0; i < f->channels; ++i) {
- for (j=0; j < n; ++j)
- f->channel_buffers[i][left+j] =
- f->channel_buffers[i][left+j]*w[ j] +
- f->previous_window[i][ j]*w[n-1-j];
- }
- }
-
- prev = f->previous_length;
-
- // last half of this data becomes previous window
- f->previous_length = len - right;
-
- // @OPTIMIZE: could avoid this copy by double-buffering the
- // output (flipping previous_window with channel_buffers), but
- // then previous_window would have to be 2x as large, and
- // channel_buffers couldn't be temp mem (although they're NOT
- // currently temp mem, they could be (unless we want to level
- // performance by spreading out the computation))
- for (i=0; i < f->channels; ++i)
- for (j=0; right+j < len; ++j)
- f->previous_window[i][j] = f->channel_buffers[i][right+j];
-
- if (!prev)
- // there was no previous packet, so this data isn't valid...
- // this isn't entirely true, only the would-have-overlapped data
- // isn't valid, but this seems to be what the spec requires
- return 0;
-
- // truncate a short frame
- if (len < right) right = len;
-
- f->samples_output += right-left;
-
- return right - left;
-}
-
-static void vorbis_pump_first_frame(stb_vorbis *f)
-{
- int len, right, left;
- if (vorbis_decode_packet(f, &len, &left, &right))
- vorbis_finish_frame(f, len, left, right);
-}
-
-#ifndef STB_VORBIS_NO_PUSHDATA_API
-static int is_whole_packet_present(stb_vorbis *f, int end_page)
-{
- // make sure that we have the packet available before continuing...
- // this requires a full ogg parse, but we know we can fetch from f->stream
-
- // instead of coding this out explicitly, we could save the current read state,
- // read the next packet with get8() until end-of-packet, check f->eof, then
- // reset the state? but that would be slower, esp. since we'd have over 256 bytes
- // of state to restore (primarily the page segment table)
-
- int s = f->next_seg, first = TRUE;
- uint8 *p = f->stream;
-
- if (s != -1) { // if we're not starting the packet with a 'continue on next page' flag
- for (; s < f->segment_count; ++s) {
- p += f->segments[s];
- if (f->segments[s] < 255) // stop at first short segment
- break;
- }
- // either this continues, or it ends it...
- if (end_page)
- if (s < f->segment_count-1) return error(f, VORBIS_invalid_stream);
- if (s == f->segment_count)
- s = -1; // set 'crosses page' flag
- if (p > f->stream_end) return error(f, VORBIS_need_more_data);
- first = FALSE;
- }
- for (; s == -1;) {
- uint8 *q;
- int n;
-
- // check that we have the page header ready
- if (p + 26 >= f->stream_end) return error(f, VORBIS_need_more_data);
- // validate the page
- if (memcmp(p, ogg_page_header, 4)) return error(f, VORBIS_invalid_stream);
- if (p[4] != 0) return error(f, VORBIS_invalid_stream);
- if (first) { // the first segment must NOT have 'continued_packet', later ones MUST
- if (f->previous_length)
- if ((p[5] & PAGEFLAG_continued_packet)) return error(f, VORBIS_invalid_stream);
- // if no previous length, we're resynching, so we can come in on a continued-packet,
- // which we'll just drop
- } else {
- if (!(p[5] & PAGEFLAG_continued_packet)) return error(f, VORBIS_invalid_stream);
- }
- n = p[26]; // segment counts
- q = p+27; // q points to segment table
- p = q + n; // advance past header
- // make sure we've read the segment table
- if (p > f->stream_end) return error(f, VORBIS_need_more_data);
- for (s=0; s < n; ++s) {
- p += q[s];
- if (q[s] < 255)
- break;
- }
- if (end_page)
- if (s < n-1) return error(f, VORBIS_invalid_stream);
- if (s == f->segment_count)
- s = -1; // set 'crosses page' flag
- if (p > f->stream_end) return error(f, VORBIS_need_more_data);
- first = FALSE;
- }
- return TRUE;
-}
-#endif // !STB_VORBIS_NO_PUSHDATA_API
-
-static int start_decoder(vorb *f)
-{
- uint8 header[6], x,y;
- int len,i,j,k, max_submaps = 0;
- int longest_floorlist=0;
-
- // first page, first packet
-
- if (!start_page(f)) return FALSE;
- // validate page flag
- if (!(f->page_flag & PAGEFLAG_first_page)) return error(f, VORBIS_invalid_first_page);
- if (f->page_flag & PAGEFLAG_last_page) return error(f, VORBIS_invalid_first_page);
- if (f->page_flag & PAGEFLAG_continued_packet) return error(f, VORBIS_invalid_first_page);
- // check for expected packet length
- if (f->segment_count != 1) return error(f, VORBIS_invalid_first_page);
- if (f->segments[0] != 30) return error(f, VORBIS_invalid_first_page);
- // read packet
- // check packet header
- if (get8(f) != VORBIS_packet_id) return error(f, VORBIS_invalid_first_page);
- if (!getn(f, header, 6)) return error(f, VORBIS_unexpected_eof);
- if (!vorbis_validate(header)) return error(f, VORBIS_invalid_first_page);
- // vorbis_version
- if (get32(f) != 0) return error(f, VORBIS_invalid_first_page);
- f->channels = get8(f); if (!f->channels) return error(f, VORBIS_invalid_first_page);
- if (f->channels > STB_VORBIS_MAX_CHANNELS) return error(f, VORBIS_too_many_channels);
- f->sample_rate = get32(f); if (!f->sample_rate) return error(f, VORBIS_invalid_first_page);
- get32(f); // bitrate_maximum
- get32(f); // bitrate_nominal
- get32(f); // bitrate_minimum
- x = get8(f);
- { int log0,log1;
- log0 = x & 15;
- log1 = x >> 4;
- f->blocksize_0 = 1 << log0;
- f->blocksize_1 = 1 << log1;
- if (log0 < 6 || log0 > 13) return error(f, VORBIS_invalid_setup);
- if (log1 < 6 || log1 > 13) return error(f, VORBIS_invalid_setup);
- if (log0 > log1) return error(f, VORBIS_invalid_setup);
- }
-
- // framing_flag
- x = get8(f);
- if (!(x & 1)) return error(f, VORBIS_invalid_first_page);
-
- // second packet!
- if (!start_page(f)) return FALSE;
-
- if (!start_packet(f)) return FALSE;
- do {
- len = next_segment(f);
- skip(f, len);
- f->bytes_in_seg = 0;
- } while (len);
-
- // third packet!
- if (!start_packet(f)) return FALSE;
-
- #ifndef STB_VORBIS_NO_PUSHDATA_API
- if (IS_PUSH_MODE(f)) {
- if (!is_whole_packet_present(f, TRUE)) {
- // convert error in ogg header to write type
- if (f->error == VORBIS_invalid_stream)
- f->error = VORBIS_invalid_setup;
- return FALSE;
- }
- }
- #endif
-
- crc32_init(); // always init it, to avoid multithread race conditions
-
- if (get8_packet(f) != VORBIS_packet_setup) return error(f, VORBIS_invalid_setup);
- for (i=0; i < 6; ++i) header[i] = get8_packet(f);
- if (!vorbis_validate(header)) return error(f, VORBIS_invalid_setup);
-
- // codebooks
-
- f->codebook_count = get_bits(f,8) + 1;
- f->codebooks = (Codebook *) setup_malloc(f, sizeof(*f->codebooks) * f->codebook_count);
- if (f->codebooks == NULL) return error(f, VORBIS_outofmem);
- memset(f->codebooks, 0, sizeof(*f->codebooks) * f->codebook_count);
- for (i=0; i < f->codebook_count; ++i) {
- uint32 *values;
- int ordered, sorted_count;
- int total=0;
- uint8 *lengths;
- Codebook *c = f->codebooks+i;
- x = get_bits(f, 8); if (x != 0x42) return error(f, VORBIS_invalid_setup);
- x = get_bits(f, 8); if (x != 0x43) return error(f, VORBIS_invalid_setup);
- x = get_bits(f, 8); if (x != 0x56) return error(f, VORBIS_invalid_setup);
- x = get_bits(f, 8);
- c->dimensions = (get_bits(f, 8)<<8) + x;
- x = get_bits(f, 8);
- y = get_bits(f, 8);
- c->entries = (get_bits(f, 8)<<16) + (y<<8) + x;
- ordered = get_bits(f,1);
- c->sparse = ordered ? 0 : get_bits(f,1);
-
- if (c->sparse)
- lengths = (uint8 *) setup_temp_malloc(f, c->entries);
- else
- lengths = c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries);
-
- if (!lengths) return error(f, VORBIS_outofmem);
-
- if (ordered) {
- int current_entry = 0;
- int current_length = get_bits(f,5) + 1;
- while (current_entry < c->entries) {
- int limit = c->entries - current_entry;
- int n = get_bits(f, ilog(limit));
- if (current_entry + n > (int) c->entries) { return error(f, VORBIS_invalid_setup); }
- memset(lengths + current_entry, current_length, n);
- current_entry += n;
- ++current_length;
- }
- } else {
- for (j=0; j < c->entries; ++j) {
- int present = c->sparse ? get_bits(f,1) : 1;
- if (present) {
- lengths[j] = get_bits(f, 5) + 1;
- ++total;
- } else {
- lengths[j] = NO_CODE;
- }
- }
- }
-
- if (c->sparse && total >= c->entries >> 2) {
- // convert sparse items to non-sparse!
- if (c->entries > (int) f->setup_temp_memory_required)
- f->setup_temp_memory_required = c->entries;
-
- c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries);
- memcpy(c->codeword_lengths, lengths, c->entries);
- setup_temp_free(f, lengths, c->entries); // note this is only safe if there have been no intervening temp mallocs!
- lengths = c->codeword_lengths;
- c->sparse = 0;
- }
-
- // compute the size of the sorted tables
- if (c->sparse) {
- sorted_count = total;
- //assert(total != 0);
- } else {
- sorted_count = 0;
- #ifndef STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
- for (j=0; j < c->entries; ++j)
- if (lengths[j] > STB_VORBIS_FAST_HUFFMAN_LENGTH && lengths[j] != NO_CODE)
- ++sorted_count;
- #endif
- }
-
- c->sorted_entries = sorted_count;
- values = NULL;
-
- if (!c->sparse) {
- c->codewords = (uint32 *) setup_malloc(f, sizeof(c->codewords[0]) * c->entries);
- if (!c->codewords) return error(f, VORBIS_outofmem);
- } else {
- unsigned int size;
- if (c->sorted_entries) {
- c->codeword_lengths = (uint8 *) setup_malloc(f, c->sorted_entries);
- if (!c->codeword_lengths) return error(f, VORBIS_outofmem);
- c->codewords = (uint32 *) setup_temp_malloc(f, sizeof(*c->codewords) * c->sorted_entries);
- if (!c->codewords) return error(f, VORBIS_outofmem);
- values = (uint32 *) setup_temp_malloc(f, sizeof(*values) * c->sorted_entries);
- if (!values) return error(f, VORBIS_outofmem);
- }
- size = c->entries + (sizeof(*c->codewords) + sizeof(*values)) * c->sorted_entries;
- if (size > f->setup_temp_memory_required)
- f->setup_temp_memory_required = size;
- }
-
- if (!compute_codewords(c, lengths, c->entries, values)) {
- if (c->sparse) setup_temp_free(f, values, 0);
- return error(f, VORBIS_invalid_setup);
- }
-
- if (c->sorted_entries) {
- // allocate an extra slot for sentinels
- c->sorted_codewords = (uint32 *) setup_malloc(f, sizeof(*c->sorted_codewords) * (c->sorted_entries+1));
- // allocate an extra slot at the front so that c->sorted_values[-1] is defined
- // so that we can catch that case without an extra if
- c->sorted_values = ( int *) setup_malloc(f, sizeof(*c->sorted_values ) * (c->sorted_entries+1));
- if (c->sorted_values) { ++c->sorted_values; c->sorted_values[-1] = -1; }
- compute_sorted_huffman(c, lengths, values);
- }
-
- if (c->sparse) {
- setup_temp_free(f, values, sizeof(*values)*c->sorted_entries);
- setup_temp_free(f, c->codewords, sizeof(*c->codewords)*c->sorted_entries);
- setup_temp_free(f, lengths, c->entries);
- c->codewords = NULL;
- }
-
- compute_accelerated_huffman(c);
-
- c->lookup_type = get_bits(f, 4);
- if (c->lookup_type > 2) return error(f, VORBIS_invalid_setup);
- if (c->lookup_type > 0) {
- uint16 *mults;
- c->minimum_value = float32_unpack(get_bits(f, 32));
- c->delta_value = float32_unpack(get_bits(f, 32));
- c->value_bits = get_bits(f, 4)+1;
- c->sequence_p = get_bits(f,1);
- if (c->lookup_type == 1) {
- c->lookup_values = lookup1_values(c->entries, c->dimensions);
- } else {
- c->lookup_values = c->entries * c->dimensions;
- }
- mults = (uint16 *) setup_temp_malloc(f, sizeof(mults[0]) * c->lookup_values);
- if (mults == NULL) return error(f, VORBIS_outofmem);
- for (j=0; j < (int) c->lookup_values; ++j) {
- int q = get_bits(f, c->value_bits);
- if (q == EOP) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_invalid_setup); }
- mults[j] = q;
- }
-
-#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK
- if (c->lookup_type == 1) {
- int len, sparse = c->sparse;
- // pre-expand the lookup1-style multiplicands, to avoid a divide in the inner loop
- if (sparse) {
- if (c->sorted_entries == 0) goto skip;
- c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->sorted_entries * c->dimensions);
- } else
- c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->entries * c->dimensions);
- if (c->multiplicands == NULL) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_outofmem); }
- len = sparse ? c->sorted_entries : c->entries;
- for (j=0; j < len; ++j) {
- int z = sparse ? c->sorted_values[j] : j, div=1;
- for (k=0; k < c->dimensions; ++k) {
- int off = (z / div) % c->lookup_values;
- c->multiplicands[j*c->dimensions + k] =
- #ifndef STB_VORBIS_CODEBOOK_FLOATS
- mults[off];
- #else
- mults[off]*c->delta_value + c->minimum_value;
- // in this case (and this case only) we could pre-expand c->sequence_p,
- // and throw away the decode logic for it; have to ALSO do
- // it in the case below, but it can only be done if
- // STB_VORBIS_CODEBOOK_FLOATS
- // !STB_VORBIS_DIVIDES_IN_CODEBOOK
- #endif
- div *= c->lookup_values;
- }
- }
- setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values);
- c->lookup_type = 2;
- }
- else
-#endif
- {
- c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->lookup_values);
- #ifndef STB_VORBIS_CODEBOOK_FLOATS
- memcpy(c->multiplicands, mults, sizeof(c->multiplicands[0]) * c->lookup_values);
- #else
- for (j=0; j < (int) c->lookup_values; ++j)
- c->multiplicands[j] = mults[j] * c->delta_value + c->minimum_value;
- #endif
- setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values);
- }
- skip:;
-
- #ifdef STB_VORBIS_CODEBOOK_FLOATS
- if (c->lookup_type == 2 && c->sequence_p) {
- for (j=1; j < (int) c->lookup_values; ++j)
- c->multiplicands[j] = c->multiplicands[j-1];
- c->sequence_p = 0;
- }
- #endif
- }
- }
-
- // time domain transfers (notused)
-
- x = get_bits(f, 6) + 1;
- for (i=0; i < x; ++i) {
- uint32 z = get_bits(f, 16);
- if (z != 0) return error(f, VORBIS_invalid_setup);
- }
-
- // Floors
- f->floor_count = get_bits(f, 6)+1;
- f->floor_config = (Floor *) setup_malloc(f, f->floor_count * sizeof(*f->floor_config));
- for (i=0; i < f->floor_count; ++i) {
- f->floor_types[i] = get_bits(f, 16);
- if (f->floor_types[i] > 1) return error(f, VORBIS_invalid_setup);
- if (f->floor_types[i] == 0) {
- Floor0 *g = &f->floor_config[i].floor0;
- g->order = get_bits(f,8);
- g->rate = get_bits(f,16);
- g->bark_map_size = get_bits(f,16);
- g->amplitude_bits = get_bits(f,6);
- g->amplitude_offset = get_bits(f,8);
- g->number_of_books = get_bits(f,4) + 1;
- for (j=0; j < g->number_of_books; ++j)
- g->book_list[j] = get_bits(f,8);
- return error(f, VORBIS_feature_not_supported);
- } else {
- Point p[31*8+2];
- Floor1 *g = &f->floor_config[i].floor1;
- int max_class = -1;
- g->partitions = get_bits(f, 5);
- for (j=0; j < g->partitions; ++j) {
- g->partition_class_list[j] = get_bits(f, 4);
- if (g->partition_class_list[j] > max_class)
- max_class = g->partition_class_list[j];
- }
- for (j=0; j <= max_class; ++j) {
- g->class_dimensions[j] = get_bits(f, 3)+1;
- g->class_subclasses[j] = get_bits(f, 2);
- if (g->class_subclasses[j]) {
- g->class_masterbooks[j] = get_bits(f, 8);
- if (g->class_masterbooks[j] >= f->codebook_count) return error(f, VORBIS_invalid_setup);
- }
- for (k=0; k < 1 << g->class_subclasses[j]; ++k) {
- g->subclass_books[j][k] = get_bits(f,8)-1;
- if (g->subclass_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup);
- }
- }
- g->floor1_multiplier = get_bits(f,2)+1;
- g->rangebits = get_bits(f,4);
- g->Xlist[0] = 0;
- g->Xlist[1] = 1 << g->rangebits;
- g->values = 2;
- for (j=0; j < g->partitions; ++j) {
- int c = g->partition_class_list[j];
- for (k=0; k < g->class_dimensions[c]; ++k) {
- g->Xlist[g->values] = get_bits(f, g->rangebits);
- ++g->values;
- }
- }
- // precompute the sorting
- for (j=0; j < g->values; ++j) {
- p[j].x = g->Xlist[j];
- p[j].y = j;
- }
- qsort(p, g->values, sizeof(p[0]), point_compare);
- for (j=0; j < g->values; ++j)
- g->sorted_order[j] = (uint8) p[j].y;
- // precompute the neighbors
- for (j=2; j < g->values; ++j) {
- int low,hi;
- neighbors(g->Xlist, j, &low,&hi);
- g->neighbors[j][0] = low;
- g->neighbors[j][1] = hi;
- }
-
- if (g->values > longest_floorlist)
- longest_floorlist = g->values;
- }
- }
-
- // Residue
- f->residue_count = get_bits(f, 6)+1;
- f->residue_config = (Residue *) setup_malloc(f, f->residue_count * sizeof(*f->residue_config));
- for (i=0; i < f->residue_count; ++i) {
- uint8 residue_cascade[64];
- Residue *r = f->residue_config+i;
- f->residue_types[i] = get_bits(f, 16);
- if (f->residue_types[i] > 2) return error(f, VORBIS_invalid_setup);
- r->begin = get_bits(f, 24);
- r->end = get_bits(f, 24);
- r->part_size = get_bits(f,24)+1;
- r->classifications = get_bits(f,6)+1;
- r->classbook = get_bits(f,8);
- for (j=0; j < r->classifications; ++j) {
- uint8 high_bits=0;
- uint8 low_bits=get_bits(f,3);
- if (get_bits(f,1))
- high_bits = get_bits(f,5);
- residue_cascade[j] = high_bits*8 + low_bits;
- }
- r->residue_books = (short (*)[8]) setup_malloc(f, sizeof(r->residue_books[0]) * r->classifications);
- for (j=0; j < r->classifications; ++j) {
- for (k=0; k < 8; ++k) {
- if (residue_cascade[j] & (1 << k)) {
- r->residue_books[j][k] = get_bits(f, 8);
- if (r->residue_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup);
- } else {
- r->residue_books[j][k] = -1;
- }
- }
- }
- // precompute the classifications[] array to avoid inner-loop mod/divide
- // call it 'classdata' since we already have r->classifications
- r->classdata = (uint8 **) setup_malloc(f, sizeof(*r->classdata) * f->codebooks[r->classbook].entries);
- if (!r->classdata) return error(f, VORBIS_outofmem);
- memset(r->classdata, 0, sizeof(*r->classdata) * f->codebooks[r->classbook].entries);
- for (j=0; j < f->codebooks[r->classbook].entries; ++j) {
- int classwords = f->codebooks[r->classbook].dimensions;
- int temp = j;
- r->classdata[j] = (uint8 *) setup_malloc(f, sizeof(r->classdata[j][0]) * classwords);
- for (k=classwords-1; k >= 0; --k) {
- r->classdata[j][k] = temp % r->classifications;
- temp /= r->classifications;
- }
- }
- }
-
- f->mapping_count = get_bits(f,6)+1;
- f->mapping = (Mapping *) setup_malloc(f, f->mapping_count * sizeof(*f->mapping));
- for (i=0; i < f->mapping_count; ++i) {
- Mapping *m = f->mapping + i;
- int mapping_type = get_bits(f,16);
- if (mapping_type != 0) return error(f, VORBIS_invalid_setup);
- m->chan = (MappingChannel *) setup_malloc(f, f->channels * sizeof(*m->chan));
- if (get_bits(f,1))
- m->submaps = get_bits(f,4);
- else
- m->submaps = 1;
- if (m->submaps > max_submaps)
- max_submaps = m->submaps;
- if (get_bits(f,1)) {
- m->coupling_steps = get_bits(f,8)+1;
- for (k=0; k < m->coupling_steps; ++k) {
- m->chan[k].magnitude = get_bits(f, ilog(f->channels)-1);
- m->chan[k].angle = get_bits(f, ilog(f->channels)-1);
- if (m->chan[k].magnitude >= f->channels) return error(f, VORBIS_invalid_setup);
- if (m->chan[k].angle >= f->channels) return error(f, VORBIS_invalid_setup);
- if (m->chan[k].magnitude == m->chan[k].angle) return error(f, VORBIS_invalid_setup);
- }
- } else
- m->coupling_steps = 0;
-
- // reserved field
- if (get_bits(f,2)) return error(f, VORBIS_invalid_setup);
- if (m->submaps > 1) {
- for (j=0; j < f->channels; ++j) {
- m->chan[j].mux = get_bits(f, 4);
- if (m->chan[j].mux >= m->submaps) return error(f, VORBIS_invalid_setup);
- }
- } else
- // @SPECIFICATION: this case is missing from the spec
- for (j=0; j < f->channels; ++j)
- m->chan[j].mux = 0;
-
- for (j=0; j < m->submaps; ++j) {
- get_bits(f,8); // discard
- m->submap_floor[j] = get_bits(f,8);
- m->submap_residue[j] = get_bits(f,8);
- if (m->submap_floor[j] >= f->floor_count) return error(f, VORBIS_invalid_setup);
- if (m->submap_residue[j] >= f->residue_count) return error(f, VORBIS_invalid_setup);
- }
- }
-
- // Modes
- f->mode_count = get_bits(f, 6)+1;
- for (i=0; i < f->mode_count; ++i) {
- Mode *m = f->mode_config+i;
- m->blockflag = get_bits(f,1);
- m->windowtype = get_bits(f,16);
- m->transformtype = get_bits(f,16);
- m->mapping = get_bits(f,8);
- if (m->windowtype != 0) return error(f, VORBIS_invalid_setup);
- if (m->transformtype != 0) return error(f, VORBIS_invalid_setup);
- if (m->mapping >= f->mapping_count) return error(f, VORBIS_invalid_setup);
- }
-
- flush_packet(f);
-
- f->previous_length = 0;
-
- for (i=0; i < f->channels; ++i) {
- f->channel_buffers[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1);
- f->previous_window[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2);
- f->finalY[i] = (int16 *) setup_malloc(f, sizeof(int16) * longest_floorlist);
- #ifdef STB_VORBIS_NO_DEFER_FLOOR
- f->floor_buffers[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2);
- #endif
- }
-
- if (!init_blocksize(f, 0, f->blocksize_0)) return FALSE;
- if (!init_blocksize(f, 1, f->blocksize_1)) return FALSE;
- f->blocksize[0] = f->blocksize_0;
- f->blocksize[1] = f->blocksize_1;
-
-#ifdef STB_VORBIS_DIVIDE_TABLE
- if (integer_divide_table[1][1]==0)
- for (i=0; i < DIVTAB_NUMER; ++i)
- for (j=1; j < DIVTAB_DENOM; ++j)
- integer_divide_table[i][j] = i / j;
-#endif
-
- // compute how much temporary memory is needed
-
- // 1.
- {
- uint32 imdct_mem = (f->blocksize_1 * sizeof(float) >> 1);
- uint32 classify_mem;
- int i,max_part_read=0;
- for (i=0; i < f->residue_count; ++i) {
- Residue *r = f->residue_config + i;
- int n_read = r->end - r->begin;
- int part_read = n_read / r->part_size;
- if (part_read > max_part_read)
- max_part_read = part_read;
- }
- #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE
- classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(uint8 *));
- #else
- classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(int *));
- #endif
-
- f->temp_memory_required = classify_mem;
- if (imdct_mem > f->temp_memory_required)
- f->temp_memory_required = imdct_mem;
- }
-
- f->first_decode = TRUE;
-
- if (f->alloc.alloc_buffer) {
- assert(f->temp_offset == f->alloc.alloc_buffer_length_in_bytes);
- // check if there's enough temp memory so we don't error later
- if (f->setup_offset + sizeof(*f) + f->temp_memory_required > (unsigned) f->temp_offset)
- return error(f, VORBIS_outofmem);
- }
-
- f->first_audio_page_offset = stb_vorbis_get_file_offset(f);
-
- return TRUE;
-}
-
-static void vorbis_deinit(stb_vorbis *p)
-{
- int i,j;
- for (i=0; i < p->residue_count; ++i) {
- Residue *r = p->residue_config+i;
- if (r->classdata) {
- for (j=0; j < p->codebooks[r->classbook].entries; ++j)
- setup_free(p, r->classdata[j]);
- setup_free(p, r->classdata);
- }
- setup_free(p, r->residue_books);
- }
-
- if (p->codebooks) {
- for (i=0; i < p->codebook_count; ++i) {
- Codebook *c = p->codebooks + i;
- setup_free(p, c->codeword_lengths);
- setup_free(p, c->multiplicands);
- setup_free(p, c->codewords);
- setup_free(p, c->sorted_codewords);
- // c->sorted_values[-1] is the first entry in the array
- setup_free(p, c->sorted_values ? c->sorted_values-1 : NULL);
- }
- setup_free(p, p->codebooks);
- }
- setup_free(p, p->floor_config);
- setup_free(p, p->residue_config);
- for (i=0; i < p->mapping_count; ++i)
- setup_free(p, p->mapping[i].chan);
- setup_free(p, p->mapping);
- for (i=0; i < p->channels; ++i) {
- setup_free(p, p->channel_buffers[i]);
- setup_free(p, p->previous_window[i]);
- #ifdef STB_VORBIS_NO_DEFER_FLOOR
- setup_free(p, p->floor_buffers[i]);
- #endif
- setup_free(p, p->finalY[i]);
- }
- for (i=0; i < 2; ++i) {
- setup_free(p, p->A[i]);
- setup_free(p, p->B[i]);
- setup_free(p, p->C[i]);
- setup_free(p, p->window[i]);
- setup_free(p, p->bit_reverse[i]);
- }
- #ifndef STB_VORBIS_NO_STDIO
- if (p->close_on_free) fclose(p->f);
- #endif
-}
-
-void stb_vorbis_close(stb_vorbis *p)
-{
- if (p == NULL) return;
- vorbis_deinit(p);
- setup_free(p,p);
-}
-
-static void vorbis_init(stb_vorbis *p, stb_vorbis_alloc *z)
-{
- memset(p, 0, sizeof(*p)); // NULL out all malloc'd pointers to start
- if (z) {
- p->alloc = *z;
- p->alloc.alloc_buffer_length_in_bytes = (p->alloc.alloc_buffer_length_in_bytes+3) & ~3;
- p->temp_offset = p->alloc.alloc_buffer_length_in_bytes;
- }
- p->eof = 0;
- p->error = VORBIS__no_error;
- p->stream = NULL;
- p->codebooks = NULL;
- p->page_crc_tests = -1;
- #ifndef STB_VORBIS_NO_STDIO
- p->close_on_free = FALSE;
- p->f = NULL;
- #endif
-}
-
-int stb_vorbis_get_sample_offset(stb_vorbis *f)
-{
- if (f->current_loc_valid)
- return f->current_loc;
- else
- return -1;
-}
-
-stb_vorbis_info stb_vorbis_get_info(stb_vorbis *f)
-{
- stb_vorbis_info d;
- d.channels = f->channels;
- d.sample_rate = f->sample_rate;
- d.setup_memory_required = f->setup_memory_required;
- d.setup_temp_memory_required = f->setup_temp_memory_required;
- d.temp_memory_required = f->temp_memory_required;
- d.max_frame_size = f->blocksize_1 >> 1;
- return d;
-}
-
-int stb_vorbis_get_error(stb_vorbis *f)
-{
- int e = f->error;
- f->error = VORBIS__no_error;
- return e;
-}
-
-static stb_vorbis * vorbis_alloc(stb_vorbis *f)
-{
- stb_vorbis *p = (stb_vorbis *) setup_malloc(f, sizeof(*p));
- return p;
-}
-
-#ifndef STB_VORBIS_NO_PUSHDATA_API
-
-void stb_vorbis_flush_pushdata(stb_vorbis *f)
-{
- f->previous_length = 0;
- f->page_crc_tests = 0;
- f->discard_samples_deferred = 0;
- f->current_loc_valid = FALSE;
- f->first_decode = FALSE;
- f->samples_output = 0;
- f->channel_buffer_start = 0;
- f->channel_buffer_end = 0;
-}
-
-static int vorbis_search_for_page_pushdata(vorb *f, uint8 *data, int data_len)
-{
- int i,n;
- for (i=0; i < f->page_crc_tests; ++i)
- f->scan[i].bytes_done = 0;
-
- // if we have room for more scans, search for them first, because
- // they may cause us to stop early if their header is incomplete
- if (f->page_crc_tests < STB_VORBIS_PUSHDATA_CRC_COUNT) {
- if (data_len < 4) return 0;
- data_len -= 3; // need to look for 4-byte sequence, so don't miss
- // one that straddles a boundary
- for (i=0; i < data_len; ++i) {
- if (data[i] == 0x4f) {
- if (0==memcmp(data+i, ogg_page_header, 4)) {
- int j,len;
- uint32 crc;
- // make sure we have the whole page header
- if (i+26 >= data_len || i+27+data[i+26] >= data_len) {
- // only read up to this page start, so hopefully we'll
- // have the whole page header start next time
- data_len = i;
- break;
- }
- // ok, we have it all; compute the length of the page
- len = 27 + data[i+26];
- for (j=0; j < data[i+26]; ++j)
- len += data[i+27+j];
- // scan everything up to the embedded crc (which we must 0)
- crc = 0;
- for (j=0; j < 22; ++j)
- crc = crc32_update(crc, data[i+j]);
- // now process 4 0-bytes
- for ( ; j < 26; ++j)
- crc = crc32_update(crc, 0);
- // len is the total number of bytes we need to scan
- n = f->page_crc_tests++;
- f->scan[n].bytes_left = len-j;
- f->scan[n].crc_so_far = crc;
- f->scan[n].goal_crc = data[i+22] + (data[i+23] << 8) + (data[i+24]<<16) + (data[i+25]<<24);
- // if the last frame on a page is continued to the next, then
- // we can't recover the sample_loc immediately
- if (data[i+27+data[i+26]-1] == 255)
- f->scan[n].sample_loc = ~0;
- else
- f->scan[n].sample_loc = data[i+6] + (data[i+7] << 8) + (data[i+ 8]<<16) + (data[i+ 9]<<24);
- f->scan[n].bytes_done = i+j;
- if (f->page_crc_tests == STB_VORBIS_PUSHDATA_CRC_COUNT)
- break;
- // keep going if we still have room for more
- }
- }
- }
- }
-
- for (i=0; i < f->page_crc_tests;) {
- uint32 crc;
- int j;
- int n = f->scan[i].bytes_done;
- int m = f->scan[i].bytes_left;
- if (m > data_len - n) m = data_len - n;
- // m is the bytes to scan in the current chunk
- crc = f->scan[i].crc_so_far;
- for (j=0; j < m; ++j)
- crc = crc32_update(crc, data[n+j]);
- f->scan[i].bytes_left -= m;
- f->scan[i].crc_so_far = crc;
- if (f->scan[i].bytes_left == 0) {
- // does it match?
- if (f->scan[i].crc_so_far == f->scan[i].goal_crc) {
- // Houston, we have page
- data_len = n+m; // consumption amount is wherever that scan ended
- f->page_crc_tests = -1; // drop out of page scan mode
- f->previous_length = 0; // decode-but-don't-output one frame
- f->next_seg = -1; // start a new page
- f->current_loc = f->scan[i].sample_loc; // set the current sample location
- // to the amount we'd have decoded had we decoded this page
- f->current_loc_valid = f->current_loc != ~0;
- return data_len;
- }
- // delete entry
- f->scan[i] = f->scan[--f->page_crc_tests];
- } else {
- ++i;
- }
- }
-
- return data_len;
-}
-
-// return value: number of bytes we used
-int stb_vorbis_decode_frame_pushdata(
- stb_vorbis *f, // the file we're decoding
- uint8 *data, int data_len, // the memory available for decoding
- int *channels, // place to write number of float * buffers
- float ***output, // place to write float ** array of float * buffers
- int *samples // place to write number of output samples
- )
-{
- int i;
- int len,right,left;
-
- if (!IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);
-
- if (f->page_crc_tests >= 0) {
- *samples = 0;
- return vorbis_search_for_page_pushdata(f, data, data_len);
- }
-
- f->stream = data;
- f->stream_end = data + data_len;
- f->error = VORBIS__no_error;
-
- // check that we have the entire packet in memory
- if (!is_whole_packet_present(f, FALSE)) {
- *samples = 0;
- return 0;
- }
-
- if (!vorbis_decode_packet(f, &len, &left, &right)) {
- // save the actual error we encountered
- enum STBVorbisError error = f->error;
- if (error == VORBIS_bad_packet_type) {
- // flush and resynch
- f->error = VORBIS__no_error;
- while (get8_packet(f) != EOP)
- if (f->eof) break;
- *samples = 0;
- return f->stream - data;
- }
- if (error == VORBIS_continued_packet_flag_invalid) {
- if (f->previous_length == 0) {
- // we may be resynching, in which case it's ok to hit one
- // of these; just discard the packet
- f->error = VORBIS__no_error;
- while (get8_packet(f) != EOP)
- if (f->eof) break;
- *samples = 0;
- return f->stream - data;
- }
- }
- // if we get an error while parsing, what to do?
- // well, it DEFINITELY won't work to continue from where we are!
- stb_vorbis_flush_pushdata(f);
- // restore the error that actually made us bail
- f->error = error;
- *samples = 0;
- return 1;
- }
-
- // success!
- len = vorbis_finish_frame(f, len, left, right);
- for (i=0; i < f->channels; ++i)
- f->outputs[i] = f->channel_buffers[i] + left;
-
- if (channels) *channels = f->channels;
- *samples = len;
- *output = f->outputs;
- return f->stream - data;
-}
-
-stb_vorbis *stb_vorbis_open_pushdata(
- unsigned char *data, int data_len, // the memory available for decoding
- int *data_used, // only defined if result is not NULL
- int *error, stb_vorbis_alloc *alloc)
-{
- stb_vorbis *f, p;
- vorbis_init(&p, alloc);
- p.stream = data;
- p.stream_end = data + data_len;
- p.push_mode = TRUE;
- if (!start_decoder(&p)) {
- if (p.eof)
- *error = VORBIS_need_more_data;
- else
- *error = p.error;
- return NULL;
- }
- f = vorbis_alloc(&p);
- if (f) {
- *f = p;
- *data_used = f->stream - data;
- *error = 0;
- return f;
- } else {
- vorbis_deinit(&p);
- return NULL;
- }
-}
-#endif // STB_VORBIS_NO_PUSHDATA_API
-
-unsigned int stb_vorbis_get_file_offset(stb_vorbis *f)
-{
- #ifndef STB_VORBIS_NO_PUSHDATA_API
- if (f->push_mode) return 0;
- #endif
- if (USE_MEMORY(f)) return f->stream - f->stream_start;
- #ifndef STB_VORBIS_NO_STDIO
- return ftell(f->f) - f->f_start;
- #endif
-}
-
-#ifndef STB_VORBIS_NO_PULLDATA_API
-//
-// DATA-PULLING API
-//
-
-static uint32 vorbis_find_page(stb_vorbis *f, uint32 *end, uint32 *last)
-{
- for(;;) {
- int n;
- if (f->eof) return 0;
- n = get8(f);
- if (n == 0x4f) { // page header
- unsigned int retry_loc = stb_vorbis_get_file_offset(f);
- int i;
- // check if we're off the end of a file_section stream
- if (retry_loc - 25 > f->stream_len)
- return 0;
- // check the rest of the header
- for (i=1; i < 4; ++i)
- if (get8(f) != ogg_page_header[i])
- break;
- if (f->eof) return 0;
- if (i == 4) {
- uint8 header[27];
- uint32 i, crc, goal, len;
- for (i=0; i < 4; ++i)
- header[i] = ogg_page_header[i];
- for (; i < 27; ++i)
- header[i] = get8(f);
- if (f->eof) return 0;
- if (header[4] != 0) goto invalid;
- goal = header[22] + (header[23] << 8) + (header[24]<<16) + (header[25]<<24);
- for (i=22; i < 26; ++i)
- header[i] = 0;
- crc = 0;
- for (i=0; i < 27; ++i)
- crc = crc32_update(crc, header[i]);
- len = 0;
- for (i=0; i < header[26]; ++i) {
- int s = get8(f);
- crc = crc32_update(crc, s);
- len += s;
- }
- if (len && f->eof) return 0;
- for (i=0; i < len; ++i)
- crc = crc32_update(crc, get8(f));
- // finished parsing probable page
- if (crc == goal) {
- // we could now check that it's either got the last
- // page flag set, OR it's followed by the capture
- // pattern, but I guess TECHNICALLY you could have
- // a file with garbage between each ogg page and recover
- // from it automatically? So even though that paranoia
- // might decrease the chance of an invalid decode by
- // another 2^32, not worth it since it would hose those
- // invalid-but-useful files?
- if (end)
- *end = stb_vorbis_get_file_offset(f);
- if (last)
- if (header[5] & 0x04)
- *last = 1;
- else
- *last = 0;
- set_file_offset(f, retry_loc-1);
- return 1;
- }
- }
- invalid:
- // not a valid page, so rewind and look for next one
- set_file_offset(f, retry_loc);
- }
- }
-}
-
-// seek is implemented with 'interpolation search'--this is like
-// binary search, but we use the data values to estimate the likely
-// location of the data item (plus a bit of a bias so when the
-// estimation is wrong we don't waste overly much time)
-
-#define SAMPLE_unknown 0xffffffff
-
-
-// ogg vorbis, in its insane infinite wisdom, only provides
-// information about the sample at the END of the page.
-// therefore we COULD have the data we need in the current
-// page, and not know it. we could just use the end location
-// as our only knowledge for bounds, seek back, and eventually
-// the binary search finds it. or we can try to be smart and
-// not waste time trying to locate more pages. we try to be
-// smart, since this data is already in memory anyway, so
-// doing needless I/O would be crazy!
-static int vorbis_analyze_page(stb_vorbis *f, ProbedPage *z)
-{
- uint8 header[27], lacing[255];
- uint8 packet_type[255];
- int num_packet, packet_start, previous =0;
- int i,len;
- uint32 samples;
-
- // record where the page starts
- z->page_start = stb_vorbis_get_file_offset(f);
-
- // parse the header
- getn(f, header, 27);
- assert(header[0] == 'O' && header[1] == 'g' && header[2] == 'g' && header[3] == 'S');
- getn(f, lacing, header[26]);
-
- // determine the length of the payload
- len = 0;
- for (i=0; i < header[26]; ++i)
- len += lacing[i];
-
- // this implies where the page ends
- z->page_end = z->page_start + 27 + header[26] + len;
-
- // read the last-decoded sample out of the data
- z->last_decoded_sample = header[6] + (header[7] << 8) + (header[8] << 16) + (header[9] << 16);
-
- if (header[5] & 4) {
- // if this is the last page, it's not possible to work
- // backwards to figure out the first sample! whoops! fuck.
- z->first_decoded_sample = SAMPLE_unknown;
- set_file_offset(f, z->page_start);
- return 1;
- }
-
- // scan through the frames to determine the sample-count of each one...
- // our goal is the sample # of the first fully-decoded sample on the
- // page, which is the first decoded sample of the 2nd page
-
- num_packet=0;
-
- packet_start = ((header[5] & 1) == 0);
-
- for (i=0; i < header[26]; ++i) {
- if (packet_start) {
- uint8 n,b,m;
- if (lacing[i] == 0) goto bail; // trying to read from zero-length packet
- n = get8(f);
- // if bottom bit is non-zero, we've got corruption
- if (n & 1) goto bail;
- n >>= 1;
- b = ilog(f->mode_count-1);
- m = n >> b;
- n &= (1 << b)-1;
- if (n >= f->mode_count) goto bail;
- if (num_packet == 0 && f->mode_config[n].blockflag)
- previous = (m & 1);
- packet_type[num_packet++] = f->mode_config[n].blockflag;
- skip(f, lacing[i]-1);
- } else
- skip(f, lacing[i]);
- packet_start = (lacing[i] < 255);
- }
-
- // now that we know the sizes of all the pages, we can start determining
- // how much sample data there is.
-
- samples = 0;
-
- // for the last packet, we step by its whole length, because the definition
- // is that we encoded the end sample loc of the 'last packet completed',
- // where 'completed' refers to packets being split, and we are left to guess
- // what 'end sample loc' means. we assume it means ignoring the fact that
- // the last half of the data is useless without windowing against the next
- // packet... (so it's not REALLY complete in that sense)
- if (num_packet > 1)
- samples += f->blocksize[packet_type[num_packet-1]];
-
- for (i=num_packet-2; i >= 1; --i) {
- // now, for this packet, how many samples do we have that
- // do not overlap the following packet?
- if (packet_type[i] == 1)
- if (packet_type[i+1] == 1)
- samples += f->blocksize_1 >> 1;
- else
- samples += ((f->blocksize_1 - f->blocksize_0) >> 2) + (f->blocksize_0 >> 1);
- else
- samples += f->blocksize_0 >> 1;
- }
- // now, at this point, we've rewound to the very beginning of the
- // _second_ packet. if we entirely discard the first packet after
- // a seek, this will be exactly the right sample number. HOWEVER!
- // we can't as easily compute this number for the LAST page. The
- // only way to get the sample offset of the LAST page is to use
- // the end loc from the previous page. But what that returns us
- // is _exactly_ the place where we get our first non-overlapped
- // sample. (I think. Stupid spec for being ambiguous.) So for
- // consistency it's better to do that here, too. However, that
- // will then require us to NOT discard all of the first frame we
- // decode, in some cases, which means an even weirder frame size
- // and extra code. what a fucking pain.
-
- // we're going to discard the first packet if we
- // start the seek here, so we don't care about it. (we could actually
- // do better; if the first packet is long, and the previous packet
- // is short, there's actually data in the first half of the first
- // packet that doesn't need discarding... but not worth paying the
- // effort of tracking that of that here and in the seeking logic)
- // except crap, if we infer it from the _previous_ packet's end
- // location, we DO need to use that definition... and we HAVE to
- // infer the start loc of the LAST packet from the previous packet's
- // end location. fuck you, ogg vorbis.
-
- z->first_decoded_sample = z->last_decoded_sample - samples;
-
- // restore file state to where we were
- set_file_offset(f, z->page_start);
- return 1;
-
- // restore file state to where we were
- bail:
- set_file_offset(f, z->page_start);
- return 0;
-}
-
-static int vorbis_seek_frame_from_page(stb_vorbis *f, uint32 page_start, uint32 first_sample, uint32 target_sample, int fine)
-{
- int left_start, left_end, right_start, right_end, mode,i;
- int frame=0;
- uint32 frame_start;
- int frames_to_skip, data_to_skip;
-
- // first_sample is the sample # of the first sample that doesn't
- // overlap the previous page... note that this requires us to
- // _partially_ discard the first packet! bleh.
- set_file_offset(f, page_start);
-
- f->next_seg = -1; // force page resync
-
- frame_start = first_sample;
- // frame start is where the previous packet's last decoded sample
- // was, which corresponds to left_end... EXCEPT if the previous
- // packet was long and this packet is short? Probably a bug here.
-
-
- // now, we can start decoding frames... we'll only FAKE decode them,
- // until we find the frame that contains our sample; then we'll rewind,
- // and try again
- for (;;) {
- int start;
-
- if (!vorbis_decode_initial(f, &left_start, &left_end, &right_start, &right_end, &mode))
- return error(f, VORBIS_seek_failed);
-
- if (frame == 0)
- start = left_end;
- else
- start = left_start;
-
- // the window starts at left_start; the last valid sample we generate
- // before the next frame's window start is right_start-1
- if (target_sample < frame_start + right_start-start)
- break;
-
- flush_packet(f);
- if (f->eof)
- return error(f, VORBIS_seek_failed);
-
- frame_start += right_start - start;
-
- ++frame;
- }
-
- // ok, at this point, the sample we want is contained in frame #'frame'
-
- // to decode frame #'frame' normally, we have to decode the
- // previous frame first... but if it's the FIRST frame of the page
- // we can't. if it's the first frame, it means it falls in the part
- // of the first frame that doesn't overlap either of the other frames.
- // so, if we have to handle that case for the first frame, we might
- // as well handle it for all of them, so:
- if (target_sample > frame_start + (left_end - left_start)) {
- // so what we want to do is go ahead and just immediately decode
- // this frame, but then make it so the next get_frame_float() uses
- // this already-decoded data? or do we want to go ahead and rewind,
- // and leave a flag saying to skip the first N data? let's do that
- frames_to_skip = frame; // if this is frame #1, skip 1 frame (#0)
- data_to_skip = left_end - left_start;
- } else {
- // otherwise, we want to skip frames 0, 1, 2, ... frame-2
- // (which means frame-2+1 total frames) then decode frame-1,
- // then leave frame pending
- frames_to_skip = frame - 1;
- assert(frames_to_skip >= 0);
- data_to_skip = -1;
- }
-
- set_file_offset(f, page_start);
- f->next_seg = - 1; // force page resync
-
- for (i=0; i < frames_to_skip; ++i) {
- maybe_start_packet(f);
- flush_packet(f);
- }
-
- if (data_to_skip >= 0) {
- int i,j,n = f->blocksize_0 >> 1;
- f->discard_samples_deferred = data_to_skip;
- for (i=0; i < f->channels; ++i)
- for (j=0; j < n; ++j)
- f->previous_window[i][j] = 0;
- f->previous_length = n;
- frame_start += data_to_skip;
- } else {
- f->previous_length = 0;
- vorbis_pump_first_frame(f);
- }
-
- // at this point, the NEXT decoded frame will generate the desired sample
- if (fine) {
- // so if we're doing sample accurate streaming, we want to go ahead and decode it!
- if (target_sample != frame_start) {
- int n;
- stb_vorbis_get_frame_float(f, &n, NULL);
- assert(target_sample > frame_start);
- assert(f->channel_buffer_start + (int) (target_sample-frame_start) < f->channel_buffer_end);
- f->channel_buffer_start += (target_sample - frame_start);
- }
- }
-
- return 0;
-}
-
-static int vorbis_seek_base(stb_vorbis *f, unsigned int sample_number, int fine)
-{
- ProbedPage p[2],q;
- if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);
-
- // do we know the location of the last page?
- if (f->p_last.page_start == 0) {
- uint32 z = stb_vorbis_stream_length_in_samples(f);
- if (z == 0) return error(f, VORBIS_cant_find_last_page);
- }
-
- p[0] = f->p_first;
- p[1] = f->p_last;
-
- if (sample_number >= f->p_last.last_decoded_sample)
- sample_number = f->p_last.last_decoded_sample-1;
-
- if (sample_number < f->p_first.last_decoded_sample) {
- vorbis_seek_frame_from_page(f, p[0].page_start, 0, sample_number, fine);
- return 0;
- } else {
- int attempts=0;
- while (p[0].page_end < p[1].page_start) {
- uint32 probe;
- uint32 start_offset, end_offset;
- uint32 start_sample, end_sample;
-
- // copy these into local variables so we can tweak them
- // if any are unknown
- start_offset = p[0].page_end;
- end_offset = p[1].after_previous_page_start; // an address known to seek to page p[1]
- start_sample = p[0].last_decoded_sample;
- end_sample = p[1].last_decoded_sample;
-
- // currently there is no such tweaking logic needed/possible?
- if (start_sample == SAMPLE_unknown || end_sample == SAMPLE_unknown)
- return error(f, VORBIS_seek_failed);
-
- // now we want to lerp between these for the target samples...
-
- // step 1: we need to bias towards the page start...
- if (start_offset + 4000 < end_offset)
- end_offset -= 4000;
-
- // now compute an interpolated search loc
- probe = start_offset + (int) floor((float) (end_offset - start_offset) / (end_sample - start_sample) * (sample_number - start_sample));
-
- // next we need to bias towards binary search...
- // code is a little wonky to allow for full 32-bit unsigned values
- if (attempts >= 4) {
- uint32 probe2 = start_offset + ((end_offset - start_offset) >> 1);
- if (attempts >= 8)
- probe = probe2;
- else if (probe < probe2)
- probe = probe + ((probe2 - probe) >> 1);
- else
- probe = probe2 + ((probe - probe2) >> 1);
- }
- ++attempts;
-
- set_file_offset(f, probe);
- if (!vorbis_find_page(f, NULL, NULL)) return error(f, VORBIS_seek_failed);
- if (!vorbis_analyze_page(f, &q)) return error(f, VORBIS_seek_failed);
- q.after_previous_page_start = probe;
-
- // it's possible we've just found the last page again
- if (q.page_start == p[1].page_start) {
- p[1] = q;
- continue;
- }
-
- if (sample_number < q.last_decoded_sample)
- p[1] = q;
- else
- p[0] = q;
- }
-
- if (p[0].last_decoded_sample <= sample_number && sample_number < p[1].last_decoded_sample) {
- vorbis_seek_frame_from_page(f, p[1].page_start, p[0].last_decoded_sample, sample_number, fine);
- return 0;
- }
- return error(f, VORBIS_seek_failed);
- }
-}
-
-int stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number)
-{
- return vorbis_seek_base(f, sample_number, FALSE);
-}
-
-int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number)
-{
- return vorbis_seek_base(f, sample_number, TRUE);
-}
-
-void stb_vorbis_seek_start(stb_vorbis *f)
-{
- if (IS_PUSH_MODE(f)) { error(f, VORBIS_invalid_api_mixing); return; }
- set_file_offset(f, f->first_audio_page_offset);
- f->previous_length = 0;
- f->first_decode = TRUE;
- f->next_seg = -1;
- vorbis_pump_first_frame(f);
-}
-
-unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f)
-{
- unsigned int restore_offset, previous_safe;
- unsigned int end, last_page_loc;
-
- if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);
- if (!f->total_samples) {
- int last;
- uint32 lo,hi;
- char header[6];
-
- // first, store the current decode position so we can restore it
- restore_offset = stb_vorbis_get_file_offset(f);
-
- // now we want to seek back 64K from the end (the last page must
- // be at most a little less than 64K, but let's allow a little slop)
- if (f->stream_len >= 65536 && f->stream_len-65536 >= f->first_audio_page_offset)
- previous_safe = f->stream_len - 65536;
- else
- previous_safe = f->first_audio_page_offset;
-
- set_file_offset(f, previous_safe);
- // previous_safe is now our candidate 'earliest known place that seeking
- // to will lead to the final page'
-
- if (!vorbis_find_page(f, &end, (int unsigned *)&last)) {
- // if we can't find a page, we're hosed!
- f->error = VORBIS_cant_find_last_page;
- f->total_samples = 0xffffffff;
- goto done;
- }
-
- // check if there are more pages
- last_page_loc = stb_vorbis_get_file_offset(f);
-
- // stop when the last_page flag is set, not when we reach eof;
- // this allows us to stop short of a 'file_section' end without
- // explicitly checking the length of the section
- while (!last) {
- set_file_offset(f, end);
- if (!vorbis_find_page(f, &end, (int unsigned *)&last)) {
- // the last page we found didn't have the 'last page' flag
- // set. whoops!
- break;
- }
- previous_safe = last_page_loc+1;
- last_page_loc = stb_vorbis_get_file_offset(f);
- }
-
- set_file_offset(f, last_page_loc);
-
- // parse the header
- getn(f, (unsigned char *)header, 6);
- // extract the absolute granule position
- lo = get32(f);
- hi = get32(f);
- if (lo == 0xffffffff && hi == 0xffffffff) {
- f->error = VORBIS_cant_find_last_page;
- f->total_samples = SAMPLE_unknown;
- goto done;
- }
- if (hi)
- lo = 0xfffffffe; // saturate
- f->total_samples = lo;
-
- f->p_last.page_start = last_page_loc;
- f->p_last.page_end = end;
- f->p_last.last_decoded_sample = lo;
- f->p_last.first_decoded_sample = SAMPLE_unknown;
- f->p_last.after_previous_page_start = previous_safe;
-
- done:
- set_file_offset(f, restore_offset);
- }
- return f->total_samples == SAMPLE_unknown ? 0 : f->total_samples;
-}
-
-float stb_vorbis_stream_length_in_seconds(stb_vorbis *f)
-{
- return stb_vorbis_stream_length_in_samples(f) / (float) f->sample_rate;
-}
-
-
-
-int stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output)
-{
- int len, right,left,i;
- if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);
-
- if (!vorbis_decode_packet(f, &len, &left, &right)) {
- f->channel_buffer_start = f->channel_buffer_end = 0;
- return 0;
- }
-
- len = vorbis_finish_frame(f, len, left, right);
- for (i=0; i < f->channels; ++i)
- f->outputs[i] = f->channel_buffers[i] + left;
-
- f->channel_buffer_start = left;
- f->channel_buffer_end = left+len;
-
- if (channels) *channels = f->channels;
- if (output) *output = f->outputs;
- return len;
-}
-
-#ifndef STB_VORBIS_NO_STDIO
-
-stb_vorbis * stb_vorbis_open_file_section(FILE *file, int close_on_free, int *error, stb_vorbis_alloc *alloc, unsigned int length)
-{
- stb_vorbis *f, p;
- vorbis_init(&p, alloc);
- p.f = file;
- p.f_start = ftell(file);
- p.stream_len = length;
- p.close_on_free = close_on_free;
- if (start_decoder(&p)) {
- f = vorbis_alloc(&p);
- if (f) {
- *f = p;
- vorbis_pump_first_frame(f);
- return f;
- }
- }
- if (error) *error = p.error;
- vorbis_deinit(&p);
- return NULL;
-}
-
-stb_vorbis * stb_vorbis_open_file(FILE *file, int close_on_free, int *error, stb_vorbis_alloc *alloc)
-{
- unsigned int len, start;
- start = ftell(file);
- fseek(file, 0, SEEK_END);
- len = ftell(file) - start;
- fseek(file, start, SEEK_SET);
- return stb_vorbis_open_file_section(file, close_on_free, error, alloc, len);
-}
-
-stb_vorbis * stb_vorbis_open_filename(char *filename, int *error, stb_vorbis_alloc *alloc)
-{
- FILE *f = fopen(filename, "rb");
- if (f)
- return stb_vorbis_open_file(f, TRUE, error, alloc);
- if (error) *error = VORBIS_file_open_failure;
- return NULL;
-}
-#endif // STB_VORBIS_NO_STDIO
-
-stb_vorbis * stb_vorbis_open_memory(unsigned char *data, int len, int *error, stb_vorbis_alloc *alloc)
-{
- stb_vorbis *f, p;
- if (data == NULL) return NULL;
- vorbis_init(&p, alloc);
- p.stream = data;
- p.stream_end = data + len;
- p.stream_start = p.stream;
- p.stream_len = len;
- p.push_mode = FALSE;
- if (start_decoder(&p)) {
- f = vorbis_alloc(&p);
- if (f) {
- *f = p;
- vorbis_pump_first_frame(f);
- return f;
- }
- }
- if (error) *error = p.error;
- vorbis_deinit(&p);
- return NULL;
-}
-
-#ifndef STB_VORBIS_NO_INTEGER_CONVERSION
-#define PLAYBACK_MONO 1
-#define PLAYBACK_LEFT 2
-#define PLAYBACK_RIGHT 4
-
-#define L (PLAYBACK_LEFT | PLAYBACK_MONO)
-#define C (PLAYBACK_LEFT | PLAYBACK_RIGHT | PLAYBACK_MONO)
-#define R (PLAYBACK_RIGHT | PLAYBACK_MONO)
-
-static int8 channel_position[7][6] =
-{
- { 0 },
- { C },
- { L, R },
- { L, C, R },
- { L, R, L, R },
- { L, C, R, L, R },
- { L, C, R, L, R, C },
-};
-
-
-#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT
- // add (1<<23) to convert to int, then divide by 2^SHIFT, then add 0.5/2^SHIFT to round
- #define MAGIC(SHIFT) (1.5f * (1 << (23-SHIFT)) + 0.5f/(1 << SHIFT))
- #define ADDEND(SHIFT) (((150-SHIFT) << 23) + (1 << 22))
- #define FAST_SCALED_FLOAT_TO_INT(x,s) ((temp = (x) + MAGIC(s)), (*(int *)&temp) - ADDEND(s))
- #define check_endianness()
- typedef char stb_vorbis_float_size_test[sizeof(float)==4 && sizeof(int) == 4];
- #define FASTDEF(x) x
-#else
- #define FAST_SCALED_FLOAT_TO_INT(x,s) ((int) ((x) * (1 << (s))))
- #define check_endianness()
- #define FASTDEF(x)
-#endif
-
-static void copy_samples(short *dest, float *src, int len)
-{
- int i;
- FASTDEF(float temp);
- check_endianness();
- for (i=0; i < len; ++i) {
- int v = FAST_SCALED_FLOAT_TO_INT(src[i],15);
- if ((unsigned int) (v + 32768) > 65535)
- v = v < 0 ? -32768 : 32767;
- dest[i] = v;
- }
-}
-
-static void compute_samples(int mask, short *output, int num_c, float **data, int d_offset, int len)
-{
- #define BUFFER_SIZE 32
- float buffer[BUFFER_SIZE];
- int i,j,o,n = BUFFER_SIZE;
- FASTDEF(float temp);
- check_endianness();
- for (o = 0; o < len; o += BUFFER_SIZE) {
- memset(buffer, 0, sizeof(buffer));
- if (o + n > len) n = len - o;
- for (j=0; j < num_c; ++j) {
- if (channel_position[num_c][j] & mask) {
- for (i=0; i < n; ++i)
- buffer[i] += data[j][d_offset+o+i];
- }
- }
- for (i=0; i < n; ++i) {
- int v = FAST_SCALED_FLOAT_TO_INT(buffer[i],15);
- if ((unsigned int) (v + 32768) > 65535)
- v = v < 0 ? -32768 : 32767;
- output[o+i] = v;
- }
- }
-}
-
-static int channel_selector[3][2] = { {0}, {PLAYBACK_MONO}, {PLAYBACK_LEFT, PLAYBACK_RIGHT} };
-static void compute_stereo_samples(short *output, int num_c, float **data, int d_offset, int len)
-{
- #define BUFFER_SIZE 32
- float buffer[BUFFER_SIZE];
- int i,j,o,n = BUFFER_SIZE >> 1;
- FASTDEF(float temp);
- // o is the offset in the source data
- check_endianness();
- for (o = 0; o < len; o += BUFFER_SIZE >> 1) {
- // o2 is the offset in the output data
- int o2 = o << 1;
- memset(buffer, 0, sizeof(buffer));
- if (o + n > len) n = len - o;
- for (j=0; j < num_c; ++j) {
- int m = channel_position[num_c][j] & (PLAYBACK_LEFT | PLAYBACK_RIGHT);
- if (m == (PLAYBACK_LEFT | PLAYBACK_RIGHT)) {
- for (i=0; i < n; ++i) {
- buffer[i*2+0] += data[j][d_offset+o+i];
- buffer[i*2+1] += data[j][d_offset+o+i];
- }
- } else if (m == PLAYBACK_LEFT) {
- for (i=0; i < n; ++i) {
- buffer[i*2+0] += data[j][d_offset+o+i];
- }
- } else if (m == PLAYBACK_RIGHT) {
- for (i=0; i < n; ++i) {
- buffer[i*2+1] += data[j][d_offset+o+i];
- }
- }
- }
- for (i=0; i < (n<<1); ++i) {
- int v = FAST_SCALED_FLOAT_TO_INT(buffer[i],15);
- if ((unsigned int) (v + 32768) > 65535)
- v = v < 0 ? -32768 : 32767;
- output[o2+i] = v;
- }
- }
-}
-
-static void convert_samples_short(int buf_c, short **buffer, int b_offset, int data_c, float **data, int d_offset, int samples)
-{
- int i;
- if (buf_c != data_c && buf_c <= 2 && data_c <= 6) {
- static int channel_selector[3][2] = { {0}, {PLAYBACK_MONO}, {PLAYBACK_LEFT, PLAYBACK_RIGHT} };
- for (i=0; i < buf_c; ++i)
- compute_samples(channel_selector[buf_c][i], buffer[i]+b_offset, data_c, data, d_offset, samples);
- } else {
- int limit = buf_c < data_c ? buf_c : data_c;
- for (i=0; i < limit; ++i)
- copy_samples(buffer[i]+b_offset, data[i], samples);
- for ( ; i < buf_c; ++i)
- memset(buffer[i]+b_offset, 0, sizeof(short) * samples);
- }
-}
-
-int stb_vorbis_get_frame_short(stb_vorbis *f, int num_c, short **buffer, int num_samples)
-{
- float **output;
- int len = stb_vorbis_get_frame_float(f, NULL, &output);
- if (len > num_samples) len = num_samples;
- if (len)
- convert_samples_short(num_c, buffer, 0, f->channels, output, 0, len);
- return len;
-}
-
-static void convert_channels_short_interleaved(int buf_c, short *buffer, int data_c, float **data, int d_offset, int len)
-{
- int i;
- check_endianness();
- if (buf_c != data_c && buf_c <= 2 && data_c <= 6) {
- assert(buf_c == 2);
- for (i=0; i < buf_c; ++i)
- compute_stereo_samples(buffer, data_c, data, d_offset, len);
- } else {
- int limit = buf_c < data_c ? buf_c : data_c;
- int j;
- FASTDEF(float temp);
- for (j=0; j < len; ++j) {
- for (i=0; i < limit; ++i) {
- int v = FAST_SCALED_FLOAT_TO_INT(data[i][d_offset+j],15);
- if ((unsigned int) (v + 32768) > 65535)
- v = v < 0 ? -32768 : 32767;
- *buffer++ = v;
- }
- for ( ; i < buf_c; ++i)
- *buffer++ = 0;
- }
- }
-}
-
-int stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts)
-{
- float **output;
- int len;
- if (num_c == 1) return stb_vorbis_get_frame_short(f,num_c,&buffer, num_shorts);
- len = stb_vorbis_get_frame_float(f, NULL, &output);
- if (len) {
- if (len*num_c > num_shorts) len = num_shorts / num_c;
- convert_channels_short_interleaved(num_c, buffer, f->channels, output, 0, len);
- }
- return len;
-}
-
-int stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts)
-{
- float **outputs;
- int len = num_shorts / channels;
- int n=0;
- int z = f->channels;
- if (z > channels) z = channels;
- while (n < len) {
- int k = f->channel_buffer_end - f->channel_buffer_start;
- if (n+k >= len) k = len - n;
- if (k)
- convert_channels_short_interleaved(channels, buffer, f->channels, f->channel_buffers, f->channel_buffer_start, k);
- buffer += k*channels;
- n += k;
- f->channel_buffer_start += k;
- if (n == len) break;
- if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;
- }
- return n;
-}
-
-int stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int len)
-{
- float **outputs;
- int n=0;
- int z = f->channels;
- if (z > channels) z = channels;
- while (n < len) {
- int k = f->channel_buffer_end - f->channel_buffer_start;
- if (n+k >= len) k = len - n;
- if (k)
- convert_samples_short(channels, buffer, n, f->channels, f->channel_buffers, f->channel_buffer_start, k);
- n += k;
- f->channel_buffer_start += k;
- if (n == len) break;
- if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;
- }
- return n;
-}
-
-#ifndef STB_VORBIS_NO_STDIO
-int stb_vorbis_decode_filename(char *filename, int *channels, short **output)
-{
- int data_len, offset, total, limit, error;
- short *data;
- stb_vorbis *v = stb_vorbis_open_filename(filename, &error, NULL);
- if (v == NULL) return -1;
- limit = v->channels * 4096;
- *channels = v->channels;
- offset = data_len = 0;
- total = limit;
- data = (short *) malloc(total * sizeof(*data));
- if (data == NULL) {
- stb_vorbis_close(v);
- return -2;
- }
- for (;;) {
- int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset);
- if (n == 0) break;
- data_len += n;
- offset += n * v->channels;
- if (offset + limit > total) {
- short *data2;
- total *= 2;
- data2 = (short *) realloc(data, total * sizeof(*data));
- if (data2 == NULL) {
- free(data);
- stb_vorbis_close(v);
- return -2;
- }
- data = data2;
- }
- }
- *output = data;
- return data_len;
-}
-#endif // NO_STDIO
-
-int stb_vorbis_decode_memory(uint8 *mem, int len, int *channels, short **output)
-{
- int data_len, offset, total, limit, error;
- short *data;
- stb_vorbis *v = stb_vorbis_open_memory(mem, len, &error, NULL);
- if (v == NULL) return -1;
- limit = v->channels * 4096;
- *channels = v->channels;
- offset = data_len = 0;
- total = limit;
- data = (short *) malloc(total * sizeof(*data));
- if (data == NULL) {
- stb_vorbis_close(v);
- return -2;
- }
- for (;;) {
- int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset);
- if (n == 0) break;
- data_len += n;
- offset += n * v->channels;
- if (offset + limit > total) {
- short *data2;
- total *= 2;
- data2 = (short *) realloc(data, total * sizeof(*data));
- if (data2 == NULL) {
- free(data);
- stb_vorbis_close(v);
- return -2;
- }
- data = data2;
- }
- }
- *output = data;
- return data_len;
-}
-#endif
-
-int stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats)
-{
- float **outputs;
- int len = num_floats / channels;
- int n=0;
- int z = f->channels;
- if (z > channels) z = channels;
- while (n < len) {
- int i,j;
- int k = f->channel_buffer_end - f->channel_buffer_start;
- if (n+k >= len) k = len - n;
- for (j=0; j < k; ++j) {
- for (i=0; i < z; ++i)
- *buffer++ = f->channel_buffers[i][f->channel_buffer_start+j];
- for ( ; i < channels; ++i)
- *buffer++ = 0;
- }
- n += k;
- f->channel_buffer_start += k;
- if (n == len) break;
- if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;
- }
- return n;
-}
-
-int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples)
-{
- float **outputs;
- int n=0;
- int z = f->channels;
- if (z > channels) z = channels;
- while (n < num_samples) {
- int i;
- int k = f->channel_buffer_end - f->channel_buffer_start;
- if (n+k >= num_samples) k = num_samples - n;
- if (k) {
- for (i=0; i < z; ++i)
- memcpy(buffer[i]+n, f->channel_buffers+f->channel_buffer_start, sizeof(float)*k);
- for ( ; i < channels; ++i)
- memset(buffer[i]+n, 0, sizeof(float) * k);
- }
- n += k;
- f->channel_buffer_start += k;
- if (n == num_samples) break;
- if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;
- }
- return n;
-}
-#endif // STB_VORBIS_NO_PULLDATA_API
-
-#endif // STB_VORBIS_HEADER_ONLY
diff --git a/src/SFML/Audio/stb_vorbis/stb_vorbis.h b/src/SFML/Audio/stb_vorbis/stb_vorbis.h
deleted file mode 100755
index e2355e6..0000000
--- a/src/SFML/Audio/stb_vorbis/stb_vorbis.h
+++ /dev/null
@@ -1,357 +0,0 @@
-// Ogg Vorbis I audio decoder -- version 0.99994
-//
-// Written in April 2007 by Sean Barrett, sponsored by RAD Game Tools.
-//
-// Placed in the public domain April 2007 by the author: no copyright is
-// claimed, and you may use it for any purpose you like.
-//
-// No warranty for any purpose is expressed or implied by the author (nor
-// by RAD Game Tools). Report bugs and send enhancements to the author.
-//
-// Get the latest version and other information at:
-// http://nothings.org/stb_vorbis/
-
-
-// Todo:
-//
-// - seeking (note you can seek yourself using the pushdata API)
-//
-// Limitations:
-//
-// - floor 0 not supported (used in old ogg vorbis files)
-// - lossless sample-truncation at beginning ignored
-// - cannot concatenate multiple vorbis streams
-// - sample positions are 32-bit, limiting seekable 192Khz
-// files to around 6 hours (Ogg supports 64-bit)
-//
-// All of these limitations may be removed in future versions.
-
-
-//////////////////////////////////////////////////////////////////////////////
-//
-// HEADER BEGINS HERE
-//
-
-#ifndef STB_VORBIS_INCLUDE_STB_VORBIS_H
-#define STB_VORBIS_INCLUDE_STB_VORBIS_H
-
-#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO)
-#define STB_VORBIS_NO_STDIO 1
-#endif
-
-#ifndef STB_VORBIS_NO_STDIO
-#include <stdio.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/////////// THREAD SAFETY
-
-// Individual stb_vorbis* handles are not thread-safe; you cannot decode from
-// them from multiple threads at the same time. However, you can have multiple
-// stb_vorbis* handles and decode from them independently in multiple thrads.
-
-
-/////////// MEMORY ALLOCATION
-
-// normally stb_vorbis uses malloc() to allocate memory at startup,
-// and alloca() to allocate temporary memory during a frame on the
-// stack. (Memory consumption will depend on the amount of setup
-// data in the file and how you set the compile flags for speed
-// vs. size. In my test files the maximal-size usage is ~150KB.)
-//
-// You can modify the wrapper functions in the source (setup_malloc,
-// setup_temp_malloc, temp_malloc) to change this behavior, or you
-// can use a simpler allocation model: you pass in a buffer from
-// which stb_vorbis will allocate _all_ its memory (including the
-// temp memory). "open" may fail with a VORBIS_outofmem if you
-// do not pass in enough data; there is no way to determine how
-// much you do need except to succeed (at which point you can
-// query get_info to find the exact amount required. yes I know
-// this is lame).
-//
-// If you pass in a non-NULL buffer of the type below, allocation
-// will occur from it as described above. Otherwise just pass NULL
-// to use malloc()/alloca()
-
-typedef struct
-{
- char *alloc_buffer;
- int alloc_buffer_length_in_bytes;
-} stb_vorbis_alloc;
-
-
-/////////// FUNCTIONS USEABLE WITH ALL INPUT MODES
-
-typedef struct stb_vorbis stb_vorbis;
-
-typedef struct
-{
- unsigned int sample_rate;
- int channels;
-
- unsigned int setup_memory_required;
- unsigned int setup_temp_memory_required;
- unsigned int temp_memory_required;
-
- int max_frame_size;
-} stb_vorbis_info;
-
-// get general information about the file
-extern stb_vorbis_info stb_vorbis_get_info(stb_vorbis *f);
-
-// get the last error detected (clears it, too)
-extern int stb_vorbis_get_error(stb_vorbis *f);
-
-// close an ogg vorbis file and free all memory in use
-extern void stb_vorbis_close(stb_vorbis *f);
-
-// this function returns the offset (in samples) from the beginning of the
-// file that will be returned by the next decode, if it is known, or -1
-// otherwise. after a flush_pushdata() call, this may take a while before
-// it becomes valid again.
-// NOT WORKING YET after a seek with PULLDATA API
-extern int stb_vorbis_get_sample_offset(stb_vorbis *f);
-
-// returns the current seek point within the file, or offset from the beginning
-// of the memory buffer. In pushdata mode it returns 0.
-extern unsigned int stb_vorbis_get_file_offset(stb_vorbis *f);
-
-/////////// PUSHDATA API
-
-#ifndef STB_VORBIS_NO_PUSHDATA_API
-
-// this API allows you to get blocks of data from any source and hand
-// them to stb_vorbis. you have to buffer them; stb_vorbis will tell
-// you how much it used, and you have to give it the rest next time;
-// and stb_vorbis may not have enough data to work with and you will
-// need to give it the same data again PLUS more. Note that the Vorbis
-// specification does not bound the size of an individual frame.
-
-extern stb_vorbis *stb_vorbis_open_pushdata(
- unsigned char *datablock, int datablock_length_in_bytes,
- int *datablock_memory_consumed_in_bytes,
- int *error,
- stb_vorbis_alloc *alloc_buffer);
-// create a vorbis decoder by passing in the initial data block containing
-// the ogg&vorbis headers (you don't need to do parse them, just provide
-// the first N bytes of the file--you're told if it's not enough, see below)
-// on success, returns an stb_vorbis *, does not set error, returns the amount of
-// data parsed/consumed on this call in *datablock_memory_consumed_in_bytes;
-// on failure, returns NULL on error and sets *error, does not change *datablock_memory_consumed
-// if returns NULL and *error is VORBIS_need_more_data, then the input block was
-// incomplete and you need to pass in a larger block from the start of the file
-
-extern int stb_vorbis_decode_frame_pushdata(
- stb_vorbis *f, unsigned char *datablock, int datablock_length_in_bytes,
- int *channels, // place to write number of float * buffers
- float ***output, // place to write float ** array of float * buffers
- int *samples // place to write number of output samples
- );
-// decode a frame of audio sample data if possible from the passed-in data block
-//
-// return value: number of bytes we used from datablock
-// possible cases:
-// 0 bytes used, 0 samples output (need more data)
-// N bytes used, 0 samples output (resynching the stream, keep going)
-// N bytes used, M samples output (one frame of data)
-// note that after opening a file, you will ALWAYS get one N-bytes,0-sample
-// frame, because Vorbis always "discards" the first frame.
-//
-// Note that on resynch, stb_vorbis will rarely consume all of the buffer,
-// instead only datablock_length_in_bytes-3 or less. This is because it wants
-// to avoid missing parts of a page header if they cross a datablock boundary,
-// without writing state-machiney code to record a partial detection.
-//
-// The number of channels returned are stored in *channels (which can be
-// NULL--it is always the same as the number of channels reported by
-// get_info). *output will contain an array of float* buffers, one per
-// channel. In other words, (*output)[0][0] contains the first sample from
-// the first channel, and (*output)[1][0] contains the first sample from
-// the second channel.
-
-extern void stb_vorbis_flush_pushdata(stb_vorbis *f);
-// inform stb_vorbis that your next datablock will not be contiguous with
-// previous ones (e.g. you've seeked in the data); future attempts to decode
-// frames will cause stb_vorbis to resynchronize (as noted above), and
-// once it sees a valid Ogg page (typically 4-8KB, as large as 64KB), it
-// will begin decoding the _next_ frame.
-//
-// if you want to seek using pushdata, you need to seek in your file, then
-// call stb_vorbis_flush_pushdata(), then start calling decoding, then once
-// decoding is returning you data, call stb_vorbis_get_sample_offset, and
-// if you don't like the result, seek your file again and repeat.
-#endif
-
-
-////////// PULLING INPUT API
-
-#ifndef STB_VORBIS_NO_PULLDATA_API
-// This API assumes stb_vorbis is allowed to pull data from a source--
-// either a block of memory containing the _entire_ vorbis stream, or a
-// FILE * that you or it create, or possibly some other reading mechanism
-// if you go modify the source to replace the FILE * case with some kind
-// of callback to your code. (But if you don't support seeking, you may
-// just want to go ahead and use pushdata.)
-
-#if !defined(STB_VORBIS_NO_STDIO) && !defined(STB_VORBIS_NO_INTEGER_CONVERSION)
-extern int stb_vorbis_decode_filename(char *filename, int *channels, short **output);
-#endif
-extern int stb_vorbis_decode_memory(unsigned char *mem, int len, int *channels, short **output);
-// decode an entire file and output the data interleaved into a malloc()ed
-// buffer stored in *output. The return value is the number of samples
-// decoded, or -1 if the file could not be opened or was not an ogg vorbis file.
-// When you're done with it, just free() the pointer returned in *output.
-
-extern stb_vorbis * stb_vorbis_open_memory(unsigned char *data, int len,
- int *error, stb_vorbis_alloc *alloc_buffer);
-// create an ogg vorbis decoder from an ogg vorbis stream in memory (note
-// this must be the entire stream!). on failure, returns NULL and sets *error
-
-#ifndef STB_VORBIS_NO_STDIO
-extern stb_vorbis * stb_vorbis_open_filename(char *filename,
- int *error, stb_vorbis_alloc *alloc_buffer);
-// create an ogg vorbis decoder from a filename via fopen(). on failure,
-// returns NULL and sets *error (possibly to VORBIS_file_open_failure).
-
-extern stb_vorbis * stb_vorbis_open_file(FILE *f, int close_handle_on_close,
- int *error, stb_vorbis_alloc *alloc_buffer);
-// create an ogg vorbis decoder from an open FILE *, looking for a stream at
-// the _current_ seek point (ftell). on failure, returns NULL and sets *error.
-// note that stb_vorbis must "own" this stream; if you seek it in between
-// calls to stb_vorbis, it will become confused. Morever, if you attempt to
-// perform stb_vorbis_seek_*() operations on this file, it will assume it
-// owns the _entire_ rest of the file after the start point. Use the next
-// function, stb_vorbis_open_file_section(), to limit it.
-
-extern stb_vorbis * stb_vorbis_open_file_section(FILE *f, int close_handle_on_close,
- int *error, stb_vorbis_alloc *alloc_buffer, unsigned int len);
-// create an ogg vorbis decoder from an open FILE *, looking for a stream at
-// the _current_ seek point (ftell); the stream will be of length 'len' bytes.
-// on failure, returns NULL and sets *error. note that stb_vorbis must "own"
-// this stream; if you seek it in between calls to stb_vorbis, it will become
-// confused.
-#endif
-
-extern int stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number);
-extern int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number);
-// NOT WORKING YET
-// these functions seek in the Vorbis file to (approximately) 'sample_number'.
-// after calling seek_frame(), the next call to get_frame_*() will include
-// the specified sample. after calling stb_vorbis_seek(), the next call to
-// stb_vorbis_get_samples_* will start with the specified sample. If you
-// do not need to seek to EXACTLY the target sample when using get_samples_*,
-// you can also use seek_frame().
-
-extern void stb_vorbis_seek_start(stb_vorbis *f);
-// this function is equivalent to stb_vorbis_seek(f,0), but it
-// actually works
-
-extern unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f);
-extern float stb_vorbis_stream_length_in_seconds(stb_vorbis *f);
-// these functions return the total length of the vorbis stream
-
-extern int stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output);
-// decode the next frame and return the number of samples. the number of
-// channels returned are stored in *channels (which can be NULL--it is always
-// the same as the number of channels reported by get_info). *output will
-// contain an array of float* buffers, one per channel. These outputs will
-// be overwritten on the next call to stb_vorbis_get_frame_*.
-//
-// You generally should not intermix calls to stb_vorbis_get_frame_*()
-// and stb_vorbis_get_samples_*(), since the latter calls the former.
-
-#ifndef STB_VORBIS_NO_INTEGER_CONVERSION
-extern int stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts);
-extern int stb_vorbis_get_frame_short (stb_vorbis *f, int num_c, short **buffer, int num_samples);
-#endif
-// decode the next frame and return the number of samples per channel. the
-// data is coerced to the number of channels you request according to the
-// channel coercion rules (see below). You must pass in the size of your
-// buffer(s) so that stb_vorbis will not overwrite the end of the buffer.
-// The maximum buffer size needed can be gotten from get_info(); however,
-// the Vorbis I specification implies an absolute maximum of 4096 samples
-// per channel. Note that for interleaved data, you pass in the number of
-// shorts (the size of your array), but the return value is the number of
-// samples per channel, not the total number of samples.
-
-// Channel coercion rules:
-// Let M be the number of channels requested, and N the number of channels present,
-// and Cn be the nth channel; let stereo L be the sum of all L and center channels,
-// and stereo R be the sum of all R and center channels (channel assignment from the
-// vorbis spec).
-// M N output
-// 1 k sum(Ck) for all k
-// 2 * stereo L, stereo R
-// k l k > l, the first l channels, then 0s
-// k l k <= l, the first k channels
-// Note that this is not _good_ surround etc. mixing at all! It's just so
-// you get something useful.
-
-extern int stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats);
-extern int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples);
-// gets num_samples samples, not necessarily on a frame boundary--this requires
-// buffering so you have to supply the buffers. DOES NOT APPLY THE COERCION RULES.
-// Returns the number of samples stored per channel; it may be less than requested
-// at the end of the file. If there are no more samples in the file, returns 0.
-
-#ifndef STB_VORBIS_NO_INTEGER_CONVERSION
-extern int stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts);
-extern int stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int num_samples);
-#endif
-// gets num_samples samples, not necessarily on a frame boundary--this requires
-// buffering so you have to supply the buffers. Applies the coercion rules above
-// to produce 'channels' channels. Returns the number of samples stored per channel;
-// it may be less than requested at the end of the file. If there are no more
-// samples in the file, returns 0.
-
-#endif
-
-//////// ERROR CODES
-
-enum STBVorbisError
-{
- VORBIS__no_error,
-
- VORBIS_need_more_data=1, // not a real error
-
- VORBIS_invalid_api_mixing, // can't mix API modes
- VORBIS_outofmem, // not enough memory
- VORBIS_feature_not_supported, // uses floor 0
- VORBIS_too_many_channels, // STB_VORBIS_MAX_CHANNELS is too small
- VORBIS_file_open_failure, // fopen() failed
- VORBIS_seek_without_length, // can't seek in unknown-length file
-
- VORBIS_unexpected_eof=10, // file is truncated?
- VORBIS_seek_invalid, // seek past EOF
-
- // decoding errors (corrupt/invalid stream) -- you probably
- // don't care about the exact details of these
-
- // vorbis errors:
- VORBIS_invalid_setup=20,
- VORBIS_invalid_stream,
-
- // ogg errors:
- VORBIS_missing_capture_pattern=30,
- VORBIS_invalid_stream_structure_version,
- VORBIS_continued_packet_flag_invalid,
- VORBIS_incorrect_stream_serial_number,
- VORBIS_invalid_first_page,
- VORBIS_bad_packet_type,
- VORBIS_cant_find_last_page,
- VORBIS_seek_failed
-};
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // STB_VORBIS_INCLUDE_STB_VORBIS_H
-//
-// HEADER ENDS HERE
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/src/SFML/CMakeLists.txt b/src/SFML/CMakeLists.txt
new file mode 100644
index 0000000..a3fb4d9
--- /dev/null
+++ b/src/SFML/CMakeLists.txt
@@ -0,0 +1,45 @@
+
+# include the SFML specific macros
+include(${PROJECT_SOURCE_DIR}/cmake/Macros.cmake)
+
+# let CMake know about our additional libraries paths (on Windows and OS X)
+if (WINDOWS)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers")
+ if(COMPILER_GCC)
+ if(ARCH_32BITS)
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-mingw/x86")
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/bin/x86")
+ elseif(ARCH_64BITS)
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-mingw/x64")
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/bin/x64")
+ endif()
+ elseif(COMPILER_MSVC)
+ if(ARCH_32BITS)
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-msvc/x86")
+ elseif(ARCH_64BITS)
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-msvc/x64")
+ endif()
+ endif()
+elseif(MACOSX)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers")
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-osx/lib/")
+endif()
+
+# add the SFML sources path
+include_directories(${PROJECT_SOURCE_DIR}/src)
+
+# define the path of our additional CMake modules
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules/")
+
+# set the output directory for SFML libraries
+set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")
+
+# add the modules subdirectories
+add_subdirectory(System)
+add_subdirectory(Window)
+add_subdirectory(Network)
+add_subdirectory(Graphics)
+add_subdirectory(Audio)
+if(WINDOWS)
+ add_subdirectory(Main)
+endif()
diff --git a/src/SFML/Graphics/CMakeLists.txt b/src/SFML/Graphics/CMakeLists.txt
new file mode 100644
index 0000000..ba74b71
--- /dev/null
+++ b/src/SFML/Graphics/CMakeLists.txt
@@ -0,0 +1,135 @@
+
+set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFML/Graphics)
+set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/Graphics)
+
+# all source files
+set(SRC
+ ${INCROOT}/BlendMode.hpp
+ ${SRCROOT}/Color.cpp
+ ${INCROOT}/Color.hpp
+ ${INCROOT}/Export.hpp
+ ${SRCROOT}/Font.cpp
+ ${INCROOT}/Font.hpp
+ ${INCROOT}/Glyph.hpp
+ ${SRCROOT}/GLCheck.cpp
+ ${SRCROOT}/GLCheck.hpp
+ ${SRCROOT}/Image.cpp
+ ${INCROOT}/Image.hpp
+ ${SRCROOT}/ImageLoader.cpp
+ ${SRCROOT}/ImageLoader.hpp
+ ${INCROOT}/PrimitiveType.hpp
+ ${INCROOT}/Rect.hpp
+ ${INCROOT}/Rect.inl
+ ${SRCROOT}/RenderStates.cpp
+ ${INCROOT}/RenderStates.hpp
+ ${SRCROOT}/RenderTexture.cpp
+ ${INCROOT}/RenderTexture.hpp
+ ${SRCROOT}/RenderTarget.cpp
+ ${INCROOT}/RenderTarget.hpp
+ ${SRCROOT}/RenderWindow.cpp
+ ${INCROOT}/RenderWindow.hpp
+ ${SRCROOT}/Shader.cpp
+ ${INCROOT}/Shader.hpp
+ ${SRCROOT}/Texture.cpp
+ ${INCROOT}/Texture.hpp
+ ${SRCROOT}/TextureSaver.cpp
+ ${SRCROOT}/TextureSaver.hpp
+ ${SRCROOT}/Transform.cpp
+ ${INCROOT}/Transform.hpp
+ ${SRCROOT}/Transformable.cpp
+ ${INCROOT}/Transformable.hpp
+ ${SRCROOT}/View.cpp
+ ${INCROOT}/View.hpp
+ ${SRCROOT}/Vertex.cpp
+ ${INCROOT}/Vertex.hpp
+)
+source_group("" FILES ${SRC})
+
+# drawables sources
+set(DRAWABLES_SRC
+ ${INCROOT}/Drawable.hpp
+ ${SRCROOT}/Shape.cpp
+ ${INCROOT}/Shape.hpp
+ ${SRCROOT}/CircleShape.cpp
+ ${INCROOT}/CircleShape.hpp
+ ${SRCROOT}/RectangleShape.cpp
+ ${INCROOT}/RectangleShape.hpp
+ ${SRCROOT}/ConvexShape.cpp
+ ${INCROOT}/ConvexShape.hpp
+ ${SRCROOT}/Sprite.cpp
+ ${INCROOT}/Sprite.hpp
+ ${SRCROOT}/Text.cpp
+ ${INCROOT}/Text.hpp
+ ${SRCROOT}/VertexArray.cpp
+ ${INCROOT}/VertexArray.hpp
+)
+source_group("drawables" FILES ${DRAWABLES_SRC})
+
+# render-texture sources
+set(RENDER_TEXTURE_SRC
+ ${SRCROOT}/RenderTextureImpl.cpp
+ ${SRCROOT}/RenderTextureImpl.hpp
+ ${SRCROOT}/RenderTextureImplFBO.cpp
+ ${SRCROOT}/RenderTextureImplFBO.hpp
+ ${SRCROOT}/RenderTextureImplDefault.cpp
+ ${SRCROOT}/RenderTextureImplDefault.hpp
+)
+source_group("render texture" FILES ${RENDER_TEXTURE_SRC})
+
+# stb_image sources
+set(STB_SRC
+ ${SRCROOT}/stb_image/stb_image.h
+ ${SRCROOT}/stb_image/stb_image_write.h
+)
+source_group("stb_image" FILES ${STB_SRC})
+
+# let CMake know about our additional graphics libraries paths (on Windows and OSX)
+if(WINDOWS OR MACOSX)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/jpeg")
+endif()
+
+if(WINDOWS)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libfreetype/windows")
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libfreetype/windows/freetype")
+elseif(MACOSX)
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libfreetype/osx")
+ set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/libfreetype/osx/freetype2")
+ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-osx/Frameworks")
+endif()
+
+# find external libraries
+find_package(OpenGL REQUIRED)
+find_package(Freetype REQUIRED)
+find_package(GLEW REQUIRED)
+find_package(JPEG REQUIRED)
+if(LINUX)
+ find_package(X11 REQUIRED)
+endif()
+
+# add include paths of external libraries
+include_directories(${FREETYPE_INCLUDE_DIRS} ${GLEW_INCLUDE_PATH} ${JPEG_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
+
+# build the list of libraries to link
+# GL and X11 are only needed for shared build, as they are already linked by sfml-window
+set(GRAPHICS_EXT_LIBS ${FREETYPE_LIBRARY} ${GLEW_LIBRARY} ${JPEG_LIBRARY})
+if(BUILD_SHARED_LIBS)
+ set(GRAPHICS_EXT_LIBS ${GRAPHICS_EXT_LIBS} ${OPENGL_gl_LIBRARY})
+ if(LINUX)
+ set(GRAPHICS_EXT_LIBS ${GRAPHICS_EXT_LIBS} ${X11_LIBRARIES})
+ endif()
+endif()
+
+# add preprocessor symbols
+add_definitions(-DGLEW_STATIC -DSTBI_FAILURE_USERMSG)
+
+# ImageLoader.cpp must be compiled with the -fno-strict-aliasing
+# when gcc is used; otherwise saving PNGs may crash in stb_image_write
+if(COMPILER_GCC)
+ set_source_files_properties(${SRCROOT}/ImageLoader.cpp PROPERTIES COMPILE_FLAGS -fno-strict-aliasing)
+endif()
+
+# define the sfml-graphics target
+sfml_add_library(sfml-graphics
+ SOURCES ${SRC} ${DRAWABLES_SRC} ${RENDER_TEXTURE_SRC} ${STB_SRC}
+ DEPENDS sfml-window sfml-system
+ EXTERNAL_LIBS ${GRAPHICS_EXT_LIBS})
diff --git a/src/SFML/Graphics/CircleShape.cpp b/src/SFML/Graphics/CircleShape.cpp
new file mode 100644
index 0000000..23e9e77
--- /dev/null
+++ b/src/SFML/Graphics/CircleShape.cpp
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/CircleShape.hpp>
+#include <cmath>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+CircleShape::CircleShape(float radius, unsigned int pointCount) :
+m_radius (radius),
+m_pointCount(pointCount)
+{
+ update();
+}
+
+
+////////////////////////////////////////////////////////////
+void CircleShape::setRadius(float radius)
+{
+ m_radius = radius;
+ update();
+}
+
+
+////////////////////////////////////////////////////////////
+float CircleShape::getRadius() const
+{
+ return m_radius;
+}
+
+
+////////////////////////////////////////////////////////////
+void CircleShape::setPointCount(unsigned int count)
+{
+ m_pointCount = count;
+ update();
+}
+
+////////////////////////////////////////////////////////////
+unsigned int CircleShape::getPointCount() const
+{
+ return m_pointCount;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f CircleShape::getPoint(unsigned int index) const
+{
+ static const float pi = 3.141592654f;
+
+ float angle = index * 2 * pi / m_pointCount - pi / 2;
+ float x = std::cos(angle) * m_radius;
+ float y = std::sin(angle) * m_radius;
+
+ return Vector2f(m_radius + x, m_radius + y);
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Color.cpp b/src/SFML/Graphics/Color.cpp
index 48b043d..d016a9d 100755..100644
--- a/src/SFML/Graphics/Color.cpp
+++ b/src/SFML/Graphics/Color.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -42,11 +42,10 @@ const Color Color::Blue(0, 0, 255);
const Color Color::Yellow(255, 255, 0);
const Color Color::Magenta(255, 0, 255);
const Color Color::Cyan(0, 255, 255);
+const Color Color::Transparent(0, 0, 0, 0);
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Color::Color() :
r(0),
g(0),
@@ -58,85 +57,64 @@ a(255)
////////////////////////////////////////////////////////////
-/// Construct the color from its 4 RGBA components
-////////////////////////////////////////////////////////////
-Color::Color(Uint8 R, Uint8 G, Uint8 B, Uint8 A) :
-r(R),
-g(G),
-b(B),
-a(A)
+Color::Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha) :
+r(red),
+g(green),
+b(blue),
+a(alpha)
{
}
////////////////////////////////////////////////////////////
-/// Operator += overload to add a color
-////////////////////////////////////////////////////////////
-Color& Color::operator +=(const Color& Other)
+bool operator ==(const Color& left, const Color& right)
{
- r = static_cast<Uint8>(std::min(r + Other.r, 255));
- g = static_cast<Uint8>(std::min(g + Other.g, 255));
- b = static_cast<Uint8>(std::min(b + Other.b, 255));
- a = static_cast<Uint8>(std::min(a + Other.a, 255));
-
- return *this;
+ return (left.r == right.r) &&
+ (left.g == right.g) &&
+ (left.b == right.b) &&
+ (left.a == right.a);
}
////////////////////////////////////////////////////////////
-/// Operator *= overload to modulate a color
-////////////////////////////////////////////////////////////
-Color& Color::operator *=(const Color& Other)
+bool operator !=(const Color& left, const Color& right)
{
- r = static_cast<Uint8>(r * Other.r / 255);
- g = static_cast<Uint8>(g * Other.g / 255);
- b = static_cast<Uint8>(b * Other.b / 255);
- a = static_cast<Uint8>(a * Other.a / 255);
-
- return *this;
+ return !(left == right);
}
////////////////////////////////////////////////////////////
-/// Compare two colors (for equality)
-////////////////////////////////////////////////////////////
-bool Color::operator ==(const Color& Other) const
+Color operator +(const Color& left, const Color& right)
{
- return (r == Other.r) && (g == Other.g) && (b == Other.b) && (a == Other.a);
+ return Color(static_cast<Uint8>(std::min(left.r + right.r, 255)),
+ static_cast<Uint8>(std::min(left.g + right.g, 255)),
+ static_cast<Uint8>(std::min(left.b + right.b, 255)),
+ static_cast<Uint8>(std::min(left.a + right.a, 255)));
}
////////////////////////////////////////////////////////////
-/// Compare two colors (for difference)
-////////////////////////////////////////////////////////////
-bool Color::operator !=(const Color& Other) const
+Color operator *(const Color& left, const Color& right)
{
- return (r != Other.r) || (g != Other.g) || (b != Other.b) || (a != Other.a);
+ return Color(static_cast<Uint8>(left.r * right.r / 255),
+ static_cast<Uint8>(left.g * right.g / 255),
+ static_cast<Uint8>(left.b * right.b / 255),
+ static_cast<Uint8>(left.a * right.a / 255));
}
////////////////////////////////////////////////////////////
-/// Operator + overload to add two colors
-////////////////////////////////////////////////////////////
-Color operator +(const Color& Color1, const Color& Color2)
+Color& operator +=(Color& left, const Color& right)
{
- Color c = Color1;
- c += Color2;
-
- return c;
+ return left = left + right;
}
////////////////////////////////////////////////////////////
-/// Operator * overload to modulate two colors
-////////////////////////////////////////////////////////////
-Color operator *(const Color& Color1, const Color& Color2)
+Color& operator *=(Color& left, const Color& right)
{
- Color c = Color1;
- c *= Color2;
-
- return c;
+ return left = left * right;
}
} // namespace sf
diff --git a/src/SFML/System/Unix/Mutex.cpp b/src/SFML/Graphics/ConvexShape.cpp
index 9614361..a5ad0e5 100755..100644
--- a/src/SFML/System/Unix/Mutex.cpp
+++ b/src/SFML/Graphics/ConvexShape.cpp
@@ -1,68 +1,69 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Unix/Mutex.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Mutex::Mutex()
-{
- pthread_mutex_init(&myMutex, NULL);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-Mutex::~Mutex()
-{
- pthread_mutex_destroy(&myMutex);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Lock the mutex
-////////////////////////////////////////////////////////////
-void Mutex::Lock()
-{
- pthread_mutex_lock(&myMutex);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Unlock the mutex
-////////////////////////////////////////////////////////////
-void Mutex::Unlock()
-{
- pthread_mutex_unlock(&myMutex);
-}
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/ConvexShape.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+ConvexShape::ConvexShape(unsigned int pointCount)
+{
+ setPointCount(pointCount);
+}
+
+
+////////////////////////////////////////////////////////////
+void ConvexShape::setPointCount(unsigned int count)
+{
+ m_points.resize(count);
+ update();
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int ConvexShape::getPointCount() const
+{
+ return static_cast<unsigned int>(m_points.size());
+}
+
+
+////////////////////////////////////////////////////////////
+void ConvexShape::setPoint(unsigned int index, const Vector2f& point)
+{
+ m_points[index] = point;
+ update();
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f ConvexShape::getPoint(unsigned int index) const
+{
+ return m_points[index];
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Drawable.cpp b/src/SFML/Graphics/Drawable.cpp
deleted file mode 100755
index 7ff5d09..0000000
--- a/src/SFML/Graphics/Drawable.cpp
+++ /dev/null
@@ -1,402 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/Drawable.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <SFML/Window/Window.hpp>
-#include <math.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Drawable::Drawable(const Vector2f& Position, const Vector2f& Scale, float Rotation, const Color& Col) :
-myPosition (Position),
-myScale (Scale),
-myCenter (0, 0),
-myRotation (Rotation),
-myColor (Col),
-myBlendMode (Blend::Alpha),
-myNeedUpdate (true),
-myInvNeedUpdate(true)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
-Drawable::~Drawable()
-{
- // Nothing to do
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the position of the object (take 2 values)
-////////////////////////////////////////////////////////////
-void Drawable::SetPosition(float X, float Y)
-{
- SetX(X);
- SetY(Y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the position of the object (take a 2D vector)
-////////////////////////////////////////////////////////////
-void Drawable::SetPosition(const Vector2f& Position)
-{
- SetX(Position.x);
- SetY(Position.y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the X position of the object
-////////////////////////////////////////////////////////////
-void Drawable::SetX(float X)
-{
- myPosition.x = X;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the Y position of the object
-////////////////////////////////////////////////////////////
-void Drawable::SetY(float Y)
-{
- myPosition.y = Y;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the scale of the object (take 2 values)
-////////////////////////////////////////////////////////////
-void Drawable::SetScale(float ScaleX, float ScaleY)
-{
- SetScaleX(ScaleX);
- SetScaleY(ScaleY);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the scale of the object (take a 2D vector)
-////////////////////////////////////////////////////////////
-void Drawable::SetScale(const Vector2f& Scale)
-{
- SetScaleX(Scale.x);
- SetScaleY(Scale.y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the X scale factor of the object
-////////////////////////////////////////////////////////////
-void Drawable::SetScaleX(float FactorX)
-{
- if (FactorX > 0)
- {
- myScale.x = FactorX;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the Y scale factor of the object
-////////////////////////////////////////////////////////////
-void Drawable::SetScaleY(float FactorY)
-{
- if (FactorY > 0)
- {
- myScale.y = FactorY;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the center of the object, in coordinates relative to the
-/// top-left of the object (take 2 values).
-/// The default center is (0, 0)
-////////////////////////////////////////////////////////////
-void Drawable::SetCenter(float CenterX, float CenterY)
-{
- myCenter.x = CenterX;
- myCenter.y = CenterY;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the center of the object, in coordinates relative to the
-/// top-left of the object (take a 2D vector).
-/// The default center is (0, 0)
-////////////////////////////////////////////////////////////
-void Drawable::SetCenter(const Vector2f& Center)
-{
- SetCenter(Center.x, Center.y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the orientation of the object
-////////////////////////////////////////////////////////////
-void Drawable::SetRotation(float Rotation)
-{
- myRotation = static_cast<float>(fmod(Rotation, 360));
- if (myRotation < 0)
- myRotation += 360.f;
- myNeedUpdate = true;
- myInvNeedUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the color of the object.
-/// The default color is white
-////////////////////////////////////////////////////////////
-void Drawable::SetColor(const Color& Col)
-{
- myColor = Col;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the blending mode for the object.
-/// The default blend mode is Blend::Alpha
-////////////////////////////////////////////////////////////
-void Drawable::SetBlendMode(Blend::Mode Mode)
-{
- myBlendMode = Mode;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the position of the object
-////////////////////////////////////////////////////////////
-const Vector2f& Drawable::GetPosition() const
-{
- return myPosition;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the current scale of the object
-////////////////////////////////////////////////////////////
-const Vector2f& Drawable::GetScale() const
-{
- return myScale;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the center of the object
-////////////////////////////////////////////////////////////
-const Vector2f& Drawable::GetCenter() const
-{
- return myCenter;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the orientation of the object
-////////////////////////////////////////////////////////////
-float Drawable::GetRotation() const
-{
- return myRotation;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the color of the object
-////////////////////////////////////////////////////////////
-const Color& Drawable::GetColor() const
-{
- return myColor;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the current blending mode
-////////////////////////////////////////////////////////////
-Blend::Mode Drawable::GetBlendMode() const
-{
- return myBlendMode;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Move the object of a given offset (take 2 values)
-///
-////////////////////////////////////////////////////////////
-void Drawable::Move(float OffsetX, float OffsetY)
-{
- SetX(myPosition.x + OffsetX);
- SetY(myPosition.y + OffsetY);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Move the object of a given offset (take a 2D vector)
-////////////////////////////////////////////////////////////
-void Drawable::Move(const Vector2f& Offset)
-{
- Move(Offset.x, Offset.y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Scale the object (take 2 values)
-////////////////////////////////////////////////////////////
-void Drawable::Scale(float FactorX, float FactorY)
-{
- SetScaleX(myScale.x * FactorX);
- SetScaleY(myScale.y * FactorY);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Scale the object (take a 2D vector)
-////////////////////////////////////////////////////////////
-void Drawable::Scale(const Vector2f& Factor)
-{
- Scale(Factor.x, Factor.y);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Rotate the object
-////////////////////////////////////////////////////////////
-void Drawable::Rotate(float Angle)
-{
- SetRotation(myRotation + Angle);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Transform a point from global coordinates into local coordinates
-/// (ie it applies the inverse of object's center, translation, rotation and scale to the point)
-////////////////////////////////////////////////////////////
-sf::Vector2f Drawable::TransformToLocal(const sf::Vector2f& Point) const
-{
- return GetInverseMatrix().Transform(Point);
-}
-
-////////////////////////////////////////////////////////////
-/// Transform a point from local coordinates into global coordinates
-/// (ie it applies the object's center, translation, rotation and scale to the point)
-////////////////////////////////////////////////////////////
-sf::Vector2f Drawable::TransformToGlobal(const sf::Vector2f& Point) const
-{
- return GetMatrix().Transform(Point);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the transform matrix of the drawable
-////////////////////////////////////////////////////////////
-const Matrix3& Drawable::GetMatrix() const
-{
- // First recompute it if needed
- if (myNeedUpdate)
- {
- myMatrix.SetFromTransformations(myCenter, myPosition, myRotation, myScale);
- myNeedUpdate = false;
- }
-
- return myMatrix;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the inverse transform matrix of the drawable
-////////////////////////////////////////////////////////////
-const Matrix3& Drawable::GetInverseMatrix() const
-{
- // First recompute it if needed
- if (myInvNeedUpdate)
- {
- myInvMatrix = GetMatrix().GetInverse();
- myInvNeedUpdate = false;
- }
-
- return myInvMatrix;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Draw the object into the specified window
-////////////////////////////////////////////////////////////
-void Drawable::Draw(RenderTarget& Target) const
-{
- // Save the current modelview matrix and set the new one
- GLCheck(glMatrixMode(GL_MODELVIEW));
- GLCheck(glPushMatrix());
- GLCheck(glMultMatrixf(GetMatrix().Get4x4Elements()));
-
- // Setup alpha-blending
- if (myBlendMode == Blend::None)
- {
- GLCheck(glDisable(GL_BLEND));
- }
- else
- {
- GLCheck(glEnable(GL_BLEND));
-
- switch (myBlendMode)
- {
- case Blend::Alpha : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); break;
- case Blend::Add : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE)); break;
- case Blend::Multiply : GLCheck(glBlendFunc(GL_DST_COLOR, GL_ZERO)); break;
- default : break;
- }
- }
-
- // Set color
- GLCheck(glColor4f(myColor.r / 255.f, myColor.g / 255.f, myColor.b / 255.f, myColor.a / 255.f));
-
- // Let the derived class render the object geometry
- Render(Target);
-
- // Restore the previous modelview matrix
- GLCheck(glMatrixMode(GL_MODELVIEW));
- GLCheck(glPopMatrix());
-}
-
-} // namespace sf
diff --git a/src/SFML/Graphics/Font.cpp b/src/SFML/Graphics/Font.cpp
index 36c4c28..8afe57e 100755..100644
--- a/src/SFML/Graphics/Font.cpp
+++ b/src/SFML/Graphics/Font.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,167 +26,574 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Font.hpp>
-#include <SFML/Graphics/FontLoader.hpp>
-#include <iostream>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/System/InputStream.hpp>
+#include <SFML/System/Err.hpp>
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_GLYPH_H
+#include FT_OUTLINE_H
+#include FT_BITMAP_H
+#include <cstdlib>
+#include <cstring>
+
+
+namespace
+{
+ // FreeType callbacks that operate on a sf::InputStream
+ unsigned long read(FT_Stream rec, unsigned long offset, unsigned char* buffer, unsigned long count)
+ {
+ sf::InputStream* stream = static_cast<sf::InputStream*>(rec->descriptor.pointer);
+ if (static_cast<unsigned long>(stream->seek(offset)) == offset)
+ {
+ if (count > 0)
+ return static_cast<unsigned long>(stream->read(reinterpret_cast<char*>(buffer), count));
+ else
+ return 0;
+ }
+ else
+ return count > 0 ? 0 : 1; // error code is 0 if we're reading, or nonzero if we're seeking
+ }
+ void close(FT_Stream)
+ {
+ }
+}
namespace sf
{
////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-Uint32 Font::ourDefaultCharset[] =
+Font::Font() :
+m_library (NULL),
+m_face (NULL),
+m_streamRec(NULL),
+m_refCount (NULL)
{
- // Printable characters in ASCII range
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
- 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
- 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
- 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
- // Printable characters in extended ASCII range
- 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0x2A, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
- 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
- 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
- 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
- 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
- 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE,
-
- // To make it a valid string
- 0x00
-};
+}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Font::Font() :
-myCharSize(0)
+Font::Font(const Font& copy) :
+m_library (copy.m_library),
+m_face (copy.m_face),
+m_streamRec (copy.m_streamRec),
+m_refCount (copy.m_refCount),
+m_pages (copy.m_pages),
+m_pixelBuffer(copy.m_pixelBuffer)
{
+ // Note: as FreeType doesn't provide functions for copying/cloning,
+ // we must share all the FreeType pointers
+ if (m_refCount)
+ (*m_refCount)++;
}
////////////////////////////////////////////////////////////
-/// Load the font from a file
+Font::~Font()
+{
+ cleanup();
+}
+
+
////////////////////////////////////////////////////////////
-bool Font::LoadFromFile(const std::string& Filename, unsigned int CharSize, const Unicode::Text& Charset)
+bool Font::loadFromFile(const std::string& filename)
{
- // Clear the previous character map
- myGlyphs.clear();
+ // Cleanup the previous resources
+ cleanup();
+ m_refCount = new int(1);
+
+ // Initialize FreeType
+ // Note: we initialize FreeType for every font instance in order to avoid having a single
+ // global manager that would create a lot of issues regarding creation and destruction order.
+ FT_Library library;
+ if (FT_Init_FreeType(&library) != 0)
+ {
+ err() << "Failed to load font \"" << filename << "\" (failed to initialize FreeType)" << std::endl;
+ return false;
+ }
+ m_library = library;
- // Always add these special characters
- Unicode::UTF32String UTFCharset = Charset;
- if (UTFCharset.find(L' ') != Unicode::UTF32String::npos) UTFCharset += L' ';
- if (UTFCharset.find(L'\n') != Unicode::UTF32String::npos) UTFCharset += L'\n';
- if (UTFCharset.find(L'\v') != Unicode::UTF32String::npos) UTFCharset += L'\v';
- if (UTFCharset.find(L'\t') != Unicode::UTF32String::npos) UTFCharset += L'\t';
+ // Load the new font face from the specified file
+ FT_Face face;
+ if (FT_New_Face(static_cast<FT_Library>(m_library), filename.c_str(), 0, &face) != 0)
+ {
+ err() << "Failed to load font \"" << filename << "\" (failed to create the font face)" << std::endl;
+ return false;
+ }
- return priv::FontLoader::GetInstance().LoadFontFromFile(Filename, CharSize, UTFCharset, *this);
+ // Select the unicode character map
+ if (FT_Select_Charmap(face, FT_ENCODING_UNICODE) != 0)
+ {
+ err() << "Failed to load font \"" << filename << "\" (failed to set the Unicode character set)" << std::endl;
+ return false;
+ }
+
+ // Store the loaded font in our ugly void* :)
+ m_face = face;
+
+ return true;
}
////////////////////////////////////////////////////////////
-/// Load the font from a file in memory
-////////////////////////////////////////////////////////////
-bool Font::LoadFromMemory(const char* Data, std::size_t SizeInBytes, unsigned int CharSize, const Unicode::Text& Charset)
+bool Font::loadFromMemory(const void* data, std::size_t sizeInBytes)
{
- // Clear the previous character map
- myGlyphs.clear();
+ // Cleanup the previous resources
+ cleanup();
+ m_refCount = new int(1);
+
+ // Initialize FreeType
+ // Note: we initialize FreeType for every font instance in order to avoid having a single
+ // global manager that would create a lot of issues regarding creation and destruction order.
+ FT_Library library;
+ if (FT_Init_FreeType(&library) != 0)
+ {
+ err() << "Failed to load font from memory (failed to initialize FreeType)" << std::endl;
+ return false;
+ }
+ m_library = library;
- // Check parameters
- if (!Data || (SizeInBytes == 0))
+ // Load the new font face from the specified file
+ FT_Face face;
+ if (FT_New_Memory_Face(static_cast<FT_Library>(m_library), reinterpret_cast<const FT_Byte*>(data), static_cast<FT_Long>(sizeInBytes), 0, &face) != 0)
{
- std::cerr << "Failed to load font from memory, no data provided" << std::endl;
+ err() << "Failed to load font from memory (failed to create the font face)" << std::endl;
return false;
}
- // Always add these special characters
- Unicode::UTF32String UTFCharset = Charset;
- if (UTFCharset.find(L' ') != Unicode::UTF32String::npos) UTFCharset += L' ';
- if (UTFCharset.find(L'\n') != Unicode::UTF32String::npos) UTFCharset += L'\n';
- if (UTFCharset.find(L'\v') != Unicode::UTF32String::npos) UTFCharset += L'\v';
- if (UTFCharset.find(L'\t') != Unicode::UTF32String::npos) UTFCharset += L'\t';
+ // Select the unicode character map
+ if (FT_Select_Charmap(face, FT_ENCODING_UNICODE) != 0)
+ {
+ err() << "Failed to load font from memory (failed to set the Unicode character set)" << std::endl;
+ return false;
+ }
+
+ // Store the loaded font in our ugly void* :)
+ m_face = face;
- return priv::FontLoader::GetInstance().LoadFontFromMemory(Data, SizeInBytes, CharSize, UTFCharset, *this);
+ return true;
}
////////////////////////////////////////////////////////////
-/// Get the base size of characters in the font;
-/// All glyphs dimensions are based on this value
+bool Font::loadFromStream(InputStream& stream)
+{
+ // Cleanup the previous resources
+ cleanup();
+ m_refCount = new int(1);
+
+ // Initialize FreeType
+ // Note: we initialize FreeType for every font instance in order to avoid having a single
+ // global manager that would create a lot of issues regarding creation and destruction order.
+ FT_Library library;
+ if (FT_Init_FreeType(&library) != 0)
+ {
+ err() << "Failed to load font from stream (failed to initialize FreeType)" << std::endl;
+ return false;
+ }
+ m_library = library;
+
+ // Make sure that the stream's reading position is at the beginning
+ stream.seek(0);
+
+ // Prepare a wrapper for our stream, that we'll pass to FreeType callbacks
+ FT_StreamRec* rec = new FT_StreamRec;
+ std::memset(rec, 0, sizeof(*rec));
+ rec->base = NULL;
+ rec->size = static_cast<unsigned long>(stream.getSize());
+ rec->pos = 0;
+ rec->descriptor.pointer = &stream;
+ rec->read = &read;
+ rec->close = &close;
+
+ // Setup the FreeType callbacks that will read our stream
+ FT_Open_Args args;
+ args.flags = FT_OPEN_STREAM;
+ args.stream = rec;
+ args.driver = 0;
+
+ // Load the new font face from the specified stream
+ FT_Face face;
+ if (FT_Open_Face(static_cast<FT_Library>(m_library), &args, 0, &face) != 0)
+ {
+ err() << "Failed to load font from stream (failed to create the font face)" << std::endl;
+ return false;
+ }
+
+ // Select the unicode character map
+ if (FT_Select_Charmap(face, FT_ENCODING_UNICODE) != 0)
+ {
+ err() << "Failed to load font from stream (failed to set the Unicode character set)" << std::endl;
+ return false;
+ }
+
+ // Store the loaded font in our ugly void* :)
+ m_face = face;
+ m_streamRec = rec;
+
+ return true;
+}
+
+
////////////////////////////////////////////////////////////
-unsigned int Font::GetCharacterSize() const
+const Glyph& Font::getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const
{
- return myCharSize;
+ // Get the page corresponding to the character size
+ GlyphTable& glyphs = m_pages[characterSize].glyphs;
+
+ // Build the key by combining the code point and the bold flag
+ Uint32 key = ((bold ? 1 : 0) << 31) | codePoint;
+
+ // Search the glyph into the cache
+ GlyphTable::const_iterator it = glyphs.find(key);
+ if (it != glyphs.end())
+ {
+ // Found: just return it
+ return it->second;
+ }
+ else
+ {
+ // Not found: we have to load it
+ Glyph glyph = loadGlyph(codePoint, characterSize, bold);
+ return glyphs.insert(std::make_pair(key, glyph)).first->second;
+ }
}
////////////////////////////////////////////////////////////
-/// Get the description of a glyph (character)
-/// given by its unicode value
+int Font::getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const
+{
+ // Special case where first or second is 0 (null character)
+ if (first == 0 || second == 0)
+ return 0;
+
+ FT_Face face = static_cast<FT_Face>(m_face);
+
+ if (face && FT_HAS_KERNING(face) && setCurrentSize(characterSize))
+ {
+ // Convert the characters to indices
+ FT_UInt index1 = FT_Get_Char_Index(face, first);
+ FT_UInt index2 = FT_Get_Char_Index(face, second);
+
+ // Get the kerning vector
+ FT_Vector kerning;
+ FT_Get_Kerning(face, index1, index2, FT_KERNING_DEFAULT, &kerning);
+
+ // Return the X advance
+ return kerning.x >> 6;
+ }
+ else
+ {
+ // Invalid font, or no kerning
+ return 0;
+ }
+}
+
+
////////////////////////////////////////////////////////////
-const Glyph& Font::GetGlyph(Uint32 CodePoint) const
+int Font::getLineSpacing(unsigned int characterSize) const
{
- std::map<Uint32, Glyph>::const_iterator It = myGlyphs.find(CodePoint);
- if (It != myGlyphs.end())
+ FT_Face face = static_cast<FT_Face>(m_face);
+
+ if (face && setCurrentSize(characterSize))
{
- // Valid glyph
- return It->second;
+ return (face->size->metrics.height >> 6);
}
else
{
- // Invalid glyph -- return an invalid glyph
- static const Glyph InvalidGlyph;
- return InvalidGlyph;
+ return 0;
}
}
////////////////////////////////////////////////////////////
-/// Get the image containing the rendered characters (glyphs)
+const Texture& Font::getTexture(unsigned int characterSize) const
+{
+ return m_pages[characterSize].texture;
+}
+
+
////////////////////////////////////////////////////////////
-const Image& Font::GetImage() const
+Font& Font::operator =(const Font& right)
{
- return myTexture;
+ Font temp(right);
+
+ std::swap(m_library, temp.m_library);
+ std::swap(m_face, temp.m_face);
+ std::swap(m_pages, temp.m_pages);
+ std::swap(m_pixelBuffer, temp.m_pixelBuffer);
+ std::swap(m_refCount, temp.m_refCount);
+
+ return *this;
}
////////////////////////////////////////////////////////////
-/// Get the SFML default built-in font (Arial)
+void Font::cleanup()
+{
+ // Check if we must destroy the FreeType pointers
+ if (m_refCount)
+ {
+ // Decrease the reference counter
+ (*m_refCount)--;
+
+ // Free the resources only if we are the last owner
+ if (*m_refCount == 0)
+ {
+ // Delete the reference counter
+ delete m_refCount;
+
+ // Destroy the font face
+ if (m_face)
+ FT_Done_Face(static_cast<FT_Face>(m_face));
+
+ // Destroy the stream rec instance, if any (must be done after FT_Done_Face!)
+ if (m_streamRec)
+ delete static_cast<FT_StreamRec*>(m_streamRec);
+
+ // Close the library
+ if (m_library)
+ FT_Done_FreeType(static_cast<FT_Library>(m_library));
+ }
+ }
+
+ // Reset members
+ m_library = NULL;
+ m_face = NULL;
+ m_streamRec = NULL;
+ m_refCount = NULL;
+ m_pages.clear();
+ m_pixelBuffer.clear();
+}
+
+
////////////////////////////////////////////////////////////
-const Font& Font::GetDefaultFont()
+Glyph Font::loadGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const
{
-#if defined(SFML_SYSTEM_WINDOWS) && defined(SFML_DYNAMIC)
+ // The glyph to return
+ Glyph glyph;
+
+ // First, transform our ugly void* to a FT_Face
+ FT_Face face = static_cast<FT_Face>(m_face);
+ if (!face)
+ return glyph;
+
+ // Set the character size
+ if (!setCurrentSize(characterSize))
+ return glyph;
+
+ // Load the glyph corresponding to the code point
+ if (FT_Load_Char(face, codePoint, FT_LOAD_TARGET_NORMAL) != 0)
+ return glyph;
+
+ // Retrieve the glyph
+ FT_Glyph glyphDesc;
+ if (FT_Get_Glyph(face->glyph, &glyphDesc) != 0)
+ return glyph;
+
+ // Apply bold if necessary -- first technique using outline (highest quality)
+ FT_Pos weight = 1 << 6;
+ bool outline = (glyphDesc->format == FT_GLYPH_FORMAT_OUTLINE);
+ if (bold && outline)
+ {
+ FT_OutlineGlyph outlineGlyph = (FT_OutlineGlyph)glyphDesc;
+ FT_Outline_Embolden(&outlineGlyph->outline, weight);
+ }
- // On Windows dynamic build, the default font causes a crash at global exit.
- // This is a temporary workaround that turns the crash into a memory leak.
- // Note that this bug doesn't exist anymore in SFML 2.
- static Font* DefaultFontPtr = new Font;
- Font& DefaultFont = *DefaultFontPtr;
+ // Convert the glyph to a bitmap (i.e. rasterize it)
+ FT_Glyph_To_Bitmap(&glyphDesc, FT_RENDER_MODE_NORMAL, 0, 1);
+ FT_BitmapGlyph bitmapGlyph = (FT_BitmapGlyph)glyphDesc;
+ FT_Bitmap& bitmap = bitmapGlyph->bitmap;
-#else
+ // Apply bold if necessary -- fallback technique using bitmap (lower quality)
+ if (bold && !outline)
+ {
+ FT_Bitmap_Embolden(static_cast<FT_Library>(m_library), &bitmap, weight, weight);
+ }
- static Font DefaultFont;
+ // Compute the glyph's advance offset
+ glyph.advance = glyphDesc->advance.x >> 16;
+ if (bold)
+ glyph.advance += weight >> 6;
+
+ int width = bitmap.width;
+ int height = bitmap.rows;
+ if ((width > 0) && (height > 0))
+ {
+ // Leave a small padding around characters, so that filtering doesn't
+ // pollute them with pixels from neighbours
+ const unsigned int padding = 1;
+
+ // Get the glyphs page corresponding to the character size
+ Page& page = m_pages[characterSize];
+
+ // Find a good position for the new glyph into the texture
+ glyph.textureRect = findGlyphRect(page, width + 2 * padding, height + 2 * padding);
+
+ // Compute the glyph's bounding box
+ glyph.bounds.left = bitmapGlyph->left - padding;
+ glyph.bounds.top = -bitmapGlyph->top - padding;
+ glyph.bounds.width = width + 2 * padding;
+ glyph.bounds.height = height + 2 * padding;
+
+ // Extract the glyph's pixels from the bitmap
+ m_pixelBuffer.resize(width * height * 4, 255);
+ const Uint8* pixels = bitmap.buffer;
+ if (bitmap.pixel_mode == FT_PIXEL_MODE_MONO)
+ {
+ // Pixels are 1 bit monochrome values
+ for (int y = 0; y < height; ++y)
+ {
+ for (int x = 0; x < width; ++x)
+ {
+ // The color channels remain white, just fill the alpha channel
+ std::size_t index = (x + y * width) * 4 + 3;
+ m_pixelBuffer[index] = ((pixels[x / 8]) & (1 << (7 - (x % 8)))) ? 255 : 0;
+ }
+ pixels += bitmap.pitch;
+ }
+ }
+ else
+ {
+ // Pixels are 8 bits gray levels
+ for (int y = 0; y < height; ++y)
+ {
+ for (int x = 0; x < width; ++x)
+ {
+ // The color channels remain white, just fill the alpha channel
+ std::size_t index = (x + y * width) * 4 + 3;
+ m_pixelBuffer[index] = pixels[x];
+ }
+ pixels += bitmap.pitch;
+ }
+ }
+
+ // Write the pixels to the texture
+ unsigned int x = glyph.textureRect.left + padding;
+ unsigned int y = glyph.textureRect.top + padding;
+ unsigned int w = glyph.textureRect.width - 2 * padding;
+ unsigned int h = glyph.textureRect.height - 2 * padding;
+ page.texture.update(&m_pixelBuffer[0], w, h, x, y);
+ }
-#endif
+ // Delete the FT glyph
+ FT_Done_Glyph(glyphDesc);
- // Get the raw data of the Arial font file into an array, so that we can load it into the font
- static const char DefaultFontData[] =
+ // Force an OpenGL flush, so that the font's texture will appear updated
+ // in all contexts immediately (solves problems in multi-threaded apps)
+ glCheck(glFlush());
+
+ // Done :)
+ return glyph;
+}
+
+
+////////////////////////////////////////////////////////////
+IntRect Font::findGlyphRect(Page& page, unsigned int width, unsigned int height) const
+{
+ // Find the line that fits well the glyph
+ Row* row = NULL;
+ float bestRatio = 0;
+ for (std::vector<Row>::iterator it = page.rows.begin(); it != page.rows.end() && !row; ++it)
{
- #include <SFML/Graphics/Arial.hpp>
- };
+ float ratio = static_cast<float>(height) / it->height;
+
+ // Ignore rows that are either too small or too high
+ if ((ratio < 0.7f) || (ratio > 1.f))
+ continue;
+
+ // Check if there's enough horizontal space left in the row
+ if (width > page.texture.getSize().x - it->width)
+ continue;
+
+ // Make sure that this new row is the best found so far
+ if (ratio < bestRatio)
+ continue;
+
+ // The current row passed all the tests: we can select it
+ row = &*it;
+ bestRatio = ratio;
+ }
+
+ // If we didn't find a matching row, create a new one (10% taller than the glyph)
+ if (!row)
+ {
+ int rowHeight = height + height / 10;
+ while (page.nextRow + rowHeight >= page.texture.getSize().y)
+ {
+ // Not enough space: resize the texture if possible
+ unsigned int textureWidth = page.texture.getSize().x;
+ unsigned int textureHeight = page.texture.getSize().y;
+ if ((textureWidth * 2 <= Texture::getMaximumSize()) && (textureHeight * 2 <= Texture::getMaximumSize()))
+ {
+ // Make the texture 2 times bigger
+ Image newImage;
+ newImage.create(textureWidth * 2, textureHeight * 2, Color(255, 255, 255, 0));
+ newImage.copy(page.texture.copyToImage(), 0, 0);
+ page.texture.loadFromImage(newImage);
+ }
+ else
+ {
+ // Oops, we've reached the maximum texture size...
+ err() << "Failed to add a new character to the font: the maximum texture size has been reached" << std::endl;
+ return IntRect(0, 0, 2, 2);
+ }
+ }
+
+ // We can now create the new row
+ page.rows.push_back(Row(page.nextRow, rowHeight));
+ page.nextRow += rowHeight;
+ row = &page.rows.back();
+ }
+
+ // Find the glyph's rectangle on the selected row
+ IntRect rect(row->width, row->top, width, height);
- // Load the default font on first call
- static bool DefaultFontLoaded = false;
- if (!DefaultFontLoaded)
+ // Update the row informations
+ row->width += width;
+
+ return rect;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Font::setCurrentSize(unsigned int characterSize) const
+{
+ // FT_Set_Pixel_Sizes is an expensive function, so we must call it
+ // only when necessary to avoid killing performances
+
+ FT_Face face = static_cast<FT_Face>(m_face);
+ FT_UShort currentSize = face->size->metrics.x_ppem;
+
+ if (currentSize != characterSize)
{
- DefaultFont.LoadFromMemory(DefaultFontData, sizeof(DefaultFontData), 30);
- DefaultFontLoaded = true;
+ return FT_Set_Pixel_Sizes(face, 0, characterSize) == 0;
}
+ else
+ {
+ return true;
+ }
+}
- return DefaultFont;
+
+////////////////////////////////////////////////////////////
+Font::Page::Page() :
+nextRow(3)
+{
+ // Make sure that the texture is initialized by default
+ sf::Image image;
+ image.create(128, 128, Color(255, 255, 255, 0));
+
+ // Reserve a 2x2 white square for texturing underlines
+ for (int x = 0; x < 2; ++x)
+ for (int y = 0; y < 2; ++y)
+ image.setPixel(x, y, Color(255, 255, 255, 255));
+
+ // Create the texture
+ texture.loadFromImage(image);
+ texture.setSmooth(true);
}
} // namespace sf
diff --git a/src/SFML/Graphics/FontLoader.cpp b/src/SFML/Graphics/FontLoader.cpp
deleted file mode 100755
index 0f6e67b..0000000
--- a/src/SFML/Graphics/FontLoader.cpp
+++ /dev/null
@@ -1,419 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/FontLoader.hpp>
-#include <SFML/Graphics/Color.hpp>
-#include <SFML/Graphics/Font.hpp>
-#include <SFML/Graphics/Image.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include FT_GLYPH_H
-#include <iostream>
-#include <map>
-#include <vector>
-#include <math.h>
-
-
-namespace
-{
- ////////////////////////////////////////////////////////////
- // Functor to sort glyphs by size
- ////////////////////////////////////////////////////////////
- struct SizeCompare
- {
- bool operator ()(FT_BitmapGlyph Glyph1, FT_BitmapGlyph Glyph2) const
- {
- return Glyph2->bitmap.rows < Glyph1->bitmap.rows;
- }
- };
-}
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Get the unique instance of the class
-////////////////////////////////////////////////////////////
-FontLoader& FontLoader::GetInstance()
-{
- static FontLoader Instance;
-
- return Instance;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-FontLoader::FontLoader()
-{
- // Initialize FreeType library
- FT_Error Error = FT_Init_FreeType(&myLibrary);
- if (Error)
- {
- std::cerr << "Failed to initialize FreeType library (error code : " << Error << ")" << std::endl;
- return;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-FontLoader::~FontLoader()
-{
- // Shutdown FreeType library
- if (myLibrary)
- FT_Done_FreeType(myLibrary);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Load a font from a file
-////////////////////////////////////////////////////////////
-bool FontLoader::LoadFontFromFile(const std::string& Filename, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont)
-{
- // Check if Freetype is correctly initialized
- if (!myLibrary)
- {
- std::cerr << "Failed to load font \"" << Filename << "\", FreeType has not been initialized" << std::endl;
- return false;
- }
-
- // Create a new font face from the specified file
- FT_Face FontFace;
- FT_Error Error = FT_New_Face(myLibrary, Filename.c_str(), 0, &FontFace);
- if (Error)
- {
- std::cerr << "Failed to load font \"" << Filename << "\" (" << GetErrorDesc(Error) << ")" << std::endl;
- return false;
- }
-
- // Create the bitmap font
- Error = CreateBitmapFont(FontFace, CharSize, Charset, LoadedFont);
- if (Error)
- std::cerr << "Failed to load font \"" << Filename << "\" (" << GetErrorDesc(Error) << ")" << std::endl;
-
- // Delete the font
- FT_Done_Face(FontFace);
-
- return Error == 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Load the font from a file in memory
-////////////////////////////////////////////////////////////
-bool FontLoader::LoadFontFromMemory(const char* Data, std::size_t SizeInBytes, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont)
-{
- // Check if Freetype is correctly initialized
- if (!myLibrary)
- {
- std::cerr << "Failed to load font from memory, FreeType has not been initialized" << std::endl;
- return false;
- }
-
- // Create a new font face from the specified memory data
- FT_Face FontFace;
- FT_Error Error = FT_New_Memory_Face(myLibrary, reinterpret_cast<const FT_Byte*>(Data), static_cast<FT_Long>(SizeInBytes), 0, &FontFace);
- if (Error)
- {
- std::cerr << "Failed to load font from memory (" << GetErrorDesc(Error) << ")" << std::endl;
- return false;
- }
-
- // Create the bitmap font
- Error = CreateBitmapFont(FontFace, CharSize, Charset, LoadedFont);
- if (Error)
- std::cerr << "Failed to load font from memory (" << GetErrorDesc(Error) << ")" << std::endl;
-
- // Delete the font
- FT_Done_Face(FontFace);
-
- return Error == 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create a bitmap font from a font face and a characters set
-////////////////////////////////////////////////////////////
-FT_Error FontLoader::CreateBitmapFont(FT_Face FontFace, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont)
-{
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- // Let's find how many characters to put in each row to make them fit into a squared texture
- GLint MaxSize;
- GLCheck(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxSize));
- int NbChars = static_cast<int>(sqrt(static_cast<double>(Charset.length())) * 0.75);
-
- // Clamp the character size to make sure we won't create a texture too big
- if (NbChars * CharSize >= static_cast<unsigned int>(MaxSize))
- CharSize = MaxSize / NbChars;
-
- // Initialize the dimensions
- unsigned int Left = 0;
- unsigned int Top = 0;
- unsigned int TexWidth = Image::GetValidTextureSize(CharSize * NbChars);
- unsigned int TexHeight = CharSize * NbChars;
- std::vector<unsigned int> Tops(TexWidth, 0);
-
- // Create a pixel buffer for rendering every glyph
- std::vector<Uint8> GlyphsBuffer(TexWidth * TexHeight * 4);
-
- // Setup the font size
- FT_Error Error = FT_Set_Pixel_Sizes(FontFace, CharSize, CharSize);
- if (Error)
- return Error;
-
- // Select the unicode character map
- Error = FT_Select_Charmap(FontFace, FT_ENCODING_UNICODE);
- if (Error)
- return Error;
-
- // Render all glyphs and sort them by size to optimize texture space
- typedef std::multimap<FT_BitmapGlyph, Uint32, SizeCompare> GlyphTable;
- GlyphTable Glyphs;
- for (std::size_t i = 0; i < Charset.length(); ++i)
- {
- // Load the glyph corresponding to the current character
- Error = FT_Load_Char(FontFace, Charset[i], FT_LOAD_TARGET_NORMAL);
- if (Error)
- return Error;
-
- // Convert the glyph to a bitmap (ie. rasterize it)
- FT_Glyph Glyph;
- Error = FT_Get_Glyph(FontFace->glyph, &Glyph);
- if (Error)
- return Error;
- FT_Glyph_To_Bitmap(&Glyph, FT_RENDER_MODE_NORMAL, 0, 1);
- FT_BitmapGlyph BitmapGlyph = (FT_BitmapGlyph)Glyph;
-
- // Add it to the sorted table of glyphs
- Glyphs.insert(std::make_pair(BitmapGlyph, Charset[i]));
- }
-
- // Copy the rendered glyphs into the texture
- unsigned int MaxHeight = 0;
- std::map<Uint32, IntRect> Coords;
- for (GlyphTable::const_iterator i = Glyphs.begin(); i != Glyphs.end(); ++i)
- {
- // Get the bitmap of the current glyph
- Glyph& CurGlyph = LoadedFont.myGlyphs[i->second];
- FT_BitmapGlyph BitmapGlyph = i->first;
- FT_Bitmap& Bitmap = BitmapGlyph->bitmap;
-
- // Make sure we don't go over the texture width
- if (Left + Bitmap.width + 1 >= TexWidth)
- Left = 0;
-
- // Compute the top coordinate
- Top = Tops[Left];
- for (int x = 0; x < Bitmap.width + 1; ++x)
- Top = std::max(Top, Tops[Left + x]);
- Top++;
-
- // Make sure we don't go over the texture height -- resize it if we need more space
- if (Top + Bitmap.rows + 1 >= TexHeight)
- {
- TexHeight *= 2;
- GlyphsBuffer.resize(TexWidth * TexHeight * 4);
- }
-
- // Store the character's position and size
- CurGlyph.Rectangle.Left = BitmapGlyph->left;
- CurGlyph.Rectangle.Top = -BitmapGlyph->top;
- CurGlyph.Rectangle.Right = CurGlyph.Rectangle.Left + Bitmap.width;
- CurGlyph.Rectangle.Bottom = Bitmap.rows - BitmapGlyph->top;
- CurGlyph.Advance = BitmapGlyph->root.advance.x >> 16;
-
- // Texture size may change, so let the texture coordinates be calculated later
- Coords[i->second] = IntRect(Left + 1, Top + 1, Left + Bitmap.width + 1, Top + Bitmap.rows + 1);
-
- // Draw the glyph into our bitmap font
- const Uint8* Pixels = Bitmap.buffer;
- for (int y = 0; y < Bitmap.rows; ++y)
- {
- for (int x = 0; x < Bitmap.width; ++x)
- {
- std::size_t Index = x + Left + 1 + (y + Top + 1) * TexWidth;
- GlyphsBuffer[Index * 4 + 0] = 255;
- GlyphsBuffer[Index * 4 + 1] = 255;
- GlyphsBuffer[Index * 4 + 2] = 255;
- GlyphsBuffer[Index * 4 + 3] = Pixels[x];
- }
- Pixels += Bitmap.pitch;
- }
-
- // Update the rendering coordinates
- for (int x = 0; x < Bitmap.width + 1; ++x)
- Tops[Left + x] = Top + Bitmap.rows;
- Left += Bitmap.width + 1;
- if (Top + Bitmap.rows > MaxHeight)
- MaxHeight = Top + Bitmap.rows;
-
- // Delete the glyph
- FT_Done_Glyph((FT_Glyph)BitmapGlyph);
- }
-
- // Create the font's texture
- TexHeight = MaxHeight + 1;
- GlyphsBuffer.resize(TexWidth * TexHeight * 4);
- LoadedFont.myTexture.LoadFromPixels(TexWidth, TexHeight, &GlyphsBuffer[0]);
-
- // Now that the texture is created, we can precompute texture coordinates
- for (std::size_t i = 0; i < Charset.size(); ++i)
- {
- Uint32 CurChar = Charset[i];
- LoadedFont.myGlyphs[CurChar].TexCoords = LoadedFont.myTexture.GetTexCoords(Coords[CurChar]);
- }
-
- // Update the character size (it may have been changed by the function)
- LoadedFont.myCharSize = CharSize;
-
- return 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a description from a FT error code
-////////////////////////////////////////////////////////////
-std::string FontLoader::GetErrorDesc(FT_Error Error)
-{
- switch (Error)
- {
- // Generic errors
- case FT_Err_Cannot_Open_Resource : return "cannot open resource";
- case FT_Err_Unknown_File_Format : return "unknown file format";
- case FT_Err_Invalid_File_Format : return "broken file";
- case FT_Err_Invalid_Version : return "invalid FreeType version";
- case FT_Err_Lower_Module_Version : return "module version is too low";
- case FT_Err_Invalid_Argument : return "invalid argument";
- case FT_Err_Unimplemented_Feature : return "unimplemented feature";
- case FT_Err_Invalid_Table : return "broken table";
- case FT_Err_Invalid_Offset : return "broken offset within table";
-
- // Glyph / character errors
- case FT_Err_Invalid_Glyph_Index : return "invalid glyph index";
- case FT_Err_Invalid_Character_Code : return "invalid character code";
- case FT_Err_Invalid_Glyph_Format : return "unsupported glyph image format";
- case FT_Err_Cannot_Render_Glyph : return "cannot render this glyph format";
- case FT_Err_Invalid_Outline : return "invalid outline";
- case FT_Err_Invalid_Composite : return "invalid composite glyph";
- case FT_Err_Too_Many_Hints : return "too many hints";
- case FT_Err_Invalid_Pixel_Size : return "invalid pixel size";
-
- // Handle errors
- case FT_Err_Invalid_Handle : return "invalid object handle";
- case FT_Err_Invalid_Library_Handle : return "invalid library handle";
- case FT_Err_Invalid_Driver_Handle : return "invalid module handle";
- case FT_Err_Invalid_Face_Handle : return "invalid face handle";
- case FT_Err_Invalid_Size_Handle : return "invalid size handle";
- case FT_Err_Invalid_Slot_Handle : return "invalid glyph slot handle";
- case FT_Err_Invalid_CharMap_Handle : return "invalid charmap handle";
- case FT_Err_Invalid_Cache_Handle : return "invalid cache manager handle";
- case FT_Err_Invalid_Stream_Handle : return "invalid stream handle";
-
- // Driver errors
- case FT_Err_Too_Many_Drivers : return "too many modules";
- case FT_Err_Too_Many_Extensions : return "too many extensions";
-
- // Memory errors
- case FT_Err_Out_Of_Memory : return "out of memory";
- case FT_Err_Unlisted_Object : return "unlisted object";
-
- // Stream errors
- case FT_Err_Cannot_Open_Stream : return "cannot open stream";
- case FT_Err_Invalid_Stream_Seek : return "invalid stream seek";
- case FT_Err_Invalid_Stream_Skip : return "invalid stream skip";
- case FT_Err_Invalid_Stream_Read : return "invalid stream read";
- case FT_Err_Invalid_Stream_Operation : return "invalid stream operation";
- case FT_Err_Invalid_Frame_Operation : return "invalid frame operation";
- case FT_Err_Nested_Frame_Access : return "nested frame access";
- case FT_Err_Invalid_Frame_Read : return "invalid frame read";
-
- // Raster errors
- case FT_Err_Raster_Uninitialized : return "raster uninitialized";
- case FT_Err_Raster_Corrupted : return "raster corrupted";
- case FT_Err_Raster_Overflow : return "raster overflow";
- case FT_Err_Raster_Negative_Height : return "negative height while rastering";
-
- // Cache errors
- case FT_Err_Too_Many_Caches : return "too many registered caches";
-
- // TrueType and SFNT errors
- case FT_Err_Invalid_Opcode : return "invalid opcode";
- case FT_Err_Too_Few_Arguments : return "too few arguments";
- case FT_Err_Stack_Overflow : return "stack overflow";
- case FT_Err_Code_Overflow : return "code overflow";
- case FT_Err_Bad_Argument : return "bad argument";
- case FT_Err_Divide_By_Zero : return "division by zero";
- case FT_Err_Invalid_Reference : return "invalid reference";
- case FT_Err_Debug_OpCode : return "found debug opcode";
- case FT_Err_ENDF_In_Exec_Stream : return "found ENDF opcode in execution stream";
- case FT_Err_Nested_DEFS : return "nested DEFS";
- case FT_Err_Invalid_CodeRange : return "invalid code range";
- case FT_Err_Execution_Too_Long : return "execution context too long";
- case FT_Err_Too_Many_Function_Defs : return "too many function definitions";
- case FT_Err_Too_Many_Instruction_Defs : return "too many instruction definitions";
- case FT_Err_Table_Missing : return "SFNT font table missing";
- case FT_Err_Horiz_Header_Missing : return "horizontal header (hhea) table missing";
- case FT_Err_Locations_Missing : return "locations (loca) table missing";
- case FT_Err_Name_Table_Missing : return "name table missing";
- case FT_Err_CMap_Table_Missing : return "character map (cmap) table missing";
- case FT_Err_Hmtx_Table_Missing : return "horizontal metrics (hmtx) table missing";
- case FT_Err_Post_Table_Missing : return "PostScript (post) table missing";
- case FT_Err_Invalid_Horiz_Metrics : return "invalid horizontal metrics";
- case FT_Err_Invalid_CharMap_Format : return "invalid character map (cmap) format";
- case FT_Err_Invalid_PPem : return "invalid ppem value";
- case FT_Err_Invalid_Vert_Metrics : return "invalid vertical metrics";
- case FT_Err_Could_Not_Find_Context : return "could not find context";
- case FT_Err_Invalid_Post_Table_Format : return "invalid PostScript (post) table format";
- case FT_Err_Invalid_Post_Table : return "invalid PostScript (post) table";
-
- // CCF, CID and Type 1 errors
- case FT_Err_Syntax_Error : return "opcode syntax error";
- case FT_Err_Stack_Underflow : return "argument stack underflow";
- case FT_Err_Ignore : return "ignore";
-
- // BDF errors
- case FT_Err_Missing_Startfont_Field : return "`STARTFONT' field missing";
- case FT_Err_Missing_Font_Field : return "`FONT' field missing";
- case FT_Err_Missing_Size_Field : return "`SIZE' field missing";
- case FT_Err_Missing_Chars_Field : return "`CHARS' field missing";
- case FT_Err_Missing_Startchar_Field : return "`STARTCHAR' field missing";
- case FT_Err_Missing_Encoding_Field : return "`ENCODING' field missing";
- case FT_Err_Missing_Bbx_Field : return "`BBX' field missing";
- }
-
- return "unknown error";
-}
-
-} // namespace priv
-
-} // namespace sf
-
diff --git a/src/SFML/Graphics/FontLoader.hpp b/src/SFML/Graphics/FontLoader.hpp
deleted file mode 100755
index e52d147..0000000
--- a/src/SFML/Graphics/FontLoader.hpp
+++ /dev/null
@@ -1,132 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_FONTLOADER_HPP
-#define SFML_FONTLOADER_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/NonCopyable.hpp>
-#include <SFML/System/Unicode.hpp>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include <string>
-
-
-namespace sf
-{
-class Font;
-
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// FontLoader loads and saves character fonts
-////////////////////////////////////////////////////////////
-class FontLoader : NonCopyable
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get the unique instance of the class
- ///
- /// \return Reference to the FontLoader instance
- ///
- ////////////////////////////////////////////////////////////
- static FontLoader& GetInstance();
-
- ////////////////////////////////////////////////////////////
- /// Load a font from a file
- ///
- /// \param Filename : Path of the font file to load
- /// \param CharSize : Size of characters in bitmap - the bigger, the higher quality
- /// \param Charset : Characters set to generate
- /// \param LoadedFont : Font object to fill up
- ///
- /// \return True if loading was successful
- ///
- ////////////////////////////////////////////////////////////
- bool LoadFontFromFile(const std::string& Filename, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont);
-
- ////////////////////////////////////////////////////////////
- /// Load the font from a file in memory
- ///
- /// \param Data : Pointer to the data to load
- /// \param SizeInBytes : Size of the data, in bytes
- /// \param CharSize : Size of characters in bitmap - the bigger, the higher quality
- /// \param Charset : Characters set to generate
- /// \param LoadedFont : Font object to fill up
- ///
- /// \return True if loading was successful
- ///
- ////////////////////////////////////////////////////////////
- bool LoadFontFromMemory(const char* Data, std::size_t SizeInBytes, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont);
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- FontLoader();
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~FontLoader();
-
- ////////////////////////////////////////////////////////////
- /// Create a bitmap font from a font face and a characters set
- ///
- /// \param FontFace : Font face containing the loaded font
- /// \param CharSize : Size of characters in bitmap
- /// \param Charset : Characters set to generate
- /// \param LoadedFont : Font object to fill up
- ///
- ////////////////////////////////////////////////////////////
- FT_Error CreateBitmapFont(FT_Face FontFace, unsigned int CharSize, const Unicode::UTF32String& Charset, Font& LoadedFont);
-
- ////////////////////////////////////////////////////////////
- /// Get a description from a FT error code
- ///
- /// \param Error : FreeType error code
- ///
- /// \return Error description
- ///
- ////////////////////////////////////////////////////////////
- static std::string GetErrorDesc(FT_Error Error);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- FT_Library myLibrary; ///< Handle to the Freetype library
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_FONTLOADER_HPP
diff --git a/src/SFML/Graphics/GLCheck.cpp b/src/SFML/Graphics/GLCheck.cpp
new file mode 100644
index 0000000..4743c8a
--- /dev/null
+++ b/src/SFML/Graphics/GLCheck.cpp
@@ -0,0 +1,130 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void glCheckError(const char* file, unsigned int line)
+{
+ // Get the last error
+ GLenum errorCode = glGetError();
+
+ if (errorCode != GL_NO_ERROR)
+ {
+ std::string fileString(file);
+ std::string error = "unknown error";
+ std::string description = "no description";
+
+ // Decode the error code
+ switch (errorCode)
+ {
+ case GL_INVALID_ENUM :
+ {
+ error = "GL_INVALID_ENUM";
+ description = "an unacceptable value has been specified for an enumerated argument";
+ break;
+ }
+
+ case GL_INVALID_VALUE :
+ {
+ error = "GL_INVALID_VALUE";
+ description = "a numeric argument is out of range";
+ break;
+ }
+
+ case GL_INVALID_OPERATION :
+ {
+ error = "GL_INVALID_OPERATION";
+ description = "the specified operation is not allowed in the current state";
+ break;
+ }
+
+ case GL_STACK_OVERFLOW :
+ {
+ error = "GL_STACK_OVERFLOW";
+ description = "this command would cause a stack overflow";
+ break;
+ }
+
+ case GL_STACK_UNDERFLOW :
+ {
+ error = "GL_STACK_UNDERFLOW";
+ description = "this command would cause a stack underflow";
+ break;
+ }
+
+ case GL_OUT_OF_MEMORY :
+ {
+ error = "GL_OUT_OF_MEMORY";
+ description = "there is not enough memory left to execute the command";
+ break;
+ }
+
+ case GL_INVALID_FRAMEBUFFER_OPERATION_EXT :
+ {
+ error = "GL_INVALID_FRAMEBUFFER_OPERATION_EXT";
+ description = "the object bound to FRAMEBUFFER_BINDING_EXT is not \"framebuffer complete\"";
+ break;
+ }
+ }
+
+ // Log the error
+ err() << "An internal OpenGL call failed in "
+ << fileString.substr(fileString.find_last_of("\\/") + 1) << " (" << line << ") : "
+ << error << ", " << description
+ << std::endl;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void ensureGlewInit()
+{
+ static bool initialized = false;
+ if (!initialized)
+ {
+ GLenum status = glewInit();
+ if (status == GLEW_OK)
+ {
+ initialized = true;
+ }
+ else
+ {
+ err() << "Failed to initialize GLEW, " << glewGetErrorString(status) << std::endl;
+ }
+ }
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Cocoa/Joystick.cpp b/src/SFML/Graphics/GLCheck.hpp
index f65ac73..72e505e 100755..100644
--- a/src/SFML/Window/Cocoa/Joystick.cpp
+++ b/src/SFML/Graphics/GLCheck.hpp
@@ -1,77 +1,75 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Joystick.hpp>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Initialize the instance and bind it to a physical joystick
-////////////////////////////////////////////////////////////
-void Joystick::Initialize(unsigned int Index)
-{
- // Reset the joystick state
-
- // Initialize the Index-th available joystick
-}
-
-
-////////////////////////////////////////////////////////////
-/// Update the current joystick and return its new state
-////////////////////////////////////////////////////////////
-JoystickState Joystick::UpdateState()
-{
- // Fill a JoystickState instance with the current joystick state
- JoystickState s;
- return s;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the joystick supports the given axis
-////////////////////////////////////////////////////////////
-bool Joystick::HasAxis(Joy::Axis Axis) const
-{
- return false;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of buttons supported by the joystick
-////////////////////////////////////////////////////////////
-unsigned int Joystick::GetButtonsCount() const
-{
- // Return number of supported buttons
- return 0;
-}
-
-} // namespace priv
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_GLCHECK_HPP
+#define SFML_GLCHECK_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <GL/glew.h>
+#include <string>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// Let's define a macro to quickly check every OpenGL API calls
+////////////////////////////////////////////////////////////
+#ifdef SFML_DEBUG
+
+ // In debug mode, perform a test on every OpenGL call
+ #define glCheck(call) ((call), sf::priv::glCheckError(__FILE__, __LINE__))
+
+#else
+
+ // Else, we don't add any overhead
+ #define glCheck(call) (call)
+
+#endif
+
+////////////////////////////////////////////////////////////
+/// \brief Check the last OpenGL error
+///
+/// \param file Source file where the call is located
+/// \param line Line number of the source file where the call is located
+///
+////////////////////////////////////////////////////////////
+void glCheckError(const char* file, unsigned int line);
+
+////////////////////////////////////////////////////////////
+/// \brief Make sure that GLEW is initialized
+///
+////////////////////////////////////////////////////////////
+void ensureGlewInit();
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_GLCHECK_HPP
diff --git a/src/SFML/Graphics/GraphicsContext.cpp b/src/SFML/Graphics/GraphicsContext.cpp
deleted file mode 100755
index edb8b16..0000000
--- a/src/SFML/Graphics/GraphicsContext.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <SFML/Window/Context.hpp>
-
-
-namespace
-{
- ////////////////////////////////////////////////////////////
- // One time initialization of 3rd party libraries.
- // We use a global function with a static boolean rather
- // than directly a global boolean, to avoid the randomness
- // of global variables initializations across compile units.
- ////////////////////////////////////////////////////////////
- void InitGraphicsLibs()
- {
- static bool InitDone = false;
- if (!InitDone)
- {
- // Initialize GLEW
- glewInit();
-
- InitDone = true;
- }
- }
-
-}
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Default constructor, activate the global context
-/// if no other context is bound to the current thread
-////////////////////////////////////////////////////////////
-GraphicsContext::GraphicsContext()
-{
- // Activate the global context
- if (!Context::IsContextActive())
- {
- Context::GetGlobal().SetActive(true);
- myActivated = true;
- }
- else
- {
- myActivated = false;
- }
-
- // Make sure third party libraries are initialized
- InitGraphicsLibs();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor, deactivate the global context
-/// if no other context was previously bound to the current thread
-////////////////////////////////////////////////////////////
-GraphicsContext::~GraphicsContext()
-{
- // Deactivate the global context
- if (myActivated)
- Context::GetGlobal().SetActive(false);
-}
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Graphics/GraphicsContext.hpp b/src/SFML/Graphics/GraphicsContext.hpp
deleted file mode 100755
index 2fa77a3..0000000
--- a/src/SFML/Graphics/GraphicsContext.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_GRAPHICSCONTEXT_HPP
-#define SFML_GRAPHICSCONTEXT_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <SFML/System/NonCopyable.hpp>
-#include <SFML/Graphics/GLEW/glew.h>
-#include <iostream>
-#include <string>
-
-
-namespace sf
-{
-class Context;
-
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// RAII class ensuring a valid shared OpenGL context is bound
-/// to the current thread for all the lifetime of the instance.
-/// It also ensures all third party libraries (like GLEW)
-/// are properly initialized
-/// This class is for internal use only, it is required
-/// to solve tricky problems involving multi-threading
-////////////////////////////////////////////////////////////
-class GraphicsContext : NonCopyable
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor, activate the global context
- /// if no other context is bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- GraphicsContext();
-
- ////////////////////////////////////////////////////////////
- /// Destructor, deactivate the global context
- /// if no other context was previously bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- ~GraphicsContext();
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- bool myActivated; ///< Keep track of the activation state of the global context
-};
-
-} // namespace priv
-
-
-////////////////////////////////////////////////////////////
-/// Let's define a macro to quickly check every OpenGL
-/// API calls
-////////////////////////////////////////////////////////////
-#ifdef SFML_DEBUG
-
- // In debug mode, perform a test on every OpenGL call
- #define GLCheck(Func) ((Func), GLCheckError(__FILE__, __LINE__))
-
-#else
-
- // Else, we don't add any overhead
- #define GLCheck(Func) (Func)
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-/// Check the last OpenGL error
-///
-////////////////////////////////////////////////////////////
-inline void GLCheckError(const std::string& File, unsigned int Line)
-{
- // Get the last error
- GLenum ErrorCode = glGetError();
-
- if (ErrorCode != GL_NO_ERROR)
- {
- std::string Error = "unknown error";
- std::string Desc = "no description";
-
- // Decode the error code
- switch (ErrorCode)
- {
- case GL_INVALID_ENUM :
- {
- Error = "GL_INVALID_ENUM";
- Desc = "an unacceptable value has been specified for an enumerated argument";
- break;
- }
-
- case GL_INVALID_VALUE :
- {
- Error = "GL_INVALID_VALUE";
- Desc = "a numeric argument is out of range";
- break;
- }
-
- case GL_INVALID_OPERATION :
- {
- Error = "GL_INVALID_OPERATION";
- Desc = "the specified operation is not allowed in the current state";
- break;
- }
-
- case GL_STACK_OVERFLOW :
- {
- Error = "GL_STACK_OVERFLOW";
- Desc = "this command would cause a stack overflow";
- break;
- }
-
- case GL_STACK_UNDERFLOW :
- {
- Error = "GL_STACK_UNDERFLOW";
- Desc = "this command would cause a stack underflow";
- break;
- }
-
- case GL_OUT_OF_MEMORY :
- {
- Error = "GL_OUT_OF_MEMORY";
- Desc = "there is not enough memory left to execute the command";
- break;
- }
-
- case GL_INVALID_FRAMEBUFFER_OPERATION_EXT :
- {
- Error = "GL_INVALID_FRAMEBUFFER_OPERATION_EXT";
- Desc = "the object bound to FRAMEBUFFER_BINDING_EXT is not \"framebuffer complete\"";
- break;
- }
- }
-
- // Log the error
- std::cerr << "An internal OpenGL call failed in "
- << File.substr(File.find_last_of("\\/") + 1) << " (" << Line << ") : "
- << Error << ", " << Desc
- << std::endl;
- }
-}
-
-} // namespace sf
-
-
-#endif // SFML_GRAPHICSCONTEXT_HPP
diff --git a/src/SFML/Graphics/Image.cpp b/src/SFML/Graphics/Image.cpp
index 14346fb..50f49ba 100755..100644
--- a/src/SFML/Graphics/Image.cpp
+++ b/src/SFML/Graphics/Image.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,749 +27,286 @@
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Image.hpp>
#include <SFML/Graphics/ImageLoader.hpp>
-#include <SFML/Graphics/RenderWindow.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
+#include <SFML/System/Err.hpp>
#include <algorithm>
-#include <iostream>
-#include <vector>
-#include <string.h>
+#include <cstring>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Image::Image() :
-myWidth (0),
-myHeight (0),
-myTextureWidth (0),
-myTextureHeight (0),
-myTexture (0),
-myIsSmooth (true),
-myNeedTextureUpdate(false),
-myNeedArrayUpdate (false)
+m_size(0, 0)
{
}
////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-Image::Image(const Image& Copy) :
-Resource<Image> (Copy),
-myWidth (Copy.myWidth),
-myHeight (Copy.myHeight),
-myTextureWidth (Copy.myTextureWidth),
-myTextureHeight (Copy.myTextureHeight),
-myTexture (0),
-myIsSmooth (Copy.myIsSmooth),
-myPixels (Copy.myPixels),
-myNeedTextureUpdate(false),
-myNeedArrayUpdate (false)
+void Image::create(unsigned int width, unsigned int height, const Color& color)
{
- CreateTexture();
-}
+ if (width && height)
+ {
+ // Assign the new size
+ m_size.x = width;
+ m_size.y = height;
+ // Resize the pixel buffer
+ m_pixels.resize(width * height * 4);
-////////////////////////////////////////////////////////////
-/// Construct an empty image
-////////////////////////////////////////////////////////////
-Image::Image(unsigned int Width, unsigned int Height, const Color& Col) :
-myWidth (0),
-myHeight (0),
-myTextureWidth (0),
-myTextureHeight (0),
-myTexture (0),
-myIsSmooth (true),
-myNeedTextureUpdate(false),
-myNeedArrayUpdate (false)
-{
- Create(Width, Height, Col);
+ // Fill it with the specified color
+ Uint8* ptr = &m_pixels[0];
+ Uint8* end = ptr + m_pixels.size();
+ while (ptr < end)
+ {
+ *ptr++ = color.r;
+ *ptr++ = color.g;
+ *ptr++ = color.b;
+ *ptr++ = color.a;
+ }
+ }
+ else
+ {
+ // Create an empty image
+ m_size.x = 0;
+ m_size.y = 0;
+ m_pixels.clear();
+ }
}
////////////////////////////////////////////////////////////
-/// Construct the image from pixels in memory
-////////////////////////////////////////////////////////////
-Image::Image(unsigned int Width, unsigned int Height, const Uint8* Data) :
-myWidth (0),
-myHeight (0),
-myTextureWidth (0),
-myTextureHeight (0),
-myTexture (0),
-myIsSmooth (true),
-myNeedTextureUpdate(false),
-myNeedArrayUpdate (false)
+void Image::create(unsigned int width, unsigned int height, const Uint8* pixels)
{
- LoadFromPixels(Width, Height, Data);
+ if (pixels && width && height)
+ {
+ // Assign the new size
+ m_size.x = width;
+ m_size.y = height;
+
+ // Copy the pixels
+ std::size_t size = width * height * 4;
+ m_pixels.resize(size);
+ std::memcpy(&m_pixels[0], pixels, size); // faster than vector::assign
+ }
+ else
+ {
+ // Create an empty image
+ m_size.x = 0;
+ m_size.y = 0;
+ m_pixels.clear();
+ }
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-Image::~Image()
+bool Image::loadFromFile(const std::string& filename)
{
- // Destroy the OpenGL texture
- DestroyTexture();
+ return priv::ImageLoader::getInstance().loadImageFromFile(filename, m_pixels, m_size);
}
////////////////////////////////////////////////////////////
-/// Load the image from a file
-////////////////////////////////////////////////////////////
-bool Image::LoadFromFile(const std::string& Filename)
+bool Image::loadFromMemory(const void* data, std::size_t size)
{
- // Let the image loader load the image into our pixel array
- bool Success = priv::ImageLoader::GetInstance().LoadImageFromFile(Filename, myPixels, myWidth, myHeight);
-
- if (Success)
- {
- // Loading succeeded : we can create the texture
- if (CreateTexture())
- return true;
- }
-
- // Oops... something failed
- Reset();
-
- return false;
+ return priv::ImageLoader::getInstance().loadImageFromMemory(data, size, m_pixels, m_size);
}
////////////////////////////////////////////////////////////
-/// Load the image from a file in memory
-////////////////////////////////////////////////////////////
-bool Image::LoadFromMemory(const char* Data, std::size_t SizeInBytes)
+bool Image::loadFromStream(InputStream& stream)
{
- // Check parameters
- if (!Data || (SizeInBytes == 0))
- {
- std::cerr << "Failed to image font from memory, no data provided" << std::endl;
- return false;
- }
-
- // Let the image loader load the image into our pixel array
- bool Success = priv::ImageLoader::GetInstance().LoadImageFromMemory(Data, SizeInBytes, myPixels, myWidth, myHeight);
-
- if (Success)
- {
- // Loading succeeded : we can create the texture
- if (CreateTexture())
- return true;
- }
-
- // Oops... something failed
- Reset();
-
- return false;
+ return priv::ImageLoader::getInstance().loadImageFromStream(stream, m_pixels, m_size);
}
////////////////////////////////////////////////////////////
-/// Load the image directly from an array of pixels
-////////////////////////////////////////////////////////////
-bool Image::LoadFromPixels(unsigned int Width, unsigned int Height, const Uint8* Data)
+bool Image::saveToFile(const std::string& filename) const
{
- if (Data)
- {
- // Store the texture dimensions
- myWidth = Width;
- myHeight = Height;
-
- // Fill the pixel buffer with the specified raw data
- const Color* Ptr = reinterpret_cast<const Color*>(Data);
- myPixels.assign(Ptr, Ptr + Width * Height);
-
- // We can create the texture
- if (CreateTexture())
- {
- return true;
- }
- else
- {
- // Oops... something failed
- Reset();
- return false;
- }
- }
- else
- {
- // No data provided : create a white image
- return Create(Width, Height, Color(255, 255, 255, 255));
- }
+ return priv::ImageLoader::getInstance().saveImageToFile(filename, m_pixels, m_size);
}
////////////////////////////////////////////////////////////
-/// Save the content of the image to a file
-////////////////////////////////////////////////////////////
-bool Image::SaveToFile(const std::string& Filename) const
+Vector2u Image::getSize() const
{
- // Check if the array of pixels needs to be updated
- EnsureArrayUpdate();
-
- // Let the image loader save our pixel array into the image
- return priv::ImageLoader::GetInstance().SaveImageToFile(Filename, myPixels, myWidth, myHeight);
+ return m_size;
}
////////////////////////////////////////////////////////////
-/// Create an empty image
-////////////////////////////////////////////////////////////
-bool Image::Create(unsigned int Width, unsigned int Height, Color Col)
+void Image::createMaskFromColor(const Color& color, Uint8 alpha)
{
- // Store the texture dimensions
- myWidth = Width;
- myHeight = Height;
-
- // Recreate the pixel buffer and fill it with the specified color
- myPixels.clear();
- myPixels.resize(Width * Height, Col);
-
- // We can create the texture
- if (CreateTexture())
- {
- return true;
- }
- else
+ // Make sure that the image is not empty
+ if (!m_pixels.empty())
{
- // Oops... something failed
- Reset();
- return false;
+ // Replace the alpha of the pixels that match the transparent color
+ Uint8* ptr = &m_pixels[0];
+ Uint8* end = ptr + m_pixels.size();
+ while (ptr < end)
+ {
+ if ((ptr[0] == color.r) && (ptr[1] == color.g) && (ptr[2] == color.b) && (ptr[3] == color.a))
+ ptr[3] = alpha;
+ ptr += 4;
+ }
}
}
////////////////////////////////////////////////////////////
-/// Create transparency mask from a specified colorkey
-////////////////////////////////////////////////////////////
-void Image::CreateMaskFromColor(Color ColorKey, Uint8 Alpha)
-{
- // Check if the array of pixels needs to be updated
- EnsureArrayUpdate();
-
- // Calculate the new color (old color with no alpha)
- Color NewColor(ColorKey.r, ColorKey.g, ColorKey.b, Alpha);
-
- // Replace the old color by the new one
- std::replace(myPixels.begin(), myPixels.end(), ColorKey, NewColor);
-
- // The texture will need to be updated
- myNeedTextureUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Copy pixels from another image onto this one.
-/// This function does a slow pixel copy and should only
-/// be used at initialization time
-////////////////////////////////////////////////////////////
-void Image::Copy(const Image& Source, unsigned int DestX, unsigned int DestY, const IntRect& SourceRect, bool ApplyAlpha)
+void Image::copy(const Image& source, unsigned int destX, unsigned int destY, const IntRect& sourceRect, bool applyAlpha)
{
- // Make sure both images are valid
- if ((Source.myWidth == 0) || (Source.myHeight == 0) || (myWidth == 0) || (myHeight == 0))
+ // Make sure that both images are valid
+ if ((source.m_size.x == 0) || (source.m_size.y == 0) || (m_size.x == 0) || (m_size.y == 0))
return;
- // Make sure both images have up-to-date arrays
- EnsureArrayUpdate();
- Source.EnsureArrayUpdate();
-
// Adjust the source rectangle
- IntRect SrcRect = SourceRect;
- if (SrcRect.GetWidth() == 0 || (SrcRect.GetHeight() == 0))
+ IntRect srcRect = sourceRect;
+ if (srcRect.width == 0 || (srcRect.height == 0))
{
- SrcRect.Left = 0;
- SrcRect.Top = 0;
- SrcRect.Right = Source.myWidth;
- SrcRect.Bottom = Source.myHeight;
+ srcRect.left = 0;
+ srcRect.top = 0;
+ srcRect.width = source.m_size.x;
+ srcRect.height = source.m_size.y;
}
else
{
- if (SrcRect.Left < 0) SrcRect.Left = 0;
- if (SrcRect.Top < 0) SrcRect.Top = 0;
- if (SrcRect.Right > static_cast<int>(Source.myWidth)) SrcRect.Right = Source.myWidth;
- if (SrcRect.Bottom > static_cast<int>(Source.myHeight)) SrcRect.Bottom = Source.myHeight;
+ if (srcRect.left < 0) srcRect.left = 0;
+ if (srcRect.top < 0) srcRect.top = 0;
+ if (srcRect.width > static_cast<int>(source.m_size.x)) srcRect.width = source.m_size.x;
+ if (srcRect.height > static_cast<int>(source.m_size.y)) srcRect.height = source.m_size.y;
}
// Then find the valid bounds of the destination rectangle
- int Width = SrcRect.GetWidth();
- int Height = SrcRect.GetHeight();
- if (DestX + Width > myWidth) Width = myWidth - DestX;
- if (DestY + Height > myHeight) Height = myHeight - DestY;
+ int width = srcRect.width;
+ int height = srcRect.height;
+ if (destX + width > m_size.x) width = m_size.x - destX;
+ if (destY + height > m_size.y) height = m_size.y - destY;
// Make sure the destination area is valid
- if ((Width <= 0) || (Height <= 0))
+ if ((width <= 0) || (height <= 0))
return;
// Precompute as much as possible
- int Pitch = Width * 4;
- int Rows = Height;
- int SrcStride = Source.myWidth * 4;
- int DstStride = myWidth * 4;
- const Uint8* SrcPixels = Source.GetPixelsPtr() + (SrcRect.Left + SrcRect.Top * Source.myWidth) * 4;
- Uint8* DstPixels = reinterpret_cast<Uint8*>(&myPixels[0]) + (DestX + DestY * myWidth) * 4;
+ int pitch = width * 4;
+ int rows = height;
+ int srcStride = source.m_size.x * 4;
+ int dstStride = m_size.x * 4;
+ const Uint8* srcPixels = &source.m_pixels[0] + (srcRect.left + srcRect.top * source.m_size.x) * 4;
+ Uint8* dstPixels = &m_pixels[0] + (destX + destY * m_size.x) * 4;
// Copy the pixels
- if (ApplyAlpha)
+ if (applyAlpha)
{
// Interpolation using alpha values, pixel by pixel (slower)
- for (int i = 0; i < Rows; ++i)
+ for (int i = 0; i < rows; ++i)
{
- for (int j = 0; j < Width; ++j)
+ for (int j = 0; j < width; ++j)
{
// Get a direct pointer to the components of the current pixel
- const Uint8* Src = SrcPixels + j * 4;
- Uint8* Dst = DstPixels + j * 4;
-
- // Interpolate RGB components using the alpha value of the source pixel
- Uint8 Alpha = Src[3];
- Dst[0] = (Src[0] * Alpha + Dst[0] * (255 - Alpha)) / 255;
- Dst[1] = (Src[1] * Alpha + Dst[1] * (255 - Alpha)) / 255;
- Dst[2] = (Src[2] * Alpha + Dst[2] * (255 - Alpha)) / 255;
+ const Uint8* src = srcPixels + j * 4;
+ Uint8* dst = dstPixels + j * 4;
+
+ // Interpolate RGBA components using the alpha value of the source pixel
+ Uint8 alpha = src[3];
+ dst[0] = (src[0] * alpha + dst[0] * (255 - alpha)) / 255;
+ dst[1] = (src[1] * alpha + dst[1] * (255 - alpha)) / 255;
+ dst[2] = (src[2] * alpha + dst[2] * (255 - alpha)) / 255;
+ dst[3] = alpha + dst[3] * (255 - alpha) / 255;
}
- SrcPixels += SrcStride;
- DstPixels += DstStride;
+ srcPixels += srcStride;
+ dstPixels += dstStride;
}
}
else
{
// Optimized copy ignoring alpha values, row by row (faster)
- for (int i = 0; i < Rows; ++i)
+ for (int i = 0; i < rows; ++i)
{
- memcpy(DstPixels, SrcPixels, Pitch);
- SrcPixels += SrcStride;
- DstPixels += DstStride;
+ std::memcpy(dstPixels, srcPixels, pitch);
+ srcPixels += srcStride;
+ dstPixels += dstStride;
}
}
-
- // The texture will need an update
- myNeedTextureUpdate = true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the image from the current contents of the
-/// given window
-////////////////////////////////////////////////////////////
-bool Image::CopyScreen(RenderWindow& Window, const IntRect& SourceRect)
-{
- // Adjust the source rectangle
- IntRect SrcRect = SourceRect;
- if (SrcRect.GetWidth() == 0 || (SrcRect.GetHeight() == 0))
- {
- SrcRect.Left = 0;
- SrcRect.Top = 0;
- SrcRect.Right = Window.GetWidth();
- SrcRect.Bottom = Window.GetHeight();
- }
- else
- {
- if (SrcRect.Left < 0) SrcRect.Left = 0;
- if (SrcRect.Top < 0) SrcRect.Top = 0;
- if (SrcRect.Right > static_cast<int>(Window.GetWidth())) SrcRect.Right = Window.GetWidth();
- if (SrcRect.Bottom > static_cast<int>(Window.GetHeight())) SrcRect.Bottom = Window.GetHeight();
- }
-
- // Store the texture dimensions
- myWidth = SrcRect.GetWidth();
- myHeight = SrcRect.GetHeight();
-
- // We can then create the texture
- if (Window.SetActive() && CreateTexture())
- {
- GLint PreviousTexture;
- GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture));
-
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- GLCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, SrcRect.Left, SrcRect.Top, myWidth, myHeight));
-
- GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-
- myNeedTextureUpdate = false;
- myNeedArrayUpdate = true;
-
- return true;
- }
- else
- {
- Reset();
- return false;
- }
}
////////////////////////////////////////////////////////////
-/// Change the color of a pixel
-////////////////////////////////////////////////////////////
-void Image::SetPixel(unsigned int X, unsigned int Y, const Color& Col)
+void Image::setPixel(unsigned int x, unsigned int y, const Color& color)
{
- // First check if the array of pixels needs to be updated
- EnsureArrayUpdate();
-
- // Check if pixel is whithin the image bounds
- if ((X >= myWidth) || (Y >= myHeight))
- {
- std::cerr << "Cannot set pixel (" << X << "," << Y << ") for image "
- << "(width = " << myWidth << ", height = " << myHeight << ")" << std::endl;
- return;
- }
-
- myPixels[X + Y * myWidth] = Col;
-
- // The texture will need to be updated
- myNeedTextureUpdate = true;
+ Uint8* pixel = &m_pixels[(x + y * m_size.x) * 4];
+ *pixel++ = color.r;
+ *pixel++ = color.g;
+ *pixel++ = color.b;
+ *pixel++ = color.a;
}
////////////////////////////////////////////////////////////
-/// Get a pixel from the image
-////////////////////////////////////////////////////////////
-const Color& Image::GetPixel(unsigned int X, unsigned int Y) const
+Color Image::getPixel(unsigned int x, unsigned int y) const
{
- // First check if the array of pixels needs to be updated
- EnsureArrayUpdate();
-
- // Check if pixel is whithin the image bounds
- if ((X >= myWidth) || (Y >= myHeight))
- {
- std::cerr << "Cannot get pixel (" << X << "," << Y << ") for image "
- << "(width = " << myWidth << ", height = " << myHeight << ")" << std::endl;
- return Color::Black;
- }
-
- return myPixels[X + Y * myWidth];
+ const Uint8* pixel = &m_pixels[(x + y * m_size.x) * 4];
+ return Color(pixel[0], pixel[1], pixel[2], pixel[3]);
}
////////////////////////////////////////////////////////////
-/// Get a read-only pointer to the array of pixels (RGBA 8 bits integers components)
-/// Array size is GetWidth() x GetHeight() x 4
-/// This pointer becomes invalid if you reload or resize the image
-////////////////////////////////////////////////////////////
-const Uint8* Image::GetPixelsPtr() const
+const Uint8* Image::getPixelsPtr() const
{
- // First check if the array of pixels needs to be updated
- EnsureArrayUpdate();
-
- if (!myPixels.empty())
+ if (!m_pixels.empty())
{
- return reinterpret_cast<const Uint8*>(&myPixels[0]);
+ return &m_pixels[0];
}
else
{
- std::cerr << "Trying to access the pixels of an empty image" << std::endl;
+ err() << "Trying to access the pixels of an empty image" << std::endl;
return NULL;
}
}
////////////////////////////////////////////////////////////
-/// Bind the image for rendering
-////////////////////////////////////////////////////////////
-void Image::Bind() const
+void Image::flipHorizontally()
{
- // First check if the texture needs to be updated
- EnsureTextureUpdate();
-
- // Bind it
- if (myTexture)
+ if (!m_pixels.empty())
{
- GLCheck(glEnable(GL_TEXTURE_2D));
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Enable or disable image smoothing filter
-////////////////////////////////////////////////////////////
-void Image::SetSmooth(bool Smooth)
-{
- if (Smooth != myIsSmooth)
- {
- myIsSmooth = Smooth;
-
- if (myTexture)
- {
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- GLint PreviousTexture;
- GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture));
-
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
-
- GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the width of the image
-////////////////////////////////////////////////////////////
-unsigned int Image::GetWidth() const
-{
- return myWidth;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the height of the image
-////////////////////////////////////////////////////////////
-unsigned int Image::GetHeight() const
-{
- return myHeight;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Tells whether the smooth filtering is enabled or not
-////////////////////////////////////////////////////////////
-bool Image::IsSmooth() const
-{
- return myIsSmooth;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Convert a subrect expressed in pixels, into float
-/// texture coordinates
-////////////////////////////////////////////////////////////
-FloatRect Image::GetTexCoords(const IntRect& Rect) const
-{
- float Width = static_cast<float>(myTextureWidth);
- float Height = static_cast<float>(myTextureHeight);
-
- return FloatRect(Rect.Left / Width,
- Rect.Top / Height,
- Rect.Right / Width,
- Rect.Bottom / Height);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a valid texture size according to hardware support
-////////////////////////////////////////////////////////////
-unsigned int Image::GetValidTextureSize(unsigned int Size)
-{
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- if (glewIsSupported("GL_ARB_texture_non_power_of_two") != 0)
- {
- // If hardware supports NPOT textures, then just return the unmodified size
- return Size;
- }
- else
- {
- // If hardware doesn't support NPOT textures, we calculate the nearest power of two
- unsigned int PowerOfTwo = 1;
- while (PowerOfTwo < Size)
- PowerOfTwo *= 2;
-
- return PowerOfTwo;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator
-////////////////////////////////////////////////////////////
-Image& Image::operator =(const Image& Other)
-{
- Image Temp(Other);
-
- std::swap(myWidth, Temp.myWidth);
- std::swap(myHeight, Temp.myHeight);
- std::swap(myTextureWidth, Temp.myTextureWidth);
- std::swap(myTextureHeight, Temp.myTextureHeight);
- std::swap(myTexture, Temp.myTexture);
- std::swap(myIsSmooth, Temp.myIsSmooth);
- std::swap(myNeedArrayUpdate, Temp.myNeedArrayUpdate);
- std::swap(myNeedTextureUpdate, Temp.myNeedTextureUpdate);
- myPixels.swap(Temp.myPixels);
-
- return *this;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the OpenGL texture
-////////////////////////////////////////////////////////////
-bool Image::CreateTexture()
-{
- // Check if texture parameters are valid before creating it
- if (!myWidth || !myHeight)
- return false;
-
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- // Adjust internal texture dimensions depending on NPOT textures support
- unsigned int TextureWidth = GetValidTextureSize(myWidth);
- unsigned int TextureHeight = GetValidTextureSize(myHeight);
-
- // Check the maximum texture size
- GLint MaxSize;
- GLCheck(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxSize));
- if ((TextureWidth > static_cast<unsigned int>(MaxSize)) || (TextureHeight > static_cast<unsigned int>(MaxSize)))
- {
- std::cerr << "Failed to create image, its internal size is too high (" << TextureWidth << "x" << TextureHeight << ")" << std::endl;
- return false;
- }
-
- // Destroy the previous OpenGL texture if it already exists with another size
- if ((TextureWidth != myTextureWidth) || (TextureHeight != myTextureHeight))
- {
- DestroyTexture();
- myTextureWidth = TextureWidth;
- myTextureHeight = TextureHeight;
- }
-
- // Create the OpenGL texture
- if (!myTexture)
- {
- GLint PreviousTexture;
- GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture));
-
- GLuint Texture = 0;
- GLCheck(glGenTextures(1, &Texture));
- GLCheck(glBindTexture(GL_TEXTURE_2D, Texture));
- GLCheck(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, myTextureWidth, myTextureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
- GLCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, myIsSmooth ? GL_LINEAR : GL_NEAREST));
- myTexture = static_cast<unsigned int>(Texture);
-
- GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
- }
-
- myNeedTextureUpdate = true;
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Make sure the texture in video memory is updated with the
-/// array of pixels
-////////////////////////////////////////////////////////////
-void Image::EnsureTextureUpdate() const
-{
- if (myNeedTextureUpdate)
- {
- // Copy the pixels
- if (myTexture && !myPixels.empty())
+ std::vector<Uint8> before = m_pixels;
+ for (unsigned int y = 0; y < m_size.y; ++y)
{
- GLint PreviousTexture;
- GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture));
-
- // Update the texture with the pixels array in RAM
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- GLCheck(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, myWidth, myHeight, GL_RGBA, GL_UNSIGNED_BYTE, &myPixels[0]));
+ const Uint8* source = &before[y * m_size.x * 4];
+ Uint8* dest = &m_pixels[(y + 1) * m_size.x * 4 - 4];
+ for (unsigned int x = 0; x < m_size.x; ++x)
+ {
+ dest[0] = source[0];
+ dest[1] = source[1];
+ dest[2] = source[2];
+ dest[3] = source[3];
- GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
+ source += 4;
+ dest -= 4;
+ }
}
-
- myNeedTextureUpdate = false;
}
}
////////////////////////////////////////////////////////////
-/// Make sure the array of pixels is updated with the
-/// texture in video memory
-////////////////////////////////////////////////////////////
-void Image::EnsureArrayUpdate() const
+void Image::flipVertically()
{
- if (myNeedArrayUpdate)
+ if (!m_pixels.empty())
{
- // Save the previous texture
- GLint PreviousTexture;
- GLCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture));
-
- // Resize the destination array of pixels
- myPixels.resize(myWidth * myHeight);
-
- if ((myWidth == myTextureWidth) && (myHeight == myTextureHeight))
- {
- // Texture and array have the same size, we can use a direct copy
+ std::vector<Uint8> before = m_pixels;
+ const Uint8* source = &before[m_size.x * (m_size.y - 1) * 4];
+ Uint8* dest = &m_pixels[0];
+ std::size_t rowSize = m_size.x * 4;
- // Copy pixels from texture to array
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- GLCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &myPixels[0]));
- }
- else
+ for (unsigned int y = 0; y < m_size.y; ++y)
{
- // Texture and array don't have the same size, we have to use a slower algorithm
-
- // All the pixels will first be copied to a temporary array
- std::vector<Color> AllPixels(myTextureWidth * myTextureHeight);
- GLCheck(glBindTexture(GL_TEXTURE_2D, myTexture));
- GLCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &AllPixels[0]));
-
- // The we copy the useful pixels from the temporary array to the final one
- const Color* Src = &AllPixels[0];
- Color* Dst = &myPixels[0];
- for (unsigned int i = 0; i < myHeight; ++i)
- {
- std::copy(Src, Src + myWidth, Dst);
- Src += myTextureWidth;
- Dst += myWidth;
- }
+ std::memcpy(dest, source, rowSize);
+ source -= rowSize;
+ dest += rowSize;
}
-
- // Restore the previous texture
- GLCheck(glBindTexture(GL_TEXTURE_2D, PreviousTexture));
-
- myNeedArrayUpdate = false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Reset the image attributes
-////////////////////////////////////////////////////////////
-void Image::Reset()
-{
- DestroyTexture();
-
- myWidth = 0;
- myHeight = 0;
- myTextureWidth = 0;
- myTextureHeight = 0;
- myTexture = 0;
- myIsSmooth = true;
- myNeedTextureUpdate = false;
- myNeedArrayUpdate = false;
- myPixels.clear();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destroy the OpenGL texture
-////////////////////////////////////////////////////////////
-void Image::DestroyTexture()
-{
- // Destroy the internal texture
- if (myTexture)
- {
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- GLuint Texture = static_cast<GLuint>(myTexture);
- GLCheck(glDeleteTextures(1, &Texture));
- myTexture = 0;
- myNeedTextureUpdate = false;
- myNeedArrayUpdate = false;
}
}
diff --git a/src/SFML/Graphics/ImageLoader.cpp b/src/SFML/Graphics/ImageLoader.cpp
index a3f83bf..340c5c8 100755..100644
--- a/src/SFML/Graphics/ImageLoader.cpp
+++ b/src/SFML/Graphics/ImageLoader.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,25 +26,44 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/ImageLoader.hpp>
+#include <SFML/System/InputStream.hpp>
+#include <SFML/System/Err.hpp>
+#include <SFML/Graphics/stb_image/stb_image.h>
+#define STB_IMAGE_WRITE_IMPLEMENTATION
+#include <SFML/Graphics/stb_image/stb_image_write.h>
extern "C"
{
- #include <SFML/Graphics/libjpeg/jpeglib.h>
- #include <SFML/Graphics/libjpeg/jerror.h>
+ #include <jpeglib.h>
+ #include <jerror.h>
}
-#include <SFML/Graphics/libpng/png.h>
-#include <SFML/Graphics/SOIL/SOIL.h>
-#include <iostream>
+#include <cctype>
namespace
{
- ////////////////////////////////////////////////////////////
- /// Error callback for PNG writing
- ////////////////////////////////////////////////////////////
- void PngErrorHandler(png_structp Png, png_const_charp Message)
+ // Convert a string to lower case
+ std::string toLower(std::string str)
{
- std::cerr << "Failed to write PNG image. Reason : " << Message << std::endl;
- longjmp(Png->jmpbuf, 1);
+ for (std::string::iterator i = str.begin(); i != str.end(); ++i)
+ *i = static_cast<char>(std::tolower(*i));
+ return str;
+ }
+
+ // stb_image callbacks that operate on a sf::InputStream
+ int read(void* user, char* data, int size)
+ {
+ sf::InputStream* stream = static_cast<sf::InputStream*>(user);
+ return static_cast<int>(stream->read(data, size));
+ }
+ void skip(void* user, unsigned int size)
+ {
+ sf::InputStream* stream = static_cast<sf::InputStream*>(user);
+ stream->seek(stream->tell() + size);
+ }
+ int eof(void* user)
+ {
+ sf::InputStream* stream = static_cast<sf::InputStream*>(user);
+ return stream->tell() >= stream->getSize();
}
}
@@ -54,9 +73,7 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Get the unique instance of the class
-////////////////////////////////////////////////////////////
-ImageLoader& ImageLoader::GetInstance()
+ImageLoader& ImageLoader::getInstance()
{
static ImageLoader Instance;
@@ -65,8 +82,6 @@ ImageLoader& ImageLoader::GetInstance()
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
ImageLoader::ImageLoader()
{
// Nothing to do
@@ -74,8 +89,6 @@ ImageLoader::ImageLoader()
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
ImageLoader::~ImageLoader()
{
// Nothing to do
@@ -83,36 +96,34 @@ ImageLoader::~ImageLoader()
////////////////////////////////////////////////////////////
-/// Load pixels from an image file
-////////////////////////////////////////////////////////////
-bool ImageLoader::LoadImageFromFile(const std::string& Filename, std::vector<Color>& Pixels, unsigned int& Width, unsigned int& Height)
+bool ImageLoader::loadImageFromFile(const std::string& filename, std::vector<Uint8>& pixels, Vector2u& size)
{
// Clear the array (just in case)
- Pixels.clear();
+ pixels.clear();
// Load the image and get a pointer to the pixels in memory
- int ImgWidth, ImgHeight, ImgChannels;
- unsigned char* PixelsPtr = SOIL_load_image(Filename.c_str(), &ImgWidth, &ImgHeight, &ImgChannels, SOIL_LOAD_RGBA);
+ int width, height, channels;
+ unsigned char* ptr = stbi_load(filename.c_str(), &width, &height, &channels, STBI_rgb_alpha);
- if (PixelsPtr)
+ if (ptr && width && height)
{
// Assign the image properties
- Width = ImgWidth;
- Height = ImgHeight;
+ size.x = width;
+ size.y = height;
// Copy the loaded pixels to the pixel buffer
- Pixels.resize(Width * Height);
- memcpy(&Pixels[0], PixelsPtr, Width * Height * 4);
+ pixels.resize(width * height * 4);
+ memcpy(&pixels[0], ptr, pixels.size());
// Free the loaded pixels (they are now in our own pixel buffer)
- SOIL_free_image_data(PixelsPtr);
+ stbi_image_free(ptr);
return true;
}
else
{
// Error, failed to load the image
- std::cerr << "Failed to load image \"" << Filename << "\". Reason : " << SOIL_last_result() << std::endl;
+ err() << "Failed to load image \"" << filename << "\". Reason : " << stbi_failure_reason() << std::endl;
return false;
}
@@ -120,38 +131,88 @@ bool ImageLoader::LoadImageFromFile(const std::string& Filename, std::vector<Col
////////////////////////////////////////////////////////////
-/// Load pixels from an image file in memory
+bool ImageLoader::loadImageFromMemory(const void* data, std::size_t dataSize, std::vector<Uint8>& pixels, Vector2u& size)
+{
+ // Check input parameters
+ if (data && dataSize)
+ {
+ // Clear the array (just in case)
+ pixels.clear();
+
+ // Load the image and get a pointer to the pixels in memory
+ int width, height, channels;
+ const unsigned char* buffer = static_cast<const unsigned char*>(data);
+ unsigned char* ptr = stbi_load_from_memory(buffer, static_cast<int>(dataSize), &width, &height, &channels, STBI_rgb_alpha);
+
+ if (ptr && width && height)
+ {
+ // Assign the image properties
+ size.x = width;
+ size.y = height;
+
+ // Copy the loaded pixels to the pixel buffer
+ pixels.resize(width * height * 4);
+ memcpy(&pixels[0], ptr, pixels.size());
+
+ // Free the loaded pixels (they are now in our own pixel buffer)
+ stbi_image_free(ptr);
+
+ return true;
+ }
+ else
+ {
+ // Error, failed to load the image
+ err() << "Failed to load image from memory. Reason : " << stbi_failure_reason() << std::endl;
+
+ return false;
+ }
+ }
+ else
+ {
+ err() << "Failed to load image from memory, no data provided" << std::endl;
+ return false;
+ }
+}
+
+
////////////////////////////////////////////////////////////
-bool ImageLoader::LoadImageFromMemory(const char* Data, std::size_t SizeInBytes, std::vector<Color>& Pixels, unsigned int& Width, unsigned int& Height)
+bool ImageLoader::loadImageFromStream(InputStream& stream, std::vector<Uint8>& pixels, Vector2u& size)
{
// Clear the array (just in case)
- Pixels.clear();
+ pixels.clear();
+
+ // Make sure that the stream's reading position is at the beginning
+ stream.seek(0);
+
+ // Setup the stb_image callbacks
+ stbi_io_callbacks callbacks;
+ callbacks.read = &read;
+ callbacks.skip = &skip;
+ callbacks.eof = &eof;
// Load the image and get a pointer to the pixels in memory
- const unsigned char* Buffer = reinterpret_cast<const unsigned char*>(Data);
- int Size = static_cast<int>(SizeInBytes);
- int ImgWidth, ImgHeight, ImgChannels;
- unsigned char* PixelsPtr = SOIL_load_image_from_memory(Buffer, Size, &ImgWidth, &ImgHeight, &ImgChannels, SOIL_LOAD_RGBA);
+ int width, height, channels;
+ unsigned char* ptr = stbi_load_from_callbacks(&callbacks, &stream, &width, &height, &channels, STBI_rgb_alpha);
- if (PixelsPtr)
+ if (ptr && width && height)
{
// Assign the image properties
- Width = ImgWidth;
- Height = ImgHeight;
+ size.x = width;
+ size.y = height;
// Copy the loaded pixels to the pixel buffer
- Pixels.resize(Width * Height);
- memcpy(&Pixels[0], PixelsPtr, Width * Height * 4);
+ pixels.resize(width * height * 4);
+ memcpy(&pixels[0], ptr, pixels.size());
// Free the loaded pixels (they are now in our own pixel buffer)
- SOIL_free_image_data(PixelsPtr);
+ stbi_image_free(ptr);
return true;
}
else
{
// Error, failed to load the image
- std::cerr << "Failed to load image from memory. Reason : " << SOIL_last_result() << std::endl;
+ err() << "Failed to load image from stream. Reason : " << stbi_failure_reason() << std::endl;
return false;
}
@@ -159,170 +220,98 @@ bool ImageLoader::LoadImageFromMemory(const char* Data, std::size_t SizeInBytes,
////////////////////////////////////////////////////////////
-/// Save pixels to an image file
-////////////////////////////////////////////////////////////
-bool ImageLoader::SaveImageToFile(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height)
+bool ImageLoader::saveImageToFile(const std::string& filename, const std::vector<Uint8>& pixels, const Vector2u& size)
{
- // Deduce the image type from its extension
- int Type = -1;
- if (Filename.size() > 3)
+ // Make sure the image is not empty
+ if (!pixels.empty() && (size.x > 0) && (size.y > 0))
{
- std::string Extension = Filename.substr(Filename.size() - 3);
- if (Extension == "bmp" || Extension == "BMP") Type = SOIL_SAVE_TYPE_BMP;
- else if (Extension == "tga" || Extension == "TGA") Type = SOIL_SAVE_TYPE_TGA;
- else if (Extension == "dds" || Extension == "DDS") Type = SOIL_SAVE_TYPE_DDS;
-
- // Special handling for PNG and JPG -- not handled by SOIL
- else if (Extension == "png" || Extension == "PNG") return WritePng(Filename, Pixels, Width, Height);
- else if (Extension == "jpg" || Extension == "JPG") return WriteJpg(Filename, Pixels, Width, Height);
+ // Deduce the image type from its extension
+ if (filename.size() > 3)
+ {
+ // Extract the extension
+ std::string extension = filename.substr(filename.size() - 3);
+
+ if (toLower(extension) == "bmp")
+ {
+ // BMP format
+ if (stbi_write_bmp(filename.c_str(), size.x, size.y, 4, &pixels[0]))
+ return true;
+ }
+ else if (toLower(extension) == "tga")
+ {
+ // TGA format
+ if (stbi_write_tga(filename.c_str(), size.x, size.y, 4, &pixels[0]))
+ return true;
+ }
+ else if(toLower(extension) == "png")
+ {
+ // PNG format
+ if (stbi_write_png(filename.c_str(), size.x, size.y, 4, &pixels[0], 0))
+ return true;
+ }
+ else if (toLower(extension) == "jpg")
+ {
+ // JPG format
+ if (writeJpg(filename, pixels, size.x, size.y))
+ return true;
+ }
+ }
}
- if (Type == -1)
- {
- // Error, incompatible type
- std::cerr << "Failed to save image \"" << Filename << "\". Reason : this image format is not supported" << std::endl;
- return false;
- }
-
- // Finally save the image
- const unsigned char* PixelsPtr = reinterpret_cast<const unsigned char*>(&Pixels[0]);
- if (!SOIL_save_image(Filename.c_str(), Type, static_cast<int>(Width), static_cast<int>(Height), 4, PixelsPtr))
- {
- // Error, failed to save the image
- std::cerr << "Failed to save image \"" << Filename << "\". Reason : " << SOIL_last_result() << std::endl;
- return false;
- }
-
- return true;
+ err() << "Failed to save image \"" << filename << "\"" << std::endl;
+ return false;
}
////////////////////////////////////////////////////////////
-/// Save a JPG image file
-////////////////////////////////////////////////////////////
-bool ImageLoader::WriteJpg(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height)
+bool ImageLoader::writeJpg(const std::string& filename, const std::vector<Uint8>& pixels, unsigned int width, unsigned int height)
{
// Open the file to write in
- FILE* File = fopen(Filename.c_str(), "wb");
- if (!File)
- {
- std::cerr << "Failed to save image file \"" << Filename << "\". Reason : cannot open file" << std::endl;
+ FILE* file = fopen(filename.c_str(), "wb");
+ if (!file)
return false;
- }
// Initialize the error handler
- jpeg_compress_struct CompressInfo;
- jpeg_error_mgr ErrorManager;
- CompressInfo.err = jpeg_std_error(&ErrorManager);
+ jpeg_compress_struct compressInfos;
+ jpeg_error_mgr errorManager;
+ compressInfos.err = jpeg_std_error(&errorManager);
// Initialize all the writing and compression infos
- jpeg_create_compress(&CompressInfo);
- CompressInfo.image_width = Width;
- CompressInfo.image_height = Height;
- CompressInfo.input_components = 3;
- CompressInfo.in_color_space = JCS_RGB;
- jpeg_stdio_dest(&CompressInfo, File);
- jpeg_set_defaults(&CompressInfo);
- jpeg_set_quality(&CompressInfo, 90, TRUE);
+ jpeg_create_compress(&compressInfos);
+ compressInfos.image_width = width;
+ compressInfos.image_height = height;
+ compressInfos.input_components = 3;
+ compressInfos.in_color_space = JCS_RGB;
+ jpeg_stdio_dest(&compressInfos, file);
+ jpeg_set_defaults(&compressInfos);
+ jpeg_set_quality(&compressInfos, 90, TRUE);
// Get rid of the aplha channel
- std::vector<Uint8> PixelsBuffer(Width * Height * 3);
- for (std::size_t i = 0; i < Pixels.size(); ++i)
+ std::vector<Uint8> buffer(width * height * 3);
+ for (std::size_t i = 0; i < width * height; ++i)
{
- PixelsBuffer[i * 3 + 0] = Pixels[i].r;
- PixelsBuffer[i * 3 + 1] = Pixels[i].g;
- PixelsBuffer[i * 3 + 2] = Pixels[i].b;
+ buffer[i * 3 + 0] = pixels[i * 4 + 0];
+ buffer[i * 3 + 1] = pixels[i * 4 + 1];
+ buffer[i * 3 + 2] = pixels[i * 4 + 2];
}
- Uint8* PixelsPtr = &PixelsBuffer[0];
+ Uint8* ptr = &buffer[0];
// Start compression
- jpeg_start_compress(&CompressInfo, TRUE);
+ jpeg_start_compress(&compressInfos, TRUE);
// Write each row of the image
- while (CompressInfo.next_scanline < CompressInfo.image_height)
+ while (compressInfos.next_scanline < compressInfos.image_height)
{
- JSAMPROW RowPointer = PixelsPtr + (CompressInfo.next_scanline * Width * 3);
- jpeg_write_scanlines(&CompressInfo, &RowPointer, 1);
+ JSAMPROW rawPointer = ptr + (compressInfos.next_scanline * width * 3);
+ jpeg_write_scanlines(&compressInfos, &rawPointer, 1);
}
// Finish compression
- jpeg_finish_compress(&CompressInfo);
- jpeg_destroy_compress(&CompressInfo);
+ jpeg_finish_compress(&compressInfos);
+ jpeg_destroy_compress(&compressInfos);
// Close the file
- fclose(File);
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Save a PNG image file
-////////////////////////////////////////////////////////////
-bool ImageLoader::WritePng(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height)
-{
- // Open the file to write in
- FILE* File = fopen(Filename.c_str(), "wb");
- if (!File)
- {
- std::cerr << "Failed to save image file \"" << Filename << "\". Reason : cannot open file" << std::endl;
- return false;
- }
-
- // Create the main PNG structure
- png_structp Png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, &PngErrorHandler, NULL);
- if (!Png)
- {
- fclose(File);
- std::cerr << "Failed to save image file \"" << Filename << "\". Reason : cannot allocate PNG write structure" << std::endl;
- return false;
- }
-
- // Initialize the image informations
- png_infop PngInfo = png_create_info_struct(Png);
- if (!PngInfo)
- {
- fclose(File);
- png_destroy_write_struct(&Png, NULL);
- std::cerr << "Failed to save image file \"" << Filename << "\". Reason : cannot allocate PNG info structure" << std::endl;
- return false;
- }
-
- // For proper error handling...
- if (setjmp(Png->jmpbuf))
- {
- png_destroy_write_struct(&Png, &PngInfo);
- return false;
- }
-
- // Link the file to the PNG structure
- png_init_io(Png, File);
-
- // Set the image informations
- png_set_IHDR(Png, PngInfo, Width, Height, 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
-
- // Write the header
- png_write_info(Png, PngInfo);
-
- // Get the pointers to the pixels rows into an array
- png_byte* PixelsPtr = (png_byte*)&Pixels[0];
- std::vector<png_byte*> RowPointers(Height);
- for (unsigned int i = 0; i < Height; ++i)
- {
- RowPointers[i] = PixelsPtr;
- PixelsPtr += Width * 4;
- }
-
- // Write pixels row by row
- png_set_rows(Png, PngInfo, &RowPointers[0]);
- png_write_png(Png, PngInfo, PNG_TRANSFORM_IDENTITY, NULL);
-
- // Finish writing the file
- png_write_end(Png, PngInfo);
-
- // Cleanup resources
- png_destroy_write_struct(&Png, &PngInfo);
- fclose(File);
+ fclose(file);
return true;
}
diff --git a/src/SFML/Graphics/ImageLoader.hpp b/src/SFML/Graphics/ImageLoader.hpp
index d3a6242..08f652b 100755..100644
--- a/src/SFML/Graphics/ImageLoader.hpp
+++ b/src/SFML/Graphics/ImageLoader.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -28,111 +28,109 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Graphics/Color.hpp>
#include <SFML/System/NonCopyable.hpp>
+#include <SFML/System/Vector2.hpp>
#include <string>
#include <vector>
namespace sf
{
+class InputStream;
+
namespace priv
{
////////////////////////////////////////////////////////////
-/// ImageLoader load and save images from files ;
-/// Supported formats are : bmp, dds, jpg, png, tga, psd
+/// \brief Load/save image files
+///
////////////////////////////////////////////////////////////
class ImageLoader : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Get the unique instance of the class
+ /// \brief Get the unique instance of the class
///
/// \return Reference to the ImageLoader instance
///
////////////////////////////////////////////////////////////
- static ImageLoader& GetInstance();
+ static ImageLoader& getInstance();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load an image from a file on disk
+ ///
+ /// \param filename Path of image file to load
+ /// \param pixels Array of pixels to fill with loaded image
+ /// \param size Size of loaded image, in pixels
+ ///
+ /// \return True if loading was successful
+ ///
+ ////////////////////////////////////////////////////////////
+ bool loadImageFromFile(const std::string& filename, std::vector<Uint8>& pixels, Vector2u& size);
////////////////////////////////////////////////////////////
- /// Load pixels from an image file
+ /// \brief Load an image from a file in memory
///
- /// \param Filename : Path of image file to load
- /// \param Pixels : Array of pixels to fill with loaded image
- /// \param Width : Width of loaded image, in pixels
- /// \param Height : Height of loaded image, in pixels
+ /// \param data Pointer to the file data in memory
+ /// \param dataSize Size of the data to load, in bytes
+ /// \param pixels Array of pixels to fill with loaded image
+ /// \param size Size of loaded image, in pixels
///
/// \return True if loading was successful
///
////////////////////////////////////////////////////////////
- bool LoadImageFromFile(const std::string& Filename, std::vector<Color>& Pixels, unsigned int& Width, unsigned int& Height);
+ bool loadImageFromMemory(const void* data, std::size_t dataSize, std::vector<Uint8>& pixels, Vector2u& size);
////////////////////////////////////////////////////////////
- /// Load pixels from an image file in memory
+ /// \brief Load an image from a custom stream
///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- /// \param Pixels : Array of pixels to fill with loaded image
- /// \param Width : Width of loaded image, in pixels
- /// \param Height : Height of loaded image, in pixels
+ /// \param stream Source stream to read from
+ /// \param pixels Array of pixels to fill with loaded image
+ /// \param size Size of loaded image, in pixels
///
/// \return True if loading was successful
///
////////////////////////////////////////////////////////////
- bool LoadImageFromMemory(const char* Data, std::size_t SizeInBytes, std::vector<Color>& Pixels, unsigned int& Width, unsigned int& Height);
+ bool loadImageFromStream(InputStream& stream, std::vector<Uint8>& pixels, Vector2u& size);
////////////////////////////////////////////////////////////
- /// Save pixels to an image file
+ /// \bref Save an array of pixels as an image file
///
- /// \param Filename : Path of image file to save
- /// \param Pixels : Array of pixels to save to image
- /// \param Width : Width of image to save, in pixels
- /// \param Height : Height of image to save, in pixels
+ /// \param filename Path of image file to save
+ /// \param pixels Array of pixels to save to image
+ /// \param size Size of image to save, in pixels
///
/// \return True if saving was successful
///
////////////////////////////////////////////////////////////
- bool SaveImageToFile(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height);
+ bool saveImageToFile(const std::string& filename, const std::vector<Uint8>& pixels, const Vector2u& size);
private :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
ImageLoader();
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
~ImageLoader();
////////////////////////////////////////////////////////////
- /// Save a JPG image file
- ///
- /// \param Filename : Path of image file to save
- /// \param Pixels : Array of pixels to save to image
- /// \param Width : Width of image to save, in pixels
- /// \param Height : Height of image to save, in pixels
- ///
- /// \return True if saving was successful
- ///
- ////////////////////////////////////////////////////////////
- bool WriteJpg(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height);
-
- ////////////////////////////////////////////////////////////
- /// Save a PNG image file
+ /// \brief Save an image file in JPEG format
///
- /// \param Filename : Path of image file to save
- /// \param Pixels : Array of pixels to save to image
- /// \param Width : Width of image to save, in pixels
- /// \param Height : Height of image to save, in pixels
+ /// \param filename Path of image file to save
+ /// \param pixels Array of pixels to save to image
+ /// \param width Width of image to save, in pixels
+ /// \param height Height of image to save, in pixels
///
/// \return True if saving was successful
///
////////////////////////////////////////////////////////////
- bool WritePng(const std::string& Filename, const std::vector<Color>& Pixels, unsigned int Width, unsigned int Height);
+ bool writeJpg(const std::string& filename, const std::vector<Uint8>& pixels, unsigned int width, unsigned int height);
};
} // namespace priv
diff --git a/src/SFML/Graphics/Makefile b/src/SFML/Graphics/Makefile
deleted file mode 100755
index 4de224d..0000000
--- a/src/SFML/Graphics/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-SRC = $(wildcard *.cpp)
-SRCGLEW = $(wildcard ./GLEW/*.c)
-SRCJPEG = $(wildcard ./libjpeg/*.c)
-SRCPNG = $(wildcard ./libpng/*.c)
-SRCSOIL = $(wildcard ./SOIL/*.c)
-SRCZLIB = $(wildcard ./zlib/*.c)
-OBJ = $(SRC:.cpp=.o)
-OBJGLEW = $(SRCGLEW:.c=.o)
-OBJJPEG = $(SRCJPEG:.c=.o)
-OBJPNG = $(SRCPNG:.c=.o)
-OBJSOIL = $(SRCSOIL:.c=.o)
-OBJZLIB = $(SRCZLIB:.c=.o)
-
-ifeq ($(STATIC), yes)
- LIB = libsfml-graphics-s.a
- LIBNAME = $(LIBPATH)/$(LIB)
- INSTALL =
-else
- LIB = libsfml-graphics.so
- LIBNAME = $(LIBPATH)/$(LIB).$(VERSION)
- INSTALL = && $(LN) $(LNFLAGS) $(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)
-endif
-
-all: $(LIB)
-
-libsfml-graphics-s.a: $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
-
-libsfml-graphics.so: $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB) -lfreetype -lX11 -lGL
-
-$(OBJ): %.o: %.cpp
- $(CPP) -o $@ -c $< $(CFLAGS) -I/usr/include/freetype2
-
-$(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB): %.o: %.c
- $(CC) -o $@ -c $< $(CFLAGSEXT) -DSTBI_FAILURE_USERMSG
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
-
-mrproper: clean
- @rm -rf $(LIBNAME)
-
-install:
- @($(CP) $(LIBNAME) $(DESTLIBDIR) $(INSTALL))
diff --git a/src/SFML/Graphics/PostFX.cpp b/src/SFML/Graphics/PostFX.cpp
deleted file mode 100755
index cc5e698..0000000
--- a/src/SFML/Graphics/PostFX.cpp
+++ /dev/null
@@ -1,506 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/PostFX.hpp>
-#include <SFML/Graphics/RenderWindow.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <fstream>
-#include <iostream>
-#include <set>
-#include <sstream>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-PostFX::PostFX() :
-myShaderProgram(0)
-{
- // No filtering on frame buffer
- myFrameBuffer.SetSmooth(false);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-PostFX::PostFX(const PostFX& Copy) :
-Drawable (Copy),
-myShaderProgram (0),
-myTextures (Copy.myTextures),
-myFragmentShader(Copy.myFragmentShader),
-myFrameBuffer (Copy.myFrameBuffer)
-{
- // No filtering on frame buffer
- myFrameBuffer.SetSmooth(false);
-
- // Create the shaders and the program
- if (Copy.myShaderProgram)
- CreateProgram();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-PostFX::~PostFX()
-{
- // Destroy effect program
- if (myShaderProgram)
- {
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- GLCheck(glDeleteObjectARB(myShaderProgram));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Load the effect from a file
-////////////////////////////////////////////////////////////
-bool PostFX::LoadFromFile(const std::string& Filename)
-{
- // Open the file
- std::ifstream File(Filename.c_str());
- if (!File)
- {
- std::cerr << "Failed to open effect file \"" << Filename << "\"" << std::endl;
- return false;
- }
-
- // Apply the preprocessing pass to the fragment shader code
- myFragmentShader = PreprocessEffect(File);
-
- // Create the shaders and the program
- CreateProgram();
-
- return myShaderProgram != 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Load the effect from a text in memory
-////////////////////////////////////////////////////////////
-bool PostFX::LoadFromMemory(const std::string& Effect)
-{
- // Open a stream and copy the effect code
- std::istringstream Stream(Effect.c_str());
-
- // Apply the preprocessing pass to the fragment shader code
- myFragmentShader = PreprocessEffect(Stream);
-
- // Create the shaders and the program
- CreateProgram();
-
- return myShaderProgram != 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change a parameter of the effect (1 float)
-////////////////////////////////////////////////////////////
-void PostFX::SetParameter(const std::string& Name, float X)
-{
- if (myShaderProgram)
- {
- // Enable program
- GLCheck(glUseProgramObjectARB(myShaderProgram));
-
- // Get parameter location and assign it new values
- GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
- if (Location != -1)
- GLCheck(glUniform1fARB(Location, X));
- else
- std::cerr << "Parameter \"" << Name << "\" not found in post-effect" << std::endl;
-
- // Disable program
- GLCheck(glUseProgramObjectARB(0));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change a parameter of the effect (2 floats)
-////////////////////////////////////////////////////////////
-void PostFX::SetParameter(const std::string& Name, float X, float Y)
-{
- if (myShaderProgram)
- {
- // Enable program
- GLCheck(glUseProgramObjectARB(myShaderProgram));
-
- // Get parameter location and assign it new values
- GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
- if (Location != -1)
- GLCheck(glUniform2fARB(Location, X, Y));
- else
- std::cerr << "Parameter \"" << Name << "\" not found in post-effect" << std::endl;
-
- // Disable program
- GLCheck(glUseProgramObjectARB(0));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change a parameter of the effect (3 floats)
-////////////////////////////////////////////////////////////
-void PostFX::SetParameter(const std::string& Name, float X, float Y, float Z)
-{
- if (myShaderProgram)
- {
- // Enable program
- GLCheck(glUseProgramObjectARB(myShaderProgram));
-
- // Get parameter location and assign it new values
- GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
- if (Location != -1)
- GLCheck(glUniform3fARB(Location, X, Y, Z));
- else
- std::cerr << "Parameter \"" << Name << "\" not found in post-effect" << std::endl;
-
- // Disable program
- GLCheck(glUseProgramObjectARB(0));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change a parameter of the effect (4 floats)
-////////////////////////////////////////////////////////////
-void PostFX::SetParameter(const std::string& Name, float X, float Y, float Z, float W)
-{
- if (myShaderProgram)
- {
- // Enable program
- GLCheck(glUseProgramObjectARB(myShaderProgram));
-
- // Get parameter location and assign it new values
- GLint Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
- if (Location != -1)
- GLCheck(glUniform4fARB(Location, X, Y, Z, W));
- else
- std::cerr << "Parameter \"" << Name << "\" not found in post-effect" << std::endl;
-
- // Disable program
- GLCheck(glUseProgramObjectARB(0));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set a texture parameter
-////////////////////////////////////////////////////////////
-void PostFX::SetTexture(const std::string& Name, Image* Texture)
-{
- // Check that the current texture unit is available
- GLint MaxUnits;
- GLCheck(glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &MaxUnits));
- if (myTextures.size() >= static_cast<std::size_t>(MaxUnits))
- {
- std::cerr << "Impossible to use texture \"" << Name << "\" for post-effect : all available texture units are used" << std::endl;
- return;
- }
-
- // Make sure the given name is a valid variable in the effect
- int Location = glGetUniformLocationARB(myShaderProgram, Name.c_str());
- if (Location == -1)
- {
- std::cerr << "Texture \"" << Name << "\" not found in post-effect" << std::endl;
- return;
- }
-
- // Store the texture for later use
- myTextures[Name] = Texture ? Texture : &myFrameBuffer;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Assignment operator
-////////////////////////////////////////////////////////////
-PostFX& PostFX::operator =(const PostFX& Other)
-{
- PostFX Temp(Other);
-
- std::swap(myShaderProgram, Temp.myShaderProgram);
- std::swap(myTextures, Temp.myTextures);
- std::swap(myFragmentShader, Temp.myFragmentShader);
- std::swap(myFrameBuffer, Temp.myFrameBuffer);
-
- return *this;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Tell whether or not the system supports post-effects
-////////////////////////////////////////////////////////////
-bool PostFX::CanUsePostFX()
-{
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- return glewIsSupported("GL_ARB_shading_language_100") != 0 &&
- glewIsSupported("GL_ARB_shader_objects") != 0 &&
- glewIsSupported("GL_ARB_vertex_shader") != 0 &&
- glewIsSupported("GL_ARB_fragment_shader") != 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see Drawable::Render
-////////////////////////////////////////////////////////////
-void PostFX::Render(RenderTarget& Target) const
-{
- // Check that we have a valid program
- if (!myShaderProgram)
- return;
-
- // Copy the current framebuffer pixels to our frame buffer texture
- // The ugly cast is temporary until PostFx are rewritten :)
- myFrameBuffer.CopyScreen((RenderWindow&)Target);
-
- // Enable program
- GLCheck(glUseProgramObjectARB(myShaderProgram));
-
- // Bind textures
- TextureTable::const_iterator ItTex = myTextures.begin();
- for (std::size_t i = 0; i < myTextures.size(); ++i)
- {
- int Location = glGetUniformLocationARB(myShaderProgram, ItTex->first.c_str());
- GLCheck(glUniform1iARB(Location, static_cast<GLint>(i)));
- GLCheck(glActiveTextureARB(static_cast<GLenum>(GL_TEXTURE0_ARB + i)));
- ItTex->second->Bind();
- ItTex++;
- }
-
- // Compute the texture coordinates (in case the texture is larger than the screen, or flipped)
- IntRect FrameBufferRect(0, 0, myFrameBuffer.GetWidth(), myFrameBuffer.GetHeight());
- FloatRect TexCoords = myFrameBuffer.GetTexCoords(FrameBufferRect);
-
- // Render a fullscreen quad using the effect on our framebuffer
- FloatRect Screen = Target.GetView().GetRect();
- glBegin(GL_QUADS);
- glTexCoord2f(TexCoords.Left, TexCoords.Top); glVertex2f(Screen.Left, Screen.Bottom);
- glTexCoord2f(TexCoords.Right, TexCoords.Top); glVertex2f(Screen.Right, Screen.Bottom);
- glTexCoord2f(TexCoords.Right, TexCoords.Bottom); glVertex2f(Screen.Right, Screen.Top);
- glTexCoord2f(TexCoords.Left, TexCoords.Bottom); glVertex2f(Screen.Left, Screen.Top);
- glEnd();
-
- // Disable program
- GLCheck(glUseProgramObjectARB(0));
-
- // Disable texture units
- for (std::size_t i = 0; i < myTextures.size(); ++i)
- {
- GLCheck(glActiveTextureARB(static_cast<GLenum>(GL_TEXTURE0_ARB + i)));
- GLCheck(glBindTexture(GL_TEXTURE_2D, 0));
- }
- GLCheck(glActiveTextureARB(GL_TEXTURE0_ARB));
-}
-
-
-////////////////////////////////////////////////////////////
-/// Preprocess a SFML effect file
-/// to convert it to a valid GLSL fragment shader
-////////////////////////////////////////////////////////////
-std::string PostFX::PreprocessEffect(std::istream& File)
-{
- // Initialize output string
- std::set<std::string> myTextures;
- std::string Out = "";
-
- // Variable declarations
- std::string Line;
- while (std::getline(File, Line) && (Line.substr(0, 6) != "effect"))
- {
- // Remove the ending '\r', if any
- if (!Line.empty() && (Line[Line.size() - 1] == '\r'))
- Line.erase(Line.size() - 1);
-
- // Skip empty lines
- if (Line == "")
- continue;
-
- // Extract variables type and name and convert them
- std::string Type, Name;
- std::istringstream iss(Line);
- if (!(iss >> Type >> Name))
- {
- std::cerr << "Post-effect error : invalid declaration (should be \"[type][name]\")" << std::endl
- << "> " << Line << std::endl;
- return "";
- }
-
- if (Type == "texture")
- {
- // Textures need some checking and conversion
- if (myTextures.find(Name) != myTextures.end())
- {
- std::cerr << "Post-effect error : texture \"" << Name << "\" already exists" << std::endl;
- return "";
- }
-
- Out += "uniform sampler2D " + Name + ";\n";
- myTextures.insert(Name);
- }
- else
- {
- // Other types are just copied to output with "uniform" prefix
- Out += "uniform " + Type + " " + Name + ";\n";
- }
- }
-
- // Effect code
- Out += "void main()\n";
- while (std::getline(File, Line))
- {
- // Replace any texture lookup "T(" by "texture2D(T, "
- for (std::set<std::string>::const_iterator i = myTextures.begin(); i != myTextures.end(); ++i)
- {
- std::string::size_type Pos = Line.find(*i);
- if (Pos != std::string::npos)
- Line.replace(Pos, i->size() + 1, "texture2D(" + *i + ", ");
- }
-
- // Replace "_in" by "gl_TexCoord[0].xy"
- for (std::string::size_type Pos = Line.find("_in"); Pos != std::string::npos; Pos = Line.find("_in"))
- Line.replace(Pos, 3, "gl_TexCoord[0].xy");
-
- // Replace "_out" by "gl_FragColor"
- for (std::string::size_type Pos = Line.find("_out"); Pos != std::string::npos; Pos = Line.find("_out"))
- Line.replace(Pos, 4, "gl_FragColor");
-
- // Write modified line to output string
- Out += Line + "\n";
- }
-
- return Out;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the program and attach the shaders
-////////////////////////////////////////////////////////////
-void PostFX::CreateProgram()
-{
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- // Check that we can use post-FX !
- if (!CanUsePostFX())
- {
- std::cerr << "Failed to create a PostFX : your system doesn't support effects" << std::endl;
- return;
- }
-
- // Destroy effect program if it was already created
- if (myShaderProgram)
- GLCheck(glDeleteObjectARB(myShaderProgram));
-
- // Define vertex shader source (we provide it directly as it doesn't have to change)
- static const std::string VertexShaderSrc =
- "void main()"
- "{"
- " gl_TexCoord[0] = gl_MultiTexCoord0;"
- " gl_Position = ftransform();"
- "}";
-
- // Create the program
- myShaderProgram = glCreateProgramObjectARB();
-
- // Create the shaders
- GLhandleARB VertexShader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
- GLhandleARB FragmentShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
-
- // Compile them
- const char* VertexSrc = VertexShaderSrc.c_str();
- const char* FragmentSrc = myFragmentShader.c_str();
- GLCheck(glShaderSourceARB(VertexShader, 1, &VertexSrc, NULL));
- GLCheck(glShaderSourceARB(FragmentShader, 1, &FragmentSrc, NULL));
- GLCheck(glCompileShaderARB(VertexShader));
- GLCheck(glCompileShaderARB(FragmentShader));
-
- // Check the compile logs
- GLint Success;
- GLCheck(glGetObjectParameterivARB(VertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &Success));
- if (Success == GL_FALSE)
- {
- char CompileLog[1024];
- GLCheck(glGetInfoLogARB(VertexShader, sizeof(CompileLog), 0, CompileLog));
- std::cerr << "Failed to compile post-effect :" << std::endl
- << CompileLog << std::endl;
- GLCheck(glDeleteObjectARB(VertexShader));
- GLCheck(glDeleteObjectARB(FragmentShader));
- GLCheck(glDeleteObjectARB(myShaderProgram));
- myShaderProgram = 0;
- return;
- }
- GLCheck(glGetObjectParameterivARB(FragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &Success));
- if (Success == GL_FALSE)
- {
- char CompileLog[1024];
- GLCheck(glGetInfoLogARB(FragmentShader, sizeof(CompileLog), 0, CompileLog));
- std::cerr << "Failed to compile post-effect :" << std::endl
- << CompileLog << std::endl;
- GLCheck(glDeleteObjectARB(VertexShader));
- GLCheck(glDeleteObjectARB(FragmentShader));
- GLCheck(glDeleteObjectARB(myShaderProgram));
- myShaderProgram = 0;
- return;
- }
-
- // Attach the shaders to the program
- GLCheck(glAttachObjectARB(myShaderProgram, VertexShader));
- GLCheck(glAttachObjectARB(myShaderProgram, FragmentShader));
-
- // We can now delete the shaders
- GLCheck(glDeleteObjectARB(VertexShader));
- GLCheck(glDeleteObjectARB(FragmentShader));
-
- // Link the program
- GLCheck(glLinkProgramARB(myShaderProgram));
-
- // Get link log
- GLCheck(glGetObjectParameterivARB(myShaderProgram, GL_OBJECT_LINK_STATUS_ARB, &Success));
- if (Success == GL_FALSE)
- {
- // Oops... link errors
- char LinkLog[1024];
- GLCheck(glGetInfoLogARB(myShaderProgram, sizeof(LinkLog), 0, LinkLog));
- std::cerr << "Failed to link post-effect :" << std::endl
- << LinkLog << std::endl;
- GLCheck(glDeleteObjectARB(myShaderProgram));
- myShaderProgram = 0;
- return;
- }
-}
-
-} // namespace sf
diff --git a/src/SFML/Graphics/RectangleShape.cpp b/src/SFML/Graphics/RectangleShape.cpp
new file mode 100644
index 0000000..39154c0
--- /dev/null
+++ b/src/SFML/Graphics/RectangleShape.cpp
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RectangleShape.hpp>
+#include <cmath>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+RectangleShape::RectangleShape(const Vector2f& size)
+{
+ setSize(size);
+}
+
+
+////////////////////////////////////////////////////////////
+void RectangleShape::setSize(const Vector2f& size)
+{
+ m_size = size;
+ update();
+}
+
+
+////////////////////////////////////////////////////////////
+const Vector2f& RectangleShape::getSize() const
+{
+ return m_size;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int RectangleShape::getPointCount() const
+{
+ return 4;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f RectangleShape::getPoint(unsigned int index) const
+{
+ switch (index)
+ {
+ default:
+ case 0: return Vector2f(0, 0);
+ case 1: return Vector2f(m_size.x, 0);
+ case 2: return Vector2f(m_size.x, m_size.y);
+ case 3: return Vector2f(0, m_size.y);
+ }
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderStates.cpp b/src/SFML/Graphics/RenderStates.cpp
new file mode 100644
index 0000000..95ca8c1
--- /dev/null
+++ b/src/SFML/Graphics/RenderStates.cpp
@@ -0,0 +1,98 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderStates.hpp>
+#include <cstddef>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+const RenderStates RenderStates::Default;
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates() :
+blendMode(BlendAlpha),
+transform(),
+texture (NULL),
+shader (NULL)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates(const Transform& theTransform) :
+blendMode(BlendAlpha),
+transform(theTransform),
+texture (NULL),
+shader (NULL)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates(BlendMode theBlendMode) :
+blendMode(theBlendMode),
+transform(),
+texture (NULL),
+shader (NULL)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates(const Texture* theTexture) :
+blendMode(BlendAlpha),
+transform(),
+texture (theTexture),
+shader (NULL)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates(const Shader* theShader) :
+blendMode(BlendAlpha),
+transform(),
+texture (NULL),
+shader (theShader)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+RenderStates::RenderStates(BlendMode theBlendMode, const Transform& theTransform,
+ const Texture* theTexture, const Shader* theShader) :
+blendMode(theBlendMode),
+transform(theTransform),
+texture (theTexture),
+shader (theShader)
+{
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderTarget.cpp b/src/SFML/Graphics/RenderTarget.cpp
index 2dca866..a2316cf 100755..100644
--- a/src/SFML/Graphics/RenderTarget.cpp
+++ b/src/SFML/Graphics/RenderTarget.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,165 +27,429 @@
////////////////////////////////////////////////////////////
#include <SFML/Graphics/RenderTarget.hpp>
#include <SFML/Graphics/Drawable.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
+#include <SFML/Graphics/Shader.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/VertexArray.hpp>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/System/Err.hpp>
#include <iostream>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
RenderTarget::RenderTarget() :
-myCurrentView (&myDefaultView),
-myPreserveStates(false),
-myIsDrawing (false)
+m_defaultView(),
+m_view (),
+m_cache ()
{
+ m_cache.glStatesSet = false;
+}
+
+////////////////////////////////////////////////////////////
+RenderTarget::~RenderTarget()
+{
}
////////////////////////////////////////////////////////////
-/// Destructor
+void RenderTarget::clear(const Color& color)
+{
+ if (activate(true))
+ {
+ glCheck(glClearColor(color.r / 255.f, color.g / 255.f, color.b / 255.f, color.a / 255.f));
+ glCheck(glClear(GL_COLOR_BUFFER_BIT));
+ }
+}
+
+
////////////////////////////////////////////////////////////
-RenderTarget::~RenderTarget()
+void RenderTarget::setView(const View& view)
+{
+ m_view = view;
+ m_cache.viewChanged = true;
+}
+
+
+////////////////////////////////////////////////////////////
+const View& RenderTarget::getView() const
{
- // Nothing to do
+ return m_view;
}
////////////////////////////////////////////////////////////
-/// Clear the entire target with a single color
+const View& RenderTarget::getDefaultView() const
+{
+ return m_defaultView;
+}
+
+
////////////////////////////////////////////////////////////
-void RenderTarget::Clear(const Color& FillColor)
+IntRect RenderTarget::getViewport(const View& view) const
{
- if (Activate(true))
- {
- // Clear the frame buffer
- GLCheck(glClearColor(FillColor.r / 255.f, FillColor.g / 255.f, FillColor.b / 255.f, FillColor.a / 255.f));
- GLCheck(glClear(GL_COLOR_BUFFER_BIT));
+ float width = static_cast<float>(getSize().x);
+ float height = static_cast<float>(getSize().y);
+ const FloatRect& viewport = view.getViewport();
- Activate(false);
- }
+ return IntRect(static_cast<int>(0.5f + width * viewport.left),
+ static_cast<int>(0.5f + height * viewport.top),
+ static_cast<int>(width * viewport.width),
+ static_cast<int>(height * viewport.height));
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f RenderTarget::mapPixelToCoords(const Vector2i& point) const
+{
+ return mapPixelToCoords(point, getView());
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f RenderTarget::mapPixelToCoords(const Vector2i& point, const View& view) const
+{
+ // First, convert from viewport coordinates to homogeneous coordinates
+ Vector2f normalized;
+ IntRect viewport = getViewport(view);
+ normalized.x = -1.f + 2.f * (point.x - viewport.left) / viewport.width;
+ normalized.y = 1.f - 2.f * (point.y - viewport.top) / viewport.height;
+
+ // Then transform by the inverse of the view matrix
+ return view.getInverseTransform().transformPoint(normalized);
}
+////////////////////////////////////////////////////////////
+Vector2i RenderTarget::mapCoordsToPixel(const Vector2f& point) const
+{
+ return mapCoordsToPixel(point, getView());
+}
+
+////////////////////////////////////////////////////////////
+Vector2i RenderTarget::mapCoordsToPixel(const Vector2f& point, const View& view) const
+{
+ // First, transform the point by the view matrix
+ Vector2f normalized = view.getTransform().transformPoint(point);
+
+ // Then convert to viewport coordinates
+ Vector2i pixel;
+ IntRect viewport = getViewport(view);
+ pixel.x = static_cast<int>(( normalized.x + 1.f) / 2.f * viewport.width + viewport.left);
+ pixel.y = static_cast<int>((-normalized.y + 1.f) / 2.f * viewport.height + viewport.top);
+
+ return pixel;
+}
////////////////////////////////////////////////////////////
-/// Draw something on the window
+void RenderTarget::draw(const Drawable& drawable, const RenderStates& states)
+{
+ drawable.draw(*this, states);
+}
+
+
////////////////////////////////////////////////////////////
-void RenderTarget::Draw(const Drawable& Object)
+void RenderTarget::draw(const Vertex* vertices, unsigned int vertexCount,
+ PrimitiveType type, const RenderStates& states)
{
- // Check whether we are called from the outside or from a previous call to Draw
- if (!myIsDrawing)
+ // Nothing to draw?
+ if (!vertices || (vertexCount == 0))
+ return;
+
+ if (activate(true))
{
- myIsDrawing = true;
+ // First set the persistent OpenGL states if it's the very first call
+ if (!m_cache.glStatesSet)
+ resetGLStates();
- // Set our target as the current target for rendering
- if (Activate(true))
+ // Check if the vertex count is low enough so that we can pre-transform them
+ bool useVertexCache = (vertexCount <= StatesCache::VertexCacheSize);
+ if (useVertexCache)
{
- // Save the current render states and set the SFML ones
- if (myPreserveStates)
+ // Pre-transform the vertices and store them into the vertex cache
+ for (unsigned int i = 0; i < vertexCount; ++i)
{
- GLCheck(glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT |
- GL_TEXTURE_BIT | GL_TRANSFORM_BIT | GL_VIEWPORT_BIT));
- GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glPushMatrix());
- GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glPushMatrix());
- SetRenderStates();
+ Vertex& vertex = m_cache.vertexCache[i];
+ vertex.position = states.transform * vertices[i].position;
+ vertex.color = vertices[i].color;
+ vertex.texCoords = vertices[i].texCoords;
}
- // Set the window viewport and transform matrices
- GLCheck(glViewport(0, 0, GetWidth(), GetHeight()));
- GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glLoadMatrixf(myCurrentView->GetMatrix().Get4x4Elements()));
- GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glLoadIdentity());
+ // Since vertices are transformed, we must use an identity transform to render them
+ if (!m_cache.useVertexCache)
+ applyTransform(Transform::Identity);
+ }
+ else
+ {
+ applyTransform(states.transform);
+ }
- // Let the object draw itself
- Object.Draw(*this);
+ // Apply the view
+ if (m_cache.viewChanged)
+ applyCurrentView();
- // Restore render states
- if (myPreserveStates)
- {
- GLCheck(glMatrixMode(GL_PROJECTION)); GLCheck(glPopMatrix());
- GLCheck(glMatrixMode(GL_MODELVIEW)); GLCheck(glPopMatrix());
- GLCheck(glPopAttrib());
- }
+ // Apply the blend mode
+ if (states.blendMode != m_cache.lastBlendMode)
+ applyBlendMode(states.blendMode);
+
+ // Apply the texture
+ Uint64 textureId = states.texture ? states.texture->m_cacheId : 0;
+ if (textureId != m_cache.lastTextureId)
+ applyTexture(states.texture);
+
+ // Apply the shader
+ if (states.shader)
+ applyShader(states.shader);
- // Deactivate rendering on this target
- Activate(false);
+ // If we pre-transform the vertices, we must use our internal vertex cache
+ if (useVertexCache)
+ {
+ // ... and if we already used it previously, we don't need to set the pointers again
+ if (!m_cache.useVertexCache)
+ vertices = m_cache.vertexCache;
+ else
+ vertices = NULL;
+ }
+
+ // Setup the pointers to the vertices' components
+ if (vertices)
+ {
+ const char* data = reinterpret_cast<const char*>(vertices);
+ glCheck(glVertexPointer(2, GL_FLOAT, sizeof(Vertex), data + 0));
+ glCheck(glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), data + 8));
+ glCheck(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), data + 12));
}
- myIsDrawing = false;
+ // Find the OpenGL primitive type
+ static const GLenum modes[] = {GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_TRIANGLES,
+ GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS};
+ GLenum mode = modes[type];
+
+ // Draw the primitives
+ glCheck(glDrawArrays(mode, 0, vertexCount));
+
+ // Unbind the shader, if any
+ if (states.shader)
+ applyShader(NULL);
+
+ // Update the cache
+ m_cache.useVertexCache = useVertexCache;
}
- else
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTarget::pushGLStates()
+{
+ if (activate(true))
{
- // We are already called from a previous Draw : we don't need to set the states again, just draw the object
- Object.Draw(*this);
+#ifdef SFML_DEBUG
+ // make sure that the user didn't leave an unchecked OpenGL error
+ GLenum error = glGetError();
+ if (error != GL_NO_ERROR)
+ {
+ err() << "OpenGL error (" << error << ") detected in user code, "
+ << "you should check for errors with glGetError()"
+ << std::endl;
+ }
+#endif
+
+ glCheck(glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS));
+ glCheck(glPushAttrib(GL_ALL_ATTRIB_BITS));
+ glCheck(glMatrixMode(GL_MODELVIEW));
+ glCheck(glPushMatrix());
+ glCheck(glMatrixMode(GL_PROJECTION));
+ glCheck(glPushMatrix());
+ glCheck(glMatrixMode(GL_TEXTURE));
+ glCheck(glPushMatrix());
}
+
+ resetGLStates();
}
////////////////////////////////////////////////////////////
-/// Change the current active view
-////////////////////////////////////////////////////////////
-void RenderTarget::SetView(const View& NewView)
+void RenderTarget::popGLStates()
{
- myCurrentView = &NewView;
+ if (activate(true))
+ {
+ glCheck(glMatrixMode(GL_PROJECTION));
+ glCheck(glPopMatrix());
+ glCheck(glMatrixMode(GL_MODELVIEW));
+ glCheck(glPopMatrix());
+ glCheck(glMatrixMode(GL_TEXTURE));
+ glCheck(glPopMatrix());
+ glCheck(glPopClientAttrib());
+ glCheck(glPopAttrib());
+ }
}
////////////////////////////////////////////////////////////
-/// Get the current view
-////////////////////////////////////////////////////////////
-const View& RenderTarget::GetView() const
+void RenderTarget::resetGLStates()
{
- return *myCurrentView;
+ if (activate(true))
+ {
+ // Make sure that GLEW is initialized
+ priv::ensureGlewInit();
+
+ // Define the default OpenGL states
+ glCheck(glDisable(GL_CULL_FACE));
+ glCheck(glDisable(GL_LIGHTING));
+ glCheck(glDisable(GL_DEPTH_TEST));
+ glCheck(glDisable(GL_ALPHA_TEST));
+ glCheck(glEnable(GL_TEXTURE_2D));
+ glCheck(glEnable(GL_BLEND));
+ glCheck(glMatrixMode(GL_MODELVIEW));
+ glCheck(glEnableClientState(GL_VERTEX_ARRAY));
+ glCheck(glEnableClientState(GL_COLOR_ARRAY));
+ glCheck(glEnableClientState(GL_TEXTURE_COORD_ARRAY));
+ m_cache.glStatesSet = true;
+
+ // Apply the default SFML states
+ applyBlendMode(BlendAlpha);
+ applyTransform(Transform::Identity);
+ applyTexture(NULL);
+ if (Shader::isAvailable())
+ applyShader(NULL);
+ m_cache.useVertexCache = false;
+
+ // Set the default view
+ setView(getView());
+ }
}
////////////////////////////////////////////////////////////
-/// Get the default view of the window for read / write
-////////////////////////////////////////////////////////////
-View& RenderTarget::GetDefaultView()
+void RenderTarget::initialize()
{
- return myDefaultView;
+ // Setup the default and current views
+ m_defaultView.reset(FloatRect(0, 0, static_cast<float>(getSize().x), static_cast<float>(getSize().y)));
+ m_view = m_defaultView;
+
+ // Set GL states only on first draw, so that we don't pollute user's states
+ m_cache.glStatesSet = false;
}
////////////////////////////////////////////////////////////
-/// Tell SFML to preserve external OpenGL states, at the expense of
-/// more CPU charge. Use this function if you don't want SFML
-/// to mess up your own OpenGL states (if any).
-/// Don't enable state preservation if not needed, as it will allow
-/// SFML to do internal optimizations and improve performances.
-/// This parameter is false by default
+void RenderTarget::applyCurrentView()
+{
+ // Set the viewport
+ IntRect viewport = getViewport(m_view);
+ int top = getSize().y - (viewport.top + viewport.height);
+ glCheck(glViewport(viewport.left, top, viewport.width, viewport.height));
+
+ // Set the projection matrix
+ glCheck(glMatrixMode(GL_PROJECTION));
+ glCheck(glLoadMatrixf(m_view.getTransform().getMatrix()));
+
+ // Go back to model-view mode
+ glCheck(glMatrixMode(GL_MODELVIEW));
+
+ m_cache.viewChanged = false;
+}
+
+
////////////////////////////////////////////////////////////
-void RenderTarget::PreserveOpenGLStates(bool Preserve)
+void RenderTarget::applyBlendMode(BlendMode mode)
{
- myPreserveStates = Preserve;
+ switch (mode)
+ {
+ // glBlendFuncSeparateEXT is used when available to avoid an incorrect alpha value when the target
+ // is a RenderTexture -- in this case the alpha value must be written directly to the target buffer
+
+ // Alpha blending
+ default :
+ case BlendAlpha :
+ if (GLEW_EXT_blend_func_separate)
+ glCheck(glBlendFuncSeparateEXT(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
+ else
+ glCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ break;
+
+ // Additive blending
+ case BlendAdd :
+ if (GLEW_EXT_blend_func_separate)
+ glCheck(glBlendFuncSeparateEXT(GL_SRC_ALPHA, GL_ONE, GL_ONE, GL_ONE));
+ else
+ glCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE));
+ break;
+
+ // Multiplicative blending
+ case BlendMultiply :
+ glCheck(glBlendFunc(GL_DST_COLOR, GL_ZERO));
+ break;
+
+ // No blending
+ case BlendNone :
+ glCheck(glBlendFunc(GL_ONE, GL_ZERO));
+ break;
+ }
+
+ m_cache.lastBlendMode = mode;
}
////////////////////////////////////////////////////////////
-/// Called by the derived class when it's ready to be initialized
+void RenderTarget::applyTransform(const Transform& transform)
+{
+ // No need to call glMatrixMode(GL_MODELVIEW), it is always the
+ // current mode (for optimization purpose, since it's the most used)
+ glCheck(glLoadMatrixf(transform.getMatrix()));
+}
+
+
////////////////////////////////////////////////////////////
-void RenderTarget::Initialize()
+void RenderTarget::applyTexture(const Texture* texture)
{
- // Set the default rendering states
- SetRenderStates();
+ Texture::bind(texture, Texture::Pixels);
- // Setup the default view
- myDefaultView.SetFromRect(FloatRect(0, 0, static_cast<float>(GetWidth()), static_cast<float>(GetHeight())));
- SetView(myDefaultView);
+ m_cache.lastTextureId = texture ? texture->m_cacheId : 0;
}
////////////////////////////////////////////////////////////
-/// Set the OpenGL render states needed for the SFML rendering
-////////////////////////////////////////////////////////////
-void RenderTarget::SetRenderStates()
+void RenderTarget::applyShader(const Shader* shader)
{
- GLCheck(glDisable(GL_ALPHA_TEST));
- GLCheck(glDisable(GL_DEPTH_TEST));
- GLCheck(glDisable(GL_LIGHTING));
+ Shader::bind(shader);
}
} // namespace sf
+
+
+////////////////////////////////////////////////////////////
+// Render states caching strategies
+//
+// * View
+// If SetView was called since last draw, the projection
+// matrix is updated. We don't need more, the view doesn't
+// change frequently.
+//
+// * Transform
+// The transform matrix is usually expensive because each
+// entity will most likely use a different transform. This can
+// lead, in worst case, to changing it every 4 vertices.
+// To avoid that, when the vertex count is low enough, we
+// pre-transform them and therefore use an identity transform
+// to render them.
+//
+// * Blending mode
+// It's a simple integral value, so we can easily check
+// whether the value to apply is the same as before or not.
+//
+// * Texture
+// Storing the pointer or OpenGL ID of the last used texture
+// is not enough; if the sf::Texture instance is destroyed,
+// both the pointer and the OpenGL ID might be recycled in
+// a new texture instance. We need to use our own unique
+// identifier system to ensure consistent caching.
+//
+// * Shader
+// Shaders are very hard to optimize, because they have
+// parameters that can be hard (if not impossible) to track,
+// like matrices or textures. The only optimization that we
+// do is that we avoid setting a null shader if there was
+// already none for the previous draw.
+//
+////////////////////////////////////////////////////////////
diff --git a/src/SFML/Graphics/RenderTexture.cpp b/src/SFML/Graphics/RenderTexture.cpp
new file mode 100644
index 0000000..845b0b6
--- /dev/null
+++ b/src/SFML/Graphics/RenderTexture.cpp
@@ -0,0 +1,155 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTexture.hpp>
+#include <SFML/Graphics/RenderTextureImplFBO.hpp>
+#include <SFML/Graphics/RenderTextureImplDefault.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+RenderTexture::RenderTexture() :
+m_impl(NULL)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+RenderTexture::~RenderTexture()
+{
+ delete m_impl;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTexture::create(unsigned int width, unsigned int height, bool depthBuffer)
+{
+ // Create the texture
+ if (!m_texture.create(width, height))
+ {
+ err() << "Impossible to create render texture (failed to create the target texture)" << std::endl;
+ return false;
+ }
+
+ // We disable smoothing by default for render textures
+ setSmooth(false);
+
+ // Create the implementation
+ delete m_impl;
+ if (priv::RenderTextureImplFBO::isAvailable())
+ {
+ // Use frame-buffer object (FBO)
+ m_impl = new priv::RenderTextureImplFBO;
+ }
+ else
+ {
+ // Use default implementation
+ m_impl = new priv::RenderTextureImplDefault;
+ }
+
+ // Initialize the render texture
+ if (!m_impl->create(width, height, m_texture.m_texture, depthBuffer))
+ return false;
+
+ // We can now initialize the render target part
+ RenderTarget::initialize();
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTexture::setSmooth(bool smooth)
+{
+ m_texture.setSmooth(smooth);
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTexture::isSmooth() const
+{
+ return m_texture.isSmooth();
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTexture::setRepeated(bool repeated)
+{
+ m_texture.setRepeated(repeated);
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTexture::isRepeated() const
+{
+ return m_texture.isRepeated();
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTexture::setActive(bool active)
+{
+ return m_impl && m_impl->activate(active);
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTexture::display()
+{
+ // Update the target texture
+ if (setActive(true))
+ {
+ m_impl->updateTexture(m_texture.m_texture);
+ m_texture.m_pixelsFlipped = true;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2u RenderTexture::getSize() const
+{
+ return m_texture.getSize();
+}
+
+
+////////////////////////////////////////////////////////////
+const Texture& RenderTexture::getTexture() const
+{
+ return m_texture;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTexture::activate(bool active)
+{
+ return setActive(active);
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderTextureImpl.cpp b/src/SFML/Graphics/RenderTextureImpl.cpp
new file mode 100644
index 0000000..cf26dbe
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImpl.cpp
@@ -0,0 +1,43 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTextureImpl.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+RenderTextureImpl::~RenderTextureImpl()
+{
+ // Nothing to do
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderTextureImpl.hpp b/src/SFML/Graphics/RenderTextureImpl.hpp
new file mode 100644
index 0000000..f9402c4
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImpl.hpp
@@ -0,0 +1,89 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RENDERTEXTUREIMPL_HPP
+#define SFML_RENDERTEXTUREIMPL_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Abstract base class for render-texture implementations
+///
+////////////////////////////////////////////////////////////
+class RenderTextureImpl : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~RenderTextureImpl();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the render texture implementation
+ ///
+ /// \param width Width of the texture to render to
+ /// \param height Height of the texture to render to
+ /// \param textureId OpenGL identifier of the target texture
+ /// \param depthBuffer Is a depth buffer requested?
+ ///
+ /// \return True if creation has been successful
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool create(unsigned int width, unsigned int height, unsigned int textureId, bool depthBuffer) = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate or deactivate the render texture for rendering
+ ///
+ /// \param active True to activate, false to deactivate
+ ///
+ /// \return True on success, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool activate(bool active) = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the pixels of the target texture
+ ///
+ /// \param textureId OpenGL identifier of the target texture
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void updateTexture(unsigned int textureId) = 0;
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_RENDERTEXTUREIMPL_HPP
diff --git a/src/SFML/Graphics/RenderTextureImplDefault.cpp b/src/SFML/Graphics/RenderTextureImplDefault.cpp
new file mode 100644
index 0000000..aeb6dc0
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImplDefault.cpp
@@ -0,0 +1,91 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTextureImplDefault.hpp>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/Graphics/TextureSaver.hpp>
+#include <SFML/Window/Context.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+RenderTextureImplDefault::RenderTextureImplDefault() :
+m_context(0),
+m_width (0),
+m_height (0)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+RenderTextureImplDefault::~RenderTextureImplDefault()
+{
+ // Destroy the context
+ delete m_context;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTextureImplDefault::create(unsigned int width, unsigned int height, unsigned int, bool depthBuffer)
+{
+ // Store the dimensions
+ m_width = width;
+ m_height = height;
+
+ // Create the in-memory OpenGL context
+ m_context = new Context(ContextSettings(depthBuffer ? 32 : 0), width, height);
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTextureImplDefault::activate(bool active)
+{
+ return m_context->setActive(active);
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTextureImplDefault::updateTexture(unsigned int textureId)
+{
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Copy the rendered pixels to the texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, textureId));
+ glCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, m_width, m_height));
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderTextureImplDefault.hpp b/src/SFML/Graphics/RenderTextureImplDefault.hpp
new file mode 100644
index 0000000..8e321f6
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImplDefault.hpp
@@ -0,0 +1,107 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RENDERTEXTUREIMPLDEFAULT_HPP
+#define SFML_RENDERTEXTUREIMPLDEFAULT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTextureImpl.hpp>
+#include <SFML/Window/GlResource.hpp>
+#include <SFML/Window/Context.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Default specialization of RenderTextureImpl,
+/// using a in-memory context
+///
+////////////////////////////////////////////////////////////
+class RenderTextureImplDefault : public RenderTextureImpl, GlResource
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderTextureImplDefault();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~RenderTextureImplDefault();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the render texture implementation
+ ///
+ /// \param width Width of the texture to render to
+ /// \param height Height of the texture to render to
+ /// \param textureId OpenGL identifier of the target texture
+ /// \param depthBuffer Is a depth buffer requested?
+ ///
+ /// \return True if creation has been successful
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool create(unsigned int width, unsigned int height, unsigned int textureId, bool depthBuffer);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate or deactivate the render texture for rendering
+ ///
+ /// \param active True to activate, false to deactivate
+ ///
+ /// \return True on success, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool activate(bool active);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the pixels of the target texture
+ ///
+ /// \param textureId OpenGL identifier of the target texture
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void updateTexture(unsigned textureId);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Context* m_context; ///< P-Buffer based context
+ unsigned int m_width; ///< Width of the P-Buffer
+ unsigned int m_height; ///< Height of the P-Buffer
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_RENDERTEXTUREIMPLDEFAULT_HPP
diff --git a/src/SFML/Graphics/RenderTextureImplFBO.cpp b/src/SFML/Graphics/RenderTextureImplFBO.cpp
new file mode 100644
index 0000000..0e92e0e
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImplFBO.cpp
@@ -0,0 +1,146 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTextureImplFBO.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+RenderTextureImplFBO::RenderTextureImplFBO() :
+m_frameBuffer(0),
+m_depthBuffer(0)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+RenderTextureImplFBO::~RenderTextureImplFBO()
+{
+ ensureGlContext();
+
+ // Destroy the depth buffer
+ if (m_depthBuffer)
+ {
+ GLuint depthBuffer = static_cast<GLuint>(m_depthBuffer);
+ glCheck(glDeleteRenderbuffersEXT(1, &depthBuffer));
+ }
+
+ // Destroy the frame buffer
+ if (m_frameBuffer)
+ {
+ GLuint frameBuffer = static_cast<GLuint>(m_frameBuffer);
+ glCheck(glDeleteFramebuffersEXT(1, &frameBuffer));
+ }
+
+ // Delete the context
+ delete m_context;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTextureImplFBO::isAvailable()
+{
+ ensureGlContext();
+
+ // Make sure that GLEW is initialized
+ priv::ensureGlewInit();
+
+ return GLEW_EXT_framebuffer_object != 0;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTextureImplFBO::create(unsigned int width, unsigned int height, unsigned int textureId, bool depthBuffer)
+{
+ // Create the context
+ m_context = new Context;
+
+ // Create the framebuffer object
+ GLuint frameBuffer = 0;
+ glCheck(glGenFramebuffersEXT(1, &frameBuffer));
+ m_frameBuffer = static_cast<unsigned int>(frameBuffer);
+ if (!m_frameBuffer)
+ {
+ err() << "Impossible to create render texture (failed to create the frame buffer object)" << std::endl;
+ return false;
+ }
+ glCheck(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_frameBuffer));
+
+ // Create the depth buffer if requested
+ if (depthBuffer)
+ {
+ GLuint depth = 0;
+ glCheck(glGenRenderbuffersEXT(1, &depth));
+ m_depthBuffer = static_cast<unsigned int>(depth);
+ if (!m_depthBuffer)
+ {
+ err() << "Impossible to create render texture (failed to create the attached depth buffer)" << std::endl;
+ return false;
+ }
+ glCheck(glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, m_depthBuffer));
+ glCheck(glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, width, height));
+ glCheck(glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_depthBuffer));
+ }
+
+ // Link the texture to the frame buffer
+ glCheck(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, textureId, 0));
+
+ // A final check, just to be sure...
+ if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) != GL_FRAMEBUFFER_COMPLETE_EXT)
+ {
+ glCheck(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0));
+ err() << "Impossible to create render texture (failed to link the target texture to the frame buffer)" << std::endl;
+ return false;
+ }
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+bool RenderTextureImplFBO::activate(bool active)
+{
+ return m_context->setActive(active);
+}
+
+
+////////////////////////////////////////////////////////////
+void RenderTextureImplFBO::updateTexture(unsigned int)
+{
+ glFlush();
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Graphics/RenderTextureImplFBO.hpp b/src/SFML/Graphics/RenderTextureImplFBO.hpp
new file mode 100644
index 0000000..200a834
--- /dev/null
+++ b/src/SFML/Graphics/RenderTextureImplFBO.hpp
@@ -0,0 +1,115 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_RENDERTEXTUREIMPLFBO_HPP
+#define SFML_RENDERTEXTUREIMPLFBO_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/RenderTextureImpl.hpp>
+#include <SFML/Window/Context.hpp>
+#include <SFML/Window/GlResource.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Specialization of RenderTextureImpl using the
+/// FrameBuffer Object OpenGL extension
+///
+////////////////////////////////////////////////////////////
+class RenderTextureImplFBO : public RenderTextureImpl, GlResource
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ RenderTextureImplFBO();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~RenderTextureImplFBO();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check whether the system supports FBOs or not
+ ///
+ /// \return True if FBO render textures are supported
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isAvailable();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the render texture implementation
+ ///
+ /// \param width Width of the texture to render to
+ /// \param height Height of the texture to render to
+ /// \param textureId OpenGL identifier of the target texture
+ /// \param depthBuffer Is a depth buffer requested?
+ ///
+ /// \return True if creation has been successful
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool create(unsigned int width, unsigned int height, unsigned int textureId, bool depthBuffer);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate or deactivate the render texture for rendering
+ ///
+ /// \param active True to activate, false to deactivate
+ ///
+ /// \return True on success, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool activate(bool active);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the pixels of the target texture
+ ///
+ /// \param textureId OpenGL identifier of the target texture
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void updateTexture(unsigned textureId);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Context* m_context; ///< Needs a separate OpenGL context for not messing up the other ones
+ unsigned int m_frameBuffer; ///< OpenGL frame buffer object
+ unsigned int m_depthBuffer; ///< Optional depth buffer attached to the frame buffer
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_RENDERTEXTUREIMPLFBO_HPP
diff --git a/src/SFML/Graphics/RenderWindow.cpp b/src/SFML/Graphics/RenderWindow.cpp
index bb1d62c..de9babf 100755..100644
--- a/src/SFML/Graphics/RenderWindow.cpp
+++ b/src/SFML/Graphics/RenderWindow.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,17 +26,12 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/RenderWindow.hpp>
-#include <SFML/Graphics/Drawable.hpp>
-#include <SFML/Graphics/Image.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <iostream>
+#include <SFML/Graphics/GLCheck.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
RenderWindow::RenderWindow()
{
// Nothing to do
@@ -44,26 +39,22 @@ RenderWindow::RenderWindow()
////////////////////////////////////////////////////////////
-/// Construct the window
-////////////////////////////////////////////////////////////
-RenderWindow::RenderWindow(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, const WindowSettings& Params)
+RenderWindow::RenderWindow(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings)
{
- Create(Mode, Title, WindowStyle, Params);
+ // Don't call the base class constructor because it contains virtual function calls
+ create(mode, title, style, settings);
}
////////////////////////////////////////////////////////////
-/// Construct the window from an existing control
-////////////////////////////////////////////////////////////
-RenderWindow::RenderWindow(WindowHandle Handle, const WindowSettings& Params)
+RenderWindow::RenderWindow(WindowHandle handle, const ContextSettings& settings)
{
- Create(Handle, Params);
+ // Don't call the base class constructor because it contains virtual function calls
+ create(handle, settings);
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
RenderWindow::~RenderWindow()
{
// Nothing to do
@@ -71,97 +62,56 @@ RenderWindow::~RenderWindow()
////////////////////////////////////////////////////////////
-/// /see RenderTarget::Activate
-////////////////////////////////////////////////////////////
-bool RenderWindow::Activate(bool Active)
-{
- // For performances and consistency reasons, we only handle activation
- if (Active)
- return SetActive();
- else
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the width of the rendering region of the window
-////////////////////////////////////////////////////////////
-unsigned int RenderWindow::GetWidth() const
+bool RenderWindow::activate(bool active)
{
- return sf::Window::GetWidth();
+ return setActive(active);
}
////////////////////////////////////////////////////////////
-/// Get the height of the rendering region of the window
-////////////////////////////////////////////////////////////
-unsigned int RenderWindow::GetHeight() const
+Vector2u RenderWindow::getSize() const
{
- return sf::Window::GetHeight();
+ return Window::getSize();
}
////////////////////////////////////////////////////////////
-/// Save the content of the window to an image
-////////////////////////////////////////////////////////////
-Image RenderWindow::Capture() const
+Image RenderWindow::capture() const
{
- // Get the window dimensions
- const unsigned int Width = GetWidth();
- const unsigned int Height = GetHeight();
-
- // Set our window as the current target for rendering
- if (SetActive())
- {
- // Make sure we have a valid context
- priv::GraphicsContext Ctx;
-
- // Get pixels from the backbuffer
- std::vector<Uint8> Pixels(Width * Height * 4);
- Uint8* PixelsPtr = &Pixels[0];
- GLCheck(glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, PixelsPtr));
-
- // Flip the pixels
- unsigned int Pitch = Width * 4;
- for (unsigned int y = 0; y < Height / 2; ++y)
- std::swap_ranges(PixelsPtr + y * Pitch, PixelsPtr + (y + 1) * Pitch, PixelsPtr + (Height - y - 1) * Pitch);
-
- // Create an image from the pixel buffer and return it
- return Image(Width, Height, PixelsPtr);
- }
- else
+ Image image;
+ if (setActive())
{
- return Image(Width, Height, Color::White);
+ int width = static_cast<int>(getSize().x);
+ int height = static_cast<int>(getSize().y);
+
+ // copy rows one by one and flip them (OpenGL's origin is bottom while SFML's origin is top)
+ std::vector<Uint8> pixels(width * height * 4);
+ for (int i = 0; i < height; ++i)
+ {
+ Uint8* ptr = &pixels[i * width * 4];
+ glCheck(glReadPixels(0, height - i - 1, width, 1, GL_RGBA, GL_UNSIGNED_BYTE, ptr));
+ }
+
+ image.create(width, height, &pixels[0]);
}
+
+ return image;
}
////////////////////////////////////////////////////////////
-/// Convert a point in window coordinates into view coordinates
-////////////////////////////////////////////////////////////
-sf::Vector2f RenderWindow::ConvertCoords(unsigned int WindowX, unsigned int WindowY, const View* TargetView) const
+void RenderWindow::onCreate()
{
- // Use the current view if none has been passed
- if (!TargetView)
- TargetView = &GetView();
-
- float Left = TargetView->GetCenter().x - TargetView->GetHalfSize().x;
- float Top = TargetView->GetCenter().y - TargetView->GetHalfSize().y;
- float Right = TargetView->GetCenter().x + TargetView->GetHalfSize().x;
- float Bottom = TargetView->GetCenter().y + TargetView->GetHalfSize().y;
-
- return sf::Vector2f(Left + WindowX * (Right - Left) / GetWidth(),
- Top + WindowY * (Bottom - Top) / GetHeight());
+ // Just initialize the render target part
+ RenderTarget::initialize();
}
////////////////////////////////////////////////////////////
-/// Called after the window has been created
-////////////////////////////////////////////////////////////
-void RenderWindow::OnCreate()
+void RenderWindow::onResize()
{
- // We can now initialize the render target part
- RenderTarget::Initialize();
+ // Update the current view (recompute the viewport, which is stored in relative coordinates)
+ setView(getView());
}
} // namespace sf
diff --git a/src/SFML/Graphics/Shader.cpp b/src/SFML/Graphics/Shader.cpp
new file mode 100644
index 0000000..eb292b7
--- /dev/null
+++ b/src/SFML/Graphics/Shader.cpp
@@ -0,0 +1,593 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Shader.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/System/InputStream.hpp>
+#include <SFML/System/Err.hpp>
+#include <fstream>
+#include <vector>
+
+
+namespace
+{
+ // Retrieve the maximum number of texture units available
+ GLint getMaxTextureUnits()
+ {
+ GLint maxUnits;
+ glCheck(glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &maxUnits));
+ return maxUnits;
+ }
+
+ // Read the contents of a file into an array of char
+ bool getFileContents(const std::string& filename, std::vector<char>& buffer)
+ {
+ std::ifstream file(filename.c_str(), std::ios_base::binary);
+ if (file)
+ {
+ file.seekg(0, std::ios_base::end);
+ std::streamsize size = file.tellg();
+ if (size > 0)
+ {
+ file.seekg(0, std::ios_base::beg);
+ buffer.resize(static_cast<std::size_t>(size));
+ file.read(&buffer[0], size);
+ }
+ buffer.push_back('\0');
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ // Read the contents of a stream into an array of char
+ bool getStreamContents(sf::InputStream& stream, std::vector<char>& buffer)
+ {
+ bool success = true;
+ sf::Int64 size = stream.getSize();
+ if (size > 0)
+ {
+ buffer.resize(static_cast<std::size_t>(size));
+ stream.seek(0);
+ sf::Int64 read = stream.read(&buffer[0], size);
+ success = (read == size);
+ }
+ buffer.push_back('\0');
+ return success;
+ }
+}
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Shader::CurrentTextureType Shader::CurrentTexture;
+
+
+////////////////////////////////////////////////////////////
+Shader::Shader() :
+m_shaderProgram (0),
+m_currentTexture(-1),
+m_textures (),
+m_params ()
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Shader::~Shader()
+{
+ ensureGlContext();
+
+ // Destroy effect program
+ if (m_shaderProgram)
+ glCheck(glDeleteObjectARB(m_shaderProgram));
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromFile(const std::string& filename, Type type)
+{
+ // Read the file
+ std::vector<char> shader;
+ if (!getFileContents(filename, shader))
+ {
+ err() << "Failed to open shader file \"" << filename << "\"" << std::endl;
+ return false;
+ }
+
+ // Compile the shader program
+ if (type == Vertex)
+ return compile(&shader[0], NULL);
+ else
+ return compile(NULL, &shader[0]);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromFile(const std::string& vertexShaderFilename, const std::string& fragmentShaderFilename)
+{
+ // Read the vertex shader file
+ std::vector<char> vertexShader;
+ if (!getFileContents(vertexShaderFilename, vertexShader))
+ {
+ err() << "Failed to open vertex shader file \"" << vertexShaderFilename << "\"" << std::endl;
+ return false;
+ }
+
+ // Read the fragment shader file
+ std::vector<char> fragmentShader;
+ if (!getFileContents(fragmentShaderFilename, fragmentShader))
+ {
+ err() << "Failed to open fragment shader file \"" << fragmentShaderFilename << "\"" << std::endl;
+ return false;
+ }
+
+ // Compile the shader program
+ return compile(&vertexShader[0], &fragmentShader[0]);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromMemory(const std::string& shader, Type type)
+{
+ // Compile the shader program
+ if (type == Vertex)
+ return compile(shader.c_str(), NULL);
+ else
+ return compile(NULL, shader.c_str());
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromMemory(const std::string& vertexShader, const std::string& fragmentShader)
+{
+ // Compile the shader program
+ return compile(vertexShader.c_str(), fragmentShader.c_str());
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromStream(InputStream& stream, Type type)
+{
+ // Read the shader code from the stream
+ std::vector<char> shader;
+ if (!getStreamContents(stream, shader))
+ {
+ err() << "Failed to read shader from stream" << std::endl;
+ return false;
+ }
+
+ // Compile the shader program
+ if (type == Vertex)
+ return compile(&shader[0], NULL);
+ else
+ return compile(NULL, &shader[0]);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::loadFromStream(InputStream& vertexShaderStream, InputStream& fragmentShaderStream)
+{
+ // Read the vertex shader code from the stream
+ std::vector<char> vertexShader;
+ if (!getStreamContents(vertexShaderStream, vertexShader))
+ {
+ err() << "Failed to read vertex shader from stream" << std::endl;
+ return false;
+ }
+
+ // Read the fragment shader code from the stream
+ std::vector<char> fragmentShader;
+ if (!getStreamContents(fragmentShaderStream, fragmentShader))
+ {
+ err() << "Failed to read fragment shader from stream" << std::endl;
+ return false;
+ }
+
+ // Compile the shader program
+ return compile(&vertexShader[0], &fragmentShader[0]);
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, float x)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Enable program
+ GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ glCheck(glUseProgramObjectARB(m_shaderProgram));
+
+ // Get parameter location and assign it new values
+ GLint location = getParamLocation(name);
+ if (location != -1)
+ glCheck(glUniform1fARB(location, x));
+
+ // Disable program
+ glCheck(glUseProgramObjectARB(program));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, float x, float y)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Enable program
+ GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ glCheck(glUseProgramObjectARB(m_shaderProgram));
+
+ // Get parameter location and assign it new values
+ GLint location = getParamLocation(name);
+ if (location != -1)
+ glCheck(glUniform2fARB(location, x, y));
+
+ // Disable program
+ glCheck(glUseProgramObjectARB(program));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, float x, float y, float z)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Enable program
+ GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ glCheck(glUseProgramObjectARB(m_shaderProgram));
+
+ // Get parameter location and assign it new values
+ GLint location = getParamLocation(name);
+ if (location != -1)
+ glCheck(glUniform3fARB(location, x, y, z));
+
+ // Disable program
+ glCheck(glUseProgramObjectARB(program));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, float x, float y, float z, float w)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Enable program
+ GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ glCheck(glUseProgramObjectARB(m_shaderProgram));
+
+ // Get parameter location and assign it new values
+ GLint location = getParamLocation(name);
+ if (location != -1)
+ glCheck(glUniform4fARB(location, x, y, z, w));
+
+ // Disable program
+ glCheck(glUseProgramObjectARB(program));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, const Vector2f& v)
+{
+ setParameter(name, v.x, v.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, const Vector3f& v)
+{
+ setParameter(name, v.x, v.y, v.z);
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, const Color& color)
+{
+ setParameter(name, color.r / 255.f, color.g / 255.f, color.b / 255.f, color.a / 255.f);
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, const sf::Transform& transform)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Enable program
+ GLhandleARB program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+ glCheck(glUseProgramObjectARB(m_shaderProgram));
+
+ // Get parameter location and assign it new values
+ GLint location = getParamLocation(name);
+ if (location != -1)
+ glCheck(glUniformMatrix4fvARB(location, 1, GL_FALSE, transform.getMatrix()));
+
+ // Disable program
+ glCheck(glUseProgramObjectARB(program));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, const Texture& texture)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Find the location of the variable in the shader
+ int location = getParamLocation(name);
+ if (location != -1)
+ {
+ // Store the location -> texture mapping
+ TextureTable::iterator it = m_textures.find(location);
+ if (it == m_textures.end())
+ {
+ // New entry, make sure there are enough texture units
+ static const GLint maxUnits = getMaxTextureUnits();
+ if (m_textures.size() + 1 >= static_cast<std::size_t>(maxUnits))
+ {
+ err() << "Impossible to use texture \"" << name << "\" for shader: all available texture units are used" << std::endl;
+ return;
+ }
+
+ m_textures[location] = &texture;
+ }
+ else
+ {
+ // Location already used, just replace the texture
+ it->second = &texture;
+ }
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::setParameter(const std::string& name, CurrentTextureType)
+{
+ if (m_shaderProgram)
+ {
+ ensureGlContext();
+
+ // Find the location of the variable in the shader
+ m_currentTexture = getParamLocation(name);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::bind(const Shader* shader)
+{
+ ensureGlContext();
+
+ if (shader && shader->m_shaderProgram)
+ {
+ // Enable the program
+ glCheck(glUseProgramObjectARB(shader->m_shaderProgram));
+
+ // Bind the textures
+ shader->bindTextures();
+
+ // Bind the current texture
+ if (shader->m_currentTexture != -1)
+ glCheck(glUniform1iARB(shader->m_currentTexture, 0));
+ }
+ else
+ {
+ // Bind no shader
+ glCheck(glUseProgramObjectARB(0));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::isAvailable()
+{
+ ensureGlContext();
+
+ // Make sure that GLEW is initialized
+ priv::ensureGlewInit();
+
+ return GLEW_ARB_shading_language_100 &&
+ GLEW_ARB_shader_objects &&
+ GLEW_ARB_vertex_shader &&
+ GLEW_ARB_fragment_shader;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Shader::compile(const char* vertexShaderCode, const char* fragmentShaderCode)
+{
+ ensureGlContext();
+
+ // First make sure that we can use shaders
+ if (!isAvailable())
+ {
+ err() << "Failed to create a shader: your system doesn't support shaders "
+ << "(you should test Shader::isAvailable() before trying to use the Shader class)" << std::endl;
+ return false;
+ }
+
+ // Destroy the shader if it was already created
+ if (m_shaderProgram)
+ glCheck(glDeleteObjectARB(m_shaderProgram));
+
+ // Reset the internal state
+ m_currentTexture = -1;
+ m_textures.clear();
+ m_params.clear();
+
+ // Create the program
+ m_shaderProgram = glCreateProgramObjectARB();
+
+ // Create the vertex shader if needed
+ if (vertexShaderCode)
+ {
+ // Create and compile the shader
+ GLhandleARB vertexShader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
+ glCheck(glShaderSourceARB(vertexShader, 1, &vertexShaderCode, NULL));
+ glCheck(glCompileShaderARB(vertexShader));
+
+ // Check the compile log
+ GLint success;
+ glCheck(glGetObjectParameterivARB(vertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &success));
+ if (success == GL_FALSE)
+ {
+ char log[1024];
+ glCheck(glGetInfoLogARB(vertexShader, sizeof(log), 0, log));
+ err() << "Failed to compile vertex shader:" << std::endl
+ << log << std::endl;
+ glCheck(glDeleteObjectARB(vertexShader));
+ glCheck(glDeleteObjectARB(m_shaderProgram));
+ m_shaderProgram = 0;
+ return false;
+ }
+
+ // Attach the shader to the program, and delete it (not needed anymore)
+ glCheck(glAttachObjectARB(m_shaderProgram, vertexShader));
+ glCheck(glDeleteObjectARB(vertexShader));
+ }
+
+ // Create the fragment shader if needed
+ if (fragmentShaderCode)
+ {
+ // Create and compile the shader
+ GLhandleARB fragmentShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
+ glCheck(glShaderSourceARB(fragmentShader, 1, &fragmentShaderCode, NULL));
+ glCheck(glCompileShaderARB(fragmentShader));
+
+ // Check the compile log
+ GLint success;
+ glCheck(glGetObjectParameterivARB(fragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &success));
+ if (success == GL_FALSE)
+ {
+ char log[1024];
+ glCheck(glGetInfoLogARB(fragmentShader, sizeof(log), 0, log));
+ err() << "Failed to compile fragment shader:" << std::endl
+ << log << std::endl;
+ glCheck(glDeleteObjectARB(fragmentShader));
+ glCheck(glDeleteObjectARB(m_shaderProgram));
+ m_shaderProgram = 0;
+ return false;
+ }
+
+ // Attach the shader to the program, and delete it (not needed anymore)
+ glCheck(glAttachObjectARB(m_shaderProgram, fragmentShader));
+ glCheck(glDeleteObjectARB(fragmentShader));
+ }
+
+ // Link the program
+ glCheck(glLinkProgramARB(m_shaderProgram));
+
+ // Check the link log
+ GLint success;
+ glCheck(glGetObjectParameterivARB(m_shaderProgram, GL_OBJECT_LINK_STATUS_ARB, &success));
+ if (success == GL_FALSE)
+ {
+ char log[1024];
+ glCheck(glGetInfoLogARB(m_shaderProgram, sizeof(log), 0, log));
+ err() << "Failed to link shader:" << std::endl
+ << log << std::endl;
+ glCheck(glDeleteObjectARB(m_shaderProgram));
+ m_shaderProgram = 0;
+ return false;
+ }
+
+ // Force an OpenGL flush, so that the shader will appear updated
+ // in all contexts immediately (solves problems in multi-threaded apps)
+ glCheck(glFlush());
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+void Shader::bindTextures() const
+{
+ TextureTable::const_iterator it = m_textures.begin();
+ for (std::size_t i = 0; i < m_textures.size(); ++i)
+ {
+ GLint index = static_cast<GLsizei>(i + 1);
+ glCheck(glUniform1iARB(it->first, index));
+ glCheck(glActiveTextureARB(GL_TEXTURE0_ARB + index));
+ Texture::bind(it->second);
+ ++it;
+ }
+
+ // Make sure that the texture unit which is left active is the number 0
+ glCheck(glActiveTextureARB(GL_TEXTURE0_ARB));
+}
+
+
+////////////////////////////////////////////////////////////
+int Shader::getParamLocation(const std::string& name)
+{
+ // Check the cache
+ ParamTable::const_iterator it = m_params.find(name);
+ if (it != m_params.end())
+ {
+ // Already in cache, return it
+ return it->second;
+ }
+ else
+ {
+ // Not in cache, request the location from OpenGL
+ int location = glGetUniformLocationARB(m_shaderProgram, name.c_str());
+ if (location != -1)
+ {
+ // Location found: add it to the cache
+ m_params.insert(std::make_pair(name, location));
+ }
+ else
+ {
+ // Error: location not found
+ err() << "Parameter \"" << name << "\" not found in shader" << std::endl;
+ }
+
+ return location;
+ }
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Shape.cpp b/src/SFML/Graphics/Shape.cpp
index ca613f0..16524f5 100755..100644
--- a/src/SFML/Graphics/Shape.cpp
+++ b/src/SFML/Graphics/Shape.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,400 +26,280 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Shape.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <math.h>
+#include <SFML/Graphics/RenderTarget.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/System/Err.hpp>
+#include <cmath>
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Shape::Shape() :
-myOutline (0.f),
-myIsFillEnabled (true),
-myIsOutlineEnabled(true),
-myIsCompiled (false)
+namespace
{
- // Put a placeholder for the center of the shape
- myPoints.push_back(Point());
+ // Compute the normal of a segment
+ sf::Vector2f computeNormal(const sf::Vector2f& p1, const sf::Vector2f& p2)
+ {
+ sf::Vector2f normal(p1.y - p2.y, p2.x - p1.x);
+ float length = std::sqrt(normal.x * normal.x + normal.y * normal.y);
+ if (length != 0.f)
+ normal /= length;
+ return normal;
+ }
+
+ // Compute the dot product of two vectors
+ float dotProduct(const sf::Vector2f& p1, const sf::Vector2f& p2)
+ {
+ return p1.x * p2.x + p1.y * p2.y;
+ }
}
+namespace sf
+{
////////////////////////////////////////////////////////////
-/// Add a point to the shape
-////////////////////////////////////////////////////////////
-void Shape::AddPoint(float X, float Y, const Color& Col, const Color& OutlineCol)
+Shape::~Shape()
{
- AddPoint(Vector2f(X, Y), Col, OutlineCol);
}
////////////////////////////////////////////////////////////
-/// Add a point to the shape
-////////////////////////////////////////////////////////////
-void Shape::AddPoint(const Vector2f& Position, const Color& Col, const Color& OutlineCol)
+void Shape::setTexture(const Texture* texture, bool resetRect)
{
- myPoints.push_back(Point(Position, Col, OutlineCol));
- myIsCompiled = false;
+ if (texture)
+ {
+ // Recompute the texture area if requested, or if there was no texture & rect before
+ if (resetRect || (!m_texture && (m_textureRect == sf::IntRect())))
+ setTextureRect(IntRect(0, 0, texture->getSize().x, texture->getSize().y));
+ }
+
+ // Assign the new texture
+ m_texture = texture;
}
////////////////////////////////////////////////////////////
-/// Get the number of points composing the shape
-////////////////////////////////////////////////////////////
-unsigned int Shape::GetNbPoints() const
+const Texture* Shape::getTexture() const
{
- return static_cast<unsigned int>(myPoints.size() - 1);
+ return m_texture;
}
////////////////////////////////////////////////////////////
-/// Enable or disable filling the shape.
-/// Fill is enabled by default
-////////////////////////////////////////////////////////////
-void Shape::EnableFill(bool Enable)
+void Shape::setTextureRect(const IntRect& rect)
{
- myIsFillEnabled = Enable;
+ m_textureRect = rect;
+ updateTexCoords();
}
////////////////////////////////////////////////////////////
-/// Enable or disable drawing the shape outline.
-/// Outline is enabled by default
-////////////////////////////////////////////////////////////
-void Shape::EnableOutline(bool Enable)
+const IntRect& Shape::getTextureRect() const
{
- myIsOutlineEnabled = Enable;
+ return m_textureRect;
}
////////////////////////////////////////////////////////////
-/// Set the position of a point
-////////////////////////////////////////////////////////////
-void Shape::SetPointPosition(unsigned int Index, const Vector2f& Position)
+void Shape::setFillColor(const Color& color)
{
- myPoints[Index + 1].Position = Position;
- myIsCompiled = false;
+ m_fillColor = color;
+ updateFillColors();
}
////////////////////////////////////////////////////////////
-/// Set the position of a point
-////////////////////////////////////////////////////////////
-void Shape::SetPointPosition(unsigned int Index, float X, float Y)
+const Color& Shape::getFillColor() const
{
- SetPointPosition(Index, Vector2f(X, Y));
+ return m_fillColor;
}
////////////////////////////////////////////////////////////
-/// Set the color of a point
-////////////////////////////////////////////////////////////
-void Shape::SetPointColor(unsigned int Index, const Color& Col)
+void Shape::setOutlineColor(const Color& color)
{
- myPoints[Index + 1].Col = Col;
- myIsCompiled = false;
+ m_outlineColor = color;
+ updateOutlineColors();
}
////////////////////////////////////////////////////////////
-/// Set the outline color of a point
-////////////////////////////////////////////////////////////
-void Shape::SetPointOutlineColor(unsigned int Index, const Color& OutlineCol)
+const Color& Shape::getOutlineColor() const
{
- myPoints[Index + 1].OutlineCol = OutlineCol;
- myIsCompiled = false;
+ return m_outlineColor;
}
////////////////////////////////////////////////////////////
-/// Change the width of the shape outline
-////////////////////////////////////////////////////////////
-void Shape::SetOutlineWidth(float Width)
+void Shape::setOutlineThickness(float thickness)
{
- myOutline = Width;
+ m_outlineThickness = thickness;
+ update(); // recompute everything because the whole shape must be offset
}
////////////////////////////////////////////////////////////
-/// Get the position of a point
-////////////////////////////////////////////////////////////
-const Vector2f& Shape::GetPointPosition(unsigned int Index) const
+float Shape::getOutlineThickness() const
{
- return myPoints[Index + 1].Position;
+ return m_outlineThickness;
}
////////////////////////////////////////////////////////////
-/// Get the color of a point
-////////////////////////////////////////////////////////////
-const Color& Shape::GetPointColor(unsigned int Index) const
+FloatRect Shape::getLocalBounds() const
{
- return myPoints[Index + 1].Col;
+ return m_bounds;
}
////////////////////////////////////////////////////////////
-/// Get the outline color of a point
-////////////////////////////////////////////////////////////
-const Color& Shape::GetPointOutlineColor(unsigned int Index) const
+FloatRect Shape::getGlobalBounds() const
{
- return myPoints[Index + 1].OutlineCol;
+ return getTransform().transformRect(getLocalBounds());
}
////////////////////////////////////////////////////////////
-/// Get the width of the shape outline
-////////////////////////////////////////////////////////////
-float Shape::GetOutlineWidth() const
+Shape::Shape() :
+m_texture (NULL),
+m_textureRect (),
+m_fillColor (255, 255, 255),
+m_outlineColor (255, 255, 255),
+m_outlineThickness(0),
+m_vertices (TrianglesFan),
+m_outlineVertices (TrianglesStrip),
+m_insideBounds (),
+m_bounds ()
{
- return myOutline;
}
////////////////////////////////////////////////////////////
-/// Create a shape made of a single line
-////////////////////////////////////////////////////////////
-Shape Shape::Line(float P1X, float P1Y, float P2X, float P2Y, float Thickness, const Color& Col, float Outline, const Color& OutlineCol)
+void Shape::update()
{
- Vector2f P1(P1X, P1Y);
- Vector2f P2(P2X, P2Y);
-
- // Compute the extrusion direction
- Vector2f Normal;
- ComputeNormal(P1, P2, Normal);
- Normal *= Thickness / 2;
-
- // Create the shape's points
- Shape S;
- S.AddPoint(P1 - Normal, Col, OutlineCol);
- S.AddPoint(P2 - Normal, Col, OutlineCol);
- S.AddPoint(P2 + Normal, Col, OutlineCol);
- S.AddPoint(P1 + Normal, Col, OutlineCol);
- S.SetOutlineWidth(Outline);
-
- // Compile it
- S.Compile();
-
- return S;
-}
+ // Get the total number of points of the shape
+ unsigned int count = getPointCount();
+ if (count < 3)
+ {
+ m_vertices.resize(0);
+ m_outlineVertices.resize(0);
+ return;
+ }
+ m_vertices.resize(count + 2); // + 2 for center and repeated first point
-////////////////////////////////////////////////////////////
-/// Create a shape made of a single line (use vectors)
-////////////////////////////////////////////////////////////
-Shape Shape::Line(const Vector2f& P1, const Vector2f& P2, float Thickness, const Color& Col, float Outline, const Color& OutlineCol)
-{
- return Shape::Line(P1.x, P1.y, P2.x, P2.y, Thickness, Col, Outline, OutlineCol);
-}
+ // Position
+ for (unsigned int i = 0; i < count; ++i)
+ m_vertices[i + 1].position = getPoint(i);
+ m_vertices[count + 1].position = m_vertices[1].position;
+ // Update the bounding rectangle
+ m_vertices[0] = m_vertices[1]; // so that the result of getBounds() is correct
+ m_insideBounds = m_vertices.getBounds();
-////////////////////////////////////////////////////////////
-/// Create a shape made of a single rectangle
-////////////////////////////////////////////////////////////
-Shape Shape::Rectangle(float P1X, float P1Y, float P2X, float P2Y, const Color& Col, float Outline, const Color& OutlineCol)
-{
- // Create the shape's points
- Shape S;
- S.AddPoint(Vector2f(P1X, P1Y), Col, OutlineCol);
- S.AddPoint(Vector2f(P2X, P1Y), Col, OutlineCol);
- S.AddPoint(Vector2f(P2X, P2Y), Col, OutlineCol);
- S.AddPoint(Vector2f(P1X, P2Y), Col, OutlineCol);
- S.SetOutlineWidth(Outline);
-
- // Compile it
- S.Compile();
-
- return S;
-}
+ // Compute the center and make it the first vertex
+ m_vertices[0].position.x = m_insideBounds.left + m_insideBounds.width / 2;
+ m_vertices[0].position.y = m_insideBounds.top + m_insideBounds.height / 2;
+ // Color
+ updateFillColors();
-////////////////////////////////////////////////////////////
-/// Create a shape made of a single rectangle (use vectors)
-////////////////////////////////////////////////////////////
-Shape Shape::Rectangle(const Vector2f& P1, const Vector2f& P2, const Color& Col, float Outline, const Color& OutlineCol)
-{
- return Shape::Rectangle(P1.x, P1.y, P2.x, P2.y, Col, Outline, OutlineCol);
+ // Texture coordinates
+ updateTexCoords();
+
+ // Outline
+ updateOutline();
}
////////////////////////////////////////////////////////////
-/// Create a shape made of a single circle
-////////////////////////////////////////////////////////////
-Shape Shape::Circle(float X, float Y, float Radius, const Color& Col, float Outline, const Color& OutlineCol)
+void Shape::draw(RenderTarget& target, RenderStates states) const
{
- static const int NbSegments = 40;
+ states.transform *= getTransform();
- // Create the points set
- Shape S;
- Vector2f Center(X, Y);
- for (int i = 0; i < NbSegments; ++i)
- {
- float Angle = i * 2 * 3.141592654f / NbSegments;
- Vector2f Offset(cos(Angle), sin(Angle));
+ // Render the inside
+ states.texture = m_texture;
+ target.draw(m_vertices, states);
- S.AddPoint(Center + Offset * Radius, Col, OutlineCol);
+ // Render the outline
+ if (m_outlineThickness != 0)
+ {
+ states.texture = NULL;
+ target.draw(m_outlineVertices, states);
}
-
- // Compile it
- S.SetOutlineWidth(Outline);
- S.Compile();
-
- return S;
}
////////////////////////////////////////////////////////////
-/// Create a shape made of a single circle (use vectors)
-////////////////////////////////////////////////////////////
-Shape Shape::Circle(const Vector2f& Center, float Radius, const Color& Col, float Outline, const Color& OutlineCol)
+void Shape::updateFillColors()
{
- return Shape::Circle(Center.x, Center.y, Radius, Col, Outline, OutlineCol);
+ for (unsigned int i = 0; i < m_vertices.getVertexCount(); ++i)
+ m_vertices[i].color = m_fillColor;
}
////////////////////////////////////////////////////////////
-/// /see Drawable::Render
-////////////////////////////////////////////////////////////
-void Shape::Render(RenderTarget&) const
+void Shape::updateTexCoords()
{
- // Make sure the shape has at least 3 points (4 if we count the center)
- if (myPoints.size() < 4)
- return;
-
- // Make sure the shape is compiled
- if (!myIsCompiled)
- const_cast<Shape*>(this)->Compile();
-
- // Shapes only use color, no texture
- GLCheck(glDisable(GL_TEXTURE_2D));
-
- // Draw the shape
- if (myIsFillEnabled)
+ for (unsigned int i = 0; i < m_vertices.getVertexCount(); ++i)
{
- glBegin(GL_TRIANGLE_FAN);
- {
- for (std::vector<Point>::const_iterator i = myPoints.begin(); i != myPoints.end(); ++i)
- {
- Color PointColor = i->Col * GetColor();
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(i->Position.x, i->Position.y);
- }
-
- // Close the shape by duplicating the first point at the end
- Color PointColor = myPoints[1].Col * GetColor();
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(myPoints[1].Position.x, myPoints[1].Position.y);
- }
- glEnd();
- }
-
- // Draw the outline
- if (myIsOutlineEnabled)
- {
- glBegin(GL_TRIANGLE_STRIP);
- {
- for (std::size_t i = 1; i < myPoints.size(); ++i)
- {
- Color PointColor = myPoints[i].OutlineCol * GetColor();
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(myPoints[i].Position.x, myPoints[i].Position.y);
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(myPoints[i].Position.x + myPoints[i].Normal.x * myOutline, myPoints[i].Position.y + myPoints[i].Normal.y * myOutline);
- }
-
- // Close the shape by duplicating the first point at the end
- Color PointColor = myPoints[1].OutlineCol * GetColor();
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(myPoints[1].Position.x, myPoints[1].Position.y);
- glColor4f(PointColor.r / 255.f, PointColor.g / 255.f, PointColor.b / 255.f, PointColor.a / 255.f);
- glVertex2f(myPoints[1].Position.x + myPoints[1].Normal.x * myOutline, myPoints[1].Position.y + myPoints[1].Normal.y * myOutline);
- }
- glEnd();
+ float xratio = (m_vertices[i].position.x - m_insideBounds.left) / m_insideBounds.width;
+ float yratio = (m_vertices[i].position.y - m_insideBounds.top) / m_insideBounds.height;
+ m_vertices[i].texCoords.x = m_textureRect.left + m_textureRect.width * xratio;
+ m_vertices[i].texCoords.y = m_textureRect.top + m_textureRect.height * yratio;
}
}
////////////////////////////////////////////////////////////
-/// Compile the shape : compute its center and its outline
-////////////////////////////////////////////////////////////
-void Shape::Compile()
+void Shape::updateOutline()
{
- // Compute the center
- float NbPoints = static_cast<float>(myPoints.size() - 1);
- float R = 0, G = 0, B = 0, A = 0;
- Point Center(Vector2f(0, 0), Color(0, 0, 0, 0));
- for (std::size_t i = 1; i < myPoints.size(); ++i)
- {
- Center.Position += myPoints[i].Position / NbPoints;
- R += myPoints[i].Col.r / NbPoints;
- G += myPoints[i].Col.g / NbPoints;
- B += myPoints[i].Col.b / NbPoints;
- A += myPoints[i].Col.a / NbPoints;
- }
- Center.Col.r = static_cast<Uint8>(R);
- Center.Col.g = static_cast<Uint8>(G);
- Center.Col.b = static_cast<Uint8>(B);
- Center.Col.a = static_cast<Uint8>(A);
- myPoints[0] = Center;
-
- // Compute the outline
- for (std::size_t i = 1; i < myPoints.size(); ++i)
+ unsigned int count = m_vertices.getVertexCount() - 2;
+ m_outlineVertices.resize((count + 1) * 2);
+
+ for (unsigned int i = 0; i < count; ++i)
{
+ unsigned int index = i + 1;
+
// Get the two segments shared by the current point
- Point& P0 = (i == 1) ? myPoints[myPoints.size() - 1] : myPoints[i - 1];
- Point& P1 = myPoints[i];
- Point& P2 = (i == myPoints.size() - 1) ? myPoints[1] : myPoints[i + 1];
+ Vector2f p0 = (i == 0) ? m_vertices[count].position : m_vertices[index - 1].position;
+ Vector2f p1 = m_vertices[index].position;
+ Vector2f p2 = m_vertices[index + 1].position;
// Compute their normal
- Vector2f Normal1, Normal2;
- if (!ComputeNormal(P0.Position, P1.Position, Normal1) || !ComputeNormal(P1.Position, P2.Position, Normal2))
- continue;
-
- // Add them to get the extrusion direction
- float Factor = 1.f + (Normal1.x * Normal2.x + Normal1.y * Normal2.y);
- P1.Normal = (Normal1 + Normal2) / Factor;
-
- // Make sure it points towards the outside of the shape
- float Dot = (P1.Position.x - Center.Position.x) * P1.Normal.x + (P1.Position.y - Center.Position.y) * P1.Normal.y;
- if (Dot < 0)
- P1.Normal = -P1.Normal;
+ Vector2f n1 = computeNormal(p0, p1);
+ Vector2f n2 = computeNormal(p1, p2);
+
+ // Make sure that the normals point towards the outside of the shape
+ // (this depends on the order in which the points were defined)
+ if (dotProduct(n1, m_vertices[0].position - p1) > 0)
+ n1 = -n1;
+ if (dotProduct(n2, m_vertices[0].position - p1) > 0)
+ n2 = -n2;
+
+ // Combine them to get the extrusion direction
+ float factor = 1.f + (n1.x * n2.x + n1.y * n2.y);
+ Vector2f normal = (n1 + n2) / factor;
+
+ // Update the outline points
+ m_outlineVertices[i * 2 + 0].position = p1;
+ m_outlineVertices[i * 2 + 1].position = p1 + normal * m_outlineThickness;
}
- myIsCompiled = true;
-}
-
+ // Duplicate the first point at the end, to close the outline
+ m_outlineVertices[count * 2 + 0].position = m_outlineVertices[0].position;
+ m_outlineVertices[count * 2 + 1].position = m_outlineVertices[1].position;
-////////////////////////////////////////////////////////////
-/// Compute the normal of a given 2D segment
-////////////////////////////////////////////////////////////
-bool Shape::ComputeNormal(const Vector2f& P1, const Vector2f& P2, Vector2f& Normal)
-{
- Normal.x = P1.y - P2.y;
- Normal.y = P2.x - P1.x;
+ // Update outline colors
+ updateOutlineColors();
- float Len = sqrt(Normal.x * Normal.x + Normal.y * Normal.y);
- if (Len == 0.f)
- return false;
-
- Normal.x /= Len;
- Normal.y /= Len;
-
- return true;
+ // Update the shape's bounds
+ m_bounds = m_outlineVertices.getBounds();
}
////////////////////////////////////////////////////////////
-/// Default constructor for Point
-////////////////////////////////////////////////////////////
-Shape::Point::Point(const Vector2f& Pos, const Color& C, const Color& OutlineC) :
-Position (Pos),
-Normal (0.f, 0.f),
-Col (C),
-OutlineCol(OutlineC)
+void Shape::updateOutlineColors()
{
-
+ for (unsigned int i = 0; i < m_outlineVertices.getVertexCount(); ++i)
+ m_outlineVertices[i].color = m_outlineColor;
}
} // namespace sf
diff --git a/src/SFML/Graphics/Sprite.cpp b/src/SFML/Graphics/Sprite.cpp
index 375bd5e..d5df41e 100755..100644
--- a/src/SFML/Graphics/Sprite.cpp
+++ b/src/SFML/Graphics/Sprite.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,201 +26,149 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/Sprite.hpp>
-#include <SFML/Graphics/Image.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/RenderTarget.hpp>
+#include <cstdlib>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Sprite::Sprite() :
-mySubRect (0, 0, 1, 1),
-myIsFlippedX(false),
-myIsFlippedY(false)
+m_texture (NULL),
+m_textureRect()
{
-
}
////////////////////////////////////////////////////////////
-/// Construct the sprite from a source image
-////////////////////////////////////////////////////////////
-Sprite::Sprite(const Image& Img, const Vector2f& Position, const Vector2f& Scale, float Rotation, const Color& Col) :
-Drawable (Position, Scale, Rotation, Col),
-mySubRect (0, 0, 1, 1),
-myIsFlippedX(false),
-myIsFlippedY(false)
+Sprite::Sprite(const Texture& texture) :
+m_texture (NULL),
+m_textureRect()
{
- SetImage(Img);
+ setTexture(texture);
}
////////////////////////////////////////////////////////////
-/// Set the image of the sprite
-////////////////////////////////////////////////////////////
-void Sprite::SetImage(const Image& Img)
+Sprite::Sprite(const Texture& texture, const IntRect& rectangle) :
+m_texture (NULL),
+m_textureRect()
{
- // If there was no source image before and the new image is valid, adjust the source rectangle
- if (!myImage && (Img.GetWidth() > 0) && (Img.GetHeight() > 0))
- {
- SetSubRect(IntRect(0, 0, Img.GetWidth(), Img.GetHeight()));
- }
-
- // Assign the new image
- myImage = &Img;
+ setTexture(texture);
+ setTextureRect(rectangle);
}
////////////////////////////////////////////////////////////
-/// Set the sub-rectangle of the sprite inside the source image
-////////////////////////////////////////////////////////////
-void Sprite::SetSubRect(const IntRect& SubRect)
+void Sprite::setTexture(const Texture& texture, bool resetRect)
{
- mySubRect = SubRect;
+ // Recompute the texture area if requested, or if there was no valid texture & rect before
+ if (resetRect || (!m_texture && (m_textureRect == sf::IntRect())))
+ setTextureRect(IntRect(0, 0, texture.getSize().x, texture.getSize().y));
+
+ // Assign the new texture
+ m_texture = &texture;
}
////////////////////////////////////////////////////////////
-/// Resize the sprite (by changing its scale factors) (take 2 values).
-/// The default size is defined by the subrect
-////////////////////////////////////////////////////////////
-void Sprite::Resize(float Width, float Height)
+void Sprite::setTextureRect(const IntRect& rectangle)
{
- int LocalWidth = mySubRect.GetWidth();
- int LocalHeight = mySubRect.GetHeight();
-
- if ((LocalWidth > 0) && (LocalHeight > 0))
- SetScale(Width / LocalWidth, Height / LocalHeight);
+ if (rectangle != m_textureRect)
+ {
+ m_textureRect = rectangle;
+ updatePositions();
+ updateTexCoords();
+ }
}
////////////////////////////////////////////////////////////
-/// Resize the object (by changing its scale factors) (take a 2D vector)
-/// The default size is defined by the subrect
-////////////////////////////////////////////////////////////
-void Sprite::Resize(const Vector2f& Size)
+void Sprite::setColor(const Color& color)
{
- Resize(Size.x, Size.y);
+ // Update the vertices' color
+ m_vertices[0].color = color;
+ m_vertices[1].color = color;
+ m_vertices[2].color = color;
+ m_vertices[3].color = color;
}
////////////////////////////////////////////////////////////
-/// Flip the sprite horizontally
-////////////////////////////////////////////////////////////
-void Sprite::FlipX(bool Flipped)
+const Texture* Sprite::getTexture() const
{
- myIsFlippedX = Flipped;
+ return m_texture;
}
////////////////////////////////////////////////////////////
-/// Flip the sprite vertically
-////////////////////////////////////////////////////////////
-void Sprite::FlipY(bool Flipped)
+const IntRect& Sprite::getTextureRect() const
{
- myIsFlippedY = Flipped;
+ return m_textureRect;
}
////////////////////////////////////////////////////////////
-/// Get the source image of the sprite
-////////////////////////////////////////////////////////////
-const Image* Sprite::GetImage() const
+const Color& Sprite::getColor() const
{
- return myImage;
+ return m_vertices[0].color;
}
////////////////////////////////////////////////////////////
-/// Get the sub-rectangle of the sprite inside the source image
-////////////////////////////////////////////////////////////
-const IntRect& Sprite::GetSubRect() const
+FloatRect Sprite::getLocalBounds() const
{
- return mySubRect;
+ float width = static_cast<float>(std::abs(m_textureRect.width));
+ float height = static_cast<float>(std::abs(m_textureRect.height));
+
+ return FloatRect(0.f, 0.f, width, height);
}
////////////////////////////////////////////////////////////
-/// Get the sprite size
-////////////////////////////////////////////////////////////
-Vector2f Sprite::GetSize() const
+FloatRect Sprite::getGlobalBounds() const
{
- return Vector2f(mySubRect.GetWidth() * GetScale().x, mySubRect.GetHeight() * GetScale().y);
+ return getTransform().transformRect(getLocalBounds());
}
////////////////////////////////////////////////////////////
-/// Get the color of a given pixel in the sprite
-/// (point is in local coordinates)
-////////////////////////////////////////////////////////////
-Color Sprite::GetPixel(unsigned int X, unsigned int Y) const
+void Sprite::draw(RenderTarget& target, RenderStates states) const
{
- if (myImage)
+ if (m_texture)
{
- unsigned int ImageX = mySubRect.Left + X;
- unsigned int ImageY = mySubRect.Top + Y;
-
- if (myIsFlippedX) ImageX = mySubRect.GetWidth() - ImageX - 1;
- if (myIsFlippedY) ImageY = mySubRect.GetHeight() - ImageY - 1;
-
- return myImage->GetPixel(ImageX, ImageY) * GetColor();
- }
- else
- {
- return GetColor();
+ states.transform *= getTransform();
+ states.texture = m_texture;
+ target.draw(m_vertices, 4, Quads, states);
}
}
////////////////////////////////////////////////////////////
-/// /see sfDrawable::Render
-////////////////////////////////////////////////////////////
-void Sprite::Render(RenderTarget&) const
+void Sprite::updatePositions()
{
- // Get the sprite size
- float Width = static_cast<float>(mySubRect.GetWidth());
- float Height = static_cast<float>(mySubRect.GetHeight());
+ FloatRect bounds = getLocalBounds();
- // Check if the image is valid
- if (myImage && (myImage->GetWidth() > 0) && (myImage->GetHeight() > 0))
- {
- // Use the "offset trick" to get pixel-perfect rendering
- // see http://www.opengl.org/resources/faq/technical/transformations.htm#tran0030
- GLCheck(glTranslatef(0.375f, 0.375f, 0.f));
-
- // Bind the texture
- myImage->Bind();
-
- // Calculate the texture coordinates
- FloatRect TexCoords = myImage->GetTexCoords(mySubRect);
- FloatRect Rect(myIsFlippedX ? TexCoords.Right : TexCoords.Left,
- myIsFlippedY ? TexCoords.Bottom : TexCoords.Top,
- myIsFlippedX ? TexCoords.Left : TexCoords.Right,
- myIsFlippedY ? TexCoords.Top : TexCoords.Bottom);
-
- // Draw the sprite's triangles
- glBegin(GL_QUADS);
- glTexCoord2f(Rect.Left, Rect.Top); glVertex2f(0, 0);
- glTexCoord2f(Rect.Left, Rect.Bottom); glVertex2f(0, Height);
- glTexCoord2f(Rect.Right, Rect.Bottom); glVertex2f(Width, Height);
- glTexCoord2f(Rect.Right, Rect.Top); glVertex2f(Width, 0) ;
- glEnd();
- }
- else
- {
- // Disable texturing
- GLCheck(glDisable(GL_TEXTURE_2D));
-
- // Draw the sprite's triangles
- glBegin(GL_QUADS);
- glVertex2f(0, 0);
- glVertex2f(0, Height);
- glVertex2f(Width, Height);
- glVertex2f(Width, 0);
- glEnd();
- }
+ m_vertices[0].position = Vector2f(0, 0);
+ m_vertices[1].position = Vector2f(0, bounds.height);
+ m_vertices[2].position = Vector2f(bounds.width, bounds.height);
+ m_vertices[3].position = Vector2f(bounds.width, 0);
+}
+
+
+////////////////////////////////////////////////////////////
+void Sprite::updateTexCoords()
+{
+ float left = static_cast<float>(m_textureRect.left);
+ float right = left + m_textureRect.width;
+ float top = static_cast<float>(m_textureRect.top);
+ float bottom = top + m_textureRect.height;
+
+ m_vertices[0].texCoords = Vector2f(left, top);
+ m_vertices[1].texCoords = Vector2f(left, bottom);
+ m_vertices[2].texCoords = Vector2f(right, bottom);
+ m_vertices[3].texCoords = Vector2f(right, top);
}
} // namespace sf
diff --git a/src/SFML/Graphics/String.cpp b/src/SFML/Graphics/String.cpp
deleted file mode 100755
index 89cfc30..0000000
--- a/src/SFML/Graphics/String.cpp
+++ /dev/null
@@ -1,412 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/String.hpp>
-#include <SFML/Graphics/Image.hpp>
-#include <SFML/Graphics/GraphicsContext.hpp>
-#include <locale>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-String::String() :
-myFont (&Font::GetDefaultFont()),
-mySize (30.f),
-myStyle (Regular),
-myNeedRectUpdate(true)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the string from any kind of text
-////////////////////////////////////////////////////////////
-String::String(const Unicode::Text& Text, const Font& CharFont, float Size) :
-myFont (&CharFont),
-mySize (Size),
-myStyle (Regular),
-myNeedRectUpdate(true)
-{
- SetText(Text);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the text (from any kind of string)
-////////////////////////////////////////////////////////////
-void String::SetText(const Unicode::Text& Text)
-{
- myNeedRectUpdate = true;
- myText = Text;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the font of the string
-////////////////////////////////////////////////////////////
-void String::SetFont(const Font& CharFont)
-{
- if (myFont != &CharFont)
- {
- myNeedRectUpdate = true;
- myFont = &CharFont;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the size of the string
-////////////////////////////////////////////////////////////
-void String::SetSize(float Size)
-{
- if (mySize != Size)
- {
- myNeedRectUpdate = true;
- mySize = Size;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set the style of the text
-/// The default style is Regular
-////////////////////////////////////////////////////////////
-void String::SetStyle(unsigned long TextStyle)
-{
- if (myStyle != TextStyle)
- {
- myNeedRectUpdate = true;
- myStyle = TextStyle;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the text (the returned text can be converted implicitely to any kind of string)
-////////////////////////////////////////////////////////////
-const Unicode::Text& String::GetText() const
-{
- return myText;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the font used by the string
-////////////////////////////////////////////////////////////
-const Font& String::GetFont() const
-{
- return *myFont;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the size of the characters
-////////////////////////////////////////////////////////////
-float String::GetSize() const
-{
- return mySize;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the style of the text
-////////////////////////////////////////////////////////////
-unsigned long String::GetStyle() const
-{
- return myStyle;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the visual position of the Index-th character of the string,
-/// in coordinates relative to the string
-/// (note : translation, center, rotation and scale are not applied)
-////////////////////////////////////////////////////////////
-sf::Vector2f String::GetCharacterPos(std::size_t Index) const
-{
- // First get the UTF32 representation of the text
- const Unicode::UTF32String& Text = myText;
-
- // Adjust the index if it's out of range
- if (Index > Text.length())
- Index = Text.length();
-
- // The final size is based on the text size
- float FactorX = mySize / myFont->GetCharacterSize();
- float AdvanceY = mySize;
-
- // Compute the position
- sf::Vector2f Position;
- for (std::size_t i = 0; i < Index; ++i)
- {
- // Get the current character and its corresponding glyph
- Uint32 CurChar = Text[i];
- const Glyph& CurGlyph = myFont->GetGlyph(CurChar);
- float AdvanceX = CurGlyph.Advance * FactorX;
-
- switch (CurChar)
- {
- // Handle special characters
- case L' ' : Position.x += AdvanceX; break;
- case L'\t' : Position.x += AdvanceX * 4; break;
- case L'\v' : Position.y += AdvanceY * 4; break;
- case L'\n' : Position.y += AdvanceY; Position.x = 0; break;
-
- // Regular character : just add its advance value
- default : Position.x += AdvanceX; break;
- }
- }
-
- return Position;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the string rectangle on screen
-////////////////////////////////////////////////////////////
-FloatRect String::GetRect() const
-{
- if (myNeedRectUpdate)
- const_cast<String*>(this)->RecomputeRect();
-
- FloatRect Rect;
- Rect.Left = (myBaseRect.Left - GetCenter().x) * GetScale().x + GetPosition().x;
- Rect.Top = (myBaseRect.Top - GetCenter().y) * GetScale().y + GetPosition().y;
- Rect.Right = (myBaseRect.Right - GetCenter().x) * GetScale().x + GetPosition().x;
- Rect.Bottom = (myBaseRect.Bottom - GetCenter().y) * GetScale().y + GetPosition().y;
-
- return Rect;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfDrawable::Render
-////////////////////////////////////////////////////////////
-void String::Render(RenderTarget&) const
-{
- // First get the internal UTF-32 string of the text
- const Unicode::UTF32String& Text = myText;
-
- // No text, no rendering :)
- if (Text.empty())
- return;
-
- // Set the scaling factor to get the actual size
- float CharSize = static_cast<float>(myFont->GetCharacterSize());
- float Factor = mySize / CharSize;
- GLCheck(glScalef(Factor, Factor, 1.f));
-
- // Bind the font texture
- myFont->GetImage().Bind();
-
- // Initialize the rendering coordinates
- float X = 0.f;
- float Y = CharSize;
-
- // Holds the lines to draw later, for underlined style
- std::vector<float> UnderlineCoords;
- UnderlineCoords.reserve(16);
-
- // Compute the shearing to apply if we're using the italic style
- float ItalicCoeff = (myStyle & Italic) ? 0.208f : 0.f; // 12 degrees
-
- // Draw one quad for each character
- glBegin(GL_QUADS);
- for (std::size_t i = 0; i < Text.size(); ++i)
- {
- // Get the current character and its corresponding glyph
- Uint32 CurChar = Text[i];
- const Glyph& CurGlyph = myFont->GetGlyph(CurChar);
- int Advance = CurGlyph.Advance;
- const IntRect& Rect = CurGlyph.Rectangle;
- const FloatRect& Coord = CurGlyph.TexCoords;
-
- // If we're using the underlined style and there's a new line,
- // we keep track of the previous line to draw it later
- if ((CurChar == L'\n') && (myStyle & Underlined))
- {
- UnderlineCoords.push_back(X);
- UnderlineCoords.push_back(Y + 2);
- }
-
- // Handle special characters
- switch (CurChar)
- {
- case L' ' : X += Advance; continue;
- case L'\n' : Y += CharSize; X = 0; continue;
- case L'\t' : X += Advance * 4; continue;
- case L'\v' : Y += CharSize * 4; continue;
- }
-
- // Draw a textured quad for the current character
- glTexCoord2f(Coord.Left, Coord.Top); glVertex2f(X + Rect.Left - ItalicCoeff * Rect.Top, Y + Rect.Top);
- glTexCoord2f(Coord.Left, Coord.Bottom); glVertex2f(X + Rect.Left - ItalicCoeff * Rect.Bottom, Y + Rect.Bottom);
- glTexCoord2f(Coord.Right, Coord.Bottom); glVertex2f(X + Rect.Right - ItalicCoeff * Rect.Bottom, Y + Rect.Bottom);
- glTexCoord2f(Coord.Right, Coord.Top); glVertex2f(X + Rect.Right - ItalicCoeff * Rect.Top, Y + Rect.Top);
-
- // If we're using the bold style, we must render the character 4 more times,
- // slightly offseted, to simulate a higher weight
- if (myStyle & Bold)
- {
- static const float OffsetsX[] = {-0.5f, 0.5f, 0.f, 0.f};
- static const float OffsetsY[] = {0.f, 0.f, -0.5f, 0.5f};
-
- for (int j = 0; j < 4; ++j)
- {
- glTexCoord2f(Coord.Left, Coord.Top); glVertex2f(X + OffsetsX[j] + Rect.Left - ItalicCoeff * Rect.Top, Y + OffsetsY[j] + Rect.Top);
- glTexCoord2f(Coord.Left, Coord.Bottom); glVertex2f(X + OffsetsX[j] + Rect.Left - ItalicCoeff * Rect.Bottom, Y + OffsetsY[j] + Rect.Bottom);
- glTexCoord2f(Coord.Right, Coord.Bottom); glVertex2f(X + OffsetsX[j] + Rect.Right - ItalicCoeff * Rect.Bottom, Y + OffsetsY[j] + Rect.Bottom);
- glTexCoord2f(Coord.Right, Coord.Top); glVertex2f(X + OffsetsX[j] + Rect.Right - ItalicCoeff * Rect.Top, Y + OffsetsY[j] + Rect.Top);
- }
- }
-
- // Advance to the next character
- X += Advance;
- }
- glEnd();
-
- // Draw the underlines if needed
- if (myStyle & Underlined)
- {
- // Compute the line thickness
- float Thickness = (myStyle & Bold) ? 3.f : 2.f;
-
- // Add the last line (which was not finished with a \n)
- UnderlineCoords.push_back(X);
- UnderlineCoords.push_back(Y + 2);
-
- // Draw the underlines as quads
- GLCheck(glDisable(GL_TEXTURE_2D));
- glBegin(GL_QUADS);
- for (std::size_t i = 0; i < UnderlineCoords.size(); i += 2)
- {
- glVertex2f(0, UnderlineCoords[i + 1]);
- glVertex2f(0, UnderlineCoords[i + 1] + Thickness);
- glVertex2f(UnderlineCoords[i], UnderlineCoords[i + 1] + Thickness);
- glVertex2f(UnderlineCoords[i], UnderlineCoords[i + 1]);
- }
- glEnd();
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Recompute the bounding rectangle of the text
-////////////////////////////////////////////////////////////
-void String::RecomputeRect()
-{
- // First get the internal UTF-32 string of the text
- const Unicode::UTF32String& Text = myText;
-
- // Reset the "need update" state
- myNeedRectUpdate = false;
-
- // No text, empty box :)
- if (Text.empty())
- {
- myBaseRect = FloatRect(0, 0, 0, 0);
- return;
- }
-
- // Initial values
- float CurWidth = 0;
- float CurHeight = 0;
- float Width = 0;
- float Height = 0;
- float Factor = mySize / myFont->GetCharacterSize();
-
- // Go through each character
- for (std::size_t i = 0; i < Text.size(); ++i)
- {
- // Get the current character and its corresponding glyph
- Uint32 CurChar = Text[i];
- const Glyph& CurGlyph = myFont->GetGlyph(CurChar);
- float Advance = CurGlyph.Advance * Factor;
- const IntRect& Rect = CurGlyph.Rectangle;
-
- // Handle special characters
- switch (CurChar)
- {
- case L' ' : CurWidth += Advance; continue;
- case L'\t' : CurWidth += Advance * 4; continue;
- case L'\v' : Height += mySize * 4; CurHeight = 0; continue;
-
- case L'\n' :
- Height += mySize;
- CurHeight = 0;
- if (CurWidth > Width)
- Width = CurWidth;
- CurWidth = 0;
- continue;
- }
-
- // Advance to the next character
- CurWidth += Advance;
-
- // Update the maximum height
- float CharHeight = (myFont->GetCharacterSize() + Rect.Bottom) * Factor;
- if (CharHeight > CurHeight)
- CurHeight = CharHeight;
- }
-
- // Update the last line
- if (CurWidth > Width)
- Width = CurWidth;
- Height += CurHeight;
-
- // Add a slight width / height if we're using the bold style
- if (myStyle & Bold)
- {
- Width += 1 * Factor;
- Height += 1 * Factor;
- }
-
- // Add a slight width if we're using the italic style
- if (myStyle & Italic)
- {
- Width += 0.208f * mySize;
- }
-
- // Add a slight height if we're using the underlined style
- if (myStyle & Underlined)
- {
- if (CurHeight < mySize + 4 * Factor)
- Height += 4 * Factor;
- }
-
- // Finally update the rectangle
- myBaseRect.Left = 0;
- myBaseRect.Top = 0;
- myBaseRect.Right = Width;
- myBaseRect.Bottom = Height;
-}
-
-} // namespace sf
diff --git a/src/SFML/Graphics/Text.cpp b/src/SFML/Graphics/Text.cpp
new file mode 100644
index 0000000..ec64822
--- /dev/null
+++ b/src/SFML/Graphics/Text.cpp
@@ -0,0 +1,346 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Text.hpp>
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/RenderTarget.hpp>
+#include <cassert>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Text::Text() :
+m_string (),
+m_font (NULL),
+m_characterSize(30),
+m_style (Regular),
+m_color (255, 255, 255),
+m_vertices (Quads),
+m_bounds ()
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+Text::Text(const String& string, const Font& font, unsigned int characterSize) :
+m_string (string),
+m_font (&font),
+m_characterSize(characterSize),
+m_style (Regular),
+m_color (255, 255, 255),
+m_vertices (Quads),
+m_bounds ()
+{
+ updateGeometry();
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::setString(const String& string)
+{
+ m_string = string;
+ updateGeometry();
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::setFont(const Font& font)
+{
+ if (m_font != &font)
+ {
+ m_font = &font;
+ updateGeometry();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::setCharacterSize(unsigned int size)
+{
+ if (m_characterSize != size)
+ {
+ m_characterSize = size;
+ updateGeometry();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::setStyle(Uint32 style)
+{
+ if (m_style != style)
+ {
+ m_style = style;
+ updateGeometry();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::setColor(const Color& color)
+{
+ if (color != m_color)
+ {
+ m_color = color;
+ for (unsigned int i = 0; i < m_vertices.getVertexCount(); ++i)
+ m_vertices[i].color = m_color;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+const String& Text::getString() const
+{
+ return m_string;
+}
+
+
+////////////////////////////////////////////////////////////
+const Font* Text::getFont() const
+{
+ return m_font;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int Text::getCharacterSize() const
+{
+ return m_characterSize;
+}
+
+
+////////////////////////////////////////////////////////////
+Uint32 Text::getStyle() const
+{
+ return m_style;
+}
+
+
+////////////////////////////////////////////////////////////
+const Color& Text::getColor() const
+{
+ return m_color;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f Text::findCharacterPos(std::size_t index) const
+{
+ // Make sure that we have a valid font
+ if (!m_font)
+ return Vector2f();
+
+ // Adjust the index if it's out of range
+ if (index > m_string.getSize())
+ index = m_string.getSize();
+
+ // Precompute the variables needed by the algorithm
+ bool bold = (m_style & Bold) != 0;
+ float hspace = static_cast<float>(m_font->getGlyph(L' ', m_characterSize, bold).advance);
+ float vspace = static_cast<float>(m_font->getLineSpacing(m_characterSize));
+
+ // Compute the position
+ Vector2f position;
+ Uint32 prevChar = 0;
+ for (std::size_t i = 0; i < index; ++i)
+ {
+ Uint32 curChar = m_string[i];
+
+ // Apply the kerning offset
+ position.x += static_cast<float>(m_font->getKerning(prevChar, curChar, m_characterSize));
+ prevChar = curChar;
+
+ // Handle special characters
+ switch (curChar)
+ {
+ case L' ' : position.x += hspace; continue;
+ case L'\t' : position.x += hspace * 4; continue;
+ case L'\n' : position.y += vspace; position.x = 0; continue;
+ case L'\v' : position.y += vspace * 4; continue;
+ }
+
+ // For regular characters, add the advance offset of the glyph
+ position.x += static_cast<float>(m_font->getGlyph(curChar, m_characterSize, bold).advance);
+ }
+
+ // Transform the position to global coordinates
+ position = getTransform().transformPoint(position);
+
+ return position;
+}
+
+
+////////////////////////////////////////////////////////////
+FloatRect Text::getLocalBounds() const
+{
+ return m_bounds;
+}
+
+
+////////////////////////////////////////////////////////////
+FloatRect Text::getGlobalBounds() const
+{
+ return getTransform().transformRect(getLocalBounds());
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::draw(RenderTarget& target, RenderStates states) const
+{
+ if (m_font)
+ {
+ states.transform *= getTransform();
+ states.texture = &m_font->getTexture(m_characterSize);
+ target.draw(m_vertices, states);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Text::updateGeometry()
+{
+ // Clear the previous geometry
+ m_vertices.clear();
+ m_bounds = FloatRect();
+
+ // No font: nothing to draw
+ if (!m_font)
+ return;
+
+ // No text: nothing to draw
+ if (m_string.isEmpty())
+ return;
+
+ // Compute values related to the text style
+ bool bold = (m_style & Bold) != 0;
+ bool underlined = (m_style & Underlined) != 0;
+ float italic = (m_style & Italic) ? 0.208f : 0.f; // 12 degrees
+ float underlineOffset = m_characterSize * 0.1f;
+ float underlineThickness = m_characterSize * (bold ? 0.1f : 0.07f);
+
+ // Precompute the variables needed by the algorithm
+ float hspace = static_cast<float>(m_font->getGlyph(L' ', m_characterSize, bold).advance);
+ float vspace = static_cast<float>(m_font->getLineSpacing(m_characterSize));
+ float x = 0.f;
+ float y = static_cast<float>(m_characterSize);
+
+ // Create one quad for each character
+ float minY = static_cast<float>(m_characterSize);
+ Uint32 prevChar = 0;
+ for (std::size_t i = 0; i < m_string.getSize(); ++i)
+ {
+ Uint32 curChar = m_string[i];
+
+ // Apply the kerning offset
+ x += static_cast<float>(m_font->getKerning(prevChar, curChar, m_characterSize));
+ prevChar = curChar;
+
+ // If we're using the underlined style and there's a new line, draw a line
+ if (underlined && (curChar == L'\n'))
+ {
+ float top = y + underlineOffset;
+ float bottom = top + underlineThickness;
+
+ m_vertices.append(Vertex(Vector2f(0, top), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(x, top), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(x, bottom), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(0, bottom), m_color, Vector2f(1, 1)));
+ }
+
+ // Handle special characters
+ switch (curChar)
+ {
+ case L' ' :
+ x += hspace;
+ continue;
+
+ case L'\t' :
+ x += hspace * 4;
+ continue;
+
+ case L'\n' :
+ if (x > m_bounds.width)
+ m_bounds.width = x;
+ y += vspace;
+ x = 0;
+ continue;
+
+ case L'\v' :
+ y += vspace * 4;
+ continue;
+ }
+
+ // Extract the current glyph's description
+ const Glyph& glyph = m_font->getGlyph(curChar, m_characterSize, bold);
+
+ int left = glyph.bounds.left;
+ int top = glyph.bounds.top;
+ int right = glyph.bounds.left + glyph.bounds.width;
+ int bottom = glyph.bounds.top + glyph.bounds.height;
+
+ float u1 = static_cast<float>(glyph.textureRect.left);
+ float v1 = static_cast<float>(glyph.textureRect.top);
+ float u2 = static_cast<float>(glyph.textureRect.left + glyph.textureRect.width);
+ float v2 = static_cast<float>(glyph.textureRect.top + glyph.textureRect.height);
+
+ // Add a quad for the current character
+ m_vertices.append(Vertex(Vector2f(x + left - italic * top, y + top), m_color, Vector2f(u1, v1)));
+ m_vertices.append(Vertex(Vector2f(x + right - italic * top, y + top), m_color, Vector2f(u2, v1)));
+ m_vertices.append(Vertex(Vector2f(x + right - italic * bottom, y + bottom), m_color, Vector2f(u2, v2)));
+ m_vertices.append(Vertex(Vector2f(x + left - italic * bottom, y + bottom), m_color, Vector2f(u1, v2)));
+
+ // Advance to the next character
+ x += glyph.advance;
+
+ // Update the minimum Y coordinate
+ if (y + top < minY)
+ minY = y + top;
+ }
+
+ // If we're using the underlined style, add the last line
+ if (underlined)
+ {
+ float top = y + underlineOffset;
+ float bottom = top + underlineThickness;
+
+ m_vertices.append(Vertex(Vector2f(0, top), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(x, top), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(x, bottom), m_color, Vector2f(1, 1)));
+ m_vertices.append(Vertex(Vector2f(0, bottom), m_color, Vector2f(1, 1)));
+ }
+
+ // Update the bounding rectangle
+ m_bounds.left = 0;
+ m_bounds.top = minY;
+ if (x > m_bounds.width)
+ m_bounds.width = x;
+ m_bounds.height = y - minY;
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Texture.cpp b/src/SFML/Graphics/Texture.cpp
new file mode 100644
index 0000000..7b5fdb2
--- /dev/null
+++ b/src/SFML/Graphics/Texture.cpp
@@ -0,0 +1,545 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Texture.hpp>
+#include <SFML/Graphics/Image.hpp>
+#include <SFML/Graphics/GLCheck.hpp>
+#include <SFML/Graphics/TextureSaver.hpp>
+#include <SFML/Window/Window.hpp>
+#include <SFML/System/Mutex.hpp>
+#include <SFML/System/Lock.hpp>
+#include <SFML/System/Err.hpp>
+#include <cassert>
+#include <cstring>
+
+
+namespace
+{
+ // Thread-safe unique identifier generator,
+ // is used for states cache (see RenderTarget)
+ sf::Uint64 getUniqueId()
+ {
+ static sf::Uint64 id = 1; // start at 1, zero is "no texture"
+ static sf::Mutex mutex;
+
+ sf::Lock lock(mutex);
+ return id++;
+ }
+}
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Texture::Texture() :
+m_size (0, 0),
+m_actualSize (0, 0),
+m_texture (0),
+m_isSmooth (false),
+m_isRepeated (false),
+m_pixelsFlipped(false),
+m_cacheId (getUniqueId())
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+Texture::Texture(const Texture& copy) :
+m_size (0, 0),
+m_actualSize (0, 0),
+m_texture (0),
+m_isSmooth (copy.m_isSmooth),
+m_isRepeated (copy.m_isRepeated),
+m_pixelsFlipped(false),
+m_cacheId (getUniqueId())
+{
+ if (copy.m_texture)
+ loadFromImage(copy.copyToImage());
+}
+
+
+////////////////////////////////////////////////////////////
+Texture::~Texture()
+{
+ // Destroy the OpenGL texture
+ if (m_texture)
+ {
+ ensureGlContext();
+
+ GLuint texture = static_cast<GLuint>(m_texture);
+ glCheck(glDeleteTextures(1, &texture));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::create(unsigned int width, unsigned int height)
+{
+ // Check if texture parameters are valid before creating it
+ if ((width == 0) || (height == 0))
+ {
+ err() << "Failed to create texture, invalid size (" << width << "x" << height << ")" << std::endl;
+ return false;
+ }
+
+ // Compute the internal texture dimensions depending on NPOT textures support
+ Vector2u actualSize(getValidSize(width), getValidSize(height));
+
+ // Check the maximum texture size
+ unsigned int maxSize = getMaximumSize();
+ if ((actualSize.x > maxSize) || (actualSize.y > maxSize))
+ {
+ err() << "Failed to create texture, its internal size is too high "
+ << "(" << actualSize.x << "x" << actualSize.y << ", "
+ << "maximum is " << maxSize << "x" << maxSize << ")"
+ << std::endl;
+ return false;
+ }
+
+ // All the validity checks passed, we can store the new texture settings
+ m_size.x = width;
+ m_size.y = height;
+ m_actualSize = actualSize;
+ m_pixelsFlipped = false;
+
+ ensureGlContext();
+
+ // Create the OpenGL texture if it doesn't exist yet
+ if (!m_texture)
+ {
+ GLuint texture;
+ glCheck(glGenTextures(1, &texture));
+ m_texture = static_cast<unsigned int>(texture);
+ }
+
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Initialize the texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_actualSize.x, m_actualSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, m_isRepeated ? GL_REPEAT : GL_CLAMP_TO_EDGE));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, m_isRepeated ? GL_REPEAT : GL_CLAMP_TO_EDGE));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, m_isSmooth ? GL_LINEAR : GL_NEAREST));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, m_isSmooth ? GL_LINEAR : GL_NEAREST));
+ m_cacheId = getUniqueId();
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::loadFromFile(const std::string& filename, const IntRect& area)
+{
+ Image image;
+ return image.loadFromFile(filename) && loadFromImage(image, area);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::loadFromMemory(const void* data, std::size_t size, const IntRect& area)
+{
+ Image image;
+ return image.loadFromMemory(data, size) && loadFromImage(image, area);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::loadFromStream(InputStream& stream, const IntRect& area)
+{
+ Image image;
+ return image.loadFromStream(stream) && loadFromImage(image, area);
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::loadFromImage(const Image& image, const IntRect& area)
+{
+ // Retrieve the image size
+ int width = static_cast<int>(image.getSize().x);
+ int height = static_cast<int>(image.getSize().y);
+
+ // Load the entire image if the source area is either empty or contains the whole image
+ if (area.width == 0 || (area.height == 0) ||
+ ((area.left <= 0) && (area.top <= 0) && (area.width >= width) && (area.height >= height)))
+ {
+ // Load the entire image
+ if (create(image.getSize().x, image.getSize().y))
+ {
+ update(image);
+
+ // Force an OpenGL flush, so that the texture will appear updated
+ // in all contexts immediately (solves problems in multi-threaded apps)
+ glCheck(glFlush());
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ // Load a sub-area of the image
+
+ // Adjust the rectangle to the size of the image
+ IntRect rectangle = area;
+ if (rectangle.left < 0) rectangle.left = 0;
+ if (rectangle.top < 0) rectangle.top = 0;
+ if (rectangle.left + rectangle.width > width) rectangle.width = width - rectangle.left;
+ if (rectangle.top + rectangle.height > height) rectangle.height = height - rectangle.top;
+
+ // Create the texture and upload the pixels
+ if (create(rectangle.width, rectangle.height))
+ {
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Copy the pixels to the texture, row by row
+ const Uint8* pixels = image.getPixelsPtr() + 4 * (rectangle.left + (width * rectangle.top));
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ for (int i = 0; i < rectangle.height; ++i)
+ {
+ glCheck(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, i, rectangle.width, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels));
+ pixels += 4 * width;
+ }
+
+ // Force an OpenGL flush, so that the texture will appear updated
+ // in all contexts immediately (solves problems in multi-threaded apps)
+ glCheck(glFlush());
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2u Texture::getSize() const
+{
+ return m_size;
+}
+
+
+////////////////////////////////////////////////////////////
+Image Texture::copyToImage() const
+{
+ // Easy case: empty texture
+ if (!m_texture)
+ return Image();
+
+ ensureGlContext();
+
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Create an array of pixels
+ std::vector<Uint8> pixels(m_size.x * m_size.y * 4);
+
+ if ((m_size == m_actualSize) && !m_pixelsFlipped)
+ {
+ // Texture is not padded nor flipped, we can use a direct copy
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &pixels[0]));
+ }
+ else
+ {
+ // Texture is either padded or flipped, we have to use a slower algorithm
+
+ // All the pixels will first be copied to a temporary array
+ std::vector<Uint8> allPixels(m_actualSize.x * m_actualSize.y * 4);
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &allPixels[0]));
+
+ // Then we copy the useful pixels from the temporary array to the final one
+ const Uint8* src = &allPixels[0];
+ Uint8* dst = &pixels[0];
+ int srcPitch = m_actualSize.x * 4;
+ int dstPitch = m_size.x * 4;
+
+ // Handle the case where source pixels are flipped vertically
+ if (m_pixelsFlipped)
+ {
+ src += srcPitch * (m_size.y - 1);
+ srcPitch = -srcPitch;
+ }
+
+ for (unsigned int i = 0; i < m_size.y; ++i)
+ {
+ std::memcpy(dst, src, dstPitch);
+ src += srcPitch;
+ dst += dstPitch;
+ }
+ }
+
+ // Create the image
+ Image image;
+ image.create(m_size.x, m_size.y, &pixels[0]);
+
+ return image;
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Uint8* pixels)
+{
+ // Update the whole texture
+ update(pixels, m_size.x, m_size.y, 0, 0);
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y)
+{
+ assert(x + width <= m_size.x);
+ assert(y + height <= m_size.y);
+
+ if (pixels && m_texture)
+ {
+ ensureGlContext();
+
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Copy pixels from the given array to the texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels));
+ m_pixelsFlipped = false;
+ m_cacheId = getUniqueId();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Image& image)
+{
+ // Update the whole texture
+ update(image.getPixelsPtr(), image.getSize().x, image.getSize().y, 0, 0);
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Image& image, unsigned int x, unsigned int y)
+{
+ update(image.getPixelsPtr(), image.getSize().x, image.getSize().y, x, y);
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Window& window)
+{
+ update(window, 0, 0);
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::update(const Window& window, unsigned int x, unsigned int y)
+{
+ assert(x + window.getSize().x <= m_size.x);
+ assert(y + window.getSize().y <= m_size.y);
+
+ if (m_texture && window.setActive(true))
+ {
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ // Copy pixels from the back-buffer to the texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x, y, 0, 0, window.getSize().x, window.getSize().y));
+ m_pixelsFlipped = true;
+ m_cacheId = getUniqueId();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::setSmooth(bool smooth)
+{
+ if (smooth != m_isSmooth)
+ {
+ m_isSmooth = smooth;
+
+ if (m_texture)
+ {
+ ensureGlContext();
+
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, m_isSmooth ? GL_LINEAR : GL_NEAREST));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, m_isSmooth ? GL_LINEAR : GL_NEAREST));
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::isSmooth() const
+{
+ return m_isSmooth;
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::setRepeated(bool repeated)
+{
+ if (repeated != m_isRepeated)
+ {
+ m_isRepeated = repeated;
+
+ if (m_texture)
+ {
+ ensureGlContext();
+
+ // Make sure that the current texture binding will be preserved
+ priv::TextureSaver save;
+
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_texture));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, m_isRepeated ? GL_REPEAT : GL_CLAMP_TO_EDGE));
+ glCheck(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, m_isRepeated ? GL_REPEAT : GL_CLAMP_TO_EDGE));
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool Texture::isRepeated() const
+{
+ return m_isRepeated;
+}
+
+
+////////////////////////////////////////////////////////////
+void Texture::bind(const Texture* texture, CoordinateType coordinateType)
+{
+ ensureGlContext();
+
+ if (texture && texture->m_texture)
+ {
+ // Bind the texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, texture->m_texture));
+
+ // Check if we need to define a special texture matrix
+ if ((coordinateType == Pixels) || texture->m_pixelsFlipped)
+ {
+ GLfloat matrix[16] = {1.f, 0.f, 0.f, 0.f,
+ 0.f, 1.f, 0.f, 0.f,
+ 0.f, 0.f, 1.f, 0.f,
+ 0.f, 0.f, 0.f, 1.f};
+
+ // If non-normalized coordinates (= pixels) are requested, we need to
+ // setup scale factors that convert the range [0 .. size] to [0 .. 1]
+ if (coordinateType == Pixels)
+ {
+ matrix[0] = 1.f / texture->m_actualSize.x;
+ matrix[5] = 1.f / texture->m_actualSize.y;
+ }
+
+ // If pixels are flipped we must invert the Y axis
+ if (texture->m_pixelsFlipped)
+ {
+ matrix[5] = -matrix[5];
+ matrix[13] = static_cast<float>(texture->m_size.y / texture->m_actualSize.y);
+ }
+
+ // Load the matrix
+ glCheck(glMatrixMode(GL_TEXTURE));
+ glCheck(glLoadMatrixf(matrix));
+
+ // Go back to model-view mode (sf::RenderTarget relies on it)
+ glCheck(glMatrixMode(GL_MODELVIEW));
+ }
+ }
+ else
+ {
+ // Bind no texture
+ glCheck(glBindTexture(GL_TEXTURE_2D, 0));
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int Texture::getMaximumSize()
+{
+ ensureGlContext();
+
+ GLint size;
+ glCheck(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size));
+
+ return static_cast<unsigned int>(size);
+}
+
+
+////////////////////////////////////////////////////////////
+Texture& Texture::operator =(const Texture& right)
+{
+ Texture temp(right);
+
+ std::swap(m_size, temp.m_size);
+ std::swap(m_actualSize, temp.m_actualSize);
+ std::swap(m_texture, temp.m_texture);
+ std::swap(m_isSmooth, temp.m_isSmooth);
+ std::swap(m_isRepeated, temp.m_isRepeated);
+ std::swap(m_pixelsFlipped, temp.m_pixelsFlipped);
+ m_cacheId = getUniqueId();
+
+ return *this;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int Texture::getValidSize(unsigned int size)
+{
+ ensureGlContext();
+
+ // Make sure that GLEW is initialized
+ priv::ensureGlewInit();
+
+ if (GLEW_ARB_texture_non_power_of_two)
+ {
+ // If hardware supports NPOT textures, then just return the unmodified size
+ return size;
+ }
+ else
+ {
+ // If hardware doesn't support NPOT textures, we calculate the nearest power of two
+ unsigned int powerOfTwo = 1;
+ while (powerOfTwo < size)
+ powerOfTwo *= 2;
+
+ return powerOfTwo;
+ }
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Matrix3.cpp b/src/SFML/Graphics/TextureSaver.cpp
index 7de4b0f..1037fd3 100755..100644
--- a/src/SFML/Graphics/Matrix3.cpp
+++ b/src/SFML/Graphics/TextureSaver.cpp
@@ -1,40 +1,50 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Graphics/Matrix3.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-const Matrix3 Matrix3::Identity(1, 0, 0,
- 0, 1, 0,
- 0, 0, 1);
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/TextureSaver.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+TextureSaver::TextureSaver()
+{
+ glCheck(glGetIntegerv(GL_TEXTURE_BINDING_2D, &m_textureBinding));
+}
+
+
+////////////////////////////////////////////////////////////
+TextureSaver::~TextureSaver()
+{
+ glCheck(glBindTexture(GL_TEXTURE_2D, m_textureBinding));
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/Audio/AudioResource.hpp b/src/SFML/Graphics/TextureSaver.hpp
index 410466d..1c23d04 100755..100644
--- a/include/SFML/Audio/AudioResource.hpp
+++ b/src/SFML/Graphics/TextureSaver.hpp
@@ -1,67 +1,75 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_AUDIORESOURCE_HPP
-#define SFML_AUDIORESOURCE_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Abstract base class for every class that owns a
-/// device-dependant resource -- allow them to initialize / shutdown
-/// even when the audio context is not created
-////////////////////////////////////////////////////////////
-class SFML_API AudioResource
-{
-protected :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- AudioResource();
-
- ////////////////////////////////////////////////////////////
- /// Copy constructor
- ///
- ////////////////////////////////////////////////////////////
- AudioResource(const AudioResource&);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~AudioResource();
-};
-
-} // namespace sf
-
-
-#endif // SFML_AUDIORESOURCE_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_TEXTURESAVER_HPP
+#define SFML_TEXTURESAVER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/GLCheck.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Automatic wrapper for saving and restoring the current texture binding
+///
+////////////////////////////////////////////////////////////
+class TextureSaver
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// The current texture binding is saved.
+ ///
+ ////////////////////////////////////////////////////////////
+ TextureSaver();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ /// The previous texture binding is restored.
+ ///
+ ////////////////////////////////////////////////////////////
+ ~TextureSaver();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ GLint m_textureBinding; ///< Texture binding to restore
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_TEXTURESAVER_HPP
diff --git a/src/SFML/Graphics/Transform.cpp b/src/SFML/Graphics/Transform.cpp
new file mode 100644
index 0000000..6da0b51
--- /dev/null
+++ b/src/SFML/Graphics/Transform.cpp
@@ -0,0 +1,272 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Transform.hpp>
+#include <cmath>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+const Transform Transform::Identity;
+
+
+////////////////////////////////////////////////////////////
+Transform::Transform()
+{
+ // Identity matrix
+ m_matrix[0] = 1.f; m_matrix[4] = 0.f; m_matrix[8] = 0.f; m_matrix[12] = 0.f;
+ m_matrix[1] = 0.f; m_matrix[5] = 1.f; m_matrix[9] = 0.f; m_matrix[13] = 0.f;
+ m_matrix[2] = 0.f; m_matrix[6] = 0.f; m_matrix[10] = 1.f; m_matrix[14] = 0.f;
+ m_matrix[3] = 0.f; m_matrix[7] = 0.f; m_matrix[11] = 0.f; m_matrix[15] = 1.f;
+}
+
+
+////////////////////////////////////////////////////////////
+Transform::Transform(float a00, float a01, float a02,
+ float a10, float a11, float a12,
+ float a20, float a21, float a22)
+{
+ m_matrix[0] = a00; m_matrix[4] = a01; m_matrix[8] = 0.f; m_matrix[12] = a02;
+ m_matrix[1] = a10; m_matrix[5] = a11; m_matrix[9] = 0.f; m_matrix[13] = a12;
+ m_matrix[2] = 0.f; m_matrix[6] = 0.f; m_matrix[10] = 1.f; m_matrix[14] = 0.f;
+ m_matrix[3] = a20; m_matrix[7] = a21; m_matrix[11] = 0.f; m_matrix[15] = a22;
+}
+
+
+////////////////////////////////////////////////////////////
+const float* Transform::getMatrix() const
+{
+ return m_matrix;
+}
+
+
+////////////////////////////////////////////////////////////
+Transform Transform::getInverse() const
+{
+ // Compute the determinant
+ float det = m_matrix[0] * (m_matrix[15] * m_matrix[5] - m_matrix[7] * m_matrix[13]) -
+ m_matrix[1] * (m_matrix[15] * m_matrix[4] - m_matrix[7] * m_matrix[12]) +
+ m_matrix[3] * (m_matrix[13] * m_matrix[4] - m_matrix[5] * m_matrix[12]);
+
+ // Compute the inverse if the determinant is not zero
+ // (don't use an epsilon because the determinant may *really* be tiny)
+ if (det != 0.f)
+ {
+ return Transform( (m_matrix[15] * m_matrix[5] - m_matrix[7] * m_matrix[13]) / det,
+ -(m_matrix[15] * m_matrix[4] - m_matrix[7] * m_matrix[12]) / det,
+ (m_matrix[13] * m_matrix[4] - m_matrix[5] * m_matrix[12]) / det,
+ -(m_matrix[15] * m_matrix[1] - m_matrix[3] * m_matrix[13]) / det,
+ (m_matrix[15] * m_matrix[0] - m_matrix[3] * m_matrix[12]) / det,
+ -(m_matrix[13] * m_matrix[0] - m_matrix[1] * m_matrix[12]) / det,
+ (m_matrix[7] * m_matrix[1] - m_matrix[3] * m_matrix[5]) / det,
+ -(m_matrix[7] * m_matrix[0] - m_matrix[3] * m_matrix[4]) / det,
+ (m_matrix[5] * m_matrix[0] - m_matrix[1] * m_matrix[4]) / det);
+ }
+ else
+ {
+ return Identity;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f Transform::transformPoint(float x, float y) const
+{
+ return Vector2f(m_matrix[0] * x + m_matrix[4] * y + m_matrix[12],
+ m_matrix[1] * x + m_matrix[5] * y + m_matrix[13]);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f Transform::transformPoint(const Vector2f& point) const
+{
+ return transformPoint(point.x, point.y);
+}
+
+
+////////////////////////////////////////////////////////////
+FloatRect Transform::transformRect(const FloatRect& rectangle) const
+{
+ // Transform the 4 corners of the rectangle
+ const Vector2f points[] =
+ {
+ transformPoint(rectangle.left, rectangle.top),
+ transformPoint(rectangle.left, rectangle.top + rectangle.height),
+ transformPoint(rectangle.left + rectangle.width, rectangle.top),
+ transformPoint(rectangle.left + rectangle.width, rectangle.top + rectangle.height)
+ };
+
+ // Compute the bounding rectangle of the transformed points
+ float left = points[0].x;
+ float top = points[0].y;
+ float right = points[0].x;
+ float bottom = points[0].y;
+ for (int i = 1; i < 4; ++i)
+ {
+ if (points[i].x < left) left = points[i].x;
+ else if (points[i].x > right) right = points[i].x;
+ if (points[i].y < top) top = points[i].y;
+ else if (points[i].y > bottom) bottom = points[i].y;
+ }
+
+ return FloatRect(left, top, right - left, bottom - top);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::combine(const Transform& transform)
+{
+ const float* a = m_matrix;
+ const float* b = transform.m_matrix;
+
+ *this = Transform(a[0] * b[0] + a[4] * b[1] + a[12] * b[3],
+ a[0] * b[4] + a[4] * b[5] + a[12] * b[7],
+ a[0] * b[12] + a[4] * b[13] + a[12] * b[15],
+ a[1] * b[0] + a[5] * b[1] + a[13] * b[3],
+ a[1] * b[4] + a[5] * b[5] + a[13] * b[7],
+ a[1] * b[12] + a[5] * b[13] + a[13] * b[15],
+ a[3] * b[0] + a[7] * b[1] + a[15] * b[3],
+ a[3] * b[4] + a[7] * b[5] + a[15] * b[7],
+ a[3] * b[12] + a[7] * b[13] + a[15] * b[15]);
+
+ return *this;
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::translate(float x, float y)
+{
+ Transform translation(1, 0, x,
+ 0, 1, y,
+ 0, 0, 1);
+
+ return combine(translation);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::translate(const Vector2f& offset)
+{
+ return translate(offset.x, offset.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::rotate(float angle)
+{
+ float rad = angle * 3.141592654f / 180.f;
+ float cos = std::cos(rad);
+ float sin = std::sin(rad);
+
+ Transform rotation(cos, -sin, 0,
+ sin, cos, 0,
+ 0, 0, 1);
+
+ return combine(rotation);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::rotate(float angle, float centerX, float centerY)
+{
+ float rad = angle * 3.141592654f / 180.f;
+ float cos = std::cos(rad);
+ float sin = std::sin(rad);
+
+ Transform rotation(cos, -sin, centerX * (1 - cos) + centerY * sin,
+ sin, cos, centerY * (1 - cos) - centerX * sin,
+ 0, 0, 1);
+
+ return combine(rotation);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::rotate(float angle, const Vector2f& center)
+{
+ return rotate(angle, center.x, center.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::scale(float scaleX, float scaleY)
+{
+ Transform scaling(scaleX, 0, 0,
+ 0, scaleY, 0,
+ 0, 0, 1);
+
+ return combine(scaling);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::scale(float scaleX, float scaleY, float centerX, float centerY)
+{
+ Transform scaling(scaleX, 0, centerX * (1 - scaleX),
+ 0, scaleY, centerY * (1 - scaleY),
+ 0, 0, 1);
+
+ return combine(scaling);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::scale(const Vector2f& factors)
+{
+ return scale(factors.x, factors.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& Transform::scale(const Vector2f& factors, const Vector2f& center)
+{
+ return scale(factors.x, factors.y, center.x, center.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform operator *(const Transform& left, const Transform& right)
+{
+ return Transform(left).combine(right);
+}
+
+
+////////////////////////////////////////////////////////////
+Transform& operator *=(Transform& left, const Transform& right)
+{
+ return left.combine(right);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2f operator *(const Transform& left, const Vector2f& right)
+{
+ return left.transformPoint(right);
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Transformable.cpp b/src/SFML/Graphics/Transformable.cpp
new file mode 100644
index 0000000..e2a830a
--- /dev/null
+++ b/src/SFML/Graphics/Transformable.cpp
@@ -0,0 +1,219 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Transformable.hpp>
+#include <cmath>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Transformable::Transformable() :
+m_origin (0, 0),
+m_position (0, 0),
+m_rotation (0),
+m_scale (1, 1),
+m_transform (),
+m_transformNeedUpdate (true),
+m_inverseTransform (),
+m_inverseTransformNeedUpdate(true)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Transformable::~Transformable()
+{
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setPosition(float x, float y)
+{
+ m_position.x = x;
+ m_position.y = y;
+ m_transformNeedUpdate = true;
+ m_inverseTransformNeedUpdate = true;
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setPosition(const Vector2f& position)
+{
+ setPosition(position.x, position.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setRotation(float angle)
+{
+ m_rotation = static_cast<float>(fmod(angle, 360));
+ if (m_rotation < 0)
+ m_rotation += 360.f;
+
+ m_transformNeedUpdate = true;
+ m_inverseTransformNeedUpdate = true;
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setScale(float factorX, float factorY)
+{
+ m_scale.x = factorX;
+ m_scale.y = factorY;
+ m_transformNeedUpdate = true;
+ m_inverseTransformNeedUpdate = true;
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setScale(const Vector2f& factors)
+{
+ setScale(factors.x, factors.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setOrigin(float x, float y)
+{
+ m_origin.x = x;
+ m_origin.y = y;
+ m_transformNeedUpdate = true;
+ m_inverseTransformNeedUpdate = true;
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::setOrigin(const Vector2f& origin)
+{
+ setOrigin(origin.x, origin.y);
+}
+
+
+////////////////////////////////////////////////////////////
+const Vector2f& Transformable::getPosition() const
+{
+ return m_position;
+}
+
+
+////////////////////////////////////////////////////////////
+float Transformable::getRotation() const
+{
+ return m_rotation;
+}
+
+
+////////////////////////////////////////////////////////////
+const Vector2f& Transformable::getScale() const
+{
+ return m_scale;
+}
+
+
+////////////////////////////////////////////////////////////
+const Vector2f& Transformable::getOrigin() const
+{
+ return m_origin;
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::move(float offsetX, float offsetY)
+{
+ setPosition(m_position.x + offsetX, m_position.y + offsetY);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::move(const Vector2f& offset)
+{
+ setPosition(m_position.x + offset.x, m_position.y + offset.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::rotate(float angle)
+{
+ setRotation(m_rotation + angle);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::scale(float factorX, float factorY)
+{
+ setScale(m_scale.x * factorX, m_scale.y * factorY);
+}
+
+
+////////////////////////////////////////////////////////////
+void Transformable::scale(const Vector2f& factor)
+{
+ setScale(m_scale.x * factor.x, m_scale.y * factor.y);
+}
+
+
+////////////////////////////////////////////////////////////
+const Transform& Transformable::getTransform() const
+{
+ // Recompute the combined transform if needed
+ if (m_transformNeedUpdate)
+ {
+ float angle = -m_rotation * 3.141592654f / 180.f;
+ float cosine = static_cast<float>(std::cos(angle));
+ float sine = static_cast<float>(std::sin(angle));
+ float sxc = m_scale.x * cosine;
+ float syc = m_scale.y * cosine;
+ float sxs = m_scale.x * sine;
+ float sys = m_scale.y * sine;
+ float tx = -m_origin.x * sxc - m_origin.y * sys + m_position.x;
+ float ty = m_origin.x * sxs - m_origin.y * syc + m_position.y;
+
+ m_transform = Transform( sxc, sys, tx,
+ -sxs, syc, ty,
+ 0.f, 0.f, 1.f);
+ m_transformNeedUpdate = false;
+ }
+
+ return m_transform;
+}
+
+
+////////////////////////////////////////////////////////////
+const Transform& Transformable::getInverseTransform() const
+{
+ // Recompute the inverse transform if needed
+ if (m_inverseTransformNeedUpdate)
+ {
+ m_inverseTransform = getTransform().getInverse();
+ m_inverseTransformNeedUpdate = false;
+ }
+
+ return m_inverseTransform;
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/Vertex.cpp b/src/SFML/Graphics/Vertex.cpp
new file mode 100644
index 0000000..b17a23f
--- /dev/null
+++ b/src/SFML/Graphics/Vertex.cpp
@@ -0,0 +1,77 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/Vertex.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Vertex::Vertex() :
+position (0, 0),
+color (255, 255, 255),
+texCoords(0, 0)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Vertex::Vertex(const Vector2f& thePosition) :
+position (thePosition),
+color (255, 255, 255),
+texCoords(0, 0)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Vertex::Vertex(const Vector2f& thePosition, const Color& theColor) :
+position (thePosition),
+color (theColor),
+texCoords(0, 0)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Vertex::Vertex(const Vector2f& thePosition, const Vector2f& theTexCoords) :
+position (thePosition),
+color (255, 255, 255),
+texCoords(theTexCoords)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Vertex::Vertex(const Vector2f& thePosition, const Color& theColor, const Vector2f& theTexCoords) :
+position (thePosition),
+color (theColor),
+texCoords(theTexCoords)
+{
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/VertexArray.cpp b/src/SFML/Graphics/VertexArray.cpp
new file mode 100644
index 0000000..0c8503d
--- /dev/null
+++ b/src/SFML/Graphics/VertexArray.cpp
@@ -0,0 +1,150 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Graphics/VertexArray.hpp>
+#include <SFML/Graphics/RenderTarget.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+VertexArray::VertexArray() :
+m_vertices (),
+m_primitiveType(Points)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+VertexArray::VertexArray(PrimitiveType type, unsigned int vertexCount) :
+m_vertices (vertexCount),
+m_primitiveType(type)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int VertexArray::getVertexCount() const
+{
+ return static_cast<unsigned int>(m_vertices.size());
+}
+
+
+////////////////////////////////////////////////////////////
+Vertex& VertexArray::operator [](unsigned int index)
+{
+ return m_vertices[index];
+}
+
+
+////////////////////////////////////////////////////////////
+const Vertex& VertexArray::operator [](unsigned int index) const
+{
+ return m_vertices[index];
+}
+
+
+////////////////////////////////////////////////////////////
+void VertexArray::clear()
+{
+ m_vertices.clear();
+}
+
+
+////////////////////////////////////////////////////////////
+void VertexArray::resize(unsigned int vertexCount)
+{
+ m_vertices.resize(vertexCount);
+}
+
+
+////////////////////////////////////////////////////////////
+void VertexArray::append(const Vertex& vertex)
+{
+ m_vertices.push_back(vertex);
+}
+
+
+////////////////////////////////////////////////////////////
+void VertexArray::setPrimitiveType(PrimitiveType type)
+{
+ m_primitiveType = type;
+}
+
+
+////////////////////////////////////////////////////////////
+PrimitiveType VertexArray::getPrimitiveType() const
+{
+ return m_primitiveType;
+}
+
+
+////////////////////////////////////////////////////////////
+FloatRect VertexArray::getBounds() const
+{
+ if (!m_vertices.empty())
+ {
+ float left = m_vertices[0].position.x;
+ float top = m_vertices[0].position.y;
+ float right = m_vertices[0].position.x;
+ float bottom = m_vertices[0].position.y;
+
+ for (std::size_t i = 1; i < m_vertices.size(); ++i)
+ {
+ Vector2f position = m_vertices[i].position;
+
+ // Update left and right
+ if (position.x < left)
+ left = position.x;
+ else if (position.x > right)
+ right = position.x;
+
+ // Update top and bottom
+ if (position.y < top)
+ top = position.y;
+ else if (position.y > bottom)
+ bottom = position.y;
+ }
+
+ return FloatRect(left, top, right - left, bottom - top);
+ }
+ else
+ {
+ // Array is empty
+ return FloatRect();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void VertexArray::draw(RenderTarget& target, RenderStates states) const
+{
+ if (!m_vertices.empty())
+ target.draw(&m_vertices[0], static_cast<unsigned int>(m_vertices.size()), m_primitiveType, states);
+}
+
+} // namespace sf
diff --git a/src/SFML/Graphics/View.cpp b/src/SFML/Graphics/View.cpp
index 0b2fb66..9524246 100755..100644
--- a/src/SFML/Graphics/View.cpp
+++ b/src/SFML/Graphics/View.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,183 +26,215 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Graphics/View.hpp>
-#include <algorithm>
+#include <cmath>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Construct the view from a rectangle
+View::View() :
+m_center (),
+m_size (),
+m_rotation (0),
+m_viewport (0, 0, 1, 1),
+m_transformUpdated (false),
+m_invTransformUpdated(false)
+{
+ reset(FloatRect(0, 0, 1000, 1000));
+}
+
+
////////////////////////////////////////////////////////////
-View::View(const FloatRect& ViewRect)
+View::View(const FloatRect& rectangle) :
+m_center (),
+m_size (),
+m_rotation (0),
+m_viewport (0, 0, 1, 1),
+m_transformUpdated (false),
+m_invTransformUpdated(false)
{
- SetFromRect(ViewRect);
+ reset(rectangle);
}
////////////////////////////////////////////////////////////
-/// Construct the view from its center and half-size
+View::View(const Vector2f& center, const Vector2f& size) :
+m_center (center),
+m_size (size),
+m_rotation (0),
+m_viewport (0, 0, 1, 1),
+m_transformUpdated (false),
+m_invTransformUpdated(false)
+{
+
+}
+
////////////////////////////////////////////////////////////
-View::View(const sf::Vector2f& Center, const sf::Vector2f& HalfSize) :
-myCenter (Center),
-myHalfSize (HalfSize),
-myNeedUpdate(true)
+void View::setCenter(float x, float y)
{
+ m_center.x = x;
+ m_center.y = y;
+ m_transformUpdated = false;
+ m_invTransformUpdated = false;
}
////////////////////////////////////////////////////////////
-/// Change the center of the view (take 2 values)
-////////////////////////////////////////////////////////////
-void View::SetCenter(float X, float Y)
+void View::setCenter(const Vector2f& center)
{
- myCenter.x = X;
- myCenter.y = Y;
- myNeedUpdate = true;
+ setCenter(center.x, center.y);
}
////////////////////////////////////////////////////////////
-/// Change the center of the view (take a vector)
-////////////////////////////////////////////////////////////
-void View::SetCenter(const sf::Vector2f& Center)
+void View::setSize(float width, float height)
{
- SetCenter(Center.x, Center.y);
+ m_size.x = width;
+ m_size.y = height;
+
+ m_transformUpdated = false;
+ m_invTransformUpdated = false;
}
////////////////////////////////////////////////////////////
-/// Change the half-size of the view (take 2 values)
-////////////////////////////////////////////////////////////
-void View::SetHalfSize(float HalfWidth, float HalfHeight)
+void View::setSize(const Vector2f& size)
{
- myHalfSize.x = HalfWidth;
- myHalfSize.y = HalfHeight;
- myNeedUpdate = true;
+ setSize(size.x, size.y);
}
////////////////////////////////////////////////////////////
-/// Change the half-size of the view (take a vector)
-////////////////////////////////////////////////////////////
-void View::SetHalfSize(const sf::Vector2f& HalfSize)
+void View::setRotation(float angle)
{
- SetHalfSize(HalfSize.x, HalfSize.y);
+ m_rotation = static_cast<float>(fmod(angle, 360));
+ if (m_rotation < 0)
+ m_rotation += 360.f;
+
+ m_transformUpdated = false;
+ m_invTransformUpdated = false;
}
////////////////////////////////////////////////////////////
-/// Rebuild the view from a rectangle
-////////////////////////////////////////////////////////////
-void View::SetFromRect(const FloatRect& ViewRect)
+void View::setViewport(const FloatRect& viewport)
{
- SetCenter( (ViewRect.Right + ViewRect.Left) / 2, (ViewRect.Bottom + ViewRect.Top) / 2);
- SetHalfSize((ViewRect.Right - ViewRect.Left) / 2, (ViewRect.Bottom - ViewRect.Top) / 2);
+ m_viewport = viewport;
}
////////////////////////////////////////////////////////////
-/// Get the center of the view
-////////////////////////////////////////////////////////////
-const sf::Vector2f& View::GetCenter() const
+void View::reset(const FloatRect& rectangle)
{
- return myCenter;
+ m_center.x = rectangle.left + rectangle.width / 2.f;
+ m_center.y = rectangle.top + rectangle.height / 2.f;
+ m_size.x = rectangle.width;
+ m_size.y = rectangle.height;
+ m_rotation = 0;
+
+ m_transformUpdated = false;
+ m_invTransformUpdated = false;
}
////////////////////////////////////////////////////////////
-/// Get the half-size of the view
-////////////////////////////////////////////////////////////
-const sf::Vector2f& View::GetHalfSize() const
+const Vector2f& View::getCenter() const
{
- return myHalfSize;
+ return m_center;
}
////////////////////////////////////////////////////////////
-/// Get the bounding rectangle of the view
-////////////////////////////////////////////////////////////
-const sf::FloatRect& View::GetRect() const
+const Vector2f& View::getSize() const
{
- // Recompute it if needed
- if (myNeedUpdate)
- const_cast<View*>(this)->RecomputeMatrix();
-
- return myRect;
+ return m_size;
}
////////////////////////////////////////////////////////////
-/// Move the view (take 2 values)
-////////////////////////////////////////////////////////////
-void View::Move(float OffsetX, float OffsetY)
+float View::getRotation() const
{
- myCenter.x += OffsetX;
- myCenter.y += OffsetY;
- myNeedUpdate = true;
+ return m_rotation;
}
////////////////////////////////////////////////////////////
-/// Move the view (take a vector)
+const FloatRect& View::getViewport() const
+{
+ return m_viewport;
+}
+
+
////////////////////////////////////////////////////////////
-void View::Move(const sf::Vector2f& Offset)
+void View::move(float offsetX, float offsetY)
{
- Move(Offset.x, Offset.y);
+ setCenter(m_center.x + offsetX, m_center.y + offsetY);
}
////////////////////////////////////////////////////////////
-/// Resize the view rectangle to simulate a zoom / unzoom effect
+void View::move(const Vector2f& offset)
+{
+ setCenter(m_center + offset);
+}
+
+
////////////////////////////////////////////////////////////
-void View::Zoom(float Factor)
+void View::rotate(float angle)
{
- if (Factor != 0)
- {
- myHalfSize /= Factor;
- myNeedUpdate = true;
- }
+ setRotation(m_rotation + angle);
}
////////////////////////////////////////////////////////////
-/// Get the projection matrix of the view
+void View::zoom(float factor)
+{
+ setSize(m_size.x * factor, m_size.y * factor);
+}
+
+
////////////////////////////////////////////////////////////
-const Matrix3& View::GetMatrix() const
+const Transform& View::getTransform() const
{
// Recompute the matrix if needed
- if (myNeedUpdate)
- const_cast<View*>(this)->RecomputeMatrix();
+ if (!m_transformUpdated)
+ {
+ // Rotation components
+ float angle = m_rotation * 3.141592654f / 180.f;
+ float cosine = static_cast<float>(std::cos(angle));
+ float sine = static_cast<float>(std::sin(angle));
+ float tx = -m_center.x * cosine - m_center.y * sine + m_center.x;
+ float ty = m_center.x * sine - m_center.y * cosine + m_center.y;
+
+ // Projection components
+ float a = 2.f / m_size.x;
+ float b = -2.f / m_size.y;
+ float c = -a * m_center.x;
+ float d = -b * m_center.y;
+
+ // Rebuild the projection matrix
+ m_transform = Transform( a * cosine, a * sine, a * tx + c,
+ -b * sine, b * cosine, b * ty + d,
+ 0.f, 0.f, 1.f);
+ m_transformUpdated = true;
+ }
- return myMatrix;
+ return m_transform;
}
////////////////////////////////////////////////////////////
-/// Recompute the view rectangle and the projection matrix
-////////////////////////////////////////////////////////////
-void View::RecomputeMatrix()
+const Transform& View::getInverseTransform() const
{
- // Compute the 4 corners of the view
- float Left = myCenter.x - myHalfSize.x;
- float Top = myCenter.y - myHalfSize.y;
- float Right = myCenter.x + myHalfSize.x;
- float Bottom = myCenter.y + myHalfSize.y;
-
- // Update the view rectangle - be careful, reversed views are allowed !
- myRect.Left = std::min(Left, Right);
- myRect.Top = std::min(Top, Bottom);
- myRect.Right = std::max(Left, Right);
- myRect.Bottom = std::max(Top, Bottom);
-
- // Update the projection matrix
- myMatrix(0, 0) = 2.f / (Right - Left);
- myMatrix(1, 1) = 2.f / (Top - Bottom);
- myMatrix(0, 2) = (Left + Right) / (Left - Right);
- myMatrix(1, 2) = (Bottom + Top) / (Bottom - Top);
+ // Recompute the matrix if needed
+ if (!m_invTransformUpdated)
+ {
+ m_inverseTransform = getTransform().getInverse();
+ m_invTransformUpdated = true;
+ }
- myNeedUpdate = false;
+ return m_inverseTransform;
}
} // namespace sf
diff --git a/src/SFML/Graphics/stb_image/stb_image.h b/src/SFML/Graphics/stb_image/stb_image.h
new file mode 100644
index 0000000..e6ed311
--- /dev/null
+++ b/src/SFML/Graphics/stb_image/stb_image.h
@@ -0,0 +1,4673 @@
+/* stbi-1.33 - public domain JPEG/PNG reader - http://nothings.org/stb_image.c
+ when you control the images you're loading
+ no warranty implied; use at your own risk
+
+ QUICK NOTES:
+ Primarily of interest to game developers and other people who can
+ avoid problematic images and only need the trivial interface
+
+ JPEG baseline (no JPEG progressive)
+ PNG 8-bit only
+
+ TGA (not sure what subset, if a subset)
+ BMP non-1bpp, non-RLE
+ PSD (composited view only, no extra channels)
+
+ GIF (*comp always reports as 4-channel)
+ HDR (radiance rgbE format)
+ PIC (Softimage PIC)
+
+ - decode from memory or through FILE (define STBI_NO_STDIO to remove code)
+ - decode from arbitrary I/O callbacks
+ - overridable dequantizing-IDCT, YCbCr-to-RGB conversion (define STBI_SIMD)
+
+ Latest revisions:
+ 1.33 (2011-07-14) minor fixes suggested by Dave Moore
+ 1.32 (2011-07-13) info support for all filetypes (SpartanJ)
+ 1.31 (2011-06-19) a few more leak fixes, bug in PNG handling (SpartanJ)
+ 1.30 (2011-06-11) added ability to load files via io callbacks (Ben Wenger)
+ 1.29 (2010-08-16) various warning fixes from Aurelien Pocheville
+ 1.28 (2010-08-01) fix bug in GIF palette transparency (SpartanJ)
+ 1.27 (2010-08-01) cast-to-uint8 to fix warnings (Laurent Gomila)
+ allow trailing 0s at end of image data (Laurent Gomila)
+ 1.26 (2010-07-24) fix bug in file buffering for PNG reported by SpartanJ
+
+ See end of file for full revision history.
+
+ TODO:
+ stbi_info support for BMP,PSD,HDR,PIC
+
+
+ ============================ Contributors =========================
+
+ Image formats Optimizations & bugfixes
+ Sean Barrett (jpeg, png, bmp) Fabian "ryg" Giesen
+ Nicolas Schulz (hdr, psd)
+ Jonathan Dummer (tga) Bug fixes & warning fixes
+ Jean-Marc Lienher (gif) Marc LeBlanc
+ Tom Seddon (pic) Christpher Lloyd
+ Thatcher Ulrich (psd) Dave Moore
+ Won Chun
+ the Horde3D community
+ Extensions, features Janez Zemva
+ Jetro Lauha (stbi_info) Jonathan Blow
+ James "moose2000" Brown (iPhone PNG) Laurent Gomila
+ Ben "Disch" Wenger (io callbacks) Aruelien Pocheville
+ Martin "SpartanJ" Golini Ryamond Barbiero
+ David Woo
+
+
+ If your name should be here but isn't, let Sean know.
+
+*/
+
+#ifndef STBI_INCLUDE_STB_IMAGE_H
+#define STBI_INCLUDE_STB_IMAGE_H
+
+// To get a header file for this, either cut and paste the header,
+// or create stb_image.h, #define STBI_HEADER_FILE_ONLY, and
+// then include stb_image.c from it.
+
+//// begin header file ////////////////////////////////////////////////////
+//
+// Limitations:
+// - no jpeg progressive support
+// - non-HDR formats support 8-bit samples only (jpeg, png)
+// - no delayed line count (jpeg) -- IJG doesn't support either
+// - no 1-bit BMP
+// - GIF always returns *comp=4
+//
+// Basic usage (see HDR discussion below):
+// int x,y,n;
+// unsigned char *data = stbi_load(filename, &x, &y, &n, 0);
+// // ... process data if not NULL ...
+// // ... x = width, y = height, n = # 8-bit components per pixel ...
+// // ... replace '0' with '1'..'4' to force that many components per pixel
+// // ... but 'n' will always be the number that it would have been if you said 0
+// stbi_image_free(data)
+//
+// Standard parameters:
+// int *x -- outputs image width in pixels
+// int *y -- outputs image height in pixels
+// int *comp -- outputs # of image components in image file
+// int req_comp -- if non-zero, # of image components requested in result
+//
+// The return value from an image loader is an 'unsigned char *' which points
+// to the pixel data. The pixel data consists of *y scanlines of *x pixels,
+// with each pixel consisting of N interleaved 8-bit components; the first
+// pixel pointed to is top-left-most in the image. There is no padding between
+// image scanlines or between pixels, regardless of format. The number of
+// components N is 'req_comp' if req_comp is non-zero, or *comp otherwise.
+// If req_comp is non-zero, *comp has the number of components that _would_
+// have been output otherwise. E.g. if you set req_comp to 4, you will always
+// get RGBA output, but you can check *comp to easily see if it's opaque.
+//
+// An output image with N components has the following components interleaved
+// in this order in each pixel:
+//
+// N=#comp components
+// 1 grey
+// 2 grey, alpha
+// 3 red, green, blue
+// 4 red, green, blue, alpha
+//
+// If image loading fails for any reason, the return value will be NULL,
+// and *x, *y, *comp will be unchanged. The function stbi_failure_reason()
+// can be queried for an extremely brief, end-user unfriendly explanation
+// of why the load failed. Define STBI_NO_FAILURE_STRINGS to avoid
+// compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly
+// more user-friendly ones.
+//
+// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized.
+//
+// ===========================================================================
+//
+// iPhone PNG support:
+//
+// By default we convert iphone-formatted PNGs back to RGB; nominally they
+// would silently load as BGR, except the existing code should have just
+// failed on such iPhone PNGs. But you can disable this conversion by
+// by calling stbi_convert_iphone_png_to_rgb(0), in which case
+// you will always just get the native iphone "format" through.
+//
+// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per
+// pixel to remove any premultiplied alpha *only* if the image file explicitly
+// says there's premultiplied data (currently only happens in iPhone images,
+// and only if iPhone convert-to-rgb processing is on).
+//
+// ===========================================================================
+//
+// HDR image support (disable by defining STBI_NO_HDR)
+//
+// stb_image now supports loading HDR images in general, and currently
+// the Radiance .HDR file format, although the support is provided
+// generically. You can still load any file through the existing interface;
+// if you attempt to load an HDR file, it will be automatically remapped to
+// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1;
+// both of these constants can be reconfigured through this interface:
+//
+// stbi_hdr_to_ldr_gamma(2.2f);
+// stbi_hdr_to_ldr_scale(1.0f);
+//
+// (note, do not use _inverse_ constants; stbi_image will invert them
+// appropriately).
+//
+// Additionally, there is a new, parallel interface for loading files as
+// (linear) floats to preserve the full dynamic range:
+//
+// float *data = stbi_loadf(filename, &x, &y, &n, 0);
+//
+// If you load LDR images through this interface, those images will
+// be promoted to floating point values, run through the inverse of
+// constants corresponding to the above:
+//
+// stbi_ldr_to_hdr_scale(1.0f);
+// stbi_ldr_to_hdr_gamma(2.2f);
+//
+// Finally, given a filename (or an open file or memory block--see header
+// file for details) containing image data, you can query for the "most
+// appropriate" interface to use (that is, whether the image is HDR or
+// not), using:
+//
+// stbi_is_hdr(char *filename);
+//
+// ===========================================================================
+//
+// I/O callbacks
+//
+// I/O callbacks allow you to read from arbitrary sources, like packaged
+// files or some other source. Data read from callbacks are processed
+// through a small internal buffer (currently 128 bytes) to try to reduce
+// overhead.
+//
+// The three functions you must define are "read" (reads some bytes of data),
+// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end).
+
+
+#ifndef STBI_NO_STDIO
+
+#if defined(_MSC_VER) && _MSC_VER >= 0x1400
+#define _CRT_SECURE_NO_WARNINGS // suppress bogus warnings about fopen()
+#endif
+
+#include <stdio.h>
+#endif
+
+#define STBI_VERSION 1
+
+enum
+{
+ STBI_default = 0, // only used for req_comp
+
+ STBI_grey = 1,
+ STBI_grey_alpha = 2,
+ STBI_rgb = 3,
+ STBI_rgb_alpha = 4
+};
+
+typedef unsigned char stbi_uc;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// PRIMARY API - works on images of any type
+//
+
+//
+// load image by filename, open file, or memory buffer
+//
+
+extern stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp);
+
+#ifndef STBI_NO_STDIO
+extern stbi_uc *stbi_load (char const *filename, int *x, int *y, int *comp, int req_comp);
+extern stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *comp, int req_comp);
+// for stbi_load_from_file, file pointer is left pointing immediately after image
+#endif
+
+typedef struct
+{
+ int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read
+ void (*skip) (void *user,unsigned n); // skip the next 'n' bytes
+ int (*eof) (void *user); // returns nonzero if we are at end of file/data
+} stbi_io_callbacks;
+
+extern stbi_uc *stbi_load_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp);
+
+#ifndef STBI_NO_HDR
+ extern float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp);
+
+ #ifndef STBI_NO_STDIO
+ extern float *stbi_loadf (char const *filename, int *x, int *y, int *comp, int req_comp);
+ extern float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *comp, int req_comp);
+ #endif
+
+ extern float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp);
+
+ extern void stbi_hdr_to_ldr_gamma(float gamma);
+ extern void stbi_hdr_to_ldr_scale(float scale);
+
+ extern void stbi_ldr_to_hdr_gamma(float gamma);
+ extern void stbi_ldr_to_hdr_scale(float scale);
+#endif // STBI_NO_HDR
+
+// stbi_is_hdr is always defined
+extern int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user);
+extern int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len);
+#ifndef STBI_NO_STDIO
+extern int stbi_is_hdr (char const *filename);
+extern int stbi_is_hdr_from_file(FILE *f);
+#endif // STBI_NO_STDIO
+
+
+// get a VERY brief reason for failure
+// NOT THREADSAFE
+extern const char *stbi_failure_reason (void);
+
+// free the loaded image -- this is just free()
+extern void stbi_image_free (void *retval_from_stbi_load);
+
+// get image dimensions & components without fully decoding
+extern int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);
+extern int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);
+
+#ifndef STBI_NO_STDIO
+extern int stbi_info (char const *filename, int *x, int *y, int *comp);
+extern int stbi_info_from_file (FILE *f, int *x, int *y, int *comp);
+
+#endif
+
+
+
+// for image formats that explicitly notate that they have premultiplied alpha,
+// we just return the colors as stored in the file. set this flag to force
+// unpremultiplication. results are undefined if the unpremultiply overflow.
+extern void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply);
+
+// indicate whether we should process iphone images back to canonical format,
+// or just pass them through "as-is"
+extern void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert);
+
+
+// ZLIB client - used by PNG, available for other purposes
+
+extern char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen);
+extern char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen);
+extern int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);
+
+extern char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen);
+extern int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);
+
+
+// define faster low-level operations (typically SIMD support)
+#ifdef STBI_SIMD
+typedef void (*stbi_idct_8x8)(stbi_uc *out, int out_stride, short data[64], unsigned short *dequantize);
+// compute an integer IDCT on "input"
+// input[x] = data[x] * dequantize[x]
+// write results to 'out': 64 samples, each run of 8 spaced by 'out_stride'
+// CLAMP results to 0..255
+typedef void (*stbi_YCbCr_to_RGB_run)(stbi_uc *output, stbi_uc const *y, stbi_uc const *cb, stbi_uc const *cr, int count, int step);
+// compute a conversion from YCbCr to RGB
+// 'count' pixels
+// write pixels to 'output'; each pixel is 'step' bytes (either 3 or 4; if 4, write '255' as 4th), order R,G,B
+// y: Y input channel
+// cb: Cb input channel; scale/biased to be 0..255
+// cr: Cr input channel; scale/biased to be 0..255
+
+extern void stbi_install_idct(stbi_idct_8x8 func);
+extern void stbi_install_YCbCr_to_RGB(stbi_YCbCr_to_RGB_run func);
+#endif // STBI_SIMD
+
+
+#ifdef __cplusplus
+}
+#endif
+
+//
+//
+//// end header file /////////////////////////////////////////////////////
+#endif // STBI_INCLUDE_STB_IMAGE_H
+
+#ifndef STBI_HEADER_FILE_ONLY
+
+#ifndef STBI_NO_HDR
+#include <math.h> // ldexp
+#include <string.h> // strcmp, strtok
+#endif
+
+#ifndef STBI_NO_STDIO
+#include <stdio.h>
+#endif
+#include <stdlib.h>
+#include <memory.h>
+#include <assert.h>
+#include <stdarg.h>
+
+#ifndef _MSC_VER
+ #ifdef __cplusplus
+ #define stbi_inline inline
+ #else
+ #define stbi_inline
+ #endif
+#else
+ #define stbi_inline __forceinline
+#endif
+
+
+// implementation:
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+typedef signed short int16;
+typedef unsigned int uint32;
+typedef signed int int32;
+typedef unsigned int uint;
+
+// should produce compiler error if size is wrong
+typedef unsigned char validate_uint32[sizeof(uint32)==4 ? 1 : -1];
+
+#if defined(STBI_NO_STDIO) && !defined(STBI_NO_WRITE)
+#define STBI_NO_WRITE
+#endif
+
+#define STBI_NOTUSED(v) (void)sizeof(v)
+
+#ifdef _MSC_VER
+#define STBI_HAS_LROTL
+#endif
+
+#ifdef STBI_HAS_LROTL
+ #define stbi_lrot(x,y) _lrotl(x,y)
+#else
+ #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y))))
+#endif
+
+///////////////////////////////////////////////
+//
+// stbi struct and start_xxx functions
+
+// stbi structure is our basic context used by all images, so it
+// contains all the IO context, plus some basic image information
+typedef struct
+{
+ uint32 img_x, img_y;
+ int img_n, img_out_n;
+
+ stbi_io_callbacks io;
+ void *io_user_data;
+
+ int read_from_callbacks;
+ int buflen;
+ uint8 buffer_start[128];
+
+ uint8 *img_buffer, *img_buffer_end;
+ uint8 *img_buffer_original;
+} stbi;
+
+
+static void refill_buffer(stbi *s);
+
+// initialize a memory-decode context
+static void start_mem(stbi *s, uint8 const *buffer, int len)
+{
+ s->io.read = NULL;
+ s->read_from_callbacks = 0;
+ s->img_buffer = s->img_buffer_original = (uint8 *) buffer;
+ s->img_buffer_end = (uint8 *) buffer+len;
+}
+
+// initialize a callback-based context
+static void start_callbacks(stbi *s, stbi_io_callbacks *c, void *user)
+{
+ s->io = *c;
+ s->io_user_data = user;
+ s->buflen = sizeof(s->buffer_start);
+ s->read_from_callbacks = 1;
+ s->img_buffer_original = s->buffer_start;
+ refill_buffer(s);
+}
+
+#ifndef STBI_NO_STDIO
+
+static int stdio_read(void *user, char *data, int size)
+{
+ return (int) fread(data,1,size,(FILE*) user);
+}
+
+static void stdio_skip(void *user, unsigned n)
+{
+ fseek((FILE*) user, n, SEEK_CUR);
+}
+
+static int stdio_eof(void *user)
+{
+ return feof((FILE*) user);
+}
+
+static stbi_io_callbacks stbi_stdio_callbacks =
+{
+ stdio_read,
+ stdio_skip,
+ stdio_eof,
+};
+
+static void start_file(stbi *s, FILE *f)
+{
+ start_callbacks(s, &stbi_stdio_callbacks, (void *) f);
+}
+
+//static void stop_file(stbi *s) { }
+
+#endif // !STBI_NO_STDIO
+
+static void stbi_rewind(stbi *s)
+{
+ // conceptually rewind SHOULD rewind to the beginning of the stream,
+ // but we just rewind to the beginning of the initial buffer, because
+ // we only use it after doing 'test', which only ever looks at at most 92 bytes
+ s->img_buffer = s->img_buffer_original;
+}
+
+static int stbi_jpeg_test(stbi *s);
+static stbi_uc *stbi_jpeg_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_jpeg_info(stbi *s, int *x, int *y, int *comp);
+static int stbi_png_test(stbi *s);
+static stbi_uc *stbi_png_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_png_info(stbi *s, int *x, int *y, int *comp);
+static int stbi_bmp_test(stbi *s);
+static stbi_uc *stbi_bmp_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_tga_test(stbi *s);
+static stbi_uc *stbi_tga_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_tga_info(stbi *s, int *x, int *y, int *comp);
+static int stbi_psd_test(stbi *s);
+static stbi_uc *stbi_psd_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_hdr_test(stbi *s);
+static float *stbi_hdr_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_pic_test(stbi *s);
+static stbi_uc *stbi_pic_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_gif_test(stbi *s);
+static stbi_uc *stbi_gif_load(stbi *s, int *x, int *y, int *comp, int req_comp);
+static int stbi_gif_info(stbi *s, int *x, int *y, int *comp);
+
+
+// this is not threadsafe
+static const char *failure_reason;
+
+const char *stbi_failure_reason(void)
+{
+ return failure_reason;
+}
+
+static int e(const char *str)
+{
+ failure_reason = str;
+ return 0;
+}
+
+// e - error
+// epf - error returning pointer to float
+// epuc - error returning pointer to unsigned char
+
+#ifdef STBI_NO_FAILURE_STRINGS
+ #define e(x,y) 0
+#elif defined(STBI_FAILURE_USERMSG)
+ #define e(x,y) e(y)
+#else
+ #define e(x,y) e(x)
+#endif
+
+#define epf(x,y) ((float *) (e(x,y)?NULL:NULL))
+#define epuc(x,y) ((unsigned char *) (e(x,y)?NULL:NULL))
+
+void stbi_image_free(void *retval_from_stbi_load)
+{
+ free(retval_from_stbi_load);
+}
+
+#ifndef STBI_NO_HDR
+static float *ldr_to_hdr(stbi_uc *data, int x, int y, int comp);
+static stbi_uc *hdr_to_ldr(float *data, int x, int y, int comp);
+#endif
+
+static unsigned char *stbi_load_main(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ if (stbi_jpeg_test(s)) return stbi_jpeg_load(s,x,y,comp,req_comp);
+ if (stbi_png_test(s)) return stbi_png_load(s,x,y,comp,req_comp);
+ if (stbi_bmp_test(s)) return stbi_bmp_load(s,x,y,comp,req_comp);
+ if (stbi_gif_test(s)) return stbi_gif_load(s,x,y,comp,req_comp);
+ if (stbi_psd_test(s)) return stbi_psd_load(s,x,y,comp,req_comp);
+ if (stbi_pic_test(s)) return stbi_pic_load(s,x,y,comp,req_comp);
+
+ #ifndef STBI_NO_HDR
+ if (stbi_hdr_test(s)) {
+ float *hdr = stbi_hdr_load(s, x,y,comp,req_comp);
+ return hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);
+ }
+ #endif
+
+ // test tga last because it's a crappy test!
+ if (stbi_tga_test(s))
+ return stbi_tga_load(s,x,y,comp,req_comp);
+ return epuc("unknown image type", "Image not of any known type, or corrupt");
+}
+
+#ifndef STBI_NO_STDIO
+unsigned char *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp)
+{
+ FILE *f = fopen(filename, "rb");
+ unsigned char *result;
+ if (!f) return epuc("can't fopen", "Unable to open file");
+ result = stbi_load_from_file(f,x,y,comp,req_comp);
+ fclose(f);
+ return result;
+}
+
+unsigned char *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_file(&s,f);
+ return stbi_load_main(&s,x,y,comp,req_comp);
+}
+#endif //!STBI_NO_STDIO
+
+unsigned char *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_mem(&s,buffer,len);
+ return stbi_load_main(&s,x,y,comp,req_comp);
+}
+
+unsigned char *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_callbacks(&s, (stbi_io_callbacks *) clbk, user);
+ return stbi_load_main(&s,x,y,comp,req_comp);
+}
+
+#ifndef STBI_NO_HDR
+
+float *stbi_loadf_main(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ unsigned char *data;
+ #ifndef STBI_NO_HDR
+ if (stbi_hdr_test(s))
+ return stbi_hdr_load(s,x,y,comp,req_comp);
+ #endif
+ data = stbi_load_main(s, x, y, comp, req_comp);
+ if (data)
+ return ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);
+ return epf("unknown image type", "Image not of any known type, or corrupt");
+}
+
+float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_mem(&s,buffer,len);
+ return stbi_loadf_main(&s,x,y,comp,req_comp);
+}
+
+float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_callbacks(&s, (stbi_io_callbacks *) clbk, user);
+ return stbi_loadf_main(&s,x,y,comp,req_comp);
+}
+
+#ifndef STBI_NO_STDIO
+float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp)
+{
+ FILE *f = fopen(filename, "rb");
+ float *result;
+ if (!f) return epf("can't fopen", "Unable to open file");
+ result = stbi_loadf_from_file(f,x,y,comp,req_comp);
+ fclose(f);
+ return result;
+}
+
+float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)
+{
+ stbi s;
+ start_file(&s,f);
+ return stbi_loadf_main(&s,x,y,comp,req_comp);
+}
+#endif // !STBI_NO_STDIO
+
+#endif // !STBI_NO_HDR
+
+// these is-hdr-or-not is defined independent of whether STBI_NO_HDR is
+// defined, for API simplicity; if STBI_NO_HDR is defined, it always
+// reports false!
+
+int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)
+{
+ #ifndef STBI_NO_HDR
+ stbi s;
+ start_mem(&s,buffer,len);
+ return stbi_hdr_test(&s);
+ #else
+ STBI_NOTUSED(buffer);
+ STBI_NOTUSED(len);
+ return 0;
+ #endif
+}
+
+#ifndef STBI_NO_STDIO
+extern int stbi_is_hdr (char const *filename)
+{
+ FILE *f = fopen(filename, "rb");
+ int result=0;
+ if (f) {
+ result = stbi_is_hdr_from_file(f);
+ fclose(f);
+ }
+ return result;
+}
+
+extern int stbi_is_hdr_from_file(FILE *f)
+{
+ #ifndef STBI_NO_HDR
+ stbi s;
+ start_file(&s,f);
+ return stbi_hdr_test(&s);
+ #else
+ return 0;
+ #endif
+}
+#endif // !STBI_NO_STDIO
+
+extern int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user)
+{
+ #ifndef STBI_NO_HDR
+ stbi s;
+ start_callbacks(&s, (stbi_io_callbacks *) clbk, user);
+ return stbi_hdr_test(&s);
+ #else
+ return 0;
+ #endif
+}
+
+#ifndef STBI_NO_HDR
+static float h2l_gamma_i=1.0f/2.2f, h2l_scale_i=1.0f;
+static float l2h_gamma=2.2f, l2h_scale=1.0f;
+
+void stbi_hdr_to_ldr_gamma(float gamma) { h2l_gamma_i = 1/gamma; }
+void stbi_hdr_to_ldr_scale(float scale) { h2l_scale_i = 1/scale; }
+
+void stbi_ldr_to_hdr_gamma(float gamma) { l2h_gamma = gamma; }
+void stbi_ldr_to_hdr_scale(float scale) { l2h_scale = scale; }
+#endif
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Common code used by all image loaders
+//
+
+enum
+{
+ SCAN_load=0,
+ SCAN_type,
+ SCAN_header
+};
+
+static void refill_buffer(stbi *s)
+{
+ int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen);
+ if (n == 0) {
+ // at end of file, treat same as if from memory
+ s->read_from_callbacks = 0;
+ s->img_buffer = s->img_buffer_end-1;
+ *s->img_buffer = 0;
+ } else {
+ s->img_buffer = s->buffer_start;
+ s->img_buffer_end = s->buffer_start + n;
+ }
+}
+
+stbi_inline static int get8(stbi *s)
+{
+ if (s->img_buffer < s->img_buffer_end)
+ return *s->img_buffer++;
+ if (s->read_from_callbacks) {
+ refill_buffer(s);
+ return *s->img_buffer++;
+ }
+ return 0;
+}
+
+stbi_inline static int at_eof(stbi *s)
+{
+ if (s->io.read) {
+ if (!(s->io.eof)(s->io_user_data)) return 0;
+ // if feof() is true, check if buffer = end
+ // special case: we've only got the special 0 character at the end
+ if (s->read_from_callbacks == 0) return 1;
+ }
+
+ return s->img_buffer >= s->img_buffer_end;
+}
+
+stbi_inline static uint8 get8u(stbi *s)
+{
+ return (uint8) get8(s);
+}
+
+static void skip(stbi *s, int n)
+{
+ if (s->io.read) {
+ int blen = s->img_buffer_end - s->img_buffer;
+ if (blen < n) {
+ s->img_buffer = s->img_buffer_end;
+ (s->io.skip)(s->io_user_data, n - blen);
+ return;
+ }
+ }
+ s->img_buffer += n;
+}
+
+static int getn(stbi *s, stbi_uc *buffer, int n)
+{
+ if (s->io.read) {
+ int blen = s->img_buffer_end - s->img_buffer;
+ if (blen < n) {
+ int res, count;
+
+ memcpy(buffer, s->img_buffer, blen);
+
+ count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen);
+ res = (count == (n-blen));
+ s->img_buffer = s->img_buffer_end;
+ return res;
+ }
+ }
+
+ if (s->img_buffer+n <= s->img_buffer_end) {
+ memcpy(buffer, s->img_buffer, n);
+ s->img_buffer += n;
+ return 1;
+ } else
+ return 0;
+}
+
+static int get16(stbi *s)
+{
+ int z = get8(s);
+ return (z << 8) + get8(s);
+}
+
+static uint32 get32(stbi *s)
+{
+ uint32 z = get16(s);
+ return (z << 16) + get16(s);
+}
+
+static int get16le(stbi *s)
+{
+ int z = get8(s);
+ return z + (get8(s) << 8);
+}
+
+static uint32 get32le(stbi *s)
+{
+ uint32 z = get16le(s);
+ return z + (get16le(s) << 16);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// generic converter from built-in img_n to req_comp
+// individual types do this automatically as much as possible (e.g. jpeg
+// does all cases internally since it needs to colorspace convert anyway,
+// and it never has alpha, so very few cases ). png can automatically
+// interleave an alpha=255 channel, but falls back to this for other cases
+//
+// assume data buffer is malloced, so malloc a new one and free that one
+// only failure mode is malloc failing
+
+static uint8 compute_y(int r, int g, int b)
+{
+ return (uint8) (((r*77) + (g*150) + (29*b)) >> 8);
+}
+
+static unsigned char *convert_format(unsigned char *data, int img_n, int req_comp, uint x, uint y)
+{
+ int i,j;
+ unsigned char *good;
+
+ if (req_comp == img_n) return data;
+ assert(req_comp >= 1 && req_comp <= 4);
+
+ good = (unsigned char *) malloc(req_comp * x * y);
+ if (good == NULL) {
+ free(data);
+ return epuc("outofmem", "Out of memory");
+ }
+
+ for (j=0; j < (int) y; ++j) {
+ unsigned char *src = data + j * x * img_n ;
+ unsigned char *dest = good + j * x * req_comp;
+
+ #define COMBO(a,b) ((a)*8+(b))
+ #define CASE(a,b) case COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)
+ // convert source image with img_n components to one with req_comp components;
+ // avoid switch per pixel, so use switch per scanline and massive macros
+ switch (COMBO(img_n, req_comp)) {
+ CASE(1,2) dest[0]=src[0], dest[1]=255; break;
+ CASE(1,3) dest[0]=dest[1]=dest[2]=src[0]; break;
+ CASE(1,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; break;
+ CASE(2,1) dest[0]=src[0]; break;
+ CASE(2,3) dest[0]=dest[1]=dest[2]=src[0]; break;
+ CASE(2,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; break;
+ CASE(3,4) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; break;
+ CASE(3,1) dest[0]=compute_y(src[0],src[1],src[2]); break;
+ CASE(3,2) dest[0]=compute_y(src[0],src[1],src[2]), dest[1] = 255; break;
+ CASE(4,1) dest[0]=compute_y(src[0],src[1],src[2]); break;
+ CASE(4,2) dest[0]=compute_y(src[0],src[1],src[2]), dest[1] = src[3]; break;
+ CASE(4,3) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; break;
+ default: assert(0);
+ }
+ #undef CASE
+ }
+
+ free(data);
+ return good;
+}
+
+#ifndef STBI_NO_HDR
+static float *ldr_to_hdr(stbi_uc *data, int x, int y, int comp)
+{
+ int i,k,n;
+ float *output = (float *) malloc(x * y * comp * sizeof(float));
+ if (output == NULL) { free(data); return epf("outofmem", "Out of memory"); }
+ // compute number of non-alpha components
+ if (comp & 1) n = comp; else n = comp-1;
+ for (i=0; i < x*y; ++i) {
+ for (k=0; k < n; ++k) {
+ output[i*comp + k] = (float) pow(data[i*comp+k]/255.0f, l2h_gamma) * l2h_scale;
+ }
+ if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f;
+ }
+ free(data);
+ return output;
+}
+
+#define float2int(x) ((int) (x))
+static stbi_uc *hdr_to_ldr(float *data, int x, int y, int comp)
+{
+ int i,k,n;
+ stbi_uc *output = (stbi_uc *) malloc(x * y * comp);
+ if (output == NULL) { free(data); return epuc("outofmem", "Out of memory"); }
+ // compute number of non-alpha components
+ if (comp & 1) n = comp; else n = comp-1;
+ for (i=0; i < x*y; ++i) {
+ for (k=0; k < n; ++k) {
+ float z = (float) pow(data[i*comp+k]*h2l_scale_i, h2l_gamma_i) * 255 + 0.5f;
+ if (z < 0) z = 0;
+ if (z > 255) z = 255;
+ output[i*comp + k] = (uint8) float2int(z);
+ }
+ if (k < comp) {
+ float z = data[i*comp+k] * 255 + 0.5f;
+ if (z < 0) z = 0;
+ if (z > 255) z = 255;
+ output[i*comp + k] = (uint8) float2int(z);
+ }
+ }
+ free(data);
+ return output;
+}
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// "baseline" JPEG/JFIF decoder (not actually fully baseline implementation)
+//
+// simple implementation
+// - channel subsampling of at most 2 in each dimension
+// - doesn't support delayed output of y-dimension
+// - simple interface (only one output format: 8-bit interleaved RGB)
+// - doesn't try to recover corrupt jpegs
+// - doesn't allow partial loading, loading multiple at once
+// - still fast on x86 (copying globals into locals doesn't help x86)
+// - allocates lots of intermediate memory (full size of all components)
+// - non-interleaved case requires this anyway
+// - allows good upsampling (see next)
+// high-quality
+// - upsampled channels are bilinearly interpolated, even across blocks
+// - quality integer IDCT derived from IJG's 'slow'
+// performance
+// - fast huffman; reasonable integer IDCT
+// - uses a lot of intermediate memory, could cache poorly
+// - load http://nothings.org/remote/anemones.jpg 3 times on 2.8Ghz P4
+// stb_jpeg: 1.34 seconds (MSVC6, default release build)
+// stb_jpeg: 1.06 seconds (MSVC6, processor = Pentium Pro)
+// IJL11.dll: 1.08 seconds (compiled by intel)
+// IJG 1998: 0.98 seconds (MSVC6, makefile provided by IJG)
+// IJG 1998: 0.95 seconds (MSVC6, makefile + proc=PPro)
+
+// huffman decoding acceleration
+#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache
+
+typedef struct
+{
+ uint8 fast[1 << FAST_BITS];
+ // weirdly, repacking this into AoS is a 10% speed loss, instead of a win
+ uint16 code[256];
+ uint8 values[256];
+ uint8 size[257];
+ unsigned int maxcode[18];
+ int delta[17]; // old 'firstsymbol' - old 'firstcode'
+} huffman;
+
+typedef struct
+{
+ #ifdef STBI_SIMD
+ unsigned short dequant2[4][64];
+ #endif
+ stbi *s;
+ huffman huff_dc[4];
+ huffman huff_ac[4];
+ uint8 dequant[4][64];
+
+// sizes for components, interleaved MCUs
+ int img_h_max, img_v_max;
+ int img_mcu_x, img_mcu_y;
+ int img_mcu_w, img_mcu_h;
+
+// definition of jpeg image component
+ struct
+ {
+ int id;
+ int h,v;
+ int tq;
+ int hd,ha;
+ int dc_pred;
+
+ int x,y,w2,h2;
+ uint8 *data;
+ void *raw_data;
+ uint8 *linebuf;
+ } img_comp[4];
+
+ uint32 code_buffer; // jpeg entropy-coded buffer
+ int code_bits; // number of valid bits
+ unsigned char marker; // marker seen while filling entropy buffer
+ int nomore; // flag if we saw a marker so must stop
+
+ int scan_n, order[4];
+ int restart_interval, todo;
+} jpeg;
+
+static int build_huffman(huffman *h, int *count)
+{
+ int i,j,k=0,code;
+ // build size list for each symbol (from JPEG spec)
+ for (i=0; i < 16; ++i)
+ for (j=0; j < count[i]; ++j)
+ h->size[k++] = (uint8) (i+1);
+ h->size[k] = 0;
+
+ // compute actual symbols (from jpeg spec)
+ code = 0;
+ k = 0;
+ for(j=1; j <= 16; ++j) {
+ // compute delta to add to code to compute symbol id
+ h->delta[j] = k - code;
+ if (h->size[k] == j) {
+ while (h->size[k] == j)
+ h->code[k++] = (uint16) (code++);
+ if (code-1 >= (1 << j)) return e("bad code lengths","Corrupt JPEG");
+ }
+ // compute largest code + 1 for this size, preshifted as needed later
+ h->maxcode[j] = code << (16-j);
+ code <<= 1;
+ }
+ h->maxcode[j] = 0xffffffff;
+
+ // build non-spec acceleration table; 255 is flag for not-accelerated
+ memset(h->fast, 255, 1 << FAST_BITS);
+ for (i=0; i < k; ++i) {
+ int s = h->size[i];
+ if (s <= FAST_BITS) {
+ int c = h->code[i] << (FAST_BITS-s);
+ int m = 1 << (FAST_BITS-s);
+ for (j=0; j < m; ++j) {
+ h->fast[c+j] = (uint8) i;
+ }
+ }
+ }
+ return 1;
+}
+
+static void grow_buffer_unsafe(jpeg *j)
+{
+ do {
+ int b = j->nomore ? 0 : get8(j->s);
+ if (b == 0xff) {
+ int c = get8(j->s);
+ if (c != 0) {
+ j->marker = (unsigned char) c;
+ j->nomore = 1;
+ return;
+ }
+ }
+ j->code_buffer |= b << (24 - j->code_bits);
+ j->code_bits += 8;
+ } while (j->code_bits <= 24);
+}
+
+// (1 << n) - 1
+static uint32 bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};
+
+// decode a jpeg huffman value from the bitstream
+stbi_inline static int decode(jpeg *j, huffman *h)
+{
+ unsigned int temp;
+ int c,k;
+
+ if (j->code_bits < 16) grow_buffer_unsafe(j);
+
+ // look at the top FAST_BITS and determine what symbol ID it is,
+ // if the code is <= FAST_BITS
+ c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);
+ k = h->fast[c];
+ if (k < 255) {
+ int s = h->size[k];
+ if (s > j->code_bits)
+ return -1;
+ j->code_buffer <<= s;
+ j->code_bits -= s;
+ return h->values[k];
+ }
+
+ // naive test is to shift the code_buffer down so k bits are
+ // valid, then test against maxcode. To speed this up, we've
+ // preshifted maxcode left so that it has (16-k) 0s at the
+ // end; in other words, regardless of the number of bits, it
+ // wants to be compared against something shifted to have 16;
+ // that way we don't need to shift inside the loop.
+ temp = j->code_buffer >> 16;
+ for (k=FAST_BITS+1 ; ; ++k)
+ if (temp < h->maxcode[k])
+ break;
+ if (k == 17) {
+ // error! code not found
+ j->code_bits -= 16;
+ return -1;
+ }
+
+ if (k > j->code_bits)
+ return -1;
+
+ // convert the huffman code to the symbol id
+ c = ((j->code_buffer >> (32 - k)) & bmask[k]) + h->delta[k];
+ assert((((j->code_buffer) >> (32 - h->size[c])) & bmask[h->size[c]]) == h->code[c]);
+
+ // convert the id to a symbol
+ j->code_bits -= k;
+ j->code_buffer <<= k;
+ return h->values[c];
+}
+
+// combined JPEG 'receive' and JPEG 'extend', since baseline
+// always extends everything it receives.
+stbi_inline static int extend_receive(jpeg *j, int n)
+{
+ unsigned int m = 1 << (n-1);
+ unsigned int k;
+ if (j->code_bits < n) grow_buffer_unsafe(j);
+
+ #if 1
+ k = stbi_lrot(j->code_buffer, n);
+ j->code_buffer = k & ~bmask[n];
+ k &= bmask[n];
+ j->code_bits -= n;
+ #else
+ k = (j->code_buffer >> (32 - n)) & bmask[n];
+ j->code_bits -= n;
+ j->code_buffer <<= n;
+ #endif
+ // the following test is probably a random branch that won't
+ // predict well. I tried to table accelerate it but failed.
+ // maybe it's compiling as a conditional move?
+ if (k < m)
+ return (-1 << n) + k + 1;
+ else
+ return k;
+}
+
+// given a value that's at position X in the zigzag stream,
+// where does it appear in the 8x8 matrix coded as row-major?
+static uint8 dezigzag[64+15] =
+{
+ 0, 1, 8, 16, 9, 2, 3, 10,
+ 17, 24, 32, 25, 18, 11, 4, 5,
+ 12, 19, 26, 33, 40, 48, 41, 34,
+ 27, 20, 13, 6, 7, 14, 21, 28,
+ 35, 42, 49, 56, 57, 50, 43, 36,
+ 29, 22, 15, 23, 30, 37, 44, 51,
+ 58, 59, 52, 45, 38, 31, 39, 46,
+ 53, 60, 61, 54, 47, 55, 62, 63,
+ // let corrupt input sample past end
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63
+};
+
+// decode one 64-entry block--
+static int decode_block(jpeg *j, short data[64], huffman *hdc, huffman *hac, int b)
+{
+ int diff,dc,k;
+ int t = decode(j, hdc);
+ if (t < 0) return e("bad huffman code","Corrupt JPEG");
+
+ // 0 all the ac values now so we can do it 32-bits at a time
+ memset(data,0,64*sizeof(data[0]));
+
+ diff = t ? extend_receive(j, t) : 0;
+ dc = j->img_comp[b].dc_pred + diff;
+ j->img_comp[b].dc_pred = dc;
+ data[0] = (short) dc;
+
+ // decode AC components, see JPEG spec
+ k = 1;
+ do {
+ int r,s;
+ int rs = decode(j, hac);
+ if (rs < 0) return e("bad huffman code","Corrupt JPEG");
+ s = rs & 15;
+ r = rs >> 4;
+ if (s == 0) {
+ if (rs != 0xf0) break; // end block
+ k += 16;
+ } else {
+ k += r;
+ // decode into unzigzag'd location
+ data[dezigzag[k++]] = (short) extend_receive(j,s);
+ }
+ } while (k < 64);
+ return 1;
+}
+
+// take a -128..127 value and clamp it and convert to 0..255
+stbi_inline static uint8 clamp(int x)
+{
+ // trick to use a single test to catch both cases
+ if ((unsigned int) x > 255) {
+ if (x < 0) return 0;
+ if (x > 255) return 255;
+ }
+ return (uint8) x;
+}
+
+#define f2f(x) (int) (((x) * 4096 + 0.5))
+#define fsh(x) ((x) << 12)
+
+// derived from jidctint -- DCT_ISLOW
+#define IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \
+ int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \
+ p2 = s2; \
+ p3 = s6; \
+ p1 = (p2+p3) * f2f(0.5411961f); \
+ t2 = p1 + p3*f2f(-1.847759065f); \
+ t3 = p1 + p2*f2f( 0.765366865f); \
+ p2 = s0; \
+ p3 = s4; \
+ t0 = fsh(p2+p3); \
+ t1 = fsh(p2-p3); \
+ x0 = t0+t3; \
+ x3 = t0-t3; \
+ x1 = t1+t2; \
+ x2 = t1-t2; \
+ t0 = s7; \
+ t1 = s5; \
+ t2 = s3; \
+ t3 = s1; \
+ p3 = t0+t2; \
+ p4 = t1+t3; \
+ p1 = t0+t3; \
+ p2 = t1+t2; \
+ p5 = (p3+p4)*f2f( 1.175875602f); \
+ t0 = t0*f2f( 0.298631336f); \
+ t1 = t1*f2f( 2.053119869f); \
+ t2 = t2*f2f( 3.072711026f); \
+ t3 = t3*f2f( 1.501321110f); \
+ p1 = p5 + p1*f2f(-0.899976223f); \
+ p2 = p5 + p2*f2f(-2.562915447f); \
+ p3 = p3*f2f(-1.961570560f); \
+ p4 = p4*f2f(-0.390180644f); \
+ t3 += p1+p4; \
+ t2 += p2+p3; \
+ t1 += p2+p4; \
+ t0 += p1+p3;
+
+#ifdef STBI_SIMD
+typedef unsigned short stbi_dequantize_t;
+#else
+typedef uint8 stbi_dequantize_t;
+#endif
+
+// .344 seconds on 3*anemones.jpg
+static void idct_block(uint8 *out, int out_stride, short data[64], stbi_dequantize_t *dequantize)
+{
+ int i,val[64],*v=val;
+ stbi_dequantize_t *dq = dequantize;
+ uint8 *o;
+ short *d = data;
+
+ // columns
+ for (i=0; i < 8; ++i,++d,++dq, ++v) {
+ // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing
+ if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0
+ && d[40]==0 && d[48]==0 && d[56]==0) {
+ // no shortcut 0 seconds
+ // (1|2|3|4|5|6|7)==0 0 seconds
+ // all separate -0.047 seconds
+ // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds
+ int dcterm = d[0] * dq[0] << 2;
+ v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;
+ } else {
+ IDCT_1D(d[ 0]*dq[ 0],d[ 8]*dq[ 8],d[16]*dq[16],d[24]*dq[24],
+ d[32]*dq[32],d[40]*dq[40],d[48]*dq[48],d[56]*dq[56])
+ // constants scaled things up by 1<<12; let's bring them back
+ // down, but keep 2 extra bits of precision
+ x0 += 512; x1 += 512; x2 += 512; x3 += 512;
+ v[ 0] = (x0+t3) >> 10;
+ v[56] = (x0-t3) >> 10;
+ v[ 8] = (x1+t2) >> 10;
+ v[48] = (x1-t2) >> 10;
+ v[16] = (x2+t1) >> 10;
+ v[40] = (x2-t1) >> 10;
+ v[24] = (x3+t0) >> 10;
+ v[32] = (x3-t0) >> 10;
+ }
+ }
+
+ for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) {
+ // no fast case since the first 1D IDCT spread components out
+ IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7])
+ // constants scaled things up by 1<<12, plus we had 1<<2 from first
+ // loop, plus horizontal and vertical each scale by sqrt(8) so together
+ // we've got an extra 1<<3, so 1<<17 total we need to remove.
+ // so we want to round that, which means adding 0.5 * 1<<17,
+ // aka 65536. Also, we'll end up with -128 to 127 that we want
+ // to encode as 0..255 by adding 128, so we'll add that before the shift
+ x0 += 65536 + (128<<17);
+ x1 += 65536 + (128<<17);
+ x2 += 65536 + (128<<17);
+ x3 += 65536 + (128<<17);
+ // tried computing the shifts into temps, or'ing the temps to see
+ // if any were out of range, but that was slower
+ o[0] = clamp((x0+t3) >> 17);
+ o[7] = clamp((x0-t3) >> 17);
+ o[1] = clamp((x1+t2) >> 17);
+ o[6] = clamp((x1-t2) >> 17);
+ o[2] = clamp((x2+t1) >> 17);
+ o[5] = clamp((x2-t1) >> 17);
+ o[3] = clamp((x3+t0) >> 17);
+ o[4] = clamp((x3-t0) >> 17);
+ }
+}
+
+#ifdef STBI_SIMD
+static stbi_idct_8x8 stbi_idct_installed = idct_block;
+
+void stbi_install_idct(stbi_idct_8x8 func)
+{
+ stbi_idct_installed = func;
+}
+#endif
+
+#define MARKER_none 0xff
+// if there's a pending marker from the entropy stream, return that
+// otherwise, fetch from the stream and get a marker. if there's no
+// marker, return 0xff, which is never a valid marker value
+static uint8 get_marker(jpeg *j)
+{
+ uint8 x;
+ if (j->marker != MARKER_none) { x = j->marker; j->marker = MARKER_none; return x; }
+ x = get8u(j->s);
+ if (x != 0xff) return MARKER_none;
+ while (x == 0xff)
+ x = get8u(j->s);
+ return x;
+}
+
+// in each scan, we'll have scan_n components, and the order
+// of the components is specified by order[]
+#define RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7)
+
+// after a restart interval, reset the entropy decoder and
+// the dc prediction
+static void reset(jpeg *j)
+{
+ j->code_bits = 0;
+ j->code_buffer = 0;
+ j->nomore = 0;
+ j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = 0;
+ j->marker = MARKER_none;
+ j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;
+ // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,
+ // since we don't even allow 1<<30 pixels
+}
+
+static int parse_entropy_coded_data(jpeg *z)
+{
+ reset(z);
+ if (z->scan_n == 1) {
+ int i,j;
+ #ifdef STBI_SIMD
+ __declspec(align(16))
+ #endif
+ short data[64];
+ int n = z->order[0];
+ // non-interleaved data, we just need to process one block at a time,
+ // in trivial scanline order
+ // number of blocks to do just depends on how many actual "pixels" this
+ // component has, independent of interleaved MCU blocking and such
+ int w = (z->img_comp[n].x+7) >> 3;
+ int h = (z->img_comp[n].y+7) >> 3;
+ for (j=0; j < h; ++j) {
+ for (i=0; i < w; ++i) {
+ if (!decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+z->img_comp[n].ha, n)) return 0;
+ #ifdef STBI_SIMD
+ stbi_idct_installed(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data, z->dequant2[z->img_comp[n].tq]);
+ #else
+ idct_block(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data, z->dequant[z->img_comp[n].tq]);
+ #endif
+ // every data block is an MCU, so countdown the restart interval
+ if (--z->todo <= 0) {
+ if (z->code_bits < 24) grow_buffer_unsafe(z);
+ // if it's NOT a restart, then just bail, so we get corrupt data
+ // rather than no data
+ if (!RESTART(z->marker)) return 1;
+ reset(z);
+ }
+ }
+ }
+ } else { // interleaved!
+ int i,j,k,x,y;
+ short data[64];
+ for (j=0; j < z->img_mcu_y; ++j) {
+ for (i=0; i < z->img_mcu_x; ++i) {
+ // scan an interleaved mcu... process scan_n components in order
+ for (k=0; k < z->scan_n; ++k) {
+ int n = z->order[k];
+ // scan out an mcu's worth of this component; that's just determined
+ // by the basic H and V specified for the component
+ for (y=0; y < z->img_comp[n].v; ++y) {
+ for (x=0; x < z->img_comp[n].h; ++x) {
+ int x2 = (i*z->img_comp[n].h + x)*8;
+ int y2 = (j*z->img_comp[n].v + y)*8;
+ if (!decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+z->img_comp[n].ha, n)) return 0;
+ #ifdef STBI_SIMD
+ stbi_idct_installed(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data, z->dequant2[z->img_comp[n].tq]);
+ #else
+ idct_block(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data, z->dequant[z->img_comp[n].tq]);
+ #endif
+ }
+ }
+ }
+ // after all interleaved components, that's an interleaved MCU,
+ // so now count down the restart interval
+ if (--z->todo <= 0) {
+ if (z->code_bits < 24) grow_buffer_unsafe(z);
+ // if it's NOT a restart, then just bail, so we get corrupt data
+ // rather than no data
+ if (!RESTART(z->marker)) return 1;
+ reset(z);
+ }
+ }
+ }
+ }
+ return 1;
+}
+
+static int process_marker(jpeg *z, int m)
+{
+ int L;
+ switch (m) {
+ case MARKER_none: // no marker found
+ return e("expected marker","Corrupt JPEG");
+
+ case 0xC2: // SOF - progressive
+ return e("progressive jpeg","JPEG format not supported (progressive)");
+
+ case 0xDD: // DRI - specify restart interval
+ if (get16(z->s) != 4) return e("bad DRI len","Corrupt JPEG");
+ z->restart_interval = get16(z->s);
+ return 1;
+
+ case 0xDB: // DQT - define quantization table
+ L = get16(z->s)-2;
+ while (L > 0) {
+ int q = get8(z->s);
+ int p = q >> 4;
+ int t = q & 15,i;
+ if (p != 0) return e("bad DQT type","Corrupt JPEG");
+ if (t > 3) return e("bad DQT table","Corrupt JPEG");
+ for (i=0; i < 64; ++i)
+ z->dequant[t][dezigzag[i]] = get8u(z->s);
+ #ifdef STBI_SIMD
+ for (i=0; i < 64; ++i)
+ z->dequant2[t][i] = z->dequant[t][i];
+ #endif
+ L -= 65;
+ }
+ return L==0;
+
+ case 0xC4: // DHT - define huffman table
+ L = get16(z->s)-2;
+ while (L > 0) {
+ uint8 *v;
+ int sizes[16],i,m=0;
+ int q = get8(z->s);
+ int tc = q >> 4;
+ int th = q & 15;
+ if (tc > 1 || th > 3) return e("bad DHT header","Corrupt JPEG");
+ for (i=0; i < 16; ++i) {
+ sizes[i] = get8(z->s);
+ m += sizes[i];
+ }
+ L -= 17;
+ if (tc == 0) {
+ if (!build_huffman(z->huff_dc+th, sizes)) return 0;
+ v = z->huff_dc[th].values;
+ } else {
+ if (!build_huffman(z->huff_ac+th, sizes)) return 0;
+ v = z->huff_ac[th].values;
+ }
+ for (i=0; i < m; ++i)
+ v[i] = get8u(z->s);
+ L -= m;
+ }
+ return L==0;
+ }
+ // check for comment block or APP blocks
+ if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {
+ skip(z->s, get16(z->s)-2);
+ return 1;
+ }
+ return 0;
+}
+
+// after we see SOS
+static int process_scan_header(jpeg *z)
+{
+ int i;
+ int Ls = get16(z->s);
+ z->scan_n = get8(z->s);
+ if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return e("bad SOS component count","Corrupt JPEG");
+ if (Ls != 6+2*z->scan_n) return e("bad SOS len","Corrupt JPEG");
+ for (i=0; i < z->scan_n; ++i) {
+ int id = get8(z->s), which;
+ int q = get8(z->s);
+ for (which = 0; which < z->s->img_n; ++which)
+ if (z->img_comp[which].id == id)
+ break;
+ if (which == z->s->img_n) return 0;
+ z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return e("bad DC huff","Corrupt JPEG");
+ z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return e("bad AC huff","Corrupt JPEG");
+ z->order[i] = which;
+ }
+ if (get8(z->s) != 0) return e("bad SOS","Corrupt JPEG");
+ get8(z->s); // should be 63, but might be 0
+ if (get8(z->s) != 0) return e("bad SOS","Corrupt JPEG");
+
+ return 1;
+}
+
+static int process_frame_header(jpeg *z, int scan)
+{
+ stbi *s = z->s;
+ int Lf,p,i,q, h_max=1,v_max=1,c;
+ Lf = get16(s); if (Lf < 11) return e("bad SOF len","Corrupt JPEG"); // JPEG
+ p = get8(s); if (p != 8) return e("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline
+ s->img_y = get16(s); if (s->img_y == 0) return e("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG
+ s->img_x = get16(s); if (s->img_x == 0) return e("0 width","Corrupt JPEG"); // JPEG requires
+ c = get8(s);
+ if (c != 3 && c != 1) return e("bad component count","Corrupt JPEG"); // JFIF requires
+ s->img_n = c;
+ for (i=0; i < c; ++i) {
+ z->img_comp[i].data = NULL;
+ z->img_comp[i].linebuf = NULL;
+ }
+
+ if (Lf != 8+3*s->img_n) return e("bad SOF len","Corrupt JPEG");
+
+ for (i=0; i < s->img_n; ++i) {
+ z->img_comp[i].id = get8(s);
+ if (z->img_comp[i].id != i+1) // JFIF requires
+ if (z->img_comp[i].id != i) // some version of jpegtran outputs non-JFIF-compliant files!
+ return e("bad component ID","Corrupt JPEG");
+ q = get8(s);
+ z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return e("bad H","Corrupt JPEG");
+ z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return e("bad V","Corrupt JPEG");
+ z->img_comp[i].tq = get8(s); if (z->img_comp[i].tq > 3) return e("bad TQ","Corrupt JPEG");
+ }
+
+ if (scan != SCAN_load) return 1;
+
+ if ((1 << 30) / s->img_x / s->img_n < s->img_y) return e("too large", "Image too large to decode");
+
+ for (i=0; i < s->img_n; ++i) {
+ if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h;
+ if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v;
+ }
+
+ // compute interleaved mcu info
+ z->img_h_max = h_max;
+ z->img_v_max = v_max;
+ z->img_mcu_w = h_max * 8;
+ z->img_mcu_h = v_max * 8;
+ z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w;
+ z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h;
+
+ for (i=0; i < s->img_n; ++i) {
+ // number of effective pixels (e.g. for non-interleaved MCU)
+ z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max;
+ z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max;
+ // to simplify generation, we'll allocate enough memory to decode
+ // the bogus oversized data from using interleaved MCUs and their
+ // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't
+ // discard the extra data until colorspace conversion
+ z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;
+ z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;
+ z->img_comp[i].raw_data = malloc(z->img_comp[i].w2 * z->img_comp[i].h2+15);
+ if (z->img_comp[i].raw_data == NULL) {
+ for(--i; i >= 0; --i) {
+ free(z->img_comp[i].raw_data);
+ z->img_comp[i].data = NULL;
+ }
+ return e("outofmem", "Out of memory");
+ }
+ // align blocks for installable-idct using mmx/sse
+ z->img_comp[i].data = (uint8*) (((size_t) z->img_comp[i].raw_data + 15) & ~15);
+ z->img_comp[i].linebuf = NULL;
+ }
+
+ return 1;
+}
+
+// use comparisons since in some cases we handle more than one case (e.g. SOF)
+#define DNL(x) ((x) == 0xdc)
+#define SOI(x) ((x) == 0xd8)
+#define EOI(x) ((x) == 0xd9)
+#define SOF(x) ((x) == 0xc0 || (x) == 0xc1)
+#define SOS(x) ((x) == 0xda)
+
+static int decode_jpeg_header(jpeg *z, int scan)
+{
+ int m;
+ z->marker = MARKER_none; // initialize cached marker to empty
+ m = get_marker(z);
+ if (!SOI(m)) return e("no SOI","Corrupt JPEG");
+ if (scan == SCAN_type) return 1;
+ m = get_marker(z);
+ while (!SOF(m)) {
+ if (!process_marker(z,m)) return 0;
+ m = get_marker(z);
+ while (m == MARKER_none) {
+ // some files have extra padding after their blocks, so ok, we'll scan
+ if (at_eof(z->s)) return e("no SOF", "Corrupt JPEG");
+ m = get_marker(z);
+ }
+ }
+ if (!process_frame_header(z, scan)) return 0;
+ return 1;
+}
+
+static int decode_jpeg_image(jpeg *j)
+{
+ int m;
+ j->restart_interval = 0;
+ if (!decode_jpeg_header(j, SCAN_load)) return 0;
+ m = get_marker(j);
+ while (!EOI(m)) {
+ if (SOS(m)) {
+ if (!process_scan_header(j)) return 0;
+ if (!parse_entropy_coded_data(j)) return 0;
+ if (j->marker == MARKER_none ) {
+ // handle 0s at the end of image data from IP Kamera 9060
+ while (!at_eof(j->s)) {
+ int x = get8(j->s);
+ if (x == 255) {
+ j->marker = get8u(j->s);
+ break;
+ } else if (x != 0) {
+ return 0;
+ }
+ }
+ // if we reach eof without hitting a marker, get_marker() below will fail and we'll eventually return 0
+ }
+ } else {
+ if (!process_marker(j, m)) return 0;
+ }
+ m = get_marker(j);
+ }
+ return 1;
+}
+
+// static jfif-centered resampling (across block boundaries)
+
+typedef uint8 *(*resample_row_func)(uint8 *out, uint8 *in0, uint8 *in1,
+ int w, int hs);
+
+#define div4(x) ((uint8) ((x) >> 2))
+
+static uint8 *resample_row_1(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs)
+{
+ STBI_NOTUSED(out);
+ STBI_NOTUSED(in_far);
+ STBI_NOTUSED(w);
+ STBI_NOTUSED(hs);
+ return in_near;
+}
+
+static uint8* resample_row_v_2(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs)
+{
+ // need to generate two samples vertically for every one in input
+ int i;
+ STBI_NOTUSED(hs);
+ for (i=0; i < w; ++i)
+ out[i] = div4(3*in_near[i] + in_far[i] + 2);
+ return out;
+}
+
+static uint8* resample_row_h_2(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs)
+{
+ // need to generate two samples horizontally for every one in input
+ int i;
+ uint8 *input = in_near;
+
+ if (w == 1) {
+ // if only one sample, can't do any interpolation
+ out[0] = out[1] = input[0];
+ return out;
+ }
+
+ out[0] = input[0];
+ out[1] = div4(input[0]*3 + input[1] + 2);
+ for (i=1; i < w-1; ++i) {
+ int n = 3*input[i]+2;
+ out[i*2+0] = div4(n+input[i-1]);
+ out[i*2+1] = div4(n+input[i+1]);
+ }
+ out[i*2+0] = div4(input[w-2]*3 + input[w-1] + 2);
+ out[i*2+1] = input[w-1];
+
+ STBI_NOTUSED(in_far);
+ STBI_NOTUSED(hs);
+
+ return out;
+}
+
+#define div16(x) ((uint8) ((x) >> 4))
+
+static uint8 *resample_row_hv_2(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs)
+{
+ // need to generate 2x2 samples for every one in input
+ int i,t0,t1;
+ if (w == 1) {
+ out[0] = out[1] = div4(3*in_near[0] + in_far[0] + 2);
+ return out;
+ }
+
+ t1 = 3*in_near[0] + in_far[0];
+ out[0] = div4(t1+2);
+ for (i=1; i < w; ++i) {
+ t0 = t1;
+ t1 = 3*in_near[i]+in_far[i];
+ out[i*2-1] = div16(3*t0 + t1 + 8);
+ out[i*2 ] = div16(3*t1 + t0 + 8);
+ }
+ out[w*2-1] = div4(t1+2);
+
+ STBI_NOTUSED(hs);
+
+ return out;
+}
+
+static uint8 *resample_row_generic(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs)
+{
+ // resample with nearest-neighbor
+ int i,j;
+ in_far = in_far;
+ for (i=0; i < w; ++i)
+ for (j=0; j < hs; ++j)
+ out[i*hs+j] = in_near[i];
+ return out;
+}
+
+#define float2fixed(x) ((int) ((x) * 65536 + 0.5))
+
+// 0.38 seconds on 3*anemones.jpg (0.25 with processor = Pro)
+// VC6 without processor=Pro is generating multiple LEAs per multiply!
+static void YCbCr_to_RGB_row(uint8 *out, const uint8 *y, const uint8 *pcb, const uint8 *pcr, int count, int step)
+{
+ int i;
+ for (i=0; i < count; ++i) {
+ int y_fixed = (y[i] << 16) + 32768; // rounding
+ int r,g,b;
+ int cr = pcr[i] - 128;
+ int cb = pcb[i] - 128;
+ r = y_fixed + cr*float2fixed(1.40200f);
+ g = y_fixed - cr*float2fixed(0.71414f) - cb*float2fixed(0.34414f);
+ b = y_fixed + cb*float2fixed(1.77200f);
+ r >>= 16;
+ g >>= 16;
+ b >>= 16;
+ if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }
+ if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }
+ if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }
+ out[0] = (uint8)r;
+ out[1] = (uint8)g;
+ out[2] = (uint8)b;
+ out[3] = 255;
+ out += step;
+ }
+}
+
+#ifdef STBI_SIMD
+static stbi_YCbCr_to_RGB_run stbi_YCbCr_installed = YCbCr_to_RGB_row;
+
+void stbi_install_YCbCr_to_RGB(stbi_YCbCr_to_RGB_run func)
+{
+ stbi_YCbCr_installed = func;
+}
+#endif
+
+
+// clean up the temporary component buffers
+static void cleanup_jpeg(jpeg *j)
+{
+ int i;
+ for (i=0; i < j->s->img_n; ++i) {
+ if (j->img_comp[i].data) {
+ free(j->img_comp[i].raw_data);
+ j->img_comp[i].data = NULL;
+ }
+ if (j->img_comp[i].linebuf) {
+ free(j->img_comp[i].linebuf);
+ j->img_comp[i].linebuf = NULL;
+ }
+ }
+}
+
+typedef struct
+{
+ resample_row_func resample;
+ uint8 *line0,*line1;
+ int hs,vs; // expansion factor in each axis
+ int w_lores; // horizontal pixels pre-expansion
+ int ystep; // how far through vertical expansion we are
+ int ypos; // which pre-expansion row we're on
+} stbi_resample;
+
+static uint8 *load_jpeg_image(jpeg *z, int *out_x, int *out_y, int *comp, int req_comp)
+{
+ int n, decode_n;
+ // validate req_comp
+ if (req_comp < 0 || req_comp > 4) return epuc("bad req_comp", "Internal error");
+ z->s->img_n = 0;
+
+ // load a jpeg image from whichever source
+ if (!decode_jpeg_image(z)) { cleanup_jpeg(z); return NULL; }
+
+ // determine actual number of components to generate
+ n = req_comp ? req_comp : z->s->img_n;
+
+ if (z->s->img_n == 3 && n < 3)
+ decode_n = 1;
+ else
+ decode_n = z->s->img_n;
+
+ // resample and color-convert
+ {
+ int k;
+ uint i,j;
+ uint8 *output;
+ uint8 *coutput[4];
+
+ stbi_resample res_comp[4];
+
+ for (k=0; k < decode_n; ++k) {
+ stbi_resample *r = &res_comp[k];
+
+ // allocate line buffer big enough for upsampling off the edges
+ // with upsample factor of 4
+ z->img_comp[k].linebuf = (uint8 *) malloc(z->s->img_x + 3);
+ if (!z->img_comp[k].linebuf) { cleanup_jpeg(z); return epuc("outofmem", "Out of memory"); }
+
+ r->hs = z->img_h_max / z->img_comp[k].h;
+ r->vs = z->img_v_max / z->img_comp[k].v;
+ r->ystep = r->vs >> 1;
+ r->w_lores = (z->s->img_x + r->hs-1) / r->hs;
+ r->ypos = 0;
+ r->line0 = r->line1 = z->img_comp[k].data;
+
+ if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1;
+ else if (r->hs == 1 && r->vs == 2) r->resample = resample_row_v_2;
+ else if (r->hs == 2 && r->vs == 1) r->resample = resample_row_h_2;
+ else if (r->hs == 2 && r->vs == 2) r->resample = resample_row_hv_2;
+ else r->resample = resample_row_generic;
+ }
+
+ // can't error after this so, this is safe
+ output = (uint8 *) malloc(n * z->s->img_x * z->s->img_y + 1);
+ if (!output) { cleanup_jpeg(z); return epuc("outofmem", "Out of memory"); }
+
+ // now go ahead and resample
+ for (j=0; j < z->s->img_y; ++j) {
+ uint8 *out = output + n * z->s->img_x * j;
+ for (k=0; k < decode_n; ++k) {
+ stbi_resample *r = &res_comp[k];
+ int y_bot = r->ystep >= (r->vs >> 1);
+ coutput[k] = r->resample(z->img_comp[k].linebuf,
+ y_bot ? r->line1 : r->line0,
+ y_bot ? r->line0 : r->line1,
+ r->w_lores, r->hs);
+ if (++r->ystep >= r->vs) {
+ r->ystep = 0;
+ r->line0 = r->line1;
+ if (++r->ypos < z->img_comp[k].y)
+ r->line1 += z->img_comp[k].w2;
+ }
+ }
+ if (n >= 3) {
+ uint8 *y = coutput[0];
+ if (z->s->img_n == 3) {
+ #ifdef STBI_SIMD
+ stbi_YCbCr_installed(out, y, coutput[1], coutput[2], z->s.img_x, n);
+ #else
+ YCbCr_to_RGB_row(out, y, coutput[1], coutput[2], z->s->img_x, n);
+ #endif
+ } else
+ for (i=0; i < z->s->img_x; ++i) {
+ out[0] = out[1] = out[2] = y[i];
+ out[3] = 255; // not used if n==3
+ out += n;
+ }
+ } else {
+ uint8 *y = coutput[0];
+ if (n == 1)
+ for (i=0; i < z->s->img_x; ++i) out[i] = y[i];
+ else
+ for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255;
+ }
+ }
+ cleanup_jpeg(z);
+ *out_x = z->s->img_x;
+ *out_y = z->s->img_y;
+ if (comp) *comp = z->s->img_n; // report original components, not output
+ return output;
+ }
+}
+
+static unsigned char *stbi_jpeg_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ jpeg j;
+ j.s = s;
+ return load_jpeg_image(&j, x,y,comp,req_comp);
+}
+
+static int stbi_jpeg_test(stbi *s)
+{
+ int r;
+ jpeg j;
+ j.s = s;
+ r = decode_jpeg_header(&j, SCAN_type);
+ stbi_rewind(s);
+ return r;
+}
+
+static int stbi_jpeg_info_raw(jpeg *j, int *x, int *y, int *comp)
+{
+ if (!decode_jpeg_header(j, SCAN_header)) {
+ stbi_rewind( j->s );
+ return 0;
+ }
+ if (x) *x = j->s->img_x;
+ if (y) *y = j->s->img_y;
+ if (comp) *comp = j->s->img_n;
+ return 1;
+}
+
+static int stbi_jpeg_info(stbi *s, int *x, int *y, int *comp)
+{
+ jpeg j;
+ j.s = s;
+ return stbi_jpeg_info_raw(&j, x, y, comp);
+}
+
+// public domain zlib decode v0.2 Sean Barrett 2006-11-18
+// simple implementation
+// - all input must be provided in an upfront buffer
+// - all output is written to a single output buffer (can malloc/realloc)
+// performance
+// - fast huffman
+
+// fast-way is faster to check than jpeg huffman, but slow way is slower
+#define ZFAST_BITS 9 // accelerate all cases in default tables
+#define ZFAST_MASK ((1 << ZFAST_BITS) - 1)
+
+// zlib-style huffman encoding
+// (jpegs packs from left, zlib from right, so can't share code)
+typedef struct
+{
+ uint16 fast[1 << ZFAST_BITS];
+ uint16 firstcode[16];
+ int maxcode[17];
+ uint16 firstsymbol[16];
+ uint8 size[288];
+ uint16 value[288];
+} zhuffman;
+
+stbi_inline static int bitreverse16(int n)
+{
+ n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1);
+ n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2);
+ n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4);
+ n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8);
+ return n;
+}
+
+stbi_inline static int bit_reverse(int v, int bits)
+{
+ assert(bits <= 16);
+ // to bit reverse n bits, reverse 16 and shift
+ // e.g. 11 bits, bit reverse and shift away 5
+ return bitreverse16(v) >> (16-bits);
+}
+
+static int zbuild_huffman(zhuffman *z, uint8 *sizelist, int num)
+{
+ int i,k=0;
+ int code, next_code[16], sizes[17];
+
+ // DEFLATE spec for generating codes
+ memset(sizes, 0, sizeof(sizes));
+ memset(z->fast, 255, sizeof(z->fast));
+ for (i=0; i < num; ++i)
+ ++sizes[sizelist[i]];
+ sizes[0] = 0;
+ for (i=1; i < 16; ++i)
+ assert(sizes[i] <= (1 << i));
+ code = 0;
+ for (i=1; i < 16; ++i) {
+ next_code[i] = code;
+ z->firstcode[i] = (uint16) code;
+ z->firstsymbol[i] = (uint16) k;
+ code = (code + sizes[i]);
+ if (sizes[i])
+ if (code-1 >= (1 << i)) return e("bad codelengths","Corrupt JPEG");
+ z->maxcode[i] = code << (16-i); // preshift for inner loop
+ code <<= 1;
+ k += sizes[i];
+ }
+ z->maxcode[16] = 0x10000; // sentinel
+ for (i=0; i < num; ++i) {
+ int s = sizelist[i];
+ if (s) {
+ int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];
+ z->size[c] = (uint8)s;
+ z->value[c] = (uint16)i;
+ if (s <= ZFAST_BITS) {
+ int k = bit_reverse(next_code[s],s);
+ while (k < (1 << ZFAST_BITS)) {
+ z->fast[k] = (uint16) c;
+ k += (1 << s);
+ }
+ }
+ ++next_code[s];
+ }
+ }
+ return 1;
+}
+
+// zlib-from-memory implementation for PNG reading
+// because PNG allows splitting the zlib stream arbitrarily,
+// and it's annoying structurally to have PNG call ZLIB call PNG,
+// we require PNG read all the IDATs and combine them into a single
+// memory buffer
+
+typedef struct
+{
+ uint8 *zbuffer, *zbuffer_end;
+ int num_bits;
+ uint32 code_buffer;
+
+ char *zout;
+ char *zout_start;
+ char *zout_end;
+ int z_expandable;
+
+ zhuffman z_length, z_distance;
+} zbuf;
+
+stbi_inline static int zget8(zbuf *z)
+{
+ if (z->zbuffer >= z->zbuffer_end) return 0;
+ return *z->zbuffer++;
+}
+
+static void fill_bits(zbuf *z)
+{
+ do {
+ assert(z->code_buffer < (1U << z->num_bits));
+ z->code_buffer |= zget8(z) << z->num_bits;
+ z->num_bits += 8;
+ } while (z->num_bits <= 24);
+}
+
+stbi_inline static unsigned int zreceive(zbuf *z, int n)
+{
+ unsigned int k;
+ if (z->num_bits < n) fill_bits(z);
+ k = z->code_buffer & ((1 << n) - 1);
+ z->code_buffer >>= n;
+ z->num_bits -= n;
+ return k;
+}
+
+stbi_inline static int zhuffman_decode(zbuf *a, zhuffman *z)
+{
+ int b,s,k;
+ if (a->num_bits < 16) fill_bits(a);
+ b = z->fast[a->code_buffer & ZFAST_MASK];
+ if (b < 0xffff) {
+ s = z->size[b];
+ a->code_buffer >>= s;
+ a->num_bits -= s;
+ return z->value[b];
+ }
+
+ // not resolved by fast table, so compute it the slow way
+ // use jpeg approach, which requires MSbits at top
+ k = bit_reverse(a->code_buffer, 16);
+ for (s=ZFAST_BITS+1; ; ++s)
+ if (k < z->maxcode[s])
+ break;
+ if (s == 16) return -1; // invalid code!
+ // code size is s, so:
+ b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s];
+ assert(z->size[b] == s);
+ a->code_buffer >>= s;
+ a->num_bits -= s;
+ return z->value[b];
+}
+
+static int expand(zbuf *z, int n) // need to make room for n bytes
+{
+ char *q;
+ int cur, limit;
+ if (!z->z_expandable) return e("output buffer limit","Corrupt PNG");
+ cur = (int) (z->zout - z->zout_start);
+ limit = (int) (z->zout_end - z->zout_start);
+ while (cur + n > limit)
+ limit *= 2;
+ q = (char *) realloc(z->zout_start, limit);
+ if (q == NULL) return e("outofmem", "Out of memory");
+ z->zout_start = q;
+ z->zout = q + cur;
+ z->zout_end = q + limit;
+ return 1;
+}
+
+static int length_base[31] = {
+ 3,4,5,6,7,8,9,10,11,13,
+ 15,17,19,23,27,31,35,43,51,59,
+ 67,83,99,115,131,163,195,227,258,0,0 };
+
+static int length_extra[31]=
+{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };
+
+static int dist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,
+257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};
+
+static int dist_extra[32] =
+{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
+
+static int parse_huffman_block(zbuf *a)
+{
+ for(;;) {
+ int z = zhuffman_decode(a, &a->z_length);
+ if (z < 256) {
+ if (z < 0) return e("bad huffman code","Corrupt PNG"); // error in huffman codes
+ if (a->zout >= a->zout_end) if (!expand(a, 1)) return 0;
+ *a->zout++ = (char) z;
+ } else {
+ uint8 *p;
+ int len,dist;
+ if (z == 256) return 1;
+ z -= 257;
+ len = length_base[z];
+ if (length_extra[z]) len += zreceive(a, length_extra[z]);
+ z = zhuffman_decode(a, &a->z_distance);
+ if (z < 0) return e("bad huffman code","Corrupt PNG");
+ dist = dist_base[z];
+ if (dist_extra[z]) dist += zreceive(a, dist_extra[z]);
+ if (a->zout - a->zout_start < dist) return e("bad dist","Corrupt PNG");
+ if (a->zout + len > a->zout_end) if (!expand(a, len)) return 0;
+ p = (uint8 *) (a->zout - dist);
+ while (len--)
+ *a->zout++ = *p++;
+ }
+ }
+}
+
+static int compute_huffman_codes(zbuf *a)
+{
+ static uint8 length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };
+ zhuffman z_codelength;
+ uint8 lencodes[286+32+137];//padding for maximum single op
+ uint8 codelength_sizes[19];
+ int i,n;
+
+ int hlit = zreceive(a,5) + 257;
+ int hdist = zreceive(a,5) + 1;
+ int hclen = zreceive(a,4) + 4;
+
+ memset(codelength_sizes, 0, sizeof(codelength_sizes));
+ for (i=0; i < hclen; ++i) {
+ int s = zreceive(a,3);
+ codelength_sizes[length_dezigzag[i]] = (uint8) s;
+ }
+ if (!zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0;
+
+ n = 0;
+ while (n < hlit + hdist) {
+ int c = zhuffman_decode(a, &z_codelength);
+ assert(c >= 0 && c < 19);
+ if (c < 16)
+ lencodes[n++] = (uint8) c;
+ else if (c == 16) {
+ c = zreceive(a,2)+3;
+ memset(lencodes+n, lencodes[n-1], c);
+ n += c;
+ } else if (c == 17) {
+ c = zreceive(a,3)+3;
+ memset(lencodes+n, 0, c);
+ n += c;
+ } else {
+ assert(c == 18);
+ c = zreceive(a,7)+11;
+ memset(lencodes+n, 0, c);
+ n += c;
+ }
+ }
+ if (n != hlit+hdist) return e("bad codelengths","Corrupt PNG");
+ if (!zbuild_huffman(&a->z_length, lencodes, hlit)) return 0;
+ if (!zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0;
+ return 1;
+}
+
+static int parse_uncompressed_block(zbuf *a)
+{
+ uint8 header[4];
+ int len,nlen,k;
+ if (a->num_bits & 7)
+ zreceive(a, a->num_bits & 7); // discard
+ // drain the bit-packed data into header
+ k = 0;
+ while (a->num_bits > 0) {
+ header[k++] = (uint8) (a->code_buffer & 255); // wtf this warns?
+ a->code_buffer >>= 8;
+ a->num_bits -= 8;
+ }
+ assert(a->num_bits == 0);
+ // now fill header the normal way
+ while (k < 4)
+ header[k++] = (uint8) zget8(a);
+ len = header[1] * 256 + header[0];
+ nlen = header[3] * 256 + header[2];
+ if (nlen != (len ^ 0xffff)) return e("zlib corrupt","Corrupt PNG");
+ if (a->zbuffer + len > a->zbuffer_end) return e("read past buffer","Corrupt PNG");
+ if (a->zout + len > a->zout_end)
+ if (!expand(a, len)) return 0;
+ memcpy(a->zout, a->zbuffer, len);
+ a->zbuffer += len;
+ a->zout += len;
+ return 1;
+}
+
+static int parse_zlib_header(zbuf *a)
+{
+ int cmf = zget8(a);
+ int cm = cmf & 15;
+ /* int cinfo = cmf >> 4; */
+ int flg = zget8(a);
+ if ((cmf*256+flg) % 31 != 0) return e("bad zlib header","Corrupt PNG"); // zlib spec
+ if (flg & 32) return e("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png
+ if (cm != 8) return e("bad compression","Corrupt PNG"); // DEFLATE required for png
+ // window = 1 << (8 + cinfo)... but who cares, we fully buffer output
+ return 1;
+}
+
+// @TODO: should statically initialize these for optimal thread safety
+static uint8 default_length[288], default_distance[32];
+static void init_defaults(void)
+{
+ int i; // use <= to match clearly with spec
+ for (i=0; i <= 143; ++i) default_length[i] = 8;
+ for ( ; i <= 255; ++i) default_length[i] = 9;
+ for ( ; i <= 279; ++i) default_length[i] = 7;
+ for ( ; i <= 287; ++i) default_length[i] = 8;
+
+ for (i=0; i <= 31; ++i) default_distance[i] = 5;
+}
+
+int stbi_png_partial; // a quick hack to only allow decoding some of a PNG... I should implement real streaming support instead
+static int parse_zlib(zbuf *a, int parse_header)
+{
+ int final, type;
+ if (parse_header)
+ if (!parse_zlib_header(a)) return 0;
+ a->num_bits = 0;
+ a->code_buffer = 0;
+ do {
+ final = zreceive(a,1);
+ type = zreceive(a,2);
+ if (type == 0) {
+ if (!parse_uncompressed_block(a)) return 0;
+ } else if (type == 3) {
+ return 0;
+ } else {
+ if (type == 1) {
+ // use fixed code lengths
+ if (!default_distance[31]) init_defaults();
+ if (!zbuild_huffman(&a->z_length , default_length , 288)) return 0;
+ if (!zbuild_huffman(&a->z_distance, default_distance, 32)) return 0;
+ } else {
+ if (!compute_huffman_codes(a)) return 0;
+ }
+ if (!parse_huffman_block(a)) return 0;
+ }
+ if (stbi_png_partial && a->zout - a->zout_start > 65536)
+ break;
+ } while (!final);
+ return 1;
+}
+
+static int do_zlib(zbuf *a, char *obuf, int olen, int exp, int parse_header)
+{
+ a->zout_start = obuf;
+ a->zout = obuf;
+ a->zout_end = obuf + olen;
+ a->z_expandable = exp;
+
+ return parse_zlib(a, parse_header);
+}
+
+char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)
+{
+ zbuf a;
+ char *p = (char *) malloc(initial_size);
+ if (p == NULL) return NULL;
+ a.zbuffer = (uint8 *) buffer;
+ a.zbuffer_end = (uint8 *) buffer + len;
+ if (do_zlib(&a, p, initial_size, 1, 1)) {
+ if (outlen) *outlen = (int) (a.zout - a.zout_start);
+ return a.zout_start;
+ } else {
+ free(a.zout_start);
+ return NULL;
+ }
+}
+
+char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen)
+{
+ return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);
+}
+
+char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)
+{
+ zbuf a;
+ char *p = (char *) malloc(initial_size);
+ if (p == NULL) return NULL;
+ a.zbuffer = (uint8 *) buffer;
+ a.zbuffer_end = (uint8 *) buffer + len;
+ if (do_zlib(&a, p, initial_size, 1, parse_header)) {
+ if (outlen) *outlen = (int) (a.zout - a.zout_start);
+ return a.zout_start;
+ } else {
+ free(a.zout_start);
+ return NULL;
+ }
+}
+
+int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen)
+{
+ zbuf a;
+ a.zbuffer = (uint8 *) ibuffer;
+ a.zbuffer_end = (uint8 *) ibuffer + ilen;
+ if (do_zlib(&a, obuffer, olen, 0, 1))
+ return (int) (a.zout - a.zout_start);
+ else
+ return -1;
+}
+
+char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen)
+{
+ zbuf a;
+ char *p = (char *) malloc(16384);
+ if (p == NULL) return NULL;
+ a.zbuffer = (uint8 *) buffer;
+ a.zbuffer_end = (uint8 *) buffer+len;
+ if (do_zlib(&a, p, 16384, 1, 0)) {
+ if (outlen) *outlen = (int) (a.zout - a.zout_start);
+ return a.zout_start;
+ } else {
+ free(a.zout_start);
+ return NULL;
+ }
+}
+
+int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)
+{
+ zbuf a;
+ a.zbuffer = (uint8 *) ibuffer;
+ a.zbuffer_end = (uint8 *) ibuffer + ilen;
+ if (do_zlib(&a, obuffer, olen, 0, 0))
+ return (int) (a.zout - a.zout_start);
+ else
+ return -1;
+}
+
+// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18
+// simple implementation
+// - only 8-bit samples
+// - no CRC checking
+// - allocates lots of intermediate memory
+// - avoids problem of streaming data between subsystems
+// - avoids explicit window management
+// performance
+// - uses stb_zlib, a PD zlib implementation with fast huffman decoding
+
+
+typedef struct
+{
+ uint32 length;
+ uint32 type;
+} chunk;
+
+#define PNG_TYPE(a,b,c,d) (((a) << 24) + ((b) << 16) + ((c) << 8) + (d))
+
+static chunk get_chunk_header(stbi *s)
+{
+ chunk c;
+ c.length = get32(s);
+ c.type = get32(s);
+ return c;
+}
+
+static int check_png_header(stbi *s)
+{
+ static uint8 png_sig[8] = { 137,80,78,71,13,10,26,10 };
+ int i;
+ for (i=0; i < 8; ++i)
+ if (get8u(s) != png_sig[i]) return e("bad png sig","Not a PNG");
+ return 1;
+}
+
+typedef struct
+{
+ stbi *s;
+ uint8 *idata, *expanded, *out;
+} png;
+
+
+enum {
+ F_none=0, F_sub=1, F_up=2, F_avg=3, F_paeth=4,
+ F_avg_first, F_paeth_first
+};
+
+static uint8 first_row_filter[5] =
+{
+ F_none, F_sub, F_none, F_avg_first, F_paeth_first
+};
+
+static int paeth(int a, int b, int c)
+{
+ int p = a + b - c;
+ int pa = abs(p-a);
+ int pb = abs(p-b);
+ int pc = abs(p-c);
+ if (pa <= pb && pa <= pc) return a;
+ if (pb <= pc) return b;
+ return c;
+}
+
+// create the png data from post-deflated data
+static int create_png_image_raw(png *a, uint8 *raw, uint32 raw_len, int out_n, uint32 x, uint32 y)
+{
+ stbi *s = a->s;
+ uint32 i,j,stride = x*out_n;
+ int k;
+ int img_n = s->img_n; // copy it into a local for later
+ assert(out_n == s->img_n || out_n == s->img_n+1);
+ if (stbi_png_partial) y = 1;
+ a->out = (uint8 *) malloc(x * y * out_n);
+ if (!a->out) return e("outofmem", "Out of memory");
+ if (!stbi_png_partial) {
+ if (s->img_x == x && s->img_y == y) {
+ if (raw_len != (img_n * x + 1) * y) return e("not enough pixels","Corrupt PNG");
+ } else { // interlaced:
+ if (raw_len < (img_n * x + 1) * y) return e("not enough pixels","Corrupt PNG");
+ }
+ }
+ for (j=0; j < y; ++j) {
+ uint8 *cur = a->out + stride*j;
+ uint8 *prior = cur - stride;
+ int filter = *raw++;
+ if (filter > 4) return e("invalid filter","Corrupt PNG");
+ // if first row, use special filter that doesn't sample previous row
+ if (j == 0) filter = first_row_filter[filter];
+ // handle first pixel explicitly
+ for (k=0; k < img_n; ++k) {
+ switch (filter) {
+ case F_none : cur[k] = raw[k]; break;
+ case F_sub : cur[k] = raw[k]; break;
+ case F_up : cur[k] = raw[k] + prior[k]; break;
+ case F_avg : cur[k] = raw[k] + (prior[k]>>1); break;
+ case F_paeth : cur[k] = (uint8) (raw[k] + paeth(0,prior[k],0)); break;
+ case F_avg_first : cur[k] = raw[k]; break;
+ case F_paeth_first: cur[k] = raw[k]; break;
+ }
+ }
+ if (img_n != out_n) cur[img_n] = 255;
+ raw += img_n;
+ cur += out_n;
+ prior += out_n;
+ // this is a little gross, so that we don't switch per-pixel or per-component
+ if (img_n == out_n) {
+ #define CASE(f) \
+ case f: \
+ for (i=x-1; i >= 1; --i, raw+=img_n,cur+=img_n,prior+=img_n) \
+ for (k=0; k < img_n; ++k)
+ switch (filter) {
+ CASE(F_none) cur[k] = raw[k]; break;
+ CASE(F_sub) cur[k] = raw[k] + cur[k-img_n]; break;
+ CASE(F_up) cur[k] = raw[k] + prior[k]; break;
+ CASE(F_avg) cur[k] = raw[k] + ((prior[k] + cur[k-img_n])>>1); break;
+ CASE(F_paeth) cur[k] = (uint8) (raw[k] + paeth(cur[k-img_n],prior[k],prior[k-img_n])); break;
+ CASE(F_avg_first) cur[k] = raw[k] + (cur[k-img_n] >> 1); break;
+ CASE(F_paeth_first) cur[k] = (uint8) (raw[k] + paeth(cur[k-img_n],0,0)); break;
+ }
+ #undef CASE
+ } else {
+ assert(img_n+1 == out_n);
+ #define CASE(f) \
+ case f: \
+ for (i=x-1; i >= 1; --i, cur[img_n]=255,raw+=img_n,cur+=out_n,prior+=out_n) \
+ for (k=0; k < img_n; ++k)
+ switch (filter) {
+ CASE(F_none) cur[k] = raw[k]; break;
+ CASE(F_sub) cur[k] = raw[k] + cur[k-out_n]; break;
+ CASE(F_up) cur[k] = raw[k] + prior[k]; break;
+ CASE(F_avg) cur[k] = raw[k] + ((prior[k] + cur[k-out_n])>>1); break;
+ CASE(F_paeth) cur[k] = (uint8) (raw[k] + paeth(cur[k-out_n],prior[k],prior[k-out_n])); break;
+ CASE(F_avg_first) cur[k] = raw[k] + (cur[k-out_n] >> 1); break;
+ CASE(F_paeth_first) cur[k] = (uint8) (raw[k] + paeth(cur[k-out_n],0,0)); break;
+ }
+ #undef CASE
+ }
+ }
+ return 1;
+}
+
+static int create_png_image(png *a, uint8 *raw, uint32 raw_len, int out_n, int interlaced)
+{
+ uint8 *final;
+ int p;
+ int save;
+ if (!interlaced)
+ return create_png_image_raw(a, raw, raw_len, out_n, a->s->img_x, a->s->img_y);
+ save = stbi_png_partial;
+ stbi_png_partial = 0;
+
+ // de-interlacing
+ final = (uint8 *) malloc(a->s->img_x * a->s->img_y * out_n);
+ for (p=0; p < 7; ++p) {
+ int xorig[] = { 0,4,0,2,0,1,0 };
+ int yorig[] = { 0,0,4,0,2,0,1 };
+ int xspc[] = { 8,8,4,4,2,2,1 };
+ int yspc[] = { 8,8,8,4,4,2,2 };
+ int i,j,x,y;
+ // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1
+ x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p];
+ y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p];
+ if (x && y) {
+ if (!create_png_image_raw(a, raw, raw_len, out_n, x, y)) {
+ free(final);
+ return 0;
+ }
+ for (j=0; j < y; ++j)
+ for (i=0; i < x; ++i)
+ memcpy(final + (j*yspc[p]+yorig[p])*a->s->img_x*out_n + (i*xspc[p]+xorig[p])*out_n,
+ a->out + (j*x+i)*out_n, out_n);
+ free(a->out);
+ raw += (x*out_n+1)*y;
+ raw_len -= (x*out_n+1)*y;
+ }
+ }
+ a->out = final;
+
+ stbi_png_partial = save;
+ return 1;
+}
+
+static int compute_transparency(png *z, uint8 tc[3], int out_n)
+{
+ stbi *s = z->s;
+ uint32 i, pixel_count = s->img_x * s->img_y;
+ uint8 *p = z->out;
+
+ // compute color-based transparency, assuming we've
+ // already got 255 as the alpha value in the output
+ assert(out_n == 2 || out_n == 4);
+
+ if (out_n == 2) {
+ for (i=0; i < pixel_count; ++i) {
+ p[1] = (p[0] == tc[0] ? 0 : 255);
+ p += 2;
+ }
+ } else {
+ for (i=0; i < pixel_count; ++i) {
+ if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])
+ p[3] = 0;
+ p += 4;
+ }
+ }
+ return 1;
+}
+
+static int expand_palette(png *a, uint8 *palette, int len, int pal_img_n)
+{
+ uint32 i, pixel_count = a->s->img_x * a->s->img_y;
+ uint8 *p, *temp_out, *orig = a->out;
+
+ p = (uint8 *) malloc(pixel_count * pal_img_n);
+ if (p == NULL) return e("outofmem", "Out of memory");
+
+ // between here and free(out) below, exitting would leak
+ temp_out = p;
+
+ if (pal_img_n == 3) {
+ for (i=0; i < pixel_count; ++i) {
+ int n = orig[i]*4;
+ p[0] = palette[n ];
+ p[1] = palette[n+1];
+ p[2] = palette[n+2];
+ p += 3;
+ }
+ } else {
+ for (i=0; i < pixel_count; ++i) {
+ int n = orig[i]*4;
+ p[0] = palette[n ];
+ p[1] = palette[n+1];
+ p[2] = palette[n+2];
+ p[3] = palette[n+3];
+ p += 4;
+ }
+ }
+ free(a->out);
+ a->out = temp_out;
+
+ STBI_NOTUSED(len);
+
+ return 1;
+}
+
+static int stbi_unpremultiply_on_load = 0;
+static int stbi_de_iphone_flag = 0;
+
+void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)
+{
+ stbi_unpremultiply_on_load = flag_true_if_should_unpremultiply;
+}
+void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)
+{
+ stbi_de_iphone_flag = flag_true_if_should_convert;
+}
+
+static void stbi_de_iphone(png *z)
+{
+ stbi *s = z->s;
+ uint32 i, pixel_count = s->img_x * s->img_y;
+ uint8 *p = z->out;
+
+ if (s->img_out_n == 3) { // convert bgr to rgb
+ for (i=0; i < pixel_count; ++i) {
+ uint8 t = p[0];
+ p[0] = p[2];
+ p[2] = t;
+ p += 3;
+ }
+ } else {
+ assert(s->img_out_n == 4);
+ if (stbi_unpremultiply_on_load) {
+ // convert bgr to rgb and unpremultiply
+ for (i=0; i < pixel_count; ++i) {
+ uint8 a = p[3];
+ uint8 t = p[0];
+ if (a) {
+ p[0] = p[2] * 255 / a;
+ p[1] = p[1] * 255 / a;
+ p[2] = t * 255 / a;
+ } else {
+ p[0] = p[2];
+ p[2] = t;
+ }
+ p += 4;
+ }
+ } else {
+ // convert bgr to rgb
+ for (i=0; i < pixel_count; ++i) {
+ uint8 t = p[0];
+ p[0] = p[2];
+ p[2] = t;
+ p += 4;
+ }
+ }
+ }
+}
+
+static int parse_png_file(png *z, int scan, int req_comp)
+{
+ uint8 palette[1024], pal_img_n=0;
+ uint8 has_trans=0, tc[3];
+ uint32 ioff=0, idata_limit=0, i, pal_len=0;
+ int first=1,k,interlace=0, iphone=0;
+ stbi *s = z->s;
+
+ z->expanded = NULL;
+ z->idata = NULL;
+ z->out = NULL;
+
+ if (!check_png_header(s)) return 0;
+
+ if (scan == SCAN_type) return 1;
+
+ for (;;) {
+ chunk c = get_chunk_header(s);
+ switch (c.type) {
+ case PNG_TYPE('C','g','B','I'):
+ iphone = stbi_de_iphone_flag;
+ skip(s, c.length);
+ break;
+ case PNG_TYPE('I','H','D','R'): {
+ int depth,color,comp,filter;
+ if (!first) return e("multiple IHDR","Corrupt PNG");
+ first = 0;
+ if (c.length != 13) return e("bad IHDR len","Corrupt PNG");
+ s->img_x = get32(s); if (s->img_x > (1 << 24)) return e("too large","Very large image (corrupt?)");
+ s->img_y = get32(s); if (s->img_y > (1 << 24)) return e("too large","Very large image (corrupt?)");
+ depth = get8(s); if (depth != 8) return e("8bit only","PNG not supported: 8-bit only");
+ color = get8(s); if (color > 6) return e("bad ctype","Corrupt PNG");
+ if (color == 3) pal_img_n = 3; else if (color & 1) return e("bad ctype","Corrupt PNG");
+ comp = get8(s); if (comp) return e("bad comp method","Corrupt PNG");
+ filter= get8(s); if (filter) return e("bad filter method","Corrupt PNG");
+ interlace = get8(s); if (interlace>1) return e("bad interlace method","Corrupt PNG");
+ if (!s->img_x || !s->img_y) return e("0-pixel image","Corrupt PNG");
+ if (!pal_img_n) {
+ s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);
+ if ((1 << 30) / s->img_x / s->img_n < s->img_y) return e("too large", "Image too large to decode");
+ if (scan == SCAN_header) return 1;
+ } else {
+ // if paletted, then pal_n is our final components, and
+ // img_n is # components to decompress/filter.
+ s->img_n = 1;
+ if ((1 << 30) / s->img_x / 4 < s->img_y) return e("too large","Corrupt PNG");
+ // if SCAN_header, have to scan to see if we have a tRNS
+ }
+ break;
+ }
+
+ case PNG_TYPE('P','L','T','E'): {
+ if (first) return e("first not IHDR", "Corrupt PNG");
+ if (c.length > 256*3) return e("invalid PLTE","Corrupt PNG");
+ pal_len = c.length / 3;
+ if (pal_len * 3 != c.length) return e("invalid PLTE","Corrupt PNG");
+ for (i=0; i < pal_len; ++i) {
+ palette[i*4+0] = get8u(s);
+ palette[i*4+1] = get8u(s);
+ palette[i*4+2] = get8u(s);
+ palette[i*4+3] = 255;
+ }
+ break;
+ }
+
+ case PNG_TYPE('t','R','N','S'): {
+ if (first) return e("first not IHDR", "Corrupt PNG");
+ if (z->idata) return e("tRNS after IDAT","Corrupt PNG");
+ if (pal_img_n) {
+ if (scan == SCAN_header) { s->img_n = 4; return 1; }
+ if (pal_len == 0) return e("tRNS before PLTE","Corrupt PNG");
+ if (c.length > pal_len) return e("bad tRNS len","Corrupt PNG");
+ pal_img_n = 4;
+ for (i=0; i < c.length; ++i)
+ palette[i*4+3] = get8u(s);
+ } else {
+ if (!(s->img_n & 1)) return e("tRNS with alpha","Corrupt PNG");
+ if (c.length != (uint32) s->img_n*2) return e("bad tRNS len","Corrupt PNG");
+ has_trans = 1;
+ for (k=0; k < s->img_n; ++k)
+ tc[k] = (uint8) get16(s); // non 8-bit images will be larger
+ }
+ break;
+ }
+
+ case PNG_TYPE('I','D','A','T'): {
+ if (first) return e("first not IHDR", "Corrupt PNG");
+ if (pal_img_n && !pal_len) return e("no PLTE","Corrupt PNG");
+ if (scan == SCAN_header) { s->img_n = pal_img_n; return 1; }
+ if (ioff + c.length > idata_limit) {
+ uint8 *p;
+ if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096;
+ while (ioff + c.length > idata_limit)
+ idata_limit *= 2;
+ p = (uint8 *) realloc(z->idata, idata_limit); if (p == NULL) return e("outofmem", "Out of memory");
+ z->idata = p;
+ }
+ if (!getn(s, z->idata+ioff,c.length)) return e("outofdata","Corrupt PNG");
+ ioff += c.length;
+ break;
+ }
+
+ case PNG_TYPE('I','E','N','D'): {
+ uint32 raw_len;
+ if (first) return e("first not IHDR", "Corrupt PNG");
+ if (scan != SCAN_load) return 1;
+ if (z->idata == NULL) return e("no IDAT","Corrupt PNG");
+ z->expanded = (uint8 *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, 16384, (int *) &raw_len, !iphone);
+ if (z->expanded == NULL) return 0; // zlib should set error
+ free(z->idata); z->idata = NULL;
+ if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans)
+ s->img_out_n = s->img_n+1;
+ else
+ s->img_out_n = s->img_n;
+ if (!create_png_image(z, z->expanded, raw_len, s->img_out_n, interlace)) return 0;
+ if (has_trans)
+ if (!compute_transparency(z, tc, s->img_out_n)) return 0;
+ if (iphone && s->img_out_n > 2)
+ stbi_de_iphone(z);
+ if (pal_img_n) {
+ // pal_img_n == 3 or 4
+ s->img_n = pal_img_n; // record the actual colors we had
+ s->img_out_n = pal_img_n;
+ if (req_comp >= 3) s->img_out_n = req_comp;
+ if (!expand_palette(z, palette, pal_len, s->img_out_n))
+ return 0;
+ }
+ free(z->expanded); z->expanded = NULL;
+ return 1;
+ }
+
+ default:
+ // if critical, fail
+ if (first) return e("first not IHDR", "Corrupt PNG");
+ if ((c.type & (1 << 29)) == 0) {
+ #ifndef STBI_NO_FAILURE_STRINGS
+ // not threadsafe
+ static char invalid_chunk[] = "XXXX chunk not known";
+ invalid_chunk[0] = (uint8) (c.type >> 24);
+ invalid_chunk[1] = (uint8) (c.type >> 16);
+ invalid_chunk[2] = (uint8) (c.type >> 8);
+ invalid_chunk[3] = (uint8) (c.type >> 0);
+ #endif
+ return e(invalid_chunk, "PNG not supported: unknown chunk type");
+ }
+ skip(s, c.length);
+ break;
+ }
+ // end of chunk, read and skip CRC
+ get32(s);
+ }
+}
+
+static unsigned char *do_png(png *p, int *x, int *y, int *n, int req_comp)
+{
+ unsigned char *result=NULL;
+ if (req_comp < 0 || req_comp > 4) return epuc("bad req_comp", "Internal error");
+ if (parse_png_file(p, SCAN_load, req_comp)) {
+ result = p->out;
+ p->out = NULL;
+ if (req_comp && req_comp != p->s->img_out_n) {
+ result = convert_format(result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);
+ p->s->img_out_n = req_comp;
+ if (result == NULL) return result;
+ }
+ *x = p->s->img_x;
+ *y = p->s->img_y;
+ if (n) *n = p->s->img_n;
+ }
+ free(p->out); p->out = NULL;
+ free(p->expanded); p->expanded = NULL;
+ free(p->idata); p->idata = NULL;
+
+ return result;
+}
+
+static unsigned char *stbi_png_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ png p;
+ p.s = s;
+ return do_png(&p, x,y,comp,req_comp);
+}
+
+static int stbi_png_test(stbi *s)
+{
+ int r;
+ r = check_png_header(s);
+ stbi_rewind(s);
+ return r;
+}
+
+static int stbi_png_info_raw(png *p, int *x, int *y, int *comp)
+{
+ if (!parse_png_file(p, SCAN_header, 0)) {
+ stbi_rewind( p->s );
+ return 0;
+ }
+ if (x) *x = p->s->img_x;
+ if (y) *y = p->s->img_y;
+ if (comp) *comp = p->s->img_n;
+ return 1;
+}
+
+static int stbi_png_info(stbi *s, int *x, int *y, int *comp)
+{
+ png p;
+ p.s = s;
+ return stbi_png_info_raw(&p, x, y, comp);
+}
+
+// Microsoft/Windows BMP image
+
+static int bmp_test(stbi *s)
+{
+ int sz;
+ if (get8(s) != 'B') return 0;
+ if (get8(s) != 'M') return 0;
+ get32le(s); // discard filesize
+ get16le(s); // discard reserved
+ get16le(s); // discard reserved
+ get32le(s); // discard data offset
+ sz = get32le(s);
+ if (sz == 12 || sz == 40 || sz == 56 || sz == 108) return 1;
+ return 0;
+}
+
+static int stbi_bmp_test(stbi *s)
+{
+ int r = bmp_test(s);
+ stbi_rewind(s);
+ return r;
+}
+
+
+// returns 0..31 for the highest set bit
+static int high_bit(unsigned int z)
+{
+ int n=0;
+ if (z == 0) return -1;
+ if (z >= 0x10000) n += 16, z >>= 16;
+ if (z >= 0x00100) n += 8, z >>= 8;
+ if (z >= 0x00010) n += 4, z >>= 4;
+ if (z >= 0x00004) n += 2, z >>= 2;
+ if (z >= 0x00002) n += 1, z >>= 1;
+ return n;
+}
+
+static int bitcount(unsigned int a)
+{
+ a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2
+ a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4
+ a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits
+ a = (a + (a >> 8)); // max 16 per 8 bits
+ a = (a + (a >> 16)); // max 32 per 8 bits
+ return a & 0xff;
+}
+
+static int shiftsigned(int v, int shift, int bits)
+{
+ int result;
+ int z=0;
+
+ if (shift < 0) v <<= -shift;
+ else v >>= shift;
+ result = v;
+
+ z = bits;
+ while (z < 8) {
+ result += v >> z;
+ z += bits;
+ }
+ return result;
+}
+
+static stbi_uc *bmp_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ uint8 *out;
+ unsigned int mr=0,mg=0,mb=0,ma=0, fake_a=0;
+ stbi_uc pal[256][4];
+ int psize=0,i,j,compress=0,width;
+ int bpp, flip_vertically, pad, target, offset, hsz;
+ if (get8(s) != 'B' || get8(s) != 'M') return epuc("not BMP", "Corrupt BMP");
+ get32le(s); // discard filesize
+ get16le(s); // discard reserved
+ get16le(s); // discard reserved
+ offset = get32le(s);
+ hsz = get32le(s);
+ if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108) return epuc("unknown BMP", "BMP type not supported: unknown");
+ if (hsz == 12) {
+ s->img_x = get16le(s);
+ s->img_y = get16le(s);
+ } else {
+ s->img_x = get32le(s);
+ s->img_y = get32le(s);
+ }
+ if (get16le(s) != 1) return epuc("bad BMP", "bad BMP");
+ bpp = get16le(s);
+ if (bpp == 1) return epuc("monochrome", "BMP type not supported: 1-bit");
+ flip_vertically = ((int) s->img_y) > 0;
+ s->img_y = abs((int) s->img_y);
+ if (hsz == 12) {
+ if (bpp < 24)
+ psize = (offset - 14 - 24) / 3;
+ } else {
+ compress = get32le(s);
+ if (compress == 1 || compress == 2) return epuc("BMP RLE", "BMP type not supported: RLE");
+ get32le(s); // discard sizeof
+ get32le(s); // discard hres
+ get32le(s); // discard vres
+ get32le(s); // discard colorsused
+ get32le(s); // discard max important
+ if (hsz == 40 || hsz == 56) {
+ if (hsz == 56) {
+ get32le(s);
+ get32le(s);
+ get32le(s);
+ get32le(s);
+ }
+ if (bpp == 16 || bpp == 32) {
+ mr = mg = mb = 0;
+ if (compress == 0) {
+ if (bpp == 32) {
+ mr = 0xffu << 16;
+ mg = 0xffu << 8;
+ mb = 0xffu << 0;
+ ma = 0xffu << 24;
+ fake_a = 1; // @TODO: check for cases like alpha value is all 0 and switch it to 255
+ } else {
+ mr = 31u << 10;
+ mg = 31u << 5;
+ mb = 31u << 0;
+ }
+ } else if (compress == 3) {
+ mr = get32le(s);
+ mg = get32le(s);
+ mb = get32le(s);
+ // not documented, but generated by photoshop and handled by mspaint
+ if (mr == mg && mg == mb) {
+ // ?!?!?
+ return epuc("bad BMP", "bad BMP");
+ }
+ } else
+ return epuc("bad BMP", "bad BMP");
+ }
+ } else {
+ assert(hsz == 108);
+ mr = get32le(s);
+ mg = get32le(s);
+ mb = get32le(s);
+ ma = get32le(s);
+ get32le(s); // discard color space
+ for (i=0; i < 12; ++i)
+ get32le(s); // discard color space parameters
+ }
+ if (bpp < 16)
+ psize = (offset - 14 - hsz) >> 2;
+ }
+ s->img_n = ma ? 4 : 3;
+ if (req_comp && req_comp >= 3) // we can directly decode 3 or 4
+ target = req_comp;
+ else
+ target = s->img_n; // if they want monochrome, we'll post-convert
+ out = (stbi_uc *) malloc(target * s->img_x * s->img_y);
+ if (!out) return epuc("outofmem", "Out of memory");
+ if (bpp < 16) {
+ int z=0;
+ if (psize == 0 || psize > 256) { free(out); return epuc("invalid", "Corrupt BMP"); }
+ for (i=0; i < psize; ++i) {
+ pal[i][2] = get8u(s);
+ pal[i][1] = get8u(s);
+ pal[i][0] = get8u(s);
+ if (hsz != 12) get8(s);
+ pal[i][3] = 255;
+ }
+ skip(s, offset - 14 - hsz - psize * (hsz == 12 ? 3 : 4));
+ if (bpp == 4) width = (s->img_x + 1) >> 1;
+ else if (bpp == 8) width = s->img_x;
+ else { free(out); return epuc("bad bpp", "Corrupt BMP"); }
+ pad = (-width)&3;
+ for (j=0; j < (int) s->img_y; ++j) {
+ for (i=0; i < (int) s->img_x; i += 2) {
+ int v=get8(s),v2=0;
+ if (bpp == 4) {
+ v2 = v & 15;
+ v >>= 4;
+ }
+ out[z++] = pal[v][0];
+ out[z++] = pal[v][1];
+ out[z++] = pal[v][2];
+ if (target == 4) out[z++] = 255;
+ if (i+1 == (int) s->img_x) break;
+ v = (bpp == 8) ? get8(s) : v2;
+ out[z++] = pal[v][0];
+ out[z++] = pal[v][1];
+ out[z++] = pal[v][2];
+ if (target == 4) out[z++] = 255;
+ }
+ skip(s, pad);
+ }
+ } else {
+ int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;
+ int z = 0;
+ int easy=0;
+ skip(s, offset - 14 - hsz);
+ if (bpp == 24) width = 3 * s->img_x;
+ else if (bpp == 16) width = 2*s->img_x;
+ else /* bpp = 32 and pad = 0 */ width=0;
+ pad = (-width) & 3;
+ if (bpp == 24) {
+ easy = 1;
+ } else if (bpp == 32) {
+ if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)
+ easy = 2;
+ }
+ if (!easy) {
+ if (!mr || !mg || !mb) { free(out); return epuc("bad masks", "Corrupt BMP"); }
+ // right shift amt to put high bit in position #7
+ rshift = high_bit(mr)-7; rcount = bitcount(mr);
+ gshift = high_bit(mg)-7; gcount = bitcount(mr);
+ bshift = high_bit(mb)-7; bcount = bitcount(mr);
+ ashift = high_bit(ma)-7; acount = bitcount(mr);
+ }
+ for (j=0; j < (int) s->img_y; ++j) {
+ if (easy) {
+ for (i=0; i < (int) s->img_x; ++i) {
+ int a;
+ out[z+2] = get8u(s);
+ out[z+1] = get8u(s);
+ out[z+0] = get8u(s);
+ z += 3;
+ a = (easy == 2 ? get8(s) : 255);
+ if (target == 4) out[z++] = (uint8) a;
+ }
+ } else {
+ for (i=0; i < (int) s->img_x; ++i) {
+ uint32 v = (bpp == 16 ? get16le(s) : get32le(s));
+ int a;
+ out[z++] = (uint8) shiftsigned(v & mr, rshift, rcount);
+ out[z++] = (uint8) shiftsigned(v & mg, gshift, gcount);
+ out[z++] = (uint8) shiftsigned(v & mb, bshift, bcount);
+ a = (ma ? shiftsigned(v & ma, ashift, acount) : 255);
+ if (target == 4) out[z++] = (uint8) a;
+ }
+ }
+ skip(s, pad);
+ }
+ }
+ if (flip_vertically) {
+ stbi_uc t;
+ for (j=0; j < (int) s->img_y>>1; ++j) {
+ stbi_uc *p1 = out + j *s->img_x*target;
+ stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target;
+ for (i=0; i < (int) s->img_x*target; ++i) {
+ t = p1[i], p1[i] = p2[i], p2[i] = t;
+ }
+ }
+ }
+
+ if (req_comp && req_comp != target) {
+ out = convert_format(out, target, req_comp, s->img_x, s->img_y);
+ if (out == NULL) return out; // convert_format frees input on failure
+ }
+
+ *x = s->img_x;
+ *y = s->img_y;
+ if (comp) *comp = s->img_n;
+ return out;
+}
+
+static stbi_uc *stbi_bmp_load(stbi *s,int *x, int *y, int *comp, int req_comp)
+{
+ return bmp_load(s, x,y,comp,req_comp);
+}
+
+
+// Targa Truevision - TGA
+// by Jonathan Dummer
+
+static int tga_info(stbi *s, int *x, int *y, int *comp)
+{
+ int tga_w, tga_h, tga_comp;
+ int sz;
+ get8u(s); // discard Offset
+ sz = get8u(s); // color type
+ if( sz > 1 ) {
+ stbi_rewind(s);
+ return 0; // only RGB or indexed allowed
+ }
+ sz = get8u(s); // image type
+ // only RGB or grey allowed, +/- RLE
+ if ((sz != 1) && (sz != 2) && (sz != 3) && (sz != 9) && (sz != 10) && (sz != 11)) return 0;
+ skip(s,9);
+ tga_w = get16le(s);
+ if( tga_w < 1 ) {
+ stbi_rewind(s);
+ return 0; // test width
+ }
+ tga_h = get16le(s);
+ if( tga_h < 1 ) {
+ stbi_rewind(s);
+ return 0; // test height
+ }
+ sz = get8(s); // bits per pixel
+ // only RGB or RGBA or grey allowed
+ if ((sz != 8) && (sz != 16) && (sz != 24) && (sz != 32)) {
+ stbi_rewind(s);
+ return 0;
+ }
+ tga_comp = sz;
+ if (x) *x = tga_w;
+ if (y) *y = tga_h;
+ if (comp) *comp = tga_comp / 8;
+ return 1; // seems to have passed everything
+}
+
+int stbi_tga_info(stbi *s, int *x, int *y, int *comp)
+{
+ return tga_info(s, x, y, comp);
+}
+
+static int tga_test(stbi *s)
+{
+ int sz;
+ get8u(s); // discard Offset
+ sz = get8u(s); // color type
+ if ( sz > 1 ) return 0; // only RGB or indexed allowed
+ sz = get8u(s); // image type
+ if ( (sz != 1) && (sz != 2) && (sz != 3) && (sz != 9) && (sz != 10) && (sz != 11) ) return 0; // only RGB or grey allowed, +/- RLE
+ get16(s); // discard palette start
+ get16(s); // discard palette length
+ get8(s); // discard bits per palette color entry
+ get16(s); // discard x origin
+ get16(s); // discard y origin
+ if ( get16(s) < 1 ) return 0; // test width
+ if ( get16(s) < 1 ) return 0; // test height
+ sz = get8(s); // bits per pixel
+ if ( (sz != 8) && (sz != 16) && (sz != 24) && (sz != 32) ) return 0; // only RGB or RGBA or grey allowed
+ return 1; // seems to have passed everything
+}
+
+static int stbi_tga_test(stbi *s)
+{
+ int res = tga_test(s);
+ stbi_rewind(s);
+ return res;
+}
+
+static stbi_uc *tga_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ // read in the TGA header stuff
+ int tga_offset = get8u(s);
+ int tga_indexed = get8u(s);
+ int tga_image_type = get8u(s);
+ int tga_is_RLE = 0;
+ int tga_palette_start = get16le(s);
+ int tga_palette_len = get16le(s);
+ int tga_palette_bits = get8u(s);
+ int tga_x_origin = get16le(s);
+ int tga_y_origin = get16le(s);
+ int tga_width = get16le(s);
+ int tga_height = get16le(s);
+ int tga_bits_per_pixel = get8u(s);
+ int tga_inverted = get8u(s);
+ // image data
+ unsigned char *tga_data;
+ unsigned char *tga_palette = NULL;
+ int i, j;
+ unsigned char raw_data[4];
+ unsigned char trans_data[4];
+ int RLE_count = 0;
+ int RLE_repeating = 0;
+ int read_next_pixel = 1;
+
+ // do a tiny bit of precessing
+ if ( tga_image_type >= 8 )
+ {
+ tga_image_type -= 8;
+ tga_is_RLE = 1;
+ }
+ /* int tga_alpha_bits = tga_inverted & 15; */
+ tga_inverted = 1 - ((tga_inverted >> 5) & 1);
+
+ // error check
+ if ( //(tga_indexed) ||
+ (tga_width < 1) || (tga_height < 1) ||
+ (tga_image_type < 1) || (tga_image_type > 3) ||
+ ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16) &&
+ (tga_bits_per_pixel != 24) && (tga_bits_per_pixel != 32))
+ )
+ {
+ return NULL; // we don't report this as a bad TGA because we don't even know if it's TGA
+ }
+
+ // If I'm paletted, then I'll use the number of bits from the palette
+ if ( tga_indexed )
+ {
+ tga_bits_per_pixel = tga_palette_bits;
+ }
+
+ // tga info
+ *x = tga_width;
+ *y = tga_height;
+ if ( (req_comp < 1) || (req_comp > 4) )
+ {
+ // just use whatever the file was
+ req_comp = tga_bits_per_pixel / 8;
+ *comp = req_comp;
+ } else
+ {
+ // force a new number of components
+ *comp = tga_bits_per_pixel/8;
+ }
+ tga_data = (unsigned char*)malloc( tga_width * tga_height * req_comp );
+ if (!tga_data) return epuc("outofmem", "Out of memory");
+
+ // skip to the data's starting position (offset usually = 0)
+ skip(s, tga_offset );
+ // do I need to load a palette?
+ if ( tga_indexed )
+ {
+ // any data to skip? (offset usually = 0)
+ skip(s, tga_palette_start );
+ // load the palette
+ tga_palette = (unsigned char*)malloc( tga_palette_len * tga_palette_bits / 8 );
+ if (!tga_palette) return epuc("outofmem", "Out of memory");
+ if (!getn(s, tga_palette, tga_palette_len * tga_palette_bits / 8 )) {
+ free(tga_data);
+ free(tga_palette);
+ return epuc("bad palette", "Corrupt TGA");
+ }
+ }
+ // load the data
+ trans_data[0] = trans_data[1] = trans_data[2] = trans_data[3] = 0;
+ for (i=0; i < tga_width * tga_height; ++i)
+ {
+ // if I'm in RLE mode, do I need to get a RLE chunk?
+ if ( tga_is_RLE )
+ {
+ if ( RLE_count == 0 )
+ {
+ // yep, get the next byte as a RLE command
+ int RLE_cmd = get8u(s);
+ RLE_count = 1 + (RLE_cmd & 127);
+ RLE_repeating = RLE_cmd >> 7;
+ read_next_pixel = 1;
+ } else if ( !RLE_repeating )
+ {
+ read_next_pixel = 1;
+ }
+ } else
+ {
+ read_next_pixel = 1;
+ }
+ // OK, if I need to read a pixel, do it now
+ if ( read_next_pixel )
+ {
+ // load however much data we did have
+ if ( tga_indexed )
+ {
+ // read in 1 byte, then perform the lookup
+ int pal_idx = get8u(s);
+ if ( pal_idx >= tga_palette_len )
+ {
+ // invalid index
+ pal_idx = 0;
+ }
+ pal_idx *= tga_bits_per_pixel / 8;
+ for (j = 0; j*8 < tga_bits_per_pixel; ++j)
+ {
+ raw_data[j] = tga_palette[pal_idx+j];
+ }
+ } else
+ {
+ // read in the data raw
+ for (j = 0; j*8 < tga_bits_per_pixel; ++j)
+ {
+ raw_data[j] = get8u(s);
+ }
+ }
+ // convert raw to the intermediate format
+ switch (tga_bits_per_pixel)
+ {
+ case 8:
+ // Luminous => RGBA
+ trans_data[0] = raw_data[0];
+ trans_data[1] = raw_data[0];
+ trans_data[2] = raw_data[0];
+ trans_data[3] = 255;
+ break;
+ case 16:
+ // Luminous,Alpha => RGBA
+ trans_data[0] = raw_data[0];
+ trans_data[1] = raw_data[0];
+ trans_data[2] = raw_data[0];
+ trans_data[3] = raw_data[1];
+ break;
+ case 24:
+ // BGR => RGBA
+ trans_data[0] = raw_data[2];
+ trans_data[1] = raw_data[1];
+ trans_data[2] = raw_data[0];
+ trans_data[3] = 255;
+ break;
+ case 32:
+ // BGRA => RGBA
+ trans_data[0] = raw_data[2];
+ trans_data[1] = raw_data[1];
+ trans_data[2] = raw_data[0];
+ trans_data[3] = raw_data[3];
+ break;
+ }
+ // clear the reading flag for the next pixel
+ read_next_pixel = 0;
+ } // end of reading a pixel
+ // convert to final format
+ switch (req_comp)
+ {
+ case 1:
+ // RGBA => Luminance
+ tga_data[i*req_comp+0] = compute_y(trans_data[0],trans_data[1],trans_data[2]);
+ break;
+ case 2:
+ // RGBA => Luminance,Alpha
+ tga_data[i*req_comp+0] = compute_y(trans_data[0],trans_data[1],trans_data[2]);
+ tga_data[i*req_comp+1] = trans_data[3];
+ break;
+ case 3:
+ // RGBA => RGB
+ tga_data[i*req_comp+0] = trans_data[0];
+ tga_data[i*req_comp+1] = trans_data[1];
+ tga_data[i*req_comp+2] = trans_data[2];
+ break;
+ case 4:
+ // RGBA => RGBA
+ tga_data[i*req_comp+0] = trans_data[0];
+ tga_data[i*req_comp+1] = trans_data[1];
+ tga_data[i*req_comp+2] = trans_data[2];
+ tga_data[i*req_comp+3] = trans_data[3];
+ break;
+ }
+ // in case we're in RLE mode, keep counting down
+ --RLE_count;
+ }
+ // do I need to invert the image?
+ if ( tga_inverted )
+ {
+ for (j = 0; j*2 < tga_height; ++j)
+ {
+ int index1 = j * tga_width * req_comp;
+ int index2 = (tga_height - 1 - j) * tga_width * req_comp;
+ for (i = tga_width * req_comp; i > 0; --i)
+ {
+ unsigned char temp = tga_data[index1];
+ tga_data[index1] = tga_data[index2];
+ tga_data[index2] = temp;
+ ++index1;
+ ++index2;
+ }
+ }
+ }
+ // clear my palette, if I had one
+ if ( tga_palette != NULL )
+ {
+ free( tga_palette );
+ }
+ // the things I do to get rid of an error message, and yet keep
+ // Microsoft's C compilers happy... [8^(
+ tga_palette_start = tga_palette_len = tga_palette_bits =
+ tga_x_origin = tga_y_origin = 0;
+ // OK, done
+ return tga_data;
+}
+
+static stbi_uc *stbi_tga_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ return tga_load(s,x,y,comp,req_comp);
+}
+
+
+// *************************************************************************************************
+// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB
+
+static int psd_test(stbi *s)
+{
+ if (get32(s) != 0x38425053) return 0; // "8BPS"
+ else return 1;
+}
+
+static int stbi_psd_test(stbi *s)
+{
+ int r = psd_test(s);
+ stbi_rewind(s);
+ return r;
+}
+
+static stbi_uc *psd_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ int pixelCount;
+ int channelCount, compression;
+ int channel, i, count, len;
+ int w,h;
+ uint8 *out;
+
+ // Check identifier
+ if (get32(s) != 0x38425053) // "8BPS"
+ return epuc("not PSD", "Corrupt PSD image");
+
+ // Check file type version.
+ if (get16(s) != 1)
+ return epuc("wrong version", "Unsupported version of PSD image");
+
+ // Skip 6 reserved bytes.
+ skip(s, 6 );
+
+ // Read the number of channels (R, G, B, A, etc).
+ channelCount = get16(s);
+ if (channelCount < 0 || channelCount > 16)
+ return epuc("wrong channel count", "Unsupported number of channels in PSD image");
+
+ // Read the rows and columns of the image.
+ h = get32(s);
+ w = get32(s);
+
+ // Make sure the depth is 8 bits.
+ if (get16(s) != 8)
+ return epuc("unsupported bit depth", "PSD bit depth is not 8 bit");
+
+ // Make sure the color mode is RGB.
+ // Valid options are:
+ // 0: Bitmap
+ // 1: Grayscale
+ // 2: Indexed color
+ // 3: RGB color
+ // 4: CMYK color
+ // 7: Multichannel
+ // 8: Duotone
+ // 9: Lab color
+ if (get16(s) != 3)
+ return epuc("wrong color format", "PSD is not in RGB color format");
+
+ // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.)
+ skip(s,get32(s) );
+
+ // Skip the image resources. (resolution, pen tool paths, etc)
+ skip(s, get32(s) );
+
+ // Skip the reserved data.
+ skip(s, get32(s) );
+
+ // Find out if the data is compressed.
+ // Known values:
+ // 0: no compression
+ // 1: RLE compressed
+ compression = get16(s);
+ if (compression > 1)
+ return epuc("bad compression", "PSD has an unknown compression format");
+
+ // Create the destination image.
+ out = (stbi_uc *) malloc(4 * w*h);
+ if (!out) return epuc("outofmem", "Out of memory");
+ pixelCount = w*h;
+
+ // Initialize the data to zero.
+ //memset( out, 0, pixelCount * 4 );
+
+ // Finally, the image data.
+ if (compression) {
+ // RLE as used by .PSD and .TIFF
+ // Loop until you get the number of unpacked bytes you are expecting:
+ // Read the next source byte into n.
+ // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.
+ // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.
+ // Else if n is 128, noop.
+ // Endloop
+
+ // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data,
+ // which we're going to just skip.
+ skip(s, h * channelCount * 2 );
+
+ // Read the RLE data by channel.
+ for (channel = 0; channel < 4; channel++) {
+ uint8 *p;
+
+ p = out+channel;
+ if (channel >= channelCount) {
+ // Fill this channel with default data.
+ for (i = 0; i < pixelCount; i++) *p = (channel == 3 ? 255 : 0), p += 4;
+ } else {
+ // Read the RLE data.
+ count = 0;
+ while (count < pixelCount) {
+ len = get8(s);
+ if (len == 128) {
+ // No-op.
+ } else if (len < 128) {
+ // Copy next len+1 bytes literally.
+ len++;
+ count += len;
+ while (len) {
+ *p = get8u(s);
+ p += 4;
+ len--;
+ }
+ } else if (len > 128) {
+ uint8 val;
+ // Next -len+1 bytes in the dest are replicated from next source byte.
+ // (Interpret len as a negative 8-bit int.)
+ len ^= 0x0FF;
+ len += 2;
+ val = get8u(s);
+ count += len;
+ while (len) {
+ *p = val;
+ p += 4;
+ len--;
+ }
+ }
+ }
+ }
+ }
+
+ } else {
+ // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...)
+ // where each channel consists of an 8-bit value for each pixel in the image.
+
+ // Read the data by channel.
+ for (channel = 0; channel < 4; channel++) {
+ uint8 *p;
+
+ p = out + channel;
+ if (channel > channelCount) {
+ // Fill this channel with default data.
+ for (i = 0; i < pixelCount; i++) *p = channel == 3 ? 255 : 0, p += 4;
+ } else {
+ // Read the data.
+ for (i = 0; i < pixelCount; i++)
+ *p = get8u(s), p += 4;
+ }
+ }
+ }
+
+ if (req_comp && req_comp != 4) {
+ out = convert_format(out, 4, req_comp, w, h);
+ if (out == NULL) return out; // convert_format frees input on failure
+ }
+
+ if (comp) *comp = channelCount;
+ *y = h;
+ *x = w;
+
+ return out;
+}
+
+static stbi_uc *stbi_psd_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ return psd_load(s,x,y,comp,req_comp);
+}
+
+// *************************************************************************************************
+// Softimage PIC loader
+// by Tom Seddon
+//
+// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format
+// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/
+
+static int pic_is4(stbi *s,const char *str)
+{
+ int i;
+ for (i=0; i<4; ++i)
+ if (get8(s) != (stbi_uc)str[i])
+ return 0;
+
+ return 1;
+}
+
+static int pic_test(stbi *s)
+{
+ int i;
+
+ if (!pic_is4(s,"\x53\x80\xF6\x34"))
+ return 0;
+
+ for(i=0;i<84;++i)
+ get8(s);
+
+ if (!pic_is4(s,"PICT"))
+ return 0;
+
+ return 1;
+}
+
+typedef struct
+{
+ stbi_uc size,type,channel;
+} pic_packet_t;
+
+static stbi_uc *pic_readval(stbi *s, int channel, stbi_uc *dest)
+{
+ int mask=0x80, i;
+
+ for (i=0; i<4; ++i, mask>>=1) {
+ if (channel & mask) {
+ if (at_eof(s)) return epuc("bad file","PIC file too short");
+ dest[i]=get8u(s);
+ }
+ }
+
+ return dest;
+}
+
+static void pic_copyval(int channel,stbi_uc *dest,const stbi_uc *src)
+{
+ int mask=0x80,i;
+
+ for (i=0;i<4; ++i, mask>>=1)
+ if (channel&mask)
+ dest[i]=src[i];
+}
+
+static stbi_uc *pic_load2(stbi *s,int width,int height,int *comp, stbi_uc *result)
+{
+ int act_comp=0,num_packets=0,y,chained;
+ pic_packet_t packets[10];
+
+ // this will (should...) cater for even some bizarre stuff like having data
+ // for the same channel in multiple packets.
+ do {
+ pic_packet_t *packet;
+
+ if (num_packets==sizeof(packets)/sizeof(packets[0]))
+ return epuc("bad format","too many packets");
+
+ packet = &packets[num_packets++];
+
+ chained = get8(s);
+ packet->size = get8u(s);
+ packet->type = get8u(s);
+ packet->channel = get8u(s);
+
+ act_comp |= packet->channel;
+
+ if (at_eof(s)) return epuc("bad file","file too short (reading packets)");
+ if (packet->size != 8) return epuc("bad format","packet isn't 8bpp");
+ } while (chained);
+
+ *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?
+
+ for(y=0; y<height; ++y) {
+ int packet_idx;
+
+ for(packet_idx=0; packet_idx < num_packets; ++packet_idx) {
+ pic_packet_t *packet = &packets[packet_idx];
+ stbi_uc *dest = result+y*width*4;
+
+ switch (packet->type) {
+ default:
+ return epuc("bad format","packet has bad compression type");
+
+ case 0: {//uncompressed
+ int x;
+
+ for(x=0;x<width;++x, dest+=4)
+ if (!pic_readval(s,packet->channel,dest))
+ return 0;
+ break;
+ }
+
+ case 1://Pure RLE
+ {
+ int left=width, i;
+
+ while (left>0) {
+ stbi_uc count,value[4];
+
+ count=get8u(s);
+ if (at_eof(s)) return epuc("bad file","file too short (pure read count)");
+
+ if (count > left)
+ count = (uint8) left;
+
+ if (!pic_readval(s,packet->channel,value)) return 0;
+
+ for(i=0; i<count; ++i,dest+=4)
+ pic_copyval(packet->channel,dest,value);
+ left -= count;
+ }
+ }
+ break;
+
+ case 2: {//Mixed RLE
+ int left=width;
+ while (left>0) {
+ int count = get8(s), i;
+ if (at_eof(s)) return epuc("bad file","file too short (mixed read count)");
+
+ if (count >= 128) { // Repeated
+ stbi_uc value[4];
+ int i;
+
+ if (count==128)
+ count = get16(s);
+ else
+ count -= 127;
+ if (count > left)
+ return epuc("bad file","scanline overrun");
+
+ if (!pic_readval(s,packet->channel,value))
+ return 0;
+
+ for(i=0;i<count;++i, dest += 4)
+ pic_copyval(packet->channel,dest,value);
+ } else { // Raw
+ ++count;
+ if (count>left) return epuc("bad file","scanline overrun");
+
+ for(i=0;i<count;++i, dest+=4)
+ if (!pic_readval(s,packet->channel,dest))
+ return 0;
+ }
+ left-=count;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ return result;
+}
+
+static stbi_uc *pic_load(stbi *s,int *px,int *py,int *comp,int req_comp)
+{
+ stbi_uc *result;
+ int i, x,y;
+
+ for (i=0; i<92; ++i)
+ get8(s);
+
+ x = get16(s);
+ y = get16(s);
+ if (at_eof(s)) return epuc("bad file","file too short (pic header)");
+ if ((1 << 28) / x < y) return epuc("too large", "Image too large to decode");
+
+ get32(s); //skip `ratio'
+ get16(s); //skip `fields'
+ get16(s); //skip `pad'
+
+ // intermediate buffer is RGBA
+ result = (stbi_uc *) malloc(x*y*4);
+ memset(result, 0xff, x*y*4);
+
+ if (!pic_load2(s,x,y,comp, result)) {
+ free(result);
+ result=0;
+ }
+ *px = x;
+ *py = y;
+ if (req_comp == 0) req_comp = *comp;
+ result=convert_format(result,4,req_comp,x,y);
+
+ return result;
+}
+
+static int stbi_pic_test(stbi *s)
+{
+ int r = pic_test(s);
+ stbi_rewind(s);
+ return r;
+}
+
+static stbi_uc *stbi_pic_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ return pic_load(s,x,y,comp,req_comp);
+}
+
+// *************************************************************************************************
+// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb
+typedef struct stbi_gif_lzw_struct {
+ int16 prefix;
+ uint8 first;
+ uint8 suffix;
+} stbi_gif_lzw;
+
+typedef struct stbi_gif_struct
+{
+ int w,h;
+ stbi_uc *out; // output buffer (always 4 components)
+ int flags, bgindex, ratio, transparent, eflags;
+ uint8 pal[256][4];
+ uint8 lpal[256][4];
+ stbi_gif_lzw codes[4096];
+ uint8 *color_table;
+ int parse, step;
+ int lflags;
+ int start_x, start_y;
+ int max_x, max_y;
+ int cur_x, cur_y;
+ int line_size;
+} stbi_gif;
+
+static int gif_test(stbi *s)
+{
+ int sz;
+ if (get8(s) != 'G' || get8(s) != 'I' || get8(s) != 'F' || get8(s) != '8') return 0;
+ sz = get8(s);
+ if (sz != '9' && sz != '7') return 0;
+ if (get8(s) != 'a') return 0;
+ return 1;
+}
+
+static int stbi_gif_test(stbi *s)
+{
+ int r = gif_test(s);
+ stbi_rewind(s);
+ return r;
+}
+
+static void stbi_gif_parse_colortable(stbi *s, uint8 pal[256][4], int num_entries, int transp)
+{
+ int i;
+ for (i=0; i < num_entries; ++i) {
+ pal[i][2] = get8u(s);
+ pal[i][1] = get8u(s);
+ pal[i][0] = get8u(s);
+ pal[i][3] = transp ? 0 : 255;
+ }
+}
+
+static int stbi_gif_header(stbi *s, stbi_gif *g, int *comp, int is_info)
+{
+ uint8 version;
+ if (get8(s) != 'G' || get8(s) != 'I' || get8(s) != 'F' || get8(s) != '8')
+ return e("not GIF", "Corrupt GIF");
+
+ version = get8u(s);
+ if (version != '7' && version != '9') return e("not GIF", "Corrupt GIF");
+ if (get8(s) != 'a') return e("not GIF", "Corrupt GIF");
+
+ failure_reason = "";
+ g->w = get16le(s);
+ g->h = get16le(s);
+ g->flags = get8(s);
+ g->bgindex = get8(s);
+ g->ratio = get8(s);
+ g->transparent = -1;
+
+ if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments
+
+ if (is_info) return 1;
+
+ if (g->flags & 0x80)
+ stbi_gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1);
+
+ return 1;
+}
+
+static int stbi_gif_info_raw(stbi *s, int *x, int *y, int *comp)
+{
+ stbi_gif g;
+ if (!stbi_gif_header(s, &g, comp, 1)) {
+ stbi_rewind( s );
+ return 0;
+ }
+ if (x) *x = g.w;
+ if (y) *y = g.h;
+ return 1;
+}
+
+static void stbi_out_gif_code(stbi_gif *g, uint16 code)
+{
+ uint8 *p, *c;
+
+ // recurse to decode the prefixes, since the linked-list is backwards,
+ // and working backwards through an interleaved image would be nasty
+ if (g->codes[code].prefix >= 0)
+ stbi_out_gif_code(g, g->codes[code].prefix);
+
+ if (g->cur_y >= g->max_y) return;
+
+ p = &g->out[g->cur_x + g->cur_y];
+ c = &g->color_table[g->codes[code].suffix * 4];
+
+ if (c[3] >= 128) {
+ p[0] = c[2];
+ p[1] = c[1];
+ p[2] = c[0];
+ p[3] = c[3];
+ }
+ g->cur_x += 4;
+
+ if (g->cur_x >= g->max_x) {
+ g->cur_x = g->start_x;
+ g->cur_y += g->step;
+
+ while (g->cur_y >= g->max_y && g->parse > 0) {
+ g->step = (1 << g->parse) * g->line_size;
+ g->cur_y = g->start_y + (g->step >> 1);
+ --g->parse;
+ }
+ }
+}
+
+static uint8 *stbi_process_gif_raster(stbi *s, stbi_gif *g)
+{
+ uint8 lzw_cs;
+ int32 len, code;
+ uint32 first;
+ int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;
+ stbi_gif_lzw *p;
+
+ lzw_cs = get8u(s);
+ clear = 1 << lzw_cs;
+ first = 1;
+ codesize = lzw_cs + 1;
+ codemask = (1 << codesize) - 1;
+ bits = 0;
+ valid_bits = 0;
+ for (code = 0; code < clear; code++) {
+ g->codes[code].prefix = -1;
+ g->codes[code].first = (uint8) code;
+ g->codes[code].suffix = (uint8) code;
+ }
+
+ // support no starting clear code
+ avail = clear+2;
+ oldcode = -1;
+
+ len = 0;
+ for(;;) {
+ if (valid_bits < codesize) {
+ if (len == 0) {
+ len = get8(s); // start new block
+ if (len == 0)
+ return g->out;
+ }
+ --len;
+ bits |= (int32) get8(s) << valid_bits;
+ valid_bits += 8;
+ } else {
+ int32 code = bits & codemask;
+ bits >>= codesize;
+ valid_bits -= codesize;
+ // @OPTIMIZE: is there some way we can accelerate the non-clear path?
+ if (code == clear) { // clear code
+ codesize = lzw_cs + 1;
+ codemask = (1 << codesize) - 1;
+ avail = clear + 2;
+ oldcode = -1;
+ first = 0;
+ } else if (code == clear + 1) { // end of stream code
+ skip(s, len);
+ while ((len = get8(s)) > 0)
+ skip(s,len);
+ return g->out;
+ } else if (code <= avail) {
+ if (first) return epuc("no clear code", "Corrupt GIF");
+
+ if (oldcode >= 0) {
+ p = &g->codes[avail++];
+ if (avail > 4096) return epuc("too many codes", "Corrupt GIF");
+ p->prefix = (int16) oldcode;
+ p->first = g->codes[oldcode].first;
+ p->suffix = (code == avail) ? p->first : g->codes[code].first;
+ } else if (code == avail)
+ return epuc("illegal code in raster", "Corrupt GIF");
+
+ stbi_out_gif_code(g, (uint16) code);
+
+ if ((avail & codemask) == 0 && avail <= 0x0FFF) {
+ codesize++;
+ codemask = (1 << codesize) - 1;
+ }
+
+ oldcode = code;
+ } else {
+ return epuc("illegal code in raster", "Corrupt GIF");
+ }
+ }
+ }
+}
+
+static void stbi_fill_gif_background(stbi_gif *g)
+{
+ int i;
+ uint8 *c = g->pal[g->bgindex];
+ // @OPTIMIZE: write a dword at a time
+ for (i = 0; i < g->w * g->h * 4; i += 4) {
+ uint8 *p = &g->out[i];
+ p[0] = c[2];
+ p[1] = c[1];
+ p[2] = c[0];
+ p[3] = c[3];
+ }
+}
+
+// this function is designed to support animated gifs, although stb_image doesn't support it
+static uint8 *stbi_gif_load_next(stbi *s, stbi_gif *g, int *comp, int req_comp)
+{
+ int i;
+ uint8 *old_out = 0;
+
+ if (g->out == 0) {
+ if (!stbi_gif_header(s, g, comp,0)) return 0; // failure_reason set by stbi_gif_header
+ g->out = (uint8 *) malloc(4 * g->w * g->h);
+ if (g->out == 0) return epuc("outofmem", "Out of memory");
+ stbi_fill_gif_background(g);
+ } else {
+ // animated-gif-only path
+ if (((g->eflags & 0x1C) >> 2) == 3) {
+ old_out = g->out;
+ g->out = (uint8 *) malloc(4 * g->w * g->h);
+ if (g->out == 0) return epuc("outofmem", "Out of memory");
+ memcpy(g->out, old_out, g->w*g->h*4);
+ }
+ }
+
+ for (;;) {
+ switch (get8(s)) {
+ case 0x2C: /* Image Descriptor */
+ {
+ int32 x, y, w, h;
+ uint8 *o;
+
+ x = get16le(s);
+ y = get16le(s);
+ w = get16le(s);
+ h = get16le(s);
+ if (((x + w) > (g->w)) || ((y + h) > (g->h)))
+ return epuc("bad Image Descriptor", "Corrupt GIF");
+
+ g->line_size = g->w * 4;
+ g->start_x = x * 4;
+ g->start_y = y * g->line_size;
+ g->max_x = g->start_x + w * 4;
+ g->max_y = g->start_y + h * g->line_size;
+ g->cur_x = g->start_x;
+ g->cur_y = g->start_y;
+
+ g->lflags = get8(s);
+
+ if (g->lflags & 0x40) {
+ g->step = 8 * g->line_size; // first interlaced spacing
+ g->parse = 3;
+ } else {
+ g->step = g->line_size;
+ g->parse = 0;
+ }
+
+ if (g->lflags & 0x80) {
+ stbi_gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1);
+ g->color_table = (uint8 *) g->lpal;
+ } else if (g->flags & 0x80) {
+ for (i=0; i < 256; ++i) // @OPTIMIZE: reset only the previous transparent
+ g->pal[i][3] = 255;
+ if (g->transparent >= 0 && (g->eflags & 0x01))
+ g->pal[g->transparent][3] = 0;
+ g->color_table = (uint8 *) g->pal;
+ } else
+ return epuc("missing color table", "Corrupt GIF");
+
+ o = stbi_process_gif_raster(s, g);
+ if (o == NULL) return NULL;
+
+ if (req_comp && req_comp != 4)
+ o = convert_format(o, 4, req_comp, g->w, g->h);
+ return o;
+ }
+
+ case 0x21: // Comment Extension.
+ {
+ int len;
+ if (get8(s) == 0xF9) { // Graphic Control Extension.
+ len = get8(s);
+ if (len == 4) {
+ g->eflags = get8(s);
+ get16le(s); // delay
+ g->transparent = get8(s);
+ } else {
+ skip(s, len);
+ break;
+ }
+ }
+ while ((len = get8(s)) != 0)
+ skip(s, len);
+ break;
+ }
+
+ case 0x3B: // gif stream termination code
+ return (uint8 *) 1;
+
+ default:
+ return epuc("unknown code", "Corrupt GIF");
+ }
+ }
+}
+
+static stbi_uc *stbi_gif_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ uint8 *u = 0;
+ stbi_gif g={0};
+
+ u = stbi_gif_load_next(s, &g, comp, req_comp);
+ if (u == (void *) 1) u = 0; // end of animated gif marker
+ if (u) {
+ *x = g.w;
+ *y = g.h;
+ }
+
+ return u;
+}
+
+static int stbi_gif_info(stbi *s, int *x, int *y, int *comp)
+{
+ return stbi_gif_info_raw(s,x,y,comp);
+}
+
+
+// *************************************************************************************************
+// Radiance RGBE HDR loader
+// originally by Nicolas Schulz
+#ifndef STBI_NO_HDR
+static int hdr_test(stbi *s)
+{
+ const char *signature = "#?RADIANCE\n";
+ int i;
+ for (i=0; signature[i]; ++i)
+ if (get8(s) != signature[i])
+ return 0;
+ return 1;
+}
+
+static int stbi_hdr_test(stbi* s)
+{
+ int r = hdr_test(s);
+ stbi_rewind(s);
+ return r;
+}
+
+#define HDR_BUFLEN 1024
+static char *hdr_gettoken(stbi *z, char *buffer)
+{
+ int len=0;
+ char c = '\0';
+
+ c = (char) get8(z);
+
+ while (!at_eof(z) && c != '\n') {
+ buffer[len++] = c;
+ if (len == HDR_BUFLEN-1) {
+ // flush to end of line
+ while (!at_eof(z) && get8(z) != '\n')
+ ;
+ break;
+ }
+ c = (char) get8(z);
+ }
+
+ buffer[len] = 0;
+ return buffer;
+}
+
+static void hdr_convert(float *output, stbi_uc *input, int req_comp)
+{
+ if ( input[3] != 0 ) {
+ float f1;
+ // Exponent
+ f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8));
+ if (req_comp <= 2)
+ output[0] = (input[0] + input[1] + input[2]) * f1 / 3;
+ else {
+ output[0] = input[0] * f1;
+ output[1] = input[1] * f1;
+ output[2] = input[2] * f1;
+ }
+ if (req_comp == 2) output[1] = 1;
+ if (req_comp == 4) output[3] = 1;
+ } else {
+ switch (req_comp) {
+ case 4: output[3] = 1; /* fallthrough */
+ case 3: output[0] = output[1] = output[2] = 0;
+ break;
+ case 2: output[1] = 1; /* fallthrough */
+ case 1: output[0] = 0;
+ break;
+ }
+ }
+}
+
+static float *hdr_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ char buffer[HDR_BUFLEN];
+ char *token;
+ int valid = 0;
+ int width, height;
+ stbi_uc *scanline;
+ float *hdr_data;
+ int len;
+ unsigned char count, value;
+ int i, j, k, c1,c2, z;
+
+
+ // Check identifier
+ if (strcmp(hdr_gettoken(s,buffer), "#?RADIANCE") != 0)
+ return epf("not HDR", "Corrupt HDR image");
+
+ // Parse header
+ for(;;) {
+ token = hdr_gettoken(s,buffer);
+ if (token[0] == 0) break;
+ if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1;
+ }
+
+ if (!valid) return epf("unsupported format", "Unsupported HDR format");
+
+ // Parse width and height
+ // can't use sscanf() if we're not using stdio!
+ token = hdr_gettoken(s,buffer);
+ if (strncmp(token, "-Y ", 3)) return epf("unsupported data layout", "Unsupported HDR format");
+ token += 3;
+ height = strtol(token, &token, 10);
+ while (*token == ' ') ++token;
+ if (strncmp(token, "+X ", 3)) return epf("unsupported data layout", "Unsupported HDR format");
+ token += 3;
+ width = strtol(token, NULL, 10);
+
+ *x = width;
+ *y = height;
+
+ *comp = 3;
+ if (req_comp == 0) req_comp = 3;
+
+ // Read data
+ hdr_data = (float *) malloc(height * width * req_comp * sizeof(float));
+
+ // Load image data
+ // image data is stored as some number of sca
+ if ( width < 8 || width >= 32768) {
+ // Read flat data
+ for (j=0; j < height; ++j) {
+ for (i=0; i < width; ++i) {
+ stbi_uc rgbe[4];
+ main_decode_loop:
+ getn(s, rgbe, 4);
+ hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp);
+ }
+ }
+ } else {
+ // Read RLE-encoded data
+ scanline = NULL;
+
+ for (j = 0; j < height; ++j) {
+ c1 = get8(s);
+ c2 = get8(s);
+ len = get8(s);
+ if (c1 != 2 || c2 != 2 || (len & 0x80)) {
+ // not run-length encoded, so we have to actually use THIS data as a decoded
+ // pixel (note this can't be a valid pixel--one of RGB must be >= 128)
+ uint8 rgbe[4];
+ rgbe[0] = (uint8) c1;
+ rgbe[1] = (uint8) c2;
+ rgbe[2] = (uint8) len;
+ rgbe[3] = (uint8) get8u(s);
+ hdr_convert(hdr_data, rgbe, req_comp);
+ i = 1;
+ j = 0;
+ free(scanline);
+ goto main_decode_loop; // yes, this makes no sense
+ }
+ len <<= 8;
+ len |= get8(s);
+ if (len != width) { free(hdr_data); free(scanline); return epf("invalid decoded scanline length", "corrupt HDR"); }
+ if (scanline == NULL) scanline = (stbi_uc *) malloc(width * 4);
+
+ for (k = 0; k < 4; ++k) {
+ i = 0;
+ while (i < width) {
+ count = get8u(s);
+ if (count > 128) {
+ // Run
+ value = get8u(s);
+ count -= 128;
+ for (z = 0; z < count; ++z)
+ scanline[i++ * 4 + k] = value;
+ } else {
+ // Dump
+ for (z = 0; z < count; ++z)
+ scanline[i++ * 4 + k] = get8u(s);
+ }
+ }
+ }
+ for (i=0; i < width; ++i)
+ hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp);
+ }
+ free(scanline);
+ }
+
+ return hdr_data;
+}
+
+static float *stbi_hdr_load(stbi *s, int *x, int *y, int *comp, int req_comp)
+{
+ return hdr_load(s,x,y,comp,req_comp);
+}
+
+static int stbi_hdr_info(stbi *s, int *x, int *y, int *comp)
+{
+ char buffer[HDR_BUFLEN];
+ char *token;
+ int valid = 0;
+
+ if (strcmp(hdr_gettoken(s,buffer), "#?RADIANCE") != 0) {
+ stbi_rewind( s );
+ return 0;
+ }
+
+ for(;;) {
+ token = hdr_gettoken(s,buffer);
+ if (token[0] == 0) break;
+ if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1;
+ }
+
+ if (!valid) {
+ stbi_rewind( s );
+ return 0;
+ }
+ token = hdr_gettoken(s,buffer);
+ if (strncmp(token, "-Y ", 3)) {
+ stbi_rewind( s );
+ return 0;
+ }
+ token += 3;
+ *y = strtol(token, &token, 10);
+ while (*token == ' ') ++token;
+ if (strncmp(token, "+X ", 3)) {
+ stbi_rewind( s );
+ return 0;
+ }
+ token += 3;
+ *x = strtol(token, NULL, 10);
+ *comp = 3;
+ return 1;
+}
+#endif // STBI_NO_HDR
+
+static int stbi_bmp_info(stbi *s, int *x, int *y, int *comp)
+{
+ int hsz;
+ if (get8(s) != 'B' || get8(s) != 'M') {
+ stbi_rewind( s );
+ return 0;
+ }
+ skip(s,12);
+ hsz = get32le(s);
+ if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108) {
+ stbi_rewind( s );
+ return 0;
+ }
+ if (hsz == 12) {
+ *x = get16le(s);
+ *y = get16le(s);
+ } else {
+ *x = get32le(s);
+ *y = get32le(s);
+ }
+ if (get16le(s) != 1) {
+ stbi_rewind( s );
+ return 0;
+ }
+ *comp = get16le(s) / 8;
+ return 1;
+}
+
+static int stbi_psd_info(stbi *s, int *x, int *y, int *comp)
+{
+ int channelCount;
+ if (get32(s) != 0x38425053) {
+ stbi_rewind( s );
+ return 0;
+ }
+ if (get16(s) != 1) {
+ stbi_rewind( s );
+ return 0;
+ }
+ skip(s, 6);
+ channelCount = get16(s);
+ if (channelCount < 0 || channelCount > 16) {
+ stbi_rewind( s );
+ return 0;
+ }
+ *y = get32(s);
+ *x = get32(s);
+ if (get16(s) != 8) {
+ stbi_rewind( s );
+ return 0;
+ }
+ if (get16(s) != 3) {
+ stbi_rewind( s );
+ return 0;
+ }
+ *comp = 4;
+ return 1;
+}
+
+static int stbi_pic_info(stbi *s, int *x, int *y, int *comp)
+{
+ int act_comp=0,num_packets=0,chained;
+ pic_packet_t packets[10];
+
+ skip(s, 92);
+
+ *x = get16(s);
+ *y = get16(s);
+ if (at_eof(s)) return 0;
+ if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) {
+ stbi_rewind( s );
+ return 0;
+ }
+
+ skip(s, 8);
+
+ do {
+ pic_packet_t *packet;
+
+ if (num_packets==sizeof(packets)/sizeof(packets[0]))
+ return 0;
+
+ packet = &packets[num_packets++];
+ chained = get8(s);
+ packet->size = get8u(s);
+ packet->type = get8u(s);
+ packet->channel = get8u(s);
+ act_comp |= packet->channel;
+
+ if (at_eof(s)) {
+ stbi_rewind( s );
+ return 0;
+ }
+ if (packet->size != 8) {
+ stbi_rewind( s );
+ return 0;
+ }
+ } while (chained);
+
+ *comp = (act_comp & 0x10 ? 4 : 3);
+
+ return 1;
+}
+
+static int stbi_info_main(stbi *s, int *x, int *y, int *comp)
+{
+ if (stbi_jpeg_info(s, x, y, comp))
+ return 1;
+ if (stbi_png_info(s, x, y, comp))
+ return 1;
+ if (stbi_gif_info(s, x, y, comp))
+ return 1;
+ if (stbi_bmp_info(s, x, y, comp))
+ return 1;
+ if (stbi_psd_info(s, x, y, comp))
+ return 1;
+ if (stbi_pic_info(s, x, y, comp))
+ return 1;
+ #ifndef STBI_NO_HDR
+ if (stbi_hdr_info(s, x, y, comp))
+ return 1;
+ #endif
+ // test tga last because it's a crappy test!
+ if (stbi_tga_info(s, x, y, comp))
+ return 1;
+ return e("unknown image type", "Image not of any known type, or corrupt");
+}
+
+#ifndef STBI_NO_STDIO
+int stbi_info(char const *filename, int *x, int *y, int *comp)
+{
+ FILE *f = fopen(filename, "rb");
+ int result;
+ if (!f) return e("can't fopen", "Unable to open file");
+ result = stbi_info_from_file(f, x, y, comp);
+ fclose(f);
+ return result;
+}
+
+int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)
+{
+ int r;
+ stbi s;
+ long pos = ftell(f);
+ start_file(&s, f);
+ r = stbi_info_main(&s,x,y,comp);
+ fseek(f,pos,SEEK_SET);
+ return r;
+}
+#endif // !STBI_NO_STDIO
+
+int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)
+{
+ stbi s;
+ start_mem(&s,buffer,len);
+ return stbi_info_main(&s,x,y,comp);
+}
+
+int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp)
+{
+ stbi s;
+ start_callbacks(&s, (stbi_io_callbacks *) c, user);
+ return stbi_info_main(&s,x,y,comp);
+}
+
+#endif // STBI_HEADER_FILE_ONLY
+
+/*
+ revision history:
+ 1.33 (2011-07-14)
+ make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements
+ 1.32 (2011-07-13)
+ support for "info" function for all supported filetypes (SpartanJ)
+ 1.31 (2011-06-20)
+ a few more leak fixes, bug in PNG handling (SpartanJ)
+ 1.30 (2011-06-11)
+ added ability to load files via callbacks to accomidate custom input streams (Ben Wenger)
+ removed deprecated format-specific test/load functions
+ removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway
+ error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha)
+ fix inefficiency in decoding 32-bit BMP (David Woo)
+ 1.29 (2010-08-16)
+ various warning fixes from Aurelien Pocheville
+ 1.28 (2010-08-01)
+ fix bug in GIF palette transparency (SpartanJ)
+ 1.27 (2010-08-01)
+ cast-to-uint8 to fix warnings
+ 1.26 (2010-07-24)
+ fix bug in file buffering for PNG reported by SpartanJ
+ 1.25 (2010-07-17)
+ refix trans_data warning (Won Chun)
+ 1.24 (2010-07-12)
+ perf improvements reading from files on platforms with lock-heavy fgetc()
+ minor perf improvements for jpeg
+ deprecated type-specific functions so we'll get feedback if they're needed
+ attempt to fix trans_data warning (Won Chun)
+ 1.23 fixed bug in iPhone support
+ 1.22 (2010-07-10)
+ removed image *writing* support
+ stbi_info support from Jetro Lauha
+ GIF support from Jean-Marc Lienher
+ iPhone PNG-extensions from James Brown
+ warning-fixes from Nicolas Schulz and Janez Zemva (i.e. Janez (U+017D)emva)
+ 1.21 fix use of 'uint8' in header (reported by jon blow)
+ 1.20 added support for Softimage PIC, by Tom Seddon
+ 1.19 bug in interlaced PNG corruption check (found by ryg)
+ 1.18 2008-08-02
+ fix a threading bug (local mutable static)
+ 1.17 support interlaced PNG
+ 1.16 major bugfix - convert_format converted one too many pixels
+ 1.15 initialize some fields for thread safety
+ 1.14 fix threadsafe conversion bug
+ header-file-only version (#define STBI_HEADER_FILE_ONLY before including)
+ 1.13 threadsafe
+ 1.12 const qualifiers in the API
+ 1.11 Support installable IDCT, colorspace conversion routines
+ 1.10 Fixes for 64-bit (don't use "unsigned long")
+ optimized upsampling by Fabian "ryg" Giesen
+ 1.09 Fix format-conversion for PSD code (bad global variables!)
+ 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz
+ 1.07 attempt to fix C++ warning/errors again
+ 1.06 attempt to fix C++ warning/errors again
+ 1.05 fix TGA loading to return correct *comp and use good luminance calc
+ 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free
+ 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR
+ 1.02 support for (subset of) HDR files, float interface for preferred access to them
+ 1.01 fix bug: possible bug in handling right-side up bmps... not sure
+ fix bug: the stbi_bmp_load() and stbi_tga_load() functions didn't work at all
+ 1.00 interface to zlib that skips zlib header
+ 0.99 correct handling of alpha in palette
+ 0.98 TGA loader by lonesock; dynamically add loaders (untested)
+ 0.97 jpeg errors on too large a file; also catch another malloc failure
+ 0.96 fix detection of invalid v value - particleman@mollyrocket forum
+ 0.95 during header scan, seek to markers in case of padding
+ 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same
+ 0.93 handle jpegtran output; verbose errors
+ 0.92 read 4,8,16,24,32-bit BMP files of several formats
+ 0.91 output 24-bit Windows 3.0 BMP files
+ 0.90 fix a few more warnings; bump version number to approach 1.0
+ 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd
+ 0.60 fix compiling as c++
+ 0.59 fix warnings: merge Dave Moore's -Wall fixes
+ 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian
+ 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available
+ 0.56 fix bug: zlib uncompressed mode len vs. nlen
+ 0.55 fix bug: restart_interval not initialized to 0
+ 0.54 allow NULL for 'int *comp'
+ 0.53 fix bug in png 3->4; speedup png decoding
+ 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments
+ 0.51 obey req_comp requests, 1-component jpegs return as 1-component,
+ on 'test' only check type, not whether we support this variant
+ 0.50 first released version
+*/
diff --git a/src/SFML/Graphics/stb_image/stb_image_write.h b/src/SFML/Graphics/stb_image/stb_image_write.h
new file mode 100644
index 0000000..b9f7aae
--- /dev/null
+++ b/src/SFML/Graphics/stb_image/stb_image_write.h
@@ -0,0 +1,511 @@
+/* stbiw-0.92 - public domain - http://nothings.org/stb/stb_image_write.h
+ writes out PNG/BMP/TGA images to C stdio - Sean Barrett 2010
+ no warranty implied; use at your own risk
+
+
+Before including,
+
+ #define STB_IMAGE_WRITE_IMPLEMENTATION
+
+in the file that you want to have the implementation.
+
+
+ABOUT:
+
+ This header file is a library for writing images to C stdio. It could be
+ adapted to write to memory or a general streaming interface; let me know.
+
+ The PNG output is not optimal; it is 20-50% larger than the file
+ written by a decent optimizing implementation. This library is designed
+ for source code compactness and simplicitly, not optimal image file size
+ or run-time performance.
+
+USAGE:
+
+ There are three functions, one for each image file format:
+
+ int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
+ int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
+ int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);
+
+ Each function returns 0 on failure and non-0 on success.
+
+ The functions create an image file defined by the parameters. The image
+ is a rectangle of pixels stored from left-to-right, top-to-bottom.
+ Each pixel contains 'comp' channels of data stored interleaved with 8-bits
+ per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is
+ monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.
+ The *data pointer points to the first byte of the top-left-most pixel.
+ For PNG, "stride_in_bytes" is the distance in bytes from the first byte of
+ a row of pixels to the first byte of the next row of pixels.
+
+ PNG creates output files with the same number of components as the input.
+ The BMP and TGA formats expand Y to RGB in the file format. BMP does not
+ output alpha.
+
+ PNG supports writing rectangles of data even when the bytes storing rows of
+ data are not consecutive in memory (e.g. sub-rectangles of a larger image),
+ by supplying the stride between the beginning of adjacent rows. The other
+ formats do not. (Thus you cannot write a native-format BMP through the BMP
+ writer, both because it is in BGR order and because it may have padding
+ at the end of the line.)
+*/
+
+#ifndef INCLUDE_STB_IMAGE_WRITE_H
+#define INCLUDE_STB_IMAGE_WRITE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
+extern int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
+extern int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif//INCLUDE_STB_IMAGE_WRITE_H
+
+#ifdef STB_IMAGE_WRITE_IMPLEMENTATION
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+typedef unsigned int stbiw_uint32;
+typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1];
+
+static void writefv(FILE *f, const char *fmt, va_list v)
+{
+ while (*fmt) {
+ switch (*fmt++) {
+ case ' ': break;
+ case '1': { unsigned char x = (unsigned char) va_arg(v, int); fputc(x,f); break; }
+ case '2': { int x = va_arg(v,int); unsigned char b[2];
+ b[0] = (unsigned char) x; b[1] = (unsigned char) (x>>8);
+ fwrite(b,2,1,f); break; }
+ case '4': { stbiw_uint32 x = va_arg(v,int); unsigned char b[4];
+ b[0]=(unsigned char)x; b[1]=(unsigned char)(x>>8);
+ b[2]=(unsigned char)(x>>16); b[3]=(unsigned char)(x>>24);
+ fwrite(b,4,1,f); break; }
+ default:
+ assert(0);
+ return;
+ }
+ }
+}
+
+static void write3(FILE *f, unsigned char a, unsigned char b, unsigned char c)
+{
+ unsigned char arr[3];
+ arr[0] = a, arr[1] = b, arr[2] = c;
+ fwrite(arr, 3, 1, f);
+}
+
+static void write_pixels(FILE *f, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad)
+{
+ unsigned char bg[3] = { 255, 0, 255}, px[3];
+ stbiw_uint32 zero = 0;
+ int i,j,k, j_end;
+
+ if (y <= 0)
+ return;
+
+ if (vdir < 0)
+ j_end = -1, j = y-1;
+ else
+ j_end = y, j = 0;
+
+ for (; j != j_end; j += vdir) {
+ for (i=0; i < x; ++i) {
+ unsigned char *d = (unsigned char *) data + (j*x+i)*comp;
+ if (write_alpha < 0)
+ fwrite(&d[comp-1], 1, 1, f);
+ switch (comp) {
+ case 1:
+ case 2: write3(f, d[0],d[0],d[0]);
+ break;
+ case 4:
+ if (!write_alpha) {
+ // composite against pink background
+ for (k=0; k < 3; ++k)
+ px[k] = bg[k] + ((d[k] - bg[k]) * d[3])/255;
+ write3(f, px[1-rgb_dir],px[1],px[1+rgb_dir]);
+ break;
+ }
+ /* FALLTHROUGH */
+ case 3:
+ write3(f, d[1-rgb_dir],d[1],d[1+rgb_dir]);
+ break;
+ }
+ if (write_alpha > 0)
+ fwrite(&d[comp-1], 1, 1, f);
+ }
+ fwrite(&zero,scanline_pad,1,f);
+ }
+}
+
+static int outfile(char const *filename, int rgb_dir, int vdir, int x, int y, int comp, void *data, int alpha, int pad, const char *fmt, ...)
+{
+ FILE *f;
+ if (y < 0 || x < 0) return 0;
+ f = fopen(filename, "wb");
+ if (f) {
+ va_list v;
+ va_start(v, fmt);
+ writefv(f, fmt, v);
+ va_end(v);
+ write_pixels(f,rgb_dir,vdir,x,y,comp,data,alpha,pad);
+ fclose(f);
+ }
+ return f != NULL;
+}
+
+int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data)
+{
+ int pad = (-x*3) & 3;
+ return outfile(filename,-1,-1,x,y,comp,(void *) data,0,pad,
+ "11 4 22 4" "4 44 22 444444",
+ 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header
+ 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header
+}
+
+int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data)
+{
+ int has_alpha = !(comp & 1);
+ return outfile(filename, -1,-1, x, y, comp, (void *) data, has_alpha, 0,
+ "111 221 2222 11", 0,0,2, 0,0,0, 0,0,x,y, 24+8*has_alpha, 8*has_alpha);
+}
+
+// stretchy buffer; stbi__sbpush() == vector<>::push_back() -- stbi__sbcount() == vector<>::size()
+#define stbi__sbraw(a) ((int *) (a) - 2)
+#define stbi__sbm(a) stbi__sbraw(a)[0]
+#define stbi__sbn(a) stbi__sbraw(a)[1]
+
+#define stbi__sbneedgrow(a,n) ((a)==0 || stbi__sbn(a)+n >= stbi__sbm(a))
+#define stbi__sbmaybegrow(a,n) (stbi__sbneedgrow(a,(n)) ? stbi__sbgrow(a,n) : 0)
+#define stbi__sbgrow(a,n) stbi__sbgrowf((void **) &(a), (n), sizeof(*(a)))
+
+#define stbi__sbpush(a, v) (stbi__sbmaybegrow(a,1), (a)[stbi__sbn(a)++] = (v))
+#define stbi__sbcount(a) ((a) ? stbi__sbn(a) : 0)
+#define stbi__sbfree(a) ((a) ? free(stbi__sbraw(a)),0 : 0)
+
+static void *stbi__sbgrowf(void **arr, int increment, int itemsize)
+{
+ int m = *arr ? 2*stbi__sbm(*arr)+increment : increment+1;
+ void *p = realloc(*arr ? stbi__sbraw(*arr) : 0, itemsize * m + sizeof(int)*2);
+ assert(p);
+ if (p) {
+ if (!*arr) ((int *) p)[1] = 0;
+ *arr = (void *) ((int *) p + 2);
+ stbi__sbm(*arr) = m;
+ }
+ return *arr;
+}
+
+static unsigned char *stbi__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)
+{
+ while (*bitcount >= 8) {
+ stbi__sbpush(data, (unsigned char) *bitbuffer);
+ *bitbuffer >>= 8;
+ *bitcount -= 8;
+ }
+ return data;
+}
+
+static int stbi__zlib_bitrev(int code, int codebits)
+{
+ int res=0;
+ while (codebits--) {
+ res = (res << 1) | (code & 1);
+ code >>= 1;
+ }
+ return res;
+}
+
+static unsigned int stbi__zlib_countm(unsigned char *a, unsigned char *b, int limit)
+{
+ int i;
+ for (i=0; i < limit && i < 258; ++i)
+ if (a[i] != b[i]) break;
+ return i;
+}
+
+static unsigned int stbi__zhash(unsigned char *data)
+{
+ stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16);
+ hash ^= hash << 3;
+ hash += hash >> 5;
+ hash ^= hash << 4;
+ hash += hash >> 17;
+ hash ^= hash << 25;
+ hash += hash >> 6;
+ return hash;
+}
+
+#define stbi__zlib_flush() (out = stbi__zlib_flushf(out, &bitbuf, &bitcount))
+#define stbi__zlib_add(code,codebits) \
+ (bitbuf |= (code) << bitcount, bitcount += (codebits), stbi__zlib_flush())
+#define stbi__zlib_huffa(b,c) stbi__zlib_add(stbi__zlib_bitrev(b,c),c)
+// default huffman tables
+#define stbi__zlib_huff1(n) stbi__zlib_huffa(0x30 + (n), 8)
+#define stbi__zlib_huff2(n) stbi__zlib_huffa(0x190 + (n)-144, 9)
+#define stbi__zlib_huff3(n) stbi__zlib_huffa(0 + (n)-256,7)
+#define stbi__zlib_huff4(n) stbi__zlib_huffa(0xc0 + (n)-280,8)
+#define stbi__zlib_huff(n) ((n) <= 143 ? stbi__zlib_huff1(n) : (n) <= 255 ? stbi__zlib_huff2(n) : (n) <= 279 ? stbi__zlib_huff3(n) : stbi__zlib_huff4(n))
+#define stbi__zlib_huffb(n) ((n) <= 143 ? stbi__zlib_huff1(n) : stbi__zlib_huff2(n))
+
+#define stbi__ZHASH 16384
+
+unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)
+{
+ static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 };
+ static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 };
+ static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 };
+ static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 };
+ unsigned int bitbuf=0;
+ int i,j, bitcount=0;
+ unsigned char *out = NULL;
+ unsigned char **hash_table[stbi__ZHASH]; // 64KB on the stack!
+ if (quality < 5) quality = 5;
+
+ stbi__sbpush(out, 0x78); // DEFLATE 32K window
+ stbi__sbpush(out, 0x5e); // FLEVEL = 1
+ stbi__zlib_add(1,1); // BFINAL = 1
+ stbi__zlib_add(1,2); // BTYPE = 1 -- fixed huffman
+
+ for (i=0; i < stbi__ZHASH; ++i)
+ hash_table[i] = NULL;
+
+ i=0;
+ while (i < data_len-3) {
+ // hash next 3 bytes of data to be compressed
+ int h = stbi__zhash(data+i)&(stbi__ZHASH-1), best=3;
+ unsigned char *bestloc = 0;
+ unsigned char **hlist = hash_table[h];
+ int n = stbi__sbcount(hlist);
+ for (j=0; j < n; ++j) {
+ if (hlist[j]-data > i-32768) { // if entry lies within window
+ int d = stbi__zlib_countm(hlist[j], data+i, data_len-i);
+ if (d >= best) best=d,bestloc=hlist[j];
+ }
+ }
+ // when hash table entry is too long, delete half the entries
+ if (hash_table[h] && stbi__sbn(hash_table[h]) == 2*quality) {
+ memcpy(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality);
+ stbi__sbn(hash_table[h]) = quality;
+ }
+ stbi__sbpush(hash_table[h],data+i);
+
+ if (bestloc) {
+ // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal
+ h = stbi__zhash(data+i+1)&(stbi__ZHASH-1);
+ hlist = hash_table[h];
+ n = stbi__sbcount(hlist);
+ for (j=0; j < n; ++j) {
+ if (hlist[j]-data > i-32767) {
+ int e = stbi__zlib_countm(hlist[j], data+i+1, data_len-i-1);
+ if (e > best) { // if next match is better, bail on current match
+ bestloc = NULL;
+ break;
+ }
+ }
+ }
+ }
+
+ if (bestloc) {
+ int d = data+i - bestloc; // distance back
+ assert(d <= 32767 && best <= 258);
+ for (j=0; best > lengthc[j+1]-1; ++j);
+ stbi__zlib_huff(j+257);
+ if (lengtheb[j]) stbi__zlib_add(best - lengthc[j], lengtheb[j]);
+ for (j=0; d > distc[j+1]-1; ++j);
+ stbi__zlib_add(stbi__zlib_bitrev(j,5),5);
+ if (disteb[j]) stbi__zlib_add(d - distc[j], disteb[j]);
+ i += best;
+ } else {
+ stbi__zlib_huffb(data[i]);
+ ++i;
+ }
+ }
+ // write out final bytes
+ for (;i < data_len; ++i)
+ stbi__zlib_huffb(data[i]);
+ stbi__zlib_huff(256); // end of block
+ // pad with 0 bits to byte boundary
+ while (bitcount)
+ stbi__zlib_add(0,1);
+
+ for (i=0; i < stbi__ZHASH; ++i)
+ (void) stbi__sbfree(hash_table[i]);
+
+ {
+ // compute adler32 on input
+ unsigned int i=0, s1=1, s2=0, blocklen = data_len % 5552;
+ int j=0;
+ while (j < data_len) {
+ for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1;
+ s1 %= 65521, s2 %= 65521;
+ j += blocklen;
+ blocklen = 5552;
+ }
+ stbi__sbpush(out, (unsigned char) (s2 >> 8));
+ stbi__sbpush(out, (unsigned char) s2);
+ stbi__sbpush(out, (unsigned char) (s1 >> 8));
+ stbi__sbpush(out, (unsigned char) s1);
+ }
+ *out_len = stbi__sbn(out);
+ // make returned pointer freeable
+ memmove(stbi__sbraw(out), out, *out_len);
+ return (unsigned char *) stbi__sbraw(out);
+}
+
+unsigned int stbi__crc32(unsigned char *buffer, int len)
+{
+ static unsigned int crc_table[256];
+ unsigned int crc = ~0u;
+ int i,j;
+ if (crc_table[1] == 0)
+ for(i=0; i < 256; i++)
+ for (crc_table[i]=i, j=0; j < 8; ++j)
+ crc_table[i] = (crc_table[i] >> 1) ^ (crc_table[i] & 1 ? 0xedb88320 : 0);
+ for (i=0; i < len; ++i)
+ crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)];
+ return ~crc;
+}
+
+#define stbi__wpng4(o,a,b,c,d) ((o)[0]=(unsigned char)(a),(o)[1]=(unsigned char)(b),(o)[2]=(unsigned char)(c),(o)[3]=(unsigned char)(d),(o)+=4)
+#define stbi__wp32(data,v) stbi__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));
+#define stbi__wptag(data,s) stbi__wpng4(data, s[0],s[1],s[2],s[3])
+
+static void stbi__wpcrc(unsigned char **data, int len)
+{
+ unsigned int crc = stbi__crc32(*data - len - 4, len+4);
+ stbi__wp32(*data, crc);
+}
+
+static unsigned char stbi__paeth(int a, int b, int c)
+{
+ int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);
+ if (pa <= pb && pa <= pc) return (unsigned char) a;
+ if (pb <= pc) return (unsigned char) b;
+ return (unsigned char) c;
+}
+
+unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)
+{
+ int ctype[5] = { -1, 0, 4, 2, 6 };
+ unsigned char sig[8] = { 137,80,78,71,13,10,26,10 };
+ unsigned char *out,*o, *filt, *zlib;
+ signed char *line_buffer;
+ int i,j,k,p,zlen;
+
+ if (stride_bytes == 0)
+ stride_bytes = x * n;
+
+ filt = (unsigned char *) malloc((x*n+1) * y); if (!filt) return 0;
+ line_buffer = (signed char *) malloc(x * n); if (!line_buffer) { free(filt); return 0; }
+ for (j=0; j < y; ++j) {
+ static int mapping[] = { 0,1,2,3,4 };
+ static int firstmap[] = { 0,1,0,5,6 };
+ int *mymap = j ? mapping : firstmap;
+ int best = 0, bestval = 0x7fffffff;
+ for (p=0; p < 2; ++p) {
+ for (k= p?best:0; k < 5; ++k) {
+ int type = mymap[k],est=0;
+ unsigned char *z = pixels + stride_bytes*j;
+ for (i=0; i < n; ++i)
+ switch (type) {
+ case 0: line_buffer[i] = z[i]; break;
+ case 1: line_buffer[i] = z[i]; break;
+ case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break;
+ case 3: line_buffer[i] = z[i] - (z[i-stride_bytes]>>1); break;
+ case 4: line_buffer[i] = (signed char) (z[i] - stbi__paeth(0,z[i-stride_bytes],0)); break;
+ case 5: line_buffer[i] = z[i]; break;
+ case 6: line_buffer[i] = z[i]; break;
+ }
+ for (i=n; i < x*n; ++i) {
+ switch (type) {
+ case 0: line_buffer[i] = z[i]; break;
+ case 1: line_buffer[i] = z[i] - z[i-n]; break;
+ case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break;
+ case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-stride_bytes])>>1); break;
+ case 4: line_buffer[i] = z[i] - stbi__paeth(z[i-n], z[i-stride_bytes], z[i-stride_bytes-n]); break;
+ case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break;
+ case 6: line_buffer[i] = z[i] - stbi__paeth(z[i-n], 0,0); break;
+ }
+ }
+ if (p) break;
+ for (i=0; i < x*n; ++i)
+ est += abs((signed char) line_buffer[i]);
+ if (est < bestval) { bestval = est; best = k; }
+ }
+ }
+ // when we get here, best contains the filter type, and line_buffer contains the data
+ filt[j*(x*n+1)] = (unsigned char) best;
+ memcpy(filt+j*(x*n+1)+1, line_buffer, x*n);
+ }
+ free(line_buffer);
+ zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, 8); // increase 8 to get smaller but use more memory
+ free(filt);
+ if (!zlib) return 0;
+
+ // each tag requires 12 bytes of overhead
+ out = (unsigned char *) malloc(8 + 12+13 + 12+zlen + 12);
+ if (!out) return 0;
+ *out_len = 8 + 12+13 + 12+zlen + 12;
+
+ o=out;
+ memcpy(o,sig,8); o+= 8;
+ stbi__wp32(o, 13); // header length
+ stbi__wptag(o, "IHDR");
+ stbi__wp32(o, x);
+ stbi__wp32(o, y);
+ *o++ = 8;
+ *o++ = (unsigned char) ctype[n];
+ *o++ = 0;
+ *o++ = 0;
+ *o++ = 0;
+ stbi__wpcrc(&o,13);
+
+ stbi__wp32(o, zlen);
+ stbi__wptag(o, "IDAT");
+ memcpy(o, zlib, zlen); o += zlen; free(zlib);
+ stbi__wpcrc(&o, zlen);
+
+ stbi__wp32(o,0);
+ stbi__wptag(o, "IEND");
+ stbi__wpcrc(&o,0);
+
+ assert(o == out + *out_len);
+
+ return out;
+}
+
+int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes)
+{
+ FILE *f;
+ int len;
+ unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len);
+ if (!png) return 0;
+ f = fopen(filename, "wb");
+ if (!f) { free(png); return 0; }
+ fwrite(png, 1, len, f);
+ fclose(f);
+ free(png);
+ return 1;
+}
+#endif // STB_IMAGE_WRITE_IMPLEMENTATION
+
+/* Revision history
+
+ 0.92 (2010-08-01)
+ casts to unsigned char to fix warnings
+ 0.91 (2010-07-17)
+ first public release
+ 0.90 first internal release
+*/
diff --git a/src/SFML/Main/CMakeLists.txt b/src/SFML/Main/CMakeLists.txt
new file mode 100644
index 0000000..2a3575e
--- /dev/null
+++ b/src/SFML/Main/CMakeLists.txt
@@ -0,0 +1,21 @@
+
+# sources
+set(SRC
+ ${PROJECT_SOURCE_DIR}/src/SFML/Main/SFML_Main.cpp
+)
+source_group("" FILES ${SRC})
+
+# define the sfml-main target
+add_library(sfml-main STATIC ${SRC})
+
+# set the debug suffix
+set_target_properties(sfml-main PROPERTIES DEBUG_POSTFIX -d)
+
+# insert the major version number in the output filename
+set_target_properties(sfml-main PROPERTIES OUTPUT_NAME "sfml-main")
+
+# set the target's folder (for IDEs that support it, e.g. Visual Studio)
+set_target_properties(sfml-main PROPERTIES FOLDER "SFML")
+
+# setup the install rule
+install(TARGETS sfml-main ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT devel)
diff --git a/src/SFML/Main/SFML_Main.cpp b/src/SFML/Main/SFML_Main.cpp
index a39d0c1..b4d04a3 100755..100644
--- a/src/SFML/Main/SFML_Main.cpp
+++ b/src/SFML/Main/SFML_Main.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Makefile b/src/SFML/Makefile
deleted file mode 100755
index d8f633e..0000000
--- a/src/SFML/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-export DEBUGBUILD = no
-export STATIC = no
-
-ifeq ($(DEBUGBUILD), yes)
- DEBUGFLAGS = -g -DDEBUG
-else
- DEBUGFLAGS = -O2 -DNDEBUG
-endif
-
-ifeq ($(STATIC), no)
- BUILDFLAGS = -fPIC
- LINKFLAGS = -shared
-else
- BUILDFLAGS =
- LINKFLAGS =
-endif
-
-export CC = gcc
-export CPP = g++
-export CFLAGS = -W -Wall -pedantic -I../../../include -I../../ $(DEBUGFLAGS) $(BUILDFLAGS)
-export CFLAGSEXT = -I../../../include -I../.. $(DEBUGFLAGS) $(BUILDFLAGS)
-export LDFLAGS = $(LINKFLAGS)
-export LIBPATH = ../../../lib
-export VERSION = 1.6
-export CP = cp
-export LN = ln
-export LNFLAGS = -s -f
-export AR = ar
-export ARFLAGS = rcs
-export DESTDIR = /usr/local
-export DESTLIBDIR = $(DESTDIR)/lib
-export DESTINCDIR = $(DESTDIR)/include
-
-all: sfml-system sfml-window sfml-network sfml-graphics sfml-audio
-
-sfml-system:
- @(mkdir -p ../../lib)
- @(cd ./System && $(MAKE))
-
-sfml-window:
- @(mkdir -p ../../lib)
- @(cd ./Window && $(MAKE))
-
-sfml-network:
- @(mkdir -p ../../lib)
- @(cd ./Network && $(MAKE))
-
-sfml-graphics:
- @(mkdir -p ../../lib)
- @(cd ./Graphics && $(MAKE))
-
-sfml-audio:
- @(mkdir -p ../../lib)
- @(cd ./Audio && $(MAKE))
-
-.PHONY: clean mrproper
-
-clean:
- @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@)
-
-mrproper: clean
- @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@)
-
-install:
- @(mkdir -p $(DESTLIBDIR))
- @(mkdir -p $(DESTINCDIR))
- @(cd ./System && $(MAKE) $@ && cd ../Window && $(MAKE) $@ && cd ../Network && $(MAKE) $@ && cd ../Graphics && $(MAKE) $@ && cd ../Audio && $(MAKE) $@ && $(CP) -r ../../../include/SFML/ $(DESTINCDIR)/)
diff --git a/src/SFML/Network/CMakeLists.txt b/src/SFML/Network/CMakeLists.txt
new file mode 100644
index 0000000..fdf3966
--- /dev/null
+++ b/src/SFML/Network/CMakeLists.txt
@@ -0,0 +1,57 @@
+
+set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFML/Network)
+set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/Network)
+
+# all source files
+set(SRC
+ ${INCROOT}/Export.hpp
+ ${SRCROOT}/Ftp.cpp
+ ${INCROOT}/Ftp.hpp
+ ${SRCROOT}/Http.cpp
+ ${INCROOT}/Http.hpp
+ ${SRCROOT}/IpAddress.cpp
+ ${INCROOT}/IpAddress.hpp
+ ${SRCROOT}/Packet.cpp
+ ${INCROOT}/Packet.hpp
+ ${SRCROOT}/Socket.cpp
+ ${INCROOT}/Socket.hpp
+ ${SRCROOT}/SocketImpl.hpp
+ ${INCROOT}/SocketHandle.hpp
+ ${SRCROOT}/SocketSelector.cpp
+ ${INCROOT}/SocketSelector.hpp
+ ${SRCROOT}/TcpListener.cpp
+ ${INCROOT}/TcpListener.hpp
+ ${SRCROOT}/TcpSocket.cpp
+ ${INCROOT}/TcpSocket.hpp
+ ${SRCROOT}/UdpSocket.cpp
+ ${INCROOT}/UdpSocket.hpp
+)
+
+# add platform specific sources
+if(WINDOWS)
+ set(SRC
+ ${SRC}
+ ${SRCROOT}/Win32/SocketImpl.cpp
+ ${SRCROOT}/Win32/SocketImpl.hpp
+ )
+else()
+ set(SRC
+ ${SRC}
+ ${SRCROOT}/Unix/SocketImpl.cpp
+ ${SRCROOT}/Unix/SocketImpl.hpp
+ )
+endif()
+
+source_group("" FILES ${SRC})
+
+# build the list of external libraries to link
+set(NETWORK_EXT_LIBS)
+if(WINDOWS)
+ set(NETWORK_EXT_LIBS ${NETWORK_EXT_LIBS} ws2_32)
+endif()
+
+# define the sfml-network target
+sfml_add_library(sfml-network
+ SOURCES ${SRC}
+ DEPENDS sfml-system
+ EXTERNAL_LIBS ${NETWORK_EXT_LIBS})
diff --git a/src/SFML/Network/Ftp.cpp b/src/SFML/Network/Ftp.cpp
index c53322c..b2fe846 100755..100644
--- a/src/SFML/Network/Ftp.cpp
+++ b/src/SFML/Network/Ftp.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,7 +26,7 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Network/Ftp.hpp>
-#include <SFML/Network/IPAddress.hpp>
+#include <SFML/Network/IpAddress.hpp>
#include <algorithm>
#include <fstream>
#include <iterator>
@@ -36,509 +36,431 @@
namespace sf
{
////////////////////////////////////////////////////////////
-// Utility class for exchanging stuff with the server
-// on the data channel
-////////////////////////////////////////////////////////////
class Ftp::DataChannel : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- // Constructor
- ////////////////////////////////////////////////////////////
- DataChannel(Ftp& Owner);
+ DataChannel(Ftp& owner);
////////////////////////////////////////////////////////////
- // Destructor
- ////////////////////////////////////////////////////////////
- ~DataChannel();
+ Ftp::Response open(Ftp::TransferMode mode);
////////////////////////////////////////////////////////////
- // Open the data channel using the specified mode and port
- ////////////////////////////////////////////////////////////
- Ftp::Response Open(Ftp::TransferMode Mode);
-
- ////////////////////////////////////////////////////////////
- // Send data on the data channel
- ////////////////////////////////////////////////////////////
- void Send(const std::vector<char>& Data);
+ void send(const std::vector<char>& data);
////////////////////////////////////////////////////////////
- // Receive data on the data channel until it is closed
- ////////////////////////////////////////////////////////////
- void Receive(std::vector<char>& Data);
+ void receive(std::vector<char>& data);
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- Ftp& myFtp; ///< Reference to the owner Ftp instance
- SocketTCP myDataSocket; ///< Socket used for data transfers
+ Ftp& m_ftp; ///< Reference to the owner Ftp instance
+ TcpSocket m_dataSocket; ///< Socket used for data transfers
};
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Ftp::Response::Response(Status Code, const std::string& Message) :
-myStatus (Code),
-myMessage(Message)
+Ftp::Response::Response(Status code, const std::string& message) :
+m_status (code),
+m_message(message)
{
}
////////////////////////////////////////////////////////////
-/// Convenience function to check if the response status code
-/// means a success
-////////////////////////////////////////////////////////////
-bool Ftp::Response::IsOk() const
+bool Ftp::Response::isOk() const
{
- return myStatus < 400;
+ return m_status < 400;
}
////////////////////////////////////////////////////////////
-/// Get the response status code
-////////////////////////////////////////////////////////////
-Ftp::Response::Status Ftp::Response::GetStatus() const
+Ftp::Response::Status Ftp::Response::getStatus() const
{
- return myStatus;
+ return m_status;
}
////////////////////////////////////////////////////////////
-/// Get the full message contained in the response
-////////////////////////////////////////////////////////////
-const std::string& Ftp::Response::GetMessage() const
+const std::string& Ftp::Response::getMessage() const
{
- return myMessage;
+ return m_message;
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Ftp::DirectoryResponse::DirectoryResponse(Ftp::Response Resp) :
-Ftp::Response(Resp)
+Ftp::DirectoryResponse::DirectoryResponse(const Ftp::Response& response) :
+Ftp::Response(response)
{
- if (IsOk())
+ if (isOk())
{
// Extract the directory from the server response
- std::string::size_type Begin = Resp.GetMessage().find('"', 0);
- std::string::size_type End = Resp.GetMessage().find('"', Begin + 1);
- myDirectory = Resp.GetMessage().substr(Begin + 1, End - Begin - 1);
+ std::string::size_type begin = getMessage().find('"', 0);
+ std::string::size_type end = getMessage().find('"', begin + 1);
+ m_directory = getMessage().substr(begin + 1, end - begin - 1);
}
}
////////////////////////////////////////////////////////////
-/// Get the directory returned in the response
-////////////////////////////////////////////////////////////
-const std::string& Ftp::DirectoryResponse::GetDirectory() const
+const std::string& Ftp::DirectoryResponse::getDirectory() const
{
- return myDirectory;
+ return m_directory;
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Ftp::ListingResponse::ListingResponse(Ftp::Response Resp, const std::vector<char>& Data) :
-Ftp::Response(Resp)
+Ftp::ListingResponse::ListingResponse(const Ftp::Response& response, const std::vector<char>& data) :
+Ftp::Response(response)
{
- if (IsOk())
+ if (isOk())
{
// Fill the array of strings
- std::string Paths(Data.begin(), Data.end());
- std::string::size_type LastPos = 0;
- for (std::string::size_type Pos = Paths.find("\r\n"); Pos != std::string::npos; Pos = Paths.find("\r\n", LastPos))
+ std::string paths(data.begin(), data.end());
+ std::string::size_type lastPos = 0;
+ for (std::string::size_type pos = paths.find("\r\n"); pos != std::string::npos; pos = paths.find("\r\n", lastPos))
{
- myFilenames.push_back(Paths.substr(LastPos, Pos - LastPos));
- LastPos = Pos + 2;
+ m_listing.push_back(paths.substr(lastPos, pos - lastPos));
+ lastPos = pos + 2;
}
}
}
////////////////////////////////////////////////////////////
-/// Get the number of filenames in the listing
-////////////////////////////////////////////////////////////
-std::size_t Ftp::ListingResponse::GetCount() const
+const std::vector<std::string>& Ftp::ListingResponse::getListing() const
{
- return myFilenames.size();
+ return m_listing;
}
////////////////////////////////////////////////////////////
-/// Get the Index-th filename in the directory
-////////////////////////////////////////////////////////////
-const std::string& Ftp::ListingResponse::GetFilename(std::size_t Index) const
-{
- return myFilenames[Index];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor -- close the connection with the server
-////////////////////////////////////////////////////////////
Ftp::~Ftp()
{
- Disconnect();
+ disconnect();
}
////////////////////////////////////////////////////////////
-/// Connect to the specified FTP server
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Connect(const IPAddress& Server, unsigned short Port, float Timeout)
+Ftp::Response Ftp::connect(const IpAddress& server, unsigned short port, Time timeout)
{
// Connect to the server
- if (myCommandSocket.Connect(Port, Server, Timeout) != Socket::Done)
+ if (m_commandSocket.connect(server, port, timeout) != Socket::Done)
return Response(Response::ConnectionFailed);
// Get the response to the connection
- return GetResponse();
+ return getResponse();
}
////////////////////////////////////////////////////////////
-/// Log in using anonymous account
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Login()
+Ftp::Response Ftp::login()
{
- return Login("anonymous", "user@sfml-dev.org");
+ return login("anonymous", "user@sfml-dev.org");
}
////////////////////////////////////////////////////////////
-/// Log in using a username and a password
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Login(const std::string& UserName, const std::string& Password)
+Ftp::Response Ftp::login(const std::string& name, const std::string& password)
{
- Response Resp = SendCommand("USER", UserName);
- if (Resp.IsOk())
- Resp = SendCommand("PASS", Password);
+ Response response = sendCommand("USER", name);
+ if (response.isOk())
+ response = sendCommand("PASS", password);
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Close the connection with FTP server
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Disconnect()
+Ftp::Response Ftp::disconnect()
{
// Send the exit command
- Response Resp = SendCommand("QUIT");
- if (Resp.IsOk())
- myCommandSocket.Close();
+ Response response = sendCommand("QUIT");
+ if (response.isOk())
+ m_commandSocket.disconnect();
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Send a null command just to prevent from being disconnected
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::KeepAlive()
+Ftp::Response Ftp::keepAlive()
{
- return SendCommand("NOOP");
+ return sendCommand("NOOP");
}
////////////////////////////////////////////////////////////
-/// Get the current working directory
-////////////////////////////////////////////////////////////
-Ftp::DirectoryResponse Ftp::GetWorkingDirectory()
+Ftp::DirectoryResponse Ftp::getWorkingDirectory()
{
- return DirectoryResponse(SendCommand("PWD"));
+ return DirectoryResponse(sendCommand("PWD"));
}
////////////////////////////////////////////////////////////
-/// Get the contents of the given directory
-/// (subdirectories and files)
-////////////////////////////////////////////////////////////
-Ftp::ListingResponse Ftp::GetDirectoryListing(const std::string& Directory)
+Ftp::ListingResponse Ftp::getDirectoryListing(const std::string& directory)
{
// Open a data channel on default port (20) using ASCII transfer mode
- std::vector<char> DirData;
- DataChannel Data(*this);
- Response Resp = Data.Open(Ascii);
- if (Resp.IsOk())
+ std::vector<char> directoryData;
+ DataChannel data(*this);
+ Response response = data.open(Ascii);
+ if (response.isOk())
{
// Tell the server to send us the listing
- Resp = SendCommand("NLST", Directory);
- if (Resp.IsOk())
+ response = sendCommand("NLST", directory);
+ if (response.isOk())
{
// Receive the listing
- Data.Receive(DirData);
+ data.receive(directoryData);
// Get the response from the server
- Resp = GetResponse();
+ response = getResponse();
}
}
- return ListingResponse(Resp, DirData);
+ return ListingResponse(response, directoryData);
}
////////////////////////////////////////////////////////////
-/// Change the current working directory
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::ChangeDirectory(const std::string& Directory)
+Ftp::Response Ftp::changeDirectory(const std::string& directory)
{
- return SendCommand("CWD", Directory);
+ return sendCommand("CWD", directory);
}
////////////////////////////////////////////////////////////
-/// Go to the parent directory of the current one
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::ParentDirectory()
+Ftp::Response Ftp::parentDirectory()
{
- return SendCommand("CDUP");
+ return sendCommand("CDUP");
}
////////////////////////////////////////////////////////////
-/// Create a new directory
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::MakeDirectory(const std::string& Name)
+Ftp::Response Ftp::createDirectory(const std::string& name)
{
- return SendCommand("MKD", Name);
+ return sendCommand("MKD", name);
}
////////////////////////////////////////////////////////////
-/// Remove an existing directory
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::DeleteDirectory(const std::string& Name)
+Ftp::Response Ftp::deleteDirectory(const std::string& name)
{
- return SendCommand("RMD", Name);
+ return sendCommand("RMD", name);
}
////////////////////////////////////////////////////////////
-/// Rename a file
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::RenameFile(const std::string& File, const std::string& NewName)
+Ftp::Response Ftp::renameFile(const std::string& file, const std::string& newName)
{
- Response Resp = SendCommand("RNFR", File);
- if (Resp.IsOk())
- Resp = SendCommand("RNTO", NewName);
+ Response response = sendCommand("RNFR", file);
+ if (response.isOk())
+ response = sendCommand("RNTO", newName);
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Remove an existing file
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::DeleteFile(const std::string& Name)
+Ftp::Response Ftp::deleteFile(const std::string& name)
{
- return SendCommand("DELE", Name);
+ return sendCommand("DELE", name);
}
////////////////////////////////////////////////////////////
-/// Download a file from the server
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Download(const std::string& DistantFile, const std::string& DestPath, TransferMode Mode)
+Ftp::Response Ftp::download(const std::string& remoteFile, const std::string& localPath, TransferMode mode)
{
// Open a data channel using the given transfer mode
- DataChannel Data(*this);
- Response Resp = Data.Open(Mode);
- if (Resp.IsOk())
+ DataChannel data(*this);
+ Response response = data.open(mode);
+ if (response.isOk())
{
// Tell the server to start the transfer
- Resp = SendCommand("RETR", DistantFile);
- if (Resp.IsOk())
+ response = sendCommand("RETR", remoteFile);
+ if (response.isOk())
{
// Receive the file data
- std::vector<char> FileData;
- Data.Receive(FileData);
+ std::vector<char> fileData;
+ data.receive(fileData);
// Get the response from the server
- Resp = GetResponse();
- if (Resp.IsOk())
+ response = getResponse();
+ if (response.isOk())
{
// Extract the filename from the file path
- std::string Filename = DistantFile;
- std::string::size_type Pos = Filename.find_last_of("/\\");
- if (Pos != std::string::npos)
- Filename = Filename.substr(Pos + 1);
+ std::string filename = remoteFile;
+ std::string::size_type pos = filename.find_last_of("/\\");
+ if (pos != std::string::npos)
+ filename = filename.substr(pos + 1);
// Make sure the destination path ends with a slash
- std::string Path = DestPath;
- if (!Path.empty() && (Path[Path.size() - 1] != '\\') && (Path[Path.size() - 1] != '/'))
- Path += "/";
+ std::string path = localPath;
+ if (!path.empty() && (path[path.size() - 1] != '\\') && (path[path.size() - 1] != '/'))
+ path += "/";
// Create the file and copy the received data into it
- std::ofstream File((Path + Filename).c_str(), std::ios_base::binary);
- if (!File)
+ std::ofstream file((path + filename).c_str(), std::ios_base::binary);
+ if (!file)
return Response(Response::InvalidFile);
- if (!FileData.empty())
- File.write(&FileData[0], static_cast<std::streamsize>(FileData.size()));
+
+ if (!fileData.empty())
+ file.write(&fileData[0], static_cast<std::streamsize>(fileData.size()));
}
}
}
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Upload a file to the server
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::Upload(const std::string& LocalFile, const std::string& DestPath, TransferMode Mode)
+Ftp::Response Ftp::upload(const std::string& localFile, const std::string& remotePath, TransferMode mode)
{
// Get the contents of the file to send
- std::ifstream File(LocalFile.c_str(), std::ios_base::binary);
- if (!File)
+ std::ifstream file(localFile.c_str(), std::ios_base::binary);
+ if (!file)
return Response(Response::InvalidFile);
- File.seekg(0, std::ios::end);
- std::size_t Length = File.tellg();
- File.seekg(0, std::ios::beg);
- std::vector<char> FileData(Length);
- if (Length > 0)
- File.read(&FileData[0], static_cast<std::streamsize>(Length));
+
+ file.seekg(0, std::ios::end);
+ std::size_t length = static_cast<std::size_t>(file.tellg());
+ file.seekg(0, std::ios::beg);
+ std::vector<char> fileData(length);
+ if (length > 0)
+ file.read(&fileData[0], static_cast<std::streamsize>(length));
// Extract the filename from the file path
- std::string Filename = LocalFile;
- std::string::size_type Pos = Filename.find_last_of("/\\");
- if (Pos != std::string::npos)
- Filename = Filename.substr(Pos + 1);
+ std::string filename = localFile;
+ std::string::size_type pos = filename.find_last_of("/\\");
+ if (pos != std::string::npos)
+ filename = filename.substr(pos + 1);
// Make sure the destination path ends with a slash
- std::string Path = DestPath;
- if (!Path.empty() && (Path[Path.size() - 1] != '\\') && (Path[Path.size() - 1] != '/'))
- Path += "/";
+ std::string path = remotePath;
+ if (!path.empty() && (path[path.size() - 1] != '\\') && (path[path.size() - 1] != '/'))
+ path += "/";
// Open a data channel using the given transfer mode
- DataChannel Data(*this);
- Response Resp = Data.Open(Mode);
- if (Resp.IsOk())
+ DataChannel data(*this);
+ Response response = data.open(mode);
+ if (response.isOk())
{
// Tell the server to start the transfer
- Resp = SendCommand("STOR", Path + Filename);
- if (Resp.IsOk())
+ response = sendCommand("STOR", path + filename);
+ if (response.isOk())
{
// Send the file data
- Data.Send(FileData);
+ data.send(fileData);
// Get the response from the server
- Resp = GetResponse();
+ response = getResponse();
}
}
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Send a command to the FTP server
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::SendCommand(const std::string& Command, const std::string& Parameter)
+Ftp::Response Ftp::sendCommand(const std::string& command, const std::string& parameter)
{
// Build the command string
- std::string CommandStr;
- if (Parameter != "")
- CommandStr = Command + " " + Parameter + "\r\n";
+ std::string commandStr;
+ if (parameter != "")
+ commandStr = command + " " + parameter + "\r\n";
else
- CommandStr = Command + "\r\n";
+ commandStr = command + "\r\n";
// Send it to the server
- if (myCommandSocket.Send(CommandStr.c_str(), CommandStr.length()) != sf::Socket::Done)
+ if (m_commandSocket.send(commandStr.c_str(), commandStr.length()) != Socket::Done)
return Response(Response::ConnectionClosed);
// Get the response
- return GetResponse();
+ return getResponse();
}
////////////////////////////////////////////////////////////
-/// Receive a response from the server
-/// (usually after a command has been sent)
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::GetResponse()
+Ftp::Response Ftp::getResponse()
{
// We'll use a variable to keep track of the last valid code.
// It is useful in case of multi-lines responses, because the end of such a response
// will start by the same code
- unsigned int LastCode = 0;
- bool IsInsideMultiline = false;
- std::string Message;
+ unsigned int lastCode = 0;
+ bool isInsideMultiline = false;
+ std::string message;
for (;;)
{
// Receive the response from the server
- char Buffer[1024];
- std::size_t Length;
- if (myCommandSocket.Receive(Buffer, sizeof(Buffer), Length) != sf::Socket::Done)
+ char buffer[1024];
+ std::size_t length;
+ if (m_commandSocket.receive(buffer, sizeof(buffer), length) != Socket::Done)
return Response(Response::ConnectionClosed);
// There can be several lines inside the received buffer, extract them all
- std::istringstream In(std::string(Buffer, Length), std::ios_base::binary);
- while (In)
+ std::istringstream in(std::string(buffer, length), std::ios_base::binary);
+ while (in)
{
// Try to extract the code
- unsigned int Code;
- if (In >> Code)
+ unsigned int code;
+ if (in >> code)
{
// Extract the separator
- char Sep;
- In.get(Sep);
+ char separator;
+ in.get(separator);
// The '-' character means a multiline response
- if ((Sep == '-') && !IsInsideMultiline)
+ if ((separator == '-') && !isInsideMultiline)
{
// Set the multiline flag
- IsInsideMultiline = true;
+ isInsideMultiline = true;
// Keep track of the code
- if (LastCode == 0)
- LastCode = Code;
+ if (lastCode == 0)
+ lastCode = code;
// Extract the line
- std::getline(In, Message);
+ std::getline(in, message);
// Remove the ending '\r' (all lines are terminated by "\r\n")
- Message.erase(Message.length() - 1);
- Message = Sep + Message + "\n";
+ message.erase(message.length() - 1);
+ message = separator + message + "\n";
}
else
{
// We must make sure that the code is the same, otherwise it means
// we haven't reached the end of the multiline response
- if ((Sep != '-') && ((Code == LastCode) || (LastCode == 0)))
+ if ((separator != '-') && ((code == lastCode) || (lastCode == 0)))
{
// Clear the multiline flag
- IsInsideMultiline = false;
+ isInsideMultiline = false;
// Extract the line
- std::string Line;
- std::getline(In, Line);
+ std::string line;
+ std::getline(in, line);
// Remove the ending '\r' (all lines are terminated by "\r\n")
- Line.erase(Line.length() - 1);
+ line.erase(line.length() - 1);
// Append it to the message
- if (Code == LastCode)
+ if (code == lastCode)
{
- std::ostringstream Out;
- Out << Code << Sep << Line;
- Message += Out.str();
+ std::ostringstream out;
+ out << code << separator << line;
+ message += out.str();
}
else
{
- Message = Sep + Line;
+ message = separator + line;
}
// Return the response code and message
- return Response(static_cast<Response::Status>(Code), Message);
+ return Response(static_cast<Response::Status>(code), message);
}
else
{
@@ -546,40 +468,40 @@ Ftp::Response Ftp::GetResponse()
// only a new part of the current multiline response
// Extract the line
- std::string Line;
- std::getline(In, Line);
+ std::string line;
+ std::getline(in, line);
- if (!Line.empty())
+ if (!line.empty())
{
// Remove the ending '\r' (all lines are terminated by "\r\n")
- Line.erase(Line.length() - 1);
+ line.erase(line.length() - 1);
// Append it to the current message
- std::ostringstream Out;
- Out << Code << Sep << Line << "\n";
- Message += Out.str();
+ std::ostringstream out;
+ out << code << separator << line << "\n";
+ message += out.str();
}
}
}
}
- else if (LastCode != 0)
+ else if (lastCode != 0)
{
// It seems we are in the middle of a multiline response
// Clear the error bits of the stream
- In.clear();
+ in.clear();
// Extract the line
- std::string Line;
- std::getline(In, Line);
+ std::string line;
+ std::getline(in, line);
- if (!Line.empty())
+ if (!line.empty())
{
// Remove the ending '\r' (all lines are terminated by "\r\n")
- Line.erase(Line.length() - 1);
+ line.erase(line.length() - 1);
// Append it to the current message
- Message += Line + "\n";
+ message += line + "\n";
}
}
else
@@ -595,118 +517,100 @@ Ftp::Response Ftp::GetResponse()
////////////////////////////////////////////////////////////
-/// Constructor
-////////////////////////////////////////////////////////////
-Ftp::DataChannel::DataChannel(Ftp& Owner) :
-myFtp(Owner)
+Ftp::DataChannel::DataChannel(Ftp& owner) :
+m_ftp(owner)
{
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-Ftp::DataChannel::~DataChannel()
-{
- // Close the data socket
- myDataSocket.Close();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Open the data channel using the specified mode and port
-////////////////////////////////////////////////////////////
-Ftp::Response Ftp::DataChannel::Open(Ftp::TransferMode Mode)
+Ftp::Response Ftp::DataChannel::open(Ftp::TransferMode mode)
{
// Open a data connection in active mode (we connect to the server)
- Ftp::Response Resp = myFtp.SendCommand("PASV");
- if (Resp.IsOk())
+ Ftp::Response response = m_ftp.sendCommand("PASV");
+ if (response.isOk())
{
// Extract the connection address and port from the response
- std::string::size_type begin = Resp.GetMessage().find_first_of("0123456789");
+ std::string::size_type begin = response.getMessage().find_first_of("0123456789");
if (begin != std::string::npos)
{
- sf::Uint8 Data[6] = {0, 0, 0, 0, 0, 0};
- std::string Str = Resp.GetMessage().substr(begin);
- std::size_t Index = 0;
+ Uint8 data[6] = {0, 0, 0, 0, 0, 0};
+ std::string str = response.getMessage().substr(begin);
+ std::size_t index = 0;
for (int i = 0; i < 6; ++i)
{
// Extract the current number
- while (isdigit(Str[Index]))
+ while (isdigit(str[index]))
{
- Data[i] = Data[i] * 10 + (Str[Index] - '0');
- Index++;
+ data[i] = data[i] * 10 + (str[index] - '0');
+ index++;
}
// Skip separator
- Index++;
+ index++;
}
// Reconstruct connection port and address
- unsigned short Port = Data[4] * 256 + Data[5];
- sf::IPAddress Address(static_cast<sf::Uint8>(Data[0]),
- static_cast<sf::Uint8>(Data[1]),
- static_cast<sf::Uint8>(Data[2]),
- static_cast<sf::Uint8>(Data[3]));
+ unsigned short port = data[4] * 256 + data[5];
+ IpAddress address(static_cast<Uint8>(data[0]),
+ static_cast<Uint8>(data[1]),
+ static_cast<Uint8>(data[2]),
+ static_cast<Uint8>(data[3]));
// Connect the data channel to the server
- if (myDataSocket.Connect(Port, Address) == Socket::Done)
+ if (m_dataSocket.connect(address, port) == Socket::Done)
{
// Translate the transfer mode to the corresponding FTP parameter
- std::string ModeStr;
- switch (Mode)
+ std::string modeStr;
+ switch (mode)
{
- case Ftp::Binary : ModeStr = "I"; break;
- case Ftp::Ascii : ModeStr = "A"; break;
- case Ftp::Ebcdic : ModeStr = "E"; break;
+ case Ftp::Binary : modeStr = "I"; break;
+ case Ftp::Ascii : modeStr = "A"; break;
+ case Ftp::Ebcdic : modeStr = "E"; break;
}
// Set the transfer mode
- Resp = myFtp.SendCommand("TYPE", ModeStr);
+ response = m_ftp.sendCommand("TYPE", modeStr);
}
else
{
// Failed to connect to the server
- Resp = Ftp::Response(Ftp::Response::ConnectionFailed);
+ response = Ftp::Response(Ftp::Response::ConnectionFailed);
}
}
}
- return Resp;
+ return response;
}
////////////////////////////////////////////////////////////
-/// Receive data on the data channel until it is closed
-////////////////////////////////////////////////////////////
-void Ftp::DataChannel::Receive(std::vector<char>& Data)
+void Ftp::DataChannel::receive(std::vector<char>& data)
{
// Receive data
- Data.clear();
- char Buffer[1024];
- std::size_t Received;
- while (myDataSocket.Receive(Buffer, sizeof(Buffer), Received) == sf::Socket::Done)
+ data.clear();
+ char buffer[1024];
+ std::size_t received;
+ while (m_dataSocket.receive(buffer, sizeof(buffer), received) == Socket::Done)
{
- std::copy(Buffer, Buffer + Received, std::back_inserter(Data));
+ std::copy(buffer, buffer + received, std::back_inserter(data));
}
// Close the data socket
- myDataSocket.Close();
+ m_dataSocket.disconnect();
}
////////////////////////////////////////////////////////////
-/// Send data on the data channel
-////////////////////////////////////////////////////////////
-void Ftp::DataChannel::Send(const std::vector<char>& Data)
+void Ftp::DataChannel::send(const std::vector<char>& data)
{
// Send data
- if (!Data.empty())
- myDataSocket.Send(&Data[0], Data.size());
+ if (!data.empty())
+ m_dataSocket.send(&data[0], data.size());
// Close the data socket
- myDataSocket.Close();
+ m_dataSocket.disconnect();
}
} // namespace sf
diff --git a/src/SFML/Network/Http.cpp b/src/SFML/Network/Http.cpp
index 4a9502f..5b7f62c 100755..100644
--- a/src/SFML/Network/Http.cpp
+++ b/src/SFML/Network/Http.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,7 +26,7 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Network/Http.hpp>
-#include <ctype.h>
+#include <cctype>
#include <algorithm>
#include <iterator>
#include <sstream>
@@ -34,16 +34,12 @@
namespace
{
- ////////////////////////////////////////////////////////////
- // Convenience function to convert a string to lower case
- ////////////////////////////////////////////////////////////
- std::string ToLower(const std::string& Str)
+ // Convert a string to lower case
+ std::string toLower(std::string str)
{
- std::string Ret = Str;
- for (std::string::iterator i = Ret.begin(); i != Ret.end(); ++i)
- *i = static_cast<char>(tolower(*i));
-
- return Ret;
+ for (std::string::iterator i = str.begin(); i != str.end(); ++i)
+ *i = static_cast<char>(std::tolower(*i));
+ return str;
}
}
@@ -51,382 +47,330 @@ namespace
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Http::Request::Request(Method RequestMethod, const std::string& URI, const std::string& Body)
+Http::Request::Request(const std::string& uri, Method method, const std::string& body)
{
- SetMethod(RequestMethod);
- SetURI(URI);
- SetHttpVersion(1, 0);
- SetBody(Body);
+ setMethod(method);
+ setUri(uri);
+ setHttpVersion(1, 0);
+ setBody(body);
}
////////////////////////////////////////////////////////////
-/// Set the value of a field; the field is added if it doesn't exist
-////////////////////////////////////////////////////////////
-void Http::Request::SetField(const std::string& Field, const std::string& Value)
+void Http::Request::setField(const std::string& field, const std::string& value)
{
- myFields[ToLower(Field)] = Value;
+ m_fields[toLower(field)] = value;
}
////////////////////////////////////////////////////////////
-/// Set the request method.
-/// This parameter is Get by default
-////////////////////////////////////////////////////////////
-void Http::Request::SetMethod(Http::Request::Method RequestMethod)
+void Http::Request::setMethod(Http::Request::Method method)
{
- myMethod = RequestMethod;
+ m_method = method;
}
////////////////////////////////////////////////////////////
-/// Set the target URI of the request.
-/// This parameter is "/" by default
-////////////////////////////////////////////////////////////
-void Http::Request::SetURI(const std::string& URI)
+void Http::Request::setUri(const std::string& uri)
{
- myURI = URI;
+ m_uri = uri;
// Make sure it starts with a '/'
- if (myURI.empty() || (myURI[0] != '/'))
- myURI.insert(0, "/");
+ if (m_uri.empty() || (m_uri[0] != '/'))
+ m_uri.insert(0, "/");
}
////////////////////////////////////////////////////////////
-/// Set the HTTP version of the request.
-/// This parameter is 1.0 by default
-////////////////////////////////////////////////////////////
-void Http::Request::SetHttpVersion(unsigned int Major, unsigned int Minor)
+void Http::Request::setHttpVersion(unsigned int major, unsigned int minor)
{
- myMajorVersion = Major;
- myMinorVersion = Minor;
+ m_majorVersion = major;
+ m_minorVersion = minor;
}
////////////////////////////////////////////////////////////
-/// Set the body of the request. This parameter is optional and
-/// makes sense only for POST requests.
-/// This parameter is empty by default
-////////////////////////////////////////////////////////////
-void Http::Request::SetBody(const std::string& Body)
+void Http::Request::setBody(const std::string& body)
{
- myBody = Body;
+ m_body = body;
}
////////////////////////////////////////////////////////////
-/// Get the string representation of a request header
-////////////////////////////////////////////////////////////
-std::string Http::Request::ToString() const
+std::string Http::Request::prepare() const
{
- std::ostringstream Out;
+ std::ostringstream out;
// Convert the method to its string representation
- std::string RequestMethod;
- switch (myMethod)
+ std::string method;
+ switch (m_method)
{
default :
- case Get : RequestMethod = "GET"; break;
- case Post : RequestMethod = "POST"; break;
- case Head : RequestMethod = "HEAD"; break;
+ case Get : method = "GET"; break;
+ case Post : method = "POST"; break;
+ case Head : method = "HEAD"; break;
}
// Write the first line containing the request type
- Out << RequestMethod << " " << myURI << " ";
- Out << "HTTP/" << myMajorVersion << "." << myMinorVersion << "\r\n";
+ out << method << " " << m_uri << " ";
+ out << "HTTP/" << m_majorVersion << "." << m_minorVersion << "\r\n";
// Write fields
- for (FieldTable::const_iterator i = myFields.begin(); i != myFields.end(); ++i)
+ for (FieldTable::const_iterator i = m_fields.begin(); i != m_fields.end(); ++i)
{
- Out << i->first << ": " << i->second << "\r\n";
+ out << i->first << ": " << i->second << "\r\n";
}
// Use an extra \r\n to separate the header from the body
- Out << "\r\n";
+ out << "\r\n";
// Add the body
- Out << myBody;
+ out << m_body;
- return Out.str();
+ return out.str();
}
////////////////////////////////////////////////////////////
-/// Check if the given field has been defined
-////////////////////////////////////////////////////////////
-bool Http::Request::HasField(const std::string& Field) const
+bool Http::Request::hasField(const std::string& field) const
{
- return myFields.find(Field) != myFields.end();
+ return m_fields.find(toLower(field)) != m_fields.end();
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Http::Response::Response() :
-myStatus (ConnectionFailed),
-myMajorVersion(0),
-myMinorVersion(0)
+m_status (ConnectionFailed),
+m_majorVersion(0),
+m_minorVersion(0)
{
}
////////////////////////////////////////////////////////////
-/// Get the value of a field
-////////////////////////////////////////////////////////////
-const std::string& Http::Response::GetField(const std::string& Field) const
+const std::string& Http::Response::getField(const std::string& field) const
{
- FieldTable::const_iterator It = myFields.find(ToLower(Field));
- if (It != myFields.end())
+ FieldTable::const_iterator it = m_fields.find(toLower(field));
+ if (it != m_fields.end())
{
- return It->second;
+ return it->second;
}
else
{
- static const std::string Empty = "";
- return Empty;
+ static const std::string empty = "";
+ return empty;
}
}
////////////////////////////////////////////////////////////
-/// Get the header's status code
-////////////////////////////////////////////////////////////
-Http::Response::Status Http::Response::GetStatus() const
+Http::Response::Status Http::Response::getStatus() const
{
- return myStatus;
+ return m_status;
}
////////////////////////////////////////////////////////////
-/// Get the major HTTP version number of the response
-////////////////////////////////////////////////////////////
-unsigned int Http::Response::GetMajorHttpVersion() const
+unsigned int Http::Response::getMajorHttpVersion() const
{
- return myMajorVersion;
+ return m_majorVersion;
}
////////////////////////////////////////////////////////////
-/// Get the major HTTP version number of the response
-////////////////////////////////////////////////////////////
-unsigned int Http::Response::GetMinorHttpVersion() const
+unsigned int Http::Response::getMinorHttpVersion() const
{
- return myMinorVersion;
+ return m_minorVersion;
}
////////////////////////////////////////////////////////////
-/// Get the body of the response. The body can contain :
-/// - the requested page (for GET requests)
-/// - a response from the server (for POST requests)
-/// - nothing (for HEAD requests)
-/// - an error message (in case of an error)
-////////////////////////////////////////////////////////////
-const std::string& Http::Response::GetBody() const
+const std::string& Http::Response::getBody() const
{
- return myBody;
+ return m_body;
}
////////////////////////////////////////////////////////////
-/// Construct the header from a response string
-////////////////////////////////////////////////////////////
-void Http::Response::FromString(const std::string& Data)
+void Http::Response::parse(const std::string& data)
{
- std::istringstream In(Data);
+ std::istringstream in(data);
// Extract the HTTP version from the first line
- std::string Version;
- if (In >> Version)
+ std::string version;
+ if (in >> version)
{
- if ((Version.size() >= 8) && (Version[6] == '.') &&
- (ToLower(Version.substr(0, 5)) == "http/") &&
- isdigit(Version[5]) && isdigit(Version[7]))
+ if ((version.size() >= 8) && (version[6] == '.') &&
+ (toLower(version.substr(0, 5)) == "http/") &&
+ isdigit(version[5]) && isdigit(version[7]))
{
- myMajorVersion = Version[5] - '0';
- myMinorVersion = Version[7] - '0';
+ m_majorVersion = version[5] - '0';
+ m_minorVersion = version[7] - '0';
}
else
{
// Invalid HTTP version
- myStatus = InvalidResponse;
+ m_status = InvalidResponse;
return;
}
}
// Extract the status code from the first line
- int StatusCode;
- if (In >> StatusCode)
+ int status;
+ if (in >> status)
{
- myStatus = static_cast<Status>(StatusCode);
+ m_status = static_cast<Status>(status);
}
else
{
// Invalid status code
- myStatus = InvalidResponse;
+ m_status = InvalidResponse;
return;
}
// Ignore the end of the first line
- In.ignore(10000, '\n');
+ in.ignore(10000, '\n');
// Parse the other lines, which contain fields, one by one
- std::string Line;
- while (std::getline(In, Line) && (Line.size() > 2))
+ std::string line;
+ while (std::getline(in, line) && (line.size() > 2))
{
- std::string::size_type Pos = Line.find(": ");
- if (Pos != std::string::npos)
+ std::string::size_type pos = line.find(": ");
+ if (pos != std::string::npos)
{
// Extract the field name and its value
- std::string Field = Line.substr(0, Pos);
- std::string Value = Line.substr(Pos + 2);
+ std::string field = line.substr(0, pos);
+ std::string value = line.substr(pos + 2);
// Remove any trailing \r
- if (!Value.empty() && (*Value.rbegin() == '\r'))
- Value.erase(Value.size() - 1);
+ if (!value.empty() && (*value.rbegin() == '\r'))
+ value.erase(value.size() - 1);
// Add the field
- myFields[ToLower(Field)] = Value;
+ m_fields[toLower(field)] = value;
}
}
// Finally extract the body
- myBody.clear();
- std::copy(std::istreambuf_iterator<char>(In), std::istreambuf_iterator<char>(), std::back_inserter(myBody));
+ m_body.clear();
+ std::copy(std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>(), std::back_inserter(m_body));
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Http::Http() :
-myHost(),
-myPort(0)
+m_host(),
+m_port(0)
{
}
////////////////////////////////////////////////////////////
-/// Construct the Http instance with the target host
-////////////////////////////////////////////////////////////
-Http::Http(const std::string& Host, unsigned short Port)
+Http::Http(const std::string& host, unsigned short port)
{
- SetHost(Host, Port);
+ setHost(host, port);
}
////////////////////////////////////////////////////////////
-/// Set the target host
-////////////////////////////////////////////////////////////
-void Http::SetHost(const std::string& Host, unsigned short Port)
+void Http::setHost(const std::string& host, unsigned short port)
{
// Detect the protocol used
- std::string Protocol = ToLower(Host.substr(0, 8));
- if (Protocol.substr(0, 7) == "http://")
+ std::string protocol = toLower(host.substr(0, 8));
+ if (protocol.substr(0, 7) == "http://")
{
// HTTP protocol
- myHostName = Host.substr(7);
- myPort = (Port != 0 ? Port : 80);
+ m_hostName = host.substr(7);
+ m_port = (port != 0 ? port : 80);
}
- else if (Protocol == "https://")
+ else if (protocol == "https://")
{
// HTTPS protocol
- myHostName = Host.substr(8);
- myPort = (Port != 0 ? Port : 443);
+ m_hostName = host.substr(8);
+ m_port = (port != 0 ? port : 443);
}
else
{
// Undefined protocol - use HTTP
- myHostName = Host;
- myPort = (Port != 0 ? Port : 80);
+ m_hostName = host;
+ m_port = (port != 0 ? port : 80);
}
// Remove any trailing '/' from the host name
- if (!myHostName.empty() && (*myHostName.rbegin() == '/'))
- myHostName.erase(myHostName.size() - 1);
+ if (!m_hostName.empty() && (*m_hostName.rbegin() == '/'))
+ m_hostName.erase(m_hostName.size() - 1);
- myHost = sf::IPAddress(myHostName);
+ m_host = IpAddress(m_hostName);
}
////////////////////////////////////////////////////////////
-/// Send a HTTP request and return the server's response.
-/// You must be connected to a host before sending requests.
-/// Any missing mandatory header field will be added with an appropriate value.
-/// Warning : this function waits for the server's response and may
-/// not return instantly; use a thread if you don't want to block your
-/// application.
-////////////////////////////////////////////////////////////
-Http::Response Http::SendRequest(const Http::Request& Req, float Timeout)
+Http::Response Http::sendRequest(const Http::Request& request, Time timeout)
{
- // First make sure the request is valid -- add missing mandatory fields
- Request ToSend(Req);
- if (!ToSend.HasField("From"))
+ // First make sure that the request is valid -- add missing mandatory fields
+ Request toSend(request);
+ if (!toSend.hasField("From"))
{
- ToSend.SetField("From", "user@sfml-dev.org");
+ toSend.setField("From", "user@sfml-dev.org");
}
- if (!ToSend.HasField("User-Agent"))
+ if (!toSend.hasField("User-Agent"))
{
- ToSend.SetField("User-Agent", "libsfml-network/1.x");
+ toSend.setField("User-Agent", "libsfml-network/2.x");
}
- if (!ToSend.HasField("Host"))
+ if (!toSend.hasField("Host"))
{
- ToSend.SetField("Host", myHostName);
+ toSend.setField("Host", m_hostName);
}
- if (!ToSend.HasField("Content-Length"))
+ if (!toSend.hasField("Content-Length"))
{
- std::ostringstream Out;
- Out << ToSend.myBody.size();
- ToSend.SetField("Content-Length", Out.str());
+ std::ostringstream out;
+ out << toSend.m_body.size();
+ toSend.setField("Content-Length", out.str());
}
- if ((ToSend.myMethod == Request::Post) && !ToSend.HasField("Content-Type"))
+ if ((toSend.m_method == Request::Post) && !toSend.hasField("Content-Type"))
{
- ToSend.SetField("Content-Type", "application/x-www-form-urlencoded");
+ toSend.setField("Content-Type", "application/x-www-form-urlencoded");
}
- if ((ToSend.myMajorVersion * 10 + ToSend.myMinorVersion >= 11) && !ToSend.HasField("Connection"))
+ if ((toSend.m_majorVersion * 10 + toSend.m_minorVersion >= 11) && !toSend.hasField("Connection"))
{
- ToSend.SetField("Connection", "close");
+ toSend.setField("Connection", "close");
}
// Prepare the response
- Response Received;
+ Response received;
// Connect the socket to the host
- if (myConnection.Connect(myPort, myHost, Timeout) == Socket::Done)
+ if (m_connection.connect(m_host, m_port, timeout) == Socket::Done)
{
// Convert the request to string and send it through the connected socket
- std::string RequestStr = ToSend.ToString();
+ std::string requestStr = toSend.prepare();
- if (!RequestStr.empty())
+ if (!requestStr.empty())
{
// Send it through the socket
- if (myConnection.Send(RequestStr.c_str(), RequestStr.size()) == sf::Socket::Done)
+ if (m_connection.send(requestStr.c_str(), requestStr.size()) == Socket::Done)
{
// Wait for the server's response
- std::string ReceivedStr;
- std::size_t Size = 0;
- char Buffer[1024];
- while (myConnection.Receive(Buffer, sizeof(Buffer), Size) == sf::Socket::Done)
+ std::string receivedStr;
+ std::size_t size = 0;
+ char buffer[1024];
+ while (m_connection.receive(buffer, sizeof(buffer), size) == Socket::Done)
{
- ReceivedStr.append(Buffer, Buffer + Size);
+ receivedStr.append(buffer, buffer + size);
}
// Build the Response object from the received data
- Received.FromString(ReceivedStr);
+ received.parse(receivedStr);
}
}
// Close the connection
- myConnection.Close();
+ m_connection.disconnect();
}
- return Received;
+ return received;
}
} // namespace sf
diff --git a/src/SFML/Network/IPAddress.cpp b/src/SFML/Network/IPAddress.cpp
deleted file mode 100755
index 9d51f24..0000000
--- a/src/SFML/Network/IPAddress.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/IPAddress.hpp>
-#include <SFML/Network/Http.hpp>
-#include <SFML/Network/SocketHelper.hpp>
-#include <string.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Static member data
-////////////////////////////////////////////////////////////
-const IPAddress IPAddress::LocalHost("127.0.0.1");
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-IPAddress::IPAddress() :
-myAddress(INADDR_NONE)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the address from a string
-////////////////////////////////////////////////////////////
-IPAddress::IPAddress(const std::string& Address)
-{
- // First try to convert it as a byte representation ("xxx.xxx.xxx.xxx")
- myAddress = inet_addr(Address.c_str());
-
- // If not successful, try to convert it as a host name
- if (!IsValid())
- {
- hostent* Host = gethostbyname(Address.c_str());
- if (Host)
- {
- // Host found, extract its IP address
- myAddress = reinterpret_cast<in_addr*>(Host->h_addr)->s_addr;
- }
- else
- {
- // Host name not found on the network
- myAddress = INADDR_NONE;
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the address from a C-style string ;
-/// Needed for implicit conversions from literal strings to IPAddress to work
-////////////////////////////////////////////////////////////
-IPAddress::IPAddress(const char* Address)
-{
- // First try to convert it as a byte representation ("xxx.xxx.xxx.xxx")
- myAddress = inet_addr(Address);
-
- // If not successful, try to convert it as a host name
- if (!IsValid())
- {
- hostent* Host = gethostbyname(Address);
- if (Host)
- {
- // Host found, extract its IP address
- myAddress = reinterpret_cast<in_addr*>(Host->h_addr)->s_addr;
- }
- else
- {
- // Host name not found on the network
- myAddress = INADDR_NONE;
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the address from 4 bytes
-////////////////////////////////////////////////////////////
-IPAddress::IPAddress(Uint8 Byte0, Uint8 Byte1, Uint8 Byte2, Uint8 Byte3)
-{
- myAddress = htonl((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the address from a 32-bits integer
-////////////////////////////////////////////////////////////
-IPAddress::IPAddress(Uint32 Address)
-{
- myAddress = htonl(Address);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Tell if the address is a valid one
-////////////////////////////////////////////////////////////
-bool IPAddress::IsValid() const
-{
- return myAddress != INADDR_NONE;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a string representation of the address
-////////////////////////////////////////////////////////////
-std::string IPAddress::ToString() const
-{
- in_addr InAddr;
- InAddr.s_addr = myAddress;
-
- return inet_ntoa(InAddr);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get an integer representation of the address
-////////////////////////////////////////////////////////////
-Uint32 IPAddress::ToInteger() const
-{
- return ntohl(myAddress);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the computer's local IP address (from the LAN point of view)
-////////////////////////////////////////////////////////////
-IPAddress IPAddress::GetLocalAddress()
-{
- // The method here is to connect a UDP socket to anyone (here to localhost),
- // and get the local socket address with the getsockname function.
- // UDP connection will not send anything to the network, so this function won't cause any overhead.
-
- IPAddress LocalAddress;
-
- // Create the socket
- SocketHelper::SocketType Socket = socket(PF_INET, SOCK_DGRAM, 0);
- if (Socket == SocketHelper::InvalidSocket())
- return LocalAddress;
-
- // Build the host address (use a random port)
- sockaddr_in SockAddr;
- memset(SockAddr.sin_zero, 0, sizeof(SockAddr.sin_zero));
- SockAddr.sin_addr.s_addr = INADDR_LOOPBACK;
- SockAddr.sin_family = AF_INET;
- SockAddr.sin_port = htons(4567);
-
- // Connect the socket
- if (connect(Socket, reinterpret_cast<sockaddr*>(&SockAddr), sizeof(SockAddr)) == -1)
- {
- SocketHelper::Close(Socket);
- return LocalAddress;
- }
-
- // Get the local address of the socket connection
- SocketHelper::LengthType Size = sizeof(SockAddr);
- if (getsockname(Socket, reinterpret_cast<sockaddr*>(&SockAddr), &Size) == -1)
- {
- SocketHelper::Close(Socket);
- return LocalAddress;
- }
-
- // Close the socket
- SocketHelper::Close(Socket);
-
- // Finally build the IP address
- LocalAddress.myAddress = SockAddr.sin_addr.s_addr;
-
- return LocalAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the computer's public IP address (from the web point of view)
-////////////////////////////////////////////////////////////
-IPAddress IPAddress::GetPublicAddress(float Timeout)
-{
- // The trick here is more complicated, because the only way
- // to get our public IP address is to get it from a distant computer.
- // Here we get the web page from http://www.sfml-dev.org/ip-provider.php
- // and parse the result to extract our IP address
- // (not very hard : the web page contains only our IP address).
-
- Http Server("www.sfml-dev.org");
- Http::Request Request(Http::Request::Get, "/ip-provider.php");
- Http::Response Page = Server.SendRequest(Request, Timeout);
- if (Page.GetStatus() == Http::Response::Ok)
- return IPAddress(Page.GetBody());
-
- // Something failed: return an invalid address
- return IPAddress();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator ==
-////////////////////////////////////////////////////////////
-bool IPAddress::operator ==(const IPAddress& Other) const
-{
- return myAddress == Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator !=
-////////////////////////////////////////////////////////////
-bool IPAddress::operator !=(const IPAddress& Other) const
-{
- return myAddress != Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator <
-////////////////////////////////////////////////////////////
-bool IPAddress::operator <(const IPAddress& Other) const
-{
- return myAddress < Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator >
-////////////////////////////////////////////////////////////
-bool IPAddress::operator >(const IPAddress& Other) const
-{
- return myAddress > Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator <=
-////////////////////////////////////////////////////////////
-bool IPAddress::operator <=(const IPAddress& Other) const
-{
- return myAddress <= Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator >=
-////////////////////////////////////////////////////////////
-bool IPAddress::operator >=(const IPAddress& Other) const
-{
- return myAddress >= Other.myAddress;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator >> overload to extract an address from an input stream
-////////////////////////////////////////////////////////////
-std::istream& operator >>(std::istream& Stream, IPAddress& Address)
-{
- std::string Str;
- Stream >> Str;
- Address = IPAddress(Str);
-
- return Stream;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator << overload to print an address to an output stream
-////////////////////////////////////////////////////////////
-std::ostream& operator <<(std::ostream& Stream, const IPAddress& Address)
-{
- return Stream << Address.ToString();
-}
-
-} // namespace sf
diff --git a/src/SFML/Network/IpAddress.cpp b/src/SFML/Network/IpAddress.cpp
new file mode 100644
index 0000000..c4efaba
--- /dev/null
+++ b/src/SFML/Network/IpAddress.cpp
@@ -0,0 +1,255 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/IpAddress.hpp>
+#include <SFML/Network/Http.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <cstring>
+
+
+namespace
+{
+ sf::Uint32 resolve(const std::string& address)
+ {
+ if (address == "255.255.255.255")
+ {
+ // The broadcast address needs to be handled explicitely,
+ // because it is also the value returned by inet_addr on error
+ return INADDR_BROADCAST;
+ }
+ else
+ {
+ // Try to convert the address as a byte representation ("xxx.xxx.xxx.xxx")
+ sf::Uint32 ip = inet_addr(address.c_str());
+ if (ip != INADDR_NONE)
+ return ip;
+
+ // Not a valid address, try to convert it as a host name
+ addrinfo hints;
+ std::memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_INET;
+ addrinfo* result = NULL;
+ if (getaddrinfo(address.c_str(), NULL, &hints, &result) == 0)
+ {
+ if (result)
+ {
+ ip = reinterpret_cast<sockaddr_in*>(result->ai_addr)->sin_addr.s_addr;
+ freeaddrinfo(result);
+ return ip;
+ }
+ }
+
+ // Not a valid address nor a host name
+ return 0;
+ }
+ }
+}
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+const IpAddress IpAddress::None;
+const IpAddress IpAddress::LocalHost(127, 0, 0, 1);
+const IpAddress IpAddress::Broadcast(255, 255, 255, 255);
+
+
+////////////////////////////////////////////////////////////
+IpAddress::IpAddress() :
+m_address(0)
+{
+ // We're using 0 (INADDR_ANY) instead of INADDR_NONE to represent the invalid address,
+ // because the latter is also the broadcast address (255.255.255.255); it's ok because
+ // SFML doesn't publicly use INADDR_ANY (it is always used implicitely)
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress::IpAddress(const std::string& address) :
+m_address(resolve(address))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress::IpAddress(const char* address) :
+m_address(resolve(address))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress::IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3) :
+m_address(htonl((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress::IpAddress(Uint32 address) :
+m_address(htonl(address))
+{
+}
+
+
+////////////////////////////////////////////////////////////
+std::string IpAddress::toString() const
+{
+ in_addr address;
+ address.s_addr = m_address;
+
+ return inet_ntoa(address);
+}
+
+
+////////////////////////////////////////////////////////////
+Uint32 IpAddress::toInteger() const
+{
+ return ntohl(m_address);
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress IpAddress::getLocalAddress()
+{
+ // The method here is to connect a UDP socket to anyone (here to localhost),
+ // and get the local socket address with the getsockname function.
+ // UDP connection will not send anything to the network, so this function won't cause any overhead.
+
+ IpAddress localAddress;
+
+ // Create the socket
+ SocketHandle sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock == priv::SocketImpl::invalidSocket())
+ return localAddress;
+
+ // Connect the socket to localhost on any port
+ sockaddr_in address = priv::SocketImpl::createAddress(ntohl(INADDR_LOOPBACK), 0);
+ if (connect(sock, reinterpret_cast<sockaddr*>(&address), sizeof(address)) == -1)
+ {
+ priv::SocketImpl::close(sock);
+ return localAddress;
+ }
+
+ // Get the local address of the socket connection
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getsockname(sock, reinterpret_cast<sockaddr*>(&address), &size) == -1)
+ {
+ priv::SocketImpl::close(sock);
+ return localAddress;
+ }
+
+ // Close the socket
+ priv::SocketImpl::close(sock);
+
+ // Finally build the IP address
+ localAddress = IpAddress(ntohl(address.sin_addr.s_addr));
+
+ return localAddress;
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress IpAddress::getPublicAddress(Time timeout)
+{
+ // The trick here is more complicated, because the only way
+ // to get our public IP address is to get it from a distant computer.
+ // Here we get the web page from http://www.sfml-dev.org/ip-provider.php
+ // and parse the result to extract our IP address
+ // (not very hard: the web page contains only our IP address).
+
+ Http server("www.sfml-dev.org");
+ Http::Request request("/ip-provider.php", Http::Request::Get);
+ Http::Response page = server.sendRequest(request, timeout);
+ if (page.getStatus() == Http::Response::Ok)
+ return IpAddress(page.getBody());
+
+ // Something failed: return an invalid address
+ return IpAddress();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator ==(const IpAddress& left, const IpAddress& right)
+{
+ return left.toInteger() == right.toInteger();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator !=(const IpAddress& left, const IpAddress& right)
+{
+ return !(left == right);
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <(const IpAddress& left, const IpAddress& right)
+{
+ return left.toInteger() < right.toInteger();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >(const IpAddress& left, const IpAddress& right)
+{
+ return right < left;
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <=(const IpAddress& left, const IpAddress& right)
+{
+ return !(right < left);
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >=(const IpAddress& left, const IpAddress& right)
+{
+ return !(left < right);
+}
+
+
+////////////////////////////////////////////////////////////
+std::istream& operator >>(std::istream& stream, IpAddress& address)
+{
+ std::string str;
+ stream >> str;
+ address = IpAddress(str);
+
+ return stream;
+}
+
+
+////////////////////////////////////////////////////////////
+std::ostream& operator <<(std::ostream& stream, const IpAddress& address)
+{
+ return stream << address.toString();
+}
+
+} // namespace sf
diff --git a/src/SFML/Network/Makefile b/src/SFML/Network/Makefile
deleted file mode 100755
index 62fb673..0000000
--- a/src/SFML/Network/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-SRC = $(wildcard *.cpp ./Unix/*.cpp)
-OBJ = $(SRC:.cpp=.o)
-
-ifeq ($(STATIC), yes)
- LIB = libsfml-network-s.a
- LIBNAME = $(LIBPATH)/$(LIB)
- INSTALL =
-else
- LIB = libsfml-network.so
- LIBNAME = $(LIBPATH)/$(LIB).$(VERSION)
- INSTALL = && $(LN) $(LNFLAGS) $(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)
-endif
-
-all: $(LIB)
-
-libsfml-network-s.a: $(OBJ)
- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ)
-
-libsfml-network.so: $(OBJ)
- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ)
-
-$(OBJ): %.o: %.cpp
- $(CPP) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf $(OBJ)
-
-mrproper: clean
- @rm -rf $(LIBNAME)
-
-install:
- @($(CP) $(LIBNAME) $(DESTLIBDIR) $(INSTALL))
diff --git a/src/SFML/Network/Packet.cpp b/src/SFML/Network/Packet.cpp
index 7eaea50..053fa4e 100755..100644
--- a/src/SFML/Network/Packet.cpp
+++ b/src/SFML/Network/Packet.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,26 +26,24 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Network/Packet.hpp>
-#include <SFML/Network/SocketHelper.hpp>
-#include <string.h>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/String.hpp>
+#include <cstring>
+#include <cwchar>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Packet::Packet() :
-myReadPos(0),
-myIsValid(true)
+m_readPos(0),
+m_isValid(true)
{
}
////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
Packet::~Packet()
{
@@ -53,230 +51,250 @@ Packet::~Packet()
////////////////////////////////////////////////////////////
-/// Append data to the end of the packet
-////////////////////////////////////////////////////////////
-void Packet::Append(const void* Data, std::size_t SizeInBytes)
+void Packet::append(const void* data, std::size_t sizeInBytes)
{
- if (Data && (SizeInBytes > 0))
+ if (data && (sizeInBytes > 0))
{
- std::size_t Start = myData.size();
- myData.resize(Start + SizeInBytes);
- memcpy(&myData[Start], Data, SizeInBytes);
+ std::size_t start = m_data.size();
+ m_data.resize(start + sizeInBytes);
+ std::memcpy(&m_data[start], data, sizeInBytes);
}
}
////////////////////////////////////////////////////////////
-/// Clear the packet data
-////////////////////////////////////////////////////////////
-void Packet::Clear()
+void Packet::clear()
{
- myData.clear();
- myReadPos = 0;
- myIsValid = true;
+ m_data.clear();
+ m_readPos = 0;
+ m_isValid = true;
}
////////////////////////////////////////////////////////////
-/// Get a pointer to the data contained in the packet
-/// Warning : the returned pointer may be invalid after you
-/// append data to the packet
-////////////////////////////////////////////////////////////
-const char* Packet::GetData() const
+const void* Packet::getData() const
{
- return !myData.empty() ? &myData[0] : NULL;
+ return !m_data.empty() ? &m_data[0] : NULL;
}
////////////////////////////////////////////////////////////
-/// Get the size of the data contained in the packet
-////////////////////////////////////////////////////////////
-std::size_t Packet::GetDataSize() const
+std::size_t Packet::getDataSize() const
{
- return myData.size();
+ return m_data.size();
}
////////////////////////////////////////////////////////////
-/// Tell if the reading position has reached the end of the packet
-////////////////////////////////////////////////////////////
-bool Packet::EndOfPacket() const
+bool Packet::endOfPacket() const
{
- return myReadPos >= myData.size();
+ return m_readPos >= m_data.size();
}
////////////////////////////////////////////////////////////
-/// Tell if the packet is valid for reading
-////////////////////////////////////////////////////////////
-Packet::operator bool() const
+Packet::operator BoolType() const
{
- return myIsValid;
+ return m_isValid ? &Packet::checkSize : NULL;
}
////////////////////////////////////////////////////////////
-/// Operator >> overloads to extract data from the packet
-////////////////////////////////////////////////////////////
-Packet& Packet::operator >>(bool& Data)
+Packet& Packet::operator >>(bool& data)
{
- Uint8 Value;
- if (*this >> Value)
- Data = (Value != 0);
+ Uint8 value;
+ if (*this >> value)
+ data = (value != 0);
return *this;
}
-Packet& Packet::operator >>(Int8& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Int8& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = *reinterpret_cast<const Int8*>(GetData() + myReadPos);
- myReadPos += sizeof(Data);
+ data = *reinterpret_cast<const Int8*>(&m_data[m_readPos]);
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(Uint8& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Uint8& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = *reinterpret_cast<const Uint8*>(GetData() + myReadPos);
- myReadPos += sizeof(Data);
+ data = *reinterpret_cast<const Uint8*>(&m_data[m_readPos]);
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(Int16& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Int16& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = ntohs(*reinterpret_cast<const Int16*>(GetData() + myReadPos));
- myReadPos += sizeof(Data);
+ data = ntohs(*reinterpret_cast<const Int16*>(&m_data[m_readPos]));
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(Uint16& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Uint16& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = ntohs(*reinterpret_cast<const Uint16*>(GetData() + myReadPos));
- myReadPos += sizeof(Data);
+ data = ntohs(*reinterpret_cast<const Uint16*>(&m_data[m_readPos]));
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(Int32& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Int32& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = ntohl(*reinterpret_cast<const Int32*>(GetData() + myReadPos));
- myReadPos += sizeof(Data);
+ data = ntohl(*reinterpret_cast<const Int32*>(&m_data[m_readPos]));
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(Uint32& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(Uint32& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = ntohl(*reinterpret_cast<const Uint32*>(GetData() + myReadPos));
- myReadPos += sizeof(Data);
+ data = ntohl(*reinterpret_cast<const Uint32*>(&m_data[m_readPos]));
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(float& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(float& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = *reinterpret_cast<const float*>(GetData() + myReadPos);
- myReadPos += sizeof(Data);
+ data = *reinterpret_cast<const float*>(&m_data[m_readPos]);
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(double& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(double& data)
{
- if (CheckSize(sizeof(Data)))
+ if (checkSize(sizeof(data)))
{
- Data = *reinterpret_cast<const double*>(GetData() + myReadPos);
- myReadPos += sizeof(Data);
+ data = *reinterpret_cast<const double*>(&m_data[m_readPos]);
+ m_readPos += sizeof(data);
}
return *this;
}
-Packet& Packet::operator >>(char* Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(char* data)
{
// First extract string length
- Uint32 Length;
- *this >> Length;
+ Uint32 length = 0;
+ *this >> length;
- if ((Length > 0) && CheckSize(Length))
+ if ((length > 0) && checkSize(length))
{
// Then extract characters
- memcpy(Data, GetData() + myReadPos, Length);
- Data[Length] = '\0';
+ std::memcpy(data, &m_data[m_readPos], length);
+ data[length] = '\0';
// Update reading position
- myReadPos += Length;
+ m_readPos += length;
}
return *this;
}
-Packet& Packet::operator >>(std::string& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(std::string& data)
{
// First extract string length
- Uint32 Length;
- *this >> Length;
+ Uint32 length = 0;
+ *this >> length;
- Data.clear();
- if ((Length > 0) && CheckSize(Length))
+ data.clear();
+ if ((length > 0) && checkSize(length))
{
// Then extract characters
- Data.assign(GetData() + myReadPos, Length);
+ data.assign(&m_data[m_readPos], length);
// Update reading position
- myReadPos += Length;
+ m_readPos += length;
}
return *this;
}
-Packet& Packet::operator >>(wchar_t* Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(wchar_t* data)
{
// First extract string length
- Uint32 Length;
- *this >> Length;
+ Uint32 length = 0;
+ *this >> length;
- if ((Length > 0) && CheckSize(Length * sizeof(Int32)))
+ if ((length > 0) && checkSize(length * sizeof(Uint32)))
{
// Then extract characters
- for (Uint32 i = 0; i < Length; ++i)
+ for (Uint32 i = 0; i < length; ++i)
{
- Uint32 c;
- *this >> c;
- Data[i] = static_cast<wchar_t>(c);
+ Uint32 character = 0;
+ *this >> character;
+ data[i] = static_cast<wchar_t>(character);
}
- Data[Length] = L'\0';
+ data[length] = L'\0';
}
return *this;
}
-Packet& Packet::operator >>(std::wstring& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator >>(std::wstring& data)
{
// First extract string length
- Uint32 Length;
- *this >> Length;
+ Uint32 length = 0;
+ *this >> length;
- Data.clear();
- if ((Length > 0) && CheckSize(Length * sizeof(Int32)))
+ data.clear();
+ if ((length > 0) && checkSize(length * sizeof(Uint32)))
{
// Then extract characters
- for (Uint32 i = 0; i < Length; ++i)
+ for (Uint32 i = 0; i < length; ++i)
{
- Uint32 c;
- *this >> c;
- Data += static_cast<wchar_t>(c);
+ Uint32 character = 0;
+ *this >> character;
+ data += static_cast<wchar_t>(character);
}
}
@@ -285,109 +303,160 @@ Packet& Packet::operator >>(std::wstring& Data)
////////////////////////////////////////////////////////////
-/// Operator << overloads to put data into the packet
+Packet& Packet::operator >>(String& data)
+{
+ // First extract the string length
+ Uint32 length = 0;
+ *this >> length;
+
+ data.clear();
+ if ((length > 0) && checkSize(length * sizeof(Uint32)))
+ {
+ // Then extract characters
+ for (Uint32 i = 0; i < length; ++i)
+ {
+ Uint32 character = 0;
+ *this >> character;
+ data += character;
+ }
+ }
+
+ return *this;
+}
+
+
////////////////////////////////////////////////////////////
-Packet& Packet::operator <<(bool Data)
+Packet& Packet::operator <<(bool data)
{
- *this << static_cast<Uint8>(Data);
+ *this << static_cast<Uint8>(data);
return *this;
}
-Packet& Packet::operator <<(Int8 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Int8 data)
{
- Append(&Data, sizeof(Data));
+ append(&data, sizeof(data));
return *this;
}
-Packet& Packet::operator <<(Uint8 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Uint8 data)
{
- Append(&Data, sizeof(Data));
+ append(&data, sizeof(data));
return *this;
}
-Packet& Packet::operator <<(Int16 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Int16 data)
{
- Int16 ToWrite = htons(Data);
- Append(&ToWrite, sizeof(ToWrite));
+ Int16 toWrite = htons(data);
+ append(&toWrite, sizeof(toWrite));
return *this;
}
-Packet& Packet::operator <<(Uint16 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Uint16 data)
{
- Uint16 ToWrite = htons(Data);
- Append(&ToWrite, sizeof(ToWrite));
+ Uint16 toWrite = htons(data);
+ append(&toWrite, sizeof(toWrite));
return *this;
}
-Packet& Packet::operator <<(Int32 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Int32 data)
{
- Int32 ToWrite = htonl(Data);
- Append(&ToWrite, sizeof(ToWrite));
+ Int32 toWrite = htonl(data);
+ append(&toWrite, sizeof(toWrite));
return *this;
}
-Packet& Packet::operator <<(Uint32 Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(Uint32 data)
{
- Uint32 ToWrite = htonl(Data);
- Append(&ToWrite, sizeof(ToWrite));
+ Uint32 toWrite = htonl(data);
+ append(&toWrite, sizeof(toWrite));
return *this;
}
-Packet& Packet::operator <<(float Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(float data)
{
- Append(&Data, sizeof(Data));
+ append(&data, sizeof(data));
return *this;
}
-Packet& Packet::operator <<(double Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(double data)
{
- Append(&Data, sizeof(Data));
+ append(&data, sizeof(data));
return *this;
}
-Packet& Packet::operator <<(const char* Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(const char* data)
{
// First insert string length
- Uint32 Length = 0;
- for (const char* c = Data; *c != '\0'; ++c)
- ++Length;
- *this << Length;
+ Uint32 length = std::strlen(data);
+ *this << length;
// Then insert characters
- Append(Data, Length * sizeof(char));
+ append(data, length * sizeof(char));
return *this;
}
-Packet& Packet::operator <<(const std::string& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(const std::string& data)
{
// First insert string length
- Uint32 Length = static_cast<Uint32>(Data.size());
- *this << Length;
+ Uint32 length = static_cast<Uint32>(data.size());
+ *this << length;
// Then insert characters
- if (Length > 0)
- {
- Append(Data.c_str(), Length * sizeof(std::string::value_type));
- }
+ if (length > 0)
+ append(data.c_str(), length * sizeof(std::string::value_type));
return *this;
}
-Packet& Packet::operator <<(const wchar_t* Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(const wchar_t* data)
{
// First insert string length
- Uint32 Length = 0;
- for (const wchar_t* c = Data; *c != L'\0'; ++c)
- ++Length;
- *this << Length;
+ Uint32 length = std::wcslen(data);
+ *this << length;
// Then insert characters
- for (const wchar_t* c = Data; *c != L'\0'; ++c)
- *this << static_cast<Int32>(*c);
+ for (const wchar_t* c = data; *c != L'\0'; ++c)
+ *this << static_cast<Uint32>(*c);
return *this;
}
-Packet& Packet::operator <<(const std::wstring& Data)
+
+
+////////////////////////////////////////////////////////////
+Packet& Packet::operator <<(const std::wstring& data)
{
// First insert string length
- Uint32 Length = static_cast<Uint32>(Data.size());
- *this << Length;
+ Uint32 length = static_cast<Uint32>(data.size());
+ *this << length;
// Then insert characters
- if (Length > 0)
+ if (length > 0)
{
- for (std::wstring::const_iterator c = Data.begin(); c != Data.end(); ++c)
- *this << static_cast<Int32>(*c);
+ for (std::wstring::const_iterator c = data.begin(); c != data.end(); ++c)
+ *this << static_cast<Uint32>(*c);
}
return *this;
@@ -395,32 +464,44 @@ Packet& Packet::operator <<(const std::wstring& Data)
////////////////////////////////////////////////////////////
-/// Check if the packet can extract a given size of bytes
-////////////////////////////////////////////////////////////
-bool Packet::CheckSize(std::size_t Size)
+Packet& Packet::operator <<(const String& data)
{
- myIsValid = myIsValid && (myReadPos + Size <= myData.size());
+ // First insert the string length
+ Uint32 length = static_cast<Uint32>(data.getSize());
+ *this << length;
- return myIsValid;
+ // Then insert characters
+ if (length > 0)
+ {
+ for (String::ConstIterator c = data.begin(); c != data.end(); ++c)
+ *this << *c;
+ }
+
+ return *this;
}
////////////////////////////////////////////////////////////
-/// Called before the packet is sent to the network
-////////////////////////////////////////////////////////////
-const char* Packet::OnSend(std::size_t& DataSize)
+bool Packet::checkSize(std::size_t size)
{
- DataSize = GetDataSize();
- return GetData();
+ m_isValid = m_isValid && (m_readPos + size <= m_data.size());
+
+ return m_isValid;
}
////////////////////////////////////////////////////////////
-/// Called after the packet has been received from the network
+const void* Packet::onSend(std::size_t& size)
+{
+ size = getDataSize();
+ return getData();
+}
+
+
////////////////////////////////////////////////////////////
-void Packet::OnReceive(const char* Data, std::size_t DataSize)
+void Packet::onReceive(const void* data, std::size_t size)
{
- Append(Data, DataSize);
+ append(data, size);
}
} // namespace sf
diff --git a/src/SFML/Network/SelectorBase.cpp b/src/SFML/Network/SelectorBase.cpp
deleted file mode 100755
index eeca707..0000000
--- a/src/SFML/Network/SelectorBase.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifdef _MSC_VER
- #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro
-#endif
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/SelectorBase.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SelectorBase::SelectorBase() :
-myMaxSocket(0)
-{
- Clear();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Add a socket to watch
-////////////////////////////////////////////////////////////
-void SelectorBase::Add(SocketHelper::SocketType Socket)
-{
- FD_SET(Socket, &mySet);
-
- int Size = static_cast<int>(Socket);
- if (Size > myMaxSocket)
- myMaxSocket = Size;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Remove a socket
-////////////////////////////////////////////////////////////
-void SelectorBase::Remove(SocketHelper::SocketType Socket)
-{
- FD_CLR(Socket, &mySet);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Remove all sockets
-////////////////////////////////////////////////////////////
-void SelectorBase::Clear()
-{
- FD_ZERO(&mySet);
- FD_ZERO(&mySetReady);
-
- myMaxSocket = 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Wait and collect sockets which are ready for reading.
-/// This functions will return either when at least one socket
-/// is ready, or when the given time is out
-////////////////////////////////////////////////////////////
-unsigned int SelectorBase::Wait(float Timeout)
-{
- // Setup the timeout structure
- timeval Time;
- Time.tv_sec = static_cast<long>(Timeout);
- Time.tv_usec = (static_cast<long>(Timeout * 1000) % 1000) * 1000;
-
- // Prepare the set of sockets to return
- mySetReady = mySet;
-
- // Wait until one of the sockets is ready for reading, or timeout is reached
- int NbSockets = select(myMaxSocket + 1, &mySetReady, NULL, NULL, Timeout > 0 ? &Time : NULL);
-
- return NbSockets >= 0 ? static_cast<unsigned int>(NbSockets) : 0;
-}
-
-
-////////////////////////////////////////////////////////////
-/// After a call to Wait(), get the Index-th socket which is
-/// ready for reading. The total number of sockets ready
-/// is the integer returned by the previous call to Wait()
-////////////////////////////////////////////////////////////
-SocketHelper::SocketType SelectorBase::GetSocketReady(unsigned int Index)
-{
- // The standard FD_xxx interface doesn't define a direct access,
- // so we must go through the whole set to find the socket we're looking for
- for (int i = 0; i < myMaxSocket + 1; ++i)
- {
- if (FD_ISSET(i, &mySetReady))
- {
- // Current socket is ready, but is it the Index-th one ?
- if (Index > 0)
- {
- Index--;
- }
- else
- {
- return static_cast<SocketHelper::SocketType>(i);
- }
- }
- }
-
- // Invalid index : return an invalid socket
- return SocketHelper::InvalidSocket();
-}
-
-} // namespace sf
diff --git a/src/SFML/Network/Socket.cpp b/src/SFML/Network/Socket.cpp
new file mode 100644
index 0000000..3e8489f
--- /dev/null
+++ b/src/SFML/Network/Socket.cpp
@@ -0,0 +1,144 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/Socket.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Socket::Socket(Type type) :
+m_type (type),
+m_socket (priv::SocketImpl::invalidSocket()),
+m_isBlocking(true)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::~Socket()
+{
+ // Close the socket before it gets destructed
+ close();
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::setBlocking(bool blocking)
+{
+ // Apply if the socket is already created
+ if (m_socket != priv::SocketImpl::invalidSocket())
+ priv::SocketImpl::setBlocking(m_socket, blocking);
+
+ m_isBlocking = blocking;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Socket::isBlocking() const
+{
+ return m_isBlocking;
+}
+
+
+////////////////////////////////////////////////////////////
+SocketHandle Socket::getHandle() const
+{
+ return m_socket;
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::create()
+{
+ // Don't create the socket if it already exists
+ if (m_socket == priv::SocketImpl::invalidSocket())
+ {
+ SocketHandle handle = socket(PF_INET, m_type == Tcp ? SOCK_STREAM : SOCK_DGRAM, 0);
+ create(handle);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::create(SocketHandle handle)
+{
+ // Don't create the socket if it already exists
+ if (m_socket == priv::SocketImpl::invalidSocket())
+ {
+ // Assign the new handle
+ m_socket = handle;
+
+ // Set the current blocking state
+ setBlocking(m_isBlocking);
+
+ if (m_type == Tcp)
+ {
+ // Disable the Nagle algorithm (ie. removes buffering of TCP packets)
+ int yes = 1;
+ if (setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to set socket option \"TCP_NODELAY\" ; "
+ << "all your TCP packets will be buffered" << std::endl;
+ }
+
+ // On Mac OS X, disable the SIGPIPE signal on disconnection
+ #ifdef SFML_SYSTEM_MACOS
+ if (setsockopt(m_socket, SOL_SOCKET, SO_NOSIGPIPE, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to set socket option \"SO_NOSIGPIPE\"" << std::endl;
+ }
+ #endif
+ }
+ else
+ {
+ // Enable broadcast by default for UDP sockets
+ int yes = 1;
+ if (setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char*>(&yes), sizeof(yes)) == -1)
+ {
+ err() << "Failed to enable broadcast on UDP socket" << std::endl;
+ }
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Socket::close()
+{
+ // Close the socket
+ if (m_socket != priv::SocketImpl::invalidSocket())
+ {
+ priv::SocketImpl::close(m_socket);
+ m_socket = priv::SocketImpl::invalidSocket();
+ }
+}
+
+} // namespace sf
diff --git a/include/SFML/Network/Sockets.hpp b/src/SFML/Network/SocketImpl.hpp
index 1359cb9..163489d 100755..100644
--- a/include/SFML/Network/Sockets.hpp
+++ b/src/SFML/Network/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,24 +22,18 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_SOCKETS_HPP
-#define SFML_SOCKETS_HPP
-
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Config.hpp>
-#ifdef SFML_SYSTEM_WINDOWS
+#if defined(SFML_SYSTEM_WINDOWS)
- #include <SFML/Network/Win32/Sockets.hpp>
+ #include <SFML/Network/Win32/SocketImpl.hpp>
#else
- #include <SFML/Network/Unix/Sockets.hpp>
+ #include <SFML/Network/Unix/SocketImpl.hpp>
#endif
-
-
-#endif // SFML_SOCKETS_HPP
diff --git a/src/SFML/Network/SocketSelector.cpp b/src/SFML/Network/SocketSelector.cpp
new file mode 100644
index 0000000..b6df372
--- /dev/null
+++ b/src/SFML/Network/SocketSelector.cpp
@@ -0,0 +1,141 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/SocketSelector.hpp>
+#include <SFML/Network/Socket.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+#include <utility>
+
+#ifdef _MSC_VER
+ #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro
+#endif
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+struct SocketSelector::SocketSelectorImpl
+{
+ fd_set AllSockets; ///< Set containing all the sockets handles
+ fd_set SocketsReady; ///< Set containing handles of the sockets that are ready
+ int MaxSocket; ///< Maximum socket handle
+};
+
+
+////////////////////////////////////////////////////////////
+SocketSelector::SocketSelector() :
+m_impl(new SocketSelectorImpl)
+{
+ clear();
+}
+
+
+////////////////////////////////////////////////////////////
+SocketSelector::SocketSelector(const SocketSelector& copy) :
+m_impl(new SocketSelectorImpl(*copy.m_impl))
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+SocketSelector::~SocketSelector()
+{
+ delete m_impl;
+}
+
+
+////////////////////////////////////////////////////////////
+void SocketSelector::add(Socket& socket)
+{
+ SocketHandle handle = socket.getHandle();
+ if (handle != priv::SocketImpl::invalidSocket())
+ {
+ FD_SET(handle, &m_impl->AllSockets);
+
+ int size = static_cast<int>(handle);
+ if (size > m_impl->MaxSocket)
+ m_impl->MaxSocket = size;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void SocketSelector::remove(Socket& socket)
+{
+ FD_CLR(socket.getHandle(), &m_impl->AllSockets);
+ FD_CLR(socket.getHandle(), &m_impl->SocketsReady);
+}
+
+
+////////////////////////////////////////////////////////////
+void SocketSelector::clear()
+{
+ FD_ZERO(&m_impl->AllSockets);
+ FD_ZERO(&m_impl->SocketsReady);
+
+ m_impl->MaxSocket = 0;
+}
+
+
+////////////////////////////////////////////////////////////
+bool SocketSelector::wait(Time timeout)
+{
+ // Setup the timeout
+ timeval time;
+ time.tv_sec = static_cast<long>(timeout.asMicroseconds() / 1000000);
+ time.tv_usec = static_cast<long>(timeout.asMicroseconds() % 1000000);
+
+ // Initialize the set that will contain the sockets that are ready
+ m_impl->SocketsReady = m_impl->AllSockets;
+
+ // Wait until one of the sockets is ready for reading, or timeout is reached
+ int count = select(m_impl->MaxSocket + 1, &m_impl->SocketsReady, NULL, NULL, timeout != Time::Zero ? &time : NULL);
+
+ return count > 0;
+}
+
+
+////////////////////////////////////////////////////////////
+bool SocketSelector::isReady(Socket& socket) const
+{
+ return FD_ISSET(socket.getHandle(), &m_impl->SocketsReady) != 0;
+}
+
+
+////////////////////////////////////////////////////////////
+SocketSelector& SocketSelector::operator =(const SocketSelector& right)
+{
+ SocketSelector temp(right);
+
+ std::swap(m_impl, temp.m_impl);
+
+ return *this;
+}
+
+} // namespace sf
diff --git a/src/SFML/Network/SocketTCP.cpp b/src/SFML/Network/SocketTCP.cpp
deleted file mode 100755
index 6a200fc..0000000
--- a/src/SFML/Network/SocketTCP.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketTCP.hpp>
-#include <SFML/Network/IPAddress.hpp>
-#include <SFML/Network/Packet.hpp>
-#include <SFML/Network/SocketHelper.hpp>
-#include <algorithm>
-#include <iostream>
-#include <string.h>
-
-
-#ifdef _MSC_VER
- #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro
-#endif
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SocketTCP::SocketTCP()
-{
- Create(SocketHelper::InvalidSocket());
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change the blocking state of the socket
-////////////////////////////////////////////////////////////
-void SocketTCP::SetBlocking(bool Blocking)
-{
- // Make sure our socket is valid
- if (!IsValid())
- Create();
-
- SocketHelper::SetBlocking(mySocket, Blocking);
- myIsBlocking = Blocking;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Connect to another computer on a specified port
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Connect(unsigned short Port, const IPAddress& HostAddress, float Timeout)
-{
- // Make sure our socket is valid
- if (!IsValid())
- Create();
-
- // Build the host address
- sockaddr_in SockAddr;
- memset(SockAddr.sin_zero, 0, sizeof(SockAddr.sin_zero));
- SockAddr.sin_addr.s_addr = inet_addr(HostAddress.ToString().c_str());
- SockAddr.sin_family = AF_INET;
- SockAddr.sin_port = htons(Port);
-
- if (Timeout <= 0)
- {
- // ----- We're not using a timeout : just try to connect -----
-
- if (connect(mySocket, reinterpret_cast<sockaddr*>(&SockAddr), sizeof(SockAddr)) == -1)
- {
- // Failed to connect
- return SocketHelper::GetErrorStatus();
- }
-
- // Connection succeeded
- return Socket::Done;
- }
- else
- {
- // ----- We're using a timeout : we'll need a few tricks to make it work -----
-
- // Save the previous blocking state
- bool IsBlocking = myIsBlocking;
-
- // Switch to non-blocking to enable our connection timeout
- if (IsBlocking)
- SetBlocking(false);
-
- // Try to connect to host
- if (connect(mySocket, reinterpret_cast<sockaddr*>(&SockAddr), sizeof(SockAddr)) >= 0)
- {
- // We got instantly connected! (it may no happen a lot...)
- return Socket::Done;
- }
-
- // Get the error status
- Socket::Status Status = SocketHelper::GetErrorStatus();
-
- // If we were in non-blocking mode, return immediatly
- if (!IsBlocking)
- return Status;
-
- // Otherwise, wait until something happens to our socket (success, timeout or error)
- if (Status == Socket::NotReady)
- {
- // Setup the selector
- fd_set Selector;
- FD_ZERO(&Selector);
- FD_SET(mySocket, &Selector);
-
- // Setup the timeout
- timeval Time;
- Time.tv_sec = static_cast<long>(Timeout);
- Time.tv_usec = (static_cast<long>(Timeout * 1000) % 1000) * 1000;
-
- // Wait for something to write on our socket (which means that the connection request has returned)
- if (select(static_cast<int>(mySocket + 1), NULL, &Selector, NULL, &Time) > 0)
- {
- // At this point the connection may have been either accepted or refused.
- // To know whether it's a success or a failure, we try to retrieve the name of the connected peer
- SocketHelper::LengthType Size = sizeof(SockAddr);
- if (getpeername(mySocket, reinterpret_cast<sockaddr*>(&SockAddr), &Size) != -1)
- {
- // Connection accepted
- Status = Socket::Done;
- }
- else
- {
- // Connection failed
- Status = SocketHelper::GetErrorStatus();
- }
- }
- else
- {
- // Failed to connect before timeout is over
- Status = SocketHelper::GetErrorStatus();
- }
- }
-
- // Switch back to blocking mode
- SetBlocking(true);
-
- return Status;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Listen to a specified port for incoming data or connections
-////////////////////////////////////////////////////////////
-bool SocketTCP::Listen(unsigned short Port)
-{
- // Make sure our socket is valid
- if (!IsValid())
- Create();
-
- // Build the address
- sockaddr_in SockAddr;
- memset(SockAddr.sin_zero, 0, sizeof(SockAddr.sin_zero));
- SockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
- SockAddr.sin_family = AF_INET;
- SockAddr.sin_port = htons(Port);
-
- // Bind the socket to the specified port
- if (bind(mySocket, reinterpret_cast<sockaddr*>(&SockAddr), sizeof(SockAddr)) == -1)
- {
- // Not likely to happen, but...
- std::cerr << "Failed to bind socket to port " << Port << std::endl;
- return false;
- }
-
- // Listen to the bound port
- if (listen(mySocket, 0) == -1)
- {
- // Oops, socket is deaf
- std::cerr << "Failed to listen to port " << Port << std::endl;
- return false;
- }
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Wait for a connection (must be listening to a port).
-/// This function will block if the socket is blocking
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Accept(SocketTCP& Connected, IPAddress* Address)
-{
- // Address that will be filled with client informations
- sockaddr_in ClientAddress;
- SocketHelper::LengthType Length = sizeof(ClientAddress);
-
- // Accept a new connection
- Connected = accept(mySocket, reinterpret_cast<sockaddr*>(&ClientAddress), &Length);
-
- // Check errors
- if (!Connected.IsValid())
- {
- if (Address)
- *Address = IPAddress();
-
- return SocketHelper::GetErrorStatus();
- }
-
- // Fill address if requested
- if (Address)
- *Address = IPAddress(inet_ntoa(ClientAddress.sin_addr));
-
- return Socket::Done;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Send an array of bytes to the host (must be connected first)
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Send(const char* Data, std::size_t Size)
-{
- // First check that socket is valid
- if (!IsValid())
- return Socket::Error;
-
- // Check parameters
- if (Data && Size)
- {
- // Loop until every byte has been sent
- int Sent = 0;
- int SizeToSend = static_cast<int>(Size);
- for (int Length = 0; Length < SizeToSend; Length += Sent)
- {
- // Send a chunk of data
- Sent = send(mySocket, Data + Length, SizeToSend - Length, 0);
-
- // Check if an error occured
- if (Sent <= 0)
- return SocketHelper::GetErrorStatus();
- }
-
- return Socket::Done;
- }
- else
- {
- // Error...
- std::cerr << "Cannot send data over the network (invalid parameters)" << std::endl;
- return Socket::Error;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receive an array of bytes from the host (must be connected first).
-/// This function will block if the socket is blocking
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived)
-{
- // First clear the size received
- SizeReceived = 0;
-
- // Check that socket is valid
- if (!IsValid())
- return Socket::Error;
-
- // Check parameters
- if (Data && MaxSize)
- {
- // Receive a chunk of bytes
- int Received = recv(mySocket, Data, static_cast<int>(MaxSize), 0);
-
- // Check the number of bytes received
- if (Received > 0)
- {
- SizeReceived = static_cast<std::size_t>(Received);
- return Socket::Done;
- }
- else if (Received == 0)
- {
- return Socket::Disconnected;
- }
- else
- {
- return SocketHelper::GetErrorStatus();
- }
- }
- else
- {
- // Error...
- std::cerr << "Cannot receive data from the network (invalid parameters)" << std::endl;
- return Socket::Error;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Send a packet of data to the host (must be connected first)
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Send(Packet& PacketToSend)
-{
- // Get the data to send from the packet
- std::size_t DataSize = 0;
- const char* Data = PacketToSend.OnSend(DataSize);
-
- // Send the packet size
- Uint32 PacketSize = htonl(static_cast<unsigned long>(DataSize));
- Send(reinterpret_cast<const char*>(&PacketSize), sizeof(PacketSize));
-
- // Send the packet data
- if (PacketSize > 0)
- {
- return Send(Data, DataSize);
- }
- else
- {
- return Socket::Done;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receive a packet from the host (must be connected first).
-/// This function will block if the socket is blocking
-////////////////////////////////////////////////////////////
-Socket::Status SocketTCP::Receive(Packet& PacketToReceive)
-{
- // We start by getting the size of the incoming packet
- Uint32 PacketSize = 0;
- std::size_t Received = 0;
- if (myPendingPacketSize < 0)
- {
- // Loop until we've received the entire size of the packet
- // (even a 4 bytes variable may be received in more than one call)
- while (myPendingHeaderSize < sizeof(myPendingHeader))
- {
- char* Data = reinterpret_cast<char*>(&myPendingHeader) + myPendingHeaderSize;
- Socket::Status Status = Receive(Data, sizeof(myPendingHeader) - myPendingHeaderSize, Received);
- myPendingHeaderSize += Received;
-
- if (Status != Socket::Done)
- return Status;
- }
-
- PacketSize = ntohl(myPendingHeader);
- myPendingHeaderSize = 0;
- }
- else
- {
- // There is a pending packet : we already know its size
- PacketSize = myPendingPacketSize;
- }
-
- // Then loop until we receive all the packet data
- char Buffer[1024];
- while (myPendingPacket.size() < PacketSize)
- {
- // Receive a chunk of data
- std::size_t SizeToGet = std::min(static_cast<std::size_t>(PacketSize - myPendingPacket.size()), sizeof(Buffer));
- Socket::Status Status = Receive(Buffer, SizeToGet, Received);
- if (Status != Socket::Done)
- {
- // We must save the size of the pending packet until we can receive its content
- if (Status == Socket::NotReady)
- myPendingPacketSize = PacketSize;
- return Status;
- }
-
- // Append it into the packet
- if (Received > 0)
- {
- myPendingPacket.resize(myPendingPacket.size() + Received);
- char* Begin = &myPendingPacket[0] + myPendingPacket.size() - Received;
- memcpy(Begin, Buffer, Received);
- }
- }
-
- // We have received all the datas : we can copy it to the user packet, and clear our internal packet
- PacketToReceive.Clear();
- if (!myPendingPacket.empty())
- PacketToReceive.OnReceive(&myPendingPacket[0], myPendingPacket.size());
- myPendingPacket.clear();
- myPendingPacketSize = -1;
-
- return Socket::Done;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Close the socket
-////////////////////////////////////////////////////////////
-bool SocketTCP::Close()
-{
- if (IsValid())
- {
- if (!SocketHelper::Close(mySocket))
- {
- std::cerr << "Failed to close socket" << std::endl;
- return false;
- }
-
- mySocket = SocketHelper::InvalidSocket();
- }
-
- myIsBlocking = true;
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the socket is in a valid state ; this function
-/// can be called any time to check if the socket is OK
-////////////////////////////////////////////////////////////
-bool SocketTCP::IsValid() const
-{
- return mySocket != SocketHelper::InvalidSocket();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator ==
-////////////////////////////////////////////////////////////
-bool SocketTCP::operator ==(const SocketTCP& Other) const
-{
- return mySocket == Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator !=
-////////////////////////////////////////////////////////////
-bool SocketTCP::operator !=(const SocketTCP& Other) const
-{
- return mySocket != Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator <.
-/// Provided for compatibility with standard containers, as
-/// comparing two sockets doesn't make much sense...
-////////////////////////////////////////////////////////////
-bool SocketTCP::operator <(const SocketTCP& Other) const
-{
- return mySocket < Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the socket from a socket descriptor
-/// (for internal use only)
-////////////////////////////////////////////////////////////
-SocketTCP::SocketTCP(SocketHelper::SocketType Descriptor)
-{
- Create(Descriptor);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the socket
-////////////////////////////////////////////////////////////
-void SocketTCP::Create(SocketHelper::SocketType Descriptor)
-{
- // Use the given socket descriptor, or get a new one
- mySocket = Descriptor ? Descriptor : socket(PF_INET, SOCK_STREAM, 0);
- myIsBlocking = true;
-
- // Reset the pending packet
- myPendingHeaderSize = 0;
- myPendingPacket.clear();
- myPendingPacketSize = -1;
-
- // Setup default options
- if (IsValid())
- {
- // To avoid the "Address already in use" error message when trying to bind to the same port
- int Yes = 1;
- if (setsockopt(mySocket, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char*>(&Yes), sizeof(Yes)) == -1)
- {
- std::cerr << "Failed to set socket option \"SO_REUSEADDR\" ; "
- << "binding to a same port may fail if too fast" << std::endl;
- }
-
- // Disable the Nagle algorithm (ie. removes buffering of TCP packets)
- if (setsockopt(mySocket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&Yes), sizeof(Yes)) == -1)
- {
- std::cerr << "Failed to set socket option \"TCP_NODELAY\" ; "
- << "all your TCP packets will be buffered" << std::endl;
- }
-
- // Set blocking by default (should always be the case anyway)
- SetBlocking(true);
- }
-}
-
-} // namespace sf
diff --git a/src/SFML/Network/SocketUDP.cpp b/src/SFML/Network/SocketUDP.cpp
deleted file mode 100755
index c1fbc7b..0000000
--- a/src/SFML/Network/SocketUDP.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketUDP.hpp>
-#include <SFML/Network/IPAddress.hpp>
-#include <SFML/Network/Packet.hpp>
-#include <algorithm>
-#include <iostream>
-#include <string.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-SocketUDP::SocketUDP()
-{
- Create();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change the blocking state of the socket
-////////////////////////////////////////////////////////////
-void SocketUDP::SetBlocking(bool Blocking)
-{
- // Make sure our socket is valid
- if (!IsValid())
- Create();
-
- SocketHelper::SetBlocking(mySocket, Blocking);
- myIsBlocking = Blocking;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Bind the socket to a specific port
-////////////////////////////////////////////////////////////
-bool SocketUDP::Bind(unsigned short Port)
-{
- // Check if the socket is already bound to the specified port
- if (myPort != Port)
- {
- // If the socket was previously bound to another port, we need to unbind it first
- Unbind();
-
- if (Port != 0)
- {
- // Build an address with the specified port
- sockaddr_in Addr;
- Addr.sin_family = AF_INET;
- Addr.sin_port = htons(Port);
- Addr.sin_addr.s_addr = INADDR_ANY;
- memset(Addr.sin_zero, 0, sizeof(Addr.sin_zero));
-
- // Bind the socket to the port
- if (bind(mySocket, reinterpret_cast<sockaddr*>(&Addr), sizeof(Addr)) == -1)
- {
- std::cerr << "Failed to bind the socket to port " << Port << std::endl;
- myPort = 0;
- return false;
- }
- }
-
- // Save the new port
- myPort = Port;
- }
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Unbind the socket to its previous port
-////////////////////////////////////////////////////////////
-bool SocketUDP::Unbind()
-{
- // To unbind the socket, we just recreate it
- if (myPort != 0)
- {
- Close();
- Create();
- myPort = 0;
- }
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Send an array of bytes
-////////////////////////////////////////////////////////////
-Socket::Status SocketUDP::Send(const char* Data, std::size_t Size, const IPAddress& Address, unsigned short Port)
-{
- // Make sure the socket is valid
- if (!IsValid())
- Create();
-
- // Check parameters
- if (Data && Size)
- {
- // Build the target address
- sockaddr_in Target;
- Target.sin_family = AF_INET;
- Target.sin_port = htons(Port);
- Target.sin_addr.s_addr = inet_addr(Address.ToString().c_str());
- memset(Target.sin_zero, 0, sizeof(Target.sin_zero));
-
- // Loop until every byte has been sent
- int Sent = 0;
- int SizeToSend = static_cast<int>(Size);
- for (int Length = 0; Length < SizeToSend; Length += Sent)
- {
- // Send a chunk of data
- Sent = sendto(mySocket, Data + Length, SizeToSend - Length, 0, reinterpret_cast<sockaddr*>(&Target), sizeof(Target));
-
- // Check errors
- if (Sent <= 0)
- return SocketHelper::GetErrorStatus();
- }
-
- return Socket::Done;
- }
- else
- {
- // Error...
- std::cerr << "Cannot send data over the network (invalid parameters)" << std::endl;
- return Socket::Error;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receive an array of bytes.
-/// This function will block if the socket is blocking
-////////////////////////////////////////////////////////////
-Socket::Status SocketUDP::Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived, IPAddress& Address, unsigned short& Port)
-{
- // First clear the size received
- SizeReceived = 0;
-
- // Make sure the socket is bound to a port
- if (myPort == 0)
- {
- std::cerr << "Failed to receive data ; the UDP socket first needs to be bound to a port" << std::endl;
- return Socket::Error;
- }
-
- // Make sure the socket is valid
- if (!IsValid())
- Create();
-
- // Check parameters
- if (Data && MaxSize)
- {
- // Data that will be filled with the other computer's address
- sockaddr_in Sender;
- Sender.sin_family = AF_INET;
- Sender.sin_port = 0;
- Sender.sin_addr.s_addr = INADDR_ANY;
- memset(Sender.sin_zero, 0, sizeof(Sender.sin_zero));
- SocketHelper::LengthType SenderSize = sizeof(Sender);
-
- // Receive a chunk of bytes
- int Received = recvfrom(mySocket, Data, static_cast<int>(MaxSize), 0, reinterpret_cast<sockaddr*>(&Sender), &SenderSize);
-
- // Check the number of bytes received
- if (Received > 0)
- {
- Address = IPAddress(inet_ntoa(Sender.sin_addr));
- Port = ntohs(Sender.sin_port);
- SizeReceived = static_cast<std::size_t>(Received);
- return Socket::Done;
- }
- else
- {
- Address = IPAddress();
- Port = 0;
- return Received == 0 ? Socket::Disconnected : SocketHelper::GetErrorStatus();
- }
- }
- else
- {
- // Error...
- std::cerr << "Cannot receive data from the network (invalid parameters)" << std::endl;
- return Socket::Error;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Send a packet of data
-////////////////////////////////////////////////////////////
-Socket::Status SocketUDP::Send(Packet& PacketToSend, const IPAddress& Address, unsigned short Port)
-{
- // Get the data to send from the packet
- std::size_t DataSize = 0;
- const char* Data = PacketToSend.OnSend(DataSize);
-
- // Send the packet size
- Uint32 PacketSize = htonl(static_cast<unsigned long>(DataSize));
- Send(reinterpret_cast<const char*>(&PacketSize), sizeof(PacketSize), Address, Port);
-
- // Send the packet data
- if (PacketSize > 0)
- {
- return Send(Data, DataSize, Address, Port);
- }
- else
- {
- return Socket::Done;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receive a packet.
-/// This function will block if the socket is blocking
-////////////////////////////////////////////////////////////
-Socket::Status SocketUDP::Receive(Packet& PacketToReceive, IPAddress& Address, unsigned short& Port)
-{
- // We start by getting the size of the incoming packet
- Uint32 PacketSize = 0;
- std::size_t Received = 0;
- if (myPendingPacketSize < 0)
- {
- // Loop until we've received the entire size of the packet
- // (even a 4 bytes variable may be received in more than one call)
- while (myPendingHeaderSize < sizeof(myPendingHeader))
- {
- char* Data = reinterpret_cast<char*>(&myPendingHeader) + myPendingHeaderSize;
- Socket::Status Status = Receive(Data, sizeof(myPendingHeader) - myPendingHeaderSize, Received, Address, Port);
- myPendingHeaderSize += Received;
-
- if (Status != Socket::Done)
- return Status;
- }
-
- PacketSize = ntohl(myPendingHeader);
- myPendingHeaderSize = 0;
- }
- else
- {
- // There is a pending packet : we already know its size
- PacketSize = myPendingPacketSize;
- }
-
- // Use another address instance for receiving the packet data ;
- // chunks of data coming from a different sender will be discarded (and lost...)
- IPAddress Sender;
- unsigned short SenderPort;
-
- // Then loop until we receive all the packet data
- char Buffer[1024];
- while (myPendingPacket.size() < PacketSize)
- {
- // Receive a chunk of data
- std::size_t SizeToGet = std::min(static_cast<std::size_t>(PacketSize - myPendingPacket.size()), sizeof(Buffer));
- Socket::Status Status = Receive(Buffer, SizeToGet, Received, Sender, SenderPort);
- if (Status != Socket::Done)
- {
- // We must save the size of the pending packet until we can receive its content
- if (Status == Socket::NotReady)
- myPendingPacketSize = PacketSize;
- return Status;
- }
-
- // Append it into the packet
- if ((Sender == Address) && (SenderPort == Port) && (Received > 0))
- {
- myPendingPacket.resize(myPendingPacket.size() + Received);
- char* Begin = &myPendingPacket[0] + myPendingPacket.size() - Received;
- memcpy(Begin, Buffer, Received);
- }
- }
-
- // We have received all the datas : we can copy it to the user packet, and clear our internal packet
- PacketToReceive.Clear();
- if (!myPendingPacket.empty())
- PacketToReceive.OnReceive(&myPendingPacket[0], myPendingPacket.size());
- myPendingPacket.clear();
- myPendingPacketSize = -1;
-
- return Socket::Done;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Close the socket
-////////////////////////////////////////////////////////////
-bool SocketUDP::Close()
-{
- if (IsValid())
- {
- if (!SocketHelper::Close(mySocket))
- {
- std::cerr << "Failed to close socket" << std::endl;
- return false;
- }
-
- mySocket = SocketHelper::InvalidSocket();
- }
-
- myPort = 0;
- myIsBlocking = true;
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the socket is in a valid state ; this function
-/// can be called any time to check if the socket is OK
-////////////////////////////////////////////////////////////
-bool SocketUDP::IsValid() const
-{
- return mySocket != SocketHelper::InvalidSocket();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the port the socket is currently bound to
-////////////////////////////////////////////////////////////
-unsigned short SocketUDP::GetPort() const
-{
- return myPort;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator ==
-////////////////////////////////////////////////////////////
-bool SocketUDP::operator ==(const SocketUDP& Other) const
-{
- return mySocket == Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator !=
-////////////////////////////////////////////////////////////
-bool SocketUDP::operator !=(const SocketUDP& Other) const
-{
- return mySocket != Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Comparison operator <.
-/// Provided for compatibility with standard containers, as
-/// comparing two sockets doesn't make much sense...
-////////////////////////////////////////////////////////////
-bool SocketUDP::operator <(const SocketUDP& Other) const
-{
- return mySocket < Other.mySocket;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the socket from a socket descriptor
-/// (for internal use only)
-////////////////////////////////////////////////////////////
-SocketUDP::SocketUDP(SocketHelper::SocketType Descriptor)
-{
- Create(Descriptor);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the socket
-////////////////////////////////////////////////////////////
-void SocketUDP::Create(SocketHelper::SocketType Descriptor)
-{
- // Use the given socket descriptor, or get a new one
- mySocket = Descriptor ? Descriptor : socket(PF_INET, SOCK_DGRAM, 0);
- myIsBlocking = true;
-
- // Clear the last port used
- myPort = 0;
-
- // Reset the pending packet
- myPendingHeaderSize = 0;
- myPendingPacket.clear();
- myPendingPacketSize = -1;
-
- // Setup default options
- if (IsValid())
- {
- // To avoid the "Address already in use" error message when trying to bind to the same port
- int Yes = 1;
- if (setsockopt(mySocket, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char*>(&Yes), sizeof(Yes)) == -1)
- {
- std::cerr << "Failed to set socket option \"reuse address\" ; "
- << "binding to a same port may fail if too fast" << std::endl;
- }
-
- // Enable broadcast by default
- if (setsockopt(mySocket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char*>(&Yes), sizeof(Yes)) == -1)
- {
- std::cerr << "Failed to enable broadcast on UDP socket" << std::endl;
- }
-
- // Set blocking by default (should always be the case anyway)
- SetBlocking(true);
- }
-}
-
-} // namespace sf
diff --git a/src/SFML/Network/TcpListener.cpp b/src/SFML/Network/TcpListener.cpp
new file mode 100644
index 0000000..6c101dc
--- /dev/null
+++ b/src/SFML/Network/TcpListener.cpp
@@ -0,0 +1,124 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/TcpListener.hpp>
+#include <SFML/Network/TcpSocket.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+TcpListener::TcpListener() :
+Socket(Tcp)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned short TcpListener::getLocalPort() const
+{
+ if (getHandle() != priv::SocketImpl::invalidSocket())
+ {
+ // Retrieve informations about the local end of the socket
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getsockname(getHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
+ {
+ return ntohs(address.sin_port);
+ }
+ }
+
+ // We failed to retrieve the port
+ return 0;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpListener::listen(unsigned short port)
+{
+ // Create the internal socket if it doesn't exist
+ create();
+
+ // Bind the socket to the specified port
+ sockaddr_in address = priv::SocketImpl::createAddress(INADDR_ANY, port);
+ if (bind(getHandle(), reinterpret_cast<sockaddr*>(&address), sizeof(address)) == -1)
+ {
+ // Not likely to happen, but...
+ err() << "Failed to bind listener socket to port " << port << std::endl;
+ return Error;
+ }
+
+ // Listen to the bound port
+ if (::listen(getHandle(), 0) == -1)
+ {
+ // Oops, socket is deaf
+ err() << "Failed to listen to port " << port << std::endl;
+ return Error;
+ }
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+void TcpListener::close()
+{
+ // Simply close the socket
+ Socket::close();
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpListener::accept(TcpSocket& socket)
+{
+ // Make sure that we're listening
+ if (getHandle() == priv::SocketImpl::invalidSocket())
+ {
+ err() << "Failed to accept a new connection, the socket is not listening" << std::endl;
+ return Error;
+ }
+
+ // Accept a new connection
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength length = sizeof(address);
+ SocketHandle remote = ::accept(getHandle(), reinterpret_cast<sockaddr*>(&address), &length);
+
+ // Check for errors
+ if (remote == priv::SocketImpl::invalidSocket())
+ return priv::SocketImpl::getErrorStatus();
+
+ // Initialize the new connected socket
+ socket.close();
+ socket.create(remote);
+
+ return Done;
+}
+
+} // namespace sf
diff --git a/src/SFML/Network/TcpSocket.cpp b/src/SFML/Network/TcpSocket.cpp
new file mode 100644
index 0000000..c7eb6ec
--- /dev/null
+++ b/src/SFML/Network/TcpSocket.cpp
@@ -0,0 +1,381 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/TcpSocket.hpp>
+#include <SFML/Network/IpAddress.hpp>
+#include <SFML/Network/Packet.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+#include <algorithm>
+#include <cstring>
+
+#ifdef _MSC_VER
+ #pragma warning(disable : 4127) // "conditional expression is constant" generated by the FD_SET macro
+#endif
+
+
+namespace
+{
+ // Define the low-level send/receive flags, which depend on the OS
+ #ifdef SFML_SYSTEM_LINUX
+ const int flags = MSG_NOSIGNAL;
+ #else
+ const int flags = 0;
+ #endif
+}
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+TcpSocket::TcpSocket() :
+Socket(Tcp)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned short TcpSocket::getLocalPort() const
+{
+ if (getHandle() != priv::SocketImpl::invalidSocket())
+ {
+ // Retrieve informations about the local end of the socket
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getsockname(getHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
+ {
+ return ntohs(address.sin_port);
+ }
+ }
+
+ // We failed to retrieve the port
+ return 0;
+}
+
+
+////////////////////////////////////////////////////////////
+IpAddress TcpSocket::getRemoteAddress() const
+{
+ if (getHandle() != priv::SocketImpl::invalidSocket())
+ {
+ // Retrieve informations about the remote end of the socket
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getpeername(getHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
+ {
+ return IpAddress(ntohl(address.sin_addr.s_addr));
+ }
+ }
+
+ // We failed to retrieve the address
+ return IpAddress::None;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned short TcpSocket::getRemotePort() const
+{
+ if (getHandle() != priv::SocketImpl::invalidSocket())
+ {
+ // Retrieve informations about the remote end of the socket
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getpeername(getHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
+ {
+ return ntohs(address.sin_port);
+ }
+ }
+
+ // We failed to retrieve the port
+ return 0;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpSocket::connect(const IpAddress& remoteAddress, unsigned short remotePort, Time timeout)
+{
+ // Create the internal socket if it doesn't exist
+ create();
+
+ // Create the remote address
+ sockaddr_in address = priv::SocketImpl::createAddress(remoteAddress.toInteger(), remotePort);
+
+ if (timeout <= Time::Zero)
+ {
+ // ----- We're not using a timeout: just try to connect -----
+
+ // Connect the socket
+ if (::connect(getHandle(), reinterpret_cast<sockaddr*>(&address), sizeof(address)) == -1)
+ return priv::SocketImpl::getErrorStatus();
+
+ // Connection succeeded
+ return Done;
+ }
+ else
+ {
+ // ----- We're using a timeout: we'll need a few tricks to make it work -----
+
+ // Save the previous blocking state
+ bool blocking = isBlocking();
+
+ // Switch to non-blocking to enable our connection timeout
+ if (blocking)
+ setBlocking(false);
+
+ // Try to connect to the remote address
+ if (::connect(getHandle(), reinterpret_cast<sockaddr*>(&address), sizeof(address)) >= 0)
+ {
+ // We got instantly connected! (it may no happen a lot...)
+ return Done;
+ }
+
+ // Get the error status
+ Status status = priv::SocketImpl::getErrorStatus();
+
+ // If we were in non-blocking mode, return immediatly
+ if (!blocking)
+ return status;
+
+ // Otherwise, wait until something happens to our socket (success, timeout or error)
+ if (status == Socket::NotReady)
+ {
+ // Setup the selector
+ fd_set selector;
+ FD_ZERO(&selector);
+ FD_SET(getHandle(), &selector);
+
+ // Setup the timeout
+ timeval time;
+ time.tv_sec = static_cast<long>(timeout.asMicroseconds() / 1000000);
+ time.tv_usec = static_cast<long>(timeout.asMicroseconds() % 1000000);
+
+ // Wait for something to write on our socket (which means that the connection request has returned)
+ if (select(static_cast<int>(getHandle() + 1), NULL, &selector, NULL, &time) > 0)
+ {
+ // At this point the connection may have been either accepted or refused.
+ // To know whether it's a success or a failure, we must check the address of the connected peer
+ if (getRemoteAddress() != sf::IpAddress::None)
+ {
+ // Connection accepted
+ status = Done;
+ }
+ else
+ {
+ // Connection refused
+ status = priv::SocketImpl::getErrorStatus();
+ }
+ }
+ else
+ {
+ // Failed to connect before timeout is over
+ status = priv::SocketImpl::getErrorStatus();
+ }
+ }
+
+ // Switch back to blocking mode
+ setBlocking(true);
+
+ return status;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void TcpSocket::disconnect()
+{
+ // Close the socket
+ close();
+
+ // Reset the pending packet data
+ m_pendingPacket = PendingPacket();
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpSocket::send(const void* data, std::size_t size)
+{
+ // Check the parameters
+ if (!data || (size == 0))
+ {
+ err() << "Cannot send data over the network (no data to send)" << std::endl;
+ return Error;
+ }
+
+ // Loop until every byte has been sent
+ int sent = 0;
+ int sizeToSend = static_cast<int>(size);
+ for (int length = 0; length < sizeToSend; length += sent)
+ {
+ // Send a chunk of data
+ sent = ::send(getHandle(), static_cast<const char*>(data) + length, sizeToSend - length, flags);
+
+ // Check for errors
+ if (sent < 0)
+ return priv::SocketImpl::getErrorStatus();
+ }
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpSocket::receive(void* data, std::size_t size, std::size_t& received)
+{
+ // First clear the variables to fill
+ received = 0;
+
+ // Check the destination buffer
+ if (!data)
+ {
+ err() << "Cannot receive data from the network (the destination buffer is invalid)" << std::endl;
+ return Error;
+ }
+
+ // Receive a chunk of bytes
+ int sizeReceived = recv(getHandle(), static_cast<char*>(data), static_cast<int>(size), flags);
+
+ // Check the number of bytes received
+ if (sizeReceived > 0)
+ {
+ received = static_cast<std::size_t>(sizeReceived);
+ return Done;
+ }
+ else if (sizeReceived == 0)
+ {
+ return Socket::Disconnected;
+ }
+ else
+ {
+ return priv::SocketImpl::getErrorStatus();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpSocket::send(Packet& packet)
+{
+ // TCP is a stream protocol, it doesn't preserve messages boundaries.
+ // This means that we have to send the packet size first, so that the
+ // receiver knows the actual end of the packet in the data stream.
+
+ // We allocate an extra memory block so that the size can be sent
+ // together with the data in a single call. This may seem inefficient,
+ // but it is actually required to avoid partial send, which could cause
+ // data corruption on the receiving end.
+
+ // Get the data to send from the packet
+ std::size_t size = 0;
+ const void* data = packet.onSend(size);
+
+ // First convert the packet size to network byte order
+ Uint32 packetSize = htonl(static_cast<Uint32>(size));
+
+ // Allocate memory for the data block to send
+ std::vector<char> blockToSend(sizeof(packetSize) + size);
+
+ // Copy the packet size and data into the block to send
+ std::memcpy(&blockToSend[0], &packetSize, sizeof(packetSize));
+ if (size > 0)
+ std::memcpy(&blockToSend[0] + sizeof(packetSize), data, size);
+
+ // Send the data block
+ return send(&blockToSend[0], blockToSend.size());
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status TcpSocket::receive(Packet& packet)
+{
+ // First clear the variables to fill
+ packet.clear();
+
+ // We start by getting the size of the incoming packet
+ Uint32 packetSize = 0;
+ std::size_t received = 0;
+ if (m_pendingPacket.SizeReceived < sizeof(m_pendingPacket.Size))
+ {
+ // Loop until we've received the entire size of the packet
+ // (even a 4 byte variable may be received in more than one call)
+ while (m_pendingPacket.SizeReceived < sizeof(m_pendingPacket.Size))
+ {
+ char* data = reinterpret_cast<char*>(&m_pendingPacket.Size) + m_pendingPacket.SizeReceived;
+ Status status = receive(data, sizeof(m_pendingPacket.Size) - m_pendingPacket.SizeReceived, received);
+ m_pendingPacket.SizeReceived += received;
+
+ if (status != Done)
+ return status;
+ }
+
+ // The packet size has been fully received
+ packetSize = ntohl(m_pendingPacket.Size);
+ }
+ else
+ {
+ // The packet size has already been received in a previous call
+ packetSize = ntohl(m_pendingPacket.Size);
+ }
+
+ // Loop until we receive all the packet data
+ char buffer[1024];
+ while (m_pendingPacket.Data.size() < packetSize)
+ {
+ // Receive a chunk of data
+ std::size_t sizeToGet = std::min(static_cast<std::size_t>(packetSize - m_pendingPacket.Data.size()), sizeof(buffer));
+ Status status = receive(buffer, sizeToGet, received);
+ if (status != Done)
+ return status;
+
+ // Append it into the packet
+ if (received > 0)
+ {
+ m_pendingPacket.Data.resize(m_pendingPacket.Data.size() + received);
+ char* begin = &m_pendingPacket.Data[0] + m_pendingPacket.Data.size() - received;
+ std::memcpy(begin, buffer, received);
+ }
+ }
+
+ // We have received all the packet data: we can copy it to the user packet
+ if (!m_pendingPacket.Data.empty())
+ packet.onReceive(&m_pendingPacket.Data[0], m_pendingPacket.Data.size());
+
+ // Clear the pending packet data
+ m_pendingPacket = PendingPacket();
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+TcpSocket::PendingPacket::PendingPacket() :
+Size (0),
+SizeReceived(0),
+Data ()
+{
+
+}
+
+} // namespace sf
diff --git a/src/SFML/Network/UdpSocket.cpp b/src/SFML/Network/UdpSocket.cpp
new file mode 100644
index 0000000..78e4b99
--- /dev/null
+++ b/src/SFML/Network/UdpSocket.cpp
@@ -0,0 +1,193 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Network/UdpSocket.hpp>
+#include <SFML/Network/IpAddress.hpp>
+#include <SFML/Network/Packet.hpp>
+#include <SFML/Network/SocketImpl.hpp>
+#include <SFML/System/Err.hpp>
+#include <algorithm>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+UdpSocket::UdpSocket() :
+Socket (Udp),
+m_buffer(MaxDatagramSize)
+{
+
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned short UdpSocket::getLocalPort() const
+{
+ if (getHandle() != priv::SocketImpl::invalidSocket())
+ {
+ // Retrieve informations about the local end of the socket
+ sockaddr_in address;
+ priv::SocketImpl::AddrLength size = sizeof(address);
+ if (getsockname(getHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
+ {
+ return ntohs(address.sin_port);
+ }
+ }
+
+ // We failed to retrieve the port
+ return 0;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status UdpSocket::bind(unsigned short port)
+{
+ // Create the internal socket if it doesn't exist
+ create();
+
+ // Bind the socket
+ sockaddr_in address = priv::SocketImpl::createAddress(INADDR_ANY, port);
+ if (::bind(getHandle(), reinterpret_cast<sockaddr*>(&address), sizeof(address)) == -1)
+ {
+ err() << "Failed to bind socket to port " << port << std::endl;
+ return Error;
+ }
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+void UdpSocket::unbind()
+{
+ // Simply close the socket
+ close();
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status UdpSocket::send(const void* data, std::size_t size, const IpAddress& remoteAddress, unsigned short remotePort)
+{
+ // Create the internal socket if it doesn't exist
+ create();
+
+ // Make sure that all the data will fit in one datagram
+ if (size > MaxDatagramSize)
+ {
+ err() << "Cannot send data over the network "
+ << "(the number of bytes to send is greater than sf::UdpSocket::MaxDatagramSize)" << std::endl;
+ return Error;
+ }
+
+ // Build the target address
+ sockaddr_in address = priv::SocketImpl::createAddress(remoteAddress.toInteger(), remotePort);
+
+ // Send the data (unlike TCP, all the data is always sent in one call)
+ int sent = sendto(getHandle(), static_cast<const char*>(data), static_cast<int>(size), 0, reinterpret_cast<sockaddr*>(&address), sizeof(address));
+
+ // Check for errors
+ if (sent < 0)
+ return priv::SocketImpl::getErrorStatus();
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status UdpSocket::receive(void* data, std::size_t size, std::size_t& received, IpAddress& remoteAddress, unsigned short& remotePort)
+{
+ // First clear the variables to fill
+ received = 0;
+ remoteAddress = IpAddress();
+ remotePort = 0;
+
+ // Check the destination buffer
+ if (!data)
+ {
+ err() << "Cannot receive data from the network (the destination buffer is invalid)" << std::endl;
+ return Error;
+ }
+
+ // Data that will be filled with the other computer's address
+ sockaddr_in address = priv::SocketImpl::createAddress(INADDR_ANY, 0);
+
+ // Receive a chunk of bytes
+ priv::SocketImpl::AddrLength addressSize = sizeof(address);
+ int sizeReceived = recvfrom(getHandle(), static_cast<char*>(data), static_cast<int>(size), 0, reinterpret_cast<sockaddr*>(&address), &addressSize);
+
+ // Check for errors
+ if (sizeReceived < 0)
+ return priv::SocketImpl::getErrorStatus();
+
+ // Fill the sender informations
+ received = static_cast<std::size_t>(sizeReceived);
+ remoteAddress = IpAddress(ntohl(address.sin_addr.s_addr));
+ remotePort = ntohs(address.sin_port);
+
+ return Done;
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status UdpSocket::send(Packet& packet, const IpAddress& remoteAddress, unsigned short remotePort)
+{
+ // UDP is a datagram-oriented protocol (as opposed to TCP which is a stream protocol).
+ // Sending one datagram is almost safe: it may be lost but if it's received, then its data
+ // is guaranteed to be ok. However, splitting a packet into multiple datagrams would be highly
+ // unreliable, since datagrams may be reordered, dropped or mixed between different sources.
+ // That's why SFML imposes a limit on packet size so that they can be sent in a single datagram.
+ // This also removes the overhead associated to packets -- there's no size to send in addition
+ // to the packet's data.
+
+ // Get the data to send from the packet
+ std::size_t size = 0;
+ const void* data = packet.onSend(size);
+
+ // Send it
+ return send(data, size, remoteAddress, remotePort);
+}
+
+
+////////////////////////////////////////////////////////////
+Socket::Status UdpSocket::receive(Packet& packet, IpAddress& remoteAddress, unsigned short& remotePort)
+{
+ // See the detailed comment in send(Packet) above.
+
+ // Receive the datagram
+ std::size_t received = 0;
+ Status status = receive(&m_buffer[0], m_buffer.size(), received, remoteAddress, remotePort);
+
+ // If we received valid data, we can copy it to the user packet
+ packet.clear();
+ if ((status == Done) && (received > 0))
+ packet.onReceive(&m_buffer[0], received);
+
+ return status;
+}
+
+
+} // namespace sf
diff --git a/src/SFML/Network/Unix/SocketHelper.cpp b/src/SFML/Network/Unix/SocketImpl.cpp
index 1fc4e68..4a6b508 100755..100644
--- a/src/SFML/Network/Unix/SocketHelper.cpp
+++ b/src/SFML/Network/Unix/SocketImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,48 +25,56 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketHelper.hpp>
+#include <SFML/Network/Unix/SocketImpl.hpp>
#include <errno.h>
#include <fcntl.h>
+#include <cstring>
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// Return the value of the invalid socket
+sockaddr_in SocketImpl::createAddress(Uint32 address, unsigned short port)
+{
+ sockaddr_in addr;
+ std::memset(addr.sin_zero, 0, sizeof(addr.sin_zero));
+ addr.sin_addr.s_addr = htonl(address);
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(port);
+
+ return addr;
+}
+
+
////////////////////////////////////////////////////////////
-SocketHelper::SocketType SocketHelper::InvalidSocket()
+SocketHandle SocketImpl::invalidSocket()
{
return -1;
}
////////////////////////////////////////////////////////////
-/// Close / destroy a socket
-////////////////////////////////////////////////////////////
-bool SocketHelper::Close(SocketHelper::SocketType Socket)
+void SocketImpl::close(SocketHandle sock)
{
- return close(Socket) != -1;
+ ::close(sock);
}
////////////////////////////////////////////////////////////
-/// Set a socket as blocking or non-blocking
-////////////////////////////////////////////////////////////
-void SocketHelper::SetBlocking(SocketHelper::SocketType Socket, bool Block)
+void SocketImpl::setBlocking(SocketHandle sock, bool block)
{
- int Status = fcntl(Socket, F_GETFL);
- if (Block)
- fcntl(Socket, F_SETFL, Status & ~O_NONBLOCK);
+ int status = fcntl(sock, F_GETFL);
+ if (block)
+ fcntl(sock, F_SETFL, status & ~O_NONBLOCK);
else
- fcntl(Socket, F_SETFL, Status | O_NONBLOCK);
+ fcntl(sock, F_SETFL, status | O_NONBLOCK);
}
////////////////////////////////////////////////////////////
-/// Get the last socket error status
-////////////////////////////////////////////////////////////
-Socket::Status SocketHelper::GetErrorStatus()
+Socket::Status SocketImpl::getErrorStatus()
{
// The followings are sometimes equal to EWOULDBLOCK,
// so we have to make a special case for them in order
@@ -82,8 +90,11 @@ Socket::Status SocketHelper::GetErrorStatus()
case ETIMEDOUT : return Socket::Disconnected;
case ENETRESET : return Socket::Disconnected;
case ENOTCONN : return Socket::Disconnected;
+ case EPIPE : return Socket::Disconnected;
default : return Socket::Error;
}
}
+} // namespace priv
+
} // namespace sf
diff --git a/include/SFML/Network/Unix/SocketHelper.hpp b/src/SFML/Network/Unix/SocketImpl.hpp
index 1068cd8..fde4bea 100755..100644
--- a/include/SFML/Network/Unix/SocketHelper.hpp
+++ b/src/SFML/Network/Unix/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,12 +22,13 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_SOCKETHELPERUNIX_HPP
-#define SFML_SOCKETHELPERUNIX_HPP
+#ifndef SFML_SOCKETIMPL_HPP
+#define SFML_SOCKETIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/Network/Socket.hpp>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -39,47 +40,57 @@
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// This class defines helper functions to do all the
-/// non-portable socket stuff. This class is meant for internal
-/// use only
+/// \brief Helper class implementing all the non-portable
+/// socket stuff; this is the Unix version
+///
////////////////////////////////////////////////////////////
-class SFML_API SocketHelper
+class SocketImpl
{
public :
////////////////////////////////////////////////////////////
- // Define some socket types
+ // Types
////////////////////////////////////////////////////////////
- typedef int SocketType;
- typedef socklen_t LengthType;
+ typedef socklen_t AddrLength;
////////////////////////////////////////////////////////////
- /// Return the value of the invalid socket
+ /// \brief Create an internal sockaddr_in address
+ ///
+ /// \param address Target address
+ /// \param port Target port
///
- /// \return Unique value of the invalid socket
+ /// \return sockaddr_in ready to be used by socket functions
///
////////////////////////////////////////////////////////////
- static SocketType InvalidSocket();
+ static sockaddr_in createAddress(Uint32 address, unsigned short port);
////////////////////////////////////////////////////////////
- /// Close / destroy a socket
+ /// \brief Return the value of the invalid socket
///
- /// \param Socket : Socket to close
+ /// \return Special value of the invalid socket
///
- /// \return True on success
+ ////////////////////////////////////////////////////////////
+ static SocketHandle invalidSocket();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Close and destroy a socket
+ ///
+ /// \param sock Handle of the socket to close
///
////////////////////////////////////////////////////////////
- static bool Close(SocketType Socket);
+ static void close(SocketHandle sock);
////////////////////////////////////////////////////////////
- /// Set a socket as blocking or non-blocking
+ /// \brief Set a socket as blocking or non-blocking
///
- /// \param Socket : Socket to modify
- /// \param Block : New blocking state of the socket
+ /// \param sock Handle of the socket
+ /// \param block New blocking state of the socket
///
////////////////////////////////////////////////////////////
- static void SetBlocking(SocketType Socket, bool Block);
+ static void setBlocking(SocketHandle sock, bool block);
////////////////////////////////////////////////////////////
/// Get the last socket error status
@@ -87,10 +98,12 @@ public :
/// \return Status corresponding to the last socket error
///
////////////////////////////////////////////////////////////
- static Socket::Status GetErrorStatus();
+ static Socket::Status getErrorStatus();
};
+} // namespace priv
+
} // namespace sf
-#endif // SFML_SOCKETHELPERUNIX_HPP
+#endif // SFML_SOCKETIMPL_HPP
diff --git a/src/SFML/Network/Win32/SocketHelper.cpp b/src/SFML/Network/Win32/SocketImpl.cpp
index 2d904a7..a3c26b7 100755..100644
--- a/src/SFML/Network/Win32/SocketHelper.cpp
+++ b/src/SFML/Network/Win32/SocketImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,52 +25,62 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketHelper.hpp>
+#include <SFML/Network/Win32/SocketImpl.hpp>
+#include <cstring>
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// Return the value of the invalid socket
+sockaddr_in SocketImpl::createAddress(Uint32 address, unsigned short port)
+{
+ sockaddr_in addr;
+ std::memset(addr.sin_zero, 0, sizeof(addr.sin_zero));
+ addr.sin_addr.s_addr = htonl(address);
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(port);
+
+ return addr;
+}
+
+
////////////////////////////////////////////////////////////
-SocketHelper::SocketType SocketHelper::InvalidSocket()
+SocketHandle SocketImpl::invalidSocket()
{
return INVALID_SOCKET;
}
////////////////////////////////////////////////////////////
-/// Close / destroy a socket
-////////////////////////////////////////////////////////////
-bool SocketHelper::Close(SocketHelper::SocketType Socket)
+void SocketImpl::close(SocketHandle sock)
{
- return closesocket(Socket) != -1;
+ closesocket(sock);
}
////////////////////////////////////////////////////////////
-/// Set a socket as blocking or non-blocking
-////////////////////////////////////////////////////////////
-void SocketHelper::SetBlocking(SocketHelper::SocketType Socket, bool Block)
+void SocketImpl::setBlocking(SocketHandle sock, bool block)
{
- unsigned long Blocking = Block ? 0 : 1;
- ioctlsocket(Socket, FIONBIO, &Blocking);
+ u_long blocking = block ? 0 : 1;
+ ioctlsocket(sock, FIONBIO, &blocking);
}
////////////////////////////////////////////////////////////
-/// Get the last socket error status
-////////////////////////////////////////////////////////////
-Socket::Status SocketHelper::GetErrorStatus()
+Socket::Status SocketImpl::getErrorStatus()
{
switch (WSAGetLastError())
{
case WSAEWOULDBLOCK : return Socket::NotReady;
+ case WSAEALREADY : return Socket::NotReady;
case WSAECONNABORTED : return Socket::Disconnected;
case WSAECONNRESET : return Socket::Disconnected;
case WSAETIMEDOUT : return Socket::Disconnected;
case WSAENETRESET : return Socket::Disconnected;
case WSAENOTCONN : return Socket::Disconnected;
+ case WSAEISCONN : return Socket::Done; // when connecting a non-blocking socket
default : return Socket::Error;
}
}
@@ -85,8 +95,8 @@ struct SocketInitializer
{
SocketInitializer()
{
- WSADATA InitData;
- WSAStartup(MAKEWORD(2,2), &InitData);
+ WSADATA init;
+ WSAStartup(MAKEWORD(2, 2), &init);
}
~SocketInitializer()
@@ -95,6 +105,8 @@ struct SocketInitializer
}
};
-SocketInitializer GlobalInitializer;
+SocketInitializer globalInitializer;
+
+} // namespace priv
} // namespace sf
diff --git a/src/SFML/Window/Linux/Joystick.hpp b/src/SFML/Network/Win32/SocketImpl.hpp
index 3122264..b575869 100755..100644
--- a/src/SFML/Window/Linux/Joystick.hpp
+++ b/src/SFML/Network/Win32/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,19 +22,23 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_JOYSTICKLINUX_HPP
-#define SFML_JOYSTICKLINUX_HPP
+#ifndef SFML_SOCKETIMPL_HPP
+#define SFML_SOCKETIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#if defined(SFML_SYSTEM_LINUX)
- #include <linux/joystick.h>
- #include <fcntl.h>
-#elif defined(SFML_SYSTEM_FREEBSD)
- // #include <sys/joystick.h> ?
- #define ABS_MAX 1
+#ifdef _WIN32_WINDOWS
+ #undef _WIN32_WINDOWS
#endif
+#ifdef _WIN32_WINNT
+ #undef _WIN32_WINNT
+#endif
+#define _WIN32_WINDOWS 0x0501
+#define _WIN32_WINNT 0x0501
+#include <SFML/Network/Socket.hpp>
+#include <winsock2.h>
+#include <ws2tcpip.h>
namespace sf
@@ -42,58 +46,62 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Linux implementation of Joystick
+/// \brief Helper class implementing all the non-portable
+/// socket stuff; this is the Windows version
+///
////////////////////////////////////////////////////////////
-class Joystick
+class SocketImpl
{
public :
////////////////////////////////////////////////////////////
- /// Initialize the instance and bind it to a physical joystick
+ // Types
+ ////////////////////////////////////////////////////////////
+ typedef int AddrLength;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create an internal sockaddr_in address
+ ///
+ /// \param address Target address
+ /// \param port Target port
///
- /// \param Index : Index of the physical joystick to bind to
+ /// \return sockaddr_in ready to be used by socket functions
///
////////////////////////////////////////////////////////////
- void Initialize(unsigned int Index);
+ static sockaddr_in createAddress(Uint32 address, unsigned short port);
////////////////////////////////////////////////////////////
- /// Update the current joystick and return its new state
+ /// \brief Return the value of the invalid socket
///
- /// \return Current state of the joystick
+ /// \return Special value of the invalid socket
///
////////////////////////////////////////////////////////////
- JoystickState UpdateState();
+ static SocketHandle invalidSocket();
////////////////////////////////////////////////////////////
- /// Check if the joystick supports the given axis
+ /// \brief Close and destroy a socket
///
- /// \param Axis : Axis to check
- ///
- /// \return True of the axis is supported, false otherwise
+ /// \param sock Handle of the socket to close
///
////////////////////////////////////////////////////////////
- bool HasAxis(Joy::Axis Axis) const;
+ static void close(SocketHandle sock);
////////////////////////////////////////////////////////////
- /// Get the number of buttons supported by the joystick
+ /// \brief Set a socket as blocking or non-blocking
///
- /// \return Number of buttons
+ /// \param sock Handle of the socket
+ /// \param block New blocking state of the socket
///
////////////////////////////////////////////////////////////
- unsigned int GetButtonsCount() const;
-
-private :
+ static void setBlocking(SocketHandle sock, bool block);
////////////////////////////////////////////////////////////
- // Member data
+ /// Get the last socket error status
+ ///
+ /// \return Status corresponding to the last socket error
+ ///
////////////////////////////////////////////////////////////
- int myDescriptor; ///< Linux descriptor of the joystick
- unsigned int myNbButtons; ///< Number of buttons supported by the joystick
- bool myAxes[Joy::AxisCount]; ///< Supported axes
- JoystickState myState; ///< Current state of the joystick
- int myPovX; ///< Last X position of the POV
- int myPovY; ///< Last Y position of the POV
- char myAxesMapping[ABS_MAX + 1]; ///< Axes mapping (index --> axis id)
+ static Socket::Status getErrorStatus();
};
} // namespace priv
@@ -101,4 +109,4 @@ private :
} // namespace sf
-#endif // SFML_JOYSTICKLINUX_HPP
+#endif // SFML_SOCKETIMPL_HPP
diff --git a/src/SFML/System/CMakeLists.txt b/src/SFML/System/CMakeLists.txt
new file mode 100644
index 0000000..5ef9139
--- /dev/null
+++ b/src/SFML/System/CMakeLists.txt
@@ -0,0 +1,83 @@
+
+set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFML/System)
+set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/System)
+
+# all source files
+set(SRC
+ ${SRCROOT}/Clock.cpp
+ ${INCROOT}/Clock.hpp
+ ${SRCROOT}/Err.cpp
+ ${INCROOT}/Err.hpp
+ ${INCROOT}/Export.hpp
+ ${INCROOT}/InputStream.hpp
+ ${SRCROOT}/Lock.cpp
+ ${INCROOT}/Lock.hpp
+ ${SRCROOT}/Mutex.cpp
+ ${INCROOT}/Mutex.hpp
+ ${INCROOT}/NonCopyable.hpp
+ ${SRCROOT}/Sleep.cpp
+ ${INCROOT}/Sleep.hpp
+ ${SRCROOT}/String.cpp
+ ${INCROOT}/String.hpp
+ ${SRCROOT}/Thread.cpp
+ ${INCROOT}/Thread.hpp
+ ${INCROOT}/Thread.inl
+ ${SRCROOT}/ThreadLocal.cpp
+ ${INCROOT}/ThreadLocal.hpp
+ ${INCROOT}/ThreadLocalPtr.hpp
+ ${INCROOT}/ThreadLocalPtr.inl
+ ${SRCROOT}/Time.cpp
+ ${INCROOT}/Time.hpp
+ ${INCROOT}/Utf.hpp
+ ${INCROOT}/Utf.inl
+ ${INCROOT}/Vector2.hpp
+ ${INCROOT}/Vector2.inl
+ ${INCROOT}/Vector3.hpp
+ ${INCROOT}/Vector3.inl
+)
+source_group("" FILES ${SRC})
+
+# add platform specific sources
+if(WINDOWS)
+ set(PLATFORM_SRC
+ ${SRCROOT}/Win32/ClockImpl.cpp
+ ${SRCROOT}/Win32/ClockImpl.hpp
+ ${SRCROOT}/Win32/MutexImpl.cpp
+ ${SRCROOT}/Win32/MutexImpl.hpp
+ ${SRCROOT}/Win32/SleepImpl.cpp
+ ${SRCROOT}/Win32/SleepImpl.hpp
+ ${SRCROOT}/Win32/ThreadImpl.cpp
+ ${SRCROOT}/Win32/ThreadImpl.hpp
+ ${SRCROOT}/Win32/ThreadLocalImpl.cpp
+ ${SRCROOT}/Win32/ThreadLocalImpl.hpp
+ )
+ source_group("windows" FILES ${PLATFORM_SRC})
+else()
+ set(PLATFORM_SRC
+ ${SRCROOT}/Unix/ClockImpl.cpp
+ ${SRCROOT}/Unix/ClockImpl.hpp
+ ${SRCROOT}/Unix/MutexImpl.cpp
+ ${SRCROOT}/Unix/MutexImpl.hpp
+ ${SRCROOT}/Unix/SleepImpl.cpp
+ ${SRCROOT}/Unix/SleepImpl.hpp
+ ${SRCROOT}/Unix/ThreadImpl.cpp
+ ${SRCROOT}/Unix/ThreadImpl.hpp
+ ${SRCROOT}/Unix/ThreadLocalImpl.cpp
+ ${SRCROOT}/Unix/ThreadLocalImpl.hpp
+ )
+ source_group("unix" FILES ${PLATFORM_SRC})
+endif()
+
+# build the list of external libraries to link
+set(SYSTEM_EXT_LIBS)
+if(UNIX)
+ set(SYSTEM_EXT_LIBS ${SYSTEM_EXT_LIBS} pthread)
+endif()
+if(LINUX)
+ set(SYSTEM_EXT_LIBS ${SYSTEM_EXT_LIBS} rt)
+endif()
+
+# define the sfml-system target
+sfml_add_library(sfml-system
+ SOURCES ${SRC} ${PLATFORM_SRC}
+ EXTERNAL_LIBS ${SYSTEM_EXT_LIBS})
diff --git a/src/SFML/System/Clock.cpp b/src/SFML/System/Clock.cpp
index 65e0e4d..de3c642 100755..100644
--- a/src/SFML/System/Clock.cpp
+++ b/src/SFML/System/Clock.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,35 +26,38 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Clock.hpp>
-#include <SFML/System/Platform.hpp>
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/System/Win32/ClockImpl.hpp>
+#else
+ #include <SFML/System/Unix/ClockImpl.hpp>
+#endif
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Clock::Clock()
+Clock::Clock() :
+m_startTime(priv::ClockImpl::getCurrentTime())
{
- Reset();
}
////////////////////////////////////////////////////////////
-/// Get the time elapsed since last reset
-////////////////////////////////////////////////////////////
-float Clock::GetElapsedTime() const
+Time Clock::getElapsedTime() const
{
- return static_cast<float>(sf::priv::Platform::GetSystemTime() - myStartTime);
+ return priv::ClockImpl::getCurrentTime() - m_startTime;
}
////////////////////////////////////////////////////////////
-/// Restart the timer
-////////////////////////////////////////////////////////////
-void Clock::Reset()
+Time Clock::restart()
{
- myStartTime = sf::priv::Platform::GetSystemTime();
+ Time now = priv::ClockImpl::getCurrentTime();
+ Time elapsed = now - m_startTime;
+ m_startTime = now;
+
+ return elapsed;
}
} // namespace sf
diff --git a/src/SFML/System/Err.cpp b/src/SFML/System/Err.cpp
new file mode 100644
index 0000000..a1224dd
--- /dev/null
+++ b/src/SFML/System/Err.cpp
@@ -0,0 +1,110 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Err.hpp>
+#include <streambuf>
+#include <cstdio>
+
+
+namespace
+{
+// This class will be used as the default streambuf of sf::Err,
+// it outputs to stderr by default (to keep the default behaviour)
+class DefaultErrStreamBuf : public std::streambuf
+{
+public :
+
+ DefaultErrStreamBuf()
+ {
+ // Allocate the write buffer
+ static const int size = 64;
+ char* buffer = new char[size];
+ setp(buffer, buffer + size);
+ }
+
+ ~DefaultErrStreamBuf()
+ {
+ // Synchronize
+ sync();
+
+ // Delete the write buffer
+ delete[] pbase();
+ }
+
+private :
+
+ virtual int overflow(int character)
+ {
+ if ((character != EOF) && (pptr() != epptr()))
+ {
+ // Valid character
+ return sputc(static_cast<char>(character));
+ }
+ else if (character != EOF)
+ {
+ // Not enough space in the buffer: synchronize output and try again
+ sync();
+ return overflow(character);
+ }
+ else
+ {
+ // Invalid character: synchronize output
+ return sync();
+ }
+ }
+
+ virtual int sync()
+ {
+ // Check if there is something into the write buffer
+ if (pbase() != pptr())
+ {
+ // Print the contents of the write buffer into the standard error output
+ std::size_t size = static_cast<int>(pptr() - pbase());
+ fwrite(pbase(), 1, size, stderr);
+
+ // Reset the pointer position to the beginning of the write buffer
+ setp(pbase(), epptr());
+ }
+
+ return 0;
+ }
+};
+}
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+std::ostream& err()
+{
+ static DefaultErrStreamBuf buffer;
+ static std::ostream stream(&buffer);
+
+ return stream;
+}
+
+
+} // namespace sf
diff --git a/src/SFML/System/Lock.cpp b/src/SFML/System/Lock.cpp
index eb0967d..17b1aa2 100755..100644
--- a/src/SFML/System/Lock.cpp
+++ b/src/SFML/System/Lock.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -32,21 +32,17 @@
namespace sf
{
////////////////////////////////////////////////////////////
-/// Construct the lock with a target mutex (lock it)
-////////////////////////////////////////////////////////////
-Lock::Lock(Mutex& Mutex) :
-myMutex(Mutex)
+Lock::Lock(Mutex& mutex) :
+m_mutex(mutex)
{
- myMutex.Lock();
+ m_mutex.lock();
}
////////////////////////////////////////////////////////////
-/// Destructor (unlocks the mutex)
-////////////////////////////////////////////////////////////
Lock::~Lock()
{
- myMutex.Unlock();
+ m_mutex.unlock();
}
} // namespace sf
diff --git a/src/SFML/System/Makefile b/src/SFML/System/Makefile
deleted file mode 100755
index 1cf6211..0000000
--- a/src/SFML/System/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-SRC = $(wildcard *.cpp ./Unix/*.cpp)
-OBJ = $(SRC:.cpp=.o)
-
-ifeq ($(STATIC), yes)
- LIB = libsfml-system-s.a
- LIBNAME = $(LIBPATH)/$(LIB)
- INSTALL =
-else
- LIB = libsfml-system.so
- LIBNAME = $(LIBPATH)/$(LIB).$(VERSION)
- INSTALL = && $(LN) $(LNFLAGS) $(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)
-endif
-
-all: $(LIB)
-
-libsfml-system-s.a: $(OBJ)
- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ)
-
-libsfml-system.so: $(OBJ)
- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lpthread
-
-$(OBJ): %.o: %.cpp
- $(CPP) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf $(OBJ)
-
-mrproper: clean
- @rm -rf $(LIBNAME)
-
-install:
- @($(CP) $(LIBNAME) $(DESTLIBDIR) $(INSTALL))
diff --git a/src/SFML/System/Mutex.cpp b/src/SFML/System/Mutex.cpp
new file mode 100644
index 0000000..e08e25b
--- /dev/null
+++ b/src/SFML/System/Mutex.cpp
@@ -0,0 +1,66 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Mutex.hpp>
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/System/Win32/MutexImpl.hpp>
+#else
+ #include <SFML/System/Unix/MutexImpl.hpp>
+#endif
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Mutex::Mutex()
+{
+ m_mutexImpl = new priv::MutexImpl;
+}
+
+
+////////////////////////////////////////////////////////////
+Mutex::~Mutex()
+{
+ delete m_mutexImpl;
+}
+
+
+////////////////////////////////////////////////////////////
+void Mutex::lock()
+{
+ m_mutexImpl->lock();
+}
+
+
+////////////////////////////////////////////////////////////
+void Mutex::unlock()
+{
+ m_mutexImpl->unlock();
+}
+
+} // namespace sf
diff --git a/src/SFML/System/Randomizer.cpp b/src/SFML/System/Randomizer.cpp
deleted file mode 100755
index 18bbe9c..0000000
--- a/src/SFML/System/Randomizer.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Randomizer.hpp>
-#include <stdlib.h>
-#include <time.h>
-
-
-namespace
-{
- // Set the random numbers sequence seed with the current system time, so that it is always different
- unsigned int SetRandomSeed()
- {
- unsigned int Seed = static_cast<unsigned int>(time(NULL));
- srand(Seed);
- return Seed;
- }
-}
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-// Static member variables
-////////////////////////////////////////////////////////////
-unsigned int Randomizer::ourSeed = SetRandomSeed();
-
-
-////////////////////////////////////////////////////////////
-/// Set the seed for the generator. Using a known seed
-/// allows you to reproduce the same sequence of random number
-////////////////////////////////////////////////////////////
-void Randomizer::SetSeed(unsigned int Seed)
-{
- srand(Seed);
- ourSeed = Seed;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the seed used to generate random numbers the generator.
-////////////////////////////////////////////////////////////
-unsigned int Randomizer::GetSeed()
-{
- return ourSeed;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a random float number in a given range
-////////////////////////////////////////////////////////////
-float Randomizer::Random(float Begin, float End)
-{
- // This is not the best algorithm, but it is fast and will be enough in most cases
- // (see Google for best approaches)
-
- return static_cast<float>(rand()) / RAND_MAX * (End - Begin) + Begin;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a random integer number in a given range
-////////////////////////////////////////////////////////////
-int Randomizer::Random(int Begin, int End)
-{
- // This is not the best algorithm, but it is fast and will be enough in most cases
- // (see Google for best approaches)
-
- return rand() % (End - Begin + 1) + Begin;
-}
-
-} // namespace sf
diff --git a/src/SFML/System/Sleep.cpp b/src/SFML/System/Sleep.cpp
index 81ff885..9415ade 100755..100644
--- a/src/SFML/System/Sleep.cpp
+++ b/src/SFML/System/Sleep.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,18 +26,21 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/System/Sleep.hpp>
-#include <SFML/System/Platform.hpp>
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/System/Win32/SleepImpl.hpp>
+#else
+ #include <SFML/System/Unix/SleepImpl.hpp>
+#endif
namespace sf
{
////////////////////////////////////////////////////////////
-/// Make the current thread sleep for a given time
-////////////////////////////////////////////////////////////
-void Sleep(float Duration)
+void sleep(Time duration)
{
- if (Duration >= 0)
- priv::Platform::Sleep(Duration);
+ if (duration >= Time::Zero)
+ priv::sleepImpl(duration);
}
} // namespace sf
diff --git a/src/SFML/System/String.cpp b/src/SFML/System/String.cpp
new file mode 100644
index 0000000..b4ee135
--- /dev/null
+++ b/src/SFML/System/String.cpp
@@ -0,0 +1,335 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/String.hpp>
+#include <SFML/System/Utf.hpp>
+#include <iterator>
+#include <cstring>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+const std::size_t String::InvalidPos = std::basic_string<Uint32>::npos;
+
+
+////////////////////////////////////////////////////////////
+String::String()
+{
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(char ansiChar, const std::locale& locale)
+{
+ m_string += Utf32::decodeAnsi(ansiChar, locale);
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(wchar_t wideChar)
+{
+ m_string += Utf32::decodeWide(wideChar);
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(Uint32 utf32Char)
+{
+ m_string += utf32Char;
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const char* ansiString, const std::locale& locale)
+{
+ if (ansiString)
+ {
+ std::size_t length = strlen(ansiString);
+ if (length > 0)
+ {
+ m_string.reserve(length + 1);
+ Utf32::fromAnsi(ansiString, ansiString + length, std::back_inserter(m_string), locale);
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const std::string& ansiString, const std::locale& locale)
+{
+ m_string.reserve(ansiString.length() + 1);
+ Utf32::fromAnsi(ansiString.begin(), ansiString.end(), std::back_inserter(m_string), locale);
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const wchar_t* wideString)
+{
+ if (wideString)
+ {
+ std::size_t length = std::wcslen(wideString);
+ if (length > 0)
+ {
+ m_string.reserve(length + 1);
+ Utf32::fromWide(wideString, wideString + length, std::back_inserter(m_string));
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const std::wstring& wideString)
+{
+ m_string.reserve(wideString.length() + 1);
+ Utf32::fromWide(wideString.begin(), wideString.end(), std::back_inserter(m_string));
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const Uint32* utf32String)
+{
+ if (utf32String)
+ m_string = utf32String;
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const std::basic_string<Uint32>& utf32String) :
+m_string(utf32String)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+String::String(const String& copy) :
+m_string(copy.m_string)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+String::operator std::string() const
+{
+ return toAnsiString();
+}
+
+
+////////////////////////////////////////////////////////////
+String::operator std::wstring() const
+{
+ return toWideString();
+}
+
+
+////////////////////////////////////////////////////////////
+std::string String::toAnsiString(const std::locale& locale) const
+{
+ // Prepare the output string
+ std::string output;
+ output.reserve(m_string.length() + 1);
+
+ // Convert
+ Utf32::toAnsi(m_string.begin(), m_string.end(), std::back_inserter(output), 0, locale);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+std::wstring String::toWideString() const
+{
+ // Prepare the output string
+ std::wstring output;
+ output.reserve(m_string.length() + 1);
+
+ // Convert
+ Utf32::toWide(m_string.begin(), m_string.end(), std::back_inserter(output), 0);
+
+ return output;
+}
+
+
+////////////////////////////////////////////////////////////
+String& String::operator =(const String& right)
+{
+ m_string = right.m_string;
+ return *this;
+}
+
+
+////////////////////////////////////////////////////////////
+String& String::operator +=(const String& right)
+{
+ m_string += right.m_string;
+ return *this;
+}
+
+
+////////////////////////////////////////////////////////////
+Uint32 String::operator [](std::size_t index) const
+{
+ return m_string[index];
+}
+
+
+////////////////////////////////////////////////////////////
+Uint32& String::operator [](std::size_t index)
+{
+ return m_string[index];
+}
+
+
+////////////////////////////////////////////////////////////
+void String::clear()
+{
+ m_string.clear();
+}
+
+
+////////////////////////////////////////////////////////////
+std::size_t String::getSize() const
+{
+ return m_string.size();
+}
+
+
+////////////////////////////////////////////////////////////
+bool String::isEmpty() const
+{
+ return m_string.empty();
+}
+
+
+////////////////////////////////////////////////////////////
+void String::erase(std::size_t position, std::size_t count)
+{
+ m_string.erase(position, count);
+}
+
+
+////////////////////////////////////////////////////////////
+void String::insert(std::size_t position, const String& str)
+{
+ m_string.insert(position, str.m_string);
+}
+
+
+////////////////////////////////////////////////////////////
+std::size_t String::find(const String& str, std::size_t start) const
+{
+ return m_string.find(str.m_string, start);
+}
+
+
+////////////////////////////////////////////////////////////
+const Uint32* String::getData() const
+{
+ return m_string.c_str();
+}
+
+
+////////////////////////////////////////////////////////////
+String::Iterator String::begin()
+{
+ return m_string.begin();
+}
+
+
+////////////////////////////////////////////////////////////
+String::ConstIterator String::begin() const
+{
+ return m_string.begin();
+}
+
+
+////////////////////////////////////////////////////////////
+String::Iterator String::end()
+{
+ return m_string.end();
+}
+
+
+////////////////////////////////////////////////////////////
+String::ConstIterator String::end() const
+{
+ return m_string.end();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator ==(const String& left, const String& right)
+{
+ return left.m_string == right.m_string;
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator !=(const String& left, const String& right)
+{
+ return !(left == right);
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <(const String& left, const String& right)
+{
+ return left.m_string < right.m_string;
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >(const String& left, const String& right)
+{
+ return right < left;
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <=(const String& left, const String& right)
+{
+ return !(right < left);
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >=(const String& left, const String& right)
+{
+ return !(left < right);
+}
+
+
+////////////////////////////////////////////////////////////
+String operator +(const String& left, const String& right)
+{
+ String string = left;
+ string += right;
+
+ return string;
+}
+
+} // namespace sf
diff --git a/src/SFML/System/Thread.cpp b/src/SFML/System/Thread.cpp
new file mode 100644
index 0000000..69bf077
--- /dev/null
+++ b/src/SFML/System/Thread.cpp
@@ -0,0 +1,86 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Thread.hpp>
+
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/System/Win32/ThreadImpl.hpp>
+#else
+ #include <SFML/System/Unix/ThreadImpl.hpp>
+#endif
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+Thread::~Thread()
+{
+ wait();
+ delete m_entryPoint;
+}
+
+
+////////////////////////////////////////////////////////////
+void Thread::launch()
+{
+ wait();
+ m_impl = new priv::ThreadImpl(this);
+}
+
+
+////////////////////////////////////////////////////////////
+void Thread::wait()
+{
+ if (m_impl)
+ {
+ m_impl->wait();
+ delete m_impl;
+ m_impl = NULL;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Thread::terminate()
+{
+ if (m_impl)
+ {
+ m_impl->terminate();
+ delete m_impl;
+ m_impl = NULL;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void Thread::run()
+{
+ m_entryPoint->run();
+}
+
+} // namespace sf
diff --git a/src/SFML/System/ThreadLocal.cpp b/src/SFML/System/ThreadLocal.cpp
new file mode 100644
index 0000000..0d134db
--- /dev/null
+++ b/src/SFML/System/ThreadLocal.cpp
@@ -0,0 +1,67 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/ThreadLocal.hpp>
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/System/Win32/ThreadLocalImpl.hpp>
+#else
+ #include <SFML/System/Unix/ThreadLocalImpl.hpp>
+#endif
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+ThreadLocal::ThreadLocal(void* value)
+{
+ m_impl = new priv::ThreadLocalImpl;
+ setValue(value);
+}
+
+
+////////////////////////////////////////////////////////////
+ThreadLocal::~ThreadLocal()
+{
+ delete m_impl;
+}
+
+
+////////////////////////////////////////////////////////////
+void ThreadLocal::setValue(void* value)
+{
+ m_impl->setValue(value);
+}
+
+
+////////////////////////////////////////////////////////////
+void* ThreadLocal::getValue() const
+{
+ return m_impl->getValue();
+}
+
+} // namespace sf
diff --git a/src/SFML/System/Time.cpp b/src/SFML/System/Time.cpp
new file mode 100644
index 0000000..69fd78e
--- /dev/null
+++ b/src/SFML/System/Time.cpp
@@ -0,0 +1,239 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+const Time Time::Zero;
+
+
+////////////////////////////////////////////////////////////
+Time::Time() :
+m_microseconds(0)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+float Time::asSeconds() const
+{
+ return m_microseconds / 1000000.f;
+}
+
+
+////////////////////////////////////////////////////////////
+Int32 Time::asMilliseconds() const
+{
+ return static_cast<Int32>(m_microseconds / 1000);
+}
+
+
+////////////////////////////////////////////////////////////
+Int64 Time::asMicroseconds() const
+{
+ return m_microseconds;
+}
+
+
+////////////////////////////////////////////////////////////
+Time::Time(Int64 microseconds) :
+m_microseconds(microseconds)
+{
+}
+
+
+////////////////////////////////////////////////////////////
+Time seconds(float amount)
+{
+ return Time(static_cast<Int64>(amount * 1000000));
+}
+
+
+////////////////////////////////////////////////////////////
+Time milliseconds(Int32 amount)
+{
+ return Time(static_cast<Int64>(amount) * 1000);
+}
+
+
+////////////////////////////////////////////////////////////
+Time microseconds(Int64 amount)
+{
+ return Time(amount);
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator ==(Time left, Time right)
+{
+ return left.asMicroseconds() == right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator !=(Time left, Time right)
+{
+ return left.asMicroseconds() != right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <(Time left, Time right)
+{
+ return left.asMicroseconds() < right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >(Time left, Time right)
+{
+ return left.asMicroseconds() > right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator <=(Time left, Time right)
+{
+ return left.asMicroseconds() <= right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+bool operator >=(Time left, Time right)
+{
+ return left.asMicroseconds() >= right.asMicroseconds();
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator -(Time right)
+{
+ return microseconds(-right.asMicroseconds());
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator +(Time left, Time right)
+{
+ return microseconds(left.asMicroseconds() + right.asMicroseconds());
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator +=(Time& left, Time right)
+{
+ return left = left + right;
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator -(Time left, Time right)
+{
+ return microseconds(left.asMicroseconds() - right.asMicroseconds());
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator -=(Time& left, Time right)
+{
+ return left = left - right;
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator *(Time left, float right)
+{
+ return seconds(left.asSeconds() * right);
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator *(Time left, Int64 right)
+{
+ return microseconds(left.asMicroseconds() * right);
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator *(float left, Time right)
+{
+ return right * left;
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator *(Int64 left, Time right)
+{
+ return right * left;
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator *=(Time& left, float right)
+{
+ return left = left * right;
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator *=(Time& left, Int64 right)
+{
+ return left = left * right;
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator /(Time left, float right)
+{
+ return seconds(left.asSeconds() / right);
+}
+
+
+////////////////////////////////////////////////////////////
+Time operator /(Time left, Int64 right)
+{
+ return microseconds(left.asMicroseconds() / right);
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator /=(Time& left, float right)
+{
+ return left = left / right;
+}
+
+
+////////////////////////////////////////////////////////////
+Time& operator /=(Time& left, Int64 right)
+{
+ return left = left / right;
+}
+
+} // namespace sf
diff --git a/src/SFML/System/Unicode.cpp b/src/SFML/System/Unicode.cpp
deleted file mode 100755
index 1e46ec0..0000000
--- a/src/SFML/System/Unicode.cpp
+++ /dev/null
@@ -1,300 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Unicode.hpp>
-#include <stdexcept>
-#include <string.h>
-
-
-////////////////////////////////////////////////////////////
-// References :
-//
-// http://www.unicode.org/
-// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.c
-// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.h
-// http://people.w3.org/rishida/scripts/uniview/conversion
-//
-////////////////////////////////////////////////////////////
-
-namespace
-{
- ////////////////////////////////////////////////////////////
- // Generic utility function to compute the number
- // of characters in a null-terminated string of any type
- ////////////////////////////////////////////////////////////
- template <typename T>
- std::size_t StrLen(const T* Str)
- {
- std::size_t Length = 0;
- while (*Str++) Length++;
- return Length;
- }
-
- ////////////////////////////////////////////////////////////
- // Get the current system locale
- ////////////////////////////////////////////////////////////
- std::locale GetCurrentLocale()
- {
- try
- {
- return std::locale("");
- }
- catch (std::runtime_error&)
- {
- // It seems some implementations don't know the "" locale
- // (Mac OS, MinGW)
-
- return std::locale();
- }
- }
-}
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-const int Unicode::UTF8TrailingBytes[256] =
-{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
-};
-const Uint32 Unicode::UTF8Offsets[6] =
-{
- 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080
-};
-const Uint8 Unicode::UTF8FirstBytes[7] =
-{
- 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
-};
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor (empty text)
-////////////////////////////////////////////////////////////
-Unicode::Text::Text()
-{
- // Nothing to do
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the unicode text from any type of string
-////////////////////////////////////////////////////////////
-Unicode::Text::Text(const char* Str)
-{
- if (Str)
- {
- std::size_t Length = StrLen(Str);
- if (Length > 0)
- {
- myUTF32String.reserve(Length + 1);
- Unicode::ANSIToUTF32(Str, Str + Length, std::back_inserter(myUTF32String));
- }
- }
-}
-Unicode::Text::Text(const wchar_t* Str)
-{
- if (Str)
- {
- std::size_t Length = StrLen(Str);
- if (Length > 0)
- {
- // See comments below, in Unicode::Text::Text(const std::wstring&)
- myUTF32String.reserve(Length + 1);
- switch (sizeof(wchar_t))
- {
- case 2 : Unicode::UTF16ToUTF32(Str, Str + Length, std::back_inserter(myUTF32String), 0); break;
- case 4 : std::copy(Str, Str + Length, std::back_inserter(myUTF32String)); break;
- default : break;
- }
- }
- }
-}
-Unicode::Text::Text(const Uint8* Str)
-{
- if (Str)
- {
- std::size_t Length = StrLen(Str);
- if (Length > 0)
- {
- myUTF32String.reserve(Length + 1);
- Unicode::UTF8ToUTF32(Str, Str + Length, std::back_inserter(myUTF32String), 0);
- }
- }
-}
-Unicode::Text::Text(const Uint16* Str)
-{
- if (Str)
- {
- std::size_t Length = StrLen(Str);
- if (Length > 0)
- {
- myUTF32String.reserve(Length+ 1);
- Unicode::UTF16ToUTF32(Str, Str + Length, std::back_inserter(myUTF32String), 0);
- }
- }
-}
-Unicode::Text::Text(const Uint32* Str)
-{
- if (Str)
- myUTF32String = Str;
-}
-Unicode::Text::Text(const std::string& Str)
-{
- myUTF32String.reserve(Str.length() + 1);
- Unicode::ANSIToUTF32(Str.begin(), Str.end(), std::back_inserter(myUTF32String));
-}
-Unicode::Text::Text(const std::wstring& Str)
-{
- // This function assumes that 2-byte large wchar_t are encoded in UTF-16 (Windows), and
- // 4-byte large wchar_t are encoded using UTF-32 (Unix)
- // Is that always true ? (some platforms may use JIS Japanese encoding)
- // The macro __STDC_ISO_10646__ should help identifying UTF-32 compliant implementations
-
- myUTF32String.reserve(Str.length() + 1);
-
- // Select the proper function according to the (supposed) wchar_t system encoding
- switch (sizeof(wchar_t))
- {
- // wchar_t uses UTF-16 -- need a conversion
- case 2 :
- {
- Unicode::UTF16ToUTF32(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
- break;
- }
-
- // wchar_t uses UTF-32 -- direct copy
- case 4 :
- {
- std::copy(Str.begin(), Str.end(), std::back_inserter(myUTF32String));
- break;
- }
-
- // This should never happen
- default : break;
- }
-}
-Unicode::Text::Text(const Unicode::UTF8String& Str)
-{
- myUTF32String.reserve(Str.length() + 1);
- Unicode::UTF8ToUTF32(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
-}
-Unicode::Text::Text(const Unicode::UTF16String& Str)
-{
- myUTF32String.reserve(Str.length() + 1);
- Unicode::UTF16ToUTF32(Str.begin(), Str.end(), std::back_inserter(myUTF32String), 0);
-}
-Unicode::Text::Text(const Unicode::UTF32String& Str)
-{
- myUTF32String = Str;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Operator to cast the text to any type of string
-////////////////////////////////////////////////////////////
-Unicode::Text::operator std::string() const
-{
- std::string Output;
- Output.reserve(myUTF32String.length() + 1);
- Unicode::UTF32ToANSI(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0, Unicode::GetDefaultLocale());
- return Output;
-}
-Unicode::Text::operator std::wstring() const
-{
- // This function assumes that 2-byte large wchar_t are encoded in UTF-16 (Windows), and
- // 4-byte large wchar_t are encoded using UTF-32 (Unix)
- // Is that always true ? (some platforms may use JIS Japanese encoding)
- // The macro __STDC_ISO_10646__ should help identifying UTF-32 compliant implementations
-
- std::wstring Output;
- Output.reserve(myUTF32String.length() + 1);
-
- // Select the proper function according to the (supposed) wchar_t system encoding
- switch (sizeof(wchar_t))
- {
- // wchar_t uses UTF-16 -- need a conversion
- case 2 :
- {
- UTF32ToUTF16(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
- break;
- }
-
- // wchar_t uses UTF-32 -- direct copy
- case 4 :
- {
- std::copy(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output));
- break;
- }
-
- // This should never happen
- default : break;
- }
- return Output;
-}
-Unicode::Text::operator sf::Unicode::UTF8String() const
-{
- Unicode::UTF8String Output;
- Output.reserve(myUTF32String.length() * 4 + 1);
- Unicode::UTF32ToUTF8(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
- return Output;
-}
-Unicode::Text::operator sf::Unicode::UTF16String() const
-{
- Unicode::UTF16String Output;
- Output.reserve(myUTF32String.length() * 2 + 1);
- Unicode::UTF32ToUTF16(myUTF32String.begin(), myUTF32String.end(), std::back_inserter(Output), 0);
- return Output;
-}
-Unicode::Text::operator const sf::Unicode::UTF32String&() const
-{
- return myUTF32String;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the default system locale
-////////////////////////////////////////////////////////////
-const std::locale& Unicode::GetDefaultLocale()
-{
- // It seems getting the default locale is a very expensive operation,
- // so we only do it once and then store the locale for reuse.
- // Warning : this code won't be aware of any change of the default locale during runtime
-
- static std::locale DefaultLocale = GetCurrentLocale();
-
- return DefaultLocale;
-}
-
-} // namespace sf
diff --git a/src/SFML/System/Unix/ClockImpl.cpp b/src/SFML/System/Unix/ClockImpl.cpp
new file mode 100644
index 0000000..813eec4
--- /dev/null
+++ b/src/SFML/System/Unix/ClockImpl.cpp
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Unix/ClockImpl.hpp>
+#ifdef SFML_SYSTEM_MACOS
+ #include <mach/mach_time.h>
+#else
+ #include <time.h>
+#endif
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+Time ClockImpl::getCurrentTime()
+{
+#ifdef SFML_SYSTEM_MACOS
+
+ // Mac OS X specific implementation (it doesn't support clock_gettime)
+ static mach_timebase_info_data_t frequency = {0, 0};
+ if (frequency.denom == 0)
+ mach_timebase_info(&frequency);
+ Uint64 nanoseconds = mach_absolute_time() * frequency.numer / frequency.denom;
+ return sf::microseconds(nanoseconds / 1000);
+
+#else
+
+ // POSIX implementation
+ timespec time;
+ clock_gettime(CLOCK_MONOTONIC, &time);
+ return sf::microseconds(static_cast<Uint64>(time.tv_sec) * 1000000 + time.tv_nsec / 1000);
+
+#endif
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/System/Unix/Platform.hpp b/src/SFML/System/Unix/ClockImpl.hpp
index 0cd0990..e55f5e9 100755..100644
--- a/src/SFML/System/Unix/Platform.hpp
+++ b/src/SFML/System/Unix/ClockImpl.hpp
@@ -1,69 +1,61 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_PLATFORMUNIX_HPP
-#define SFML_PLATFORMUNIX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Unix implementation fo Platform
-/// Give access to various global system functions
-////////////////////////////////////////////////////////////
-class Platform
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get the current system time
- ///
- /// \return System time, in seconds
- ///
- ////////////////////////////////////////////////////////////
- static double GetSystemTime();
-
- ////////////////////////////////////////////////////////////
- /// Suspend the execution of the current thread for a specified time
- ///
- /// \param Time : Time to sleep, in seconds
- ///
- ////////////////////////////////////////////////////////////
- static void Sleep(float Time);
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_PLATFORMUNIX_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CLOCKIMPLUNIX_HPP
+#define SFML_CLOCKIMPLUNIX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Unix implementaton of sf::Clock
+///
+////////////////////////////////////////////////////////////
+class ClockImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current time
+ ///
+ /// \return Current time
+ ///
+ ////////////////////////////////////////////////////////////
+ static Time getCurrentTime();
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_CLOCKIMPLUNIX_HPP
diff --git a/src/SFML/System/Unix/Initializer.cpp b/src/SFML/System/Unix/Initializer.cpp
deleted file mode 100755
index 0d3dbee..0000000
--- a/src/SFML/System/Unix/Initializer.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-
-
-#ifdef SFML_SYSTEM_MACOS
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <iostream>
-#include <cstdio>
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Under Mac OS X, when launching an application from the Finder,
-/// the default working directory is the user home directory ;
-/// when launching from Xcode, the default one is the directory
-/// containing the application. In order to produce a uniform behaviour
-/// and simplify the use of resources, SFML sets the working directory to
-/// the Resources folder of the application bundle.
-/// The "constructor" attribute forces the function to be called
-/// at library loading time.
-////////////////////////////////////////////////////////////
-void InitializeWorkingDirectory(void) __attribute__ ((constructor));
-void InitializeWorkingDirectory(void)
-{
- char PathBuffer[4096];
- bool Encoded = false;
-
- // Get the application bundle
- CFBundleRef MainBundle = CFBundleGetMainBundle();
- assert(MainBundle != NULL);
-
- // Get the resource directory URL
- CFURLRef ResourceDirectory = CFBundleCopyResourcesDirectoryURL(MainBundle);
- assert(ResourceDirectory != NULL);
-
- // Convert it as absolute URL
- CFURLRef AbsoluteURL = CFURLCopyAbsoluteURL(ResourceDirectory);
- assert(AbsoluteURL != NULL);
-
- // Get the path as C string
- Encoded = CFURLGetFileSystemRepresentation(AbsoluteURL, true, (UInt8 *)PathBuffer, 4096);
- assert(Encoded);
-
- // Set the working directory
- chdir(PathBuffer);
-
- CFRelease(AbsoluteURL);
- CFRelease(ResourceDirectory);
-}
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_SYSTEM_MACOS
-
diff --git a/src/SFML/Window/Template for new ports/VideoModeSupport.cpp b/src/SFML/System/Unix/MutexImpl.cpp
index 0057992..8382dca 100755..100644
--- a/src/SFML/Window/Template for new ports/VideoModeSupport.cpp
+++ b/src/SFML/System/Unix/MutexImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,7 +25,7 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Window/XXX/VideoModeSupport.hpp>
+#include <SFML/System/Unix/MutexImpl.hpp>
namespace sf
@@ -33,26 +33,35 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Get supported video modes
-////////////////////////////////////////////////////////////
-void VideoModeSupport::GetSupportedVideoModes(std::vector<VideoMode>& Modes)
+MutexImpl::MutexImpl()
{
- // Get all the supported fullscreen modes and put them in Modes array
+ // Make it recursive to follow the expected behaviour
+ pthread_mutexattr_t attributes;
+ pthread_mutexattr_init(&attributes);
+ pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE);
- // Just care about width, height and bpp (ignore frequency and other attributes)
+ pthread_mutex_init(&m_mutex, &attributes);
+}
- // You must remove duplicates
- // Order doesn't matter (the array will be sorted later)
+////////////////////////////////////////////////////////////
+MutexImpl::~MutexImpl()
+{
+ pthread_mutex_destroy(&m_mutex);
}
////////////////////////////////////////////////////////////
-/// Get current desktop video mode
+void MutexImpl::lock()
+{
+ pthread_mutex_lock(&m_mutex);
+}
+
+
////////////////////////////////////////////////////////////
-VideoMode VideoModeSupport::GetDesktopVideoMode()
+void MutexImpl::unlock()
{
- // Return the current desktop video mode
+ pthread_mutex_unlock(&m_mutex);
}
} // namespace priv
diff --git a/include/SFML/System/Unix/Mutex.hpp b/src/SFML/System/Unix/MutexImpl.hpp
index f8f24b6..b6f728e 100755..100644
--- a/include/SFML/System/Unix/Mutex.hpp
+++ b/src/SFML/System/Unix/MutexImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,8 +22,8 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_MUTEXUNIX_HPP
-#define SFML_MUTEXUNIX_HPP
+#ifndef SFML_MUTEXIMPL_HPP
+#define SFML_MUTEXIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
@@ -34,49 +34,50 @@
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// Mutex defines a mutex (MUTual EXclusion) object,
-/// that allows a thread to lock critical instructions
-/// to avoid simultaneous access with other threads.
-/// See Lock for an efficient way of using it.
+/// \brief Unix implementation of mutexes
////////////////////////////////////////////////////////////
-class SFML_API Mutex : NonCopyable
+class MutexImpl : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- Mutex();
+ MutexImpl();
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
- ~Mutex();
+ ~MutexImpl();
////////////////////////////////////////////////////////////
- /// Lock the mutex
+ /// \brief Lock the mutex
///
////////////////////////////////////////////////////////////
- void Lock();
+ void lock();
////////////////////////////////////////////////////////////
- /// Unlock the mutex
+ /// \brief Unlock the mutex
///
////////////////////////////////////////////////////////////
- void Unlock();
+ void unlock();
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- pthread_mutex_t myMutex; ///< pthread instance of the mutex
+ pthread_mutex_t m_mutex; ///< pthread handle of the mutex
};
+} // namespace priv
+
} // namespace sf
-#endif // SFML_MUTEXUNIX_HPP
+#endif // SFML_MUTEXIMPL_HPP
diff --git a/src/SFML/System/Unix/SleepImpl.cpp b/src/SFML/System/Unix/SleepImpl.cpp
new file mode 100644
index 0000000..d817d58
--- /dev/null
+++ b/src/SFML/System/Unix/SleepImpl.cpp
@@ -0,0 +1,77 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Unix/SleepImpl.hpp>
+#include <pthread.h>
+#include <unistd.h>
+#include <sys/time.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void sleepImpl(Time time)
+{
+ // usleep is not reliable enough (it might block the
+ // whole process instead of just the current thread)
+ // so we must use pthread_cond_timedwait instead
+
+ // this implementation is inspired from Qt
+
+ Uint64 usecs = time.asMicroseconds();
+
+ // get the current time
+ timeval tv;
+ gettimeofday(&tv, NULL);
+
+ // construct the time limit (current time + time to wait)
+ timespec ti;
+ ti.tv_nsec = (tv.tv_usec + (usecs % 1000000)) * 1000;
+ ti.tv_sec = tv.tv_sec + (usecs / 1000000) + (ti.tv_nsec / 1000000000);
+ ti.tv_nsec %= 1000000000;
+
+ // create a mutex and thread condition
+ pthread_mutex_t mutex;
+ pthread_mutex_init(&mutex, 0);
+ pthread_cond_t condition;
+ pthread_cond_init(&condition, 0);
+
+ // wait...
+ pthread_mutex_lock(&mutex);
+ pthread_cond_timedwait(&condition, &mutex, &ti);
+ pthread_mutex_unlock(&mutex);
+
+ // destroy the mutex and condition
+ pthread_cond_destroy(&condition);
+ pthread_mutex_destroy(&mutex);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/System/Unix/SleepImpl.hpp b/src/SFML/System/Unix/SleepImpl.hpp
new file mode 100644
index 0000000..02142e4
--- /dev/null
+++ b/src/SFML/System/Unix/SleepImpl.hpp
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SLEEPIMPLUNIX_HPP
+#define SFML_SLEEPIMPLUNIX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Unix implementation of sf::Sleep
+///
+/// \param time Time to sleep
+///
+////////////////////////////////////////////////////////////
+void sleepImpl(Time time);
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_SLEEPIMPLUNIX_HPP
diff --git a/src/SFML/System/Unix/Thread.cpp b/src/SFML/System/Unix/Thread.cpp
deleted file mode 100755
index da02399..0000000
--- a/src/SFML/System/Unix/Thread.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Unix/Thread.hpp>
-#include <iostream>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Thread::Thread() :
-myIsActive(false),
-myFunction(NULL),
-myUserData(NULL)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the thread from a function pointer
-////////////////////////////////////////////////////////////
-Thread::Thread(Thread::FuncType Function, void* UserData) :
-myIsActive(false),
-myFunction(Function),
-myUserData(UserData)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
-Thread::~Thread()
-{
- // Wait for the thread to finish before destroying the instance
- Wait();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create and run the thread
-////////////////////////////////////////////////////////////
-void Thread::Launch()
-{
- // Wait for the thread to finish, in case it was already running
- Wait();
-
- // Create the thread
- myIsActive = true;
- int Error = pthread_create(&myThread, NULL, &Thread::ThreadFunc, this);
-
- // Error ?
- if (Error != 0)
- {
- std::cerr << "Failed to create thread" << std::endl;
- myIsActive = false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Wait until the thread finishes
-////////////////////////////////////////////////////////////
-void Thread::Wait()
-{
- if (myIsActive)
- {
- // Wait for the thread to finish, no timeout
- pthread_join(myThread, NULL);
-
- // Reset the thread state
- myIsActive = false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Terminate the thread
-/// Terminating a thread with this function is not safe,
-/// you should rather try to make the thread function
-/// terminate by itself
-////////////////////////////////////////////////////////////
-void Thread::Terminate()
-{
- if (myIsActive)
- {
- pthread_cancel(myThread);
- myIsActive = false;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Function called as the thread entry point
-////////////////////////////////////////////////////////////
-void Thread::Run()
-{
- if (myFunction)
- myFunction(myUserData);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Actual thread entry point, dispatches to instances
-////////////////////////////////////////////////////////////
-void* Thread::ThreadFunc(void* UserData)
-{
- // The sfThread instance is stored in the user data
- Thread* ThreadToRun = reinterpret_cast<Thread*>(UserData);
-
- // Tell the thread to handle cancel requests immediatly
- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
-
- // Forward to the instance
- ThreadToRun->Run();
-
- return NULL;
-}
-
-} // namespace sf
diff --git a/src/SFML/System/Win32/Platform.cpp b/src/SFML/System/Unix/ThreadImpl.cpp
index 948d154..663fb71 100755..100644
--- a/src/SFML/System/Win32/Platform.cpp
+++ b/src/SFML/System/Unix/ThreadImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,8 +25,10 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Win32/Platform.hpp>
-#include <windows.h>
+#include <SFML/System/Unix/ThreadImpl.hpp>
+#include <SFML/System/Thread.hpp>
+#include <iostream>
+#include <cassert>
namespace sf
@@ -34,35 +36,48 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Get the current system time
-////////////////////////////////////////////////////////////
-double Platform::GetSystemTime()
+ThreadImpl::ThreadImpl(Thread* owner) :
+m_isActive(true)
{
- static LARGE_INTEGER Frequency;
- static BOOL UseHighPerformanceTimer = QueryPerformanceFrequency(&Frequency);
+ m_isActive = pthread_create(&m_thread, NULL, &ThreadImpl::entryPoint, owner) == 0;
- if (UseHighPerformanceTimer)
- {
- // High performance counter available : use it
- LARGE_INTEGER CurrentTime;
- QueryPerformanceCounter(&CurrentTime);
+ if (!m_isActive)
+ std::cerr << "Failed to create thread" << std::endl;
+}
- return static_cast<double>(CurrentTime.QuadPart) / Frequency.QuadPart;
- }
- else
+
+////////////////////////////////////////////////////////////
+void ThreadImpl::wait()
+{
+ if (m_isActive)
{
- // High performance counter not available : use GetTickCount (less accurate)
- return GetTickCount() * 0.001;
+ assert(pthread_equal(pthread_self(), m_thread) == 0); // A thread cannot wait for itself!
+ pthread_join(m_thread, NULL);
}
}
////////////////////////////////////////////////////////////
-/// Suspend the execution of the current thread for a specified time
+void ThreadImpl::terminate()
+{
+ if (m_isActive)
+ pthread_cancel(m_thread);
+}
+
+
////////////////////////////////////////////////////////////
-void Platform::Sleep(float Time)
+void* ThreadImpl::entryPoint(void* userData)
{
- ::Sleep(static_cast<DWORD>(Time * 1000));
+ // The Thread instance is stored in the user data
+ Thread* owner = static_cast<Thread*>(userData);
+
+ // Tell the thread to handle cancel requests immediatly
+ pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+
+ // Forward to the owner
+ owner->run();
+
+ return NULL;
}
} // namespace priv
diff --git a/src/SFML/System/Unix/ThreadImpl.hpp b/src/SFML/System/Unix/ThreadImpl.hpp
new file mode 100644
index 0000000..5bf32d0
--- /dev/null
+++ b/src/SFML/System/Unix/ThreadImpl.hpp
@@ -0,0 +1,92 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_THREADIMPL_HPP
+#define SFML_THREADIMPL_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+#include <pthread.h>
+
+
+namespace sf
+{
+class Thread;
+
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Unix implementation of threads
+////////////////////////////////////////////////////////////
+class ThreadImpl : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor, launch the thread
+ ///
+ /// \param owner The Thread instance to run
+ ///
+ ////////////////////////////////////////////////////////////
+ ThreadImpl(Thread* owner);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Wait until the thread finishes
+ ///
+ ////////////////////////////////////////////////////////////
+ void wait();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Terminate the thread
+ ///
+ ////////////////////////////////////////////////////////////
+ void terminate();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Global entry point for all threads
+ ///
+ /// \param userData User-defined data (contains the Thread instance)
+ ///
+ /// \return Os specific error code
+ ///
+ ////////////////////////////////////////////////////////////
+ static void* entryPoint(void* userData);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ pthread_t m_thread; ///< pthread thread instance
+ bool m_isActive; ///< Thread state (active or inactive)
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_THREADIMPL_HPP
diff --git a/src/SFML/System/Unix/Platform.cpp b/src/SFML/System/Unix/ThreadLocalImpl.cpp
index 0149c36..7b2ae6d 100755..100644
--- a/src/SFML/System/Unix/Platform.cpp
+++ b/src/SFML/System/Unix/ThreadLocalImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,32 +25,38 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/System/Unix/Platform.hpp>
-#include <unistd.h>
-#include <sys/time.h>
+#include <SFML/System/Unix/ThreadLocalImpl.hpp>
+
namespace sf
{
namespace priv
{
////////////////////////////////////////////////////////////
-/// Get the current system time
-////////////////////////////////////////////////////////////
-double Platform::GetSystemTime()
+ThreadLocalImpl::ThreadLocalImpl()
{
- timeval Time = {0, 0};
- gettimeofday(&Time, NULL);
+ pthread_key_create(&m_key, NULL);
+}
- return Time.tv_sec + Time.tv_usec / 1000000.;
+
+////////////////////////////////////////////////////////////
+ThreadLocalImpl::~ThreadLocalImpl()
+{
+ pthread_key_delete(m_key);
}
////////////////////////////////////////////////////////////
-/// Suspend the execution of the current thread for a specified time
+void ThreadLocalImpl::setValue(void* value)
+{
+ pthread_setspecific(m_key, value);
+}
+
+
////////////////////////////////////////////////////////////
-void Platform::Sleep(float Time)
+void* ThreadLocalImpl::getValue() const
{
- usleep(static_cast<unsigned long>(Time * 1000000));
+ return pthread_getspecific(m_key);
}
} // namespace priv
diff --git a/src/SFML/Window/Cocoa/Joystick.hpp b/src/SFML/System/Unix/ThreadLocalImpl.hpp
index 60c5db2..4d547fb 100755..100644
--- a/src/SFML/Window/Cocoa/Joystick.hpp
+++ b/src/SFML/System/Unix/ThreadLocalImpl.hpp
@@ -1,84 +1,87 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_JOYSTICKCARBON_HPP
-#define SFML_JOYSTICKCARBON_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// ****** implementation of Joystick (unknown implementation kind for now)
-////////////////////////////////////////////////////////////
-class Joystick
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Initialize the instance and bind it to a physical joystick
- ///
- /// \param Index : Index of the physical joystick to bind to
- ///
- ////////////////////////////////////////////////////////////
- void Initialize(unsigned int Index);
-
- ////////////////////////////////////////////////////////////
- /// Update the current joystick and return its new state
- ///
- /// \return Current state of the joystick
- ///
- ////////////////////////////////////////////////////////////
- JoystickState UpdateState();
-
- ////////////////////////////////////////////////////////////
- /// Check if the joystick supports the given axis
- ///
- /// \param Axis : Axis to check
- ///
- /// \return True of the axis is supported, false otherwise
- ///
- ////////////////////////////////////////////////////////////
- bool HasAxis(Joy::Axis Axis) const;
-
- ////////////////////////////////////////////////////////////
- /// Get the number of buttons supported by the joystick
- ///
- /// \return Number of buttons
- ///
- ////////////////////////////////////////////////////////////
- unsigned int GetButtonsCount() const;
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_JOYSTICKCARBON_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_THREADLOCALIMPL_HPP
+#define SFML_THREADLOCALIMPL_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+#include <pthread.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Unix implementation of thread-local storage
+////////////////////////////////////////////////////////////
+class ThreadLocalImpl : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor -- allocate the storage
+ ///
+ ////////////////////////////////////////////////////////////
+ ThreadLocalImpl();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor -- free the storage
+ ///
+ ////////////////////////////////////////////////////////////
+ ~ThreadLocalImpl();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the thread-specific value of the variable
+ ///
+ /// \param value Value of the variable for this thread
+ ///
+ ////////////////////////////////////////////////////////////
+ void setValue(void* value);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Retrieve the thread-specific value of the variable
+ ///
+ /// \return Value of the variable for this thread
+ ///
+ ////////////////////////////////////////////////////////////
+ void* getValue() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ pthread_key_t m_key; ///< Index of our thread-local storage slot
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_THREADLOCALIMPL_HPP
diff --git a/src/SFML/System/Win32/Platform.hpp b/src/SFML/System/Win32/ClockImpl.cpp
index ae27ec4..c3cb711 100755..100644
--- a/src/SFML/System/Win32/Platform.hpp
+++ b/src/SFML/System/Win32/ClockImpl.cpp
@@ -1,69 +1,71 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_PLATFORMWIN32_HPP
-#define SFML_PLATFORMWIN32_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Win32 implementation of Platform.
-/// Gives access to various global system functions
-////////////////////////////////////////////////////////////
-class Platform
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get the current system time
- ///
- /// \return System time, in seconds
- ///
- ////////////////////////////////////////////////////////////
- static double GetSystemTime();
-
- ////////////////////////////////////////////////////////////
- /// Suspend the execution of the current thread for a specified time
- ///
- /// \param Time : Time to sleep, in seconds
- ///
- ////////////////////////////////////////////////////////////
- static void Sleep(float Time);
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_PLATFORMWIN32_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Win32/ClockImpl.hpp>
+#include <windows.h>
+
+
+namespace
+{
+ LARGE_INTEGER getFrequency()
+ {
+ LARGE_INTEGER frequency;
+ QueryPerformanceFrequency(&frequency);
+ return frequency;
+ }
+}
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+Time ClockImpl::getCurrentTime()
+{
+ // Force the following code to run on first core
+ // (see http://msdn.microsoft.com/en-us/library/windows/desktop/ms644904(v=vs.85).aspx)
+ HANDLE currentThread = GetCurrentThread();
+ DWORD_PTR previousMask = SetThreadAffinityMask(currentThread, 1);
+
+ // Get the frequency of the performance counter
+ // (it is constant across the program lifetime)
+ static LARGE_INTEGER frequency = getFrequency();
+
+ // Get the current time
+ LARGE_INTEGER time;
+ QueryPerformanceCounter(&time);
+
+ // Restore the thread affinity
+ SetThreadAffinityMask(currentThread, previousMask);
+
+ // Return the current time as microseconds
+ return sf::microseconds(1000000 * time.QuadPart / frequency.QuadPart);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/System/Win32/ClockImpl.hpp b/src/SFML/System/Win32/ClockImpl.hpp
new file mode 100644
index 0000000..d7e3863
--- /dev/null
+++ b/src/SFML/System/Win32/ClockImpl.hpp
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CLOCKIMPLWIN32_HPP
+#define SFML_CLOCKIMPLWIN32_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Windows implementaton of sf::Clock
+///
+////////////////////////////////////////////////////////////
+class ClockImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current time
+ ///
+ /// \return Current time
+ ///
+ ////////////////////////////////////////////////////////////
+ static Time getCurrentTime();
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_CLOCKIMPLWIN32_HPP
diff --git a/src/SFML/System/Win32/MutexImpl.cpp b/src/SFML/System/Win32/MutexImpl.cpp
new file mode 100644
index 0000000..7e7f0c3
--- /dev/null
+++ b/src/SFML/System/Win32/MutexImpl.cpp
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Win32/MutexImpl.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+MutexImpl::MutexImpl()
+{
+ InitializeCriticalSection(&m_mutex);
+}
+
+
+////////////////////////////////////////////////////////////
+MutexImpl::~MutexImpl()
+{
+ DeleteCriticalSection(&m_mutex);
+}
+
+
+////////////////////////////////////////////////////////////
+void MutexImpl::lock()
+{
+ EnterCriticalSection(&m_mutex);
+}
+
+
+////////////////////////////////////////////////////////////
+void MutexImpl::unlock()
+{
+ LeaveCriticalSection(&m_mutex);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/System/Win32/Mutex.hpp b/src/SFML/System/Win32/MutexImpl.hpp
index 3cf5f9d..db78fb1 100755..100644
--- a/include/SFML/System/Win32/Mutex.hpp
+++ b/src/SFML/System/Win32/MutexImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,8 +22,8 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_MUTEXWIN32_HPP
-#define SFML_MUTEXWIN32_HPP
+#ifndef SFML_MUTEXIMPL_HPP
+#define SFML_MUTEXIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
@@ -34,51 +34,50 @@
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// Mutex defines a mutex (MUTual EXclusion) object,
-/// that allows a thread to lock critical instructions
-/// to avoid simultaneous access with other threads.
-/// The Win32 version uses critical sections, as it is
-/// faster than mutexes.<br/>
-/// See Lock for an efficient way of using it.
+/// \brief Windows implementation of mutexes
////////////////////////////////////////////////////////////
-class SFML_API Mutex : NonCopyable
+class MutexImpl : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
- Mutex();
+ MutexImpl();
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
- ~Mutex();
+ ~MutexImpl();
////////////////////////////////////////////////////////////
- /// Lock the mutex
+ /// \brief Lock the mutex
///
////////////////////////////////////////////////////////////
- void Lock();
+ void lock();
////////////////////////////////////////////////////////////
- /// Unlock the mutex
+ /// \brief Unlock the mutex
///
////////////////////////////////////////////////////////////
- void Unlock();
+ void unlock();
private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- CRITICAL_SECTION myHandle; ///< Win32 handle of the mutex
+ CRITICAL_SECTION m_mutex; ///< Win32 handle of the mutex
};
+} // namespace priv
+
} // namespace sf
-#endif // SFML_MUTEXWIN32_HPP
+#endif // SFML_MUTEXIMPL_HPP
diff --git a/src/SFML/System/Win32/SleepImpl.cpp b/src/SFML/System/Win32/SleepImpl.cpp
new file mode 100644
index 0000000..c3acda6
--- /dev/null
+++ b/src/SFML/System/Win32/SleepImpl.cpp
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Win32/SleepImpl.hpp>
+#include <windows.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void sleepImpl(Time time)
+{
+ ::Sleep(time.asMilliseconds());
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/System/Win32/SleepImpl.hpp b/src/SFML/System/Win32/SleepImpl.hpp
new file mode 100644
index 0000000..e6f4c99
--- /dev/null
+++ b/src/SFML/System/Win32/SleepImpl.hpp
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SLEEPIMPLWIN32_HPP
+#define SFML_SLEEPIMPLWIN32_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/System/Time.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Windows implementation of sf::Sleep
+///
+/// \param time Time to sleep
+///
+////////////////////////////////////////////////////////////
+void sleepImpl(Time time);
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_SLEEPIMPLWIN32_HPP
diff --git a/src/SFML/System/Win32/Thread.cpp b/src/SFML/System/Win32/Thread.cpp
deleted file mode 100755
index 3252100..0000000
--- a/src/SFML/System/Win32/Thread.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Win32/Thread.hpp>
-#include <process.h>
-#include <iostream>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Thread::Thread() :
-myHandle (NULL),
-myFunction(NULL),
-myUserData(NULL)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Construct the thread from a function pointer
-////////////////////////////////////////////////////////////
-Thread::Thread(Thread::FuncType Function, void* UserData) :
-myHandle (NULL),
-myFunction(Function),
-myUserData(UserData)
-{
-
-}
-
-
-////////////////////////////////////////////////////////////
-/// Virtual destructor
-////////////////////////////////////////////////////////////
-Thread::~Thread()
-{
- // Wait for the thread to finish before destroying the instance
- Wait();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create and run the thread
-////////////////////////////////////////////////////////////
-void Thread::Launch()
-{
- // Wait for the thread to finish, in case it was already running
- Wait();
-
- // Create the thread
- myHandle = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, &Thread::ThreadFunc, this, 0, NULL));
-
- // Error ?
- if (myHandle == NULL)
- std::cerr << "Failed to create thread" << std::endl;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Wait until the thread finishes
-////////////////////////////////////////////////////////////
-void Thread::Wait()
-{
- if (myHandle)
- {
- // Wait for the thread to finish, no timeout
- WaitForSingleObject(myHandle, INFINITE);
-
- // Don't forget to close the thread handle (__endthreadex doesn't do it)
- CloseHandle(myHandle);
- myHandle = NULL;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Terminate the thread
-/// Terminating a thread with this function is not safe,
-/// you should rather try to make the thread function
-/// terminate by itself
-////////////////////////////////////////////////////////////
-void Thread::Terminate()
-{
- if (myHandle)
- {
- TerminateThread(myHandle, 0);
- myHandle = NULL;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Function called as the thread entry point
-////////////////////////////////////////////////////////////
-void Thread::Run()
-{
- if (myFunction)
- myFunction(myUserData);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Actual thread entry point, dispatches to instances
-////////////////////////////////////////////////////////////
-unsigned int __stdcall Thread::ThreadFunc(void* UserData)
-{
- // The Thread instance is stored in the user data
- Thread* ThreadInstance = reinterpret_cast<Thread*>(UserData);
-
- // Forward to the instance
- ThreadInstance->Run();
-
- // Optional, but it is cleaner
- _endthreadex(0);
-
- return 0;
-}
-
-} // namespace sf
diff --git a/src/SFML/System/Win32/ThreadImpl.cpp b/src/SFML/System/Win32/ThreadImpl.cpp
new file mode 100644
index 0000000..be80ed4
--- /dev/null
+++ b/src/SFML/System/Win32/ThreadImpl.cpp
@@ -0,0 +1,93 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Win32/ThreadImpl.hpp>
+#include <SFML/System/Thread.hpp>
+#include <SFML/System/Err.hpp>
+#include <cassert>
+#include <process.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+ThreadImpl::ThreadImpl(Thread* owner)
+{
+ m_thread = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, &ThreadImpl::entryPoint, owner, 0, &m_threadId));
+
+ if (!m_thread)
+ err() << "Failed to create thread" << std::endl;
+}
+
+
+////////////////////////////////////////////////////////////
+ThreadImpl::~ThreadImpl()
+{
+ if (m_thread)
+ CloseHandle(m_thread);
+}
+
+
+////////////////////////////////////////////////////////////
+void ThreadImpl::wait()
+{
+ if (m_thread)
+ {
+ assert(m_threadId != GetCurrentThreadId()); // A thread cannot wait for itself!
+ WaitForSingleObject(m_thread, INFINITE);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void ThreadImpl::terminate()
+{
+ if (m_thread)
+ TerminateThread(m_thread, 0);
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int __stdcall ThreadImpl::entryPoint(void* userData)
+{
+ // The Thread instance is stored in the user data
+ Thread* owner = static_cast<Thread*>(userData);
+
+ // Forward to the owner
+ owner->run();
+
+ // Optional, but it is cleaner
+ _endthreadex(0);
+
+ return 0;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/Network/Win32/SocketHelper.hpp b/src/SFML/System/Win32/ThreadImpl.hpp
index 6199c0a..196494f 100755..100644
--- a/include/SFML/Network/Win32/SocketHelper.hpp
+++ b/src/SFML/System/Win32/ThreadImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,69 +22,77 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_SOCKETHELPERWIN32_HPP
-#define SFML_SOCKETHELPERWIN32_HPP
+#ifndef SFML_THREADIMPL_HPP
+#define SFML_THREADIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <winsock2.h>
+#include <SFML/System/NonCopyable.hpp>
+#include <windows.h>
namespace sf
{
+class Thread;
+
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// This class defines helper functions to do all the
-/// non-portable socket stuff. This class is meant for internal
-/// use only
+/// \brief Windows implementation of threads
////////////////////////////////////////////////////////////
-class SFML_API SocketHelper
+class ThreadImpl : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- // Define some socket types
+ /// \brief Default constructor, launch the thread
+ ///
+ /// \param owner The Thread instance to run
+ ///
////////////////////////////////////////////////////////////
- typedef SOCKET SocketType;
- typedef int LengthType;
+ ThreadImpl(Thread* owner);
////////////////////////////////////////////////////////////
- /// Return the value of the invalid socket
- ///
- /// \return Unique value of the invalid socket
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
- static SocketType InvalidSocket();
+ ~ThreadImpl();
////////////////////////////////////////////////////////////
- /// Close / destroy a socket
- ///
- /// \param Socket : Socket to close
- ///
- /// \return True on success
+ /// \brief Wait until the thread finishes
///
////////////////////////////////////////////////////////////
- static bool Close(SocketType Socket);
+ void wait();
////////////////////////////////////////////////////////////
- /// Set a socket as blocking or non-blocking
- ///
- /// \param Socket : Socket to modify
- /// \param Block : New blocking state of the socket
+ /// \brief Terminate the thread
///
////////////////////////////////////////////////////////////
- static void SetBlocking(SocketType Socket, bool Block);
+ void terminate();
+
+private :
////////////////////////////////////////////////////////////
- /// Get the last socket error status
+ /// \brief Global entry point for all threads
///
- /// \return Status corresponding to the last socket error
+ /// \param userData User-defined data (contains the Thread instance)
+ ///
+ /// \return OS specific error code
///
////////////////////////////////////////////////////////////
- static Socket::Status GetErrorStatus();
+ static unsigned int __stdcall entryPoint(void* userData);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ HANDLE m_thread; ///< Win32 thread handle
+ unsigned int m_threadId; ///< Win32 thread identifier
};
+} // namespace priv
+
} // namespace sf
-#endif // SFML_SOCKETHELPERWIN32_HPP
+#endif // SFML_THREADIMPL_HPP
diff --git a/src/SFML/System/Win32/ThreadLocalImpl.cpp b/src/SFML/System/Win32/ThreadLocalImpl.cpp
new file mode 100644
index 0000000..a4d850e
--- /dev/null
+++ b/src/SFML/System/Win32/ThreadLocalImpl.cpp
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Win32/ThreadLocalImpl.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+ThreadLocalImpl::ThreadLocalImpl()
+{
+ m_index = TlsAlloc();
+}
+
+
+////////////////////////////////////////////////////////////
+ThreadLocalImpl::~ThreadLocalImpl()
+{
+ TlsFree(m_index);
+}
+
+
+////////////////////////////////////////////////////////////
+void ThreadLocalImpl::setValue(void* value)
+{
+ TlsSetValue(m_index, value);
+}
+
+
+////////////////////////////////////////////////////////////
+void* ThreadLocalImpl::getValue() const
+{
+ return TlsGetValue(m_index);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Template for new ports/Joystick.hpp b/src/SFML/System/Win32/ThreadLocalImpl.hpp
index bb5243a..d6606f6 100755..100644
--- a/src/SFML/Window/Template for new ports/Joystick.hpp
+++ b/src/SFML/System/Win32/ThreadLocalImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,12 +22,14 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_JOYSTICKXXX_HPP
-#define SFML_JOYSTICKXXX_HPP
+#ifndef SFML_THREADLOCALIMPL_HPP
+#define SFML_THREADLOCALIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+#include <windows.h>
namespace sf
@@ -35,43 +37,46 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Linux implementation of Joystick
+/// \brief Windows implementation of thread-local storage
////////////////////////////////////////////////////////////
-class Joystick
+class ThreadLocalImpl : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Initialize the instance and bind it to a physical joystick
- ///
- /// \param Index : Index of the physical joystick to bind to
+ /// \brief Default constructor -- allocate the storage
///
////////////////////////////////////////////////////////////
- void Initialize(unsigned int Index);
+ ThreadLocalImpl();
////////////////////////////////////////////////////////////
- /// Update the current joystick and return its new state
- ///
- /// \return Current state of the joystick
+ /// \brief Destructor -- free the storage
///
////////////////////////////////////////////////////////////
- JoystickState UpdateState();
+ ~ThreadLocalImpl();
////////////////////////////////////////////////////////////
- /// Get the number of axes supported by the joystick
+ /// \brief Set the thread-specific value of the variable
///
- /// \return Number of axis
+ /// \param value Value of the variable for this thread
///
////////////////////////////////////////////////////////////
- unsigned int GetAxesCount() const;
+ void setValue(void* value);
////////////////////////////////////////////////////////////
- /// Get the number of buttons supported by the joystick
+ /// \brief Retrieve the thread-specific value of the variable
///
- /// \return Number of buttons
+ /// \return Value of the variable for this thread
///
////////////////////////////////////////////////////////////
- unsigned int GetButtonsCount() const;
+ void* getValue() const;
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ DWORD m_index; ///< Index of our thread-local storage slot
};
} // namespace priv
@@ -79,4 +84,4 @@ public :
} // namespace sf
-#endif // SFML_JOYSTICKXXX_HPP
+#endif // SFML_THREADLOCALIMPL_HPP
diff --git a/src/SFML/Window/CMakeLists.txt b/src/SFML/Window/CMakeLists.txt
new file mode 100644
index 0000000..b1d9aca
--- /dev/null
+++ b/src/SFML/Window/CMakeLists.txt
@@ -0,0 +1,132 @@
+
+set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFML/Window)
+set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/Window)
+
+# all source files
+set(SRC
+ ${SRCROOT}/Context.cpp
+ ${INCROOT}/Context.hpp
+ ${INCROOT}/Export.hpp
+ ${SRCROOT}/GlContext.cpp
+ ${SRCROOT}/GlContext.hpp
+ ${SRCROOT}/GlResource.cpp
+ ${INCROOT}/GlResource.hpp
+ ${INCROOT}/ContextSettings.hpp
+ ${INCROOT}/Event.hpp
+ ${SRCROOT}/InputImpl.hpp
+ ${INCROOT}/Joystick.hpp
+ ${SRCROOT}/Joystick.cpp
+ ${SRCROOT}/JoystickImpl.hpp
+ ${SRCROOT}/JoystickManager.cpp
+ ${SRCROOT}/JoystickManager.hpp
+ ${INCROOT}/Keyboard.hpp
+ ${SRCROOT}/Keyboard.cpp
+ ${INCROOT}/Mouse.hpp
+ ${SRCROOT}/Mouse.cpp
+ ${SRCROOT}/VideoMode.cpp
+ ${INCROOT}/VideoMode.hpp
+ ${SRCROOT}/VideoModeImpl.hpp
+ ${SRCROOT}/Window.cpp
+ ${INCROOT}/Window.hpp
+ ${INCROOT}/WindowHandle.hpp
+ ${SRCROOT}/WindowImpl.cpp
+ ${SRCROOT}/WindowImpl.hpp
+ ${INCROOT}/WindowStyle.hpp
+)
+source_group("" FILES ${SRC})
+
+# add platform specific sources
+if(WINDOWS)
+ set(PLATFORM_SRC
+ ${SRCROOT}/Win32/WglContext.cpp
+ ${SRCROOT}/Win32/WglContext.hpp
+ ${SRCROOT}/Win32/InputImpl.cpp
+ ${SRCROOT}/Win32/InputImpl.hpp
+ ${SRCROOT}/Win32/JoystickImpl.cpp
+ ${SRCROOT}/Win32/JoystickImpl.hpp
+ ${SRCROOT}/Win32/VideoModeImpl.cpp
+ ${SRCROOT}/Win32/WindowImplWin32.cpp
+ ${SRCROOT}/Win32/WindowImplWin32.hpp
+ )
+ source_group("windows" FILES ${PLATFORM_SRC})
+elseif(LINUX)
+ set(PLATFORM_SRC
+ ${SRCROOT}/Linux/Display.cpp
+ ${SRCROOT}/Linux/Display.hpp
+ ${SRCROOT}/Linux/GlxContext.cpp
+ ${SRCROOT}/Linux/GlxContext.hpp
+ ${SRCROOT}/Linux/InputImpl.cpp
+ ${SRCROOT}/Linux/InputImpl.hpp
+ ${SRCROOT}/Linux/JoystickImpl.cpp
+ ${SRCROOT}/Linux/JoystickImpl.hpp
+ ${SRCROOT}/Linux/VideoModeImpl.cpp
+ ${SRCROOT}/Linux/WindowImplX11.cpp
+ ${SRCROOT}/Linux/WindowImplX11.hpp
+ )
+ source_group("linux" FILES ${PLATFORM_SRC})
+else() # MACOSX
+ set(PLATFORM_SRC
+ ${SRCROOT}/OSX/cpp_objc_conversion.h
+ ${SRCROOT}/OSX/cpp_objc_conversion.mm
+ ${SRCROOT}/OSX/cg_sf_conversion.hpp
+ ${SRCROOT}/OSX/cg_sf_conversion.cpp
+ ${SRCROOT}/OSX/InputImpl.mm
+ ${SRCROOT}/OSX/InputImpl.hpp
+ ${SRCROOT}/OSX/HIDInputManager.hpp
+ ${SRCROOT}/OSX/HIDInputManager.mm
+ ${SRCROOT}/OSX/HIDJoystickManager.hpp
+ ${SRCROOT}/OSX/HIDJoystickManager.cpp
+ ${SRCROOT}/OSX/JoystickImpl.cpp
+ ${SRCROOT}/OSX/JoystickImpl.hpp
+ ${SRCROOT}/OSX/SFApplication.h
+ ${SRCROOT}/OSX/SFApplication.m
+ ${SRCROOT}/OSX/SFContext.hpp
+ ${SRCROOT}/OSX/SFContext.mm
+ ${SRCROOT}/OSX/SFKeyboardModifiersHelper.h
+ ${SRCROOT}/OSX/SFKeyboardModifiersHelper.mm
+ ${SRCROOT}/OSX/SFOpenGLView.h
+ ${SRCROOT}/OSX/SFOpenGLView.mm
+ ${SRCROOT}/OSX/SFSilentResponder.h
+ ${SRCROOT}/OSX/SFSilentResponder.m
+ ${SRCROOT}/OSX/SFWindow.h
+ ${SRCROOT}/OSX/SFWindow.m
+ ${SRCROOT}/OSX/SFWindowController.h
+ ${SRCROOT}/OSX/SFWindowController.mm
+ ${SRCROOT}/OSX/SFViewController.h
+ ${SRCROOT}/OSX/SFViewController.mm
+ ${SRCROOT}/OSX/VideoModeImpl.cpp
+ ${SRCROOT}/OSX/WindowImplCocoa.hpp
+ ${SRCROOT}/OSX/WindowImplCocoa.mm
+ ${SRCROOT}/OSX/WindowImplDelegateProtocol.h
+ ${SRCROOT}/OSX/AutoreleasePoolWrapper.h
+ ${SRCROOT}/OSX/AutoreleasePoolWrapper.mm
+ )
+ source_group("mac" FILES ${PLATFORM_SRC})
+endif()
+
+# find external libraries
+find_package(OpenGL REQUIRED)
+include_directories(${OPENGL_INCLUDE_DIR})
+if(LINUX)
+ find_package(X11 REQUIRED)
+ if(NOT X11_Xrandr_FOUND)
+ message(FATAL_ERROR "Xrandr library not found")
+ endif()
+ include_directories(${X11_INCLUDE_DIR})
+endif()
+
+# build the list of external libraries to link
+set(WINDOW_EXT_LIBS ${OPENGL_gl_LIBRARY})
+if(WINDOWS)
+ set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} winmm gdi32)
+elseif(LINUX)
+ set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} ${X11_X11_LIB} ${X11_Xrandr_LIB})
+elseif(MACOSX)
+ set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} "-framework Foundation -framework AppKit -framework IOKit -framework Carbon")
+endif()
+
+# define the sfml-window target
+sfml_add_library(sfml-window
+ SOURCES ${SRC} ${PLATFORM_SRC}
+ DEPENDS sfml-system
+ EXTERNAL_LIBS ${WINDOW_EXT_LIBS})
diff --git a/src/SFML/Window/Cocoa/AppController.h b/src/SFML/Window/Cocoa/AppController.h
deleted file mode 100755
index de2d055..0000000
--- a/src/SFML/Window/Cocoa/AppController.h
+++ /dev/null
@@ -1,95 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#import <SFML/Window/VideoMode.hpp>
-#import <Cocoa/Cocoa.h>
-
-
-// Fade operations
-enum {
- FillScreen,
- CleanScreen
-};
-
-@class sfPrivWindow;
-@interface sfPrivAppController : NSObject {
- BOOL myOwningEventLoop;
- sfPrivWindow *myFullscreenWrapper;
- NSAutoreleasePool *myMainPool;
- sf::VideoMode myDesktopMode;
- sf::VideoMode myPrevMode;
-}
-
-////////////////////////////////////////////////////////////
-/// Return the shared AppController instance. Make one if needed.
-////////////////////////////////////////////////////////////
-+ (sfPrivAppController *)sharedController;
-
-////////////////////////////////////////////////////////////
-/// Returns the primay computer's screen
-////////////////////////////////////////////////////////////
-+ (CGDirectDisplayID)primaryScreen;
-
-////////////////////////////////////////////////////////////
-/// Reset notifictions about application focus
-////////////////////////////////////////////////////////////
-- (void)setNotifications;
-
-////////////////////////////////////////////////////////////
-/// Make the menu bar
-////////////////////////////////////////////////////////////
-- (void)makeMenuBar;
-
-////////////////////////////////////////////////////////////
-/// Process all the events and send them to the application
-/// No event is processed if the AppController instance is
-/// not the owner of the event loop (ie: user made his own loop)
-////////////////////////////////////////////////////////////
-- (void)processEvents;
-
-////////////////////////////////////////////////////////////
-/// Set @window as the current fullscreen window
-/// Change the screen resolution if needed according to @window and @fullscreenMode
-////////////////////////////////////////////////////////////
-- (void)setFullscreenWindow:(sfPrivWindow *)window mode:(sf::VideoMode *)fullscreenMode;
-
-////////////////////////////////////////////////////////////
-/// Perform fade operation where 'operation' is one of { FillScreen, CleanScreen}
-/// and 'time' is the time during which you wish the operation to be performed.
-/// Set 'sync' to true if you do not want the method to end before the end
-/// of the fade operation.
-////////////////////////////////////////////////////////////
-- (void)doFadeOperation:(int)operation time:(float)time sync:(bool)sync;
-
-////////////////////////////////////////////////////////////
-/// Return the desktop video mode (made at the instance initialization)
-////////////////////////////////////////////////////////////
-- (const sf::VideoMode&)desktopMode;
-
-@end
-
diff --git a/src/SFML/Window/Cocoa/AppController.mm b/src/SFML/Window/Cocoa/AppController.mm
deleted file mode 100755
index 9356090..0000000
--- a/src/SFML/Window/Cocoa/AppController.mm
+++ /dev/null
@@ -1,578 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#import <SFML/Window/Cocoa/AppController.h>
-#import <SFML/Window/Cocoa/GLKit.h>
-#import <SFML/System.hpp>
-#import <ApplicationServices/ApplicationServices.h>
-#import <iostream>
-
-
-
-/* setAppleMenu disappeared from the headers in 10.4 */
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
-@interface NSApplication (SFML)
-- (void)setAppleMenu:(NSMenu *)menu;
-@end
-#endif
-
-#define ENABLE_FADE_OPERATIONS 1
-
-@implementation NSApplication (SFML)
-
-- (void)setRunning:(BOOL)flag
-{
- // Note: _running is a short, not a BOOL
- if (flag)
- _running = 1;
- else
- _running = 0;
-}
-
-@end
-
-
-@implementation sfPrivAppController
-
-
-////////////////////////////////////////////////////////////
-/// Return an initialized AppController instance
-/// Save the desktop mode
-/// Make the main autorelease pool
-/// Set the application observer
-////////////////////////////////////////////////////////////
-- (id)init
-{
- self = [super init];
-
- if (self != nil) {
- myOwningEventLoop = NO;
-
- // Save the desktop mode
- myDesktopMode = sf::VideoMode::GetDesktopMode();
- myPrevMode = myDesktopMode;
-
- // Make the app autorelease pool
- myMainPool = [[NSAutoreleasePool alloc] init];
-
- if (!myMainPool) {
- [self release];
- throw std::bad_alloc();
- }
-
- // Don't go on if the user handles the app
- if (![NSApp isRunning])
- {
- // Force our application to appear in the Dock and make it able
- // to get focus (even when it's a raw executable)
- ProcessSerialNumber psn;
-
- if (!GetCurrentProcess(&psn)) {
- TransformProcessType(&psn, kProcessTransformToForegroundApplication);
- SetFrontProcess(&psn);
- }
-
- // Make the app
- if (![NSApplication sharedApplication]) {
- [self release];
- throw std::bad_alloc();
- }
-
- [self setNotifications];
-
- if ([NSApp mainMenu] == nil) {
- [self makeMenuBar];
- }
- }
- }
-
- return self;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Clean the controller
-////////////////////////////////////////////////////////////
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [myMainPool release];
- [super dealloc];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the shared AppController instance. Make one if needed.
-////////////////////////////////////////////////////////////
-+ (sfPrivAppController *)sharedController
-{
- // AppController singleton object
- static sfPrivAppController *shared = [[sfPrivAppController alloc] init];
- return shared;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Returns the primay computer's screen
-////////////////////////////////////////////////////////////
-+ (CGDirectDisplayID)primaryScreen
-{
- static BOOL firstTime = YES;
- static CGDirectDisplayID screen = kCGNullDirectDisplay;
-
- if (firstTime) {
- CGDisplayCount numScr;
- CGDisplayErr err = CGGetDisplaysWithPoint(CGPointMake(0, 0), 1, &screen, &numScr);
-
- if (err != kCGErrorSuccess || numScr < 1) {
- std::cerr << "Unable to get primary screen (error code " << err
- << " ). Using the main screen.";
- screen = CGMainDisplayID();
- }
- firstTime = NO;
- }
-
- return screen;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Reset notifictions about application focus
-////////////////////////////////////////////////////////////
-- (void)setNotifications
-{
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc addObserver:self
- selector:@selector(applicationWillDeactivate:)
- name:NSApplicationWillResignActiveNotification
- object:NSApp];
- [nc addObserver:self
- selector:@selector(applicationWillActivate:)
- name:NSApplicationWillBecomeActiveNotification
- object:NSApp];
-
- [nc addObserver:self
- selector:@selector(applicationWillTerminate:)
- name:NSApplicationWillTerminateNotification
- object:NSApp];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Hide all the fullscreen windows and switch back to the desktop display mode
-////////////////////////////////////////////////////////////
-- (void)applicationWillDeactivate:(NSNotification *)aNotification
-{
- // Note: not using fading because it produces reactivation issues
- if (myFullscreenWrapper) {
- myPrevMode = sf::VideoMode::GetDesktopMode();
-
- CFDictionaryRef displayMode = CGDisplayBestModeForParameters ([sfPrivAppController primaryScreen],
- myDesktopMode.BitsPerPixel,
- myDesktopMode.Width,
- myDesktopMode.Height,
- NULL);
-
- // Make the full screen window unvisible
- [[myFullscreenWrapper window] setAlphaValue:0.0f];
-
- // Switch to the wished display mode
- CGDisplaySwitchToMode([sfPrivAppController primaryScreen], displayMode);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Unhide all the fullscreen windows and switch to full screen display mode
-////////////////////////////////////////////////////////////
-- (void)applicationWillActivate:(NSNotification *)aNotification
-{
- if (myFullscreenWrapper) {
- CFDictionaryRef displayMode = CGDisplayBestModeForParameters ([sfPrivAppController primaryScreen],
- myPrevMode.BitsPerPixel,
- myPrevMode.Width,
- myPrevMode.Height,
- NULL);
- [NSMenu setMenuBarVisible:NO];
-
- // Switch to the wished display mode
- CGDisplaySwitchToMode([sfPrivAppController primaryScreen], displayMode);
-
- // Show the fullscreen window if existing
- if (myFullscreenWrapper)
- {
- [[myFullscreenWrapper window] setAlphaValue:1.0f];
- [[myFullscreenWrapper window] center];
- [[myFullscreenWrapper window] makeKeyAndOrderFront:self];
- }
- }
-}
-
-
-- (void)applicationWillTerminate:(NSNotification *)aNotification
-{
- if (myFullscreenWrapper)
- [self setFullscreenWindow:nil mode:NULL];
-}
-
-////////////////////////////////////////////////////////////
-/// Make menu bar
-////////////////////////////////////////////////////////////
-- (void)makeMenuBar
-{
- // Source taken from SDL 1.3
- NSString *appName = nil;
- NSString *title = nil;
- NSMenu *appleMenu = nil;
- NSMenu *fileMenu = nil;
- NSMenu *windowMenu = nil;
- NSMenuItem *menuItem = nil;
- NSMenuItem *quitMenuItem = nil;
-
- // Determine the application name
- appName = [[[NSBundle mainBundle] infoDictionary] objectForKey: @"CFBundleName"];
-
- if (![appName length])
- appName = [[NSProcessInfo processInfo] processName];
-
-
- // Create the main menu bar
- [NSApp setMainMenu:[[NSMenu alloc] init]];
-
- // Create the application menu
- appleMenu = [[NSMenu alloc] initWithTitle:@""];
-
- // Put menu items
- // + 'About' menu item
- title = [@"About " stringByAppendingString:appName];
- [appleMenu addItemWithTitle:title
- action:@selector(orderFrontStandardAboutPanel:)
- keyEquivalent:@""];
-
- [appleMenu addItem:[NSMenuItem separatorItem]];
-
- // + 'Hide' menu item
- title = [@"Hide " stringByAppendingString:appName];
- [appleMenu addItemWithTitle:title
- action:@selector(hide:)
- keyEquivalent:@"h"];
-
- // + 'Hide other' menu item
- menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others"
- action:@selector(hideOtherApplications:)
- keyEquivalent:@"h"];
- [menuItem setKeyEquivalentModifierMask:NSAlternateKeyMask | NSCommandKeyMask];
-
- // + 'Show all' menu item
- [appleMenu addItemWithTitle:@"Show All"
- action:@selector(unhideAllApplications:)
- keyEquivalent:@""];
-
- [appleMenu addItem:[NSMenuItem separatorItem]];
-
- // + 'Quit' menu item
- title = [@"Quit " stringByAppendingString:appName];
- quitMenuItem = [[[NSMenuItem alloc]
- initWithTitle:title
- action:@selector(terminate:)
- keyEquivalent:@"q"] autorelease];
- //[quitMenuItem setTarget:self];
- [appleMenu addItem:quitMenuItem];
-
- // Put the menu into the menubar
- menuItem = [[NSMenuItem alloc]
- initWithTitle:@""
- action:nil
- keyEquivalent:@""];
- [menuItem setSubmenu:appleMenu];
- [[NSApp mainMenu] addItem:menuItem];
- [menuItem release];
-
- // Tell the application object that this is now the application menu
- [NSApp setAppleMenu:appleMenu];
- [appleMenu release];
-
- // 'File' menu
- fileMenu = [[NSMenu alloc]
- initWithTitle:@"File"];
-
- // + 'Close' menu item
- menuItem = [[NSMenuItem alloc]
- initWithTitle:@"Close"
- action:@selector(performClose:)
- keyEquivalent:@"w"];
- [fileMenu addItem:menuItem];
- [menuItem release];
-
- // + 'File' menu item (head)
- menuItem = [[NSMenuItem alloc]
- initWithTitle:@"File"
- action:nil
- keyEquivalent:@""];
- [menuItem setSubmenu:fileMenu];
- [[NSApp mainMenu] addItem:menuItem];
- [menuItem release];
-
- // 'Window' menu
- windowMenu = [[NSMenu alloc]
- initWithTitle:@"Window"];
-
- // + 'Minimize' menu item
- menuItem = [[NSMenuItem alloc]
- initWithTitle:@"Minimize"
- action:@selector(performMiniaturize:)
- keyEquivalent:@"m"];
- [windowMenu addItem:menuItem];
- [menuItem release];
-
- // + 'Window' menu item (head)
- menuItem = [[NSMenuItem alloc]
- initWithTitle:@"Window"
- action:nil keyEquivalent:@""];
- [menuItem setSubmenu:windowMenu];
- [[NSApp mainMenu] addItem:menuItem];
- [menuItem release];
-
- // Tell the application object that this is now the window menu
- [NSApp setWindowsMenu:windowMenu];
- [windowMenu release];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Process all the events and send them to the application
-/// No event is processed if the AppController instance is
-/// not the owner of the event loop (ie: user made his own loop)
-////////////////////////////////////////////////////////////
-- (void)processEvents
-{
- // Check there is a run loop
- if (![NSApp isRunning])
- {
- // Get the ownershipt of event handling if not and run
- [NSApp finishLaunching];
- [NSApp setRunning:YES];
- myOwningEventLoop = YES;
- }
-
- NSEvent *event = nil;
-
- if (myOwningEventLoop)
- {
- // Clean the autorelease pool
- [myMainPool release];
- myMainPool = [[NSAutoreleasePool alloc] init];
-
- // Minimal event loop
- while (nil != (event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:nil
- inMode:NSDefaultRunLoopMode
- dequeue:YES]))
- {
- [NSApp sendEvent:event];
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Set @window as the current fullscreen window
-/// Change the screen resolution if needed according to @window and @fullscreenMode
-////////////////////////////////////////////////////////////
-- (void)setFullscreenWindow:(sfPrivWindow *)aWindow mode:(sf::VideoMode *)fullscreenMode
-{
- // If we have a fullscreen window and want to remove it
- if (aWindow == nil && myFullscreenWrapper)
- {
- // Get the CoreGraphics display mode according to the desktop mode
- CFDictionaryRef displayMode = CGDisplayBestModeForParameters ([sfPrivAppController primaryScreen],
- myDesktopMode.BitsPerPixel,
- myDesktopMode.Width,
- myDesktopMode.Height,
- NULL);
-
-#if ENABLE_FADE_OPERATIONS
- // Fade to black screen
- [self doFadeOperation:FillScreen time:0.2f sync:true];
-#endif
-
- // Switch to the desktop display mode
- CGDisplaySwitchToMode([sfPrivAppController primaryScreen], displayMode);
-
- // Close the window
- [[myFullscreenWrapper window] close];
-
- // Show the menu bar
- [NSMenu setMenuBarVisible:YES];
-
-#if ENABLE_FADE_OPERATIONS
- // Fade to normal screen
- [self doFadeOperation:CleanScreen time:0.5f sync:true];
-#endif
-
- // Release the saved window wrapper
- myFullscreenWrapper = nil;
- }
- else if (aWindow)
- {
- // else if we want to SET fullscreen
- assert(fullscreenMode != NULL);
-
- // Get the CoreGraphics display mode according to the given sf mode
- CFDictionaryRef displayMode = CGDisplayBestModeForParameters ([sfPrivAppController primaryScreen],
- fullscreenMode->BitsPerPixel,
- fullscreenMode->Width,
- fullscreenMode->Height,
- NULL);
-
-#if ENABLE_FADE_OPERATIONS
- // Fade to a black screen
- [self doFadeOperation:FillScreen time:0.5f sync:true];
-#endif
-
- if (!myFullscreenWrapper)
- {
- // Hide the main menu bar
- [NSMenu setMenuBarVisible:NO];
- }
-
- if (myPrevMode != *fullscreenMode)
- {
- // Switch to the wished display mode
- myPrevMode = *fullscreenMode;
- CGDisplaySwitchToMode([sfPrivAppController primaryScreen], displayMode);
- }
-
- if (myFullscreenWrapper)
- {
- [[myFullscreenWrapper window] close];
- }
-
- // Open and center the window
- [[aWindow window] makeKeyAndOrderFront:nil];
- [[aWindow window] center];
-
-#if ENABLE_FADE_OPERATIONS
- // Fade to normal screen
- [self doFadeOperation:CleanScreen time:0.2f sync:false];
-#endif
-
- // Save the fullscreen wrapper
- myFullscreenWrapper = aWindow;
- }
- else
- {
- std::cerr << "Inconcistency error for arguments given to -[sfPrivAppController setFullscreenWindow:mode:]" << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Perform fade operation where 'operation' is one of {FillScreen, CleanScreen}
-/// and 'time' is the time during which you wish the operation to be performed.
-/// Set 'sync' to true if you do not want the method to end before the end
-/// of the fade operation. Pass the last used token or a new one if you are
-/// using this method for the first time. This lets the method release some
-/// resources when doing CleanScreen operation.
-////////////////////////////////////////////////////////////
-- (void) doFadeOperation:(int)operation time:(float)time sync:(bool)sync
-{
- static CGDisplayFadeReservationToken prevToken = kCGDisplayFadeReservationInvalidToken;
- CGDisplayFadeReservationToken token = prevToken;
-
- CGError result = 0, capture = 0;
-
- if (operation == FillScreen) {
- // Get access for the fade operation
- result = CGAcquireDisplayFadeReservation((int)(3 + time), &token);
-
- if (!result) {
- // Capture display but do not fill the screen with black
- // so that we can see the fade operation
- capture = CGDisplayCaptureWithOptions([sfPrivAppController primaryScreen], kCGCaptureNoFill);
-
- if (!capture) {
- // Do the increasing fade operation
- CGDisplayFade(token, time,
- kCGDisplayBlendNormal,
- kCGDisplayBlendSolidColor,
- 0.0f, 0.0f, 0.0f, sync);
-
- // Now, release the non black-filling capture
- CGDisplayRelease([sfPrivAppController primaryScreen]);
-
- // And capture with filling
- // so that we don't see the switching in the meantime
- CGDisplayCaptureWithOptions([sfPrivAppController primaryScreen], kCGCaptureNoOptions);
- }
-
- prevToken = token;
- }
- } else if (operation == CleanScreen) {
- // Get access for the fade operation
- if (token == kCGDisplayFadeReservationInvalidToken)
- result = CGAcquireDisplayFadeReservation((int)(3 + time), &token);
-
- if (!result) {
- if (!capture) {
- // Release the black-filling capture
- CGDisplayRelease([sfPrivAppController primaryScreen]);
-
- // Capture the display but do not fill with black (still for the fade operation)
- CGDisplayCaptureWithOptions([sfPrivAppController primaryScreen], kCGCaptureNoFill);
-
- // Do the decreasing fading
- CGDisplayFade(token, time,
- kCGDisplayBlendSolidColor,
- kCGDisplayBlendNormal,
- 0.0f, 0.0f, 0.0f, sync);
-
- // Release the fade operation token
- CGReleaseDisplayFadeReservation(token);
-
- // Invalidate the given token
- prevToken = kCGDisplayFadeReservationInvalidToken;
- }
-
- // Release the captured display
- CGDisplayRelease([sfPrivAppController primaryScreen]);
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Return the desktop video mode (made at the instance initialization)
-////////////////////////////////////////////////////////////
-- (const sf::VideoMode&)desktopMode
-{
- return myDesktopMode;
-}
-
-@end
-
diff --git a/src/SFML/Window/Cocoa/GLKit.h b/src/SFML/Window/Cocoa/GLKit.h
deleted file mode 100755
index f4cff4a..0000000
--- a/src/SFML/Window/Cocoa/GLKit.h
+++ /dev/null
@@ -1,233 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#import <Cocoa/Cocoa.h>
-#import <SFML/Window/Cocoa/WindowImplCocoa.hpp>
-
-
-////////////////////////////////////////////////////////////
-/// Window independant OpenGL context class
-////////////////////////////////////////////////////////////
-@interface sfPrivGLContext : NSOpenGLContext
-
-////////////////////////////////////////////////////////////
-/// Return the shared OpenGL context instance (making one if needed)
-////////////////////////////////////////////////////////////
-+ (id)sharedContext;
-
-////////////////////////////////////////////////////////////
-/// Make a new OpenGL context according to the @attribs settings
-/// and the shared context @context
-////////////////////////////////////////////////////////////
-- (id)initWithAttributes:(sf::WindowSettings&)attribs
- mode:(const sf::VideoMode&)mode
- sharedContext:(sfPrivGLContext *)context;
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Customized Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-@interface sfPrivGLView : NSOpenGLView
-{
- sf::priv::WindowImplCocoa *myDelegate;
- sfPrivGLContext *myGLContext;
-}
-
-////////////////////////////////////////////////////////////
-/// Make a new view according the the rect @frame,
-/// the video mode @mode, the window settings @settings
-/// @delegate must not be null
-////////////////////////////////////////////////////////////
-- (id)initWithFrame:(NSRect)frame
- mode:(const sf::VideoMode&)mode
- settings:(sf::WindowSettings&)settings;
-
-
-////////////////////////////////////////////////////////////
-/// Sets @aDelegate as the view delegate
-////////////////////////////////////////////////////////////
-- (void)setDelegate:(sf::priv::WindowImplCocoa *)aDelegate;
-
-////////////////////////////////////////////////////////////
-/// Returns the view delegate
-////////////////////////////////////////////////////////////
-- (sf::priv::WindowImplCocoa *)delegate;
-
-////////////////////////////////////////////////////////////
-/// Finish view setting (after having added it to the window)
-////////////////////////////////////////////////////////////
-- (void)finishInitialization;
-
-////////////////////////////////////////////////////////////
-/// Forward call to en/disable vertical synchronization
-////////////////////////////////////////////////////////////
-- (void)enableVerticalSync:(bool)flag;
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the OpenGL context as active according to @flag
-////////////////////////////////////////////////////////////
-- (void)setActive:(bool)flag;
-
-////////////////////////////////////////////////////////////
-/// Forward call to flush the OpenGL context
-////////////////////////////////////////////////////////////
-- (void)flushBuffer;
-
-@end
-
-////////////////////////////////////////////////////////////
-/// Parent class for handling general SFML window stuff
-////////////////////////////////////////////////////////////
-@interface sfPrivWindow : NSObject
-{
-@private
- NSWindow *myWindow;
- sfPrivGLView *myView;
-}
-
-////////////////////////////////////////////////////////////
-/// Return a reference to the internal Cocoa window
-////////////////////////////////////////////////////////////
-- (NSWindow *)window;
-
-////////////////////////////////////////////////////////////
-/// Return a reference to the internal Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-- (sfPrivGLView *)view;
-
-////////////////////////////////////////////////////////////
-/// Sets @aDelegate as the window delegate
-////////////////////////////////////////////////////////////
-- (void)setDelegate:(sf::priv::WindowImplCocoa *)aDelegate;
-
-////////////////////////////////////////////////////////////
-/// Returns the window delegate
-////////////////////////////////////////////////////////////
-- (sf::priv::WindowImplCocoa *)delegate;
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window position on screen
-////////////////////////////////////////////////////////////
-- (void)setPosition:(NSPoint)pos;
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window size
-////////////////////////////////////////////////////////////
-- (void)setSize:(NSSize)size;
-
-////////////////////////////////////////////////////////////
-/// Return the mouse location relative to the internal window
-////////////////////////////////////////////////////////////
-- (NSPoint)mouseLocation;
-
-////////////////////////////////////////////////////////////
-/// Return whether the mouse is on our window
-////////////////////////////////////////////////////////////
-- (BOOL)mouseInside;
-
-////////////////////////////////////////////////////////////
-/// Close or open the window
-////////////////////////////////////////////////////////////
-- (void)show:(bool)flag;
-
-////////////////////////////////////////////////////////////
-/// Forward call to en/disable the OpenGL view vertical synchronization
-////////////////////////////////////////////////////////////
-- (void)enableVerticalSync:(bool)flag;
-
-////////////////////////////////////////////////////////////
-/// Forward 'setActive' call the the OpenGL view
-////////////////////////////////////////////////////////////
-- (void)setActive:(bool)flag;
-
-////////////////////////////////////////////////////////////
-/// Forward call to flush the OpenGL view
-////////////////////////////////////////////////////////////
-- (void)flushBuffer;
-
-@end
-
-////////////////////////////////////////////////////////////
-/// Class for creating new SFML windows from informations
-////////////////////////////////////////////////////////////
-@interface sfPrivOwnedWindow : sfPrivWindow
-{
-@private
- sf::VideoMode myFullscreenMode;
- bool myIsFullscreen;
-}
-
-////////////////////////////////////////////////////////////
-/// Creates and returns a new SFML window handler with
-/// the given parameters
-////////////////////////////////////////////////////////////
-- (id)initWithVideoMode:(sf::VideoMode&)aMode
- settings:(sf::WindowSettings&)someSettings
- style:(unsigned long)aStyle
- title:(NSString *)aTitle;
-
-////////////////////////////////////////////////////////////
-/// Returns the window's fullscreen state
-////////////////////////////////////////////////////////////
-- (BOOL)isFullscreen;
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Class for creating SFML windows from Cocoa windows
-////////////////////////////////////////////////////////////
-@interface sfPrivImportedWindow : sfPrivWindow
-
-////////////////////////////////////////////////////////////
-/// Returns a new SFML window handler with the given window
-/// and parameters
-////////////////////////////////////////////////////////////
-- (id)initWithWindow:(NSWindow *)aWindow
- settings:(sf::WindowSettings&)someSettings;
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Class for creating SFML windows from Cocoa views
-////////////////////////////////////////////////////////////
-@interface sfPrivImportedView : sfPrivWindow
-{
- NSView *parentView;
-}
-
-////////////////////////////////////////////////////////////
-/// Returns a new SFML window handler with the given view
-/// and parameters
-////////////////////////////////////////////////////////////
-- (id)initWithView:(NSView *)aView
- settings:(sf::WindowSettings&)someSettings;
-
-@end
diff --git a/src/SFML/Window/Cocoa/GLKit.mm b/src/SFML/Window/Cocoa/GLKit.mm
deleted file mode 100755
index f19fa77..0000000
--- a/src/SFML/Window/Cocoa/GLKit.mm
+++ /dev/null
@@ -1,1124 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#import <SFML/Window/Cocoa/GLKit.h>
-#import <SFML/Window/Cocoa/AppController.h>
-#import <SFML/Window/VideoMode.hpp>
-#import <SFML/Window/WindowStyle.hpp>
-#import <OpenGL/gl.h>
-#import <iostream>
-
-
-@interface sfPrivWindow (Protected)
-
-////////////////////////////////////////////////////////////
-/// Registers a reference to the internal Cocoa window
-////////////////////////////////////////////////////////////
-- (void)setWindow:(NSWindow *)aWindow;
-
-////////////////////////////////////////////////////////////
-/// Registers the the OpenGL view and adds it to its parent container
-////////////////////////////////////////////////////////////
-- (void)putOpenGLView:(sfPrivGLView *)aView;
-
-////////////////////////////////////////////////////////////
-/// Registers a reference to the internal Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-- (void)setView:(sfPrivGLView *)aView;
-
-@end
-
-@interface sfPrivOwnedWindow (Private)
-
-////////////////////////////////////////////////////////////
-/// Sets the window's fullscreen state
-////////////////////////////////////////////////////////////
-- (void)setFullscreen:(BOOL)aFlag;
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Window independant OpenGL context class
-////////////////////////////////////////////////////////////
-@implementation sfPrivGLContext
-
-
-////////////////////////////////////////////////////////////
-/// Return the shared OpenGL context instance (making one if needed)
-////////////////////////////////////////////////////////////
-+ (id)sharedContext
-{
- // Make a new context with the default parameters
- sf::WindowSettings params;
- sf::VideoMode m;
- static sfPrivGLContext *sharedCtx = [[sfPrivGLContext alloc] initWithAttributes:params
- mode:m
- sharedContext:nil];
- return sharedCtx;
-}
-
-- (void)dealloc
-{
- [[sfPrivGLContext sharedContext] release];
- [super dealloc];
-}
-
-////////////////////////////////////////////////////////////
-/// Make a new OpenGL context according to the @attribs settings
-/// and the shared context @context
-////////////////////////////////////////////////////////////
-- (id)initWithAttributes:(sf::WindowSettings&)attribs mode:(const sf::VideoMode&)mode sharedContext:(sfPrivGLContext *)sharedContext
-{
- // Note about antialiasing and other context attributes :
- // OpenGL context sharing does not allow the shared contexts to use different attributes.
- // The point is that the default shared global OpenGL context uses default parameters.
- // That means that all the other context *should* use the same paramaters.
- // Fortunately some values parameters for some parameters are compatible, but some are not
- // among which : the antialising level.
- //
- // I've no way to fix this for now.
-
- if (attribs.AntialiasingLevel) {
- NSLog(@"Warning: antialiasing settings are inhibited on Mac OS X for technical reasons");
- }
-
- if (attribs.StencilBits != 8) {
- NSLog(@"Warning: stencil bits settings are inhibited on Mac OS X for technical reasons");
- }
-
- NSOpenGLPixelFormat *myPixelFormat = nil;
- unsigned idx = 0;
-
- // Attributes list
- NSOpenGLPixelFormatAttribute ctxtAttribs[15] = {(NSOpenGLPixelFormatAttribute) 0};
-
- // Accelerated, double buffered
- ctxtAttribs[idx++] = NSOpenGLPFAClosestPolicy;
- ctxtAttribs[idx++] = NSOpenGLPFADoubleBuffer;
- ctxtAttribs[idx++] = NSOpenGLPFAAccelerated;
-
- // Force use of first screen
- //ctxtAttribs[idx++] = NSOpenGLPFAScreenMask;
- //ctxtAttribs[idx++] = CGDisplayIDToOpenGLDisplayMask([sfPrivAppController primaryScreen]);
-
- // windowed context (even fullscreen mode uses a window)
- ctxtAttribs[idx++] = NSOpenGLPFAWindow;
-
- // Color buffer bits ; usually 32 bits per pixel
- ctxtAttribs[idx++] = NSOpenGLPFAColorSize;
-
- // well.. whatever I put here, the color size is always 24 bits on my computer..
- ctxtAttribs[idx++] = (NSOpenGLPixelFormatAttribute) mode.BitsPerPixel;
-
- // Alpha buffer size
- // FIXME: I don't really remember whether I can safely use the user video mode settings
- // to set this attribute (because of the shared context attributes conflicts)
- if (mode.BitsPerPixel > 24) {
- ctxtAttribs[idx++] = NSOpenGLPFAAlphaSize;
- ctxtAttribs[idx++] = (NSOpenGLPixelFormatAttribute) 8;
- }
-
- // Depth buffer size
- ctxtAttribs[idx++] = NSOpenGLPFADepthSize;
- ctxtAttribs[idx++] = (NSOpenGLPixelFormatAttribute) attribs.DepthBits;
-
- // Stencil buffer bits
- // Note: even with "NSOpenGLPFAClosestPolicy" set, the NSOpenGLPFAStencilSize value must be an valid and exact one
- // I've been looking for possible diffferent default stencil bits values among different Apple computers
- // but I can't again get the website I found oneaday
- // (describing all the graphic cards used by Apple, the supported extensions, etc).
- ctxtAttribs[idx++] = NSOpenGLPFAStencilSize;
- ctxtAttribs[idx++] = (NSOpenGLPixelFormatAttribute) /* attribs.StencilBits */ 8;
-
- myPixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:ctxtAttribs];
-
- if (myPixelFormat) {
- self = [super initWithFormat:myPixelFormat
- shareContext:[sharedContext retain]];
-
- // Get the effective properties from our OpenGL context
- GLint tmpDepthSize = 0, tmpStencilBits = 0, tmpAntialiasingLevel = 0;
-
- if (self) {
- [myPixelFormat getValues:&tmpDepthSize
- forAttribute:NSOpenGLPFADepthSize
- forVirtualScreen:[self currentVirtualScreen]];
-
- [myPixelFormat getValues:&tmpStencilBits
- forAttribute:NSOpenGLPFAStencilSize
- forVirtualScreen:[self currentVirtualScreen]];
-
- [myPixelFormat getValues:&tmpAntialiasingLevel
- forAttribute:NSOpenGLPFASamples
- forVirtualScreen:[self currentVirtualScreen]];
- }
-
-
- attribs.DepthBits = (unsigned) tmpDepthSize;
- attribs.StencilBits = (unsigned) tmpStencilBits;
- attribs.AntialiasingLevel = (unsigned) tmpAntialiasingLevel;
-
- [myPixelFormat release];
- } else {
- NSLog(@"NSOpenGLPixelFormat creation failed! (invalid video settings ?)");
- }
-
- return self;
-}
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Customized Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-@implementation sfPrivGLView
-
-////////////////////////////////////////////////////////////
-/// Make a new view according the the rect @frame,
-/// the video mode @mode, the window settings @settings
-/// and the sf window delegate @delegate
-/// @delegate must not be null
-////////////////////////////////////////////////////////////
-- (id)initWithFrame:(NSRect)frame
- mode:(const sf::VideoMode&)mode
- settings:(sf::WindowSettings&)settings
-{
- // make the view
- self = [super initWithFrame:frame pixelFormat:nil];
-
- if (self)
- {
- // enabled auto-resizing
- [self setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
-
- // make the OpenGL context
- myGLContext = [[sfPrivGLContext alloc] initWithAttributes:settings
- mode:mode
- sharedContext:[sfPrivGLContext sharedContext]];
-
- if (!myGLContext) {
- [self release];
- return nil;
- }
-
- // We need to update the OpenGL view when it's resized
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc addObserver:self
- selector:@selector(viewFrameDidChange:)
- name:NSViewFrameDidChangeNotification
- object:self];
- }
-
- return self;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Clean the instance
-////////////////////////////////////////////////////////////
-- (void)dealloc
-{
- // Remove the observer and release the OpenGL context
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [myGLContext release];
-
- [super dealloc];
-}
-
-////////////////////////////////////////////////////////////
-/// Sets @aDelegate as the view delegate
-////////////////////////////////////////////////////////////
-- (void)setDelegate:(sf::priv::WindowImplCocoa *)aDelegate
-{
- myDelegate = aDelegate;
-}
-
-////////////////////////////////////////////////////////////
-/// Returns the view delegate
-////////////////////////////////////////////////////////////
-- (sf::priv::WindowImplCocoa *)delegate
-{
- return myDelegate;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Finish view setting (after having added it to the window)
-////////////////////////////////////////////////////////////
-- (void)finishInitialization
-{
- assert([self superview] != nil);
- assert(myGLContext != nil);
-
- // Attach the OpenGL context to our view
- [self clearGLContext];
- [self setOpenGLContext:myGLContext];
- [myGLContext setView:self];
-
- // Make our view the first responder
- [[self window] makeFirstResponder:self];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Forward call to en/disable vertical synchronization
-////////////////////////////////////////////////////////////
-- (void)enableVerticalSync:(bool)flag
-{
- GLint enable = (flag) ? 1 : 0;
- [[self openGLContext] setValues:&enable forParameter:NSOpenGLCPSwapInterval];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the OpenGL context as active according to @flag
-////////////////////////////////////////////////////////////
-- (void)setActive:(bool)flag
-{
- if (flag) {
- if ([NSOpenGLContext currentContext] != [self openGLContext])
- [[self openGLContext] makeCurrentContext];
- } else {
- if ([NSOpenGLContext currentContext] == [self openGLContext])
- [NSOpenGLContext clearCurrentContext];
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Forward call to flush the OpenGL context
-////////////////////////////////////////////////////////////
-- (void)flushBuffer
-{
- [[self openGLContext] flushBuffer];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Send event to the linked window
-////////////////////////////////////////////////////////////
-- (void)pushEvent:(sf::Event)sfEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleNotifiedEvent(sfEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification method receiver when OpenGL view size changes
-////////////////////////////////////////////////////////////
-- (void)viewFrameDidChange:(NSNotification *)notification
-{
- [self update];
-
- sf::Event ev;
- ev.Type = sf::Event::Resized;
- ev.Size.Width = (unsigned) [self frame].size.width;
- ev.Size.Height = (unsigned) [self frame].size.height;
-
- [self pushEvent:ev];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when a key is pressed
-////////////////////////////////////////////////////////////
-- (void)keyDown:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
-
- if (sf::priv::WindowImplCocoa::IsTextEvent((void *)theEvent))
- {
- NSText *field = [[self window] fieldEditor:YES forObject:nil];
- [field interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
- [field setString:@""];
- }
-
- myDelegate->HandleKeyDown(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when a key is released
-////////////////////////////////////////////////////////////
-- (void)keyUp:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleKeyUp(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when a modifier flag has changed
-////////////////////////////////////////////////////////////
-- (void)flagsChanged:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleModifierKey(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when the mouse wheel has been used
-////////////////////////////////////////////////////////////
-- (void)scrollWheel:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseWheel(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when left mouse click is pressed
-////////////////////////////////////////////////////////////
-- (void)mouseDown:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseDown(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when right mouse click is pressed
-////////////////////////////////////////////////////////////
-- (void)rightMouseDown:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseDown(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when left mouse click is released
-////////////////////////////////////////////////////////////
-- (void)mouseUp:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseUp(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when right mouse click is released
-////////////////////////////////////////////////////////////
-- (void)rightMouseUp:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseUp(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when mouse moves
-////////////////////////////////////////////////////////////
-- (void)mouseMoved:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseMove(theEvent);
-}
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when mouse is pressed (on left button) and moves
-////////////////////////////////////////////////////////////
-- (void)mouseDragged:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseMove(theEvent);
-}
-
-////////////////////////////////////////////////////////////
-/// Receiver method called when mouse is pressed (on right button) and moves
-////////////////////////////////////////////////////////////
-- (void)rightMouseDragged:(NSEvent *)theEvent
-{
- assert(myDelegate != NULL);
- myDelegate->HandleMouseMove(theEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Tells that the view can be focused
-////////////////////////////////////////////////////////////
-- (BOOL)acceptsFirstResponder
-{
- return YES;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Tells that the view can become the key responder (ie. can catch key events)
-////////////////////////////////////////////////////////////
-- (BOOL)canBecomeKeyView
-{
- return YES;
-}
-
-@end
-
-
-////////////////////////////////////////////////////////////
-/// Cocoa window category to let fullscreen windows
-/// catch key events
-////////////////////////////////////////////////////////////
-@implementation NSWindow (GLWindow)
-
-- (BOOL)canBecomeKeyWindow
-{
- return YES;
-}
-
-- (BOOL)canBecomeMainWindow
-{
- return YES;
-}
-
-@end
-
-
-
-@implementation sfPrivWindow
-
-- (void)dealloc
-{
- NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
- // Remove the notification observer
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- // Close the window
- [self show:false];
-
- // Release the window and view
- [[self view] removeFromSuperviewWithoutNeedingDisplay];
-
- [self setWindow:nil];
- [self setView:nil];
- [self setDelegate:nil];
-
- [super dealloc];
- [localPool release];
-}
-
-////////////////////////////////////////////////////////////
-/// Registers a reference to the internal Cocoa window
-////////////////////////////////////////////////////////////
-- (void)setWindow:(NSWindow *)aWindow
-{
- if (myWindow != aWindow)
- {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
-
- // Drop the observers on the previously set window
- if ([self window]) {
- [nc removeObserver:self
- name:NSWindowDidBecomeMainNotification
- object:[self window]];
- [nc removeObserver:self
- name:NSWindowDidResignMainNotification
- object:[self window]];
- [nc removeObserver:self
- name:NSWindowWillCloseNotification
- object:[self window]];
- }
-
- [myWindow release];
- myWindow = [aWindow retain];
-
- // Set the new observers
- // We want to know when our window got the focus
- [nc addObserver:self
- selector:@selector(windowDidBecomeMain:)
- name:NSWindowDidBecomeMainNotification
- object:[self window]];
-
- // We want to know when our window lost the focus
- [nc addObserver:self
- selector:@selector(windowDidResignMain:)
- name:NSWindowDidResignMainNotification
- object:[self window]];
-
- // We want to know when the user closes the window
- [nc addObserver:self
- selector:@selector(windowWillClose:)
- name:NSWindowWillCloseNotification
- object:[self window]];
-
- }
-}
-
-////////////////////////////////////////////////////////////
-/// Return a reference to the internal Cocoa window
-////////////////////////////////////////////////////////////
-- (NSWindow *)window
-{
- return [[myWindow retain] autorelease];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Registers the the OpenGL view and adds it to its parent container
-////////////////////////////////////////////////////////////
-- (void)putOpenGLView:(sfPrivGLView *)aView
-{
- [self setView:aView];
-
- // Finish setting up the view and window
- // Add the view to our window and tell it to the view
- [[[self window] contentView] addSubview:[self view]];
- [[self view] finishInitialization];
-}
-
-////////////////////////////////////////////////////////////
-/// Registers a reference to the internal Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-- (void)setView:(sfPrivGLView *)aView
-{
- if (myView != aView)
- {
- [myView release];
- myView = [aView retain];
- }
-}
-
-////////////////////////////////////////////////////////////
-/// Return a reference to the internal Cocoa OpenGL view
-////////////////////////////////////////////////////////////
-- (sfPrivGLView *)view
-{
- return [[myView retain] autorelease];
-}
-
-////////////////////////////////////////////////////////////
-/// Sets @aDelegate as the window delegate
-////////////////////////////////////////////////////////////
-- (void)setDelegate:(sf::priv::WindowImplCocoa *)aDelegate
-{
- [[self view] setDelegate:aDelegate];
-}
-
-////////////////////////////////////////////////////////////
-/// Returns the window delegate
-////////////////////////////////////////////////////////////
-- (sf::priv::WindowImplCocoa *)delegate
-{
- return [[self view] delegate];
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window position on screen
-////////////////////////////////////////////////////////////
-- (void)setPosition:(NSPoint)pos
-{
- NSAssert([self window] != nil, @"expected valid window");
-
- // Flip Y and set window position
- pos.y = [[[self window] screen] frame].size.height - pos.y;
- [[self window] setFrameTopLeftPoint:pos];
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window size
-////////////////////////////////////////////////////////////
-- (void)setSize:(NSSize)size
-{
- NSAssert([self window] != nil, @"expected valid window");
-
- [[self window] setFrame:NSMakeRect([[self window] frame].origin.x,
- [[self window] frame].origin.y,
- size.width, size.height)
- display:YES];
-}
-
-////////////////////////////////////////////////////////////
-/// Return the mouse location relative to the internal window
-////////////////////////////////////////////////////////////
-- (NSPoint)mouseLocation
-{
- NSAssert([self view] != nil, @"expected valid window");
-
- NSPoint windowPoint = [[self window] convertScreenToBase:[NSEvent mouseLocation]];
- NSPoint viewPoint = [[self view] convertPoint:windowPoint fromView:[[[self window] contentView] superview]];
-
- viewPoint.y = [[self view] frame].size.height - viewPoint.y;
- return viewPoint;
-}
-
-////////////////////////////////////////////////////////////
-/// Return whether the mouse is on our window
-////////////////////////////////////////////////////////////
-- (BOOL)mouseInside
-{
- NSAssert([self window] != nil, @"expected valid window");
- NSAssert([self view] != nil, @"expected valid OpenGL view");
-
- BOOL flag = NO;
-
- if ([[self window] isVisible]) {
- NSPoint relativeToWindow = [[self window] mouseLocationOutsideOfEventStream];
- NSPoint relativeToView = [[self view] convertPoint:relativeToWindow fromView:nil];
-
- if (NSPointInRect (relativeToView, [[self view] bounds]))
- {
- flag = YES;
- }
- }
-
- return flag;
-}
-
-////////////////////////////////////////////////////////////
-/// Close or open the window
-////////////////////////////////////////////////////////////
-- (void)show:(bool)flag
-{
- NSAssert([self window] != nil, @"expected valid window");
-
- if (flag && ![[self window] isVisible]) {
- // Wanna open the closed window
-
- // Show the window
- [[self window] makeKeyAndOrderFront:nil];
- } else if (!flag && [[self window] isVisible]) {
- // Wanna close the opened window
-
- // Close the window
- [[self window] close];
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Forward call to en/disable the OpenGL view vertical synchronization
-////////////////////////////////////////////////////////////
-- (void)enableVerticalSync:(bool)flag
-{
- NSAssert([self view] != nil, @"expected valid OpenGL view");
- [[self view] enableVerticalSync:flag];
-}
-
-////////////////////////////////////////////////////////////
-/// Forward 'setActive' call the the OpenGL view
-////////////////////////////////////////////////////////////
-- (void)setActive:(bool)flag
-{
- NSAssert([self view] != nil, @"expected valid OpenGL view");
- [[self view] setActive:flag];
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to flush the OpenGL view
-////////////////////////////////////////////////////////////
-- (void)flushBuffer
-{
- NSAssert([self view] != nil, @"expected valid OpenGL view");
- [[self view] flushBuffer];
-}
-
-////////////////////////////////////////////////////////////
-/// Notification method receiver when the window gains focus
-////////////////////////////////////////////////////////////
-- (void)windowDidBecomeMain:(NSNotification *)notification
-{
- sf::Event ev;
- ev.Type = sf::Event::GainedFocus;
-
- [[self view] pushEvent:ev];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification method receiver when the window loses focus
-////////////////////////////////////////////////////////////
-- (void)windowDidResignMain:(NSNotification *)notification
-{
- sf::Event ev;
- ev.Type = sf::Event::LostFocus;
-
- [[self view] pushEvent:ev];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Notification method receiver when the window closes
-////////////////////////////////////////////////////////////
-- (void)windowWillClose:(NSNotification *)notification
-{
- sf::Event ev;
- ev.Type = sf::Event::Closed;
-
- [[self view] pushEvent:ev];
-}
-
-
-@end
-
-
-@implementation sfPrivOwnedWindow
-
-- (id)initWithVideoMode:(sf::VideoMode&)aMode
- settings:(sf::WindowSettings&)someSettings
- style:(unsigned long)aStyle
- title:(NSString *)aTitle
-{
- self = [super init];
- if (self)
- {
- if (aStyle & sf::Style::Fullscreen) {
- [self setFullscreen:YES];
- }
-
- NSRect frame = NSMakeRect (0.0f, 0.0f, (float) aMode.Width, (float) aMode.Height);
- unsigned int mask = 0;
-
- if (aStyle & sf::Style::Fullscreen) {
- // Check display mode and put new values in 'mode' if needed
- boolean_t exact = true;
-
- CFDictionaryRef properties =
- CGDisplayBestModeForParameters([sfPrivAppController primaryScreen],
- aMode.BitsPerPixel,
- aMode.Width,
- aMode.Height,
- &exact);
-
- if (!properties) {
- std::cerr
- << "Unable to get a display mode with the given parameters"
- << std::endl;
-
- [self autorelease];
- return nil;
- }
-
- if (exact == false) {
- CFNumberGetValue((CFNumberRef) CFDictionaryGetValue(properties,
- kCGDisplayWidth),
- kCFNumberIntType, &aMode.Width);
-
- CFNumberGetValue((CFNumberRef) CFDictionaryGetValue(properties,
- kCGDisplayHeight),
- kCFNumberIntType, &aMode.Height);
-
- CFNumberGetValue((CFNumberRef) CFDictionaryGetValue(properties,
- kCGDisplayBitsPerPixel),
- kCFNumberIntType, &aMode.BitsPerPixel);
-
- }
- }
-
- // We grab options from WindowStyle and add them to our window mask
- if (aStyle & sf::Style::None || aStyle & sf::Style::Fullscreen) {
- mask |= NSBorderlessWindowMask;
- } else {
- if (aStyle & sf::Style::Titlebar) {
- mask |= NSTitledWindowMask;
- mask |= NSMiniaturizableWindowMask;
- }
-
- if (aStyle & sf::Style::Resize) {
- mask |= NSTitledWindowMask;
- mask |= NSMiniaturizableWindowMask;
- mask |= NSResizableWindowMask;
- }
-
- if (aStyle & sf::Style::Close) {
- mask |= NSTitledWindowMask;
- mask |= NSClosableWindowMask;
- mask |= NSMiniaturizableWindowMask;
- }
- }
-
- // Now we make the window with the values we got
- // Note: defer flag set to NO to be able to use OpenGL in our window
- NSWindow *newWindow = [[NSWindow alloc]
- initWithContentRect:frame
- styleMask:mask
- backing:NSBackingStoreBuffered
- defer:NO];
-
- if (newWindow) {
- [self setWindow:[newWindow autorelease]];
- } else {
- std::cerr << "Unable to create the Cocoa window" << std::endl;
- [self autorelease];
- return nil;
- }
-
- // We set title and window position
- [[self window] setTitle:aTitle != nil ? aTitle : @""];
- [[self window] center];
-
- // Make the OpenGL view
- sfPrivGLView *newView = [[sfPrivGLView alloc]
- initWithFrame:[[[self window] contentView] frame]
- mode:aMode
- settings:someSettings];
-
- if (!newView) {
- std::cerr << "Unable to create the OpenGL view" << std::endl;
- [self autorelease];
- return nil;
- }
-
- // Put our view in the window
- [self putOpenGLView:[newView autorelease]];
-
- // I want to re-center the window if it's a full screen one and moved by Spaces
- [[NSNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(windowDidMove:)
- name:NSWindowDidMoveNotification
- object:[self window]];
-
- // Needed not to make application crash when releasing the window in our destructor
- // (I prefer to take control of everything :P)
- [[self window] setReleasedWhenClosed:NO];
- [[self window] setAcceptsMouseMovedEvents:YES];
-
- if ([self isFullscreen]) {
- myFullscreenMode = aMode;
-
- // Using this because full screen window was not always
- // in front of the other application windows when unhiding app
- [[self window] setLevel:NSFloatingWindowLevel];
- }
- }
- return self;
-}
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter]
- removeObserver:self
- name:NSWindowDidMoveNotification
- object:[self window]];
- [super dealloc];
-}
-
-////////////////////////////////////////////////////////////
-/// Sets the window's fullscreen state
-////////////////////////////////////////////////////////////
-- (void)setFullscreen:(BOOL)aFlag
-{
- myIsFullscreen = aFlag;
-}
-
-////////////////////////////////////////////////////////////
-/// Returns the window's fullscreen state
-////////////////////////////////////////////////////////////
-- (BOOL)isFullscreen
-{
- return myIsFullscreen;
-}
-
-////////////////////////////////////////////////////////////
-/// Notification method receiver when the window finish moving
-////////////////////////////////////////////////////////////
-- (void)windowDidMove:(NSNotification *)notification
-{
- NSWindow *sender = [notification object];
-
- if (myIsFullscreen)
- [sender center];
-}
-
-////////////////////////////////////////////////////////////
-/// Close or open the window
-////////////////////////////////////////////////////////////
-- (void)show:(bool)flag
-{
- NSAssert([self window] != nil, @"expected valid window");
-
- if (flag && ![[self window] isVisible]) {
- // Wanna open the closed window
-
- if ([self isFullscreen]) {
- [[sfPrivAppController sharedController]
- setFullscreenWindow:self
- mode:&myFullscreenMode];
- } else {
- // Show the window
- [[self window] makeKeyAndOrderFront:nil];
- }
- } else if (!flag && [[self window] isVisible]) {
- // Wanna close the opened window
-
- if ([self isFullscreen]) {
- [[sfPrivAppController sharedController]
- setFullscreenWindow:nil
- mode:NULL];
- } else {
- // Close the window
- [[self window] close];
- }
- }
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window position on screen
-////////////////////////////////////////////////////////////
-- (void)setPosition:(NSPoint)aPosition
-{
- if (![self isFullscreen]) {
- [super setPosition:aPosition];
- }
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window size
-////////////////////////////////////////////////////////////
-- (void)setSize:(NSSize)size
-{
- if (![self isFullscreen]) {
- [super setSize:size];
- }
-}
-
-@end
-
-
-@implementation sfPrivImportedWindow
-
-- (id)initWithWindow:(NSWindow *)aWindow
- settings:(sf::WindowSettings&)someSettings
-{
- self = [super init];
-
- if (self) {
- [self setWindow:aWindow];
-
- // Make the OpenGL view
- sf::VideoMode mode([[[self window] contentView] frame].size.width,
- [[[self window] contentView] frame].size.height);
- sfPrivGLView *newView = [[sfPrivGLView alloc]
- initWithFrame:[[[self window] contentView] frame]
- mode:mode
- settings:someSettings];
-
- if (!newView) {
- std::cerr << "Unable to create the OpenGL view" << std::endl;
- [self autorelease];
- return nil;
- }
-
- [self putOpenGLView:[newView autorelease]];
-
- [[self window] setAcceptsMouseMovedEvents:YES];
- }
-
- return self;
-}
-
-@end
-
-
-@implementation sfPrivImportedView
-
-
-- (id)initWithView:(NSView *)aView
- settings:(sf::WindowSettings&)someSettings
-{
- self = [super init];
- if (self)
- {
- parentView = [aView retain];
- [self setWindow:[parentView window]];
-
- // Make the OpenGL view
- sf::VideoMode mode([parentView bounds].size.width,
- [parentView bounds].size.height);
- sfPrivGLView *newView = [[sfPrivGLView alloc]
- initWithFrame:[parentView bounds]
- mode:mode
- settings:someSettings];
-
- if (!newView) {
- std::cerr << "Unable to create the OpenGL view" << std::endl;
- [self autorelease];
- return nil;
- }
-
- [self putOpenGLView:[newView autorelease]];
- [[self window] setAcceptsMouseMovedEvents:YES];
- }
- return self;
-}
-
-- (void)dealloc
-{
- [parentView release];
- [super dealloc];
-}
-
-////////////////////////////////////////////////////////////
-/// Registers the the OpenGL view and adds it to its parent container
-////////////////////////////////////////////////////////////
-- (void)putOpenGLView:(sfPrivGLView *)aView
-{
- [self setView:aView];
-
- // Finish setting up the view and window
- NSRect originalFrame = [[self window] frame];
- NSRect tmpFrame = originalFrame;
- originalFrame.origin.x++;
-
- [[self window] setFrame:tmpFrame display:YES];
- [[self window] setFrame:originalFrame display:YES];
-
-
- // Add the view to our *parent view* and tell it to the view
- [parentView addSubview:[self view]];
- [[self view] finishInitialization];
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window position on screen
-////////////////////////////////////////////////////////////
-- (void)setPosition:(NSPoint)aPosition
-{
- std::cerr
- << "Warning: called Window::SetPosition() on a window imported from a widget. "
- << "This method has been disabled in this case and has no effect. "
- << "Directly use the widget if you want to move it."
- << std::endl;
-}
-
-////////////////////////////////////////////////////////////
-/// Forward call to set the window size
-////////////////////////////////////////////////////////////
-- (void)setSize:(NSSize)size
-{
- std::cerr
- << "Warning: called Window::SetSize() on a window imported from a widget. "
- << "This method has been disabled in this case and has no effect. "
- << "Directly use the widget if you want to resize it."
- << std::endl;
-}
-
-@end
-
diff --git a/src/SFML/Window/Cocoa/VideoModeSupport.cpp b/src/SFML/Window/Cocoa/VideoModeSupport.cpp
deleted file mode 100755
index 9b5ebd0..0000000
--- a/src/SFML/Window/Cocoa/VideoModeSupport.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Cocoa/VideoModeSupport.hpp>
-#include <ApplicationServices/ApplicationServices.h>
-#include <algorithm>
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Get supported video modes
-////////////////////////////////////////////////////////////
-void VideoModeSupport::GetSupportedVideoModes(std::vector<VideoMode>& Modes)
-{
- // Ceylo -- using same implementation as in OSXCarbon
-
- // First, clear array to fill
- Modes.clear();
-
- // Enumerate all available video modes for primary display adapter
- CFArrayRef DisplayModes = CGDisplayAvailableModes( kCGDirectMainDisplay );
- CFIndex DisplayModeCount = CFArrayGetCount( DisplayModes );
- CFDictionaryRef CurrentMode;
-
- for (int Count = 0; Count < DisplayModeCount; ++Count)
- {
- CurrentMode = (CFDictionaryRef)CFArrayGetValueAtIndex( DisplayModes, Count );
-
- VideoMode Mode;
-
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayWidth), kCFNumberIntType, &(Mode.Width));
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayHeight), kCFNumberIntType, &(Mode.Height));
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentMode, kCGDisplayBitsPerPixel), kCFNumberIntType, &(Mode.BitsPerPixel));
-
- // Add it only if it is not already in the array
- if (std::find(Modes.begin(), Modes.end(), Mode) == Modes.end())
- Modes.push_back(Mode);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get current desktop video mode
-////////////////////////////////////////////////////////////
-VideoMode VideoModeSupport::GetDesktopVideoMode()
-{
- // Ceylo -- using same implementation as in OSXCarbon
-
- CFDictionaryRef CurrentVideoMode = CGDisplayCurrentMode(kCGDirectMainDisplay);
-
- VideoMode DesktopMode;
-
-
- // Get video mode width
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayWidth),
- kCFNumberIntType,
- &(DesktopMode.Width));
-
- // Get video mode height
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayHeight),
- kCFNumberIntType,
- &(DesktopMode.Height));
-
- // Get video mode depth
- CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(CurrentVideoMode, kCGDisplayBitsPerPixel),
- kCFNumberIntType,
- &(DesktopMode.BitsPerPixel));
-
-
- return DesktopMode;
-}
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Window/Cocoa/WindowImplCocoa.hpp b/src/SFML/Window/Cocoa/WindowImplCocoa.hpp
deleted file mode 100755
index 62158f0..0000000
--- a/src/SFML/Window/Cocoa/WindowImplCocoa.hpp
+++ /dev/null
@@ -1,205 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_WINDOWIMPLCOCOA_HPP
-#define SFML_WINDOWIMPLCOCOA_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Event.hpp>
-#include <SFML/Window/WindowImpl.hpp>
-#include <string>
-
-#ifdef __OBJC__
-@class sfPrivWindow;
-typedef sfPrivWindow* sfPrivWindowRef;
-#else
-typedef void* sfPrivWindowRef;
-#endif
-
-namespace sf
-{
-namespace priv
-{
-
-////////////////////////////////////////////////////////////
-/// WindowImplCocoa is the Cocoa implementation of WindowImpl
-////////////////////////////////////////////////////////////
-class WindowImplCocoa : public WindowImpl
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- /// (creates a dummy window to provide a valid OpenGL context)
- ///
- ////////////////////////////////////////////////////////////
- WindowImplCocoa();
-
- ////////////////////////////////////////////////////////////
- /// Construct the window implementation from an existing control
- ///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters
- ///
- /// Note: the NSWindow object must not be defered !
- ////////////////////////////////////////////////////////////
- WindowImplCocoa(WindowHandle Handle, WindowSettings& params);
-
- ////////////////////////////////////////////////////////////
- /// Create the window implementation
- ///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style
- /// \param Params : Creation parameters
- ///
- ////////////////////////////////////////////////////////////
- WindowImplCocoa(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& params);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~WindowImplCocoa();
-
- ////////////////////////////////////////////////////////////
- /// Check if there's an active context on the current thread
- ///
- /// \return True if there's a context bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- static bool IsContextActive();
-
- ////////////////////////////////////////////////////////////
- /// Handle an event sent by the default NSNotificationCenter
- ////////////////////////////////////////////////////////////
- void HandleNotifiedEvent(Event& eventRef);
-
- ////////////////////////////////////////////////////////////
- /// Event handling for every event type.
- /// 'eventRef' is a NSEvent.
- ////////////////////////////////////////////////////////////
- void HandleKeyDown(void *eventRef);
- void HandleKeyUp(void *eventRef);
- void HandleModifierKey(void *eventRef);
- void HandleMouseDown(void *eventRef);
- void HandleMouseUp(void *eventRef);
- void HandleMouseMove(void *eventRef);
- void HandleMouseWheel(void *eventRef);
-
- ////////////////////////////////////////////////////////////
- /// Return whether 'ev' must be considered as a TextEntered event
- ////////////////////////////////////////////////////////////
- static bool IsTextEvent(void *event);
-private :
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::Display
- ///
- ////////////////////////////////////////////////////////////
- virtual void Display();
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::ProcessEvents
- ///
- ////////////////////////////////////////////////////////////
- virtual void ProcessEvents();
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::MakeActive
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetActive(bool Active = true) const;
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::UseVerticalSync
- ///
- ////////////////////////////////////////////////////////////
- virtual void UseVerticalSync(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::ShowMouseCursor
- ///
- ////////////////////////////////////////////////////////////
- virtual void ShowMouseCursor(bool Show);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::SetCursorPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetCursorPosition(unsigned int Left, unsigned int Top);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::SetPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetPosition(int Left, int Top);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetSize
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetSize(unsigned int Width, unsigned int Height);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::Show
- ///
- ////////////////////////////////////////////////////////////
- virtual void Show(bool State);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::EnableKeyRepeat
- ///
- ////////////////////////////////////////////////////////////
- virtual void EnableKeyRepeat(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// see WindowImpl::SetIcon
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels);
-
-
-
- ////////////////////////////////////////////////////////////
- /// My own part starts here !
- ////////////////////////////////////////////////////////////
-
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- sfPrivWindowRef myWrapper;
- bool myUseKeyRepeat;
- bool myMouseIn;
- float myWheelStatus;
-};
-
-} // namespace priv
-
-} // namespace sf
-
-#endif // SFML_WINDOWIMPLCOCOA_HPP
diff --git a/src/SFML/Window/Cocoa/WindowImplCocoa.mm b/src/SFML/Window/Cocoa/WindowImplCocoa.mm
deleted file mode 100755
index 13dec83..0000000
--- a/src/SFML/Window/Cocoa/WindowImplCocoa.mm
+++ /dev/null
@@ -1,844 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#import <SFML/Window/Cocoa/WindowImplCocoa.hpp>
-#import <SFML/Window/Cocoa/AppController.h>
-#import <SFML/Window/Cocoa/GLKit.h>
-#import <SFML/Window/WindowStyle.hpp>
-#import <SFML/System.hpp>
-#import <iostream>
-
-
-namespace sf
-{
-namespace priv
-{
-
-// Do something only once (useful in loops)
-#define ONCE(make) \
-{ static int __done = 0;\
-if (!__done) {\
-make;\
-__done = 1;\
-} }
-
-
-////////////////////////////////////////////////////////////
-/// Private function declarations
-////////////////////////////////////////////////////////////
-namespace {
- Key::Code KeyForVirtualCode(unsigned short vCode);
- Key::Code KeyForUnicode(unsigned short uniCode);
-} // anonymous namespace
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-/// (creates a dummy window to provide a valid OpenGL context)
-////////////////////////////////////////////////////////////
-WindowImplCocoa::WindowImplCocoa() :
-myWrapper(nil),
-myUseKeyRepeat(false),
-myMouseIn(false),
-myWheelStatus(0.0f)
-{
- [sfPrivAppController sharedController];
-
- // Create the shared OpenGL context
- if ([sfPrivGLContext sharedContext]) {
- // Then we make it the current active OpenGL context
- SetActive();
- } else {
- std::cerr << "Unable to make the main shared OpenGL context" << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation from an existing control
-////////////////////////////////////////////////////////////
-WindowImplCocoa::WindowImplCocoa(WindowHandle Handle, WindowSettings& params) :
-myWrapper(NULL),
-myUseKeyRepeat(false),
-myMouseIn(false),
-myWheelStatus(0.0f)
-{
- if (Handle) {
- // Classical window import
- if ([(id)Handle isKindOfClass:[NSWindow class]]) {
- myWrapper = [[sfPrivImportedWindow alloc]
- initWithWindow:(NSWindow *)Handle
- settings:params];
- }
- // Qt "window" import
- else if ([(id)Handle isKindOfClass:[NSView class]]) {
- myWrapper = [[sfPrivImportedView alloc]
- initWithView:(NSView *)Handle
- settings:params];
- } else {
- std::cerr
- << "Cannot import this Window Handle because it is neither"
- << "a <NSWindow *> nor <NSView *> object"
- << "(or any of its subclasses). You gave a <"
- << [[(id)Handle className] UTF8String]
- << "> object."
- << std::endl;
-
- }
-
- if (myWrapper) {
- [myWrapper setDelegate:this];
-
- // initial mouse state
- myMouseIn = [myWrapper mouseInside];
-
- // We set the myWidth and myHeight members to the correct values
- myWidth = (int) [[myWrapper view] frame].size.width;
- myHeight = (int) [[myWrapper view] frame].size.height;
- } else {
- std::cerr << "Failed to make the public window" << std::endl;
- }
- } else {
- std::cerr
- << "Invalid null handle given to "
- << "Window::Window(WindowHandle Handle, const WindowSettings& Params)"
- << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation
-////////////////////////////////////////////////////////////
-WindowImplCocoa::WindowImplCocoa(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& params) :
-myWrapper(NULL),
-myUseKeyRepeat(false),
-myMouseIn(false),
-myWheelStatus(0.0f)
-{
- // Create a new window with given size, title and style
- // First we define some objects used for our window
- NSString *title = [NSString stringWithCString:(Title.c_str()) ? (Title.c_str()) : ""
- encoding:NSASCIIStringEncoding];
-
- // We create the window
- myWrapper = [[sfPrivOwnedWindow alloc]
- initWithVideoMode:Mode
- settings:params
- style:WindowStyle
- title:title];
-
-
-
- if (myWrapper)
- {
- [myWrapper setDelegate:this];
-
- // initial mouse state
- myMouseIn = [myWrapper mouseInside];
-
- // We set the myWidth and myHeight members to the correct values
- myWidth = Mode.Width;
- myHeight = Mode.Height;
- } else {
- std::cerr << "Failed to make the public window" << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-WindowImplCocoa::~WindowImplCocoa()
-{
- // Release the window wrapper
- [myWrapper release];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if there's an active context on the current thread
-////////////////////////////////////////////////////////////
-bool WindowImplCocoa::IsContextActive()
-{
- return ([NSOpenGLContext currentContext] != NULL);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle event sent by the default NSNotificationCenter
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleNotifiedEvent(Event& event)
-{
- // Set myWidth and myHeight to correct value if
- // window size changed
- switch (event.Type) {
- case Event::Resized:
- myWidth = event.Size.Width;
- myHeight = event.Size.Height;
- break;
-
- default:
- break;
- }
-
- // And send the event
- SendEvent(event);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a key down event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleKeyDown(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
-
- Event sfEvent;
- unichar chr = 0, rawchr = 0;
- unsigned long length = [[event characters] length];
- unsigned mods = [event modifierFlags];
-
- if (length) {
- chr = [[event characters] characterAtIndex:0];
-
- // Note : I got a crash (out of bounds exception) while typing so now I test...
- if ([[event charactersIgnoringModifiers] length])
- rawchr = [[event charactersIgnoringModifiers] characterAtIndex:0];
-
-
- // Don't handle repeated events if we chose not to send them
- if (!myUseKeyRepeat && [event isARepeat])
- return;
-
- // Is it also a text event ?
- if (IsTextEvent(event)) {
- // buffer for the UTF-32 characters
- Uint32 utf32Characters[2] = {0};
-
- // convert the characters
- // note: using CFString in order to keep compatibility with Mac OS X 10.4
- // (as NSUTF32StringEncoding is only being defined in Mac OS X 10.5 and later)
- if (!CFStringGetCString ((CFStringRef)[event characters],
- (char *)utf32Characters,
- sizeof(utf32Characters),
- kCFStringEncodingUTF32))
- {
- char asciiChar[3] = {0};
- if ([[event characters] lengthOfBytesUsingEncoding:NSASCIIStringEncoding])
- [[event characters] getCString:asciiChar
- maxLength:3
- encoding:NSASCIIStringEncoding];
-
- std::cerr << "Error while converting character to UTF32 : \""
- << asciiChar << "\"" << std::endl;
- }
- else
- {
- sfEvent.Type = Event::TextEntered;
- sfEvent.Text.Unicode = utf32Characters[0];
-
- SendEvent(sfEvent);
- }
- }
-
- // Anyway it's also a KeyPressed event
- sfEvent.Type = Event::KeyPressed;
-
- // Get the keys
- if (Key::Code(0) == (sfEvent.Key.Code = KeyForUnicode(rawchr))) {
- sfEvent.Key.Code = KeyForVirtualCode([event keyCode]);
- }
-
- // Get the modifiers
- sfEvent.Key.Alt = mods & NSAlternateKeyMask;
- sfEvent.Key.Control = mods & NSControlKeyMask;
- sfEvent.Key.Shift = mods & NSShiftKeyMask;
-
- // Send the event
- SendEvent(sfEvent);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a key up event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleKeyUp(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
-
- Event sfEvent;
- unsigned mods = [event modifierFlags];
- unichar chr = 0, rawchr = 0;
-
- if ([[event characters] length]) {
- chr = [[event characters] characterAtIndex:0];
-
- if ([[event charactersIgnoringModifiers] length])
- rawchr = [[event charactersIgnoringModifiers] characterAtIndex:0];
-
- sfEvent.Type = Event::KeyReleased;
-
- // Get the code
- if (Key::Code(0) == (sfEvent.Key.Code = KeyForUnicode(rawchr))) {
- sfEvent.Key.Code = KeyForVirtualCode([event keyCode]);
- }
-
- // Get the modifiers
- sfEvent.Key.Alt = mods & NSAlternateKeyMask;
- sfEvent.Key.Control = mods & NSControlKeyMask;
- sfEvent.Key.Shift = mods & NSShiftKeyMask;
-
- // Send the event
- SendEvent(sfEvent);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a key modifier event [Command, Option, Control, Shift]
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleModifierKey(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
- Event sfEvent;
- unsigned mods = [event modifierFlags];
-
- sfEvent.Type = Event::KeyPressed;
-
- // Get the code
- sfEvent.Key.Code = KeyForVirtualCode([event keyCode]);
-
- // Get the modifiers
- sfEvent.Key.Alt = mods & NSAlternateKeyMask;
- sfEvent.Key.Control = mods & NSControlKeyMask;
- sfEvent.Key.Shift = mods & NSShiftKeyMask;
-
- // Guess whether it's a pressed or released event
- // Note: this does not work fine is both left and right modifiers are pressed
- // I did not find any way to fix this.
- // TODO: fix handling of modifier flags for use of left and right key at the same time
- if (!(mods & NSAlternateKeyMask) &&
- (sfEvent.Key.Code == Key::LAlt || sfEvent.Key.Code == Key::RAlt)) {
- sfEvent.Type = Event::KeyReleased;
- }
-
- if (!(mods & NSControlKeyMask) &&
- (sfEvent.Key.Code == Key::LControl || sfEvent.Key.Code == Key::RControl)) {
- sfEvent.Type = Event::KeyReleased;
- }
-
- if (!(mods & NSShiftKeyMask) &&
- (sfEvent.Key.Code == Key::LShift || sfEvent.Key.Code == Key::RShift)) {
- sfEvent.Type = Event::KeyReleased;
- }
-
- if (!(mods & NSCommandKeyMask) &&
- (sfEvent.Key.Code == Key::LSystem || sfEvent.Key.Code == Key::RSystem)) {
- sfEvent.Type = Event::KeyReleased;
- }
-
- // Send the event
- SendEvent(sfEvent);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a mouse down event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleMouseDown(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
- Event sfEvent;
-
- // Get mouse position relative to the window
- NSPoint loc = [myWrapper mouseLocation];
- unsigned mods = [event modifierFlags];
-
- switch ([event type]) {
- case NSLeftMouseDown:
- sfEvent.Type = Event::MouseButtonPressed;
-
- // Guess whether it's a mouse left or mouse right event
- if (mods & NSControlKeyMask) {
- sfEvent.MouseButton.Button = Mouse::Right;
- } else {
- sfEvent.MouseButton.Button = Mouse::Left;
- }
-
- sfEvent.MouseButton.X = (int) loc.x;
- sfEvent.MouseButton.Y = (int) loc.y;
-
- // Send the event
- SendEvent(sfEvent);
- break;
-
- case NSRightMouseDown:
- sfEvent.Type = Event::MouseButtonPressed;
- sfEvent.MouseButton.Button = Mouse::Right;
-
- sfEvent.MouseButton.X = (int) loc.x;
- sfEvent.MouseButton.Y = (int) loc.y;
-
- // Send the event
- SendEvent(sfEvent);
- break;
-
- default:
- break;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a mouse up event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleMouseUp(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
- Event sfEvent;
-
- // Get mouse position relative to the window
- NSPoint loc = [myWrapper mouseLocation];
- unsigned mods = [event modifierFlags];
-
- switch ([event type]) {
- case NSLeftMouseUp:
- sfEvent.Type = Event::MouseButtonReleased;
-
- // Guess whether it's a mouse left or mouse right event
- if (mods & NSControlKeyMask) {
- sfEvent.MouseButton.Button = Mouse::Right;
- } else {
- sfEvent.MouseButton.Button = Mouse::Left;
- }
-
- sfEvent.MouseButton.X = (int) loc.x;
- sfEvent.MouseButton.Y = (int) loc.y;
-
- // Send the event
- SendEvent(sfEvent);
- break;
-
- case NSRightMouseUp:
- sfEvent.Type = Event::MouseButtonReleased;
- sfEvent.MouseButton.Button = Mouse::Right;
-
- sfEvent.MouseButton.X = (int) loc.x;
- sfEvent.MouseButton.Y = (int) loc.y;
-
- // Send the event
- SendEvent(sfEvent);
- break;
-
- default:
- break;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a mouse move event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleMouseMove(void *eventRef)
-{
- Event sfEvent;
- NSPoint loc = [myWrapper mouseLocation];
- sfEvent.Type = Event::MouseMoved;
-
- sfEvent.MouseMove.X = (int) loc.x;
- sfEvent.MouseMove.Y = (int) loc.y;
-
- SendEvent(sfEvent);
-
- if ([myWrapper mouseInside] && !myMouseIn) {
- // If mouse IS inside but WAS not inside last time
- sfEvent.Type = Event::MouseEntered;
- myMouseIn = true;
-
- SendEvent(sfEvent);
- } else if (![myWrapper mouseInside] && myMouseIn) {
- // Is mouse WAS not inside but IS now inside
- sfEvent.Type = Event::MouseLeft;
- myMouseIn = false;
-
- SendEvent(sfEvent);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Handle a mouse wheel event (NSEvent)
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::HandleMouseWheel(void *eventRef)
-{
- NSEvent *event = reinterpret_cast <NSEvent *> (eventRef);
-
- // SFML uses integer values for delta but Cocoa uses float and it is mostly fewer than 1.0
- // Therefore I chose to add the float value to a 'wheel status' and
- // send a sf event only when it's greater than 1.0
- myWheelStatus += [event deltaY];
-
- if (fabs(myWheelStatus) > 1.0f) {
- // Make the event and send it
- Event sfEvent;
- sfEvent.Type = Event::MouseWheelMoved;
- sfEvent.MouseWheel.Delta = (int) myWheelStatus;
- SendEvent(sfEvent);
-
- // Remove as much integer units as the one that have been put in the event
- // (was a mistake to set this to 0)
- myWheelStatus -= (int) myWheelStatus;
- }
-}
-
-////////////////////////////////////////////////////////////
-/// Return whether 'ev' must be considered as a TextEntered event
-////////////////////////////////////////////////////////////
-bool WindowImplCocoa::IsTextEvent(void *eventRef)
-{
- NSEvent *event = (NSEvent *)eventRef;
- bool res = false;
-
- if (event && [event type] == NSKeyDown && [[event characters] length]) {
- unichar code = [[event characters] characterAtIndex:0];
-
- // Codes from 0xF700 to 0xF8FF are non text keys (see NSEvent.h)
- // 0x35 is the Escape key
- if ([event keyCode] != 0x35 && (code < 0xF700 || code > 0xF8FF))
- res = true;
- }
-
- return res;
-}
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::Display
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::Display()
-{
- // Forward flush call to the window
- [myWrapper flushBuffer];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::ProcessEvents
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::ProcessEvents()
-{
- // Forward event handling call to the application controller
- [[sfPrivAppController sharedController] processEvents];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::MakeActive
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::SetActive(bool Active) const
-{
- // Forward the call to the window
- if (myWrapper)
- [myWrapper setActive:Active];
- else {
- // Or directly activate the shared OpenGL context if we're not using a window
- if (Active) {
- if ([NSOpenGLContext currentContext] != [sfPrivGLContext sharedContext])
- [[sfPrivGLContext sharedContext] makeCurrentContext];
- } else {
- if ([NSOpenGLContext currentContext] == [sfPrivGLContext sharedContext])
- [NSOpenGLContext clearCurrentContext];
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::UseVerticalSync
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::UseVerticalSync(bool Enabled)
-{
- // Forward the call to the window
- [myWrapper enableVerticalSync:Enabled];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::ShowMouseCursor
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::ShowMouseCursor(bool flag)
-{
- if (flag) {
- [NSCursor unhide];
- } else {
- [NSCursor hide];
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::SetCursorPosition
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::SetCursorPosition(unsigned int Left, unsigned int Top)
-{
- NSPoint pos = NSMakePoint ((float) Left, (float) Top);
-
- if (myWrapper) {
- // Flip for SFML window coordinate system
- pos.y = [[myWrapper window] frame].size.height - pos.y;
-
- // Adjust for view reference instead of window
- pos.y -= [[myWrapper window] frame].size.height - [[myWrapper view] frame].size.height;
-
- // Convert to screen coordinates
- NSPoint absolute = [[myWrapper window] convertBaseToScreen:pos];
-
- // Flip screen coodinates
- absolute.y = [[NSScreen mainScreen] frame].size.height - absolute.y;
-
- // Move cursor
- CGDisplayMoveCursorToPoint([sfPrivAppController primaryScreen],
- CGPointMake(absolute.x, absolute.y));
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::SetPosition
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::SetPosition(int Left, int Top)
-{
- [myWrapper setPosition:NSMakePoint(Left, Top)];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetSize
-///
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::SetSize(unsigned int Width, unsigned int Height)
-{
- [myWrapper setSize:NSMakeSize(Width, Height)];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::Show
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::Show(bool State)
-{
- [myWrapper show:State];
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::EnableKeyRepeat
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::EnableKeyRepeat(bool Enabled)
-{
- myUseKeyRepeat = Enabled;
-}
-
-
-////////////////////////////////////////////////////////////
-/// see WindowImpl::SetIcon
-////////////////////////////////////////////////////////////
-void WindowImplCocoa::SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels)
-{
- // Nothing to do
-}
-
-
-namespace {
- ////////////////////////////////////////////////////////////
- /// Return the SFML key corresponding to a key code
- ////////////////////////////////////////////////////////////
- Key::Code KeyForVirtualCode(unsigned short vCode)
- {
- static struct {
- unsigned short code;
- Key::Code sfKey;
- } virtualTable[] =
- {
- {0x35, Key::Escape},
- {0x31, Key::Space},
- {0x24, Key::Return}, // main Return key
- {0x4C, Key::Return}, // pav Return key
- {0x33, Key::Back},
- {0x30, Key::Tab},
- {0x74, Key::PageUp},
- {0x79, Key::PageDown},
- {0x77, Key::End},
- {0x73, Key::Home},
- {0x72, Key::Insert},
- {0x75, Key::Delete},
- {0x45, Key::Add},
- {0x4E, Key::Subtract},
- {0x43, Key::Multiply},
- {0x4B, Key::Divide},
-
- {0x7A, Key::F1}, {0x78, Key::F2}, {0x63, Key::F3},
- {0x76, Key::F4}, {0x60, Key::F5}, {0x61, Key::F6},
- {0x62, Key::F7}, {0x64, Key::F8}, {0x65, Key::F9},
- {0x6D, Key::F10}, {0x67, Key::F11}, {0x6F, Key::F12},
- {0x69, Key::F13}, {0x6B, Key::F14}, {0x71, Key::F15},
-
- {0x7B, Key::Left},
- {0x7C, Key::Right},
- {0x7E, Key::Up},
- {0x7D, Key::Down},
-
- {0x52, Key::Numpad0}, {0x53, Key::Numpad1}, {0x54, Key::Numpad2},
- {0x55, Key::Numpad3}, {0x56, Key::Numpad4}, {0x57, Key::Numpad5},
- {0x58, Key::Numpad6}, {0x59, Key::Numpad7}, {0x5B, Key::Numpad8},
- {0x5C, Key::Numpad9},
-
- {0x1D, Key::Num0}, {0x12, Key::Num1}, {0x13, Key::Num2},
- {0x14, Key::Num3}, {0x15, Key::Num4}, {0x17, Key::Num5},
- {0x16, Key::Num6}, {0x1A, Key::Num7}, {0x1C, Key::Num8},
- {0x19, Key::Num9},
-
- {0x3B, Key::LControl}, //< Left Ctrl
- {0x3A, Key::LAlt}, //< Left Option/Alt
- {0x37, Key::LSystem}, //< Left Command
- {0x38, Key::LShift}, //< Left Shift
- {0x3E, Key::RControl}, //< Right Ctrl
- {0x3D, Key::RAlt}, //< Right Option/Alt
- {0x36, Key::RSystem}, //< Right Command
- {0x3C, Key::RShift}, //< Right Shift
-
- {0x39, Key::Code(0)} //< Caps Lock (not handled by SFML for now)
- };
-
- Key::Code result = Key::Code(0);
-
- for (unsigned i = 0;virtualTable[i].code;i++) {
- if (virtualTable[i].code == vCode) {
- result = virtualTable[i].sfKey;
- break;
- }
- }
-
- return result;
- }
-
-
- ////////////////////////////////////////////////////////////
- /// Return the SFML key corresponding to a unicode code
- ////////////////////////////////////////////////////////////
- Key::Code KeyForUnicode(unsigned short uniCode)
- {
- // TODO: find a better way to get the language independant key
- static struct {
- unsigned short character;
- Key::Code sfKey;
- } unicodeTable[] =
- {
- {'!', Key::Code(0)}, //< No Key for this code
- {'"', Key::Code(0)}, //< No Key for this code
- {'#', Key::Code(0)}, //< No Key for this code
- {'$', Key::Code(0)}, //< No Key for this code
- {'%', Key::Code(0)}, //< No Key for this code
- {'&', Key::Code(0)}, //< No Key for this code
- {'\'', Key::Quote},
- {'(', Key::Code(0)}, //< No Key for this code
- {')', Key::Code(0)}, //< No Key for this code
- {'*', Key::Multiply},
- {'+', Key::Add},
- {',', Key::Comma},
- {'-', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'.', Key::Period},
- {'/', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'0', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'1', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'2', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'3', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'4', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'5', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'6', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'7', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'8', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {'9', Key::Code(0)}, //< Handled by KeyForVirtualCode()
- {':', Key::Code(0)}, //< No Key for this code
- {';', Key::SemiColon},
- {'<', Key::Code(0)}, //< No Key for this code
- {'=', Key::Equal},
- {'>', Key::Code(0)}, //< No Key for this code
- {'?', Key::Code(0)}, //< No Key for this code
- {'@', Key::Code(0)}, //< No Key for this code
- {'A', Key::A}, {'B', Key::B}, {'C', Key::C},
- {'D', Key::D}, {'E', Key::E}, {'F', Key::F},
- {'G', Key::G}, {'H', Key::H}, {'I', Key::I},
- {'J', Key::J}, {'K', Key::K}, {'L', Key::L},
- {'M', Key::M}, {'N', Key::N}, {'O', Key::O},
- {'P', Key::P}, {'Q', Key::Q}, {'R', Key::R},
- {'S', Key::S}, {'T', Key::T}, {'U', Key::U},
- {'V', Key::V}, {'W', Key::W}, {'X', Key::X},
- {'Y', Key::Y}, {'Z', Key::Z},
- {'[', Key::LBracket},
- {'\\', Key::BackSlash},
- {']', Key::RBracket},
- {'^', Key::Code(0)}, //< No Key for this code
- {'_', Key::Code(0)}, //< No Key for this code
- {'`', Key::Code(0)}, //< No Key for this code
- {'a', Key::A}, {'b', Key::B}, {'c', Key::C},
- {'d', Key::D}, {'e', Key::E}, {'f', Key::F},
- {'g', Key::G}, {'h', Key::H}, {'i', Key::I},
- {'j', Key::J}, {'k', Key::K}, {'l', Key::L},
- {'m', Key::M}, {'n', Key::N}, {'o', Key::O},
- {'p', Key::P}, {'q', Key::Q}, {'r', Key::R},
- {'s', Key::S}, {'t', Key::T}, {'u', Key::U},
- {'v', Key::V}, {'w', Key::W}, {'x', Key::X},
- {'y', Key::Y}, {'z', Key::Z},
- {'{', Key::Code(0)}, //< No Key for this code
- {'|', Key::Code(0)}, //< No Key for this code
- {'}', Key::Code(0)}, //< No Key for this code
- {'~', Key::Tilde},
- {0, Key::Code(0)}
- };
-
- Key::Code result = Key::Code(0);
-
- for (unsigned i = 0;unicodeTable[i].character;i++) {
- if (unicodeTable[i].character == uniCode) {
- result = unicodeTable[i].sfKey;
- break;
- }
- }
-
- return result;
- }
-
-} // anonymous namespace
-
-
-} // namespace priv
-
-} // namespace sf
-
diff --git a/src/SFML/Window/Context.cpp b/src/SFML/Window/Context.cpp
index 107bc6e..6b6bb6b 100755..100644
--- a/src/SFML/Window/Context.cpp
+++ b/src/SFML/Window/Context.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,62 +26,38 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window/Context.hpp>
-#include <SFML/Window/WindowImpl.hpp>
-
-
-namespace
-{
- // Make sure the dummy context is created at global startup
- sf::Context& Dummy = sf::Context::GetGlobal();
-}
+#include <SFML/Window/GlContext.hpp>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor, create the context
-////////////////////////////////////////////////////////////
Context::Context()
{
- myDummyWindow = priv::WindowImpl::New();
+ m_context = priv::GlContext::create();
+ setActive(true);
}
////////////////////////////////////////////////////////////
-/// Destructor, destroy the context
-////////////////////////////////////////////////////////////
Context::~Context()
{
- delete myDummyWindow;
+ delete m_context;
}
////////////////////////////////////////////////////////////
-/// Activate or deactivate the context
-////////////////////////////////////////////////////////////
-void Context::SetActive(bool Active)
+bool Context::setActive(bool active)
{
- myDummyWindow->SetActive(Active);
+ return m_context->setActive(active);
}
////////////////////////////////////////////////////////////
-/// Check if there's a context bound to the current thread
-////////////////////////////////////////////////////////////
-bool Context::IsContextActive()
+Context::Context(const ContextSettings& settings, unsigned int width, unsigned int height)
{
- return priv::WindowImpl::IsContextActive();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the global context
-////////////////////////////////////////////////////////////
-Context& Context::GetGlobal()
-{
- static Context* GlobalContext = new Context; // Never deleted, on purpose
-
- return *GlobalContext;
+ m_context = priv::GlContext::create(settings, width, height);
+ setActive(true);
}
} // namespace sf
diff --git a/src/SFML/Window/GlContext.cpp b/src/SFML/Window/GlContext.cpp
new file mode 100644
index 0000000..ce4bfec
--- /dev/null
+++ b/src/SFML/Window/GlContext.cpp
@@ -0,0 +1,280 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/GlContext.hpp>
+#include <SFML/System/ThreadLocalPtr.hpp>
+#include <SFML/System/Mutex.hpp>
+#include <SFML/System/Lock.hpp>
+#include <SFML/OpenGL.hpp>
+#include <SFML/Window/glext/glext.h>
+#include <set>
+#include <cstdlib>
+#include <cassert>
+
+
+#if defined(SFML_SYSTEM_WINDOWS)
+
+ #include <SFML/Window/Win32/WglContext.hpp>
+ typedef sf::priv::WglContext ContextType;
+
+#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)
+
+ #include <SFML/Window/Linux/GlxContext.hpp>
+ typedef sf::priv::GlxContext ContextType;
+
+#elif defined(SFML_SYSTEM_MACOS)
+
+ #include <SFML/Window/OSX/SFContext.hpp>
+ typedef sf::priv::SFContext ContextType;
+
+#endif
+
+
+namespace
+{
+ // This per-thread variable holds the current context for each thread
+ sf::ThreadLocalPtr<sf::priv::GlContext> currentContext(NULL);
+
+ // The hidden, inactive context that will be shared with all other contexts
+ ContextType* sharedContext = NULL;
+
+ // Internal contexts
+ sf::ThreadLocalPtr<sf::priv::GlContext> internalContext(NULL);
+ std::set<sf::priv::GlContext*> internalContexts;
+ sf::Mutex internalContextsMutex;
+
+ // Check if the internal context of the current thread is valid
+ bool hasInternalContext()
+ {
+ // The internal context can be null...
+ if (!internalContext)
+ return false;
+
+ // ... or non-null but deleted from the list of internal contexts
+ sf::Lock lock(internalContextsMutex);
+ return internalContexts.find(internalContext) != internalContexts.end();
+ }
+
+ // Retrieve the internal context for the current thread
+ sf::priv::GlContext* getInternalContext()
+ {
+ if (!hasInternalContext())
+ {
+ internalContext = sf::priv::GlContext::create();
+ sf::Lock lock(internalContextsMutex);
+ internalContexts.insert(internalContext);
+ }
+
+ return internalContext;
+ }
+}
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void GlContext::globalInit()
+{
+ // Create the shared context
+ sharedContext = new ContextType(NULL);
+ sharedContext->initialize();
+
+ // This call makes sure that:
+ // - the shared context is inactive (it must never be)
+ // - another valid context is activated in the current thread
+ sharedContext->setActive(false);
+}
+
+
+////////////////////////////////////////////////////////////
+void GlContext::globalCleanup()
+{
+ // Destroy the shared context
+ delete sharedContext;
+ sharedContext = NULL;
+
+ // Destroy the internal contexts
+ sf::Lock lock(internalContextsMutex);
+ for (std::set<GlContext*>::iterator it = internalContexts.begin(); it != internalContexts.end(); ++it)
+ delete *it;
+ internalContexts.clear();
+}
+
+
+////////////////////////////////////////////////////////////
+void GlContext::ensureContext()
+{
+ // If there's no active context on the current thread, activate an internal one
+ if (!currentContext)
+ getInternalContext()->setActive(true);
+}
+
+
+////////////////////////////////////////////////////////////
+GlContext* GlContext::create()
+{
+ GlContext* context = new ContextType(sharedContext);
+ context->initialize();
+
+ return context;
+}
+
+
+////////////////////////////////////////////////////////////
+GlContext* GlContext::create(const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel)
+{
+ // Make sure that there's an active context (context creation may need extensions, and thus a valid context)
+ ensureContext();
+
+ // Create the context
+ GlContext* context = new ContextType(sharedContext, settings, owner, bitsPerPixel);
+ context->initialize();
+
+ return context;
+}
+
+
+////////////////////////////////////////////////////////////
+GlContext* GlContext::create(const ContextSettings& settings, unsigned int width, unsigned int height)
+{
+ // Make sure that there's an active context (context creation may need extensions, and thus a valid context)
+ ensureContext();
+
+ // Create the context
+ GlContext* context = new ContextType(sharedContext, settings, width, height);
+ context->initialize();
+
+ return context;
+}
+
+
+////////////////////////////////////////////////////////////
+GlContext::~GlContext()
+{
+ // Deactivate the context before killing it, unless we're inside Cleanup()
+ if (sharedContext)
+ setActive(false);
+}
+
+
+////////////////////////////////////////////////////////////
+const ContextSettings& GlContext::getSettings() const
+{
+ return m_settings;
+}
+
+
+////////////////////////////////////////////////////////////
+bool GlContext::setActive(bool active)
+{
+ if (active)
+ {
+ if (this != currentContext)
+ {
+ // Activate the context
+ if (makeCurrent())
+ {
+ // Set it as the new current context for this thread
+ currentContext = this;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ // This context is already the active one on this thread, don't do anything
+ return true;
+ }
+ }
+ else
+ {
+ if (this == currentContext)
+ {
+ // To deactivate the context, we actually activate another one so that we make
+ // sure that there is always an active context for subsequent graphics operations
+ return getInternalContext()->setActive(true);
+ }
+ else
+ {
+ // This context is not the active one on this thread, don't do anything
+ return true;
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+GlContext::GlContext()
+{
+ // Nothing to do
+}
+
+
+////////////////////////////////////////////////////////////
+int GlContext::evaluateFormat(unsigned int bitsPerPixel, const ContextSettings& settings, int colorBits, int depthBits, int stencilBits, int antialiasing)
+{
+ return std::abs(static_cast<int>(bitsPerPixel - colorBits)) +
+ std::abs(static_cast<int>(settings.depthBits - depthBits)) +
+ std::abs(static_cast<int>(settings.stencilBits - stencilBits)) +
+ std::abs(static_cast<int>(settings.antialiasingLevel - antialiasing));
+}
+
+
+////////////////////////////////////////////////////////////
+void GlContext::initialize()
+{
+ // Activate the context
+ setActive(true);
+
+ // Retrieve the context version number
+ const GLubyte* version = glGetString(GL_VERSION);
+ if (version)
+ {
+ // The beginning of the returned string is "major.minor" (this is standard)
+ m_settings.majorVersion = version[0] - '0';
+ m_settings.minorVersion = version[2] - '0';
+ }
+ else
+ {
+ // Can't get the version number, assume 2.0
+ m_settings.majorVersion = 2;
+ m_settings.minorVersion = 0;
+ }
+
+ // Enable antialiasing if needed
+ if (m_settings.antialiasingLevel > 0)
+ glEnable(GL_MULTISAMPLE_ARB);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/GlContext.hpp b/src/SFML/Window/GlContext.hpp
new file mode 100644
index 0000000..7f8f4c0
--- /dev/null
+++ b/src/SFML/Window/GlContext.hpp
@@ -0,0 +1,234 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_GLCONTEXT_HPP
+#define SFML_GLCONTEXT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/Window/ContextSettings.hpp>
+#include <SFML/System/NonCopyable.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+class WindowImpl;
+
+////////////////////////////////////////////////////////////
+/// \brief Abstract class representing an OpenGL context
+///
+////////////////////////////////////////////////////////////
+class GlContext : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global initialization
+ ///
+ /// This function is called once, before the very first OpenGL
+ /// resource is created. It makes sure that everything is ready
+ /// for contexts to work properly.
+ /// Note: this function doesn't need to be thread-safe, as it
+ /// can be called only once.
+ ///
+ ////////////////////////////////////////////////////////////
+ static void globalInit();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global cleanup
+ ///
+ /// This function is called after the very last OpenGL resource
+ /// is destroyed. It makes sure that everything that was
+ /// created by initialize() is properly released.
+ /// Note: this function doesn't need to be thread-safe, as it
+ /// can be called only once.
+ ///
+ ////////////////////////////////////////////////////////////
+ static void globalCleanup();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Ensures that an OpenGL context is active in the current thread
+ ///
+ ////////////////////////////////////////////////////////////
+ static void ensureContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context, not associated to a window
+ ///
+ /// This function automatically chooses the specialized class
+ /// to use according to the OS.
+ ///
+ /// \return Pointer to the created context (don't forget to delete it)
+ ///
+ ////////////////////////////////////////////////////////////
+ static GlContext* create();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context attached to a window
+ ///
+ /// This function automatically chooses the specialized class
+ /// to use according to the OS.
+ ///
+ /// \param settings Creation parameters
+ /// \param owner Pointer to the owner window
+ /// \param bitsPerPixel Pixel depth (in bits per pixel)
+ ///
+ /// \return Pointer to the created context
+ ///
+ ////////////////////////////////////////////////////////////
+ static GlContext* create(const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context that embeds its own rendering target
+ ///
+ /// This function automatically chooses the specialized class
+ /// to use according to the OS.
+ ///
+ /// \param settings Creation parameters
+ /// \param width Back buffer width
+ /// \param height Back buffer height
+ ///
+ /// \return Pointer to the created context
+ ///
+ ////////////////////////////////////////////////////////////
+ static GlContext* create(const ContextSettings& settings, unsigned int width, unsigned int height);
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual ~GlContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ ///
+ /// \return Structure containing the settings
+ ///
+ ////////////////////////////////////////////////////////////
+ const ContextSettings& getSettings() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate or deactivate the context as the current target for rendering
+ ///
+ /// A 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 active on a thread at a time, thus
+ /// the context previously active (if any) automatically gets deactivated.
+ ///
+ /// \param active True to activate, false to deactivate
+ ///
+ /// \return True if operation was successful, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ bool setActive(bool active);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Display what has been rendered to the context so far
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void display() = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param enabled True to enable v-sync, false to deactivate
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVerticalSyncEnabled(bool enabled) = 0;
+
+protected :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ /// This constructor is meant for derived classes only.
+ ///
+ ////////////////////////////////////////////////////////////
+ GlContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the context as the current target
+ /// for rendering
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool makeCurrent() = 0;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Evaluate a pixel format configuration
+ ///
+ /// This functions can be used by implementations that have
+ /// several valid formats and want to get the best one.
+ /// A score is returned for the given configuration: the
+ /// lower the score is, the better the configuration is.
+ ///
+ /// \param bitsPerPixel Requested pixel depth (bits per pixel)
+ /// \param settings Requested additionnal settings
+ /// \param colorBits Color bits of the configuration to evaluate
+ /// \param depthBits Depth bits of the configuration to evaluate
+ /// \param stencilBits Stencil bits of the configuration to evaluate
+ /// \param antialiasing Antialiasing level of the configuration to evaluate
+ ///
+ /// \return Score of the configuration
+ ///
+ ////////////////////////////////////////////////////////////
+ static int evaluateFormat(unsigned int bitsPerPixel, const ContextSettings& settings, int colorBits, int depthBits, int stencilBits, int antialiasing);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ ContextSettings m_settings; ///< Creation settings of the context
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform various initializations after the context construction
+ ///
+ ////////////////////////////////////////////////////////////
+ void initialize();
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_GLCONTEXT_HPP
diff --git a/src/SFML/Window/GlResource.cpp b/src/SFML/Window/GlResource.cpp
new file mode 100644
index 0000000..dda11a7
--- /dev/null
+++ b/src/SFML/Window/GlResource.cpp
@@ -0,0 +1,85 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/GlResource.hpp>
+#include <SFML/Window/GlContext.hpp>
+#include <SFML/System/Mutex.hpp>
+#include <SFML/System/Lock.hpp>
+
+
+namespace
+{
+ // OpenGL resources counter and its mutex
+ unsigned int count = 0;
+ sf::Mutex mutex;
+}
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+GlResource::GlResource()
+{
+ {
+ // Protect from concurrent access
+ Lock lock(mutex);
+
+ // If this is the very first resource, trigger the global context initialization
+ if (count == 0)
+ priv::GlContext::globalInit();
+
+ // Increment the resources counter
+ count++;
+ }
+
+ // Now make sure that there is an active OpenGL context in the current thread
+ priv::GlContext::ensureContext();
+}
+
+
+////////////////////////////////////////////////////////////
+GlResource::~GlResource()
+{
+ // Protect from concurrent access
+ Lock lock(mutex);
+
+ // Decrement the resources counter
+ count--;
+
+ // If there's no more resource alive, we can trigger the global context cleanup
+ if (count == 0)
+ priv::GlContext::globalCleanup();
+}
+
+
+////////////////////////////////////////////////////////////
+void GlResource::ensureGlContext()
+{
+ priv::GlContext::ensureContext();
+}
+
+} // namespace sf
diff --git a/src/SFML/Window/Input.cpp b/src/SFML/Window/Input.cpp
deleted file mode 100755
index 01dd54f..0000000
--- a/src/SFML/Window/Input.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Input.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Input::Input() :
-myMouseX(0),
-myMouseY(0)
-{
- ResetStates();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the state of a key
-////////////////////////////////////////////////////////////
-bool Input::IsKeyDown(Key::Code KeyCode) const
-{
- return myKeys[KeyCode];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the state of a mouse button
-////////////////////////////////////////////////////////////
-bool Input::IsMouseButtonDown(Mouse::Button Button) const
-{
- return myMouseButtons[Button];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the state of a joystick button
-////////////////////////////////////////////////////////////
-bool Input::IsJoystickButtonDown(unsigned int JoyId, unsigned int Button) const
-{
- if ((JoyId < Joy::Count) && (Button < Joy::ButtonCount))
- return myJoystickButtons[JoyId][Button];
- else
- return false;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the mouse left position
-////////////////////////////////////////////////////////////
-int Input::GetMouseX() const
-{
- return myMouseX;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the mouse top position
-////////////////////////////////////////////////////////////
-int Input::GetMouseY() const
-{
- return myMouseY;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get a joystick axis position
-////////////////////////////////////////////////////////////
-float Input::GetJoystickAxis(unsigned int JoyId, Joy::Axis Axis) const
-{
- if (JoyId < Joy::Count)
- return myJoystickAxis[JoyId][Axis];
- else
- return 0.f;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowListener::OnEvent
-////////////////////////////////////////////////////////////
-void Input::OnEvent(const Event& EventReceived)
-{
- switch (EventReceived.Type)
- {
- // Key events
- case Event::KeyPressed : myKeys[EventReceived.Key.Code] = true; break;
- case Event::KeyReleased : myKeys[EventReceived.Key.Code] = false; break;
-
- // Mouse event
- case Event::MouseButtonPressed : myMouseButtons[EventReceived.MouseButton.Button] = true; break;
- case Event::MouseButtonReleased : myMouseButtons[EventReceived.MouseButton.Button] = false; break;
-
- // Mouse move event
- case Event::MouseMoved :
- myMouseX = EventReceived.MouseMove.X;
- myMouseY = EventReceived.MouseMove.Y;
- break;
-
- // Joystick button events
- case Event::JoyButtonPressed : myJoystickButtons[EventReceived.JoyButton.JoystickId][EventReceived.JoyButton.Button] = true; break;
- case Event::JoyButtonReleased : myJoystickButtons[EventReceived.JoyButton.JoystickId][EventReceived.JoyButton.Button] = false; break;
-
- // Joystick move event
- case Event::JoyMoved :
- myJoystickAxis[EventReceived.JoyMove.JoystickId][EventReceived.JoyMove.Axis] = EventReceived.JoyMove.Position;
- break;
-
- // Lost focus event : we must reset all persistent states
- case Event::LostFocus :
- {
- ResetStates();
- break;
- }
-
- default :
- break;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Reset all the states
-////////////////////////////////////////////////////////////
-void Input::ResetStates()
-{
- for (int i = 0; i < Key::Count; ++i)
- myKeys[i] = false;
-
- for (int i = 0; i < Mouse::ButtonCount; ++i)
- myMouseButtons[i] = false;
-
- for (int i = 0; i < Joy::Count; ++i)
- {
- for (int j = 0; j < Joy::ButtonCount; ++j)
- myJoystickButtons[i][j] = false;
-
- for (int j = 0; j < Joy::AxisCount; ++j)
- myJoystickAxis[i][j] = 0.f;
- myJoystickAxis[i][Joy::AxisPOV] = -1.f;
- }
-}
-
-} // namespace sf
diff --git a/src/SFML/Window/VideoModeSupport.hpp b/src/SFML/Window/InputImpl.hpp
index caa94aa..0e2069d 100755..100644
--- a/src/SFML/Window/VideoModeSupport.hpp
+++ b/src/SFML/Window/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,28 +22,21 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_VIDEOMODESUPPORT_HPP
-#define SFML_VIDEOMODESUPPORT_HPP
+#ifndef SFML_INPUTIMPL_HPP
+#define SFML_INPUTIMPL_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Config.hpp>
-
#if defined(SFML_SYSTEM_WINDOWS)
-
- #include <SFML/Window/Win32/VideoModeSupport.hpp>
-
+ #include <SFML/Window/Win32/InputImpl.hpp>
#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)
-
- #include <SFML/Window/Linux/VideoModeSupport.hpp>
-
+ #include <SFML/Window/Linux/InputImpl.hpp>
#elif defined(SFML_SYSTEM_MACOS)
-
- #include <SFML/Window/Cocoa/VideoModeSupport.hpp>
-
+ #include <SFML/Window/OSX/InputImpl.hpp>
#endif
-#endif // SFML_VIDEOMODESUPPORT_HPP
+#endif // SFML_INPUTIMPL_HPP
diff --git a/src/SFML/Window/Joystick.cpp b/src/SFML/Window/Joystick.cpp
new file mode 100644
index 0000000..e307948
--- /dev/null
+++ b/src/SFML/Window/Joystick.cpp
@@ -0,0 +1,75 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Joystick.hpp>
+#include <SFML/Window/JoystickManager.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+bool Joystick::isConnected(unsigned int joystick)
+{
+ return priv::JoystickManager::getInstance().getState(joystick).connected;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int Joystick::getButtonCount(unsigned int joystick)
+{
+ return priv::JoystickManager::getInstance().getCapabilities(joystick).buttonCount;
+}
+
+
+////////////////////////////////////////////////////////////
+bool Joystick::hasAxis(unsigned int joystick, Axis axis)
+{
+ return priv::JoystickManager::getInstance().getCapabilities(joystick).axes[axis];
+}
+
+
+////////////////////////////////////////////////////////////
+bool Joystick::isButtonPressed(unsigned int joystick, unsigned int button)
+{
+ return priv::JoystickManager::getInstance().getState(joystick).buttons[button];
+}
+
+
+////////////////////////////////////////////////////////////
+float Joystick::getAxisPosition(unsigned int joystick, Axis axis)
+{
+ return priv::JoystickManager::getInstance().getState(joystick).axes[axis];
+}
+
+
+////////////////////////////////////////////////////////////
+void Joystick::update()
+{
+ return priv::JoystickManager::getInstance().update();
+}
+
+} // namespace sf
diff --git a/src/SFML/Window/Win32/VideoModeSupport.cpp b/src/SFML/Window/JoystickImpl.hpp
index 8b98e74..1837ab4 100755..100644
--- a/src/SFML/Window/Win32/VideoModeSupport.cpp
+++ b/src/SFML/Window/JoystickImpl.hpp
@@ -1,74 +1,89 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Win32/VideoModeSupport.hpp>
-#include <windows.h>
-#include <algorithm>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Get supported video modes
-////////////////////////////////////////////////////////////
-void VideoModeSupport::GetSupportedVideoModes(std::vector<VideoMode>& Modes)
-{
- // First, clear array to fill
- Modes.clear();
-
- // Enumerate all available video modes for primary display adapter
- DEVMODE Win32Mode;
- Win32Mode.dmSize = sizeof(DEVMODE);
- for (int Count = 0; EnumDisplaySettings(NULL, Count, &Win32Mode); ++Count)
- {
- // Convert to sfVideoMode
- VideoMode Mode(Win32Mode.dmPelsWidth, Win32Mode.dmPelsHeight, Win32Mode.dmBitsPerPel);
-
- // Add it only if it is not already in the array
- if (std::find(Modes.begin(), Modes.end(), Mode) == Modes.end())
- Modes.push_back(Mode);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get current desktop video mode
-////////////////////////////////////////////////////////////
-VideoMode VideoModeSupport::GetDesktopVideoMode()
-{
- DEVMODE Win32Mode;
- Win32Mode.dmSize = sizeof(DEVMODE);
- EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &Win32Mode);
-
- return VideoMode(Win32Mode.dmPelsWidth, Win32Mode.dmPelsHeight, Win32Mode.dmBitsPerPel);
-}
-
-} // namespace priv
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_JOYSTICKIMPL_HPP
+#define SFML_JOYSTICKIMPL_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Config.hpp>
+#include <SFML/Window/Joystick.hpp>
+#include <algorithm>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Structure holding a joystick's capabilities
+///
+////////////////////////////////////////////////////////////
+struct JoystickCaps
+{
+ JoystickCaps()
+ {
+ buttonCount = 0;
+ std::fill(axes, axes + Joystick::AxisCount, false);
+ }
+
+ unsigned int buttonCount; ///< Number of buttons supported by the joystick
+ bool axes[Joystick::AxisCount]; ///< Support for each axis
+};
+
+
+////////////////////////////////////////////////////////////
+/// \brief Structure holding a joystick's state
+///
+////////////////////////////////////////////////////////////
+struct JoystickState
+{
+ JoystickState()
+ {
+ connected = false;
+ std::fill(axes, axes + Joystick::AxisCount, 0.f);
+ std::fill(buttons, buttons + Joystick::ButtonCount, false);
+ }
+
+ bool connected; ///< Is the joystick currently connected?
+ float axes[Joystick::AxisCount]; ///< Position of each axis, in range [-100, 100]
+ bool buttons[Joystick::ButtonCount]; ///< Status of each button (true = pressed)
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#if defined(SFML_SYSTEM_WINDOWS)
+ #include <SFML/Window/Win32/JoystickImpl.hpp>
+#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)
+ #include <SFML/Window/Linux/JoystickImpl.hpp>
+#elif defined(SFML_SYSTEM_MACOS)
+ #include <SFML/Window/OSX/JoystickImpl.hpp>
+#endif
+
+
+#endif // SFML_JOYSTICKIMPL_HPP
diff --git a/src/SFML/Window/JoystickManager.cpp b/src/SFML/Window/JoystickManager.cpp
new file mode 100644
index 0000000..2ddcdfa
--- /dev/null
+++ b/src/SFML/Window/JoystickManager.cpp
@@ -0,0 +1,114 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/JoystickManager.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+JoystickManager& JoystickManager::getInstance()
+{
+ static JoystickManager instance;
+ return instance;
+}
+
+
+////////////////////////////////////////////////////////////
+const JoystickCaps& JoystickManager::getCapabilities(unsigned int joystick) const
+{
+ return m_joysticks[joystick].capabilities;
+}
+
+
+////////////////////////////////////////////////////////////
+const JoystickState& JoystickManager::getState(unsigned int joystick) const
+{
+ return m_joysticks[joystick].state;
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickManager::update()
+{
+ for (int i = 0; i < Joystick::Count; ++i)
+ {
+ Item& item = m_joysticks[i];
+
+ if (item.state.connected)
+ {
+ // Get the current state of the joystick
+ item.state = item.joystick.update();
+
+ // Check if it's still connected
+ if (!item.state.connected)
+ {
+ item.joystick.close();
+ item.capabilities = JoystickCaps();
+ item.state = JoystickState();
+ }
+ }
+ else
+ {
+ // Check if the joystick was connected since last update
+ if (JoystickImpl::isConnected(i))
+ {
+ if (item.joystick.open(i))
+ {
+ item.capabilities = item.joystick.getCapabilities();
+ item.state = item.joystick.update();
+ }
+ }
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickManager::JoystickManager()
+{
+ JoystickImpl::initialize();
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickManager::~JoystickManager()
+{
+ for (int i = 0; i < Joystick::Count; ++i)
+ {
+ if (m_joysticks[i].state.connected)
+ m_joysticks[i].joystick.close();
+ }
+
+ JoystickImpl::cleanup();
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/Network/SelectorBase.hpp b/src/SFML/Window/JoystickManager.hpp
index 4b9e915..fda8c22 100755..100644
--- a/include/SFML/Network/SelectorBase.hpp
+++ b/src/SFML/Window/JoystickManager.hpp
@@ -1,112 +1,118 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SELECTORBASE_HPP
-#define SFML_SELECTORBASE_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <SFML/Network/SocketHelper.hpp>
-#include <map>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Private base class for selectors.
-/// As Selector is a template class, this base is needed so that
-/// every system call get compiled in SFML (not inlined)
-////////////////////////////////////////////////////////////
-class SFML_API SelectorBase
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- SelectorBase();
-
- ////////////////////////////////////////////////////////////
- /// Add a socket to watch
- ///
- /// \param Socket : Socket to add
- ///
- ////////////////////////////////////////////////////////////
- void Add(SocketHelper::SocketType Socket);
-
- ////////////////////////////////////////////////////////////
- /// Remove a socket
- ///
- /// \param Socket : Socket to remove
- ///
- ////////////////////////////////////////////////////////////
- void Remove(SocketHelper::SocketType Socket);
-
- ////////////////////////////////////////////////////////////
- /// Remove all sockets
- ///
- ////////////////////////////////////////////////////////////
- void Clear();
-
- ////////////////////////////////////////////////////////////
- /// Wait and collect sockets which are ready for reading.
- /// This functions will return either when at least one socket
- /// is ready, or when the given time is out
- ///
- /// \param Timeout : Timeout, in seconds (0 by default : no timeout)
- ///
- /// \return Number of sockets ready to be read
- ///
- ////////////////////////////////////////////////////////////
- unsigned int Wait(float Timeout = 0.f);
-
- ////////////////////////////////////////////////////////////
- /// After a call to Wait(), get the Index-th socket which is
- /// ready for reading. The total number of sockets ready
- /// is the integer returned by the previous call to Wait()
- ///
- /// \param Index : Index of the socket to get
- ///
- /// \return The Index-th socket
- ///
- ////////////////////////////////////////////////////////////
- SocketHelper::SocketType GetSocketReady(unsigned int Index);
-
-private :
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- fd_set mySet; ///< Set of socket to watch
- fd_set mySetReady; ///< Set of socket which are ready for reading
- int myMaxSocket; ///< Maximum socket index
-};
-
-} // namespace sf
-
-
-#endif // SFML_SELECTORBASE_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_JOYSTICKMANAGER_HPP
+#define SFML_JOYSTICKMANAGER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Joystick.hpp>
+#include <SFML/Window/JoystickImpl.hpp>
+#include <SFML/System/NonCopyable.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Global joystick manager
+///
+////////////////////////////////////////////////////////////
+class JoystickManager : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the global unique instance of the manager
+ ///
+ /// \return Unique instance of the joystick manager
+ ///
+ ////////////////////////////////////////////////////////////
+ static JoystickManager& getInstance();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the capabilities of an open joystick
+ ///
+ /// \param joystick Index of the joystick
+ ///
+ /// \return Capabilities of the joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ const JoystickCaps& getCapabilities(unsigned int joystick) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current state of an open joystick
+ ///
+ /// \param joystick Index of the joystick
+ ///
+ /// \return Current state of the joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ const JoystickState& getState(unsigned int joystick) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the state of all the joysticks
+ ///
+ ////////////////////////////////////////////////////////////
+ void update();
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ JoystickManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~JoystickManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Joystick information and state
+ ///
+ ////////////////////////////////////////////////////////////
+ struct Item
+ {
+ JoystickImpl joystick; ///< Joystick implementation
+ JoystickState state; ///< The current joystick state
+ JoystickCaps capabilities; ///< The joystick capabilities
+ };
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ Item m_joysticks[Joystick::Count]; ///< Joysticks information and state
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_JOYSTICKMANAGER_HPP
diff --git a/src/SFML/Window/Keyboard.cpp b/src/SFML/Window/Keyboard.cpp
new file mode 100644
index 0000000..0d30f3c
--- /dev/null
+++ b/src/SFML/Window/Keyboard.cpp
@@ -0,0 +1,40 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/InputImpl.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+bool Keyboard::isKeyPressed(Key key)
+{
+ return priv::InputImpl::isKeyPressed(key);
+}
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/Display.cpp b/src/SFML/Window/Linux/Display.cpp
new file mode 100644
index 0000000..557f8d6
--- /dev/null
+++ b/src/SFML/Window/Linux/Display.cpp
@@ -0,0 +1,65 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Linux/Display.hpp>
+#include <cassert>
+
+
+namespace
+{
+ // The shared display and its reference counter
+ Display* sharedDisplay = NULL;
+ unsigned int referenceCount = 0;
+}
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+Display* OpenDisplay()
+{
+ if (referenceCount == 0)
+ sharedDisplay = XOpenDisplay(NULL);
+ referenceCount++;
+ return sharedDisplay;
+}
+
+
+////////////////////////////////////////////////////////////
+void CloseDisplay(Display* display)
+{
+ assert(display == sharedDisplay);
+
+ referenceCount--;
+ if (referenceCount == 0)
+ XCloseDisplay(display);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/Display.hpp b/src/SFML/Window/Linux/Display.hpp
new file mode 100644
index 0000000..94bc98c
--- /dev/null
+++ b/src/SFML/Window/Linux/Display.hpp
@@ -0,0 +1,62 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SHAREDDISPLAY_HPP
+#define SFML_SHAREDDISPLAY_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <X11/Xlib.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Get the shared Display
+///
+/// This function increments the reference count of the display,
+/// it must be matched with a call to CloseDisplay.
+///
+/// \return Pointer to the shared display
+///
+////////////////////////////////////////////////////////////
+Display* OpenDisplay();
+
+////////////////////////////////////////////////////////////
+/// \brief Release a reference to the shared
+///
+/// \param display Display to release
+///
+////////////////////////////////////////////////////////////
+void CloseDisplay(Display* display);
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_SHAREDDISPLAY_HPP
diff --git a/src/SFML/Window/Linux/GlxContext.cpp b/src/SFML/Window/Linux/GlxContext.cpp
new file mode 100644
index 0000000..6454d78
--- /dev/null
+++ b/src/SFML/Window/Linux/GlxContext.cpp
@@ -0,0 +1,343 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#define GLX_GLXEXT_LEGACY // so that our local glxext.h is used instead of the system one
+#include <SFML/Window/Linux/GlxContext.hpp>
+#include <SFML/Window/Linux/WindowImplX11.hpp>
+#include <SFML/Window/Linux/Display.hpp>
+#include <SFML/OpenGL.hpp>
+#include <SFML/Window/glext/glxext.h>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+GlxContext::GlxContext(GlxContext* shared) :
+m_window (0),
+m_context (NULL),
+m_ownsWindow(true)
+{
+ // Open a connection with the X server
+ m_display = OpenDisplay();
+
+ // Create a dummy window (disabled and hidden)
+ int screen = DefaultScreen(m_display);
+ m_window = XCreateWindow(m_display,
+ RootWindow(m_display, screen),
+ 0, 0,
+ 1, 1,
+ 0,
+ DefaultDepth(m_display, screen),
+ InputOutput,
+ DefaultVisual(m_display, screen),
+ 0, NULL);
+
+ // Create the context
+ createContext(shared, VideoMode::getDesktopMode().bitsPerPixel, ContextSettings());
+}
+
+
+////////////////////////////////////////////////////////////
+GlxContext::GlxContext(GlxContext* shared, const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel) :
+m_window (0),
+m_context (NULL),
+m_ownsWindow(false)
+{
+ // Open a connection with the X server
+ // (important: must be the same display as the owner window)
+ m_display = OpenDisplay();
+
+ // Get the owner window and its device context
+ m_window = static_cast< ::Window>(owner->getSystemHandle());
+
+ // Create the context
+ if (m_window)
+ createContext(shared, bitsPerPixel, settings);
+}
+
+
+////////////////////////////////////////////////////////////
+GlxContext::GlxContext(GlxContext* shared, const ContextSettings& settings, unsigned int width, unsigned int height) :
+m_window (0),
+m_context (NULL),
+m_ownsWindow(true)
+{
+ // Open a connection with the X server
+ m_display = OpenDisplay();
+
+ // Create the hidden window
+ int screen = DefaultScreen(m_display);
+ m_window = XCreateWindow(m_display,
+ RootWindow(m_display, screen),
+ 0, 0,
+ width, height,
+ 0,
+ DefaultDepth(m_display, screen),
+ InputOutput,
+ DefaultVisual(m_display, screen),
+ 0, NULL);
+
+ // Create the context
+ createContext(shared, VideoMode::getDesktopMode().bitsPerPixel, settings);
+}
+
+
+////////////////////////////////////////////////////////////
+GlxContext::~GlxContext()
+{
+ // Destroy the context
+ if (m_context)
+ {
+ if (glXGetCurrentContext() == m_context)
+ glXMakeCurrent(m_display, None, NULL);
+ glXDestroyContext(m_display, m_context);
+ }
+
+ // Destroy the window if we own it
+ if (m_window && m_ownsWindow)
+ {
+ XDestroyWindow(m_display, m_window);
+ XFlush(m_display);
+ }
+
+ // Close the connection with the X server
+ CloseDisplay(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+bool GlxContext::makeCurrent()
+{
+ return m_context && glXMakeCurrent(m_display, m_window, m_context);
+}
+
+
+////////////////////////////////////////////////////////////
+void GlxContext::display()
+{
+ if (m_window)
+ glXSwapBuffers(m_display, m_window);
+}
+
+
+////////////////////////////////////////////////////////////
+void GlxContext::setVerticalSyncEnabled(bool enabled)
+{
+ const GLubyte* name = reinterpret_cast<const GLubyte*>("glXSwapIntervalSGI");
+ PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = reinterpret_cast<PFNGLXSWAPINTERVALSGIPROC>(glXGetProcAddress(name));
+ if (glXSwapIntervalSGI)
+ glXSwapIntervalSGI(enabled ? 1 : 0);
+}
+
+
+////////////////////////////////////////////////////////////
+XVisualInfo GlxContext::selectBestVisual(::Display* display, unsigned int bitsPerPixel, const ContextSettings& settings)
+{
+ // Retrieve all the visuals
+ int count;
+ XVisualInfo* visuals = XGetVisualInfo(display, 0, NULL, &count);
+ if (visuals)
+ {
+ // Evaluate all the returned visuals, and pick the best one1
+ int bestScore = 0xFFFF;
+ XVisualInfo bestVisual;
+ for (int i = 0; i < count; ++i)
+ {
+ // Check mandatory attributes
+ int doubleBuffer;
+ glXGetConfig(display, &visuals[i], GLX_DOUBLEBUFFER, &doubleBuffer);
+ if (!doubleBuffer)
+ continue;
+
+ // Extract the components of the current visual
+ int red, green, blue, alpha, depth, stencil, multiSampling, samples;
+ glXGetConfig(display, &visuals[i], GLX_RED_SIZE, &red);
+ glXGetConfig(display, &visuals[i], GLX_GREEN_SIZE, &green);
+ glXGetConfig(display, &visuals[i], GLX_BLUE_SIZE, &blue);
+ glXGetConfig(display, &visuals[i], GLX_ALPHA_SIZE, &alpha);
+ glXGetConfig(display, &visuals[i], GLX_DEPTH_SIZE, &depth);
+ glXGetConfig(display, &visuals[i], GLX_STENCIL_SIZE, &stencil);
+ glXGetConfig(display, &visuals[i], GLX_SAMPLE_BUFFERS_ARB, &multiSampling);
+ glXGetConfig(display, &visuals[i], GLX_SAMPLES_ARB, &samples);
+
+ // Evaluate the visual
+ int color = red + green + blue + alpha;
+ int score = evaluateFormat(bitsPerPixel, settings, color, depth, stencil, multiSampling ? samples : 0);
+
+ // If it's better than the current best, make it the new best
+ if (score < bestScore)
+ {
+ bestScore = score;
+ bestVisual = visuals[i];
+ }
+ }
+
+ // Free the array of visuals
+ XFree(visuals);
+
+ return bestVisual;
+ }
+ else
+ {
+ // Should never happen...
+ err() << "No GLX visual found. You should check your graphics driver" << std::endl;
+
+ return XVisualInfo();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void GlxContext::createContext(GlxContext* shared, unsigned int bitsPerPixel, const ContextSettings& settings)
+{
+ XVisualInfo* visualInfo = NULL;
+
+ // Save the creation settings
+ m_settings = settings;
+
+ // Get the context to share display lists with
+ GLXContext toShare = shared ? shared->m_context : NULL;
+
+ // Create the OpenGL context -- first try context versions >= 3.0 if it is requested (they require special code)
+ if (m_settings.majorVersion >= 3)
+ {
+ const GLubyte* name = reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB");
+ PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = reinterpret_cast<PFNGLXCREATECONTEXTATTRIBSARBPROC>(glXGetProcAddress(name));
+ if (glXCreateContextAttribsARB)
+ {
+ // Select a GLXFB config that matches the requested context settings
+ int nbConfigs = 0;
+ int fbAttributes[] =
+ {
+ GLX_DEPTH_SIZE, settings.depthBits,
+ GLX_STENCIL_SIZE, settings.stencilBits,
+ GLX_SAMPLE_BUFFERS, settings.antialiasingLevel > 0,
+ GLX_SAMPLES, settings.antialiasingLevel,
+ GLX_RED_SIZE, 8,
+ GLX_GREEN_SIZE, 8,
+ GLX_BLUE_SIZE, 8,
+ GLX_ALPHA_SIZE, bitsPerPixel == 32 ? 8 : 0,
+ GLX_DOUBLEBUFFER, True,
+ GLX_X_RENDERABLE, True,
+ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
+ GLX_RENDER_TYPE, GLX_RGBA_BIT,
+ GLX_CONFIG_CAVEAT, GLX_NONE,
+ None
+ };
+ GLXFBConfig* configs = glXChooseFBConfig(m_display, DefaultScreen(m_display), fbAttributes, &nbConfigs);
+ if (configs && nbConfigs)
+ {
+ while (!m_context && (m_settings.majorVersion >= 3))
+ {
+ // Create the context
+ int attributes[] =
+ {
+ GLX_CONTEXT_MAJOR_VERSION_ARB, static_cast<int>(m_settings.majorVersion),
+ GLX_CONTEXT_MINOR_VERSION_ARB, static_cast<int>(m_settings.minorVersion),
+ GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
+ 0, 0
+ };
+ m_context = glXCreateContextAttribsARB(m_display, configs[0], toShare, true, attributes);
+
+ if (m_context)
+ {
+ // Ok: retrieve the config's visual
+ visualInfo = glXGetVisualFromFBConfig(m_display, configs[0]);
+ }
+ else
+ {
+ // If we couldn't create the context, lower the version number and try again -- stop at 3.0
+ // Invalid version numbers will be generated by this algorithm (like 3.9), but we really don't care
+ if (m_settings.minorVersion > 0)
+ {
+ // If the minor version is not 0, we decrease it and try again
+ m_settings.minorVersion--;
+ }
+ else
+ {
+ // If the minor version is 0, we decrease the major version
+ m_settings.majorVersion--;
+ m_settings.minorVersion = 9;
+ }
+ }
+ }
+ XFree(configs);
+ }
+ }
+ }
+
+ // If the OpenGL >= 3.0 context failed or if we don't want one, create a regular OpenGL 1.x/2.x context
+ if (!m_context)
+ {
+ // set the context version to 2.0 (arbitrary)
+ m_settings.majorVersion = 2;
+ m_settings.minorVersion = 0;
+
+ // Retrieve the attributes of the target window
+ XWindowAttributes windowAttributes;
+ if (XGetWindowAttributes(m_display, m_window, &windowAttributes) == 0)
+ {
+ err() << "Failed to get the window attributes" << std::endl;
+ return;
+ }
+
+ // Get its visual
+ XVisualInfo tpl;
+ tpl.screen = DefaultScreen(m_display);
+ tpl.visualid = XVisualIDFromVisual(windowAttributes.visual);
+ int nbVisuals = 0;
+ visualInfo = XGetVisualInfo(m_display, VisualIDMask | VisualScreenMask, &tpl, &nbVisuals);
+
+ // Create the context, using the target window's visual
+ m_context = glXCreateContext(m_display, visualInfo, toShare, true);
+ if (!m_context)
+ {
+ err() << "Failed to create an OpenGL context for this window" << std::endl;
+ return;
+ }
+ }
+
+ // Update the creation settings from the chosen format
+ int depth, stencil, multiSampling, samples;
+ glXGetConfig(m_display, visualInfo, GLX_DEPTH_SIZE, &depth);
+ glXGetConfig(m_display, visualInfo, GLX_STENCIL_SIZE, &stencil);
+ glXGetConfig(m_display, visualInfo, GLX_SAMPLE_BUFFERS_ARB, &multiSampling);
+ glXGetConfig(m_display, visualInfo, GLX_SAMPLES_ARB, &samples);
+ m_settings.depthBits = static_cast<unsigned int>(depth);
+ m_settings.stencilBits = static_cast<unsigned int>(stencil);
+ m_settings.antialiasingLevel = multiSampling ? samples : 0;
+
+ // Free the visual info
+ XFree(visualInfo);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/GlxContext.hpp b/src/SFML/Window/Linux/GlxContext.hpp
new file mode 100644
index 0000000..493c858
--- /dev/null
+++ b/src/SFML/Window/Linux/GlxContext.hpp
@@ -0,0 +1,148 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_GLXCONTEXT_HPP
+#define SFML_GLXCONTEXT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/GlContext.hpp>
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Linux (GLX) implementation of OpenGL contexts
+///
+////////////////////////////////////////////////////////////
+class GlxContext : public GlContext
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new default context
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ ///
+ ////////////////////////////////////////////////////////////
+ GlxContext(GlxContext* shared);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context attached to a window
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param owner Pointer to the owner window
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ ///
+ ////////////////////////////////////////////////////////////
+ GlxContext(GlxContext* shared, const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context that embeds its own rendering target
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param width Back buffer width, in pixels
+ /// \param height Back buffer height, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ GlxContext(GlxContext* shared, const ContextSettings& settings, unsigned int width, unsigned int height);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~GlxContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the context as the current target for rendering
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool makeCurrent();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Display what has been rendered to the context so far
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void display();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param enabled True to enable v-sync, false to deactivate
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVerticalSyncEnabled(bool enabled);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Select the best GLX visual for a given set of settings
+ ///
+ /// \param display X display
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ /// \param settings Requested context settings
+ ///
+ /// \return The best visual
+ ///
+ ////////////////////////////////////////////////////////////
+ static XVisualInfo selectBestVisual(::Display* display, unsigned int bitsPerPixel, const ContextSettings& settings);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the context
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ /// \param settings Creation parameters
+ ///
+ ////////////////////////////////////////////////////////////
+ void createContext(GlxContext* shared, unsigned int bitsPerPixel, const ContextSettings& settings);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ ::Display* m_display; ///< Connection to the X server
+ ::Window m_window; ///< Window to which the context is attached
+ GLXContext m_context; ///< OpenGL context
+ bool m_ownsWindow; ///< Do we own the window associated to the context?
+};
+
+} // namespace priv
+
+} // namespace sf
+
+#endif // SFML_GLXCONTEXT_HPP
diff --git a/src/SFML/Window/Linux/InputImpl.cpp b/src/SFML/Window/Linux/InputImpl.cpp
new file mode 100644
index 0000000..a9362ff
--- /dev/null
+++ b/src/SFML/Window/Linux/InputImpl.cpp
@@ -0,0 +1,293 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Linux/InputImpl.hpp>
+#include <SFML/Window/Window.hpp>
+#include <SFML/Window/Linux/Display.hpp>
+#include <X11/Xlib.h>
+#include <X11/keysym.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+bool InputImpl::isKeyPressed(Keyboard::Key key)
+{
+ // Get the corresponding X11 keysym
+ KeySym keysym = 0;
+ switch (key)
+ {
+ case Keyboard::A: keysym = XK_A; break;
+ case Keyboard::B: keysym = XK_B; break;
+ case Keyboard::C: keysym = XK_C; break;
+ case Keyboard::D: keysym = XK_D; break;
+ case Keyboard::E: keysym = XK_E; break;
+ case Keyboard::F: keysym = XK_F; break;
+ case Keyboard::G: keysym = XK_G; break;
+ case Keyboard::H: keysym = XK_H; break;
+ case Keyboard::I: keysym = XK_I; break;
+ case Keyboard::J: keysym = XK_J; break;
+ case Keyboard::K: keysym = XK_K; break;
+ case Keyboard::L: keysym = XK_L; break;
+ case Keyboard::M: keysym = XK_M; break;
+ case Keyboard::N: keysym = XK_N; break;
+ case Keyboard::O: keysym = XK_O; break;
+ case Keyboard::P: keysym = XK_P; break;
+ case Keyboard::Q: keysym = XK_Q; break;
+ case Keyboard::R: keysym = XK_R; break;
+ case Keyboard::S: keysym = XK_S; break;
+ case Keyboard::T: keysym = XK_T; break;
+ case Keyboard::U: keysym = XK_U; break;
+ case Keyboard::V: keysym = XK_V; break;
+ case Keyboard::W: keysym = XK_W; break;
+ case Keyboard::X: keysym = XK_X; break;
+ case Keyboard::Y: keysym = XK_Y; break;
+ case Keyboard::Z: keysym = XK_Z; break;
+ case Keyboard::Num0: keysym = XK_0; break;
+ case Keyboard::Num1: keysym = XK_1; break;
+ case Keyboard::Num2: keysym = XK_2; break;
+ case Keyboard::Num3: keysym = XK_3; break;
+ case Keyboard::Num4: keysym = XK_4; break;
+ case Keyboard::Num5: keysym = XK_5; break;
+ case Keyboard::Num6: keysym = XK_6; break;
+ case Keyboard::Num7: keysym = XK_7; break;
+ case Keyboard::Num8: keysym = XK_8; break;
+ case Keyboard::Num9: keysym = XK_9; break;
+ case Keyboard::Escape: keysym = XK_Escape; break;
+ case Keyboard::LControl: keysym = XK_Control_L; break;
+ case Keyboard::LShift: keysym = XK_Shift_L; break;
+ case Keyboard::LAlt: keysym = XK_Alt_L; break;
+ case Keyboard::LSystem: keysym = XK_Super_L; break;
+ case Keyboard::RControl: keysym = XK_Control_R; break;
+ case Keyboard::RShift: keysym = XK_Shift_R; break;
+ case Keyboard::RAlt: keysym = XK_Alt_R; break;
+ case Keyboard::RSystem: keysym = XK_Super_R; break;
+ case Keyboard::Menu: keysym = XK_Menu; break;
+ case Keyboard::LBracket: keysym = XK_bracketleft; break;
+ case Keyboard::RBracket: keysym = XK_bracketright; break;
+ case Keyboard::SemiColon: keysym = XK_semicolon; break;
+ case Keyboard::Comma: keysym = XK_comma; break;
+ case Keyboard::Period: keysym = XK_period; break;
+ case Keyboard::Quote: keysym = XK_dead_acute; break;
+ case Keyboard::Slash: keysym = XK_slash; break;
+ case Keyboard::BackSlash: keysym = XK_backslash; break;
+ case Keyboard::Tilde: keysym = XK_dead_grave; break;
+ case Keyboard::Equal: keysym = XK_equal; break;
+ case Keyboard::Dash: keysym = XK_minus; break;
+ case Keyboard::Space: keysym = XK_space; break;
+ case Keyboard::Return: keysym = XK_Return; break;
+ case Keyboard::BackSpace: keysym = XK_BackSpace; break;
+ case Keyboard::Tab: keysym = XK_Tab; break;
+ case Keyboard::PageUp: keysym = XK_Prior; break;
+ case Keyboard::PageDown: keysym = XK_Next; break;
+ case Keyboard::End: keysym = XK_End; break;
+ case Keyboard::Home: keysym = XK_Home; break;
+ case Keyboard::Insert: keysym = XK_Insert; break;
+ case Keyboard::Delete: keysym = XK_Delete; break;
+ case Keyboard::Add: keysym = XK_KP_Add; break;
+ case Keyboard::Subtract: keysym = XK_KP_Subtract; break;
+ case Keyboard::Multiply: keysym = XK_KP_Multiply; break;
+ case Keyboard::Divide: keysym = XK_KP_Divide; break;
+ case Keyboard::Left: keysym = XK_Left; break;
+ case Keyboard::Right: keysym = XK_Right; break;
+ case Keyboard::Up: keysym = XK_Up; break;
+ case Keyboard::Down: keysym = XK_Down; break;
+ case Keyboard::Numpad0: keysym = XK_KP_0; break;
+ case Keyboard::Numpad1: keysym = XK_KP_1; break;
+ case Keyboard::Numpad2: keysym = XK_KP_2; break;
+ case Keyboard::Numpad3: keysym = XK_KP_3; break;
+ case Keyboard::Numpad4: keysym = XK_KP_4; break;
+ case Keyboard::Numpad5: keysym = XK_KP_5; break;
+ case Keyboard::Numpad6: keysym = XK_KP_6; break;
+ case Keyboard::Numpad7: keysym = XK_KP_7; break;
+ case Keyboard::Numpad8: keysym = XK_KP_8; break;
+ case Keyboard::Numpad9: keysym = XK_KP_9; break;
+ case Keyboard::F1: keysym = XK_F1; break;
+ case Keyboard::F2: keysym = XK_F2; break;
+ case Keyboard::F3: keysym = XK_F3; break;
+ case Keyboard::F4: keysym = XK_F4; break;
+ case Keyboard::F5: keysym = XK_F5; break;
+ case Keyboard::F6: keysym = XK_F6; break;
+ case Keyboard::F7: keysym = XK_F7; break;
+ case Keyboard::F8: keysym = XK_F8; break;
+ case Keyboard::F9: keysym = XK_F9; break;
+ case Keyboard::F10: keysym = XK_F10; break;
+ case Keyboard::F11: keysym = XK_F11; break;
+ case Keyboard::F12: keysym = XK_F12; break;
+ case Keyboard::F13: keysym = XK_F13; break;
+ case Keyboard::F14: keysym = XK_F14; break;
+ case Keyboard::F15: keysym = XK_F15; break;
+ case Keyboard::Pause: keysym = XK_Pause; break;
+ default: keysym = 0; break;
+ }
+
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ // Convert to keycode
+ KeyCode keycode = XKeysymToKeycode(display, keysym);
+ if (keycode != 0)
+ {
+ // Get the whole keyboard state
+ char keys[32];
+ XQueryKeymap(display, keys);
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+
+ // Check our keycode
+ return (keys[keycode / 8] & (1 << (keycode % 8))) != 0;
+ }
+ else
+ {
+ // Close the connection with the X server
+ CloseDisplay(display);
+
+ return false;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool InputImpl::isMouseButtonPressed(Mouse::Button button)
+{
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ // we don't care about these but they are required
+ ::Window root, child;
+ int wx, wy;
+ int gx, gy;
+
+ unsigned int buttons = 0;
+ XQueryPointer(display, DefaultRootWindow(display), &root, &child, &gx, &gy, &wx, &wy, &buttons);
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+
+ switch (button)
+ {
+ case Mouse::Left: return buttons & Button1Mask;
+ case Mouse::Right: return buttons & Button3Mask;
+ case Mouse::Middle: return buttons & Button2Mask;
+ case Mouse::XButton1: return false; // not supported by X
+ case Mouse::XButton2: return false; // not supported by X
+ default: return false;
+ }
+
+ return false;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition()
+{
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ // we don't care about these but they are required
+ ::Window root, child;
+ int x, y;
+ unsigned int buttons;
+
+ int gx = 0;
+ int gy = 0;
+ XQueryPointer(display, DefaultRootWindow(display), &root, &child, &gx, &gy, &x, &y, &buttons);
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+
+ return Vector2i(gx, gy);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition(const Window& relativeTo)
+{
+ WindowHandle handle = relativeTo.getSystemHandle();
+ if (handle)
+ {
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ // we don't care about these but they are required
+ ::Window root, child;
+ int gx, gy;
+ unsigned int buttons;
+
+ int x = 0;
+ int y = 0;
+ XQueryPointer(display, handle, &root, &child, &gx, &gy, &x, &y, &buttons);
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+
+ return Vector2i(x, y);
+ }
+ else
+ {
+ return Vector2i();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position)
+{
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ XWarpPointer(display, None, DefaultRootWindow(display), 0, 0, 0, 0, position.x, position.y);
+ XFlush(display);
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position, const Window& relativeTo)
+{
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+
+ WindowHandle handle = relativeTo.getSystemHandle();
+ if (handle)
+ {
+ XWarpPointer(display, None, handle, 0, 0, 0, 0, position.x, position.y);
+ XFlush(display);
+ }
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/InputImpl.hpp b/src/SFML/Window/Linux/InputImpl.hpp
new file mode 100644
index 0000000..22ba5fd
--- /dev/null
+++ b/src/SFML/Window/Linux/InputImpl.hpp
@@ -0,0 +1,123 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_INPUTIMPLX11_HPP
+#define SFML_INPUTIMPLX11_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Linux (X11) implementation of inputs (keyboard + mouse)
+///
+////////////////////////////////////////////////////////////
+class InputImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param key Key to check
+ ///
+ /// \return True if the key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a mouse button is pressed
+ ///
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isMouseButtonPressed(Mouse::Button button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current position of the mouse in desktop coordinates
+ ///
+ /// This function returns the current position of the mouse
+ /// cursor, in global (desktop) coordinates.
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it returns desktop coordinates.
+ ///
+ /// \param relativeTo Reference window
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition(const Window& relativeTo);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the current position of the mouse in desktop coordinates
+ ///
+ /// This function sets the current position of the mouse
+ /// cursor in global (desktop) coordinates.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ /// \param relativeTo Reference window
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position, const Window& relativeTo);
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_INPUTIMPLX11_HPP
diff --git a/src/SFML/Window/Linux/Joystick.cpp b/src/SFML/Window/Linux/Joystick.cpp
deleted file mode 100755
index 829a741..0000000
--- a/src/SFML/Window/Linux/Joystick.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Joystick.hpp>
-#include <sstream>
-
-
-namespace sf
-{
-namespace priv
-{
-#if defined(SFML_SYSTEM_LINUX)
-
-////////////////////////////////////////////////////////////
-/// Initialize the instance and bind it to a physical joystick
-////////////////////////////////////////////////////////////
-void Joystick::Initialize(unsigned int Index)
-{
- // Initial state
- myNbButtons = 0;
- myPovX = 0;
- myPovY = 0;
- for (int i = 0; i < Joy::ButtonCount; ++i)
- {
- myState.Buttons[i] = false;
- }
- for (int i = 0; i < Joy::AxisCount; ++i)
- {
- myState.Axis[i] = 0.f;
- myAxes[i] = false;
- }
-
- // Open the joystick handle
- std::ostringstream oss;
- oss << "/dev/input/js" << Index;
- myDescriptor = open(oss.str().c_str(), O_RDONLY);
- if (myDescriptor > 0)
- {
- // Use non-blocking mode
- fcntl(myDescriptor, F_SETFL, O_NONBLOCK);
-
- // Get number of buttons
- char NbButtons;
- ioctl(myDescriptor, JSIOCGBUTTONS, &NbButtons);
- myNbButtons = NbButtons;
- if (myNbButtons > Joy::ButtonCount)
- myNbButtons = Joy::ButtonCount;
-
- // Get the supported axes
- char NbAxes;
- ioctl(myDescriptor, JSIOCGAXES, &NbAxes);
- ioctl(myDescriptor, JSIOCGAXMAP, myAxesMapping);
- for (int i = 0; i < NbAxes; ++i)
- {
- switch (myAxesMapping[i])
- {
- case ABS_X : myAxes[Joy::AxisX] = true; break;
- case ABS_Y : myAxes[Joy::AxisY] = true; break;
- case ABS_Z : case ABS_THROTTLE : myAxes[Joy::AxisZ] = true; break;
- case ABS_RZ: case ABS_RUDDER: myAxes[Joy::AxisR] = true; break;
- case ABS_RX : myAxes[Joy::AxisU] = true; break;
- case ABS_RY : myAxes[Joy::AxisV] = true; break;
- case ABS_HAT0X : case ABS_HAT0Y : myAxes[Joy::AxisPOV] = true; break;
- default : break;
- }
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Update the current joystick and return its new state
-////////////////////////////////////////////////////////////
-JoystickState Joystick::UpdateState()
-{
- if (myDescriptor > 0)
- {
- js_event JoyState;
- while (read(myDescriptor, &JoyState, sizeof(JoyState)) > 0)
- {
- switch (JoyState.type & ~JS_EVENT_INIT)
- {
- // An axis has been moved
- case JS_EVENT_AXIS :
- {
- switch (myAxesMapping[JoyState.number])
- {
- case ABS_X : myState.Axis[Joy::AxisX] = JoyState.value * 100.f / 32767.f; break;
- case ABS_Y : myState.Axis[Joy::AxisY] = JoyState.value * 100.f / 32767.f; break;
- case ABS_Z : case ABS_THROTTLE : myState.Axis[Joy::AxisZ] = JoyState.value * 100.f / 32767.f; break;
- case ABS_RZ: case ABS_RUDDER: myState.Axis[Joy::AxisR] = JoyState.value * 100.f / 32767.f; break;
- case ABS_RX : myState.Axis[Joy::AxisU] = JoyState.value * 100.f / 32767.f; break;
- case ABS_RY : myState.Axis[Joy::AxisV] = JoyState.value * 100.f / 32767.f; break;
- case ABS_HAT0X : myPovX = JoyState.value; break;
- case ABS_HAT0Y : myPovY = JoyState.value; break;
- default : break;
- }
-
- // Compute the new POV angle
- if (myPovX > 0)
- {
- if (myPovY > 0) myState.Axis[Joy::AxisPOV] = 135.f;
- else if (myPovY < 0) myState.Axis[Joy::AxisPOV] = 45.f;
- else myState.Axis[Joy::AxisPOV] = 90.f;
- }
- else if (myPovX < 0)
- {
- if (myPovY > 0) myState.Axis[Joy::AxisPOV] = 225.f;
- else if (myPovY < 0) myState.Axis[Joy::AxisPOV] = 315.f;
- else myState.Axis[Joy::AxisPOV] = 270.f;
- }
- else
- {
- if (myPovY > 0) myState.Axis[Joy::AxisPOV] = 180.f;
- else if (myPovY < 0) myState.Axis[Joy::AxisPOV] = 0.f;
- else myState.Axis[Joy::AxisPOV] = -1.f;
- }
- break;
- }
-
- // A button has been pressed
- case JS_EVENT_BUTTON :
- {
- if (JoyState.number < GetButtonsCount())
- myState.Buttons[JoyState.number] = (JoyState.value != 0);
- break;
- }
- }
- }
- }
-
- return myState;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the joystick supports the given axis
-////////////////////////////////////////////////////////////
-bool Joystick::HasAxis(Joy::Axis Axis) const
-{
- return myAxes[Axis];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of buttons supported by the joystick
-////////////////////////////////////////////////////////////
-unsigned int Joystick::GetButtonsCount() const
-{
- return myNbButtons;
-}
-
-
-#elif defined(SFML_SYSTEM_FREEBSD)
-
-
-////////////////////////////////////////////////////////////
-/// Initialize the instance and bind it to a physical joystick
-////////////////////////////////////////////////////////////
-void Joystick::Initialize(unsigned int Index)
-{
-}
-
-
-////////////////////////////////////////////////////////////
-/// Update the current joystick and return its new state
-////////////////////////////////////////////////////////////
-JoystickState Joystick::UpdateState()
-{
- return JoystickState();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the joystick supports the given axis
-////////////////////////////////////////////////////////////
-bool Joystick::HasAxis(Joy::Axis Axis) const
-{
- return false;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of buttons supported by the joystick
-////////////////////////////////////////////////////////////
-unsigned int Joystick::GetButtonsCount() const
-{
- return 0;
-}
-
-#endif // defined(SFML_SYSTEM_FREEBSD)
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Window/Linux/JoystickImpl.cpp b/src/SFML/Window/Linux/JoystickImpl.cpp
new file mode 100644
index 0000000..4db4b91
--- /dev/null
+++ b/src/SFML/Window/Linux/JoystickImpl.cpp
@@ -0,0 +1,256 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/JoystickImpl.hpp>
+#include <SFML/System/Err.hpp>
+#include <sys/inotify.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+#include <cstdio>
+
+
+namespace
+{
+ int notifyFd = -1;
+ int inputFd = -1;
+ bool plugged[sf::Joystick::Count];
+
+ void updatePluggedList()
+ {
+ for (unsigned int i = 0; i < sf::Joystick::Count; ++i)
+ {
+ char name[32];
+ std::snprintf(name, sizeof(name), "/dev/input/js%u", i);
+ struct stat info;
+ plugged[i] = (stat(name, &info) == 0);
+ }
+ }
+
+ bool canRead(int descriptor)
+ {
+ fd_set set;
+ FD_ZERO(&set);
+ FD_SET(descriptor, &set);
+ timeval timeout = {0, 0};
+ return select(descriptor + 1, &set, NULL, NULL, &timeout) > 0 &&
+ FD_ISSET(notifyFd, &set);
+ }
+}
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void JoystickImpl::initialize()
+{
+ // Reset the array of plugged joysticks
+ std::fill(plugged, plugged + Joystick::Count, false);
+
+ // Create the inotify instance
+ notifyFd = inotify_init();
+ if (notifyFd < 0)
+ {
+ err() << "Failed to initialize inotify, joystick connections and disconnections won't be notified" << std::endl;
+ return;
+ }
+
+ // Watch nodes created and deleted in the /dev/input directory
+ inputFd = inotify_add_watch(notifyFd, "/dev/input", IN_CREATE | IN_DELETE);
+ if (inputFd < 0)
+ {
+ err() << "Failed to initialize inotify, joystick connections and disconnections won't be notified" << std::endl;
+ return;
+ }
+
+ // Do an initial scan
+ updatePluggedList();
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::cleanup()
+{
+ // Stop watching the /dev/input directory
+ if (inputFd >= 0)
+ inotify_rm_watch(notifyFd, inputFd);
+
+ // Close the inotify file descriptor
+ if (inputFd >= 0)
+ ::close(notifyFd);
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::isConnected(unsigned int index)
+{
+ // First check if new joysticks were added/removed since last update
+ if (canRead(notifyFd))
+ {
+ // Don't bother decomposing and interpreting the filename, just do a full scan
+ updatePluggedList();
+
+ // Flush all the pending events
+ while (canRead(notifyFd))
+ {
+ char buffer[128];
+ read(notifyFd, buffer, sizeof(buffer));
+ }
+ }
+
+ // Then check if the joystick is connected
+ return plugged[index];
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::open(unsigned int index)
+{
+ if (plugged[index])
+ {
+ char name[32];
+ std::snprintf(name, sizeof(name), "/dev/input/js%u", index);
+
+ // Open the joystick's file descriptor (read-only and non-blocking)
+ m_file = ::open(name, O_RDONLY | O_NONBLOCK);
+ if (m_file >= 0)
+ {
+ // Retrieve the axes mapping
+ ioctl(m_file, JSIOCGAXMAP, m_mapping);
+
+ // Reset the joystick state
+ m_state = JoystickState();
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::close()
+{
+ ::close(m_file);
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickCaps JoystickImpl::getCapabilities() const
+{
+ JoystickCaps caps;
+
+ // Get the number of buttons
+ char buttonCount;
+ ioctl(m_file, JSIOCGBUTTONS, &buttonCount);
+ caps.buttonCount = buttonCount;
+ if (caps.buttonCount > Joystick::ButtonCount)
+ caps.buttonCount = Joystick::ButtonCount;
+
+ // Get the supported axes
+ char axesCount;
+ ioctl(m_file, JSIOCGAXES, &axesCount);
+ for (int i = 0; i < axesCount; ++i)
+ {
+ switch (m_mapping[i])
+ {
+ case ABS_X : caps.axes[Joystick::X] = true; break;
+ case ABS_Y : caps.axes[Joystick::Y] = true; break;
+ case ABS_Z :
+ case ABS_THROTTLE : caps.axes[Joystick::Z] = true; break;
+ case ABS_RZ:
+ case ABS_RUDDER: caps.axes[Joystick::R] = true; break;
+ case ABS_RX : caps.axes[Joystick::U] = true; break;
+ case ABS_RY : caps.axes[Joystick::V] = true; break;
+ case ABS_HAT0X : caps.axes[Joystick::PovX] = true; break;
+ case ABS_HAT0Y : caps.axes[Joystick::PovY] = true; break;
+ default : break;
+ }
+ }
+
+ return caps;
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickState JoystickImpl::JoystickImpl::update()
+{
+ // pop events from the joystick file
+ js_event joyState;
+ while (read(m_file, &joyState, sizeof(joyState)) > 0)
+ {
+ switch (joyState.type & ~JS_EVENT_INIT)
+ {
+ // An axis was moved
+ case JS_EVENT_AXIS :
+ {
+ float value = joyState.value * 100.f / 32767.f;
+ switch (m_mapping[joyState.number])
+ {
+ case ABS_X : m_state.axes[Joystick::X] = value; break;
+ case ABS_Y : m_state.axes[Joystick::Y] = value; break;
+ case ABS_Z :
+ case ABS_THROTTLE : m_state.axes[Joystick::Z] = value; break;
+ case ABS_RZ:
+ case ABS_RUDDER: m_state.axes[Joystick::R] = value; break;
+ case ABS_RX : m_state.axes[Joystick::U] = value; break;
+ case ABS_RY : m_state.axes[Joystick::V] = value; break;
+ case ABS_HAT0X : m_state.axes[Joystick::PovX] = value; break;
+ case ABS_HAT0Y : m_state.axes[Joystick::PovY] = value; break;
+ default : break;
+ }
+ break;
+ }
+
+ // A button was pressed
+ case JS_EVENT_BUTTON :
+ {
+ if (joyState.number < Joystick::ButtonCount)
+ m_state.buttons[joyState.number] = (joyState.value != 0);
+ break;
+ }
+ }
+ }
+
+ // Check the connection state of the joystick (read() fails with an error != EGAIN if it's no longer connected)
+ m_state.connected = (errno == EAGAIN);
+
+ return m_state;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Audio/SoundFileOgg.hpp b/src/SFML/Window/Linux/JoystickImpl.hpp
index 98f4799..869f185 100755..100644
--- a/src/SFML/Audio/SoundFileOgg.hpp
+++ b/src/SFML/Window/Linux/JoystickImpl.hpp
@@ -1,114 +1,121 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_SOUNDFILEOGG_HPP
-#define SFML_SOUNDFILEOGG_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio/SoundFile.hpp>
-
-struct stb_vorbis;
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Specialization of SoundFile that handles ogg-vorbis files (.ogg)
-/// (does not support variable bitrate / channels and writing)
-////////////////////////////////////////////////////////////
-class SoundFileOgg : public SoundFile
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- SoundFileOgg();
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~SoundFileOgg();
-
- ////////////////////////////////////////////////////////////
- /// Check if a given file is supported by this loader
- ///
- /// \param Filename : Path of the file to check
- /// \param Read : Is the file opened for reading or writing ?
- ///
- /// \param return True if the loader can handle this file
- ///
- ////////////////////////////////////////////////////////////
- static bool IsFileSupported(const std::string& Filename, bool Read);
-
- ////////////////////////////////////////////////////////////
- /// Check if a given file in memory is supported by this loader
- ///
- /// \param Data : Pointer to the file data in memory
- /// \param SizeInBytes : Size of the data to load, in bytes
- ///
- /// \param return True if the loader can handle this file
- ///
- ////////////////////////////////////////////////////////////
- static bool IsFileSupported(const char* Data, std::size_t SizeInBytes);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::Read
- ///
- ////////////////////////////////////////////////////////////
- virtual std::size_t Read(Int16* Data, std::size_t NbSamples);
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::OpenRead
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OpenRead(const std::string& Filename, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
-
- ////////////////////////////////////////////////////////////
- /// /see sf::SoundFile::OpenRead
- ///
- ////////////////////////////////////////////////////////////
- virtual bool OpenRead(const char* Data, std::size_t SizeInBytes, std::size_t& NbSamples, unsigned int& ChannelsCount, unsigned int& SampleRate);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- stb_vorbis* myStream; ///< Vorbis stream
- unsigned int myChannelsCount; ///< Number of channels (1 = mono, 2 = stereo)
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_SOUNDFILEOGG_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_JOYSTICKIMPLLINUX_HPP
+#define SFML_JOYSTICKIMPLLINUX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#if defined(SFML_SYSTEM_LINUX)
+ #include <linux/joystick.h>
+ #include <fcntl.h>
+#elif defined(SFML_SYSTEM_FREEBSD)
+ // #include <sys/joystick.h> ?
+ #define ABS_MAX 1
+#endif
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Linux implementation of joysticks
+///
+////////////////////////////////////////////////////////////
+class JoystickImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global initialization of the joystick module
+ ///
+ ////////////////////////////////////////////////////////////
+ static void initialize();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global cleanup of the joystick module
+ ///
+ ////////////////////////////////////////////////////////////
+ static void cleanup();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a joystick is currently connected
+ ///
+ /// \param index Index of the joystick to check
+ ///
+ /// \return True if the joystick is connected, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isConnected(unsigned int index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Open the joystick
+ ///
+ /// \param index Index assigned to the joystick
+ ///
+ /// \return True on success, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ bool open(unsigned int index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Close the joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ void close();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the joystick capabilities
+ ///
+ /// \return Joystick capabilities
+ ///
+ ////////////////////////////////////////////////////////////
+ JoystickCaps getCapabilities() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the joystick and get its new state
+ ///
+ /// \return Joystick state
+ ///
+ ////////////////////////////////////////////////////////////
+ JoystickState update();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ int m_file; ///< File descriptor of the joystick
+ char m_mapping[ABS_MAX + 1]; ///< Axes mapping (index to axis id)
+ JoystickState m_state; ///< Current state of the joystick
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_JOYSTICKIMPLLINUX_HPP
diff --git a/src/SFML/Window/Linux/VideoModeImpl.cpp b/src/SFML/Window/Linux/VideoModeImpl.cpp
new file mode 100644
index 0000000..c669a13
--- /dev/null
+++ b/src/SFML/Window/Linux/VideoModeImpl.cpp
@@ -0,0 +1,176 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/VideoModeImpl.hpp>
+#include <SFML/Window/Linux/Display.hpp>
+#include <SFML/System/Err.hpp>
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrandr.h>
+#include <algorithm>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+std::vector<VideoMode> VideoModeImpl::getFullscreenModes()
+{
+ std::vector<VideoMode> modes;
+
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+ if (display)
+ {
+ // Retrieve the default screen number
+ int screen = DefaultScreen(display);
+
+ // Check if the XRandR extension is present
+ int version;
+ if (XQueryExtension(display, "RANDR", &version, &version, &version))
+ {
+ // Get the current configuration
+ XRRScreenConfiguration* config = XRRGetScreenInfo(display, RootWindow(display, screen));
+ if (config)
+ {
+ // Get the available screen sizes
+ int nbSizes;
+ XRRScreenSize* sizes = XRRConfigSizes(config, &nbSizes);
+ if (sizes && (nbSizes > 0))
+ {
+ // Get the list of supported depths
+ int nbDepths = 0;
+ int* depths = XListDepths(display, screen, &nbDepths);
+ if (depths && (nbDepths > 0))
+ {
+ // Combine depths and sizes to fill the array of supported modes
+ for (int i = 0; i < nbDepths; ++i)
+ {
+ for (int j = 0; j < nbSizes; ++j)
+ {
+ // Convert to VideoMode
+ VideoMode mode(sizes[j].width, sizes[j].height, depths[i]);
+
+ // Add it only if it is not already in the array
+ if (std::find(modes.begin(), modes.end(), mode) == modes.end())
+ modes.push_back(mode);
+ }
+ }
+
+ // Free the array of depths
+ XFree(depths);
+ }
+ }
+
+ // Free the configuration instance
+ XRRFreeScreenConfigInfo(config);
+ }
+ else
+ {
+ // Failed to get the screen configuration
+ err() << "Failed to retrieve the screen configuration while trying to get the supported video modes" << std::endl;
+ }
+ }
+ else
+ {
+ // XRandr extension is not supported : we cannot get the video modes
+ err() << "Failed to use the XRandR extension while trying to get the supported video modes" << std::endl;
+ }
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+ }
+ else
+ {
+ // We couldn't connect to the X server
+ err() << "Failed to connect to the X server while trying to get the supported video modes" << std::endl;
+ }
+
+ return modes;
+}
+
+
+////////////////////////////////////////////////////////////
+VideoMode VideoModeImpl::getDesktopMode()
+{
+ VideoMode desktopMode;
+
+ // Open a connection with the X server
+ Display* display = OpenDisplay();
+ if (display)
+ {
+ // Retrieve the default screen number
+ int screen = DefaultScreen(display);
+
+ // Check if the XRandR extension is present
+ int version;
+ if (XQueryExtension(display, "RANDR", &version, &version, &version))
+ {
+ // Get the current configuration
+ XRRScreenConfiguration* config = XRRGetScreenInfo(display, RootWindow(display, screen));
+ if (config)
+ {
+ // Get the current video mode
+ Rotation currentRotation;
+ int currentMode = XRRConfigCurrentConfiguration(config, &currentRotation);
+
+ // Get the available screen sizes
+ int nbSizes;
+ XRRScreenSize* sizes = XRRConfigSizes(config, &nbSizes);
+ if (sizes && (nbSizes > 0))
+ desktopMode = VideoMode(sizes[currentMode].width, sizes[currentMode].height, DefaultDepth(display, screen));
+
+ // Free the configuration instance
+ XRRFreeScreenConfigInfo(config);
+ }
+ else
+ {
+ // Failed to get the screen configuration
+ err() << "Failed to retrieve the screen configuration while trying to get the desktop video modes" << std::endl;
+ }
+ }
+ else
+ {
+ // XRandr extension is not supported : we cannot get the video modes
+ err() << "Failed to use the XRandR extension while trying to get the desktop video modes" << std::endl;
+ }
+
+ // Close the connection with the X server
+ CloseDisplay(display);
+ }
+ else
+ {
+ // We couldn't connect to the X server
+ err() << "Failed to connect to the X server while trying to get the desktop video modes" << std::endl;
+ }
+
+ return desktopMode;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/VideoModeSupport.cpp b/src/SFML/Window/Linux/VideoModeSupport.cpp
deleted file mode 100755
index add99b2..0000000
--- a/src/SFML/Window/Linux/VideoModeSupport.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Linux/VideoModeSupport.hpp>
-#include <SFML/Window/Linux/WindowImplX11.hpp>
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
-#include <algorithm>
-#include <iostream>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Get supported video modes
-////////////////////////////////////////////////////////////
-void VideoModeSupport::GetSupportedVideoModes(std::vector<VideoMode>& Modes)
-{
- // First, clear array to fill
- Modes.clear();
-
- // Get the display and screen from WindowImplUnix
- WindowImplX11::OpenDisplay(false);
- Display* Disp = WindowImplX11::ourDisplay;
- int Screen = WindowImplX11::ourScreen;
-
- // Check if the XRandR extension is present
- int Version;
- if (XQueryExtension(Disp, "RANDR", &Version, &Version, &Version))
- {
- // Get the current configuration
- XRRScreenConfiguration* Config = XRRGetScreenInfo(Disp, RootWindow(Disp, Screen));
- if (Config)
- {
- // Get the available screen sizes
- int NbSizes;
- XRRScreenSize* Sizes = XRRConfigSizes(Config, &NbSizes);
- if (Sizes && (NbSizes > 0))
- {
- // Get the list of supported depths
- int NbDepths = 0;
- int* Depths = XListDepths(Disp, Screen, &NbDepths);
- if (Depths && (NbDepths > 0))
- {
- // Combine depths and sizes to fill the array of supported modes
- for (int i = 0; i < NbDepths; ++i)
- {
- for (int j = 0; j < NbSizes; ++j)
- {
- // Convert to VideoMode
- VideoMode Mode(Sizes[j].width, Sizes[j].height, Depths[i]);
-
- // Add it only if it is not already in the array
- if (std::find(Modes.begin(), Modes.end(), Mode) == Modes.end())
- Modes.push_back(Mode);
- }
- }
- }
- }
-
- // Free the configuration instance
- XRRFreeScreenConfigInfo(Config);
- }
- else
- {
- // Failed to get the screen configuration
- std::cerr << "Failed to get the list of available video modes" << std::endl;
- }
- }
- else
- {
- // XRandr extension is not supported : we cannot get the video modes
- std::cerr << "Failed to get the list of available video modes" << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get current desktop video mode
-////////////////////////////////////////////////////////////
-VideoMode VideoModeSupport::GetDesktopVideoMode()
-{
- VideoMode DesktopMode;
-
- // Get the display and screen from WindowImplUnix
- WindowImplX11::OpenDisplay(false);
- Display* Disp = WindowImplX11::ourDisplay;
- int Screen = WindowImplX11::ourScreen;
-
- // Check if the XRandR extension is present
- int Version;
- if (XQueryExtension(Disp, "RANDR", &Version, &Version, &Version))
- {
- // Get the current configuration
- XRRScreenConfiguration* Config = XRRGetScreenInfo(Disp, RootWindow(Disp, Screen));
- if (Config)
- {
- // Get the current video mode
- Rotation CurrentRotation;
- int CurrentMode = XRRConfigCurrentConfiguration(Config, &CurrentRotation);
-
- // Get the available screen sizes
- int NbSizes;
- XRRScreenSize* Sizes = XRRConfigSizes(Config, &NbSizes);
- if (Sizes && (NbSizes > 0))
- DesktopMode = VideoMode(Sizes[CurrentMode].width, Sizes[CurrentMode].height, DefaultDepth(Disp, Screen));
-
- // Free the configuration instance
- XRRFreeScreenConfigInfo(Config);
- }
- }
-
- return DesktopMode;
-}
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Window/Linux/VideoModeSupport.hpp b/src/SFML/Window/Linux/VideoModeSupport.hpp
deleted file mode 100755
index 9160ff5..0000000
--- a/src/SFML/Window/Linux/VideoModeSupport.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_VIDEOMODESUPPORTLINUX_HPP
-#define SFML_VIDEOMODESUPPORTLINUX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/VideoMode.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Linux implementation of VideoModeSupport
-/// Give access to video mode related OS-specific functions
-////////////////////////////////////////////////////////////
-class VideoModeSupport
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get supported video modes
- ///
- /// \param Modes : Array to fill with available video modes
- ///
- ////////////////////////////////////////////////////////////
- static void GetSupportedVideoModes(std::vector<VideoMode>& Modes);
-
- ////////////////////////////////////////////////////////////
- /// Get current desktop video mode
- ///
- /// \return Current desktop video mode
- ///
- ////////////////////////////////////////////////////////////
- static VideoMode GetDesktopVideoMode();
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_VIDEOMODESUPPORTLINUX_HPP
diff --git a/src/SFML/Window/Linux/WindowImplX11.cpp b/src/SFML/Window/Linux/WindowImplX11.cpp
index edec19b..1b71210 100755..100644
--- a/src/SFML/Window/Linux/WindowImplX11.cpp
+++ b/src/SFML/Window/Linux/WindowImplX11.cpp
@@ -1,1249 +1,1002 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/WindowStyle.hpp> // important to be included first (conflict with None)
-#include <SFML/Window/Linux/WindowImplX11.hpp>
-#include <SFML/Window/glext/glxext.h>
-#include <SFML/Window/glext/glext.h>
-#include <SFML/System/Unicode.hpp>
-#include <X11/keysym.h>
-#include <X11/extensions/Xrandr.h>
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-
-namespace
-{
- ////////////////////////////////////////////////////////////
- /// Filter the events received by windows
- /// (only allow those matching a specific window)
- ////////////////////////////////////////////////////////////
- Bool CheckEvent(::Display*, XEvent* Event, XPointer UserData)
- {
- // Just check if the event matches the window
- return Event->xany.window == reinterpret_cast< ::Window >(UserData);
- }
-}
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-Display* WindowImplX11::ourDisplay = NULL;
-int WindowImplX11::ourScreen = 0;
-WindowImplX11* WindowImplX11::ourFullscreenWindow = NULL;
-unsigned int WindowImplX11::ourWindowsCount = 0;
-XIM WindowImplX11::ourInputMethod = NULL;
-unsigned long WindowImplX11::ourEventMask = FocusChangeMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask |
- PointerMotionMask | KeyPressMask | KeyReleaseMask | StructureNotifyMask |
- EnterWindowMask | LeaveWindowMask;
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-/// (creates a dummy window to provide a valid OpenGL context)
-////////////////////////////////////////////////////////////
-WindowImplX11::WindowImplX11() :
-myWindow (0),
-myIsExternal (false),
-myGLContext (NULL),
-myAtomClose (0),
-myOldVideoMode(-1),
-myHiddenCursor(0),
-myInputContext(NULL),
-myKeyRepeat (true)
-{
- // Open the display at first call
- if (!OpenDisplay())
- return;
-
- // Use small dimensions
- myWidth = 1;
- myHeight = 1;
-
- // Create the rendering context
- XVisualInfo Visual;
- WindowSettings Params(0, 0, 0);
- if (!CreateContext(VideoMode(myWidth, myHeight, 32), Visual, Params))
- return;
-
- // Create a new color map with the chosen visual
- Colormap ColMap = XCreateColormap(ourDisplay, RootWindow(ourDisplay, ourScreen), Visual.visual, AllocNone);
-
- // Define the window attributes
- XSetWindowAttributes Attributes;
- Attributes.colormap = ColMap;
-
- // Create a dummy window (disabled and hidden)
- myWindow = XCreateWindow(ourDisplay,
- RootWindow(ourDisplay, ourScreen),
- 0, 0,
- myWidth, myHeight,
- 0,
- Visual.depth,
- InputOutput,
- Visual.visual,
- CWColormap, &Attributes);
-
- // Don't activate the dummy context by default
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation from an existing control
-////////////////////////////////////////////////////////////
-WindowImplX11::WindowImplX11(WindowHandle Handle, WindowSettings& Params) :
-myWindow (0),
-myIsExternal (true),
-myGLContext (NULL),
-myAtomClose (0),
-myOldVideoMode(-1),
-myHiddenCursor(0),
-myInputContext(NULL),
-myKeyRepeat (true)
-{
- // Open the display at first call
- if (!OpenDisplay())
- return;
-
- // Save the window handle
- myWindow = Handle;
-
- if (myWindow)
- {
- // Get the window size
- XWindowAttributes WindowAttributes;
- if (XGetWindowAttributes(ourDisplay, myWindow, &WindowAttributes) == 0)
- {
- std::cerr << "Failed to get the window attributes" << std::endl;
- return;
- }
- myWidth = WindowAttributes.width;
- myHeight = WindowAttributes.height;
-
- // Setup the visual infos to match
- XVisualInfo Template;
- Template.depth = WindowAttributes.depth;
- Template.visualid = XVisualIDFromVisual(WindowAttributes.visual);
- unsigned long Mask = VisualDepthMask | VisualIDMask;
-
- // Create the rendering context
- VideoMode Mode(myWidth, myHeight, VideoMode::GetDesktopMode().BitsPerPixel);
- XVisualInfo Visual;
- if (!CreateContext(Mode, Visual, Params, Template, Mask))
- return;
-
- // Create a new color map with the chosen visual
- Colormap ColMap = XCreateColormap(ourDisplay, RootWindow(ourDisplay, ourScreen), Visual.visual, AllocNone);
- XSetWindowColormap(ourDisplay, myWindow, ColMap);
-
- // Make sure the window is listening to all the requiered events
- XSelectInput(ourDisplay, myWindow, ourEventMask & ~ButtonPressMask);
-
- // Do some common initializations
- Initialize();
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation
-////////////////////////////////////////////////////////////
-WindowImplX11::WindowImplX11(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params) :
-myWindow (0),
-myIsExternal (false),
-myGLContext (NULL),
-myAtomClose (0),
-myOldVideoMode(-1),
-myHiddenCursor(0),
-myInputContext(NULL),
-myKeyRepeat (true)
-{
- // Open the display at first call
- if (!OpenDisplay())
- return;
-
- // Compute position and size
- int Left, Top;
- bool Fullscreen = (WindowStyle & Style::Fullscreen) != 0;
- if (!Fullscreen)
- {
- Left = (DisplayWidth(ourDisplay, ourScreen) - Mode.Width) / 2;
- Top = (DisplayHeight(ourDisplay, ourScreen) - Mode.Height) / 2;
- }
- else
- {
- Left = 0;
- Top = 0;
- }
- int Width = myWidth = Mode.Width;
- int Height = myHeight = Mode.Height;
-
- // Switch to fullscreen if necessary
- if (Fullscreen)
- SwitchToFullscreen(Mode);
-
- // Create the rendering context
- XVisualInfo Visual;
- if (!CreateContext(Mode, Visual, Params))
- return;
-
- // Create a new color map with the chosen visual
- Colormap ColMap = XCreateColormap(ourDisplay, RootWindow(ourDisplay, ourScreen), Visual.visual, AllocNone);
-
- // Define the window attributes
- XSetWindowAttributes Attributes;
- Attributes.event_mask = ourEventMask;
- Attributes.colormap = ColMap;
- Attributes.override_redirect = Fullscreen;
-
- // Create the window
- myWindow = XCreateWindow(ourDisplay,
- RootWindow(ourDisplay, ourScreen),
- Left, Top,
- Width, Height,
- 0,
- Visual.depth,
- InputOutput,
- Visual.visual,
- CWEventMask | CWColormap | CWOverrideRedirect, &Attributes);
- if (!myWindow)
- {
- std::cerr << "Failed to create window" << std::endl;
- return;
- }
-
- // Set the window's name
- XStoreName(ourDisplay, myWindow, Title.c_str());
-
- // Set the window's style (tell the windows manager to change our window's decorations and functions according to the requested style)
- if (!Fullscreen)
- {
- Atom WMHintsAtom = XInternAtom(ourDisplay, "_MOTIF_WM_HINTS", false);
- if (WMHintsAtom)
- {
- static const unsigned long MWM_HINTS_FUNCTIONS = 1 << 0;
- static const unsigned long MWM_HINTS_DECORATIONS = 1 << 1;
-
- //static const unsigned long MWM_DECOR_ALL = 1 << 0;
- static const unsigned long MWM_DECOR_BORDER = 1 << 1;
- static const unsigned long MWM_DECOR_RESIZEH = 1 << 2;
- static const unsigned long MWM_DECOR_TITLE = 1 << 3;
- static const unsigned long MWM_DECOR_MENU = 1 << 4;
- static const unsigned long MWM_DECOR_MINIMIZE = 1 << 5;
- static const unsigned long MWM_DECOR_MAXIMIZE = 1 << 6;
-
- //static const unsigned long MWM_FUNC_ALL = 1 << 0;
- static const unsigned long MWM_FUNC_RESIZE = 1 << 1;
- static const unsigned long MWM_FUNC_MOVE = 1 << 2;
- static const unsigned long MWM_FUNC_MINIMIZE = 1 << 3;
- static const unsigned long MWM_FUNC_MAXIMIZE = 1 << 4;
- static const unsigned long MWM_FUNC_CLOSE = 1 << 5;
-
- struct WMHints
- {
- unsigned long Flags;
- unsigned long Functions;
- unsigned long Decorations;
- long InputMode;
- unsigned long State;
- };
-
- WMHints Hints;
- Hints.Flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
- Hints.Decorations = 0;
- Hints.Functions = 0;
-
- if (WindowStyle & Style::Titlebar)
- {
- Hints.Decorations |= MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MINIMIZE | MWM_DECOR_MENU;
- Hints.Functions |= MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE;
- }
- if (WindowStyle & Style::Resize)
- {
- Hints.Decorations |= MWM_DECOR_MAXIMIZE | MWM_DECOR_RESIZEH;
- Hints.Functions |= MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
- }
- if (WindowStyle & Style::Close)
- {
- Hints.Decorations |= 0;
- Hints.Functions |= MWM_FUNC_CLOSE;
- }
-
- const unsigned char* HintsPtr = reinterpret_cast<const unsigned char*>(&Hints);
- XChangeProperty(ourDisplay, myWindow, WMHintsAtom, WMHintsAtom, 32, PropModeReplace, HintsPtr, 5);
- }
-
- // This is a hack to force some windows managers to disable resizing
- if (!(WindowStyle & Style::Resize))
- {
- XSizeHints XSizeHints;
- XSizeHints.flags = PMinSize | PMaxSize;
- XSizeHints.min_width = XSizeHints.max_width = Width;
- XSizeHints.min_height = XSizeHints.max_height = Height;
- XSetWMNormalHints(ourDisplay, myWindow, &XSizeHints);
- }
- }
-
- // Do some common initializations
- Initialize();
-
- // In fullscreen mode, we must grab keyboard and mouse inputs
- if (Fullscreen)
- {
- XGrabPointer(ourDisplay, myWindow, true, 0, GrabModeAsync, GrabModeAsync, myWindow, None, CurrentTime);
- XGrabKeyboard(ourDisplay, myWindow, true, GrabModeAsync, GrabModeAsync, CurrentTime);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-WindowImplX11::~WindowImplX11()
-{
- // Cleanup graphical resources
- CleanUp();
-
- // Destroy the input context
- if (myInputContext)
- {
- XDestroyIC(myInputContext);
- }
-
- // Destroy the window
- if (myWindow && !myIsExternal)
- {
- XDestroyWindow(ourDisplay, myWindow);
- XFlush(ourDisplay);
- }
-
- // Close the display
- CloseDisplay();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if there's an active context on the current thread
-////////////////////////////////////////////////////////////
-bool WindowImplX11::IsContextActive()
-{
- return glXGetCurrentContext() != NULL;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::Display
-////////////////////////////////////////////////////////////
-void WindowImplX11::Display()
-{
- if (myWindow && myGLContext)
- glXSwapBuffers(ourDisplay, myWindow);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::ProcessEvents
-////////////////////////////////////////////////////////////
-void WindowImplX11::ProcessEvents()
-{
- // This function implements a workaround to properly discard
- // repeated key events when necessary. The problem is that the
- // system's key events policy doesn't match SFML's one: X server will generate
- // both repeated KeyPress and KeyRelease events when maintaining a key down, while
- // SFML only wants repeated KeyPress events. Thus, we have to:
- // - Discard duplicated KeyRelease events when EnableKeyRepeat is true
- // - Discard both duplicated KeyPress and KeyRelease events when EnableKeyRepeat is false
-
-
- // Process any event in the queue matching our window
- XEvent Event;
- while (XCheckIfEvent(ourDisplay, &Event, &CheckEvent, reinterpret_cast<XPointer>(myWindow)))
- {
- // Detect repeated key events
- if ((Event.type == KeyPress) || (Event.type == KeyRelease))
- {
- if (Event.xkey.keycode < 256)
- {
- // To detect if it is a repeated key event, we check the current state of the key.
- // - If the state is "down", KeyReleased events must obviously be discarded.
- // - KeyPress events are a little bit harder to handle: they depend on the EnableKeyRepeat state,
- // and we need to properly forward the first one.
- char Keys[32];
- XQueryKeymap(ourDisplay, Keys);
- if (Keys[Event.xkey.keycode >> 3] & (1 << (Event.xkey.keycode % 8)))
- {
- // KeyRelease event + key down = repeated event --> discard
- if (Event.type == KeyRelease)
- {
- myLastKeyReleaseEvent = Event;
- continue;
- }
-
- // KeyPress event + key repeat disabled + matching KeyRelease event = repeated event --> discard
- if ((Event.type == KeyPress) && !myKeyRepeat &&
- (myLastKeyReleaseEvent.xkey.keycode == Event.xkey.keycode) &&
- (myLastKeyReleaseEvent.xkey.time == Event.xkey.time))
- {
- continue;
- }
- }
- }
- }
-
- // Process the event
- ProcessEvent(Event);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetActive
-////////////////////////////////////////////////////////////
-void WindowImplX11::SetActive(bool Active) const
-{
- if (Active)
- {
- if (myWindow && myGLContext && (glXGetCurrentContext() != myGLContext))
- glXMakeCurrent(ourDisplay, myWindow, myGLContext);
- }
- else
- {
- if (glXGetCurrentContext() == myGLContext)
- glXMakeCurrent(ourDisplay, None, NULL);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::UseVerticalSync
-////////////////////////////////////////////////////////////
-void WindowImplX11::UseVerticalSync(bool Enabled)
-{
- const GLubyte* ProcAddress = reinterpret_cast<const GLubyte*>("glXSwapIntervalSGI");
- PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = reinterpret_cast<PFNGLXSWAPINTERVALSGIPROC>(glXGetProcAddress(ProcAddress));
- if (glXSwapIntervalSGI)
- glXSwapIntervalSGI(Enabled ? 1 : 0);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::ShowMouseCursor
-////////////////////////////////////////////////////////////
-void WindowImplX11::ShowMouseCursor(bool Show)
-{
- XDefineCursor(ourDisplay, myWindow, Show ? None : myHiddenCursor);
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::SetCursorPosition
-////////////////////////////////////////////////////////////
-void WindowImplX11::SetCursorPosition(unsigned int Left, unsigned int Top)
-{
- XWarpPointer(ourDisplay, None, myWindow, 0, 0, 0, 0, Left, Top);
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::SetPosition
-////////////////////////////////////////////////////////////
-void WindowImplX11::SetPosition(int Left, int Top)
-{
- XMoveWindow(ourDisplay, myWindow, Left, Top);
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetSize
-////////////////////////////////////////////////////////////
-void WindowImplX11::SetSize(unsigned int Width, unsigned int Height)
-{
- XResizeWindow(ourDisplay, myWindow, Width, Height);
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::Show
-////////////////////////////////////////////////////////////
-void WindowImplX11::Show(bool State)
-{
- if (State)
- XMapWindow(ourDisplay, myWindow);
- else
- XUnmapWindow(ourDisplay, myWindow);
-
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see sfWindowImpl::EnableKeyRepeat
-////////////////////////////////////////////////////////////
-void WindowImplX11::EnableKeyRepeat(bool Enabled)
-{
- myKeyRepeat = Enabled;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetIcon
-////////////////////////////////////////////////////////////
-void WindowImplX11::SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels)
-{
- // X11 wants BGRA pixels : swap red and blue channels
- // Note : this memory will never be freed, but it seems to cause a bug on exit if I do so
- Uint8* IconPixels = new Uint8[Width * Height * 4];
- for (std::size_t i = 0; i < Width * Height; ++i)
- {
- IconPixels[i * 4 + 0] = Pixels[i * 4 + 2];
- IconPixels[i * 4 + 1] = Pixels[i * 4 + 1];
- IconPixels[i * 4 + 2] = Pixels[i * 4 + 0];
- IconPixels[i * 4 + 3] = Pixels[i * 4 + 3];
- }
-
- // Create the icon pixmap
- Visual* DefVisual = DefaultVisual(ourDisplay, ourScreen);
- unsigned int DefDepth = DefaultDepth(ourDisplay, ourScreen);
- XImage* IconImage = XCreateImage(ourDisplay, DefVisual, DefDepth, ZPixmap, 0, (char*)IconPixels, Width, Height, 32, 0);
- if (!IconImage)
- {
- std::cerr << "Failed to set the window's icon" << std::endl;
- return;
- }
- Pixmap IconPixmap = XCreatePixmap(ourDisplay, RootWindow(ourDisplay, ourScreen), Width, Height, DefDepth);
- XGCValues Values;
- GC IconGC = XCreateGC(ourDisplay, IconPixmap, 0, &Values);
- XPutImage(ourDisplay, IconPixmap, IconGC, IconImage, 0, 0, 0, 0, Width, Height);
- XFreeGC(ourDisplay, IconGC);
- XDestroyImage(IconImage);
-
- // Create the mask pixmap (must have 1 bit depth)
- std::size_t Pitch = (Width + 7) / 8;
- static std::vector<Uint8> MaskPixels(Pitch * Height, 0);
- for (std::size_t j = 0; j < Height; ++j)
- {
- for (std::size_t i = 0; i < Pitch; ++i)
- {
- for (std::size_t k = 0; k < 8; ++k)
- {
- if (i * 8 + k < Width)
- {
- Uint8 Opacity = (Pixels[(i * 8 + k + j * Width) * 4 + 3] > 0) ? 1 : 0;
- MaskPixels[i + j * Pitch] |= (Opacity << k);
- }
- }
- }
- }
- Pixmap MaskPixmap = XCreatePixmapFromBitmapData(ourDisplay, myWindow, (char*)&MaskPixels[0], Width, Height, 1, 0, 1);
-
- // Send our new icon to the window through the WMHints
- XWMHints* Hints = XAllocWMHints();
- Hints->flags = IconPixmapHint | IconMaskHint;
- Hints->icon_pixmap = IconPixmap;
- Hints->icon_mask = MaskPixmap;
- XSetWMHints(ourDisplay, myWindow, Hints);
- XFree(Hints);
-
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Switch to fullscreen mode
-////////////////////////////////////////////////////////////
-void WindowImplX11::SwitchToFullscreen(const VideoMode& Mode)
-{
- // Check if the XRandR extension is present
- int Version;
- if (XQueryExtension(ourDisplay, "RANDR", &Version, &Version, &Version))
- {
- // Get the current configuration
- XRRScreenConfiguration* Config = XRRGetScreenInfo(ourDisplay, RootWindow(ourDisplay, ourScreen));
- if (Config)
- {
- // Get the current rotation
- Rotation CurrentRotation;
- myOldVideoMode = XRRConfigCurrentConfiguration(Config, &CurrentRotation);
-
- // Get the available screen sizes
- int NbSizes;
- XRRScreenSize* Sizes = XRRConfigSizes(Config, &NbSizes);
- if (Sizes && (NbSizes > 0))
- {
- // Search a matching size
- for (int i = 0; i < NbSizes; ++i)
- {
- if ((Sizes[i].width == static_cast<int>(Mode.Width)) && (Sizes[i].height == static_cast<int>(Mode.Height)))
- {
- // Switch to fullscreen mode
- XRRSetScreenConfig(ourDisplay, Config, RootWindow(ourDisplay, ourScreen), i, CurrentRotation, CurrentTime);
-
- // Set "this" as the current fullscreen window
- ourFullscreenWindow = this;
- break;
- }
- }
- }
-
- // Free the configuration instance
- XRRFreeScreenConfigInfo(Config);
- }
- else
- {
- // Failed to get the screen configuration
- std::cerr << "Failed to get the current screen configuration for fullscreen mode, switching to windiw mode" << std::endl;
- }
- }
- else
- {
- // XRandr extension is not supported : we cannot use fullscreen mode
- std::cerr << "Fullscreen is not supported, switching to window mode" << std::endl;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the OpenGL rendering context
-////////////////////////////////////////////////////////////
-bool WindowImplX11::CreateContext(const VideoMode& Mode, XVisualInfo& ChosenVisual, WindowSettings& Params, XVisualInfo Template, unsigned long Mask)
-{
- // Get all the visuals matching the template
- Template.screen = ourScreen;
- int NbVisuals = 0;
- XVisualInfo* Visuals = XGetVisualInfo(ourDisplay, Mask | VisualScreenMask, &Template, &NbVisuals);
- if (!Visuals || (NbVisuals == 0))
- {
- if (Visuals)
- XFree(Visuals);
- std::cerr << "There is no valid visual for the selected screen" << std::endl;
- return false;
- }
-
- // Find the best visual
- int BestScore = 0xFFFF;
- XVisualInfo* BestVisual = NULL;
- while (!BestVisual)
- {
- for (int i = 0; i < NbVisuals; ++i)
- {
- // Get the current visual attributes
- int RGBA, DoubleBuffer, Red, Green, Blue, Alpha, Depth, Stencil, MultiSampling, Samples;
- glXGetConfig(ourDisplay, &Visuals[i], GLX_RGBA, &RGBA);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_DOUBLEBUFFER, &DoubleBuffer);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_RED_SIZE, &Red);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_GREEN_SIZE, &Green);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_BLUE_SIZE, &Blue);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_ALPHA_SIZE, &Alpha);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_DEPTH_SIZE, &Depth);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_STENCIL_SIZE, &Stencil);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_SAMPLE_BUFFERS_ARB, &MultiSampling);
- glXGetConfig(ourDisplay, &Visuals[i], GLX_SAMPLES_ARB, &Samples);
-
- // First check the mandatory parameters
- if ((RGBA == 0) || (DoubleBuffer == 0))
- continue;
-
- // Evaluate the current configuration
- int Color = Red + Green + Blue + Alpha;
- int Score = EvaluateConfig(Mode, Params, Color, Depth, Stencil, MultiSampling ? Samples : 0);
-
- // Keep it if it's better than the current best
- if (Score < BestScore)
- {
- BestScore = Score;
- BestVisual = &Visuals[i];
- }
- }
-
- // If no visual has been found, try a lower level of antialiasing
- if (!BestVisual)
- {
- if (Params.AntialiasingLevel > 2)
- {
- std::cerr << "Failed to find a pixel format supporting "
- << Params.AntialiasingLevel << " antialiasing levels ; trying with 2 levels" << std::endl;
- Params.AntialiasingLevel = 2;
- }
- else if (Params.AntialiasingLevel > 0)
- {
- std::cerr << "Failed to find a pixel format supporting antialiasing ; antialiasing will be disabled" << std::endl;
- Params.AntialiasingLevel = 0;
- }
- else
- {
- std::cerr << "Failed to find a suitable pixel format for the window -- cannot create OpenGL context" << std::endl;
- return false;
- }
- }
- }
-
- // Create the OpenGL context
- myGLContext = glXCreateContext(ourDisplay, BestVisual, glXGetCurrentContext(), true);
- if (myGLContext == NULL)
- {
- std::cerr << "Failed to create an OpenGL context for this window" << std::endl;
- return false;
- }
-
- // Update the creation settings from the chosen format
- int Depth, Stencil;
- glXGetConfig(ourDisplay, BestVisual, GLX_DEPTH_SIZE, &Depth);
- glXGetConfig(ourDisplay, BestVisual, GLX_STENCIL_SIZE, &Stencil);
- Params.DepthBits = static_cast<unsigned int>(Depth);
- Params.StencilBits = static_cast<unsigned int>(Stencil);
-
- // Assign the chosen visual, and free the temporary visuals array
- ChosenVisual = *BestVisual;
- XFree(Visuals);
-
- // Activate the context
- SetActive(true);
-
- // Enable multisampling if needed
- if (Params.AntialiasingLevel > 0)
- glEnable(GL_MULTISAMPLE_ARB);
-
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Do some common initializations after the window has been created
-////////////////////////////////////////////////////////////
-void WindowImplX11::Initialize()
-{
- // Make sure the "last key release" is initialized with invalid values
- myLastKeyReleaseEvent.type = -1;
-
- // Get the atom defining the close event
- myAtomClose = XInternAtom(ourDisplay, "WM_DELETE_WINDOW", false);
- XSetWMProtocols(ourDisplay, myWindow, &myAtomClose, 1);
-
- // Create the input context
- if (ourInputMethod)
- {
- myInputContext = XCreateIC(ourInputMethod,
- XNClientWindow, myWindow,
- XNFocusWindow, myWindow,
- XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
- NULL);
-
- if (!myInputContext)
- std::cerr << "Failed to create input context for window -- TextEntered event won't be able to return unicode" << std::endl;
- }
-
- // Show the window
- XMapWindow(ourDisplay, myWindow);
- XFlush(ourDisplay);
-
- // Create the hiden cursor
- CreateHiddenCursor();
-
- // Set our context as the current OpenGL context for rendering
- SetActive();
-
- // Flush the commands queue
- XFlush(ourDisplay);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create a transparent mouse cursor
-////////////////////////////////////////////////////////////
-void WindowImplX11::CreateHiddenCursor()
-{
- // Create the cursor's pixmap (1x1 pixels)
- Pixmap CursorPixmap = XCreatePixmap(ourDisplay, myWindow, 1, 1, 1);
- GC GraphicsContext = XCreateGC(ourDisplay, CursorPixmap, 0, NULL);
- XDrawPoint(ourDisplay, CursorPixmap, GraphicsContext, 0, 0);
- XFreeGC(ourDisplay, GraphicsContext);
-
- // Create the cursor, using the pixmap as both the shape and the mask of the cursor
- XColor Color;
- Color.flags = DoRed | DoGreen | DoBlue;
- Color.red = Color.blue = Color.green = 0;
- myHiddenCursor = XCreatePixmapCursor(ourDisplay, CursorPixmap, CursorPixmap, &Color, &Color, 0, 0);
-
- // We don't need the pixmap any longer, free it
- XFreePixmap(ourDisplay, CursorPixmap);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Cleanup graphical resources attached to the window
-////////////////////////////////////////////////////////////
-void WindowImplX11::CleanUp()
-{
- // Restore the previous video mode (in case we were running in fullscreen)
- if (ourFullscreenWindow == this)
- {
- // Get current screen info
- XRRScreenConfiguration* Config = XRRGetScreenInfo(ourDisplay, RootWindow(ourDisplay, ourScreen));
- if (Config)
- {
- // Get the current rotation
- Rotation CurrentRotation;
- XRRConfigCurrentConfiguration(Config, &CurrentRotation);
-
- // Reset the video mode
- XRRSetScreenConfig(ourDisplay, Config, RootWindow(ourDisplay, ourScreen), myOldVideoMode, CurrentRotation, CurrentTime);
-
- // Free the configuration instance
- XRRFreeScreenConfigInfo(Config);
- }
-
- // Reset the fullscreen window
- ourFullscreenWindow = NULL;
- }
-
- // Unhide the mouse cursor (in case it was hidden)
- ShowMouseCursor(true);
-
- // Destroy the OpenGL context
- if (myGLContext)
- {
- glXDestroyContext(ourDisplay, myGLContext);
- myGLContext = NULL;
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Process an incoming event from the window
-////////////////////////////////////////////////////////////
-void WindowImplX11::ProcessEvent(XEvent WinEvent)
-{
- switch (WinEvent.type)
- {
- // Destroy event
- case DestroyNotify :
- {
- // The window is about to be destroyed : we must cleanup resources
- CleanUp();
- break;
- }
-
- // Gain focus event
- case FocusIn :
- {
- // Update the input context
- if (myInputContext)
- XSetICFocus(myInputContext);
-
- Event Evt;
- Evt.Type = Event::GainedFocus;
- SendEvent(Evt);
- break;
- }
-
- // Lost focus event
- case FocusOut :
- {
- // Update the input context
- if (myInputContext)
- XUnsetICFocus(myInputContext);
-
- Event Evt;
- Evt.Type = Event::LostFocus;
- SendEvent(Evt);
- break;
- }
-
- // Resize event
- case ConfigureNotify :
- {
- if ((WinEvent.xconfigure.width != static_cast<int>(myWidth)) || (WinEvent.xconfigure.height != static_cast<int>(myHeight)))
- {
- myWidth = WinEvent.xconfigure.width;
- myHeight = WinEvent.xconfigure.height;
-
- Event Evt;
- Evt.Type = Event::Resized;
- Evt.Size.Width = myWidth;
- Evt.Size.Height = myHeight;
- SendEvent(Evt);
- }
- break;
- }
-
- // Close event
- case ClientMessage :
- {
- if ((WinEvent.xclient.format == 32) && (WinEvent.xclient.data.l[0]) == static_cast<long>(myAtomClose))
- {
- Event Evt;
- Evt.Type = Event::Closed;
- SendEvent(Evt);
- }
- break;
- }
-
- // Key down event
- case KeyPress :
- {
- // Get the keysym of the key that has been pressed
- static XComposeStatus KeyboardStatus;
- char Buffer[32];
- KeySym Sym;
- XLookupString(&WinEvent.xkey, Buffer, sizeof(Buffer), &Sym, &KeyboardStatus);
-
- // Fill the event parameters
- Event Evt;
- Evt.Type = Event::KeyPressed;
- Evt.Key.Code = KeysymToSF(Sym);
- Evt.Key.Alt = WinEvent.xkey.state & Mod1Mask;
- Evt.Key.Control = WinEvent.xkey.state & ControlMask;
- Evt.Key.Shift = WinEvent.xkey.state & ShiftMask;
- SendEvent(Evt);
-
- // Generate a TextEntered event
- if (!XFilterEvent(&WinEvent, None))
- {
- #ifdef X_HAVE_UTF8_STRING
- if (myInputContext)
- {
- Status ReturnedStatus;
- Uint8 KeyBuffer[16];
- int Length = Xutf8LookupString(myInputContext, &WinEvent.xkey, reinterpret_cast<char*>(KeyBuffer), sizeof(KeyBuffer), NULL, &ReturnedStatus);
- if (Length > 0)
- {
- Uint32 Unicode[2]; // just in case, but 1 character should be enough
- const Uint32* End = Unicode::UTF8ToUTF32(KeyBuffer, KeyBuffer + Length, Unicode);
-
- if (End > Unicode)
- {
- Event TextEvt;
- TextEvt.Type = Event::TextEntered;
- TextEvt.Text.Unicode = Unicode[0];
- SendEvent(TextEvt);
- }
- }
- }
- else
- #endif
- {
- static XComposeStatus ComposeStatus;
- char KeyBuffer[16];
- if (XLookupString(&WinEvent.xkey, KeyBuffer, sizeof(KeyBuffer), NULL, &ComposeStatus))
- {
- Event TextEvt;
- TextEvt.Type = Event::TextEntered;
- TextEvt.Text.Unicode = static_cast<Uint32>(KeyBuffer[0]);
- SendEvent(TextEvt);
- }
- }
- }
-
- break;
- }
-
- // Key up event
- case KeyRelease :
- {
- // Get the keysym of the key that has been pressed
- char Buffer[32];
- KeySym Sym;
- XLookupString(&WinEvent.xkey, Buffer, 32, &Sym, NULL);
-
- // Fill the event parameters
- Event Evt;
- Evt.Type = Event::KeyReleased;
- Evt.Key.Code = KeysymToSF(Sym);
- Evt.Key.Alt = WinEvent.xkey.state & Mod1Mask;
- Evt.Key.Control = WinEvent.xkey.state & ControlMask;
- Evt.Key.Shift = WinEvent.xkey.state & ShiftMask;
-
- SendEvent(Evt);
- break;
- }
-
- // Mouse button pressed
- case ButtonPress :
- {
- unsigned int Button = WinEvent.xbutton.button;
- if ((Button == Button1) || (Button == Button2) || (Button == Button3) || (Button == 8) || (Button == 9))
- {
- Event Evt;
- Evt.Type = Event::MouseButtonPressed;
- Evt.MouseButton.X = WinEvent.xbutton.x;
- Evt.MouseButton.Y = WinEvent.xbutton.y;
- switch (Button)
- {
- case Button1 : Evt.MouseButton.Button = Mouse::Left; break;
- case Button2 : Evt.MouseButton.Button = Mouse::Middle; break;
- case Button3 : Evt.MouseButton.Button = Mouse::Right; break;
- case 8 : Evt.MouseButton.Button = Mouse::XButton1; break;
- case 9 : Evt.MouseButton.Button = Mouse::XButton2; break;
- }
- SendEvent(Evt);
- }
- break;
- }
-
- // Mouse button released
- case ButtonRelease :
- {
- unsigned int Button = WinEvent.xbutton.button;
- if ((Button == Button1) || (Button == Button2) || (Button == Button3) || (Button == 8) || (Button == 9))
- {
- Event Evt;
- Evt.Type = Event::MouseButtonReleased;
- Evt.MouseButton.X = WinEvent.xbutton.x;
- Evt.MouseButton.Y = WinEvent.xbutton.y;
- switch (Button)
- {
- case Button1 : Evt.MouseButton.Button = Mouse::Left; break;
- case Button2 : Evt.MouseButton.Button = Mouse::Middle; break;
- case Button3 : Evt.MouseButton.Button = Mouse::Right; break;
- case 8 : Evt.MouseButton.Button = Mouse::XButton1; break;
- case 9 : Evt.MouseButton.Button = Mouse::XButton2; break;
- }
- SendEvent(Evt);
- }
- else if ((Button == Button4) || (Button == Button5))
- {
- Event Evt;
- Evt.Type = Event::MouseWheelMoved;
- Evt.MouseWheel.Delta = WinEvent.xbutton.button == Button4 ? 1 : -1;
- SendEvent(Evt);
- }
- break;
- }
-
- // Mouse moved
- case MotionNotify :
- {
- Event Evt;
- Evt.Type = Event::MouseMoved;
- Evt.MouseMove.X = WinEvent.xmotion.x;
- Evt.MouseMove.Y = WinEvent.xmotion.y;
- SendEvent(Evt);
- break;
- }
-
- // Mouse entered
- case EnterNotify :
- {
- Event Evt;
- Evt.Type = Event::MouseEntered;
- SendEvent(Evt);
- break;
- }
-
- // Mouse left
- case LeaveNotify :
- {
- Event Evt;
- Evt.Type = Event::MouseLeft;
- SendEvent(Evt);
- break;
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Convert a X11 keysym to SFML key code
-////////////////////////////////////////////////////////////
-Key::Code WindowImplX11::KeysymToSF(KeySym Sym)
-{
- // First convert to uppercase (to avoid dealing with two different keysyms for the same key)
- KeySym Lower, Key;
- XConvertCase(Sym, &Lower, &Key);
-
- switch (Key)
- {
- case XK_Shift_L : return Key::LShift;
- case XK_Shift_R : return Key::RShift;
- case XK_Control_L : return Key::LControl;
- case XK_Control_R : return Key::RControl;
- case XK_Alt_L : return Key::LAlt;
- case XK_Alt_R : return Key::RAlt;
- case XK_Super_L : return Key::LSystem;
- case XK_Super_R : return Key::RSystem;
- case XK_Menu : return Key::Menu;
- case XK_Escape : return Key::Escape;
- case XK_semicolon : return Key::SemiColon;
- case XK_slash : return Key::Slash;
- case XK_equal : return Key::Equal;
- case XK_minus : return Key::Dash;
- case XK_bracketleft : return Key::LBracket;
- case XK_bracketright : return Key::RBracket;
- case XK_comma : return Key::Comma;
- case XK_period : return Key::Period;
- case XK_dead_acute : return Key::Quote;
- case XK_backslash : return Key::BackSlash;
- case XK_dead_grave : return Key::Tilde;
- case XK_space : return Key::Space;
- case XK_Return : return Key::Return;
- case XK_KP_Enter : return Key::Return;
- case XK_BackSpace : return Key::Back;
- case XK_Tab : return Key::Tab;
- case XK_Prior : return Key::PageUp;
- case XK_Next : return Key::PageDown;
- case XK_End : return Key::End;
- case XK_Home : return Key::Home;
- case XK_Insert : return Key::Insert;
- case XK_Delete : return Key::Delete;
- case XK_KP_Add : return Key::Add;
- case XK_KP_Subtract : return Key::Subtract;
- case XK_KP_Multiply : return Key::Multiply;
- case XK_KP_Divide : return Key::Divide;
- case XK_Pause : return Key::Pause;
- case XK_F1 : return Key::F1;
- case XK_F2 : return Key::F2;
- case XK_F3 : return Key::F3;
- case XK_F4 : return Key::F4;
- case XK_F5 : return Key::F5;
- case XK_F6 : return Key::F6;
- case XK_F7 : return Key::F7;
- case XK_F8 : return Key::F8;
- case XK_F9 : return Key::F9;
- case XK_F10 : return Key::F10;
- case XK_F11 : return Key::F11;
- case XK_F12 : return Key::F12;
- case XK_F13 : return Key::F13;
- case XK_F14 : return Key::F14;
- case XK_F15 : return Key::F15;
- case XK_Left : return Key::Left;
- case XK_Right : return Key::Right;
- case XK_Up : return Key::Up;
- case XK_Down : return Key::Down;
- case XK_KP_0 : return Key::Numpad0;
- case XK_KP_1 : return Key::Numpad1;
- case XK_KP_2 : return Key::Numpad2;
- case XK_KP_3 : return Key::Numpad3;
- case XK_KP_4 : return Key::Numpad4;
- case XK_KP_5 : return Key::Numpad5;
- case XK_KP_6 : return Key::Numpad6;
- case XK_KP_7 : return Key::Numpad7;
- case XK_KP_8 : return Key::Numpad8;
- case XK_KP_9 : return Key::Numpad9;
- case XK_A : return Key::A;
- case XK_Z : return Key::Z;
- case XK_E : return Key::E;
- case XK_R : return Key::R;
- case XK_T : return Key::T;
- case XK_Y : return Key::Y;
- case XK_U : return Key::U;
- case XK_I : return Key::I;
- case XK_O : return Key::O;
- case XK_P : return Key::P;
- case XK_Q : return Key::Q;
- case XK_S : return Key::S;
- case XK_D : return Key::D;
- case XK_F : return Key::F;
- case XK_G : return Key::G;
- case XK_H : return Key::H;
- case XK_J : return Key::J;
- case XK_K : return Key::K;
- case XK_L : return Key::L;
- case XK_M : return Key::M;
- case XK_W : return Key::W;
- case XK_X : return Key::X;
- case XK_C : return Key::C;
- case XK_V : return Key::V;
- case XK_B : return Key::B;
- case XK_N : return Key::N;
- case XK_0 : return Key::Num0;
- case XK_1 : return Key::Num1;
- case XK_2 : return Key::Num2;
- case XK_3 : return Key::Num3;
- case XK_4 : return Key::Num4;
- case XK_5 : return Key::Num5;
- case XK_6 : return Key::Num6;
- case XK_7 : return Key::Num7;
- case XK_8 : return Key::Num8;
- case XK_9 : return Key::Num9;
- }
-
- return Key::Code(0);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Open the display (if not already done)
-////////////////////////////////////////////////////////////
-bool WindowImplX11::OpenDisplay(bool AddWindow)
-{
- // If no display has been opened yet, open it
- if (ourDisplay == NULL)
- {
- ourDisplay = XOpenDisplay(NULL);
- if (ourDisplay)
- {
- ourScreen = DefaultScreen(ourDisplay);
-
- // Get the input method (XIM) object
- ourInputMethod = XOpenIM(ourDisplay, NULL, NULL, NULL);
- }
- else
- {
- std::cerr << "Failed to open a connection with the X server" << std::endl;
- }
- }
-
- // Increase the number of windows
- if (AddWindow)
- ourWindowsCount++;
-
- return ourDisplay != NULL;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Close the display
-////////////////////////////////////////////////////////////
-void WindowImplX11::CloseDisplay()
-{
- // Decrease the number of windows
- ourWindowsCount--;
-
- // If all windows have been destroyed, then we can close the display
- if (ourWindowsCount == 0)
- {
- // Close the input method object
- if (ourInputMethod)
- XCloseIM(ourInputMethod);
-
- XCloseDisplay(ourDisplay);
- ourDisplay = NULL;
- }
-}
-
-} // namespace priv
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/WindowStyle.hpp> // important to be included first (conflict with None)
+#include <SFML/Window/Linux/WindowImplX11.hpp>
+#include <SFML/Window/Linux/GlxContext.hpp>
+#include <SFML/Window/Linux/Display.hpp>
+#include <SFML/System/Utf.hpp>
+#include <SFML/System/Err.hpp>
+#include <X11/Xutil.h>
+#include <X11/keysym.h>
+#include <X11/extensions/Xrandr.h>
+#include <unistd.h>
+#include <cstring>
+#include <sstream>
+#include <vector>
+#include <string>
+#include <iterator>
+
+
+////////////////////////////////////////////////////////////
+// Private data
+////////////////////////////////////////////////////////////
+namespace
+{
+ sf::priv::WindowImplX11* fullscreenWindow = NULL;
+ unsigned long eventMask = FocusChangeMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask |
+ PointerMotionMask | KeyPressMask | KeyReleaseMask | StructureNotifyMask |
+ EnterWindowMask | LeaveWindowMask;
+
+ // Filter the events received by windows (only allow those matching a specific window)
+ Bool checkEvent(::Display*, XEvent* event, XPointer userData)
+ {
+ // Just check if the event matches the window
+ return event->xany.window == reinterpret_cast< ::Window >(userData);
+ }
+
+ // Find the name of the current executable
+ void findExecutableName(char* buffer, std::size_t bufferSize)
+ {
+ //Default fallback name
+ const char* executableName = "sfml";
+ std::size_t length = readlink("/proc/self/exe", buffer, bufferSize);
+ if ((length > 0) && (length < bufferSize))
+ {
+ // Remove the path to keep the executable name only
+ buffer[length] = '\0';
+ executableName = basename(buffer);
+ }
+ std::memmove(buffer, executableName, std::strlen(executableName) + 1);
+ }
+}
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+WindowImplX11::WindowImplX11(WindowHandle handle) :
+m_window (0),
+m_inputMethod (NULL),
+m_inputContext(NULL),
+m_isExternal (true),
+m_atomClose (0),
+m_oldVideoMode(-1),
+m_hiddenCursor(0),
+m_keyRepeat (true),
+m_previousSize(-1, -1)
+{
+ // Open a connection with the X server
+ m_display = OpenDisplay();
+ m_screen = DefaultScreen(m_display);
+
+ // Save the window handle
+ m_window = handle;
+
+ if (m_window)
+ {
+ // Make sure the window is listening to all the requiered events
+ XSelectInput(m_display, m_window, eventMask & ~ButtonPressMask);
+
+ // Do some common initializations
+ initialize();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+WindowImplX11::WindowImplX11(VideoMode mode, const String& title, unsigned long style, const ContextSettings& settings) :
+m_window (0),
+m_inputMethod (NULL),
+m_inputContext(NULL),
+m_isExternal (false),
+m_atomClose (0),
+m_oldVideoMode(-1),
+m_hiddenCursor(0),
+m_keyRepeat (true),
+m_previousSize(-1, -1)
+{
+ // Open a connection with the X server
+ m_display = OpenDisplay();
+ m_screen = DefaultScreen(m_display);
+ ::Window root = RootWindow(m_display, m_screen);
+
+ // Compute position and size
+ int left, top;
+ bool fullscreen = (style & Style::Fullscreen) != 0;
+ if (!fullscreen)
+ {
+ left = (DisplayWidth(m_display, m_screen) - mode.width) / 2;
+ top = (DisplayHeight(m_display, m_screen) - mode.height) / 2;
+ }
+ else
+ {
+ left = 0;
+ top = 0;
+ }
+ int width = mode.width;
+ int height = mode.height;
+
+ // Switch to fullscreen if necessary
+ if (fullscreen)
+ switchToFullscreen(mode);
+
+ // Choose the visual according to the context settings
+ XVisualInfo visualInfo = GlxContext::selectBestVisual(m_display, mode.bitsPerPixel, settings);
+
+ // Define the window attributes
+ XSetWindowAttributes attributes;
+ attributes.override_redirect = fullscreen;
+ attributes.event_mask = eventMask;
+ attributes.colormap = XCreateColormap(m_display, root, visualInfo.visual, AllocNone);
+
+ // Create the window
+ m_window = XCreateWindow(m_display,
+ root,
+ left, top,
+ width, height,
+ 0,
+ visualInfo.depth,
+ InputOutput,
+ visualInfo.visual,
+ CWEventMask | CWOverrideRedirect | CWColormap, &attributes);
+ if (!m_window)
+ {
+ err() << "Failed to create window" << std::endl;
+ return;
+ }
+
+ // Set the window's name
+ setTitle(title);
+
+ // Set the window's style (tell the windows manager to change our window's decorations and functions according to the requested style)
+ if (!fullscreen)
+ {
+ Atom WMHintsAtom = XInternAtom(m_display, "_MOTIF_WM_HINTS", false);
+ if (WMHintsAtom)
+ {
+ static const unsigned long MWM_HINTS_FUNCTIONS = 1 << 0;
+ static const unsigned long MWM_HINTS_DECORATIONS = 1 << 1;
+
+ //static const unsigned long MWM_DECOR_ALL = 1 << 0;
+ static const unsigned long MWM_DECOR_BORDER = 1 << 1;
+ static const unsigned long MWM_DECOR_RESIZEH = 1 << 2;
+ static const unsigned long MWM_DECOR_TITLE = 1 << 3;
+ static const unsigned long MWM_DECOR_MENU = 1 << 4;
+ static const unsigned long MWM_DECOR_MINIMIZE = 1 << 5;
+ static const unsigned long MWM_DECOR_MAXIMIZE = 1 << 6;
+
+ //static const unsigned long MWM_FUNC_ALL = 1 << 0;
+ static const unsigned long MWM_FUNC_RESIZE = 1 << 1;
+ static const unsigned long MWM_FUNC_MOVE = 1 << 2;
+ static const unsigned long MWM_FUNC_MINIMIZE = 1 << 3;
+ static const unsigned long MWM_FUNC_MAXIMIZE = 1 << 4;
+ static const unsigned long MWM_FUNC_CLOSE = 1 << 5;
+
+ struct WMHints
+ {
+ unsigned long flags;
+ unsigned long functions;
+ unsigned long decorations;
+ long inputMode;
+ unsigned long state;
+ };
+
+ WMHints hints;
+ hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
+ hints.decorations = 0;
+ hints.functions = 0;
+
+ if (style & Style::Titlebar)
+ {
+ hints.decorations |= MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MINIMIZE | MWM_DECOR_MENU;
+ hints.functions |= MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE;
+ }
+ if (style & Style::Resize)
+ {
+ hints.decorations |= MWM_DECOR_MAXIMIZE | MWM_DECOR_RESIZEH;
+ hints.functions |= MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
+ }
+ if (style & Style::Close)
+ {
+ hints.decorations |= 0;
+ hints.functions |= MWM_FUNC_CLOSE;
+ }
+
+ const unsigned char* ptr = reinterpret_cast<const unsigned char*>(&hints);
+ XChangeProperty(m_display, m_window, WMHintsAtom, WMHintsAtom, 32, PropModeReplace, ptr, 5);
+ }
+
+ // This is a hack to force some windows managers to disable resizing
+ if (!(style & Style::Resize))
+ {
+ XSizeHints* sizeHints = XAllocSizeHints();
+ sizeHints->flags = PMinSize | PMaxSize;
+ sizeHints->min_width = sizeHints->max_width = width;
+ sizeHints->min_height = sizeHints->max_height = height;
+ XSetWMNormalHints(m_display, m_window, sizeHints);
+ XFree(sizeHints);
+ }
+ }
+
+ // Set the window's WM class (this can be used by window managers)
+ char windowClass[512];
+ findExecutableName(windowClass, sizeof(windowClass));
+ XClassHint* classHint = XAllocClassHint();
+ classHint->res_name = windowClass;
+ classHint->res_class = windowClass;
+ XSetClassHint(m_display, m_window, classHint);
+ XFree(classHint);
+
+ // Do some common initializations
+ initialize();
+
+ // In fullscreen mode, we must grab keyboard and mouse inputs
+ if (fullscreen)
+ {
+ XGrabPointer(m_display, m_window, true, 0, GrabModeAsync, GrabModeAsync, m_window, None, CurrentTime);
+ XGrabKeyboard(m_display, m_window, true, GrabModeAsync, GrabModeAsync, CurrentTime);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+WindowImplX11::~WindowImplX11()
+{
+ // Cleanup graphical resources
+ cleanup();
+
+ // Destroy the cursor
+ if (m_hiddenCursor)
+ XFreeCursor(m_display, m_hiddenCursor);
+
+ // Destroy the input context
+ if (m_inputContext)
+ XDestroyIC(m_inputContext);
+
+ // Destroy the window
+ if (m_window && !m_isExternal)
+ {
+ XDestroyWindow(m_display, m_window);
+ XFlush(m_display);
+ }
+
+ // Close the input method
+ if (m_inputMethod)
+ XCloseIM(m_inputMethod);
+
+ // Close the connection with the X server
+ CloseDisplay(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+WindowHandle WindowImplX11::getSystemHandle() const
+{
+ return m_window;
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::processEvents()
+{
+ XEvent event;
+ while (XCheckIfEvent(m_display, &event, &checkEvent, reinterpret_cast<XPointer>(m_window)))
+ {
+ processEvent(event);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i WindowImplX11::getPosition() const
+{
+ ::Window root, child;
+ int localX, localY, x, y;
+ unsigned int width, height, border, depth;
+
+ XGetGeometry(m_display, m_window, &root, &localX, &localY, &width, &height, &border, &depth);
+ XTranslateCoordinates(m_display, m_window, root, localX, localY, &x, &y, &child);
+
+ return Vector2i(x, y);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setPosition(const Vector2i& position)
+{
+ XMoveWindow(m_display, m_window, position.x, position.y);
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2u WindowImplX11::getSize() const
+{
+ XWindowAttributes attributes;
+ XGetWindowAttributes(m_display, m_window, &attributes);
+ return Vector2u(attributes.width, attributes.height);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setSize(const Vector2u& size)
+{
+ XResizeWindow(m_display, m_window, size.x, size.y);
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setTitle(const String& title)
+{
+ // Bare X11 has no Unicode window title support.
+ // There is however an option to tell the window manager your unicode title via hints.
+
+ // Convert to UTF-8 encoding.
+ std::basic_string<Uint8> utf8Title;
+ Utf32::toUtf8(title.begin(), title.end(), std::back_inserter(utf8Title));
+
+ // Set the _NET_WM_NAME atom, which specifies a UTF-8 encoded window title.
+ Atom wmName = XInternAtom(m_display, "_NET_WM_NAME", False);
+ Atom useUtf8 = XInternAtom(m_display, "UTF8_STRING", False);
+ XChangeProperty(m_display, m_window, wmName, useUtf8, 8,
+ PropModeReplace, utf8Title.c_str(), utf8Title.size());
+
+ // Set the non-Unicode title as a fallback for window managers who don't support _NET_WM_NAME.
+ XStoreName(m_display, m_window, title.toAnsiString().c_str());
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setIcon(unsigned int width, unsigned int height, const Uint8* pixels)
+{
+ // X11 wants BGRA pixels : swap red and blue channels
+ // Note: this memory will be freed by XDestroyImage
+ Uint8* iconPixels = static_cast<Uint8*>(std::malloc(width * height * 4));
+ for (std::size_t i = 0; i < width * height; ++i)
+ {
+ iconPixels[i * 4 + 0] = pixels[i * 4 + 2];
+ iconPixels[i * 4 + 1] = pixels[i * 4 + 1];
+ iconPixels[i * 4 + 2] = pixels[i * 4 + 0];
+ iconPixels[i * 4 + 3] = pixels[i * 4 + 3];
+ }
+
+ // Create the icon pixmap
+ Visual* defVisual = DefaultVisual(m_display, m_screen);
+ unsigned int defDepth = DefaultDepth(m_display, m_screen);
+ XImage* iconImage = XCreateImage(m_display, defVisual, defDepth, ZPixmap, 0, (char*)iconPixels, width, height, 32, 0);
+ if (!iconImage)
+ {
+ err() << "Failed to set the window's icon" << std::endl;
+ return;
+ }
+ Pixmap iconPixmap = XCreatePixmap(m_display, RootWindow(m_display, m_screen), width, height, defDepth);
+ XGCValues values;
+ GC iconGC = XCreateGC(m_display, iconPixmap, 0, &values);
+ XPutImage(m_display, iconPixmap, iconGC, iconImage, 0, 0, 0, 0, width, height);
+ XFreeGC(m_display, iconGC);
+ XDestroyImage(iconImage);
+
+ // Create the mask pixmap (must have 1 bit depth)
+ std::size_t pitch = (width + 7) / 8;
+ static std::vector<Uint8> maskPixels(pitch * height, 0);
+ for (std::size_t j = 0; j < height; ++j)
+ {
+ for (std::size_t i = 0; i < pitch; ++i)
+ {
+ for (std::size_t k = 0; k < 8; ++k)
+ {
+ if (i * 8 + k < width)
+ {
+ Uint8 opacity = (pixels[(i * 8 + k + j * width) * 4 + 3] > 0) ? 1 : 0;
+ maskPixels[i + j * pitch] |= (opacity << k);
+ }
+ }
+ }
+ }
+ Pixmap maskPixmap = XCreatePixmapFromBitmapData(m_display, m_window, (char*)&maskPixels[0], width, height, 1, 0, 1);
+
+ // Send our new icon to the window through the WMHints
+ XWMHints* hints = XAllocWMHints();
+ hints->flags = IconPixmapHint | IconMaskHint;
+ hints->icon_pixmap = iconPixmap;
+ hints->icon_mask = maskPixmap;
+ XSetWMHints(m_display, m_window, hints);
+ XFree(hints);
+
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setVisible(bool visible)
+{
+ if (visible)
+ XMapWindow(m_display, m_window);
+ else
+ XUnmapWindow(m_display, m_window);
+
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setMouseCursorVisible(bool visible)
+{
+ XDefineCursor(m_display, m_window, visible ? None : m_hiddenCursor);
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::setKeyRepeatEnabled(bool enabled)
+{
+ m_keyRepeat = enabled;
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::switchToFullscreen(const VideoMode& mode)
+{
+ // Check if the XRandR extension is present
+ int version;
+ if (XQueryExtension(m_display, "RANDR", &version, &version, &version))
+ {
+ // Get the current configuration
+ XRRScreenConfiguration* config = XRRGetScreenInfo(m_display, RootWindow(m_display, m_screen));
+ if (config)
+ {
+ // Get the current rotation
+ Rotation currentRotation;
+ m_oldVideoMode = XRRConfigCurrentConfiguration(config, &currentRotation);
+
+ // Get the available screen sizes
+ int nbSizes;
+ XRRScreenSize* sizes = XRRConfigSizes(config, &nbSizes);
+ if (sizes && (nbSizes > 0))
+ {
+ // Search a matching size
+ for (int i = 0; i < nbSizes; ++i)
+ {
+ if ((sizes[i].width == static_cast<int>(mode.width)) && (sizes[i].height == static_cast<int>(mode.height)))
+ {
+ // Switch to fullscreen mode
+ XRRSetScreenConfig(m_display, config, RootWindow(m_display, m_screen), i, currentRotation, CurrentTime);
+
+ // Set "this" as the current fullscreen window
+ fullscreenWindow = this;
+ break;
+ }
+ }
+ }
+
+ // Free the configuration instance
+ XRRFreeScreenConfigInfo(config);
+ }
+ else
+ {
+ // Failed to get the screen configuration
+ err() << "Failed to get the current screen configuration for fullscreen mode, switching to window mode" << std::endl;
+ }
+ }
+ else
+ {
+ // XRandr extension is not supported : we cannot use fullscreen mode
+ err() << "Fullscreen is not supported, switching to window mode" << std::endl;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::initialize()
+{
+ // Get the atom defining the close event
+ m_atomClose = XInternAtom(m_display, "WM_DELETE_WINDOW", false);
+ XSetWMProtocols(m_display, m_window, &m_atomClose, 1);
+
+ // Create the input context
+ m_inputMethod = XOpenIM(m_display, NULL, NULL, NULL);
+ if (m_inputMethod)
+ {
+ m_inputContext = XCreateIC(m_inputMethod,
+ XNClientWindow, m_window,
+ XNFocusWindow, m_window,
+ XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
+ (void*)NULL);
+ }
+ else
+ {
+ m_inputContext = NULL;
+ }
+ if (!m_inputContext)
+ err() << "Failed to create input context for window -- TextEntered event won't be able to return unicode" << std::endl;
+
+ // Show the window
+ XMapWindow(m_display, m_window);
+ XFlush(m_display);
+
+ // Create the hiden cursor
+ createHiddenCursor();
+
+ // Flush the commands queue
+ XFlush(m_display);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::createHiddenCursor()
+{
+ // Create the cursor's pixmap (1x1 pixels)
+ Pixmap cursorPixmap = XCreatePixmap(m_display, m_window, 1, 1, 1);
+ GC graphicsContext = XCreateGC(m_display, cursorPixmap, 0, NULL);
+ XDrawPoint(m_display, cursorPixmap, graphicsContext, 0, 0);
+ XFreeGC(m_display, graphicsContext);
+
+ // Create the cursor, using the pixmap as both the shape and the mask of the cursor
+ XColor color;
+ color.flags = DoRed | DoGreen | DoBlue;
+ color.red = color.blue = color.green = 0;
+ m_hiddenCursor = XCreatePixmapCursor(m_display, cursorPixmap, cursorPixmap, &color, &color, 0, 0);
+
+ // We don't need the pixmap any longer, free it
+ XFreePixmap(m_display, cursorPixmap);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplX11::cleanup()
+{
+ // Restore the previous video mode (in case we were running in fullscreen)
+ if (fullscreenWindow == this)
+ {
+ // Get current screen info
+ XRRScreenConfiguration* config = XRRGetScreenInfo(m_display, RootWindow(m_display, m_screen));
+ if (config)
+ {
+ // Get the current rotation
+ Rotation currentRotation;
+ XRRConfigCurrentConfiguration(config, &currentRotation);
+
+ // Reset the video mode
+ XRRSetScreenConfig(m_display, config, RootWindow(m_display, m_screen), m_oldVideoMode, currentRotation, CurrentTime);
+
+ // Free the configuration instance
+ XRRFreeScreenConfigInfo(config);
+ }
+
+ // Reset the fullscreen window
+ fullscreenWindow = NULL;
+ }
+
+ // Unhide the mouse cursor (in case it was hidden)
+ setMouseCursorVisible(true);
+}
+
+
+////////////////////////////////////////////////////////////
+bool WindowImplX11::processEvent(XEvent windowEvent)
+{
+ // This function implements a workaround to properly discard
+ // repeated key events when necessary. The problem is that the
+ // system's key events policy doesn't match SFML's one: X server will generate
+ // both repeated KeyPress and KeyRelease events when maintaining a key down, while
+ // SFML only wants repeated KeyPress events. Thus, we have to:
+ // - Discard duplicated KeyRelease events when KeyRepeatEnabled is true
+ // - Discard both duplicated KeyPress and KeyRelease events when KeyRepeatEnabled is false
+
+ // Detect repeated key events
+ // (code shamelessly taken from SDL)
+ if (windowEvent.type == KeyRelease)
+ {
+ // Check if there's a matching KeyPress event in the queue
+ XEvent nextEvent;
+ if (XPending(m_display))
+ {
+ // Grab it but don't remove it from the queue, it still needs to be processed :)
+ XPeekEvent(m_display, &nextEvent);
+ if (nextEvent.type == KeyPress)
+ {
+ // Check if it is a duplicated event (same timestamp as the KeyRelease event)
+ if ((nextEvent.xkey.keycode == windowEvent.xkey.keycode) &&
+ (nextEvent.xkey.time - windowEvent.xkey.time < 2))
+ {
+ // If we don't want repeated events, remove the next KeyPress from the queue
+ if (!m_keyRepeat)
+ XNextEvent(m_display, &nextEvent);
+
+ // This KeyRelease is a repeated event and we don't want it
+ return false;
+ }
+ }
+ }
+ }
+
+ // Convert the X11 event to a sf::Event
+ switch (windowEvent.type)
+ {
+ // Destroy event
+ case DestroyNotify :
+ {
+ // The window is about to be destroyed : we must cleanup resources
+ cleanup();
+ break;
+ }
+
+ // Gain focus event
+ case FocusIn :
+ {
+ // Update the input context
+ if (m_inputContext)
+ XSetICFocus(m_inputContext);
+
+ Event event;
+ event.type = Event::GainedFocus;
+ pushEvent(event);
+ break;
+ }
+
+ // Lost focus event
+ case FocusOut :
+ {
+ // Update the input context
+ if (m_inputContext)
+ XUnsetICFocus(m_inputContext);
+
+ Event event;
+ event.type = Event::LostFocus;
+ pushEvent(event);
+ break;
+ }
+
+ // Resize event
+ case ConfigureNotify :
+ {
+ // ConfigureNotify can be triggered for other reasons, check if the size has acutally changed
+ if ((windowEvent.xconfigure.width != m_previousSize.x) || (windowEvent.xconfigure.height != m_previousSize.y))
+ {
+ Event event;
+ event.type = Event::Resized;
+ event.size.width = windowEvent.xconfigure.width;
+ event.size.height = windowEvent.xconfigure.height;
+ pushEvent(event);
+
+ m_previousSize.x = windowEvent.xconfigure.width;
+ m_previousSize.y = windowEvent.xconfigure.height;
+ }
+ break;
+ }
+
+ // Close event
+ case ClientMessage :
+ {
+ if ((windowEvent.xclient.format == 32) && (windowEvent.xclient.data.l[0]) == static_cast<long>(m_atomClose))
+ {
+ Event event;
+ event.type = Event::Closed;
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // Key down event
+ case KeyPress :
+ {
+ // Get the keysym of the key that has been pressed
+ static XComposeStatus keyboard;
+ char buffer[32];
+ KeySym symbol;
+ XLookupString(&windowEvent.xkey, buffer, sizeof(buffer), &symbol, &keyboard);
+
+ // Fill the event parameters
+ // TODO: if modifiers are wrong, use XGetModifierMapping to retrieve the actual modifiers mapping
+ Event event;
+ event.type = Event::KeyPressed;
+ event.key.code = keysymToSF(symbol);
+ event.key.alt = windowEvent.xkey.state & Mod1Mask;
+ event.key.control = windowEvent.xkey.state & ControlMask;
+ event.key.shift = windowEvent.xkey.state & ShiftMask;
+ event.key.system = windowEvent.xkey.state & Mod4Mask;
+ pushEvent(event);
+
+ // Generate a TextEntered event
+ if (!XFilterEvent(&windowEvent, None))
+ {
+ #ifdef X_HAVE_UTF8_STRING
+ if (m_inputContext)
+ {
+ Status status;
+ Uint8 keyBuffer[16];
+ int length = Xutf8LookupString(m_inputContext, &windowEvent.xkey, reinterpret_cast<char*>(keyBuffer), sizeof(keyBuffer), NULL, &status);
+ if (length > 0)
+ {
+ Uint32 unicode = 0;
+ Utf8::decode(keyBuffer, keyBuffer + length, unicode, 0);
+ if (unicode != 0)
+ {
+ Event textEvent;
+ textEvent.type = Event::TextEntered;
+ textEvent.text.unicode = unicode;
+ pushEvent(textEvent);
+ }
+ }
+ }
+ else
+ #endif
+ {
+ static XComposeStatus status;
+ char keyBuffer[16];
+ if (XLookupString(&windowEvent.xkey, keyBuffer, sizeof(keyBuffer), NULL, &status))
+ {
+ Event textEvent;
+ textEvent.type = Event::TextEntered;
+ textEvent.text.unicode = static_cast<Uint32>(keyBuffer[0]);
+ pushEvent(textEvent);
+ }
+ }
+ }
+
+ break;
+ }
+
+ // Key up event
+ case KeyRelease :
+ {
+ // Get the keysym of the key that has been pressed
+ char buffer[32];
+ KeySym symbol;
+ XLookupString(&windowEvent.xkey, buffer, 32, &symbol, NULL);
+
+ // Fill the event parameters
+ Event event;
+ event.type = Event::KeyReleased;
+ event.key.code = keysymToSF(symbol);
+ event.key.alt = windowEvent.xkey.state & Mod1Mask;
+ event.key.control = windowEvent.xkey.state & ControlMask;
+ event.key.shift = windowEvent.xkey.state & ShiftMask;
+ event.key.system = windowEvent.xkey.state & Mod4Mask;
+ pushEvent(event);
+
+ break;
+ }
+
+ // Mouse button pressed
+ case ButtonPress :
+ {
+ unsigned int button = windowEvent.xbutton.button;
+ if ((button == Button1) || (button == Button2) || (button == Button3) || (button == 8) || (button == 9))
+ {
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.x = windowEvent.xbutton.x;
+ event.mouseButton.y = windowEvent.xbutton.y;
+ switch (button)
+ {
+ case Button1 : event.mouseButton.button = Mouse::Left; break;
+ case Button2 : event.mouseButton.button = Mouse::Middle; break;
+ case Button3 : event.mouseButton.button = Mouse::Right; break;
+ case 8 : event.mouseButton.button = Mouse::XButton1; break;
+ case 9 : event.mouseButton.button = Mouse::XButton2; break;
+ }
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // Mouse button released
+ case ButtonRelease :
+ {
+ unsigned int button = windowEvent.xbutton.button;
+ if ((button == Button1) || (button == Button2) || (button == Button3) || (button == 8) || (button == 9))
+ {
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.x = windowEvent.xbutton.x;
+ event.mouseButton.y = windowEvent.xbutton.y;
+ switch (button)
+ {
+ case Button1 : event.mouseButton.button = Mouse::Left; break;
+ case Button2 : event.mouseButton.button = Mouse::Middle; break;
+ case Button3 : event.mouseButton.button = Mouse::Right; break;
+ case 8 : event.mouseButton.button = Mouse::XButton1; break;
+ case 9 : event.mouseButton.button = Mouse::XButton2; break;
+ }
+ pushEvent(event);
+ }
+ else if ((button == Button4) || (button == Button5))
+ {
+ Event event;
+ event.type = Event::MouseWheelMoved;
+ event.mouseWheel.delta = windowEvent.xbutton.button == Button4 ? 1 : -1;
+ event.mouseWheel.x = windowEvent.xbutton.x;
+ event.mouseWheel.y = windowEvent.xbutton.y;
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // Mouse moved
+ case MotionNotify :
+ {
+ Event event;
+ event.type = Event::MouseMoved;
+ event.mouseMove.x = windowEvent.xmotion.x;
+ event.mouseMove.y = windowEvent.xmotion.y;
+ pushEvent(event);
+ break;
+ }
+
+ // Mouse entered
+ case EnterNotify :
+ {
+ if (windowEvent.xcrossing.mode == NotifyNormal)
+ {
+ Event event;
+ event.type = Event::MouseEntered;
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // Mouse left
+ case LeaveNotify :
+ {
+ if (windowEvent.xcrossing.mode == NotifyNormal)
+ {
+ Event event;
+ event.type = Event::MouseLeft;
+ pushEvent(event);
+ }
+ break;
+ }
+ }
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+Keyboard::Key WindowImplX11::keysymToSF(KeySym symbol)
+{
+ // First convert to uppercase (to avoid dealing with two different keysyms for the same key)
+ KeySym lower, key;
+ XConvertCase(symbol, &lower, &key);
+
+ switch (key)
+ {
+ case XK_Shift_L : return Keyboard::LShift;
+ case XK_Shift_R : return Keyboard::RShift;
+ case XK_Control_L : return Keyboard::LControl;
+ case XK_Control_R : return Keyboard::RControl;
+ case XK_Alt_L : return Keyboard::LAlt;
+ case XK_Alt_R : return Keyboard::RAlt;
+ case XK_Super_L : return Keyboard::LSystem;
+ case XK_Super_R : return Keyboard::RSystem;
+ case XK_Menu : return Keyboard::Menu;
+ case XK_Escape : return Keyboard::Escape;
+ case XK_semicolon : return Keyboard::SemiColon;
+ case XK_slash : return Keyboard::Slash;
+ case XK_equal : return Keyboard::Equal;
+ case XK_minus : return Keyboard::Dash;
+ case XK_bracketleft : return Keyboard::LBracket;
+ case XK_bracketright : return Keyboard::RBracket;
+ case XK_comma : return Keyboard::Comma;
+ case XK_period : return Keyboard::Period;
+ case XK_dead_acute : return Keyboard::Quote;
+ case XK_backslash : return Keyboard::BackSlash;
+ case XK_dead_grave : return Keyboard::Tilde;
+ case XK_space : return Keyboard::Space;
+ case XK_Return : return Keyboard::Return;
+ case XK_KP_Enter : return Keyboard::Return;
+ case XK_BackSpace : return Keyboard::BackSpace;
+ case XK_Tab : return Keyboard::Tab;
+ case XK_Prior : return Keyboard::PageUp;
+ case XK_Next : return Keyboard::PageDown;
+ case XK_End : return Keyboard::End;
+ case XK_Home : return Keyboard::Home;
+ case XK_Insert : return Keyboard::Insert;
+ case XK_Delete : return Keyboard::Delete;
+ case XK_KP_Add : return Keyboard::Add;
+ case XK_KP_Subtract : return Keyboard::Subtract;
+ case XK_KP_Multiply : return Keyboard::Multiply;
+ case XK_KP_Divide : return Keyboard::Divide;
+ case XK_Pause : return Keyboard::Pause;
+ case XK_F1 : return Keyboard::F1;
+ case XK_F2 : return Keyboard::F2;
+ case XK_F3 : return Keyboard::F3;
+ case XK_F4 : return Keyboard::F4;
+ case XK_F5 : return Keyboard::F5;
+ case XK_F6 : return Keyboard::F6;
+ case XK_F7 : return Keyboard::F7;
+ case XK_F8 : return Keyboard::F8;
+ case XK_F9 : return Keyboard::F9;
+ case XK_F10 : return Keyboard::F10;
+ case XK_F11 : return Keyboard::F11;
+ case XK_F12 : return Keyboard::F12;
+ case XK_F13 : return Keyboard::F13;
+ case XK_F14 : return Keyboard::F14;
+ case XK_F15 : return Keyboard::F15;
+ case XK_Left : return Keyboard::Left;
+ case XK_Right : return Keyboard::Right;
+ case XK_Up : return Keyboard::Up;
+ case XK_Down : return Keyboard::Down;
+ case XK_KP_0 : return Keyboard::Numpad0;
+ case XK_KP_1 : return Keyboard::Numpad1;
+ case XK_KP_2 : return Keyboard::Numpad2;
+ case XK_KP_3 : return Keyboard::Numpad3;
+ case XK_KP_4 : return Keyboard::Numpad4;
+ case XK_KP_5 : return Keyboard::Numpad5;
+ case XK_KP_6 : return Keyboard::Numpad6;
+ case XK_KP_7 : return Keyboard::Numpad7;
+ case XK_KP_8 : return Keyboard::Numpad8;
+ case XK_KP_9 : return Keyboard::Numpad9;
+ case XK_A : return Keyboard::A;
+ case XK_Z : return Keyboard::Z;
+ case XK_E : return Keyboard::E;
+ case XK_R : return Keyboard::R;
+ case XK_T : return Keyboard::T;
+ case XK_Y : return Keyboard::Y;
+ case XK_U : return Keyboard::U;
+ case XK_I : return Keyboard::I;
+ case XK_O : return Keyboard::O;
+ case XK_P : return Keyboard::P;
+ case XK_Q : return Keyboard::Q;
+ case XK_S : return Keyboard::S;
+ case XK_D : return Keyboard::D;
+ case XK_F : return Keyboard::F;
+ case XK_G : return Keyboard::G;
+ case XK_H : return Keyboard::H;
+ case XK_J : return Keyboard::J;
+ case XK_K : return Keyboard::K;
+ case XK_L : return Keyboard::L;
+ case XK_M : return Keyboard::M;
+ case XK_W : return Keyboard::W;
+ case XK_X : return Keyboard::X;
+ case XK_C : return Keyboard::C;
+ case XK_V : return Keyboard::V;
+ case XK_B : return Keyboard::B;
+ case XK_N : return Keyboard::N;
+ case XK_0 : return Keyboard::Num0;
+ case XK_1 : return Keyboard::Num1;
+ case XK_2 : return Keyboard::Num2;
+ case XK_3 : return Keyboard::Num3;
+ case XK_4 : return Keyboard::Num4;
+ case XK_5 : return Keyboard::Num5;
+ case XK_6 : return Keyboard::Num6;
+ case XK_7 : return Keyboard::Num7;
+ case XK_8 : return Keyboard::Num8;
+ case XK_9 : return Keyboard::Num9;
+ }
+
+ return Keyboard::Unknown;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Linux/WindowImplX11.hpp b/src/SFML/Window/Linux/WindowImplX11.hpp
index 9fd4e0e..613fa7b 100755..100644
--- a/src/SFML/Window/Linux/WindowImplX11.hpp
+++ b/src/SFML/Window/Linux/WindowImplX11.hpp
@@ -1,266 +1,234 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_WINDOWIMPLX11_HPP
-#define SFML_WINDOWIMPLX11_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Event.hpp>
-#include <SFML/Window/WindowImpl.hpp>
-#include <X11/Xlib.h>
-#include <GL/glx.h>
-#include <set>
-#include <string>
-
-
-namespace sf
-{
-namespace priv
-{
-class VideoModeSupport;
-
-////////////////////////////////////////////////////////////
-/// WindowImplX11 is the Linux (X11) implementation of WindowImpl
-////////////////////////////////////////////////////////////
-class WindowImplX11 : public WindowImpl
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- /// (creates a dummy window to provide a valid OpenGL context)
- ///
- ////////////////////////////////////////////////////////////
- WindowImplX11();
-
- ////////////////////////////////////////////////////////////
- /// Construct the window implementation from an existing control
- ///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation settings
- ///
- ////////////////////////////////////////////////////////////
- WindowImplX11(WindowHandle Handle, WindowSettings& Params);
-
- ////////////////////////////////////////////////////////////
- /// Create the window implementation
- ///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style (resizable, fixed, or fullscren)
- /// \param Params : Creation settings
- ///
- ////////////////////////////////////////////////////////////
- WindowImplX11(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~WindowImplX11();
-
- ////////////////////////////////////////////////////////////
- /// Check if there's an active context on the current thread
- ///
- /// \return True if there's a context bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- static bool IsContextActive();
-
-private :
-
- friend class VideoModeSupport;
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::Display
- ///
- ////////////////////////////////////////////////////////////
- virtual void Display();
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::ProcessEvents
- ///
- ////////////////////////////////////////////////////////////
- virtual void ProcessEvents();
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetActive
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetActive(bool Active = true) const;
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::UseVerticalSync
- ///
- ////////////////////////////////////////////////////////////
- virtual void UseVerticalSync(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::ShowMouseCursor
- ///
- ////////////////////////////////////////////////////////////
- virtual void ShowMouseCursor(bool Show);
-
- ////////////////////////////////////////////////////////////
- /// /see sfWindowImpl::SetCursorPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetCursorPosition(unsigned int Left, unsigned int Top);
-
- ////////////////////////////////////////////////////////////
- /// /see sfWindowImpl::SetPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetPosition(int Left, int Top);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetSize
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetSize(unsigned int Width, unsigned int Height);
-
- ////////////////////////////////////////////////////////////
- /// /see sfWindowImpl::Show
- ///
- ////////////////////////////////////////////////////////////
- virtual void Show(bool State);
-
- ////////////////////////////////////////////////////////////
- /// /see sfWindowImpl::EnableKeyRepeat
- ///
- ////////////////////////////////////////////////////////////
- virtual void EnableKeyRepeat(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetIcon
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels);
-
- ////////////////////////////////////////////////////////////
- /// Switch to fullscreen mode
- ///
- /// \param Mode : video mode to switch to
- ///
- ////////////////////////////////////////////////////////////
- void SwitchToFullscreen(const VideoMode& Mode);
-
- ////////////////////////////////////////////////////////////
- /// Create the OpenGL rendering context
- ///
- /// \param Mode : Video mode to use
- /// \param ChosenVisual : Visual that has been chosen for creating the contexte
- /// \param Params : Creation parameters
- /// \param Template : Visual infos to match
- /// \param Mask : Visual attributes to check in Template
- ///
- /// \return True on success, false on error
- ///
- ////////////////////////////////////////////////////////////
- bool CreateContext(const VideoMode& Mode, XVisualInfo& ChosenVisual, WindowSettings& Params, XVisualInfo Template = XVisualInfo(), unsigned long Mask = 0);
-
- ////////////////////////////////////////////////////////////
- /// Do some common initializations after the window has been created
- ///
- ////////////////////////////////////////////////////////////
- void Initialize();
-
- ////////////////////////////////////////////////////////////
- /// Create a transparent mouse cursor
- ///
- ////////////////////////////////////////////////////////////
- void CreateHiddenCursor();
-
- ////////////////////////////////////////////////////////////
- /// Cleanup graphical resources attached to the window
- ///
- ////////////////////////////////////////////////////////////
- void CleanUp();
-
- ////////////////////////////////////////////////////////////
- /// Process an incoming event from the window
- ///
- /// \param WinEvent : Event which has been received
- ///
- ////////////////////////////////////////////////////////////
- void ProcessEvent(XEvent WinEvent);
-
- ////////////////////////////////////////////////////////////
- /// Convert a X11 keysym to SFML key code
- ///
- /// \param Sym : keysym to convert
- ///
- /// \return Corrsponding SFML key code
- ///
- ////////////////////////////////////////////////////////////
- static Key::Code KeysymToSF(KeySym Sym);
-
- ////////////////////////////////////////////////////////////
- /// Open the display (if not already done)
- ///
- /// \param AddWindow : Tell whether or not we must increase the windows count
- ///
- /// \return True if the display is properly opened
- ///
- ////////////////////////////////////////////////////////////
- static bool OpenDisplay(bool AddWindow = true);
-
- ////////////////////////////////////////////////////////////
- /// Close the display
- ///
- ////////////////////////////////////////////////////////////
- static void CloseDisplay();
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static ::Display* ourDisplay; ///< Current opened display
- static int ourScreen; ///< Default screen on the opened display
- static WindowImplX11* ourFullscreenWindow; ///< Keep track of the active fullscreen window
- static unsigned int ourWindowsCount; ///< Number of windows created
- static unsigned long ourEventMask; ///< Mask defining the events that will be caught by our windows
- static XIM ourInputMethod; ///< Input object used to get unicode characters from keypress messages
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- ::Window myWindow; ///< X11 structure defining our window
- bool myIsExternal; ///< Tell whether the window has been created externally or by SFML
- GLXContext myGLContext; ///< OpenGL context attached to the window
- Atom myAtomClose; ///< Atom used to identify the close event
- int myOldVideoMode; ///< Video mode in use before we switch to fullscreen
- Cursor myHiddenCursor; ///< As X11 doesn't provide cursor hidding, we must create a transparent one
- XIC myInputContext; ///< Input context used to get unicode input in our window
- bool myKeyRepeat; ///< Is the KeyRepeat feature enabled ?
- XEvent myLastKeyReleaseEvent; ///< Last key release event we received (needed for discarding repeated key events)
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_WINDOWIMPLX11_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_WINDOWIMPLX11_HPP
+#define SFML_WINDOWIMPLX11_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Event.hpp>
+#include <SFML/Window/WindowImpl.hpp>
+#include <SFML/System/String.hpp>
+#include <X11/Xlib.h>
+#include <set>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Linux (X11) implementation of WindowImpl
+///
+////////////////////////////////////////////////////////////
+class WindowImplX11 : public WindowImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the window implementation from an existing control
+ ///
+ /// \param handle Platform-specific handle of the control
+ ///
+ ////////////////////////////////////////////////////////////
+ WindowImplX11(WindowHandle handle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the window implementation
+ ///
+ /// \param mode Video mode to use
+ /// \param title Title of the window
+ /// \param style Window style (resizable, fixed, or fullscren)
+ /// \param settings Additional settings for the underlying OpenGL context
+ ///
+ ////////////////////////////////////////////////////////////
+ WindowImplX11(VideoMode mode, const String& title, unsigned long style, const ContextSettings& settings);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~WindowImplX11();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the OS-specific handle of the window
+ ///
+ /// \return Handle of the window
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual WindowHandle getSystemHandle() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the position of the window
+ ///
+ /// \return Position of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2i getPosition() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the position of the window on screen
+ ///
+ /// \param position New position of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setPosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the client size of the window
+ ///
+ /// \return Size of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2u getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the size of the rendering region of the window
+ ///
+ /// \param size New size, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setSize(const Vector2u& size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the title of the window
+ ///
+ /// \param title New title
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setTitle(const String& title);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the window's icon
+ ///
+ /// \param width Icon's width, in pixels
+ /// \param height Icon's height, in pixels
+ /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Show or hide the window
+ ///
+ /// \param visible True to show, false to hide
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVisible(bool visible);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Show or hide the mouse cursor
+ ///
+ /// \param visible True to show, false to hide
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setMouseCursorVisible(bool visible);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enable or disable automatic key-repeat
+ ///
+ /// \param enabled True to enable, false to disable
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setKeyRepeatEnabled(bool enabled);
+
+protected :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Process incoming events from the operating system
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void processEvents();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Switch to fullscreen mode
+ ///
+ /// \param Mode video mode to switch to
+ ///
+ ////////////////////////////////////////////////////////////
+ void switchToFullscreen(const VideoMode& mode);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Do some common initializations after the window has been created
+ ///
+ ////////////////////////////////////////////////////////////
+ void initialize();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a transparent mouse cursor
+ ///
+ ////////////////////////////////////////////////////////////
+ void createHiddenCursor();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Cleanup graphical resources attached to the window
+ ///
+ ////////////////////////////////////////////////////////////
+ void cleanup();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Process an incoming event from the window
+ ///
+ /// \param windowEvent Event which has been received
+ ///
+ /// \return True if the event was processed, false if it was discarded
+ ///
+ ////////////////////////////////////////////////////////////
+ bool processEvent(XEvent windowEvent);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a X11 keysym to SFML key code
+ ///
+ /// \param symbol Key symbol to convert
+ ///
+ /// \return Corrsponding SFML key code
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key keysymToSF(KeySym symbol);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ ::Window m_window; ///< X11 structure defining our window
+ ::Display* m_display; ///< Pointer to the display
+ int m_screen; ///< Screen identifier
+ XIM m_inputMethod; ///< Input method linked to the X display
+ XIC m_inputContext; ///< Input context used to get unicode input in our window
+ bool m_isExternal; ///< Tell whether the window has been created externally or by SFML
+ Atom m_atomClose; ///< Atom used to identify the close event
+ int m_oldVideoMode; ///< Video mode in use before we switch to fullscreen
+ Cursor m_hiddenCursor; ///< As X11 doesn't provide cursor hidding, we must create a transparent one
+ bool m_keyRepeat; ///< Is the KeyRepeat feature enabled ?
+ Vector2i m_previousSize; ///< Previous size of the window, to find if a ConfigureNotify event is a resize event (could be a move event only)
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_WINDOWIMPLX11_HPP
diff --git a/src/SFML/Window/Makefile b/src/SFML/Window/Makefile
deleted file mode 100755
index 0dd689c..0000000
--- a/src/SFML/Window/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-SRC = $(wildcard *.cpp ./Linux/*.cpp)
-OBJ = $(SRC:.cpp=.o)
-OBJGLEW = $(SRCGLEW:.c=.o)
-
-ifeq ($(STATIC), yes)
- LIB = libsfml-window-s.a
- LIBNAME = $(LIBPATH)/$(LIB)
- INSTALL =
-else
- LIB = libsfml-window.so
- LIBNAME = $(LIBPATH)/$(LIB).$(VERSION)
- INSTALL = && $(LN) $(LNFLAGS) $(LIB).$(VERSION) $(DESTLIBDIR)/$(LIB)
-endif
-
-all: $(LIB)
-
-libsfml-window-s.a: $(OBJ)
- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ)
-
-libsfml-window.so: $(OBJ)
- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) $(OBJGLEW) -lX11 -lXrandr -lGL
-
-$(OBJ): %.o: %.cpp
- $(CPP) -o $@ -c $< $(CFLAGS)
-
-.PHONY: clean mrproper
-
-clean:
- @rm -rf $(OBJ)
-
-mrproper: clean
- @rm -rf $(LIBNAME)
-
-install:
- @($(CP) $(LIBNAME) $(DESTLIBDIR) $(INSTALL))
diff --git a/src/SFML/System/Win32/Mutex.cpp b/src/SFML/Window/Mouse.cpp
index 717062c..e8b6b0c 100755..100644
--- a/src/SFML/System/Win32/Mutex.cpp
+++ b/src/SFML/Window/Mouse.cpp
@@ -1,68 +1,69 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/Win32/Mutex.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-Mutex::Mutex()
-{
- InitializeCriticalSection(&myHandle);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-Mutex::~Mutex()
-{
- DeleteCriticalSection(&myHandle);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Lock the mutex
-////////////////////////////////////////////////////////////
-void Mutex::Lock()
-{
- EnterCriticalSection(&myHandle);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Unlock the mutex
-////////////////////////////////////////////////////////////
-void Mutex::Unlock()
-{
- LeaveCriticalSection(&myHandle);
-}
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Mouse.hpp>
+#include <SFML/Window/InputImpl.hpp>
+#include <SFML/Window/Window.hpp>
+
+
+namespace sf
+{
+////////////////////////////////////////////////////////////
+bool Mouse::isButtonPressed(Button button)
+{
+ return priv::InputImpl::isMouseButtonPressed(button);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i Mouse::getPosition()
+{
+ return priv::InputImpl::getMousePosition();
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i Mouse::getPosition(const Window& relativeTo)
+{
+ return priv::InputImpl::getMousePosition(relativeTo);
+}
+
+
+////////////////////////////////////////////////////////////
+void Mouse::setPosition(const Vector2i& position)
+{
+ priv::InputImpl::setMousePosition(position);
+}
+
+
+////////////////////////////////////////////////////////////
+void Mouse::setPosition(const Vector2i& position, const Window& relativeTo)
+{
+ priv::InputImpl::setMousePosition(position, relativeTo);
+}
+
+} // namespace sf
diff --git a/src/SFML/Window/OSX/AutoreleasePoolWrapper.h b/src/SFML/Window/OSX/AutoreleasePoolWrapper.h
new file mode 100644
index 0000000..f357e23
--- /dev/null
+++ b/src/SFML/Window/OSX/AutoreleasePoolWrapper.h
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+/// \brief Ensure at least one autorelease pool is available on this thread.
+///
+/// Increment a retain count.
+/// See SPECIAL CONSIDERATION in implementation file.
+///
+////////////////////////////////////////////////////////////
+void retainPool(void);
+
+////////////////////////////////////////////////////////////
+/// \brief Release the pool.
+///
+/// Drain the pool if it is no more needed (retain count is zero).
+/// See SPECIAL CONSIDERATION in implementation file.
+///
+////////////////////////////////////////////////////////////
+void releasePool(void);
+
+////////////////////////////////////////////////////////////
+/// \brief Drain the pool.
+///
+/// releasePool must be called at least once before drainPool.
+///
+////////////////////////////////////////////////////////////
+void drainPool();
+
diff --git a/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm b/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm
new file mode 100644
index 0000000..68c709b
--- /dev/null
+++ b/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm
@@ -0,0 +1,239 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/ThreadLocalPtr.hpp>
+#include <SFML/System/NonCopyable.hpp>
+#include <SFML/System/Err.hpp>
+
+#import <Foundation/Foundation.h>
+#import <SFML/Window/OSX/AutoreleasePoolWrapper.h>
+
+
+////////////////////////////////////////////////////////////
+/// Here we manage one and only one pool by thread. This prevents draining one
+/// pool and making other pools invalid which can lead to a crash on 10.5 and an
+/// annoying message on 10.6 (*** attempt to pop an unknown autorelease pool).
+///
+/// Because NSAutoreleasePool cannot be retain we have to do it ourself.
+/// We use an sf::ThreadLocalPtr to have one PoolWrapper in each thread.
+///
+/// SPECIAL CONSIDERATION :
+/// =======================
+/// This implies that if retainPool is called X times in a thread Y then
+/// releasePool must be called X times too in the same thread Y.
+///
+////////////////////////////////////////////////////////////
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief C++ Wrapper of Obj-C Autorelease Pool.
+///
+////////////////////////////////////////////////////////////
+class PoolWrapper : NonCopyable {
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ PoolWrapper();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~PoolWrapper();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Increment retain count and allocate memory if needed
+ ///
+ ////////////////////////////////////////////////////////////
+ void retain();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Decrement retain count and releasing memory if needed
+ ///
+ ////////////////////////////////////////////////////////////
+ void release();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Drain the pool
+ ///
+ ////////////////////////////////////////////////////////////
+ void Drain();
+
+private:
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ int m_count; ///< How many times was the pool retained ?
+ NSAutoreleasePool* m_pool; ///< Our dedicated pool
+};
+
+
+////////////////////////////////////////////////////////////
+PoolWrapper::PoolWrapper()
+: m_count(0)
+, m_pool(0)
+{
+ /* Nothing else */
+}
+
+
+////////////////////////////////////////////////////////////
+PoolWrapper::~PoolWrapper()
+{
+#ifdef SFML_DEBUG
+ if (m_count < 0) {
+ sf::err() << "~PoolWrapper : m_count is less than zero! "
+ "You called releasePool from a thread too many times."
+ << std::endl;
+ } else if (m_count > 0) {
+ sf::err() << "~PoolWrapper : m_count is greater than zero! "
+ "You called releasePool from a thread to few times."
+ << std::endl;
+ } else { // m_count == 0
+ sf::err() << "~PoolWrapper is HAPPY!" << std::endl;
+ }
+#endif
+}
+
+
+////////////////////////////////////////////////////////////
+void PoolWrapper::retain()
+{
+ // Increase counter.
+ ++m_count;
+
+ // Allocate pool if required.
+ if (m_pool == 0) {
+ m_pool = [[NSAutoreleasePool alloc] init];
+ }
+
+#ifdef SFML_DEBUG
+ if (m_count <= 0) {
+ sf::err() << "PoolWrapper::retain : m_count <= 0! " << std::endl;
+ }
+#endif
+}
+
+
+////////////////////////////////////////////////////////////
+void PoolWrapper::release()
+{
+ // Decrease counter.
+ --m_count;
+
+ // Drain pool if required.
+ if (m_count == 0) {
+ Drain();
+ }
+
+#ifdef SFML_DEBUG
+ if (m_count < 0) {
+ sf::err() << "PoolWrapper::release : m_count < 0! " << std::endl;
+ }
+#endif
+}
+
+void PoolWrapper::Drain()
+{
+ [m_pool drain];
+ m_pool = 0;
+
+ if (m_count != 0) {
+ m_pool = [[NSAutoreleasePool alloc] init];
+ }
+}
+
+
+} // namespace priv
+
+} // namespace sf
+
+////////////////////////////////////////////////////////////
+// Private data
+////////////////////////////////////////////////////////////
+namespace
+{
+ // This per-thread variable holds the current autorelease pool for each thread
+ sf::ThreadLocalPtr<sf::priv::PoolWrapper> localPool;
+}
+
+
+////////////////////////////////////////////////////////////
+void retainPool(void)
+{
+ // First, Check that we have a valid PoolWrapper object in our local pool.
+ if (localPool == NULL) {
+ localPool = new sf::priv::PoolWrapper();
+ }
+
+ // Then retains!
+ localPool->retain();
+}
+
+
+////////////////////////////////////////////////////////////
+void releasePool(void)
+{
+#ifdef SFML_DEBUG
+ if (localPool == NULL) {
+ sf::err() << "releasePool : You must call retainPool at least once "
+ "in this thread before calling releasePool."
+ << std::endl;
+ } else {
+#endif
+
+ // Releases, that's all.
+ localPool->release();
+
+#ifdef SFML_DEBUG
+ }
+#endif
+}
+
+
+////////////////////////////////////////////////////////////
+void drainPool()
+{
+ if (localPool != NULL) {
+ localPool->Drain();
+ }
+#ifdef SFML_DEBUG
+ else {
+ sf::err() << "releasePool must be called at least one before drainPool"
+ << std::endl;
+ }
+#endif
+}
+
diff --git a/src/SFML/Window/OSX/HIDInputManager.hpp b/src/SFML/Window/OSX/HIDInputManager.hpp
new file mode 100644
index 0000000..e6f7229
--- /dev/null
+++ b/src/SFML/Window/OSX/HIDInputManager.hpp
@@ -0,0 +1,264 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_HIDINPUTMANAGER_HPP
+#define SFML_HIDINPUTMANAGER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+#include <SFML/Window/JoystickImpl.hpp>
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
+#include <Carbon/Carbon.h>
+#include <IOKit/hid/IOHIDManager.h>
+#include <IOKit/hid/IOHIDDevice.h>
+#include <vector>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief This class manage as a singleton instance the
+/// keyboard and mouse states. It's only purpose is
+/// to help sf::priv::InputImpl class.
+///
+////////////////////////////////////////////////////////////
+class HIDInputManager : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the unique instance of the class
+ ///
+ /// \note Private use only
+ ///
+ /// \return Reference to the HIDInputManager instance
+ ///
+ ////////////////////////////////////////////////////////////
+ static HIDInputManager& getInstance();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param key Key to check
+ ///
+ /// \return True if the key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isKeyPressed(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a mouse button is pressed
+ ///
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isMouseButtonPressed(Mouse::Button button);
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the usb location ID of a given device
+ ///
+ /// This location ID is unique and can be used a usb port identifier
+ ///
+ /// \param device HID device to query
+ /// \return the device's location ID or 0 if something went wrong
+ ///
+ ////////////////////////////////////////////////////////////
+ static long getLocationID(IOHIDDeviceRef device);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a mask (dictionary) for an IOHIDManager
+ ///
+ /// \param page HID page
+ /// \param usage HID usage page
+ /// \return a retained CFDictionaryRef
+ ///
+ ////////////////////////////////////////////////////////////
+ static CFDictionaryRef copyDevicesMask(UInt32 page, UInt32 usage);
+
+ ////////////////////////////////////////////////////////////
+ /// Try to convert a character into a SFML key code.
+ ///
+ /// Return sf::Keyboard::Unknown if it doesn't match any 'localized' keys.
+ ///
+ /// By 'localized' I mean keys that depend on the keyboard layout
+ /// and might not be the same as the US keycode in some country
+ /// (e.g. the keys 'Y' and 'Z' are switched on QWERTZ keyboard and
+ /// US keyboard layouts.)
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localizedKeys(UniChar ch);
+
+ ////////////////////////////////////////////////////////////
+ /// Try to convert a virtual keycode into a SFML key code.
+ ///
+ /// Return sf::Keyboard::Unknown if the keycode is unknown.
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key nonLocalizedKeys(UniChar virtualKeycode);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ HIDInputManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~HIDInputManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Initialize the keyboard part of this class
+ ///
+ /// If something went wrong freeUp is called
+ ///
+ ////////////////////////////////////////////////////////////
+ void initializeKeyboard();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Initialize the mouse part of this class
+ ///
+ /// If something went wrong freeUp is called
+ ///
+ ////////////////////////////////////////////////////////////
+ void initializeMouse();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the given keyboard into m_keys
+ ///
+ /// If the given keyboard has no key this function simply
+ /// returns. freeUp is _not_ called because this is not fatal.
+ ///
+ /// \param keyboard Keyboard to load
+ ///
+ ////////////////////////////////////////////////////////////
+ void loadKeyboard(IOHIDDeviceRef keyboard);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the given mouse into m_buttons
+ ///
+ /// If the given mouse has no button this function simply
+ /// returns. freeUp is _not_ called because this is not fatal.
+ ///
+ /// \param mouse Mouse to load
+ ///
+ ////////////////////////////////////////////////////////////
+ void loadMouse(IOHIDDeviceRef mouse);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the given key into m_keys
+ ///
+ /// freeUp is _not_ called by this function.
+ ///
+ /// \param key Key to load
+ ///
+ ////////////////////////////////////////////////////////////
+ void loadKey(IOHIDElementRef key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Load the given button into m_buttons
+ ///
+ /// freeUp is _not_ called by this function.
+ ///
+ /// \param button Button to load
+ ///
+ ////////////////////////////////////////////////////////////
+ void loadButton(IOHIDElementRef button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Release all resources
+ ///
+ /// Close all connections to any devices, if required
+ /// Set m_isValid to false
+ ///
+ ////////////////////////////////////////////////////////////
+ void freeUp();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Filter the devices and return them.
+ ///
+ /// freeUp is _not_ called by this function.
+ ///
+ /// \param page HID page like kHIDPage_GenericDesktop
+ /// \param usage HID usage page like kHIDUsage_GD_Keyboard or kHIDUsage_GD_Mouse
+ /// \return a retained CFSetRef of IOHIDDeviceRef or NULL
+ ///
+ ////////////////////////////////////////////////////////////
+ CFSetRef copyDevices(UInt32 page, UInt32 usage);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a HID key usage to its corresponding virtual code
+ ///
+ /// See IOHIDUsageTables.h
+ ///
+ /// \param usage Any kHIDUsage_Keyboard* usage
+ /// \return the virtual code associate with the given HID key usage
+ /// or 0xff if it is associate with no virtual code
+ ///
+ ////////////////////////////////////////////////////////////
+ static UInt8 usageToVirtualCode(UInt32 usage);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ bool m_isValid; ///< If any error occurs this variable is false
+ CFDataRef m_layoutData; ///< CFData containing the layout
+ UCKeyboardLayout* m_layout; ///< Current Keyboard Layout
+ IOHIDManagerRef m_manager; ///< HID Manager
+
+ typedef std::vector<IOHIDElementRef> IOHIDElements;
+ IOHIDElements m_keys[Keyboard::KeyCount]; ///< All the keys on any connected keyboard
+ IOHIDElements m_buttons[Mouse::ButtonCount];///< All the buttons on any connected mouse
+
+ ////////////////////////////////////////////////////////////
+ /// m_keys' index corresponds to sf::Keyboard::Key enum.
+ /// if no key is assigned with key XYZ then m_keys[XYZ].size() == 0.
+ /// if there are several keyboards connected and several HID keys associate
+ /// with the same sf::Keyboard::Key then m_keys[XYZ] contains all these
+ /// HID keys.
+ ///
+ /// m_buttons works the same way.
+ ///
+ ////////////////////////////////////////////////////////////
+};
+
+} // namespace priv
+
+} // namespace sf
+
+#endif
diff --git a/src/SFML/Window/OSX/HIDInputManager.mm b/src/SFML/Window/OSX/HIDInputManager.mm
new file mode 100644
index 0000000..9f5b2d2
--- /dev/null
+++ b/src/SFML/Window/OSX/HIDInputManager.mm
@@ -0,0 +1,1027 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/HIDInputManager.hpp>
+#include <SFML/System/Err.hpp>
+#include <AppKit/AppKit.h>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+HIDInputManager& HIDInputManager::getInstance()
+{
+ static HIDInputManager instance;
+ return instance;
+}
+
+
+////////////////////////////////////////////////////////////
+bool HIDInputManager::isKeyPressed(Keyboard::Key key)
+{
+ if (!m_isValid) {
+ sf::err() << "HIDInputManager is invalid." << std::endl;
+ return false;
+ }
+
+ // state = true if at least one corresponding HID key is pressed
+ bool state = false;
+
+ for (IOHIDElements::iterator it = m_keys[key].begin(); it != m_keys[key].end(); ++it) {
+
+ IOHIDValueRef value = 0;
+
+ IOHIDDeviceRef device = IOHIDElementGetDevice(*it);
+ IOHIDDeviceGetValue(device, *it, &value);
+
+ if (!value) {
+
+ // This means some kind of error / deconnection so we remove this
+ // element from our keys
+
+ CFRelease(*it);
+ it = m_keys[key].erase(it);
+
+ } else if (IOHIDValueGetIntegerValue(value) == 1) {
+
+ // This means the key is pressed
+ state = true;
+ break; // Stop here
+
+ } else {
+
+ // This means the key is released
+ }
+
+ }
+
+ return state;
+}
+
+////////////////////////////////////////////////////////////
+bool HIDInputManager::isMouseButtonPressed(Mouse::Button button)
+{
+ if (!m_isValid) {
+ sf::err() << "HIDInputManager is invalid." << std::endl;
+ return false;
+ }
+
+ // state = true if at least one corresponding HID button is pressed
+ bool state = false;
+
+ for (IOHIDElements::iterator it = m_buttons[button].begin(); it != m_buttons[button].end(); ++it) {
+
+ IOHIDValueRef value = 0;
+
+ IOHIDDeviceRef device = IOHIDElementGetDevice(*it);
+ IOHIDDeviceGetValue(device, *it, &value);
+
+ if (!value) {
+
+ // This means some kind of error / deconnection so we remove this
+ // element from our buttons
+
+ CFRelease(*it);
+ it = m_buttons[button].erase(it);
+
+ } else if (IOHIDValueGetIntegerValue(value) == 1) {
+
+ // This means the button is pressed
+ state = true;
+ break; // Stop here
+
+ } else {
+
+ // This means the button is released
+ }
+
+ }
+
+ return state;
+}
+
+
+////////////////////////////////////////////////////////////
+long HIDInputManager::getLocationID(IOHIDDeviceRef device)
+{
+ long loc = 0;
+
+ // Get a unique ID : its usb location ID
+ CFTypeRef typeRef = IOHIDDeviceGetProperty(device,
+ CFSTR(kIOHIDLocationIDKey));
+ if (!typeRef || CFGetTypeID(typeRef) != CFNumberGetTypeID()) {
+ return 0;
+ }
+
+ CFNumberRef locRef = (CFNumberRef)typeRef;
+
+ if (!CFNumberGetValue(locRef, kCFNumberLongType, &loc)) {
+ return 0;
+ }
+
+ return loc;
+}
+
+
+////////////////////////////////////////////////////////////
+CFDictionaryRef HIDInputManager::copyDevicesMask(UInt32 page, UInt32 usage)
+{
+ // Create the dictionary.
+ CFMutableDictionaryRef dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 2,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+
+ // Add the page value.
+ CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page);
+ CFDictionarySetValue(dict, CFSTR(kIOHIDDeviceUsagePageKey), value);
+ CFRelease(value);
+
+ // Add the usage value (which is only valid if page value exists).
+ value = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage);
+ CFDictionarySetValue(dict, CFSTR(kIOHIDDeviceUsageKey), value);
+ CFRelease(value);
+
+ return dict;
+}
+
+
+////////////////////////////////////////////////////////////
+HIDInputManager::HIDInputManager()
+: m_isValid(true)
+, m_layoutData(0)
+, m_layout(0)
+, m_manager(0)
+{
+ // Get the current keyboard layout
+ TISInputSourceRef tis = TISCopyCurrentKeyboardLayoutInputSource();
+ m_layoutData = (CFDataRef)TISGetInputSourceProperty(tis,
+ kTISPropertyUnicodeKeyLayoutData);
+
+ if (m_layoutData == 0) {
+ sf::err() << "Cannot get the keyboard layout" << std::endl;
+ freeUp();
+ return;
+ }
+
+ // Keep a reference for ourself
+ CFRetain(m_layoutData);
+ m_layout = (UCKeyboardLayout *)CFDataGetBytePtr(m_layoutData);
+
+ // The TIS is no more needed
+ CFRelease(tis);
+
+ // Create an HID Manager reference
+ m_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
+
+ // Open the HID Manager reference
+ IOReturn openStatus = IOHIDManagerOpen(m_manager, kIOHIDOptionsTypeNone);
+
+ if (openStatus != kIOReturnSuccess) {
+ sf::err() << "Error when opening the HID manager" << std::endl;
+
+ freeUp();
+ return;
+ }
+
+ // Initialize the keyboard
+ initializeKeyboard();
+
+ if (!m_isValid) {
+ return; // Something went wrong
+ }
+
+ // Initialize the mouse
+ initializeMouse();
+
+ if (!m_isValid) {
+ return; // Something went wrong
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+HIDInputManager::~HIDInputManager()
+{
+ freeUp();
+}
+
+
+void HIDInputManager::initializeKeyboard()
+{
+ ////////////////////////////////////////////////////////////
+ // The purpose of this function is to initalize m_keys so we can get
+ // the associate IOHIDElementRef with a sf::Keyboard::Key in ~constant~ time.
+
+ // Get only keyboards
+ CFSetRef keyboards = copyDevices(kHIDPage_GenericDesktop, kHIDUsage_GD_Keyboard);
+ if (keyboards == NULL) {
+ freeUp();
+ return;
+ }
+
+ CFIndex keyboardCount = CFSetGetCount(keyboards); // >= 1 (asserted by copyDevices)
+
+ // Get an iterable array
+ CFTypeRef devicesArray[keyboardCount];
+ CFSetGetValues(keyboards, devicesArray);
+
+ for (CFIndex i = 0; i < keyboardCount; ++i) {
+
+ IOHIDDeviceRef keyboard = (IOHIDDeviceRef)devicesArray[i];
+
+ loadKeyboard(keyboard);
+ }
+
+ // Release unused stuff
+ CFRelease(keyboards);
+
+ ////////////////////////////////////////////////////////////
+ // At this point m_keys is filled with as many IOHIDElementRef as possible
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::initializeMouse()
+{
+ ////////////////////////////////////////////////////////////
+ // The purpose of this function is to initalize m_buttons so we can get
+ // the associate IOHIDElementRef with a sf::Mouse::Button in ~constant~ time.
+
+ // Get only mouses
+ CFSetRef mouses = copyDevices(kHIDPage_GenericDesktop, kHIDUsage_GD_Mouse);
+ if (mouses == NULL) {
+ freeUp();
+ return;
+ }
+
+ CFIndex mouseCount = CFSetGetCount(mouses); // >= 1 (asserted by copyDevices)
+
+ // Get an iterable array
+ CFTypeRef devicesArray[mouseCount];
+ CFSetGetValues(mouses, devicesArray);
+
+ for (CFIndex i = 0; i < mouseCount; ++i) {
+
+ IOHIDDeviceRef mouse = (IOHIDDeviceRef)devicesArray[i];
+
+ loadMouse(mouse);
+ }
+
+ // Release unused stuff
+ CFRelease(mouses);
+
+ ////////////////////////////////////////////////////////////
+ // At this point m_buttons is filled with as many IOHIDElementRef as possible
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::loadKeyboard(IOHIDDeviceRef keyboard)
+{
+ CFArrayRef keys = IOHIDDeviceCopyMatchingElements(keyboard,
+ NULL,
+ kIOHIDOptionsTypeNone);
+ if (keys == NULL) {
+ sf::err() << "We got a keyboard without any keys (1)" << std::endl;
+ return;
+ }
+
+ // How many elements are there ?
+ CFIndex keysCount = CFArrayGetCount(keys);
+
+ if (keysCount == 0) {
+ sf::err() << "We got a keyboard without any keys (2)" << std::endl;
+ CFRelease(keys);
+ return;
+ }
+
+ // Go through all connected elements.
+ for (CFIndex i = 0; i < keysCount; ++i) {
+
+ IOHIDElementRef aKey = (IOHIDElementRef) CFArrayGetValueAtIndex(keys, i);
+
+ // Skip non-matching keys elements
+ if (IOHIDElementGetUsagePage(aKey) != kHIDPage_KeyboardOrKeypad) {
+ continue;
+ }
+
+ loadKey(aKey);
+
+ }
+
+ // Release unused stuff
+ CFRelease(keys);
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::loadMouse(IOHIDDeviceRef mouse)
+{
+ CFArrayRef buttons = IOHIDDeviceCopyMatchingElements(mouse,
+ NULL,
+ kIOHIDOptionsTypeNone);
+ if (buttons == NULL) {
+ sf::err() << "We got a mouse without any buttons (1)" << std::endl;
+ return;
+ }
+
+ // How many elements are there ?
+ CFIndex buttonCount = CFArrayGetCount(buttons);
+
+ if (buttonCount == 0) {
+ sf::err() << "We got a mouse without any buttons (2)" << std::endl;
+ CFRelease(buttons);
+ return;
+ }
+
+ // Go through all connected elements.
+ for (CFIndex i = 0; i < buttonCount; ++i) {
+
+ IOHIDElementRef aButton = (IOHIDElementRef) CFArrayGetValueAtIndex(buttons, i);
+
+ // Skip non-matching keys elements
+ if (IOHIDElementGetUsagePage(aButton) != kHIDPage_Button) {
+ continue;
+ }
+
+ loadButton(aButton);
+ }
+
+ // Release unused stuff
+ CFRelease(buttons);
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::loadKey(IOHIDElementRef key)
+{
+ // Get its virtual code
+ UInt32 usageCode = IOHIDElementGetUsage(key);
+ UInt8 virtualCode = usageToVirtualCode(usageCode);
+
+ if (virtualCode == 0xff) {
+ return; // no corresponding virtual code -> skip
+ }
+
+ // Now translate the virtual code to unicode according to
+ // the current keyboard layout
+
+ UInt32 deadKeyState = 0;
+ // Unicode string length is usually less or equal to 4
+ UniCharCount maxStringLength = 4;
+ UniCharCount actualStringLength = 0;
+ UniChar unicodeString[maxStringLength];
+
+ OSStatus error;
+
+ error = UCKeyTranslate(m_layout, // current layout
+ virtualCode, // our key
+ kUCKeyActionDown, // or kUCKeyActionUp ?
+ 0x100, // no modifiers
+ LMGetKbdType(), // keyboard's type
+ kUCKeyTranslateNoDeadKeysBit,// some sort of option
+ &deadKeyState, // unused stuff
+ maxStringLength, // our memory limit
+ &actualStringLength, // length of what we get
+ unicodeString); // what we get
+
+ if (error == noErr) {
+ // Translation went fine
+
+ // The corresponding SFML key code
+ Keyboard::Key code = Keyboard::Unknown; // KeyCound means 'none'
+
+ // First we look if the key down is from a list of characters
+ // that depend on keyboard localization
+ if (actualStringLength > 0) {
+ code = localizedKeys(unicodeString[0]);
+ }
+
+ // The key is not a localized one so we try to find a
+ // corresponding code through virtual key code
+ if (code == Keyboard::Unknown) {
+ code = nonLocalizedKeys(virtualCode);
+ }
+
+ // A code was found, wonderful!
+ if (code != Keyboard::Unknown) {
+
+ // Ok, everything went fine. Now we have a unique
+ // corresponding sf::Keyboard::Key to one IOHIDElementRef
+
+ m_keys[code].push_back(key);
+
+ // And don't forget to keep the reference alive for our usage
+ CFRetain(m_keys[code].back());
+
+ }
+
+ ////////////////////////////////////////////////////////////
+ // These are known to be unbound :
+ // Supposed Virtual | HID | Supposed Key
+ // ===============================================
+ // 0x1b | 0x2d | Hyphen
+ // 0x39 | 0x39 | CapsLock
+ // 0x47 | 0x53 | NumLock
+ // 0x6e | 0x65 | Application
+ // 0x4c | 0x77 | Select
+
+ //if (code == Keyboard::Unknown) { // The key is unknown.
+ // sf::err() << "This is an unknow key. Virtual key code is 0x"
+ // << std::hex
+ // << (UInt32)virtualCode
+ // << " and HID usage code is 0x"
+ // << usageCode
+ // << std::dec
+ // << "."
+ // << std::endl;
+ //}
+
+ } /* if (error == noErr) */
+ else {
+
+ sf::err() << "Cannot translate the virtual key code, error : "
+ << error
+ << std::endl;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::loadButton(IOHIDElementRef button)
+{
+ // Identify the button
+ UInt32 usage = IOHIDElementGetUsage(button);
+ Mouse::Button dest = Mouse::ButtonCount;
+
+ // Extends kHIDUsage_Button_* enum with :
+#define kHIDUsage_Button_5 0x05
+
+ switch (usage) {
+ case kHIDUsage_Button_1: dest = Mouse::Left; break;
+ case kHIDUsage_Button_2: dest = Mouse::Right; break;
+ case kHIDUsage_Button_3: dest = Mouse::Middle; break;
+ case kHIDUsage_Button_4: dest = Mouse::XButton1; break;
+ case kHIDUsage_Button_5: dest = Mouse::XButton2; break;
+ default: dest = Mouse::ButtonCount; break;
+ }
+
+ if (dest != Mouse::ButtonCount) {
+ // We know what kind of button it is!
+
+ m_buttons[dest].push_back(button);
+
+ // And don't forget to keep the reference alive for our usage
+ CFRetain(m_buttons[dest].back());
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDInputManager::freeUp()
+{
+ m_isValid = false;
+
+ if (m_layoutData != 0) CFRelease(m_layoutData);
+ // Do not release m_layout ! It is owned by m_layoutData.
+ if (m_manager != 0) CFRelease(m_manager);
+
+ for (unsigned int i = 0; i < Keyboard::KeyCount; ++i) {
+ for (IOHIDElements::iterator it = m_keys[i].begin(); it != m_keys[i].end(); ++it) {
+ CFRelease(*it);
+ }
+ m_keys[i].clear();
+ }
+
+ for (unsigned int i = 0; i < Mouse::ButtonCount; ++i) {
+ for (IOHIDElements::iterator it = m_buttons[i].begin(); it != m_buttons[i].end(); ++it) {
+ CFRelease(*it);
+ }
+ m_buttons[i].clear();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+CFSetRef HIDInputManager::copyDevices(UInt32 page, UInt32 usage)
+{
+ // Filter and keep only the requested devices
+ CFDictionaryRef mask = copyDevicesMask(page, usage);
+
+ IOHIDManagerSetDeviceMatching(m_manager, mask);
+
+ CFRelease(mask);
+ mask = 0;
+
+ CFSetRef devices = IOHIDManagerCopyDevices(m_manager);
+ if (devices == NULL) {
+ return NULL;
+ }
+
+ // Is there at least one device ?
+ CFIndex deviceCount = CFSetGetCount(devices);
+ if (deviceCount < 1) {
+ CFRelease(devices);
+ return NULL;
+ }
+
+ return devices;
+}
+
+
+////////////////////////////////////////////////////////////
+UInt8 HIDInputManager::usageToVirtualCode(UInt32 usage)
+{
+ // Some usage key doesn't have any corresponding virtual
+ // code or it was not found (return 0xff).
+ switch (usage) {
+ case kHIDUsage_KeyboardErrorRollOver: return 0xff;
+ case kHIDUsage_KeyboardPOSTFail: return 0xff;
+ case kHIDUsage_KeyboardErrorUndefined: return 0xff;
+
+ case kHIDUsage_KeyboardA: return 0x00;
+ case kHIDUsage_KeyboardB: return 0x0b;
+ case kHIDUsage_KeyboardC: return 0x08;
+ case kHIDUsage_KeyboardD: return 0x02;
+ case kHIDUsage_KeyboardE: return 0x0e;
+ case kHIDUsage_KeyboardF: return 0x03;
+ case kHIDUsage_KeyboardG: return 0x05;
+ case kHIDUsage_KeyboardH: return 0x04;
+ case kHIDUsage_KeyboardI: return 0x22;
+ case kHIDUsage_KeyboardJ: return 0x26;
+ case kHIDUsage_KeyboardK: return 0x28;
+ case kHIDUsage_KeyboardL: return 0x25;
+ case kHIDUsage_KeyboardM: return 0x2e;
+ case kHIDUsage_KeyboardN: return 0x2d;
+ case kHIDUsage_KeyboardO: return 0x1f;
+ case kHIDUsage_KeyboardP: return 0x23;
+ case kHIDUsage_KeyboardQ: return 0x0c;
+ case kHIDUsage_KeyboardR: return 0x0f;
+ case kHIDUsage_KeyboardS: return 0x01;
+ case kHIDUsage_KeyboardT: return 0x11;
+ case kHIDUsage_KeyboardU: return 0x20;
+ case kHIDUsage_KeyboardV: return 0x09;
+ case kHIDUsage_KeyboardW: return 0x0d;
+ case kHIDUsage_KeyboardX: return 0x07;
+ case kHIDUsage_KeyboardY: return 0x10;
+ case kHIDUsage_KeyboardZ: return 0x06;
+
+ case kHIDUsage_Keyboard1: return 0x12;
+ case kHIDUsage_Keyboard2: return 0x13;
+ case kHIDUsage_Keyboard3: return 0x14;
+ case kHIDUsage_Keyboard4: return 0x15;
+ case kHIDUsage_Keyboard5: return 0x17;
+ case kHIDUsage_Keyboard6: return 0x16;
+ case kHIDUsage_Keyboard7: return 0x1a;
+ case kHIDUsage_Keyboard8: return 0x1c;
+ case kHIDUsage_Keyboard9: return 0x19;
+ case kHIDUsage_Keyboard0: return 0x1d;
+
+ case kHIDUsage_KeyboardReturnOrEnter: return 0x24;
+ case kHIDUsage_KeyboardEscape: return 0x35;
+ case kHIDUsage_KeyboardDeleteOrBackspace: return 0x33;
+ case kHIDUsage_KeyboardTab: return 0x30;
+ case kHIDUsage_KeyboardSpacebar: return 0x31;
+ case kHIDUsage_KeyboardHyphen: return 0x1b;
+ case kHIDUsage_KeyboardEqualSign: return 0x18;
+ case kHIDUsage_KeyboardOpenBracket: return 0x21;
+ case kHIDUsage_KeyboardCloseBracket: return 0x1e;
+ case kHIDUsage_KeyboardBackslash: return 0x2a;
+ case kHIDUsage_KeyboardNonUSPound: return 0xff;
+ case kHIDUsage_KeyboardSemicolon: return 0x29;
+ case kHIDUsage_KeyboardQuote: return 0x27;
+ case kHIDUsage_KeyboardGraveAccentAndTilde: return 0x32;
+ case kHIDUsage_KeyboardComma: return 0x2b;
+ case kHIDUsage_KeyboardPeriod: return 0x2F;
+ case kHIDUsage_KeyboardSlash: return 0x2c;
+ case kHIDUsage_KeyboardCapsLock: return 0x39;
+
+ case kHIDUsage_KeyboardF1: return 0x7a;
+ case kHIDUsage_KeyboardF2: return 0x78;
+ case kHIDUsage_KeyboardF3: return 0x63;
+ case kHIDUsage_KeyboardF4: return 0x76;
+ case kHIDUsage_KeyboardF5: return 0x60;
+ case kHIDUsage_KeyboardF6: return 0x61;
+ case kHIDUsage_KeyboardF7: return 0x62;
+ case kHIDUsage_KeyboardF8: return 0x64;
+ case kHIDUsage_KeyboardF9: return 0x65;
+ case kHIDUsage_KeyboardF10: return 0x6d;
+ case kHIDUsage_KeyboardF11: return 0x67;
+ case kHIDUsage_KeyboardF12: return 0x6f;
+
+ case kHIDUsage_KeyboardPrintScreen: return 0xff;
+ case kHIDUsage_KeyboardScrollLock: return 0xff;
+ case kHIDUsage_KeyboardPause: return 0xff;
+ case kHIDUsage_KeyboardInsert: return 0x72;
+ case kHIDUsage_KeyboardHome: return 0x73;
+ case kHIDUsage_KeyboardPageUp: return 0x74;
+ case kHIDUsage_KeyboardDeleteForward: return 0x75;
+ case kHIDUsage_KeyboardEnd: return 0x77;
+ case kHIDUsage_KeyboardPageDown: return 0x79;
+
+ case kHIDUsage_KeyboardRightArrow: return 0x7c;
+ case kHIDUsage_KeyboardLeftArrow: return 0x7b;
+ case kHIDUsage_KeyboardDownArrow: return 0x7d;
+ case kHIDUsage_KeyboardUpArrow: return 0x7e;
+
+ case kHIDUsage_KeypadNumLock: return 0x47;
+ case kHIDUsage_KeypadSlash: return 0x4b;
+ case kHIDUsage_KeypadAsterisk: return 0x43;
+ case kHIDUsage_KeypadHyphen: return 0x4e;
+ case kHIDUsage_KeypadPlus: return 0x45;
+ case kHIDUsage_KeypadEnter: return 0x4c;
+
+ case kHIDUsage_Keypad1: return 0x53;
+ case kHIDUsage_Keypad2: return 0x54;
+ case kHIDUsage_Keypad3: return 0x55;
+ case kHIDUsage_Keypad4: return 0x56;
+ case kHIDUsage_Keypad5: return 0x57;
+ case kHIDUsage_Keypad6: return 0x58;
+ case kHIDUsage_Keypad7: return 0x59;
+ case kHIDUsage_Keypad8: return 0x5b;
+ case kHIDUsage_Keypad9: return 0x5c;
+ case kHIDUsage_Keypad0: return 0x52;
+
+ case kHIDUsage_KeypadPeriod: return 0x41;
+ case kHIDUsage_KeyboardNonUSBackslash: return 0xff;
+ case kHIDUsage_KeyboardApplication: return 0x6e;
+ case kHIDUsage_KeyboardPower: return 0xff;
+ case kHIDUsage_KeypadEqualSign: return 0x51;
+
+ case kHIDUsage_KeyboardF13: return 0x69;
+ case kHIDUsage_KeyboardF14: return 0x6b;
+ case kHIDUsage_KeyboardF15: return 0x71;
+ case kHIDUsage_KeyboardF16: return 0xff;
+ case kHIDUsage_KeyboardF17: return 0xff;
+ case kHIDUsage_KeyboardF18: return 0xff;
+ case kHIDUsage_KeyboardF19: return 0xff;
+ case kHIDUsage_KeyboardF20: return 0xff;
+ case kHIDUsage_KeyboardF21: return 0xff;
+ case kHIDUsage_KeyboardF22: return 0xff;
+ case kHIDUsage_KeyboardF23: return 0xff;
+ case kHIDUsage_KeyboardF24: return 0xff;
+
+ case kHIDUsage_KeyboardExecute: return 0xff;
+ case kHIDUsage_KeyboardHelp: return 0xff;
+ case kHIDUsage_KeyboardMenu: return 0x7F;
+ case kHIDUsage_KeyboardSelect: return 0x4c;
+ case kHIDUsage_KeyboardStop: return 0xff;
+ case kHIDUsage_KeyboardAgain: return 0xff;
+ case kHIDUsage_KeyboardUndo: return 0xff;
+ case kHIDUsage_KeyboardCut: return 0xff;
+ case kHIDUsage_KeyboardCopy: return 0xff;
+ case kHIDUsage_KeyboardPaste: return 0xff;
+ case kHIDUsage_KeyboardFind: return 0xff;
+
+ case kHIDUsage_KeyboardMute: return 0xff;
+ case kHIDUsage_KeyboardVolumeUp: return 0xff;
+ case kHIDUsage_KeyboardVolumeDown: return 0xff;
+
+ case kHIDUsage_KeyboardLockingCapsLock: return 0xff;
+ case kHIDUsage_KeyboardLockingNumLock: return 0xff;
+ case kHIDUsage_KeyboardLockingScrollLock: return 0xff;
+
+ case kHIDUsage_KeypadComma: return 0xff;
+ case kHIDUsage_KeypadEqualSignAS400: return 0xff;
+ case kHIDUsage_KeyboardInternational1: return 0xff;
+ case kHIDUsage_KeyboardInternational2: return 0xff;
+ case kHIDUsage_KeyboardInternational3: return 0xff;
+ case kHIDUsage_KeyboardInternational4: return 0xff;
+ case kHIDUsage_KeyboardInternational5: return 0xff;
+ case kHIDUsage_KeyboardInternational6: return 0xff;
+ case kHIDUsage_KeyboardInternational7: return 0xff;
+ case kHIDUsage_KeyboardInternational8: return 0xff;
+ case kHIDUsage_KeyboardInternational9: return 0xff;
+
+ case kHIDUsage_KeyboardLANG1: return 0xff;
+ case kHIDUsage_KeyboardLANG2: return 0xff;
+ case kHIDUsage_KeyboardLANG3: return 0xff;
+ case kHIDUsage_KeyboardLANG4: return 0xff;
+ case kHIDUsage_KeyboardLANG5: return 0xff;
+ case kHIDUsage_KeyboardLANG6: return 0xff;
+ case kHIDUsage_KeyboardLANG7: return 0xff;
+ case kHIDUsage_KeyboardLANG8: return 0xff;
+ case kHIDUsage_KeyboardLANG9: return 0xff;
+
+ case kHIDUsage_KeyboardAlternateErase: return 0xff;
+ case kHIDUsage_KeyboardSysReqOrAttention: return 0xff;
+ case kHIDUsage_KeyboardCancel: return 0xff;
+ case kHIDUsage_KeyboardClear: return 0xff;
+ case kHIDUsage_KeyboardPrior: return 0xff;
+ case kHIDUsage_KeyboardReturn: return 0xff;
+ case kHIDUsage_KeyboardSeparator: return 0xff;
+ case kHIDUsage_KeyboardOut: return 0xff;
+ case kHIDUsage_KeyboardOper: return 0xff;
+ case kHIDUsage_KeyboardClearOrAgain: return 0xff;
+ case kHIDUsage_KeyboardCrSelOrProps: return 0xff;
+ case kHIDUsage_KeyboardExSel: return 0xff;
+
+ /* 0xa5-0xdf Reserved */
+
+ case kHIDUsage_KeyboardLeftControl: return 0x3b;
+ case kHIDUsage_KeyboardLeftShift: return 0x38;
+ case kHIDUsage_KeyboardLeftAlt: return 0x3a;
+ case kHIDUsage_KeyboardLeftGUI: return 0x37;
+ case kHIDUsage_KeyboardRightControl: return 0x3e;
+ case kHIDUsage_KeyboardRightShift: return 0x3c;
+ case kHIDUsage_KeyboardRightAlt: return 0x3d;
+ case kHIDUsage_KeyboardRightGUI: return 0x36;
+
+ /* 0xe8-0xffff Reserved */
+
+ case kHIDUsage_Keyboard_Reserved: return 0xff;
+ default: return 0xff;
+ }
+}
+
+
+////////////////////////////////////////////////////////
+Keyboard::Key HIDInputManager::localizedKeys(UniChar ch)
+{
+ switch (ch) {
+ case 'a':
+ case 'A': return sf::Keyboard::A;
+
+ case 'b':
+ case 'B': return sf::Keyboard::B;
+
+ case 'c':
+ case 'C': return sf::Keyboard::C;
+
+ case 'd':
+ case 'D': return sf::Keyboard::D;
+
+ case 'e':
+ case 'E': return sf::Keyboard::E;
+
+ case 'f':
+ case 'F': return sf::Keyboard::F;
+
+ case 'g':
+ case 'G': return sf::Keyboard::G;
+
+ case 'h':
+ case 'H': return sf::Keyboard::H;
+
+ case 'i':
+ case 'I': return sf::Keyboard::I;
+
+ case 'j':
+ case 'J': return sf::Keyboard::J;
+
+ case 'k':
+ case 'K': return sf::Keyboard::K;
+
+ case 'l':
+ case 'L': return sf::Keyboard::L;
+
+ case 'm':
+ case 'M': return sf::Keyboard::M;
+
+ case 'n':
+ case 'N': return sf::Keyboard::N;
+
+ case 'o':
+ case 'O': return sf::Keyboard::O;
+
+ case 'p':
+ case 'P': return sf::Keyboard::P;
+
+ case 'q':
+ case 'Q': return sf::Keyboard::Q;
+
+ case 'r':
+ case 'R': return sf::Keyboard::R;
+
+ case 's':
+ case 'S': return sf::Keyboard::S;
+
+ case 't':
+ case 'T': return sf::Keyboard::T;
+
+ case 'u':
+ case 'U': return sf::Keyboard::U;
+
+ case 'v':
+ case 'V': return sf::Keyboard::V;
+
+ case 'w':
+ case 'W': return sf::Keyboard::W;
+
+ case 'x':
+ case 'X': return sf::Keyboard::X;
+
+ case 'y':
+ case 'Y': return sf::Keyboard::Y;
+
+ case 'z':
+ case 'Z': return sf::Keyboard::Z;
+
+ // The key is not 'localized'.
+ default: return sf::Keyboard::Unknown;
+ }
+}
+
+
+////////////////////////////////////////////////////////
+Keyboard::Key HIDInputManager::nonLocalizedKeys(UniChar virtualKeycode)
+{
+ // (Some) 0x code based on http://forums.macrumors.com/showthread.php?t=780577
+ // Some sf::Keyboard::Key are present twice.
+ switch (virtualKeycode) {
+ // These cases should not be used but anyway...
+ case 0x00: return sf::Keyboard::A;
+ case 0x0b: return sf::Keyboard::B;
+ case 0x08: return sf::Keyboard::C;
+ case 0x02: return sf::Keyboard::D;
+ case 0x0e: return sf::Keyboard::E;
+ case 0x03: return sf::Keyboard::F;
+ case 0x05: return sf::Keyboard::G;
+ case 0x04: return sf::Keyboard::H;
+ case 0x22: return sf::Keyboard::I;
+ case 0x26: return sf::Keyboard::J;
+ case 0x28: return sf::Keyboard::K;
+ case 0x25: return sf::Keyboard::L;
+ case 0x2e: return sf::Keyboard::M;
+ case 0x2d: return sf::Keyboard::N;
+ case 0x1f: return sf::Keyboard::O;
+ case 0x23: return sf::Keyboard::P;
+ case 0x0c: return sf::Keyboard::Q;
+ case 0x0f: return sf::Keyboard::R;
+ case 0x01: return sf::Keyboard::S;
+ case 0x11: return sf::Keyboard::T;
+ case 0x20: return sf::Keyboard::U;
+ case 0x09: return sf::Keyboard::V;
+ case 0x0d: return sf::Keyboard::W;
+ case 0x07: return sf::Keyboard::X;
+ case 0x10: return sf::Keyboard::Y;
+ case 0x06: return sf::Keyboard::Z;
+
+ // These cases should not be used but anyway...
+ case 0x1d: return sf::Keyboard::Num0;
+ case 0x12: return sf::Keyboard::Num1;
+ case 0x13: return sf::Keyboard::Num2;
+ case 0x14: return sf::Keyboard::Num3;
+ case 0x15: return sf::Keyboard::Num4;
+ case 0x17: return sf::Keyboard::Num5;
+ case 0x16: return sf::Keyboard::Num6;
+ case 0x1a: return sf::Keyboard::Num7;
+ case 0x1c: return sf::Keyboard::Num8;
+ case 0x19: return sf::Keyboard::Num9;
+
+ case 0x35: return sf::Keyboard::Escape;
+
+ // Modifier keys : never happen with keyDown/keyUp methods (?)
+ case 0x3b: return sf::Keyboard::LControl;
+ case 0x38: return sf::Keyboard::LShift;
+ case 0x3a: return sf::Keyboard::LAlt;
+ case 0x37: return sf::Keyboard::LSystem;
+ case 0x3e: return sf::Keyboard::RControl;
+ case 0x3c: return sf::Keyboard::RShift;
+ case 0x3d: return sf::Keyboard::RAlt;
+ case 0x36: return sf::Keyboard::RSystem;
+
+ case 0x7f: return sf::Keyboard::Menu;
+ case NSMenuFunctionKey: return sf::Keyboard::Menu;
+
+ case 0x21: return sf::Keyboard::LBracket;
+ case 0x1e: return sf::Keyboard::RBracket;
+ case 0x29: return sf::Keyboard::SemiColon;
+ case 0x2b: return sf::Keyboard::Comma;
+ case 0x41: /* keypad */ return sf::Keyboard::Period;
+ case 0x2f: /* keyboard */ return sf::Keyboard::Period;
+ case 0x27: return sf::Keyboard::Quote;
+ case 0x2c: return sf::Keyboard::Slash;
+ case 0x2a: return sf::Keyboard::BackSlash;
+
+#warning sf::Keyboard::Tilde might be in conflict with some other key.
+ // 0x0a is for "Non-US Backslash" according to HID Calibrator,
+ // a sample provided by Apple.
+ case 0x0a: return sf::Keyboard::Tilde;
+
+ case 0x51: /* keypad */ return sf::Keyboard::Equal;
+ case 0x18: /* keyboard */ return sf::Keyboard::Equal;
+ case 0x32: return sf::Keyboard::Dash;
+ case 0x31: return sf::Keyboard::Space;
+ case 0x4c: /* keypad */ return sf::Keyboard::Return;
+ case 0x24: /* keyboard */ return sf::Keyboard::Return;
+ case 0x33: return sf::Keyboard::BackSpace;
+ case 0x30: return sf::Keyboard::Tab;
+
+ // Duplicates (see next Ā§).
+ case 0x74: return sf::Keyboard::PageUp;
+ case 0x79: return sf::Keyboard::PageDown;
+ case 0x77: return sf::Keyboard::End;
+ case 0x73: return sf::Keyboard::Home;
+
+ case NSPageUpFunctionKey: return sf::Keyboard::PageUp;
+ case NSPageDownFunctionKey: return sf::Keyboard::PageDown;
+ case NSEndFunctionKey: return sf::Keyboard::End;
+ case NSHomeFunctionKey: return sf::Keyboard::Home;
+
+ case 0x72: return sf::Keyboard::Insert;
+ case NSInsertFunctionKey: return sf::Keyboard::Insert;
+ case 0x75: return sf::Keyboard::Delete;
+ case NSDeleteFunctionKey: return sf::Keyboard::Delete;
+
+ case 0x45: return sf::Keyboard::Add;
+ case 0x4e: return sf::Keyboard::Subtract;
+ case 0x43: return sf::Keyboard::Multiply;
+ case 0x4b: return sf::Keyboard::Divide;
+
+ // Duplicates (see next Ā§).
+ case 0x7b: return sf::Keyboard::Left;
+ case 0x7c: return sf::Keyboard::Right;
+ case 0x7e: return sf::Keyboard::Up;
+ case 0x7d: return sf::Keyboard::Down;
+
+ case NSLeftArrowFunctionKey: return sf::Keyboard::Left;
+ case NSRightArrowFunctionKey: return sf::Keyboard::Right;
+ case NSUpArrowFunctionKey: return sf::Keyboard::Up;
+ case NSDownArrowFunctionKey: return sf::Keyboard::Down;
+
+ case 0x52: return sf::Keyboard::Numpad0;
+ case 0x53: return sf::Keyboard::Numpad1;
+ case 0x54: return sf::Keyboard::Numpad2;
+ case 0x55: return sf::Keyboard::Numpad3;
+ case 0x56: return sf::Keyboard::Numpad4;
+ case 0x57: return sf::Keyboard::Numpad5;
+ case 0x58: return sf::Keyboard::Numpad6;
+ case 0x59: return sf::Keyboard::Numpad7;
+ case 0x5b: return sf::Keyboard::Numpad8;
+ case 0x5c: return sf::Keyboard::Numpad9;
+
+ // Duplicates (see next Ā§).
+ case 0x7a: return sf::Keyboard::F1;
+ case 0x78: return sf::Keyboard::F2;
+ case 0x63: return sf::Keyboard::F3;
+ case 0x76: return sf::Keyboard::F4;
+ case 0x60: return sf::Keyboard::F5;
+ case 0x61: return sf::Keyboard::F6;
+ case 0x62: return sf::Keyboard::F7;
+ case 0x64: return sf::Keyboard::F8;
+ case 0x65: return sf::Keyboard::F9;
+ case 0x6d: return sf::Keyboard::F10;
+ case 0x67: return sf::Keyboard::F11;
+ case 0x6f: return sf::Keyboard::F12;
+ case 0x69: return sf::Keyboard::F13;
+ case 0x6b: return sf::Keyboard::F14;
+ case 0x71: return sf::Keyboard::F15;
+
+ case NSF1FunctionKey: return sf::Keyboard::F1;
+ case NSF2FunctionKey: return sf::Keyboard::F2;
+ case NSF3FunctionKey: return sf::Keyboard::F3;
+ case NSF4FunctionKey: return sf::Keyboard::F4;
+ case NSF5FunctionKey: return sf::Keyboard::F5;
+ case NSF6FunctionKey: return sf::Keyboard::F6;
+ case NSF7FunctionKey: return sf::Keyboard::F7;
+ case NSF8FunctionKey: return sf::Keyboard::F8;
+ case NSF9FunctionKey: return sf::Keyboard::F9;
+ case NSF10FunctionKey: return sf::Keyboard::F10;
+ case NSF11FunctionKey: return sf::Keyboard::F11;
+ case NSF12FunctionKey: return sf::Keyboard::F12;
+ case NSF13FunctionKey: return sf::Keyboard::F13;
+ case NSF14FunctionKey: return sf::Keyboard::F14;
+ case NSF15FunctionKey: return sf::Keyboard::F15;
+
+ case NSPauseFunctionKey: return sf::Keyboard::Pause;
+
+#warning keycode 0x1b is not bound to any key.
+ // This key is ' on CH-FR, ) on FR and - on US layouts.
+
+ // An unknown key.
+ default: return sf::Keyboard::Unknown;
+ }
+}
+
+
+} // namespace priv
+
+} // namespace sf
+
diff --git a/src/SFML/Window/OSX/HIDJoystickManager.cpp b/src/SFML/Window/OSX/HIDJoystickManager.cpp
new file mode 100644
index 0000000..b2897a6
--- /dev/null
+++ b/src/SFML/Window/OSX/HIDJoystickManager.cpp
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/HIDJoystickManager.hpp>
+#include <SFML/Window/OSX/HIDInputManager.hpp>
+
+////////////////////////////////////////////////////////////
+// Private data
+////////////////////////////////////////////////////////////
+namespace
+{
+ // Using a custom run loop mode solve some issues that appears when SFML
+ // is used with Cocoa.
+ CFStringRef const RunLoopMode = CFSTR("SFML_RUN_LOOP_MODE");
+}
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+HIDJoystickManager& HIDJoystickManager::getInstance()
+{
+ static HIDJoystickManager manager;
+ return manager;
+}
+
+
+////////////////////////////////////////////////////////////
+unsigned int HIDJoystickManager::getJoystickCount()
+{
+ update();
+ return m_joystickCount;
+}
+
+
+////////////////////////////////////////////////////////////
+CFSetRef HIDJoystickManager::copyJoysticks()
+{
+ CFSetRef devices = IOHIDManagerCopyDevices(m_manager);
+ return devices;
+}
+
+
+////////////////////////////////////////////////////////////
+HIDJoystickManager::HIDJoystickManager()
+: m_manager(0)
+, m_joystickCount(0)
+{
+ m_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
+
+ CFDictionaryRef mask0 = HIDInputManager::copyDevicesMask(kHIDPage_GenericDesktop,
+ kHIDUsage_GD_Joystick);
+
+ CFDictionaryRef mask1 = HIDInputManager::copyDevicesMask(kHIDPage_GenericDesktop,
+ kHIDUsage_GD_GamePad);
+
+ CFDictionaryRef maskArray[2];
+ maskArray[0] = mask0;
+ maskArray[1] = mask1;
+
+ CFArrayRef mask = CFArrayCreate(NULL, (const void**)maskArray, 2, NULL);
+
+ IOHIDManagerSetDeviceMatchingMultiple(m_manager, mask);
+ CFRelease(mask);
+ CFRelease(mask1);
+ CFRelease(mask0);
+
+
+ IOHIDManagerRegisterDeviceMatchingCallback(m_manager, pluggedIn, this);
+ IOHIDManagerRegisterDeviceRemovalCallback(m_manager, pluggedOut, this);
+
+ IOHIDManagerScheduleWithRunLoop(m_manager,
+ CFRunLoopGetCurrent(),
+ RunLoopMode);
+
+ IOHIDManagerOpen(m_manager, kIOHIDOptionsTypeNone);
+}
+
+
+////////////////////////////////////////////////////////////
+HIDJoystickManager::~HIDJoystickManager()
+{
+ IOHIDManagerUnscheduleFromRunLoop(m_manager,
+ CFRunLoopGetCurrent(),
+ RunLoopMode);
+
+ IOHIDManagerRegisterDeviceMatchingCallback(m_manager, NULL, 0);
+ IOHIDManagerRegisterDeviceRemovalCallback(m_manager, NULL, 0);
+
+ IOHIDManagerClose(m_manager, kIOHIDOptionsTypeNone);
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDJoystickManager::update()
+{
+ SInt32 status = kCFRunLoopRunHandledSource;
+
+ while (status == kCFRunLoopRunHandledSource) {
+ status = CFRunLoopRunInMode(RunLoopMode, 0, true);
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDJoystickManager::pluggedIn(void * context, IOReturn, void *, IOHIDDeviceRef)
+{
+ HIDJoystickManager* manager = (HIDJoystickManager*)context;
+ manager->m_joystickCount++;
+}
+
+
+////////////////////////////////////////////////////////////
+void HIDJoystickManager::pluggedOut(void * context, IOReturn, void *, IOHIDDeviceRef)
+{
+ HIDJoystickManager* manager = (HIDJoystickManager*)context;
+ manager->m_joystickCount--;
+}
+
+
+} // namespace priv
+
+} // namespace sf
+
diff --git a/include/SFML/System/Win32/Thread.hpp b/src/SFML/Window/OSX/HIDJoystickManager.hpp
index f44dfe1..1577157 100755..100644
--- a/include/SFML/System/Win32/Thread.hpp
+++ b/src/SFML/Window/OSX/HIDJoystickManager.hpp
@@ -1,123 +1,128 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_THREADWIN32_HPP
-#define SFML_THREADWIN32_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/NonCopyable.hpp>
-#include <windows.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Thread defines an easy way to manipulate a thread.
-/// There are two ways to use Thread :
-/// - Inherit from it and override the Run() virtual function
-/// - Construct a Thread instance and pass it a function
-/// pointer to call
-////////////////////////////////////////////////////////////
-class SFML_API Thread : NonCopyable
-{
-public :
-
- typedef void (*FuncType)(void*);
-
- ////////////////////////////////////////////////////////////
- /// Construct the thread from a function pointer
- ///
- /// \param Function : Entry point of the thread
- /// \param UserData : Data to pass to the thread function (NULL by default)
- ///
- ////////////////////////////////////////////////////////////
- Thread(FuncType Function, void* UserData = NULL);
-
- ////////////////////////////////////////////////////////////
- /// Virtual destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~Thread();
-
- ////////////////////////////////////////////////////////////
- /// Create and run the thread
- ///
- ////////////////////////////////////////////////////////////
- void Launch();
-
- ////////////////////////////////////////////////////////////
- /// Wait until the thread finishes
- ///
- ////////////////////////////////////////////////////////////
- void Wait();
-
- ////////////////////////////////////////////////////////////
- /// Terminate the thread
- /// Terminating a thread with this function is not safe,
- /// you should rather try to make the thread function
- /// terminate by itself
- ///
- ////////////////////////////////////////////////////////////
- void Terminate();
-
-protected :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- Thread();
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Function called as the thread entry point
- ///
- ////////////////////////////////////////////////////////////
- virtual void Run();
-
- ////////////////////////////////////////////////////////////
- /// Actual thread entry point, dispatches to instances
- ///
- /// \param UserData : Data to pass to the thread function
- ///
- /// \return Error code
- ///
- ////////////////////////////////////////////////////////////
- static unsigned int __stdcall ThreadFunc(void* UserData);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- HANDLE myHandle; ///< Win32 thread handle
- FuncType myFunction; ///< Function to call as the thread entry point
- void* myUserData; ///< Data to pass to the thread function
-};
-
-} // namespace sf
-
-
-#endif // SFML_THREADWIN32_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_HIDJOYSTICKMANAGER_HPP
+#define SFML_HIDJOYSTICKMANAGER_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/NonCopyable.hpp>
+#include <IOKit/hid/IOHIDManager.h>
+#include <IOKit/hid/IOHIDDevice.h>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief This class manage as a singleton instance the
+/// joysticks. It's only purpose is
+/// to help sf::priv::JoystickImpl class.
+///
+////////////////////////////////////////////////////////////
+class HIDJoystickManager : NonCopyable
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the unique instance of the class
+ ///
+ /// \note Private use only
+ ///
+ /// \return Reference to the HIDJoystickManager instance
+ ///
+ ////////////////////////////////////////////////////////////
+ static HIDJoystickManager& getInstance();
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the number of currently connected joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ unsigned int getJoystickCount();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Copy the devices assosiated with this HID manager
+ ///
+ /// \return a retained CFSetRef of IOHIDDeviceRef or NULL
+ ///
+ ////////////////////////////////////////////////////////////
+ CFSetRef copyJoysticks();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Default constructor
+ ///
+ ////////////////////////////////////////////////////////////
+ HIDJoystickManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~HIDJoystickManager();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Make sur all event have been processed in the run loop
+ ///
+ ////////////////////////////////////////////////////////////
+ void update();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Private "plug-in" callback
+ /// \note Only 'context' parametre is used.
+ /// \see IOHIDDeviceCallback
+ ///
+ ////////////////////////////////////////////////////////////
+ static void pluggedIn(void * context, IOReturn, void *, IOHIDDeviceRef);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Private "plug-out" callback
+ /// \note Only 'context' parametre is used.
+ /// \see IOHIDDeviceCallback
+ ///
+ ////////////////////////////////////////////////////////////
+ static void pluggedOut(void * context, IOReturn, void *, IOHIDDeviceRef);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ IOHIDManagerRef m_manager; ///< HID Manager
+ unsigned int m_joystickCount;///< Number of joysticks currently connected
+};
+
+
+} // namespace priv
+
+} // namespace sf
+
+#endif
diff --git a/src/SFML/Window/OSX/InputImpl.hpp b/src/SFML/Window/OSX/InputImpl.hpp
new file mode 100644
index 0000000..c3700ce
--- /dev/null
+++ b/src/SFML/Window/OSX/InputImpl.hpp
@@ -0,0 +1,124 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_INPUTIMPLOSX_HPP
+#define SFML_INPUTIMPLOSX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Mac OS X implementation of inputs (keyboard + mouse)
+///
+////////////////////////////////////////////////////////////
+class InputImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param key Key to check
+ ///
+ /// \return True if the key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a mouse button is pressed
+ ///
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isMouseButtonPressed(Mouse::Button button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current position of the mouse in desktop coordinates
+ ///
+ /// This function returns the current position of the mouse
+ /// cursor, in global (desktop) coordinates.
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it returns desktop coordinates.
+ ///
+ /// \param relativeTo Reference window
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition(const Window& relativeTo);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the current position of the mouse in desktop coordinates
+ ///
+ /// This function sets the current position of the mouse
+ /// cursor in global (desktop) coordinates.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ /// \param relativeTo Reference window
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position, const Window& relativeTo);
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_INPUTIMPLOSX_HPP
diff --git a/src/SFML/Window/OSX/InputImpl.mm b/src/SFML/Window/OSX/InputImpl.mm
new file mode 100644
index 0000000..37b5faf
--- /dev/null
+++ b/src/SFML/Window/OSX/InputImpl.mm
@@ -0,0 +1,183 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/InputImpl.hpp>
+#include <SFML/Window/VideoMode.hpp>
+#include <SFML/Window/Window.hpp>
+#include <SFML/System/Err.hpp>
+#include <SFML/Window/OSX/HIDInputManager.hpp>
+
+#import <AppKit/AppKit.h>
+#import <SFML/Window/OSX/SFOpenGLView.h>
+
+////////////////////////////////////////////////////////////
+/// In order to keep track of the keyboard's state and mouse buttons' state
+/// we use the HID manager. Mouse position is handled differently.
+///
+/// NB : we probably could use
+/// NSEvent +addGlobalMonitorForEventsMatchingMask:handler: for mouse only.
+///
+////////////////////////////////////////////////////////////
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Extract the dedicated SFOpenGLView from the SFML window
+///
+/// \param window a SFML window
+/// \return nil if something went wrong or a SFOpenGLView*.
+///
+////////////////////////////////////////////////////////////
+SFOpenGLView* getSFOpenGLViewFromSFMLWindow(const Window& window)
+{
+ id nsHandle = (id)window.getSystemHandle();
+
+ // Get our SFOpenGLView from ...
+ SFOpenGLView* view = nil;
+
+ if ([nsHandle isKindOfClass:[NSWindow class]]) {
+ // If system handle is a window then from its content view.
+ view = [nsHandle contentView];
+
+ // Subview doesn't match ?
+ if (![view isKindOfClass:[SFOpenGLView class]]) {
+ sf::err() << "The content view is not a valid SFOpenGLView"
+ << std::endl;
+ view = nil;
+ }
+
+ } else if ([nsHandle isKindOfClass:[NSView class]]) {
+ // If system handle is a view then from a subview of kind SFOpenGLView.
+ NSArray* subviews = [nsHandle subviews];
+ for (NSView* subview in subviews) {
+ if ([subview isKindOfClass:[SFOpenGLView class]]) {
+ view = (SFOpenGLView *)subview;
+ break;
+ }
+ }
+
+ // No matching subview ?
+ if (view == nil) {
+ sf::err() << "Cannot find a valid SFOpenGLView subview." << std::endl;
+
+ }
+
+ } else {
+ if (nsHandle != 0) {
+ sf::err() << "The system handle is neither a <NSWindow*> nor <NSView*>"
+ << "object. This shouldn't happen."
+ << std::endl;
+ } else {
+ // This probably means the SFML window was previously closed.
+ }
+
+ }
+
+ return view;
+}
+
+////////////////////////////////////////////////////////////
+bool InputImpl::isKeyPressed(Keyboard::Key key)
+{
+ return HIDInputManager::getInstance().isKeyPressed(key);
+}
+
+
+////////////////////////////////////////////////////////////
+bool InputImpl::isMouseButtonPressed(Mouse::Button button)
+{
+ return HIDInputManager::getInstance().isMouseButtonPressed(button);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition()
+{
+ // Reverse Y axis to match SFML coord.
+ NSPoint pos = [NSEvent mouseLocation];
+ pos.y = sf::VideoMode::getDesktopMode().height - pos.y;
+
+ return Vector2i(pos.x, pos.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition(const Window& relativeTo)
+{
+ SFOpenGLView* view = getSFOpenGLViewFromSFMLWindow(relativeTo);
+
+ // No view ?
+ if (view == nil) {
+ return Vector2i();
+ }
+
+ // Use -cursorPositionFromEvent: with nil.
+ NSPoint pos = [view cursorPositionFromEvent:nil];
+
+ return Vector2i(pos.x, pos.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position)
+{
+ // Here we don't need to reverse the coordinates.
+ CGPoint pos = CGPointMake(position.x, position.y);
+
+ // Place the cursor.
+ CGEventRef event = CGEventCreateMouseEvent(NULL,
+ kCGEventMouseMoved,
+ pos,
+ /*we don't care about this : */0);
+ CGEventPost(kCGHIDEventTap, event);
+ CFRelease(event);
+ // This is a workaround to deprecated CGSetLocalEventsSuppressionInterval.
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position, const Window& relativeTo)
+{
+ SFOpenGLView* view = getSFOpenGLViewFromSFMLWindow(relativeTo);
+
+ // No view ?
+ if (view == nil) {
+ return;
+ }
+
+ // Let SFOpenGLView compute the position in global coordinate
+ NSPoint p = NSMakePoint(position.x, position.y);
+ p = [view computeGlobalPositionOfRelativePoint:p];
+ setMousePosition(sf::Vector2i(p.x, p.y));
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/OSX/JoystickImpl.cpp b/src/SFML/Window/OSX/JoystickImpl.cpp
new file mode 100644
index 0000000..235ab4d
--- /dev/null
+++ b/src/SFML/Window/OSX/JoystickImpl.cpp
@@ -0,0 +1,402 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/JoystickImpl.hpp>
+#include <SFML/Window/OSX/HIDInputManager.hpp>
+#include <SFML/Window/OSX/HIDJoystickManager.hpp>
+
+
+namespace
+{
+ bool JoystickButtonSortPredicate(IOHIDElementRef b1, IOHIDElementRef b2)
+ {
+ return IOHIDElementGetUsage(b1) < IOHIDElementGetUsage(b2);
+ }
+}
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+JoystickImpl::Location JoystickImpl::m_locationIDs[sf::Joystick::Count] = { 0 };
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::initialize()
+{
+ // Nothing to do
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::cleanup()
+{
+ // Nothing to do
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::isConnected(unsigned int index)
+{
+ bool state = false; // Is the index-th joystick connected ?
+
+ // First, let's check if the device was previously detected :
+
+ if (m_locationIDs[index] != 0) {
+ state = true;
+ }
+
+ // Otherwise, let's check if it is now connected :
+ else { // i.e., m_locationIDs[index] == 0
+
+ // if there is more connected joystick to the HID manager than
+ // opened joystick devices then we find the new one.
+
+ unsigned int openedCount = 0;
+ for (unsigned int i(0); i < sf::Joystick::Count; ++i) {
+ if (m_locationIDs[i] != 0) openedCount++;
+ }
+
+ unsigned int connectedCount = HIDJoystickManager::getInstance().getJoystickCount();
+
+ if (connectedCount > openedCount) {
+
+ // Get all devices
+ CFSetRef devices = HIDJoystickManager::getInstance().copyJoysticks();
+
+ if (devices != NULL) {
+
+ CFIndex size = CFSetGetCount(devices);
+
+ if (size > 0) {
+
+ CFTypeRef array[size]; // array of IOHIDDeviceRef
+ CFSetGetValues(devices, array);
+
+ // If there exists a device d s.t. there is no j s.t.
+ // m_locationIDs[j] == d's location then we have a new device.
+
+ for (CFIndex didx(0); didx < size; ++didx) {
+ IOHIDDeviceRef d = (IOHIDDeviceRef)array[didx];
+ Location dloc = HIDInputManager::getLocationID(d);
+
+ bool foundJ = false;
+ for (unsigned int j(0); j < Joystick::Count; ++j) {
+ if (m_locationIDs[j] == dloc) {
+ foundJ = true;
+ break; // no need to loop again
+ }
+ }
+
+ if (foundJ) {
+ // This is a known device
+ // Nothing else to do
+ } else {
+ // This is a new device
+ // We set it up for Open(..)
+ m_locationIDs[index] = dloc;
+ state = true;
+ break; // We stop looking for a new device
+ }
+ }
+
+ }
+
+ CFRelease(devices);
+ }
+ }
+ }
+
+ return state;
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::open(unsigned int index)
+{
+ m_index = index;
+ Location deviceLoc = m_locationIDs[index]; // The device we need to load
+
+ // Get all devices
+ CFSetRef devices = HIDJoystickManager::getInstance().copyJoysticks();
+ if (devices == NULL) {
+ return false;
+ }
+
+ // Get a usable copy of the joysticks devices.
+ CFIndex joysticksCount = CFSetGetCount(devices);
+ CFTypeRef devicesArray[joysticksCount];
+ CFSetGetValues(devices, devicesArray);
+
+ // Get the desired joystick.
+ IOHIDDeviceRef self = 0;
+ for (CFIndex i(0); i < joysticksCount; ++i) {
+ IOHIDDeviceRef d = (IOHIDDeviceRef)devicesArray[i];
+ if (deviceLoc == HIDInputManager::getLocationID(d)) {
+ self = d;
+ break; // We found it so we stop looping.
+ }
+ }
+
+ if (self == 0) {
+ // This shouldn't happen!
+ CFRelease(devices);
+ return false;
+ }
+
+ // Get a list of all elements attached to the device.
+ CFArrayRef elements = IOHIDDeviceCopyMatchingElements(self,
+ NULL,
+ kIOHIDOptionsTypeNone);
+
+ if (elements == NULL) {
+ CFRelease(devices);
+ return false;
+ }
+
+ // How many elements are there ?
+ CFIndex elementsCount = CFArrayGetCount(elements);
+
+ if (elementsCount == 0) {
+ // What is a joystick with no element ?
+ CFRelease(elements);
+ CFRelease(devices);
+ return false;
+ }
+
+ // Go through all connected elements.
+ for (int i = 0; i < elementsCount; ++i) {
+ IOHIDElementRef element = (IOHIDElementRef) CFArrayGetValueAtIndex(elements, i);
+
+ switch (IOHIDElementGetType(element)) {
+
+ case kIOHIDElementTypeInput_Misc:
+ switch (IOHIDElementGetUsage(element)) {
+
+ case kHIDUsage_GD_X:
+ m_axis[Joystick::X] = element;
+ break;
+
+ case kHIDUsage_GD_Y:
+ m_axis[Joystick::Y] = element;
+ break;
+
+ case kHIDUsage_GD_Z:
+ m_axis[Joystick::Z] = element;
+ break;
+
+ case kHIDUsage_GD_Rx:
+ m_axis[Joystick::U] = element;
+ break;
+
+ case kHIDUsage_GD_Ry:
+ m_axis[Joystick::V] = element;
+ break;
+
+ case kHIDUsage_GD_Rz:
+ m_axis[Joystick::R] = element;
+ break;
+
+ // kHIDUsage_GD_Vx, kHIDUsage_GD_Vy, kHIDUsage_GD_Vz are ignored.
+ }
+ break;
+
+ case kIOHIDElementTypeInput_Button:
+ if (m_buttons.size() < Joystick::ButtonCount) { // If we have free slot...
+ m_buttons.push_back(element); // ...we add this element to the list
+ } else {
+ // Too many buttons. We ignore this one.
+ }
+ break;
+
+ default: // Make compiler happy
+ break;
+ }
+ }
+
+ // Ensure that the buttons will be indexed in the same order as their
+ // HID Usage (assigned by manufacturer and/or a driver).
+ std::sort(m_buttons.begin(), m_buttons.end(), JoystickButtonSortPredicate);
+
+ // Note : Joy::AxisPovX/Y are not supported (yet).
+ // Maybe kIOHIDElementTypeInput_Axis is the corresponding type but I can't test.
+
+ // Retain all these objets for personal use
+ for (ButtonsVector::iterator it(m_buttons.begin()); it != m_buttons.end(); ++it) {
+ CFRetain(*it);
+ }
+ for (AxisMap::iterator it(m_axis.begin()); it != m_axis.end(); ++it) {
+ CFRetain(it->second);
+ }
+
+ // Note : we didn't retain element in the switch because we might have multiple
+ // Axis X (for example) and we want to keep only the last one. So to prevent
+ // leaking we retain objects 'only' now.
+
+ CFRelease(devices);
+ CFRelease(elements);
+
+ return true;
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::close()
+{
+ for (ButtonsVector::iterator it(m_buttons.begin()); it != m_buttons.end(); ++it) {
+ CFRelease(*it);
+ }
+ m_buttons.clear();
+
+ for (AxisMap::iterator it(m_axis.begin()); it != m_axis.end(); ++it) {
+ CFRelease(it->second);
+ }
+ m_axis.clear();
+
+ // And we unregister this joystick
+ m_locationIDs[m_index] = 0;
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickCaps JoystickImpl::getCapabilities() const
+{
+ JoystickCaps caps;
+
+ // Buttons :
+ caps.buttonCount = m_buttons.size();
+
+ // Axis :
+ for (AxisMap::const_iterator it(m_axis.begin()); it != m_axis.end(); ++it) {
+ caps.axes[it->first] = true;
+ }
+
+ return caps;
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickState JoystickImpl::update()
+{
+ static const JoystickState disconnectedState; // return this if joystick was disconnected
+ JoystickState state; // otherwise return that
+ state.connected = true;
+
+ // Note : free up is done in close() which is called, if required,
+ // by the joystick manager. So we don't release buttons nor axes here.
+
+ // First, let's determine if the joystick is still connected
+ Location selfLoc = m_locationIDs[m_index];
+
+ // Get all devices
+ CFSetRef devices = HIDJoystickManager::getInstance().copyJoysticks();
+ if (devices == NULL) {
+ return disconnectedState;
+ }
+
+ // Get a usable copy of the joysticks devices.
+ CFIndex joysticksCount = CFSetGetCount(devices);
+ CFTypeRef devicesArray[joysticksCount];
+ CFSetGetValues(devices, devicesArray);
+
+ // Search for it
+ bool found = false;
+ for (CFIndex i(0); i < joysticksCount; ++i) {
+ IOHIDDeviceRef d = (IOHIDDeviceRef)devicesArray[i];
+ if (selfLoc == HIDInputManager::getLocationID(d)) {
+ found = true;
+ break; // Stop looping
+ }
+ }
+
+ // Release unused stuff
+ CFRelease(devices);
+
+ // Was it found ?
+ if (found) {
+ // Yes, so we can continue.
+ } else {
+ // No, so we stop here
+ return disconnectedState;
+ }
+
+ // Update buttons' state
+ unsigned int i = 0;
+ for (ButtonsVector::iterator it(m_buttons.begin()); it != m_buttons.end(); ++it, ++i) {
+ IOHIDValueRef value = 0;
+ IOHIDDeviceGetValue(IOHIDElementGetDevice(*it), *it, &value);
+
+ // Check for plug out.
+ if (!value) {
+ // No value ? Hum... Seems like the joystick is gone
+ return disconnectedState;
+ }
+
+ // 1 means pressed, others mean released
+ state.buttons[i] = IOHIDValueGetIntegerValue(value) == 1;
+ }
+
+ // Update axes' state
+ for (AxisMap::iterator it = m_axis.begin(); it != m_axis.end(); ++it) {
+ IOHIDValueRef value = 0;
+ IOHIDDeviceGetValue(IOHIDElementGetDevice(it->second), it->second, &value);
+
+ // Check for plug out.
+ if (!value) {
+ // No value ? Hum... Seems like the joystick is gone
+ return disconnectedState;
+ }
+
+ // We want to bind [physicalMin,physicalMax] to [-100=min,100=max].
+ //
+ // General formula to bind [a,b] to [c,d] with a linear progression :
+ //
+ // f : [a, b] -> [c, d]
+ // x |-> (x-a)(d-c)/(b-a)+c
+ //
+ // This method might not be very accurate (the "0 position" can be
+ // slightly shift with some device) but we don't care because most
+ // of devices are so sensitive that this is not relevant.
+ double physicalMax = IOHIDElementGetPhysicalMax(it->second);
+ double physicalMin = IOHIDElementGetPhysicalMin(it->second);
+ double scaledMin = -100;
+ double scaledMax = 100;
+ double physicalValue = IOHIDValueGetScaledValue(value, kIOHIDValueScaleTypePhysical);
+ float scaledValue = ((physicalValue - physicalMin) * (scaledMax - scaledMin) / (physicalMax - physicalMin)) + scaledMin;
+ state.axes[it->first] = scaledValue;
+ }
+
+
+ return state;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/System/Unix/Thread.hpp b/src/SFML/Window/OSX/JoystickImpl.hpp
index b26d38f..fe1a8fa 100755..100644
--- a/include/SFML/System/Unix/Thread.hpp
+++ b/src/SFML/Window/OSX/JoystickImpl.hpp
@@ -1,124 +1,126 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_THREADUNIX_HPP
-#define SFML_THREADUNIX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/System/NonCopyable.hpp>
-#include <pthread.h>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Thread defines a thread.
-/// There is two ways to use Thread :
-/// - Inherit from it and override the Run() virtual function
-/// - Construct a sfThread instance and pass it a function
-/// pointer to call
-////////////////////////////////////////////////////////////
-class SFML_API Thread : NonCopyable
-{
-public :
-
- typedef void (*FuncType)(void*);
-
- ////////////////////////////////////////////////////////////
- /// Construct the thread from a function pointer
- ///
- /// \param Function : Entry point of the thread
- /// \param UserData : Data to pass to the thread function (NULL by default)
- ///
- ////////////////////////////////////////////////////////////
- Thread(FuncType Function, void* UserData = NULL);
-
- ////////////////////////////////////////////////////////////
- /// Virtual destructor
- ///
- ////////////////////////////////////////////////////////////
- virtual ~Thread();
-
- ////////////////////////////////////////////////////////////
- /// Create and run the thread
- ///
- ////////////////////////////////////////////////////////////
- void Launch();
-
- ////////////////////////////////////////////////////////////
- /// Wait until the thread finishes
- ///
- ////////////////////////////////////////////////////////////
- void Wait();
-
- ////////////////////////////////////////////////////////////
- /// Terminate the thread
- /// Terminating a thread with this function is not safe,
- /// you should rather try to make the thread function
- /// terminate by itself
- ///
- ////////////////////////////////////////////////////////////
- void Terminate();
-
-protected :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- ///
- ////////////////////////////////////////////////////////////
- Thread();
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// Function called as the thread entry point
- ///
- ////////////////////////////////////////////////////////////
- virtual void Run();
-
- ////////////////////////////////////////////////////////////
- /// Actual thread entry point, dispatches to instances
- ///
- /// \param UserData : Data to pass to the thread function
- ///
- /// \return Error code
- ///
- ////////////////////////////////////////////////////////////
- static void* ThreadFunc(void* UserData);
-
- ////////////////////////////////////////////////////////////
- // Member data
- ////////////////////////////////////////////////////////////
- pthread_t myThread; ///< Unix thread instance
- bool myIsActive; ///< Thread state (active or inactive)
- FuncType myFunction; ///< Function to call as the thread entry point
- void* myUserData; ///< Data to pass to the thread function
-};
-
-} // namespace sf
-
-
-#endif // SFML_THREADUNIX_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_JOYSTICKIMPLOSX_HPP
+#define SFML_JOYSTICKIMPLOSX_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/JoystickImpl.hpp>
+#include <IOKit/hid/IOHIDDevice.h>
+#include <map>
+#include <vector>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Mac OS X implementation of joysticks
+///
+////////////////////////////////////////////////////////////
+class JoystickImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global initialization of the joystick module
+ ///
+ ////////////////////////////////////////////////////////////
+ static void initialize();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Perform the global cleanup of the joystick module
+ ///
+ ////////////////////////////////////////////////////////////
+ static void cleanup();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a joystick is currently connected
+ ///
+ /// \param index Index of the joystick to check
+ ///
+ /// \return True if the joystick is connected, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isConnected(unsigned int index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Open the joystick
+ ///
+ /// \param index Index assigned to the joystick
+ ///
+ /// \return True on success, false on failure
+ ///
+ ////////////////////////////////////////////////////////////
+ bool open(unsigned int index);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Close the joystick
+ ///
+ ////////////////////////////////////////////////////////////
+ void close();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the joystick capabilities
+ ///
+ /// \return Joystick capabilities
+ ///
+ ////////////////////////////////////////////////////////////
+ JoystickCaps getCapabilities() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Update the joystick and get its new state
+ ///
+ /// \return Joystick state
+ ///
+ ////////////////////////////////////////////////////////////
+ JoystickState update();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ typedef long Location;
+ typedef std::map<sf::Joystick::Axis, IOHIDElementRef> AxisMap;
+ typedef std::vector<IOHIDElementRef> ButtonsVector;
+
+ AxisMap m_axis; ///< Axis (IOHIDElementRef) connected to the joystick
+ ButtonsVector m_buttons; ///< Buttons (IOHIDElementRef) connected to the joystick
+ unsigned int m_index; ///< SFML index
+
+ static Location m_locationIDs[sf::Joystick::Count]; ///< Global Joystick register
+ /// For a corresponding SFML index, m_locationIDs is either some usb
+ /// location or 0 if there isn't currently a connected joystick device
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_JOYSTICKIMPLOSX_HPP
diff --git a/src/SFML/Audio/AudioResource.cpp b/src/SFML/Window/OSX/SFApplication.h
index a1a352c..2abbca2 100755..100644
--- a/src/SFML/Audio/AudioResource.cpp
+++ b/src/SFML/Window/OSX/SFApplication.h
@@ -1,60 +1,55 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Audio/AudioResource.hpp>
-#include <SFML/Audio/AudioDevice.hpp>
-
-
-namespace sf
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
-AudioResource::AudioResource()
-{
- priv::AudioDevice::AddReference();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Copy constructor
-////////////////////////////////////////////////////////////
-AudioResource::AudioResource(const AudioResource&)
-{
- priv::AudioDevice::AddReference();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-AudioResource::~AudioResource()
-{
- priv::AudioDevice::RemoveReference();
-}
-
-} // namespace sf
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <Foundation/Foundation.h>
+#import <AppKit/AppKit.h>
+
+////////////////////////////////////////////////////////////
+/// \brief Event processing
+///
+////////////////////////////////////////////////////////////
+@interface SFApplication : NSApplication
+
+
+////////////////////////////////////////////////////////////
+/// \brief Event processing
+///
+////////////////////////////////////////////////////////////
++(void)processEvent;
+
+
+////////////////////////////////////////////////////////////
+/// \brief Dispatch events
+///
+/// This overload of -[NSApplication sendEvent:] is used to
+/// fix KeyRelease events when the command key is down.
+////////////////////////////////////////////////////////////
+-(void)sendEvent:(NSEvent *)anEvent;
+
+
+@end
diff --git a/src/SFML/Window/OSX/SFApplication.m b/src/SFML/Window/OSX/SFApplication.m
new file mode 100644
index 0000000..a8bd3e4
--- /dev/null
+++ b/src/SFML/Window/OSX/SFApplication.m
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <SFML/Window/OSX/SFApplication.h>
+
+
+////////////////////////////////////////////////////////////
+@implementation SFApplication
+
+
+////////////////////////////////////////////////////////////
++(void)processEvent
+{
+ [SFApplication sharedApplication]; // Make sure NSApp exists
+ NSEvent* event = nil;
+
+ while ((event = [NSApp nextEventMatchingMask:NSAnyEventMask
+ untilDate:[NSDate distantPast]
+ inMode:NSDefaultRunLoopMode
+ dequeue:YES])) // Remove the event from the dequeue
+ {
+ [NSApp sendEvent:event];
+ }
+}
+
+- (void)sendEvent:(NSEvent *)anEvent
+{
+ if ([anEvent type] == NSKeyUp) {
+ [[[self mainWindow] firstResponder] tryToPerform:@selector(keyUp:)
+ with:anEvent];
+ } else {
+ [super sendEvent:anEvent];
+ }
+}
+
+
+@end
+
+
diff --git a/src/SFML/Window/OSX/SFContext.hpp b/src/SFML/Window/OSX/SFContext.hpp
new file mode 100644
index 0000000..dbab403
--- /dev/null
+++ b/src/SFML/Window/OSX/SFContext.hpp
@@ -0,0 +1,161 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_SFCONTEXT_HPP
+#define SFML_SFCONTEXT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/GlContext.hpp>
+
+////////////////////////////////////////////////////////////
+/// Predefine OBJC classes
+////////////////////////////////////////////////////////////
+#ifdef __OBJC__
+
+@class NSOpenGLContext;
+typedef NSOpenGLContext* NSOpenGLContextRef;
+
+@class NSOpenGLView;
+typedef NSOpenGLView* NSOpenGLViewRef;
+
+@class NSWindow;
+typedef NSWindow* NSWindowRef;
+
+#else // If C++
+
+typedef void* NSOpenGLContextRef;
+typedef void* NSOpenGLViewRef;
+typedef void* NSWindowRef;
+
+#endif
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief OSX (Cocoa) implementation of OpenGL contexts
+///
+////////////////////////////////////////////////////////////
+class SFContext : public GlContext
+{
+public:
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context, not associated to a window
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ ///
+ ////////////////////////////////////////////////////////////
+ SFContext(SFContext* shared);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context attached to a window
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param owner Pointer to the owner window
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ ///
+ ////////////////////////////////////////////////////////////
+ SFContext(SFContext* shared, const ContextSettings& settings,
+ const WindowImpl* owner, unsigned int bitsPerPixel);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context that embeds its own rendering target
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param width Back buffer width, in pixels
+ /// \param height Back buffer height, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ SFContext(SFContext* shared, const ContextSettings& settings,
+ unsigned int width, unsigned int height);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~SFContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Display what has been rendered to the context so far
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void display();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param enabled : True to enable v-sync, false to deactivate
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVerticalSyncEnabled(bool enabled);
+
+protected:
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the context as the current target
+ /// for rendering
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool makeCurrent();
+
+private:
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the context
+ /// \note Must only be called from Ctor.
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ /// \param bitsPerPixel bpp
+ /// \param settings Creation parameters
+ ///
+ ////////////////////////////////////////////////////////////
+ void createContext(SFContext* shared,
+ unsigned int bitsPerPixel,
+ const ContextSettings& settings);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ NSOpenGLContextRef m_context; ///< OpenGL context.
+ NSOpenGLViewRef m_view; ///< Only for offscreen context.
+ NSWindowRef m_window; ///< Only for offscreen context.
+};
+
+} // namespace priv
+
+} // namespace sf
+
+#endif // SFML_SFCONTEXT_HPP
diff --git a/src/SFML/Window/OSX/SFContext.mm b/src/SFML/Window/OSX/SFContext.mm
new file mode 100644
index 0000000..876e065
--- /dev/null
+++ b/src/SFML/Window/OSX/SFContext.mm
@@ -0,0 +1,223 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/SFContext.hpp>
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+#include <SFML/System/Err.hpp>
+
+#import <SFML/Window/OSX/AutoreleasePoolWrapper.h>
+
+namespace sf
+{
+namespace priv
+{
+
+
+////////////////////////////////////////////////////////////
+SFContext::SFContext(SFContext* shared)
+: m_view(0), m_window(0)
+{
+ // Ask for a pool.
+ retainPool();
+
+ // Create the context
+ createContext(shared,
+ VideoMode::getDesktopMode().bitsPerPixel,
+ ContextSettings(0, 0, 0));
+}
+
+
+////////////////////////////////////////////////////////////
+SFContext::SFContext(SFContext* shared, const ContextSettings& settings,
+ const WindowImpl* owner, unsigned int bitsPerPixel)
+: m_view(0), m_window(0)
+{
+ // Ask for a pool.
+ retainPool();
+
+ // Create the context.
+ createContext(shared, bitsPerPixel, settings);
+
+ // Apply context.
+ WindowImplCocoa const * ownerCocoa = static_cast<WindowImplCocoa const *>(owner);
+ ownerCocoa->applyContext(m_context);
+}
+
+
+////////////////////////////////////////////////////////////
+SFContext::SFContext(SFContext* shared, const ContextSettings& settings,
+ unsigned int width, unsigned int height)
+: m_view(0), m_window(0)
+{
+ // Ensure the process is setup in order to create a valid window.
+ WindowImplCocoa::setUpProcess();
+
+ // Ask for a pool.
+ retainPool();
+
+ // Create the context.
+ createContext(shared, VideoMode::getDesktopMode().bitsPerPixel, settings);
+
+ // Create a dummy window/view pair (hidden) and asign it our context.
+ m_window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, width, height)
+ styleMask:NSBorderlessWindowMask
+ backing:NSBackingStoreBuffered
+ defer:NO]; // Don't defer it!
+ m_view = [[NSOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, width, height)];
+ [m_window setContentView:m_view];
+ [m_view setOpenGLContext:m_context];
+ [m_context setView:m_view];
+}
+
+
+////////////////////////////////////////////////////////////
+SFContext::~SFContext()
+{
+ [m_context clearDrawable];
+ [m_context release];
+
+ [m_view release]; // Might be nil but we don't care.
+ [m_window release]; // Idem.
+
+ releasePool();
+}
+
+
+////////////////////////////////////////////////////////////
+bool SFContext::makeCurrent()
+{
+ [m_context makeCurrentContext];
+ return m_context == [NSOpenGLContext currentContext]; // Should be true.
+}
+
+
+////////////////////////////////////////////////////////////
+void SFContext::display()
+{
+ [m_context flushBuffer];
+}
+
+
+////////////////////////////////////////////////////////////
+void SFContext::setVerticalSyncEnabled(bool enabled)
+{
+ // Make compiler happy
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+ typedef int GLint;
+#endif
+
+ GLint swapInterval = enabled ? 1 : 0;
+
+ [m_context setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
+}
+
+
+////////////////////////////////////////////////////////////
+void SFContext::createContext(SFContext* shared,
+ unsigned int bitsPerPixel,
+ const ContextSettings& settings)
+{
+ // Choose the attributs of OGL context.
+ std::vector<NSOpenGLPixelFormatAttribute> attrs;
+ attrs.reserve(20); // max attributs (estimation).
+
+ // These casts are safe. C++ is much more strict than Obj-C.
+
+ attrs.push_back(NSOpenGLPFAClosestPolicy);
+ attrs.push_back(NSOpenGLPFADoubleBuffer);
+
+ if (bitsPerPixel > 24) {
+ attrs.push_back(NSOpenGLPFAAlphaSize);
+ attrs.push_back((NSOpenGLPixelFormatAttribute)8);
+ }
+
+ attrs.push_back(NSOpenGLPFADepthSize);
+ attrs.push_back((NSOpenGLPixelFormatAttribute)settings.depthBits);
+
+ attrs.push_back(NSOpenGLPFAStencilSize);
+ attrs.push_back((NSOpenGLPixelFormatAttribute)settings.stencilBits);
+
+ if (settings.antialiasingLevel > 0) {
+ /*
+ * Antialiasing techniques are described in the
+ * "OpenGL Programming Guide for Mac OS X" document.
+ *
+ * According to this document, the specification currently allows
+ * only one multisample buffer.
+ *
+ * The document also states that software renderers should be avoided
+ * because antialisaing techniques are very slow with them.
+ */
+
+ // Prefer multisampling over supersampling
+ attrs.push_back(NSOpenGLPFAMultisample);
+
+ // Only one buffer is currently available
+ attrs.push_back(NSOpenGLPFASampleBuffers);
+ attrs.push_back((NSOpenGLPixelFormatAttribute)1);
+
+ // Antialiasing level
+ attrs.push_back(NSOpenGLPFASamples);
+ attrs.push_back((NSOpenGLPixelFormatAttribute)settings.antialiasingLevel);
+
+ // No software renderer - only hardware renderer
+ attrs.push_back(NSOpenGLPFAAccelerated);
+ }
+
+ attrs.push_back((NSOpenGLPixelFormatAttribute)0); // end of array
+
+ // Create the pixel pormat.
+ NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:&attrs[0]];
+
+ if (pixFmt == nil) {
+ sf::err() << "Error. Unable to find a suitable pixel format." << std::endl;
+ return;
+ }
+
+ // Use the shared context if one is given.
+ NSOpenGLContext* sharedContext = shared != NULL ? shared->m_context : nil;
+
+ // Create the context.
+ m_context = [[NSOpenGLContext alloc] initWithFormat:pixFmt
+ shareContext:sharedContext];
+
+ if (m_context == nil) {
+ sf::err() << "Error. Unable to create the context." << std::endl;
+ }
+
+ // Free up.
+ [pixFmt release];
+
+ // Save the settings. (OpenGL version is updated elsewhere.)
+ m_settings = settings;
+}
+
+} // namespace priv
+
+} // namespace sf
+
diff --git a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h
new file mode 100644
index 0000000..2020673
--- /dev/null
+++ b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <AppKit/AppKit.h>
+
+namespace sf {
+ namespace priv {
+ class WindowImplCocoa;
+ }
+}
+
+////////////////////////////////////////////////////////////
+/// Keyboard Modifiers Helper
+///
+/// Handle left & right modifiers (cmd, ctrl, alt, shift)
+/// events and send them back to the requester.
+///
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////
+/// Set up a SFML key event based on the given modifiers
+/// flags and key code.
+///
+////////////////////////////////////////////////////////////
+sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key);
+
+
+////////////////////////////////////////////////////////////
+/// Handle the state of modifiers keys and send key
+/// release & pressed events to the requester.
+///
+////////////////////////////////////////////////////////////
+void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& requester);
+
+
diff --git a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm
new file mode 100644
index 0000000..d023079
--- /dev/null
+++ b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm
@@ -0,0 +1,247 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+
+#import <SFML/Window/OSX/SFKeyboardModifiersHelper.h>
+
+
+////////////////////////////////////////////////////////////
+/// Here are define the mask value for the 'modifiers'
+/// keys (cmd, ctrl, alt, shift)
+///
+////////////////////////////////////////////////////////////
+#define NSRightShiftKeyMask 0x020004
+#define NSLeftShiftKeyMask 0x020002
+#define NSRightCommandKeyMask 0x100010
+#define NSLeftCommandKeyMask 0x100008
+#define NSRightAlternateKeyMask 0x080040
+#define NSLeftAlternateKeyMask 0x080020
+#define NSRightControlKeyMask 0x042000
+#define NSLeftControlKeyMask 0x040001
+
+
+////////////////////////////////////////////////////////////
+// Local Data Structures
+////////////////////////////////////////////////////////////
+
+/// Modifiers states
+struct ModifiersState
+{
+ BOOL rightShiftWasDown;
+ BOOL leftShiftWasDown;
+ BOOL rightCommandWasDown;
+ BOOL leftCommandWasDown;
+ BOOL rightAlternateWasDown;
+ BOOL leftAlternateWasDown;
+ BOOL leftControlWasDown;
+ BOOL rightControlWasDown;
+};
+
+
+////////////////////////////////////////////////////////////
+// Global Variables
+////////////////////////////////////////////////////////////
+
+/// Share 'modifiers' state with all windows to correctly fire pressed/released events
+static ModifiersState state;
+static BOOL isStateInitialized = NO;
+
+
+////////////////////////////////////////////////////////////
+// Local & Private Functions
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+/// Carefully observe if the key mask is on in the modifiers
+///
+////////////////////////////////////////////////////////////
+BOOL isKeyMaskActive(NSUInteger modifiers, NSUInteger mask);
+
+
+////////////////////////////////////////////////////////
+/// Init the global state only if needed
+///
+////////////////////////////////////////////////////////////
+void ensureModifiersStateIsInitilized();
+
+
+////////////////////////////////////////////////////////////
+/// Handle one modifier key mask, update the key state and
+/// send events to the requester
+///
+////////////////////////////////////////////////////////////
+void processOneModifier(NSUInteger modifiers, NSUInteger mask,
+ BOOL& wasDown, sf::Keyboard::Key key,
+ sf::priv::WindowImplCocoa& requester);
+
+
+////////////////////////////////////////////////////////////
+/// Handle left & right modifier keys, update the keys state and
+/// send events to the requester
+///
+////////////////////////////////////////////////////////////
+void processLeftRightModifiers(NSUInteger modifiers,
+ NSUInteger leftMask, NSUInteger rightMask,
+ BOOL& leftWasDown, BOOL& rightWasDown,
+ sf::Keyboard::Key leftKey, sf::Keyboard::Key rightKey,
+ sf::priv::WindowImplCocoa& requester);
+
+
+
+////////////////////////////////////////////////////////////
+// Implementations
+////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////
+sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key)
+{
+ sf::Event::KeyEvent event;
+ event.code = key;
+ event.alt = modifiers & NSAlternateKeyMask;
+ event.control = modifiers & NSControlKeyMask;
+ event.shift = modifiers & NSShiftKeyMask;
+ event.system = modifiers & NSCommandKeyMask;
+
+ return event;
+}
+
+
+////////////////////////////////////////////////////////
+void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& requester)
+{
+ // Handle shift
+ processLeftRightModifiers(
+ modifiers,
+ NSLeftShiftKeyMask, NSRightShiftKeyMask,
+ state.leftShiftWasDown, state.rightShiftWasDown,
+ sf::Keyboard::LShift, sf::Keyboard::RShift,
+ requester
+ );
+
+ // Handle command
+ processLeftRightModifiers(
+ modifiers,
+ NSLeftCommandKeyMask, NSRightCommandKeyMask,
+ state.leftCommandWasDown, state.rightCommandWasDown,
+ sf::Keyboard::LSystem, sf::Keyboard::RSystem,
+ requester
+ );
+
+ // Handle option (alt)
+ processLeftRightModifiers(
+ modifiers,
+ NSLeftAlternateKeyMask, NSRightAlternateKeyMask,
+ state.leftAlternateWasDown, state.rightAlternateWasDown,
+ sf::Keyboard::LAlt, sf::Keyboard::RAlt,
+ requester
+ );
+
+ // Handle control
+ processLeftRightModifiers(
+ modifiers,
+ NSLeftControlKeyMask, NSRightControlKeyMask,
+ state.leftControlWasDown, state.rightControlWasDown,
+ sf::Keyboard::LControl, sf::Keyboard::RControl,
+ requester
+ );
+}
+
+
+////////////////////////////////////////////////////////
+BOOL isKeyMaskActive(NSUInteger modifiers, NSUInteger mask)
+{
+ // Here we need to make sure it's exactly the mask since some masks
+ // share some bits such that the & operation would result in a non zero
+ // value without corresponding to the processed key.
+ return (modifiers & mask) == mask;
+}
+
+
+////////////////////////////////////////////////////////
+void ensureModifiersStateIsInitilized()
+{
+ if (isStateInitialized) return;
+
+ NSUInteger modifiers = [[NSApp currentEvent] modifierFlags];
+
+ // Load current keyboard state
+ state.leftShiftWasDown = isKeyMaskActive(modifiers, NSLeftShiftKeyMask);
+ state.rightShiftWasDown = isKeyMaskActive(modifiers, NSRightShiftKeyMask);
+ state.leftCommandWasDown = isKeyMaskActive(modifiers, NSLeftCommandKeyMask);
+ state.rightCommandWasDown = isKeyMaskActive(modifiers, NSRightCommandKeyMask);
+ state.leftAlternateWasDown = isKeyMaskActive(modifiers, NSLeftAlternateKeyMask);
+ state.rightAlternateWasDown = isKeyMaskActive(modifiers, NSRightAlternateKeyMask);
+ state.leftControlWasDown = isKeyMaskActive(modifiers, NSLeftControlKeyMask);
+ state.rightControlWasDown = isKeyMaskActive(modifiers, NSRightControlKeyMask);
+
+ isStateInitialized = YES;
+}
+
+
+////////////////////////////////////////////////////////
+void processOneModifier(NSUInteger modifiers, NSUInteger mask,
+ BOOL& wasDown, sf::Keyboard::Key key,
+ sf::priv::WindowImplCocoa& requester)
+{
+ ensureModifiersStateIsInitilized();
+
+ // Setup a potential event key.
+ sf::Event::KeyEvent event = keyEventWithModifiers(modifiers, key);
+
+ // State
+ BOOL isDown = isKeyMaskActive(modifiers, mask);
+
+ // Check for key pressed event
+ if (isDown && !wasDown) {
+ requester.keyDown(event);
+ }
+ // And check for key released event
+ else if (!isDown && wasDown) {
+ requester.keyUp(event);
+ }
+ // else isDown == wasDown, so no change
+
+ // Update state
+ wasDown = isDown;
+}
+
+
+////////////////////////////////////////////////////////
+void processLeftRightModifiers(NSUInteger modifiers,
+ NSUInteger leftMask, NSUInteger rightMask,
+ BOOL& leftWasDown, BOOL& rightWasDown,
+ sf::Keyboard::Key leftKey, sf::Keyboard::Key rightKey,
+ sf::priv::WindowImplCocoa& requester)
+{
+ processOneModifier(modifiers, leftMask, leftWasDown, leftKey, requester);
+ processOneModifier(modifiers, rightMask, rightWasDown, rightKey, requester);
+}
+
+
diff --git a/src/SFML/Window/OSX/SFOpenGLView.h b/src/SFML/Window/OSX/SFOpenGLView.h
new file mode 100644
index 0000000..50373cd
--- /dev/null
+++ b/src/SFML/Window/OSX/SFOpenGLView.h
@@ -0,0 +1,120 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <AppKit/AppKit.h>
+
+namespace sf {
+ namespace priv {
+ class WindowImplCocoa;
+ }
+}
+
+@class SFSilentResponder;
+
+////////////////////////////////////////////////////////////
+/// \brief Specialized NSOpenGLView
+///
+/// Handle event and send them back to the requester.
+///
+/// NSTrackingArea is used to keep track of mouse events. We also
+/// need to be able to ignore mouse event when exiting fullscreen.
+/// The SFWindowController should call -[SFOpenGLView exitFullscreen]
+/// and -[SFOpenGLView enterFullscreen] when appropriate.
+///
+/// In order to send correct mouse coordonate to the requester when
+/// the window is in fullscreen we use m_realSize to represent the
+/// back buffer size (see SFWindowController). If 'm_realSize' is
+/// bound to its default value we don't recompute the mouse position
+/// and assume it's correct.
+///
+/// Modifiers keys (cmd, ctrl, alt, shift) are handled by this class
+/// but the actual logic is done in SFKeyboardModifiersHelper.(h|mm).
+///
+////////////////////////////////////////////////////////////
+@interface SFOpenGLView : NSOpenGLView {
+ sf::priv::WindowImplCocoa* m_requester;
+ BOOL m_useKeyRepeat;
+ BOOL m_mouseIsIn;
+ NSTrackingArea* m_trackingArea;
+ NSSize m_realSize;
+
+ // Hidden text view used to convert key event to actual chars.
+ // We use a silent responder to prevent sound alerts.
+ SFSilentResponder* m_silentResponder;
+ NSTextView* m_hiddenTextView;
+}
+
+////////////////////////////////////////////////////////////
+/// Create the SFML opengl view to fit the given area.
+///
+////////////////////////////////////////////////////////////
+-(id)initWithFrame:(NSRect)frameRect;
+
+////////////////////////////////////////////////////////////
+/// Handle going in and out of fullscreen mode.
+///
+////////////////////////////////////////////////////////////
+-(void)enterFullscreen;
+-(void)exitFullscreen;
+
+////////////////////////////////////////////////////////////
+/// Apply the given resquester to the view.
+///
+////////////////////////////////////////////////////////////
+-(void)setRequesterTo:(sf::priv::WindowImplCocoa *)requester;
+
+////////////////////////////////////////////////////////////
+/// Set the real size of view (it should be the back buffer size).
+/// If not set, or set to its default value NSZeroSize, the view
+/// won't recompute the mouse coordinates before sending them
+/// to the requester.
+///
+////////////////////////////////////////////////////////////
+-(void)setRealSize:(NSSize)newSize;
+
+////////////////////////////////////////////////////////////
+/// Compute the position in global coordinate
+/// of the given point in SFML coordinate.
+///
+////////////////////////////////////////////////////////////
+-(NSPoint)computeGlobalPositionOfRelativePoint:(NSPoint)point;
+
+////////////////////////////////////////////////////////////
+/// Adjust key repeat configuration.
+///
+////////////////////////////////////////////////////////////
+-(void)enableKeyRepeat;
+-(void)disableKeyRepeat;
+
+////////////////////////////////////////////////////////////
+/// Compute the position of the cursor.
+///
+////////////////////////////////////////////////////////////
+-(NSPoint)cursorPositionFromEvent:(NSEvent *)eventOrNil;
+
+@end
diff --git a/src/SFML/Window/OSX/SFOpenGLView.mm b/src/SFML/Window/OSX/SFOpenGLView.mm
new file mode 100644
index 0000000..b787e48
--- /dev/null
+++ b/src/SFML/Window/OSX/SFOpenGLView.mm
@@ -0,0 +1,695 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+#include <SFML/Window/OSX/HIDInputManager.hpp> // For localizedKeys and nonLocalizedKeys
+#include <SFML/System/Err.hpp>
+
+#import <SFML/Window/OSX/SFOpenGLView.h>
+#import <SFML/Window/OSX/SFSilentResponder.h>
+#import <SFML/Window/OSX/SFKeyboardModifiersHelper.h>
+
+
+////////////////////////////////////////////////////////////
+/// Returns true if `event` represents a representable character.
+///
+/// The event is assumed to be a key down event.
+/// False is returned if the event is either escape or a non text unicode.
+///
+////////////////////////////////////////////////////////////
+BOOL isValidTextUnicode(NSEvent* event);
+
+
+////////////////////////////////////////////////////////////
+/// SFOpenGLView class : Privates Methods Declaration
+///
+////////////////////////////////////////////////////////////
+@interface SFOpenGLView ()
+
+////////////////////////////////////////////////////////////
+/// Handle view resized event.
+///
+////////////////////////////////////////////////////////////
+-(void)frameDidChange:(NSNotification *)notification;
+
+////////////////////////////////////////////////////////////
+/// Establish if the mouse is inside or outside the OpenGL view.
+///
+////////////////////////////////////////////////////////////
+-(BOOL)isMouseInside;
+
+////////////////////////////////////////////////////////////
+/// Update the mouse state (in or out) and fire an event
+/// if its state has changed.
+///
+////////////////////////////////////////////////////////////
+-(void)updateMouseState;
+
+////////////////////////////////////////////////////////////
+/// Convert the NSEvent mouse button type to SFML type.
+///
+/// Returns ButtonCount if the button is unknown
+///
+////////////////////////////////////////////////////////////
+-(sf::Mouse::Button)mouseButtonFromEvent:(NSEvent *)event;
+
+////////////////////////////////////////////////////////////
+/// Convert a key down/up NSEvent into an SFML key event.
+/// Based on localizedKeys and nonLocalizedKeys function.
+///
+/// Return sf::Keyboard::Unknown as Code if the key is unknown.
+///
+////////////////////////////////////////////////////////////
++(sf::Event::KeyEvent)convertNSKeyEventToSFMLEvent:(NSEvent *)anEvent;
+
+@end
+
+@implementation SFOpenGLView
+
+#pragma mark
+#pragma mark SFOpenGLView's methods
+
+////////////////////////////////////////////////////////
+-(id)initWithFrame:(NSRect)frameRect
+{
+ if ((self = [super initWithFrame:frameRect])) {
+ [self setRequesterTo:0];
+ [self enableKeyRepeat];
+ m_realSize = NSZeroSize;
+
+ // Register for mouse move event
+ m_mouseIsIn = [self isMouseInside];
+ NSUInteger opts = (NSTrackingActiveAlways | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingEnabledDuringMouseDrag);
+ m_trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
+ options:opts
+ owner:self
+ userInfo:nil];
+ [self addTrackingArea:m_trackingArea];
+
+ // Register for resize event
+ NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
+ [center addObserver:self
+ selector:@selector(frameDidChange:)
+ name:NSViewFrameDidChangeNotification
+ object:self];
+
+ // Create a hidden text view for parsing key down event properly
+ m_silentResponder = [[SFSilentResponder alloc] init];
+ m_hiddenTextView = [[NSTextView alloc] initWithFrame:NSZeroRect];
+ [m_hiddenTextView setNextResponder:m_silentResponder];
+ }
+
+ return self;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)enterFullscreen
+{
+ // Remove the tracking area first,
+ // just to be sure we don't add it twice!
+ [self removeTrackingArea:m_trackingArea];
+ [self addTrackingArea:m_trackingArea];
+
+ // Fire an mouse entered event if needed
+ if (!m_mouseIsIn && m_requester != 0) {
+ m_requester->mouseMovedIn();
+ }
+
+ // Update status
+ m_mouseIsIn = YES;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)exitFullscreen
+{
+ [self removeTrackingArea:m_trackingArea];
+
+ // Fire an mouse left event if needed
+ if (m_mouseIsIn && m_requester != 0) {
+ m_requester->mouseMovedOut();
+ }
+
+ // Update status
+ m_mouseIsIn = NO;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)setRequesterTo:(sf::priv::WindowImplCocoa *)requester
+{
+ m_requester = requester;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)setRealSize:(NSSize)newSize
+{
+ m_realSize = newSize;
+}
+
+
+////////////////////////////////////////////////////////
+-(NSPoint)computeGlobalPositionOfRelativePoint:(NSPoint)point
+{
+ // Recompute the mouse pos if required.
+ if (!NSEqualSizes(m_realSize, NSZeroSize)) {
+ point.x = point.x / m_realSize.width * [self frame].size.width;
+ point.y = point.y / m_realSize.height * [self frame].size.height;
+ }
+
+ // Note : -[NSWindow convertBaseToScreen:] is deprecated on 10.7
+ // but the recommended -[NSWindow convertRectToScreen] is not
+ // available until 10.7.
+ //
+ // So we stick with the old one for now.
+
+
+ // Flip SFML coordinates to match window coordinates
+ point.y = [self frame].size.height - point.y;
+
+ // Get the position of (x, y) in the coordinate system of the window.
+ point = [self convertPoint:point toView:self];
+ point = [self convertPoint:point toView:nil]; // nil means window
+
+ // Convert it to screen coordinates
+ point = [[self window] convertBaseToScreen:point];
+
+ // Flip screen coodinates to match CGDisplayMoveCursorToPoint referential.
+ float const screenHeight = [[[self window] screen] frame].size.height;
+ point.y = screenHeight - point.y;
+
+ return point;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)enableKeyRepeat
+{
+ m_useKeyRepeat = YES;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)disableKeyRepeat
+{
+ m_useKeyRepeat = NO;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)frameDidChange:(NSNotification *)notification
+{
+ // Update mouse internal state.
+ [self updateMouseState];
+
+ // Update the OGL view to fit the new size.
+ [self update];
+
+ // Send an event
+ if (m_requester == 0) return;
+
+ // The new size
+ NSSize newSize = [self frame].size;
+ m_requester->windowResized(newSize.width, newSize.height);
+}
+
+
+////////////////////////////////////////////////////////
+-(BOOL)isMouseInside
+{
+ NSPoint relativeToWindow = [[self window] mouseLocationOutsideOfEventStream];
+ NSPoint relativeToView = [self convertPoint:relativeToWindow fromView:nil];
+
+ if (NSPointInRect(relativeToView, [self frame])) {
+ return YES;
+ }
+
+ return NO;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)updateMouseState
+{
+ BOOL mouseWasIn = m_mouseIsIn;
+ m_mouseIsIn = [self isMouseInside];
+
+ // Send event if needed.
+ if (mouseWasIn && !m_mouseIsIn) {
+ [self mouseExited:nil];
+ } else if (!mouseWasIn && m_mouseIsIn) {
+ [self mouseEntered:nil];
+ }
+}
+
+
+#pragma mark
+#pragma mark Subclassing methods
+
+
+////////////////////////////////////////////////////////
+-(void)dealloc
+{
+ // Unregister
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [self removeTrackingArea:m_trackingArea];
+
+ // Release attributes
+ [m_hiddenTextView release];
+ [m_silentResponder release];
+ [m_trackingArea release];
+
+ [self setRequesterTo:0];
+
+ [super dealloc];
+}
+
+
+////////////////////////////////////////////////////////
+-(BOOL)acceptsFirstResponder
+{
+ // Accepts key event.
+ return YES;
+}
+
+
+////////////////////////////////////////////////////////
+-(BOOL)canBecomeKeyView
+{
+ // Accepts key event.
+ return YES;
+}
+
+
+#pragma mark
+#pragma mark Mouse-event methods
+
+
+////////////////////////////////////////////////////////
+-(void)mouseDown:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseDown:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] mouseDown:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)mouseUp:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseUp:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] mouseUp:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)mouseMoved:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseDragged:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] mouseMoved:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)scrollWheel:(NSEvent *)theEvent
+{
+ if (m_requester != 0) {
+ NSPoint loc = [self cursorPositionFromEvent:theEvent];
+
+ m_requester->mouseWheelScrolledAt([theEvent deltaY], loc.x, loc.y);
+ }
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] scrollWheel:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)mouseEntered:(NSEvent *)theEvent
+{
+ // There are two cases when we need to fire an event:
+ // a) the event is nil, meaning that the method was
+ // called from our code (e.g. updateMouseState)
+ // b) the mouse was outside the view.
+ BOOL shouldFire = (theEvent == nil || m_mouseIsIn == NO);
+
+ // Update status
+ m_mouseIsIn = YES;
+
+ if (m_requester == 0) return;
+
+ // Fire (or not) an event
+ if (shouldFire) {
+ m_requester->mouseMovedIn();
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)mouseExited:(NSEvent *)theEvent
+{
+ // Similarly to mouseEntered:
+ BOOL shouldFire = (theEvent == nil || m_mouseIsIn == YES);
+
+ // Update status
+ m_mouseIsIn = NO;
+
+ if (m_requester == 0) return;
+
+ // Fire (or not) an event
+ if (shouldFire) {
+ m_requester->mouseMovedOut();
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)rightMouseDown:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseDown:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] rightMouseDown:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)rightMouseUp:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseUp:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] rightMouseUp:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)otherMouseDown:(NSEvent *)theEvent
+{
+ sf::Mouse::Button button = [self mouseButtonFromEvent:theEvent];
+
+ if (m_requester != 0) {
+ NSPoint loc = [self cursorPositionFromEvent:theEvent];
+
+ if (button != sf::Mouse::ButtonCount) {
+ m_requester->mouseDownAt(button, loc.x, loc.y);
+ }
+ }
+
+ // If the event is not forwarded by mouseDown or rightMouseDown...
+ if (button != sf::Mouse::Left && button != sf::Mouse::Right) {
+ // ... transmit to non-SFML responder
+ [[self nextResponder] otherMouseDown:theEvent];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)otherMouseUp:(NSEvent *)theEvent
+{
+ sf::Mouse::Button button = [self mouseButtonFromEvent:theEvent];
+
+ if (m_requester != 0) {
+ NSPoint loc = [self cursorPositionFromEvent:theEvent];
+
+ if (button != sf::Mouse::ButtonCount) {
+ m_requester->mouseUpAt(button, loc.x, loc.y);
+ }
+ }
+
+ // If the event is not forwarded by mouseUp or rightMouseUp...
+ if (button != sf::Mouse::Left && button != sf::Mouse::Right) {
+ // ... transmit to non-SFML responder
+ [[self nextResponder] otherMouseUp:theEvent];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)rightMouseDragged:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseDragged:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] rightMouseDragged:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)mouseDragged:(NSEvent *)theEvent
+{
+ // Forward to...
+ [self otherMouseDragged:theEvent];
+
+ // Transmit to non-SFML responder
+ [[self nextResponder] mouseDragged:theEvent];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)otherMouseDragged:(NSEvent *)theEvent
+{
+ if (m_requester != 0) {
+ NSPoint loc = [self cursorPositionFromEvent:theEvent];
+
+ // Make sure the point is inside the view.
+ // (mouseEntered: and mouseExited: are not immediately called
+ // when the mouse is dragged. That would be too easy!)
+ [self updateMouseState];
+ if (m_mouseIsIn) {
+ m_requester->mouseMovedAt(loc.x, loc.y);
+ }
+ }
+
+ // If the event is not forwarded by mouseDragged or rightMouseDragged...
+ sf::Mouse::Button button = [self mouseButtonFromEvent:theEvent];
+ if (button != sf::Mouse::Left && button != sf::Mouse::Right) {
+ // ... transmit to non-SFML responder
+ [[self nextResponder] otherMouseUp:theEvent];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(NSPoint)cursorPositionFromEvent:(NSEvent *)eventOrNil
+{
+ NSPoint loc;
+ // If no event given then get current mouse pos.
+ if (eventOrNil == nil) {
+ NSPoint rawPos = [[self window] mouseLocationOutsideOfEventStream];
+ loc = [self convertPoint:rawPos fromView:nil];
+ } else {
+ loc = [self convertPoint:[eventOrNil locationInWindow] fromView:nil];
+ }
+
+ // Don't forget to change to SFML coord system.
+ float h = [self frame].size.height;
+ loc.y = h - loc.y;
+
+ // Recompute the mouse pos if required.
+ if (!NSEqualSizes(m_realSize, NSZeroSize)) {
+ loc.x = loc.x * m_realSize.width / [self frame].size.width;
+ loc.y = loc.y * m_realSize.height / [self frame].size.height;
+ }
+
+ return loc;
+}
+
+
+////////////////////////////////////////////////////////
+-(sf::Mouse::Button)mouseButtonFromEvent:(NSEvent *)event
+{
+ switch ([event buttonNumber]) {
+ case 0: return sf::Mouse::Left;
+ case 1: return sf::Mouse::Right;
+ case 2: return sf::Mouse::Middle;
+ case 3: return sf::Mouse::XButton1;
+ case 4: return sf::Mouse::XButton2;
+ default: return sf::Mouse::ButtonCount; // Never happens! (hopefully)
+ }
+}
+
+
+#pragma mark
+#pragma mark Key-event methods
+
+
+////////////////////////////////////////////////////////
+-(void)keyDown:(NSEvent *)theEvent
+{
+ // Transmit to non-SFML responder
+ [[self nextResponder] keyDown:theEvent];
+
+ if (m_requester == 0) return;
+
+ // Handle key down event
+ if (m_useKeyRepeat || ![theEvent isARepeat]) {
+ sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
+
+ if (key.code != sf::Keyboard::Unknown) { // The key is recognized.
+ m_requester->keyDown(key);
+ }
+ }
+
+
+ // Handle text entred event:
+ // Ignore event if we don't want repeated keystrokes
+ if (m_useKeyRepeat || ![theEvent isARepeat]) {
+ // Ignore escape key and other non text keycode (See NSEvent.h)
+ // because they produce a sound alert.
+ if (isValidTextUnicode(theEvent)) {
+ // Send the event to the hidden text view for processing
+ [m_hiddenTextView interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
+ }
+
+ // Carefully handle backspace and delete..
+ // Note: the event is intentionally sent to the hidden view
+ // even if we do something more specific below. This way
+ // key combination are correctly interpreted.
+
+ unsigned short keycode = [theEvent keyCode];
+
+ // Backspace
+ if (keycode == 0x33) {
+ // Send the correct unicode value (i.e. 8) instead of 127 (which is 'delete')
+ m_requester->textEntered(8);
+ }
+
+ // Delete
+ else if (keycode == 0x75 || keycode == NSDeleteFunctionKey) {
+ // Instead of the value 63272 we send 127.
+ m_requester->textEntered(127);
+ }
+
+ // Otherwise, let's see what our hidden field has computed
+ else {
+ NSString* string = [m_hiddenTextView string];
+
+ // Send each character to SFML event requester
+ for (NSUInteger index = 0; index < [string length]; ++index) {
+ m_requester->textEntered([string characterAtIndex:index]);
+ }
+
+ // Empty our hidden cache
+ [m_hiddenTextView setString:@""];
+ }
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)keyUp:(NSEvent *)theEvent
+{
+ // Transmit to non-SFML responder
+ [[self nextResponder] keyUp:theEvent];
+
+ if (m_requester == 0) return;
+
+ sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
+
+ if (key.code != sf::Keyboard::Unknown) { // The key is recognized.
+ m_requester->keyUp(key);
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)flagsChanged:(NSEvent *)theEvent
+{
+ // Transmit to non-SFML responder
+ [[self nextResponder] flagsChanged:theEvent];
+
+ if (m_requester == 0) return;
+
+ NSUInteger modifiers = [theEvent modifierFlags];
+ handleModifiersChanged(modifiers, *m_requester);
+}
+
+
+////////////////////////////////////////////////////////
++(sf::Event::KeyEvent)convertNSKeyEventToSFMLEvent:(NSEvent *)anEvent
+{
+ // Key code
+ sf::Keyboard::Key key = sf::Keyboard::Unknown;
+
+ // First we look if the key down is from a list of characters
+ // that depend on keyboard localization.
+ NSString* string = [anEvent charactersIgnoringModifiers];
+ if ([string length] > 0) {
+ key = sf::priv::HIDInputManager::localizedKeys([string characterAtIndex:0]);
+ }
+
+ // If the key is not a localized one, we try to find a corresponding code
+ // through virtual key code.
+ if (key == sf::Keyboard::Unknown) {
+ key = sf::priv::HIDInputManager::nonLocalizedKeys([anEvent keyCode]);
+ }
+
+//#ifdef SFML_DEBUG // Don't bother the final customers with annoying messages.
+// if (key.code == sf::Keyboard::Unknown) { // The key is unknown.
+// sf::err() << "This is an unknow key. Virtual key code is 0x"
+// << std::hex
+// << [anEvent keyCode]
+// << "."
+// << std::endl;
+// }
+//#endif
+
+ return keyEventWithModifiers([anEvent modifierFlags], key);
+}
+
+@end
+
+
+#pragma mark - C-like functions
+
+BOOL isValidTextUnicode(NSEvent* event)
+{
+ if ([event keyCode] == 0x35) { // Escape
+ return false;
+ } else if ([[event characters] length] > 0) {
+ unichar code = [[event characters] characterAtIndex:0];
+ return code < 0xF700 || code > 0xF8FF;
+ } else {
+ return true;
+ }
+}
+
diff --git a/src/SFML/Window/OSX/SFSilentResponder.h b/src/SFML/Window/OSX/SFSilentResponder.h
new file mode 100644
index 0000000..0890c92
--- /dev/null
+++ b/src/SFML/Window/OSX/SFSilentResponder.h
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <AppKit/AppKit.h>
+
+////////////////////////////////////////////////////////////
+/// \brief Silent Responder used to prevent sound alert with key event
+///
+/// Mainly used by SFOpenGLView and its hidden text view.
+////////////////////////////////////////////////////////////
+@interface SFSilentResponder : NSResponder
+
+-(void)doCommandBySelector:(SEL)sel;
+
+@end
+
diff --git a/src/SFML/Window/OSX/SFSilentResponder.m b/src/SFML/Window/OSX/SFSilentResponder.m
new file mode 100644
index 0000000..0fb49f6
--- /dev/null
+++ b/src/SFML/Window/OSX/SFSilentResponder.m
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <SFML/Window/OSX/SFSilentResponder.h>
+
+@implementation SFSilentResponder
+
+-(void)doCommandBySelector:(SEL)sel
+{
+ // Just do nothing, to prevent sound alerts
+}
+
+@end
+
diff --git a/src/SFML/Window/OSX/SFViewController.h b/src/SFML/Window/OSX/SFViewController.h
new file mode 100644
index 0000000..1a75327
--- /dev/null
+++ b/src/SFML/Window/OSX/SFViewController.h
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <SFML/Window/OSX/WindowImplDelegateProtocol.h>
+
+////////////////////////////////////////////////////////////
+/// Predefine some classes
+////////////////////////////////////////////////////////////
+@class SFOpenGLView;
+
+////////////////////////////////////////////////////////////
+/// Implementation of WindowImplDelegateProtocol for view managment.
+///
+////////////////////////////////////////////////////////////
+
+@interface SFViewController : NSObject <WindowImplDelegateProtocol> {
+ NSView* m_view;
+ SFOpenGLView* m_oglView;
+ sf::priv::WindowImplCocoa* m_requester;
+}
+
+-(id)initWithView:(NSView *)view;
+
+@end
diff --git a/src/SFML/Window/OSX/SFViewController.mm b/src/SFML/Window/OSX/SFViewController.mm
new file mode 100644
index 0000000..d9cc4c7
--- /dev/null
+++ b/src/SFML/Window/OSX/SFViewController.mm
@@ -0,0 +1,241 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <SFML/Window/OSX/SFViewController.h>
+#import <SFML/Window/OSX/SFOpenGLView.h>
+#import <SFML/Window/OSX/SFApplication.h>
+#include <SFML/System/Err.hpp>
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+
+@implementation SFViewController
+
+
+////////////////////////////////////////////////////////
+-(id)initWithView:(NSView *)view
+{
+ if ((self = [super init])) {
+ m_requester = 0;
+
+ // Retain the view for our own use.
+ m_view = [view retain];
+
+ if (m_view == nil) {
+
+ sf::err()
+ << "No view was given to initWithWindow:."
+ << std::endl;
+
+ return self;
+ }
+
+ // Create the view.
+ NSRect frame = [m_view frame];
+ frame.origin.x = 0;
+ frame.origin.y = 0;
+ m_oglView = [[SFOpenGLView alloc] initWithFrame:frame];
+
+ if (m_oglView == nil) {
+
+ sf::err()
+ << "Could not create an instance of NSOpenGLView "
+ << "in (SFViewController -initWithView:)."
+ << std::endl;
+
+ return self;
+ }
+
+ // Set the (OGL) view to the view as its "content" view.
+ [m_view addSubview:m_oglView];
+
+ [m_oglView setAutoresizingMask:[m_view autoresizingMask]];
+ }
+
+ return self;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)dealloc
+{
+ [self closeWindow];
+
+ [m_view release];
+ [m_oglView release];
+
+ [super dealloc];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)setRequesterTo:(sf::priv::WindowImplCocoa *)requester
+{
+ // Forward to the view.
+ [m_oglView setRequesterTo:requester];
+ m_requester = requester;
+}
+
+
+////////////////////////////////////////////////////////
+-(sf::WindowHandle)getSystemHandle
+{
+ return m_view;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)hideMouseCursor
+{
+ [NSCursor hide];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)showMouseCursor
+{
+ [NSCursor unhide];
+}
+
+
+////////////////////////////////////////////////////////////
+-(NSPoint)position
+{
+ // Origin is bottom-left corner of the window
+ return [m_view convertPoint:NSMakePoint(0, 0) toView:nil]; // nil means window
+}
+
+
+////////////////////////////////////////////////////////.
+-(void)setWindowPositionToX:(int)x Y:(int)y
+{
+ sf::err() << "Cannot move SFML area when SFML is integrated in a NSView. Use the view hanlder directly instead." << std::endl;
+}
+
+
+////////////////////////////////////////////////////////////
+-(NSSize)size
+{
+ return [m_oglView frame].size;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)resizeTo:(unsigned int)width by:(unsigned int)height
+{
+ NSRect frame = NSMakeRect([m_view frame].origin.x,
+ [m_view frame].origin.y,
+ width,
+ height);
+
+ [m_view setFrame:frame];
+ [m_oglView setFrame:frame];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)changeTitle:(NSString *)title
+{
+ sf::err() << "Cannot change the title of the SFML area when SFML is integrated in a NSView." << std::endl;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)hideWindow
+{
+ [m_view setHidden:YES];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)showWindow
+{
+ [m_view setHidden:NO];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)closeWindow
+{
+ sf::err() << "Cannot close SFML area when SFML is integrated in a NSView." << std::endl;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)enableKeyRepeat
+{
+ [m_oglView enableKeyRepeat];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)disableKeyRepeat
+{
+ [m_oglView disableKeyRepeat];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)setIconTo:(unsigned int)width
+ by:(unsigned int)height
+ with:(sf::Uint8 const *)pixels
+{
+ sf::err() << "Cannot set an icon when SFML is integrated in a NSView." << std::endl;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)processEvent
+{
+ // If we are not on the main thread we stop here and advice the user.
+ if ([NSThread currentThread] != [NSThread mainThread]) {
+ /*
+ * See http://lists.apple.com/archives/cocoa-dev/2011/Feb/msg00460.html
+ * for more information.
+ */
+ sf::err()
+ << "Cannot fetch event from a worker thread. (OS X restriction)"
+ << std::endl;
+
+ return;
+ }
+
+ // If we don't have a requester we don't fetch event.
+ if (m_requester != 0) {
+ [SFApplication processEvent];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)applyContext:(NSOpenGLContext *)context
+{
+ [m_oglView setOpenGLContext:context];
+ [context setView:m_oglView];
+}
+
+
+@end
diff --git a/src/SFML/Window/OSX/SFWindow.h b/src/SFML/Window/OSX/SFWindow.h
new file mode 100644
index 0000000..ad823a8
--- /dev/null
+++ b/src/SFML/Window/OSX/SFWindow.h
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <AppKit/AppKit.h>
+
+////////////////////////////////////////////////////////////
+/// \brief Here we redefine some methods to allow grabing fullscreen events.
+///
+////////////////////////////////////////////////////////////
+@interface SFWindow : NSWindow {
+
+}
+
+////////////////////////////////////////////////////////////
+/// These two methods must return YES to grab fullscreen events.
+/// See http://stackoverflow.com/questions/999464/fullscreen-key-down-actions
+/// for more informations
+///
+////////////////////////////////////////////////////////////
+-(BOOL)acceptsFirstResponder;
+-(BOOL)canBecomeKeyWindow;
+
+@end
diff --git a/src/SFML/Window/OSX/SFWindow.m b/src/SFML/Window/OSX/SFWindow.m
new file mode 100644
index 0000000..5f5de20
--- /dev/null
+++ b/src/SFML/Window/OSX/SFWindow.m
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import "SFWindow.h"
+
+
+@implementation SFWindow
+
+////////////////////////////////////////////////////////
+-(BOOL)acceptsFirstResponder
+{
+ return YES;
+}
+
+
+////////////////////////////////////////////////////////
+-(BOOL)canBecomeKeyWindow
+{
+ return YES;
+}
+
+////////////////////////////////////////////////////////
+-(void)keyDown:(NSEvent *)theEvent
+{
+ // Do nothing except preventing a system alert each time a key is pressed
+ //
+ // Special Consideration :
+ // -----------------------
+ // Consider overriding NSResponder -keyDown: message in a Cocoa view/window
+ // that contains a SFML rendering area. Doing so will prevent a system
+ // alert to be thrown everytime the user presses a key.
+}
+
+@end
diff --git a/src/SFML/Window/OSX/SFWindowController.h b/src/SFML/Window/OSX/SFWindowController.h
new file mode 100644
index 0000000..e96ba95
--- /dev/null
+++ b/src/SFML/Window/OSX/SFWindowController.h
@@ -0,0 +1,79 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#import <SFML/Window/OSX/WindowImplDelegateProtocol.h>
+#include <SFML/Window/VideoMode.hpp>
+
+////////////////////////////////////////////////////////////
+/// Predefine some classes
+////////////////////////////////////////////////////////////
+namespace sf {
+ namespace priv {
+ class WindowImplCocoa;
+ }
+}
+
+@class SFOpenGLView;
+
+////////////////////////////////////////////////////////////
+/// Implementation of WindowImplDelegateProtocol for window managment.
+///
+/// Key and mouse events are delegated to its view.
+/// Window events are managed by this class.
+///
+/// Used when SFML handle everything and when a NSWindow* is given
+/// as handle to WindowImpl.
+///
+/// m_fullscreenMode is bind to default video mode if we don't need to change screen size.
+///
+////////////////////////////////////////////////////////////
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 // NSWindowDelegate is only define since 10.6
+@interface SFWindowController : NSResponder <WindowImplDelegateProtocol> {
+#else
+@interface SFWindowController : NSResponder <WindowImplDelegateProtocol, NSWindowDelegate> {
+#endif
+ NSWindow* m_window;
+ SFOpenGLView* m_oglView;
+ sf::priv::WindowImplCocoa* m_requester;
+ sf::VideoMode* m_fullscreenMode; // Note : C++ ctor/dtor are not called for Obj-C fields.
+}
+
+////////////////////////////////////////////////////////////
+/// Create the SFML window with an external Cocoa window.
+///
+////////////////////////////////////////////////////////////
+-(id)initWithWindow:(NSWindow *)window;
+
+////////////////////////////////////////////////////////////
+/// Create the SFML window "from scratch" (full SFML handling).
+///
+////////////////////////////////////////////////////////////
+-(id)initWithMode:(sf::VideoMode const &)mode andStyle:(unsigned long)style;
+
+@end
diff --git a/src/SFML/Window/OSX/SFWindowController.mm b/src/SFML/Window/OSX/SFWindowController.mm
new file mode 100644
index 0000000..4f68c13
--- /dev/null
+++ b/src/SFML/Window/OSX/SFWindowController.mm
@@ -0,0 +1,546 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+#include <SFML/Window/VideoMode.hpp>
+#include <SFML/Window/WindowHandle.hpp>
+#include <SFML/Window/WindowStyle.hpp>
+#include <SFML/System/Err.hpp>
+#include <ApplicationServices/ApplicationServices.h>
+
+#import <SFML/Window/OSX/SFWindowController.h>
+#import <SFML/Window/OSX/SFApplication.h>
+#import <SFML/Window/OSX/SFOpenGLView.h>
+#import <SFML/Window/OSX/SFWindow.h>
+#import <OpenGL/OpenGL.h>
+
+////////////////////////////////////////////////////////////
+/// SFWindowController class : Privates Methods Declaration
+///
+////////////////////////////////////////////////////////////
+@interface SFWindowController ()
+
+////////////////////////////////////////////////////////////
+/// Retrieves the screen height.
+///
+////////////////////////////////////////////////////////////
+-(float)screenHeight;
+
+////////////////////////////////////////////////////////////
+/// Retrives the title bar height.
+///
+////////////////////////////////////////////////////////////
+-(float)titlebarHeight;
+
+@end
+
+@implementation SFWindowController
+
+#pragma mark
+#pragma mark SFWindowController's methods
+
+////////////////////////////////////////////////////////
+-(id)initWithWindow:(NSWindow *)window
+{
+ if ((self = [super init])) {
+ m_requester = 0;
+ m_fullscreenMode = new sf::VideoMode();
+
+ // Retain the window for our own use.
+ m_window = [window retain];
+
+ if (m_window == nil) {
+
+ sf::err()
+ << "No window was given to initWithWindow:."
+ << std::endl;
+
+ return self;
+ }
+
+ // Create the view.
+ m_oglView = [[SFOpenGLView alloc] initWithFrame:[[m_window contentView] frame]];
+
+ if (m_oglView == nil) {
+
+ sf::err()
+ << "Could not create an instance of NSOpenGLView "
+ << "in (SFWindowController -initWithWindow:)."
+ << std::endl;
+
+ return self;
+ }
+
+ // Set the view to the window as its content view.
+ [m_window setContentView:m_oglView];
+ }
+
+ return self;
+}
+
+
+////////////////////////////////////////////////////////
+-(id)initWithMode:(sf::VideoMode const &)mode andStyle:(unsigned long)style
+{
+ // If we are not on the main thread we stop here and advice the user.
+ if ([NSThread currentThread] != [NSThread mainThread]) {
+ /*
+ * See http://lists.apple.com/archives/cocoa-dev/2011/Feb/msg00460.html
+ * for more information.
+ */
+ sf::err()
+ << "Cannot create a window from a worker thread. (OS X limitation)"
+ << std::endl;
+
+ return nil;
+ }
+
+ if ((self = [super init])) {
+ m_requester = 0;
+ m_fullscreenMode = new sf::VideoMode();
+
+ // Create our window size.
+ NSRect rect = NSZeroRect;
+ if (style & sf::Style::Fullscreen && mode != sf::VideoMode::getDesktopMode()) {
+ // We use desktop mode to size the window
+ // but we set the back buffer size to 'mode' in applyContext method.
+
+ *m_fullscreenMode = mode;
+
+ sf::VideoMode dm = sf::VideoMode::getDesktopMode();
+ rect = NSMakeRect(0, 0, dm.width, dm.height);
+
+ } else { // no fullscreen requested.
+ rect = NSMakeRect(0, 0, mode.width, mode.height);
+ }
+
+ // Convert the SFML window style to Cocoa window style.
+ unsigned int nsStyle = NSBorderlessWindowMask;
+ if (!(style & sf::Style::Fullscreen)) { // if fullscrean we keep our NSBorderlessWindowMask.
+
+ if (style & sf::Style::Titlebar) nsStyle |= NSTitledWindowMask | NSMiniaturizableWindowMask;
+
+ if (style & sf::Style::Resize) nsStyle |= NSResizableWindowMask;
+
+ if (style & sf::Style::Close) nsStyle |= NSClosableWindowMask;
+
+ }
+
+ // Create the window.
+ m_window = [[SFWindow alloc] initWithContentRect:rect
+ styleMask:nsStyle
+ backing:NSBackingStoreBuffered
+ defer:NO]; // Don't defer it!
+ /*
+ "YES" produces some "invalid drawable".
+ See http://www.cocoabuilder.com/archive/cocoa/152482-nsviews-and-nsopenglcontext-invalid-drawable-error.html
+
+ [...]
+ As best as I can figure, this is happening because the NSWindow (and
+ hence my view) are not visible onscreen yet, and the system doesn't like that.
+ [...]
+ */
+
+ if (m_window == nil) {
+ sf::err()
+ << "Could not create an instance of NSWindow "
+ << "in (SFWindowController -initWithMode:andStyle:)."
+ << std::endl;
+
+ return self;
+ }
+
+ // Apply special feature for fullscreen window.
+ if (style & sf::Style::Fullscreen) {
+ // We place the window above everything else.
+ [m_window setOpaque:YES];
+ [m_window setHidesOnDeactivate:YES];
+ [m_window setLevel:NSMainMenuWindowLevel+1];
+
+ // And hide the menu bar
+ [NSMenu setMenuBarVisible:NO];
+
+ /* ---------------------------
+ * | Note for future version |
+ * ---------------------------
+ *
+ * starting with OS 10.6 NSView provides
+ * a new method -enterFullScreenMode:withOptions:
+ * which could be a good alternative.
+ */
+ }
+
+ // Center the window to be cool =)
+ [m_window center];
+
+ // Create the view.
+ m_oglView = [[SFOpenGLView alloc] initWithFrame:[[m_window contentView] frame]];
+
+ if (m_oglView == nil) {
+ sf::err()
+ << "Could not create an instance of NSOpenGLView "
+ << "in (SFWindowController -initWithMode:andStyle:)."
+ << std::endl;
+
+ return self;
+ }
+
+ // If a fullscreen window was requested...
+ if (style & sf::Style::Fullscreen) {
+ /// ... we tell the OpenGL view
+ [m_oglView enterFullscreen];
+
+ // ... and if the resolution is not the default one...
+ if (mode != sf::VideoMode::getDesktopMode()) {
+ // ... we set the "real size" of the view (that is the back buffer size).
+ [m_oglView setRealSize:NSMakeSize(m_fullscreenMode->width, m_fullscreenMode->height)];
+ }
+ }
+
+ // Set the view to the window as its content view.
+ [m_window setContentView:m_oglView];
+
+ // Register for event.
+ [m_window setDelegate:self];
+ [m_window setAcceptsMouseMovedEvents:YES];
+ [m_window setIgnoresMouseEvents:NO];
+
+ // And some other things...
+ [m_window setAutodisplay:YES];
+ [m_window setReleasedWhenClosed:NO];
+ } // if super init ok
+
+ return self;
+}
+
+////////////////////////////////////////////////////////
+-(void)dealloc
+{
+ [self closeWindow];
+ [NSMenu setMenuBarVisible:YES];
+
+ [m_window release];
+ [m_oglView release];
+
+ delete m_fullscreenMode;
+
+ [super dealloc];
+}
+
+
+#pragma mark
+#pragma mark WindowImplDelegateProtocol's methods
+
+
+////////////////////////////////////////////////////////
+-(void)setRequesterTo:(sf::priv::WindowImplCocoa *)requester
+{
+ // Forward to the view.
+ [m_oglView setRequesterTo:requester];
+ m_requester = requester;
+}
+
+
+////////////////////////////////////////////////////////
+-(sf::WindowHandle)getSystemHandle
+{
+ return m_window;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)hideMouseCursor
+{
+ [NSCursor hide];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)showMouseCursor
+{
+ [NSCursor unhide];
+}
+
+
+////////////////////////////////////////////////////////////
+-(NSPoint)position
+{
+ // First, get the top left corner of the view in its own base system
+ NSPoint const origin = [m_oglView frame].origin;
+ NSSize const size = [m_oglView frame].size;
+ NSPoint const topLeftCornerOfView = NSMakePoint(origin.x, origin.y + size.height);
+ NSPoint const positionInView = [m_oglView convertPointToBase:topLeftCornerOfView];
+
+ // Then, convert it to window base system
+ NSPoint const positionInWindow = [m_oglView convertPoint:positionInView toView:nil];
+ // here nil denotes the window containing the view
+
+ // Next, convert it to the screen base system
+ NSPoint const positionInScreen = [[m_oglView window] convertBaseToScreen:positionInWindow];
+
+ // Finally, flip for SFML window coordinate system
+ // Don't forget to discard the title bar !
+ NSPoint const positionInSFML = NSMakePoint(positionInScreen.x,
+ ([self screenHeight] - [self titlebarHeight]) - positionInScreen.y);
+
+ return positionInSFML;
+}
+
+
+////////////////////////////////////////////////////////.
+-(void)setWindowPositionToX:(int)x Y:(int)y
+{
+ NSPoint point = NSMakePoint(x, y);
+
+ // Flip for SFML window coordinate system.
+ point.y = [self screenHeight] - point.y;
+
+ // Place the window.
+ [m_window setFrameTopLeftPoint:point];
+}
+
+
+////////////////////////////////////////////////////////
+-(NSSize)size
+{
+ if (*m_fullscreenMode == sf::VideoMode()) {
+ return [m_oglView frame].size;
+ } else {
+ return NSMakeSize(m_fullscreenMode->width, m_fullscreenMode->height);
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)resizeTo:(unsigned int)width by:(unsigned int)height
+{
+ // Add titlebar height.
+ NSRect frame = NSMakeRect([m_window frame].origin.x,
+ [m_window frame].origin.y,
+ width,
+ height + [self titlebarHeight]);
+
+ [m_window setFrame:frame display:YES];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)changeTitle:(NSString *)title
+{
+ [m_window setTitle:title];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)hideWindow
+{
+ [m_window orderOut:nil];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)showWindow
+{
+ [m_window makeKeyAndOrderFront:nil];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)closeWindow
+{
+ [m_window close];
+ [m_window setDelegate:nil];
+ [self setRequesterTo:0];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)enableKeyRepeat
+{
+ [m_oglView enableKeyRepeat];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)disableKeyRepeat
+{
+ [m_oglView disableKeyRepeat];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)setIconTo:(unsigned int)width
+ by:(unsigned int)height
+ with:(sf::Uint8 const *)pixels
+{
+ // Create an empty image representation.
+ NSBitmapImageRep* bitmap =
+ [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:0 // if 0 : only allocate memory
+ pixelsWide:width
+ pixelsHigh:height
+ bitsPerSample:8 // The number of bits used to specify
+ // one pixel in a single component of the data.
+ samplesPerPixel:4 // 3 if no alpha, 4 with it
+ hasAlpha:YES
+ isPlanar:NO // I don't know what it is but it works
+ colorSpaceName:NSCalibratedRGBColorSpace
+ bytesPerRow:0 // 0 == determine automatically
+ bitsPerPixel:0]; // 0 == determine automatically
+
+ // Load data pixels.
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 // We may need to define NSUInteger.
+#define NSUInteger unsigned int
+#endif
+ for (unsigned int y = 0; y < height; ++y) {
+ for (unsigned int x = 0; x < width; ++x, pixels+=4) {
+ NSUInteger pixel[4] = { pixels[0], pixels[1], pixels[2], pixels[3] };
+ [bitmap setPixel:pixel
+ atX:x
+ y:y];
+ }
+ }
+
+ // Create an image from the representation.
+ NSImage* icon = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
+ [icon addRepresentation:bitmap];
+
+ // Set app icon.
+ [[SFApplication sharedApplication] setApplicationIconImage:icon];
+
+ // Free up.
+ [icon release];
+ [bitmap release];
+}
+
+
+////////////////////////////////////////////////////////
+-(void)processEvent
+{
+ // If we are not on the main thread we stop here and advice the user.
+ if ([NSThread currentThread] != [NSThread mainThread]) {
+ /*
+ * See http://lists.apple.com/archives/cocoa-dev/2011/Feb/msg00460.html
+ * for more information.
+ */
+ sf::err()
+ << "Cannot fetch event from a worker thread. (OS X restriction)"
+ << std::endl;
+
+ return;
+ }
+
+ // If we don't have a requester we don't fetch event.
+ if (m_requester != 0) {
+ [SFApplication processEvent];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)applyContext:(NSOpenGLContext *)context
+{
+ [m_oglView setOpenGLContext:context];
+ [context setView:m_oglView];
+
+ // If fullscreen was requested and the mode used to create the window
+ // was not the desktop mode, we change the back buffer size of the
+ // context.
+ if (*m_fullscreenMode != sf::VideoMode()) {
+ CGLContextObj cgcontext = (CGLContextObj)[context CGLContextObj];
+
+ GLint dim[2] = {m_fullscreenMode->width, m_fullscreenMode->height};
+
+ CGLSetParameter(cgcontext, kCGLCPSurfaceBackingSize, dim);
+ CGLEnable(cgcontext, kCGLCESurfaceBackingSize);
+ }
+}
+
+
+#pragma mark
+#pragma mark NSWindowDelegate's methods
+
+
+////////////////////////////////////////////////////////
+-(BOOL)windowShouldClose:(id)sender
+{
+ if (m_requester == 0) return YES;
+
+ m_requester->windowClosed();
+ return NO;
+}
+
+
+////////////////////////////////////////////////////////
+-(void)windowDidBecomeKey:(NSNotification *)notification
+{
+ // Send event.
+ if (m_requester == 0) return;
+
+ m_requester->windowGainedFocus();
+
+ if (*m_fullscreenMode != sf::VideoMode()) {
+ [m_oglView enterFullscreen];
+ }
+}
+
+
+////////////////////////////////////////////////////////
+-(void)windowDidResignKey:(NSNotification *)notification
+{
+ // Send event.
+ if (m_requester == 0) return;
+
+ m_requester->windowLostFocus();
+
+ if (*m_fullscreenMode != sf::VideoMode()) {
+ [m_oglView exitFullscreen];
+ }
+}
+
+
+#pragma mark
+#pragma mark Other methods
+
+////////////////////////////////////////////////////////
+-(float)screenHeight
+{
+ NSDictionary *deviceDescription = [[m_window screen] deviceDescription];
+ NSNumber *screenNumber = [deviceDescription valueForKey:@"NSScreenNumber"];
+ CGDirectDisplayID screenID = (CGDirectDisplayID)[screenNumber intValue];
+ CGFloat height = CGDisplayPixelsHigh(screenID);
+ return height;
+}
+
+
+////////////////////////////////////////////////////////
+-(float)titlebarHeight
+{
+ return NSHeight([m_window frame]) - NSHeight([[m_window contentView] frame]);
+}
+
+@end
diff --git a/src/SFML/Window/OSX/VideoModeImpl.cpp b/src/SFML/Window/OSX/VideoModeImpl.cpp
new file mode 100644
index 0000000..1d7b0df
--- /dev/null
+++ b/src/SFML/Window/OSX/VideoModeImpl.cpp
@@ -0,0 +1,118 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/VideoModeImpl.hpp>
+#include <SFML/Window/OSX/cg_sf_conversion.hpp>
+#include <SFML/System/Err.hpp>
+#include <algorithm>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// Note :
+/// Starting with 10.6, CGDisplayModeRef and CGDisplayCopyAllDisplayModes
+/// should be used instead of CFDictionaryRef and CGDisplayAvailableModes.
+///
+////////////////////////////////////////////////////////////
+std::vector<VideoMode> VideoModeImpl::getFullscreenModes()
+{
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+
+ std::vector<VideoMode> modes;
+
+ // Retrieve array of dictionaries representing display modes.
+ CFArrayRef displayModes = CGDisplayAvailableModes(CGMainDisplayID());
+
+ if (displayModes == NULL) {
+ sf::err() << "Couldn't get VideoMode for main display.";
+ return modes;
+ }
+
+ // Loop on each mode and convert it into a sf::VideoMode object.
+ CFIndex const modesCount = CFArrayGetCount(displayModes);
+ for (CFIndex i = 0; i < modesCount; i++) {
+ CFDictionaryRef dictionary = (CFDictionaryRef)CFArrayGetValueAtIndex(displayModes, i);
+
+ VideoMode mode = convertCGModeToSFMode(dictionary);
+
+ // If not yet listed we add it to our modes array.
+ if (std::find(modes.begin(), modes.end(), mode) == modes.end()) {
+ modes.push_back(mode);
+ }
+ }
+
+ return modes;
+
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+
+ std::vector<VideoMode> modes;
+
+ // Retrieve all modes available for main screen only.
+ CFArrayRef cgmodes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
+
+ if (cgmodes == NULL) {
+ sf::err() << "Couldn't get VideoMode for main display.";
+ return modes;
+ }
+
+ // Loop on each mode and convert it into a sf::VideoMode object.
+ CFIndex const modesCount = CFArrayGetCount(cgmodes);
+ for (CFIndex i = 0; i < modesCount; i++) {
+ CGDisplayModeRef cgmode = (CGDisplayModeRef)CFArrayGetValueAtIndex(cgmodes, i);
+
+ VideoMode mode = convertCGModeToSFMode(cgmode);
+
+ // If not yet listed we add it to our modes array.
+ if (std::find(modes.begin(), modes.end(), mode) == modes.end()) {
+ modes.push_back(mode);
+ }
+ }
+
+ // Clean up memory.
+ CFRelease(cgmodes);
+
+ return modes;
+
+#endif
+}
+
+
+////////////////////////////////////////////////////////////
+VideoMode VideoModeImpl::getDesktopMode()
+{
+ CGDirectDisplayID display = CGMainDisplayID();
+ return VideoMode(CGDisplayPixelsWide(display),
+ CGDisplayPixelsHigh(display),
+ displayBitsPerPixel(display));
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/OSX/WindowImplCocoa.hpp b/src/SFML/Window/OSX/WindowImplCocoa.hpp
new file mode 100644
index 0000000..c0c29c3
--- /dev/null
+++ b/src/SFML/Window/OSX/WindowImplCocoa.hpp
@@ -0,0 +1,343 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_WINDOWIMPLCOCOA_HPP
+#define SFML_WINDOWIMPLCOCOA_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Event.hpp>
+#include <SFML/Window/WindowImpl.hpp>
+#include <SFML/System/String.hpp>
+
+////////////////////////////////////////////////////////////
+/// Predefine OBJC classes
+////////////////////////////////////////////////////////////
+#ifdef __OBJC__
+
+#import <SFML/Window/OSX/WindowImplDelegateProtocol.h>
+typedef id<WindowImplDelegateProtocol,NSObject> WindowImplDelegateRef;
+
+@class NSOpenGLContext;
+typedef NSOpenGLContext* NSOpenGLContextRef;
+
+#else // If C++
+
+typedef unsigned short unichar; // See NSString.h
+
+typedef void* WindowImplDelegateRef;
+typedef void* NSOpenGLContextRef;
+
+#endif
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Mac OS X (Cocoa) implementation of WindowImpl
+///
+////////////////////////////////////////////////////////////
+class WindowImplCocoa : public WindowImpl
+{
+public :
+ ////////////////////////////////////////////////////////////
+ /// \brief Construct the window implementation from an existing control
+ ///
+ /// \param handle Platform-specific handle of the control
+ ///
+ ////////////////////////////////////////////////////////////
+ WindowImplCocoa(WindowHandle handle);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the window implementation
+ ///
+ /// \param mode Video mode to use
+ /// \param title Title of the window
+ /// \param style Window style (resizable, fixed, or fullscren)
+ /// \param settings Additional settings for the underlying OpenGL context
+ ///
+ ////////////////////////////////////////////////////////////
+ WindowImplCocoa(VideoMode mode, const String& title, unsigned long style, const ContextSettings& settings);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~WindowImplCocoa();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Window Closed Event ā€“ called by the cocoa window object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ ////////////////////////////////////////////////////////////
+ void windowClosed(void);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Window Resized Event ā€“ called by the cocoa window object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param width
+ /// \param height
+ ///
+ ////////////////////////////////////////////////////////////
+ void windowResized(unsigned int width, unsigned int height);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Window Lost Focus Event ā€“ called by the cocoa window object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ ////////////////////////////////////////////////////////////
+ void windowLostFocus(void);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Window Get Focus Event ā€“ called by the cocoa window object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ ////////////////////////////////////////////////////////////
+ void windowGainedFocus(void);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse Down Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param button
+ /// \param x
+ /// \param y
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseDownAt(Mouse::Button button, int x, int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse Up Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param button
+ /// \param x
+ /// \param y
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseUpAt(Mouse::Button button, int x, int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse Moved Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param x
+ /// \param y
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseMovedAt(int x, int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse Wheel Scrolled Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param delta
+ /// \param x
+ /// \param y
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseWheelScrolledAt(float delta, int x, int y);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse In Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseMovedIn(void);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Mouse Out Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ ////////////////////////////////////////////////////////////
+ void mouseMovedOut(void);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Key Down Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param key
+ ///
+ ////////////////////////////////////////////////////////////
+ void keyDown(Event::KeyEvent key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Key Up Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param key
+ ///
+ ////////////////////////////////////////////////////////////
+ void keyUp(Event::KeyEvent key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Text Entred Event ā€“ called by the cocoa view object.
+ ///
+ /// Send the event to SFML WindowImpl class.
+ ///
+ /// \param charcode Input unicode
+ ///
+ ////////////////////////////////////////////////////////////
+ void textEntered(unichar charcode);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Apply the context to the view.
+ ///
+ /// Called by the SFML context object to finalize its creation.
+ ///
+ /// \param context The context to bind to the window
+ ///
+ ////////////////////////////////////////////////////////////
+ void applyContext(NSOpenGLContextRef context) const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the type of the current process to become a full GUI app.
+ /// Also ensure NSApp is constructed.
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setUpProcess(void);
+
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the OS-specific handle of the window
+ ///
+ /// \return Handle of the window
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual WindowHandle getSystemHandle() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the position of the window
+ ///
+ /// \return Position of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2i getPosition() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the position of the window on screen
+ ///
+ /// \param position New position of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setPosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the client size of the window
+ ///
+ /// \return Size of the window, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual Vector2u getSize() const;
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the size of the rendering region of the window
+ ///
+ /// \param size New size, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setSize(const Vector2u& size);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the title of the window
+ ///
+ /// \param title New title
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setTitle(const String& title);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Change the window's icon
+ ///
+ /// \param width Icon's width, in pixels
+ /// \param height Icon's height, in pixels
+ /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Show or hide the window
+ ///
+ /// \param visible True to show, false to hide
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVisible(bool visible);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Show or hide the mouse cursor
+ ///
+ /// \param visible True to show, false to hide
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setMouseCursorVisible(bool visible);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Enable or disable automatic key-repeat
+ ///
+ /// \param enabled True to enable, false to disable
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setKeyRepeatEnabled(bool enabled);
+
+protected :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Process incoming events from the operating system
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void processEvents();
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ WindowImplDelegateRef m_delegate; ///< Implementation in Obj-C.
+ bool m_showCursor; ///< Is the cursor displayed or hidden ?
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_WINDOWIMPLCOCOA_HPP
diff --git a/src/SFML/Window/OSX/WindowImplCocoa.mm b/src/SFML/Window/OSX/WindowImplCocoa.mm
new file mode 100644
index 0000000..a3bea49
--- /dev/null
+++ b/src/SFML/Window/OSX/WindowImplCocoa.mm
@@ -0,0 +1,418 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/WindowImplCocoa.hpp>
+#include <SFML/System/Err.hpp>
+#include <SFML/System/String.hpp>
+
+#import <SFML/Window/OSX/SFWindowController.h>
+#import <SFML/Window/OSX/SFViewController.h>
+#import <SFML/Window/OSX/cpp_objc_conversion.h>
+#import <SFML/Window/OSX/AutoreleasePoolWrapper.h>
+#import <SFML/Window/OSX/SFApplication.h>
+
+namespace sf
+{
+namespace priv
+{
+
+#pragma mark
+#pragma mark WindowImplCocoa's ctor/dtor
+
+////////////////////////////////////////////////////////////
+WindowImplCocoa::WindowImplCocoa(WindowHandle handle)
+: m_showCursor(true)
+{
+ // Ask for a pool.
+ retainPool();
+
+ // Treat the handle as it real type
+ id nsHandle = (id)handle;
+ if ([nsHandle isKindOfClass:[NSWindow class]]) {
+
+ // We have a window.
+ m_delegate = [[SFWindowController alloc] initWithWindow:nsHandle];
+
+ } else if ([nsHandle isKindOfClass:[NSView class]]) {
+
+ // We have a view.
+ m_delegate = [[SFViewController alloc] initWithView:nsHandle];
+
+ } else {
+
+ sf::err()
+ << "Cannot import this Window Handle because it is neither "
+ << "a <NSWindow*> nor <NSView*> object "
+ << "(or any of their subclasses). You gave a <"
+ << [[nsHandle className] UTF8String]
+ << "> object."
+ << std::endl;
+ return;
+
+ }
+
+ [m_delegate setRequesterTo:this];
+}
+
+
+////////////////////////////////////////////////////////////
+WindowImplCocoa::WindowImplCocoa(VideoMode mode,
+ const String& title,
+ unsigned long style,
+ const ContextSettings& /*settings*/)
+: m_showCursor(true)
+{
+ // Transform the app process.
+ setUpProcess();
+
+ // Ask for a pool.
+ retainPool();
+
+ m_delegate = [[SFWindowController alloc] initWithMode:mode andStyle:style];
+ [m_delegate changeTitle:sfStringToNSString(title)];
+ [m_delegate setRequesterTo:this];
+}
+
+
+////////////////////////////////////////////////////////////
+WindowImplCocoa::~WindowImplCocoa()
+{
+ [m_delegate closeWindow];
+
+ [m_delegate release];
+
+ releasePool();
+
+ drainPool(); // Make sure everything was freed
+ // This solve some issue when sf::Window::Create is called for the
+ // second time (nothing was render until the function was called again)
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::applyContext(NSOpenGLContextRef context) const
+{
+ [m_delegate applyContext:context];
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setUpProcess(void)
+{
+ static bool isTheProcessSetAsApplication = false;
+
+ if (!isTheProcessSetAsApplication) {
+ // Do it only once !
+ isTheProcessSetAsApplication = true;
+
+ // Set the process as a normal application so it can get focus.
+ ProcessSerialNumber psn;
+ if (!GetCurrentProcess(&psn)) {
+ TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+ SetFrontProcess(&psn);
+ }
+
+ // Tell the application to stop bouncing in the Dock.
+ [[SFApplication sharedApplication] finishLaunching];
+ // NOTE : This last call won't harm anything even if SFML window was
+ // created with an external handle.
+ }
+}
+
+
+#pragma mark
+#pragma mark WindowImplCocoa's window-event methods
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::windowClosed(void)
+{
+ Event event;
+ event.type = Event::Closed;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::windowResized(unsigned int width, unsigned int height)
+{
+ Event event;
+ event.type = Event::Resized;
+ event.size.width = width;
+ event.size.height = height;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::windowLostFocus(void)
+{
+ if (!m_showCursor) {
+ [m_delegate showMouseCursor]; // Make sur the cursor is visible
+ }
+
+ Event event;
+ event.type = Event::LostFocus;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::windowGainedFocus(void)
+{
+ if (!m_showCursor) {
+ [m_delegate hideMouseCursor]; // Restore user's setting
+ }
+
+ Event event;
+ event.type = Event::GainedFocus;
+
+ pushEvent(event);
+}
+
+#pragma mark
+#pragma mark WindowImplCocoa's mouse-event methods
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseDownAt(Mouse::Button button, int x, int y)
+{
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.button = button;
+ event.mouseButton.x = x;
+ event.mouseButton.y = y;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseUpAt(Mouse::Button button, int x, int y)
+{
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.button = button;
+ event.mouseButton.x = x;
+ event.mouseButton.y = y;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseMovedAt(int x, int y)
+{
+ Event event;
+ event.type = Event::MouseMoved;
+ event.mouseMove.x = x;
+ event.mouseMove.y = y;
+
+ pushEvent(event);
+}
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseWheelScrolledAt(float delta, int x, int y)
+{
+ Event event;
+ event.type = Event::MouseWheelMoved;
+ event.mouseWheel.delta = delta;
+ event.mouseWheel.x = x;
+ event.mouseWheel.y = y;
+
+ pushEvent(event);
+}
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseMovedIn(void)
+{
+ if (!m_showCursor) {
+ [m_delegate hideMouseCursor]; // Restore user's setting
+ }
+
+ Event event;
+ event.type = Event::MouseEntered;
+
+ pushEvent(event);
+}
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::mouseMovedOut(void)
+{
+ if (!m_showCursor) {
+ [m_delegate showMouseCursor]; // Make sur the cursor is visible
+ }
+
+ Event event;
+ event.type = Event::MouseLeft;
+
+ pushEvent(event);
+}
+
+
+#pragma mark
+#pragma mark WindowImplCocoa's key-event methods
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::keyDown(Event::KeyEvent key)
+{
+ Event event;
+ event.type = Event::KeyPressed;
+ event.key = key;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::keyUp(Event::KeyEvent key)
+{
+ Event event;
+ event.type = Event::KeyReleased;
+ event.key = key;
+
+ pushEvent(event);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::textEntered(unichar charcode)
+{
+ Event event;
+ event.type = Event::TextEntered;
+ event.text.unicode = charcode;
+
+ pushEvent(event);
+}
+
+
+#pragma mark
+#pragma mark WindowImplCocoa's event-related methods
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::processEvents()
+{
+ [m_delegate processEvent];
+}
+
+#pragma mark
+#pragma mark WindowImplCocoa's private methods
+
+////////////////////////////////////////////////////////////
+WindowHandle WindowImplCocoa::getSystemHandle() const
+{
+ return [m_delegate getSystemHandle];
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i WindowImplCocoa::getPosition() const
+{
+ NSPoint pos = [m_delegate position];
+ return Vector2i(pos.x, pos.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setPosition(const Vector2i& position)
+{
+ [m_delegate setWindowPositionToX:position.x Y:position.y];
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2u WindowImplCocoa::getSize() const
+{
+ NSSize size = [m_delegate size];
+ return Vector2u(size.width, size.height);
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setSize(const Vector2u& size)
+{
+ [m_delegate resizeTo:size.x by:size.y];
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setTitle(const String& title)
+{
+ [m_delegate changeTitle:sfStringToNSString(title)];
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setIcon(unsigned int width, unsigned int height, const Uint8* pixels)
+{
+ [m_delegate setIconTo:width by:height with:pixels];
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setVisible(bool visible)
+{
+ if (visible) {
+ [m_delegate showWindow];
+ } else {
+ [m_delegate hideWindow];
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setMouseCursorVisible(bool visible)
+{
+ m_showCursor = visible;
+
+ if (m_showCursor) {
+ [m_delegate showMouseCursor];
+ } else {
+ [m_delegate hideMouseCursor];
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void WindowImplCocoa::setKeyRepeatEnabled(bool enabled)
+{
+ if (enabled) {
+ [m_delegate enableKeyRepeat];
+ } else {
+ [m_delegate disableKeyRepeat];
+ }
+}
+
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/OSX/WindowImplDelegateProtocol.h b/src/SFML/Window/OSX/WindowImplDelegateProtocol.h
new file mode 100644
index 0000000..7e4bbbf
--- /dev/null
+++ b/src/SFML/Window/OSX/WindowImplDelegateProtocol.h
@@ -0,0 +1,159 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/WindowHandle.hpp>
+#include <SFML/Config.hpp> // for sf::Uint8
+
+#import <AppKit/AppKit.h>
+
+namespace sf {
+ namespace priv {
+ class WindowImplCocoa;
+ }
+}
+
+////////////////////////////////////////////////////////////
+/// This protocol defines the interface of the delegate of
+/// the window implementation.
+///
+/// We don't create an interface here because Obj-C doesn't allow
+/// multiple inheritance (SFViewController and SFWindowController
+/// don't have the same parent classes). Unfortunately this means
+/// we have to duplicate some code.
+///
+/// Everything is done via a class that implement this protocol.
+/// There are two of these classes :
+///
+/// SFViewController and SFWindowController
+///
+/// The requester is a WindowImplCocoa. It's used to send back
+/// event via these functions :
+///
+/// windowClosed, windowResized, windowLostFocus, windowGainedFocus
+///
+/// mouseDownAt, mouseUpAt, mouseMovedAt, mouseWheelScrolledAt,
+/// mouseMovedIn, mouseMovedOut
+///
+/// keyDown, keyUp, textEntered
+///
+/// Note : Joysticks are not bound to a view or window
+/// thus they're not managed by a class implementing this protocol.
+///
+////////////////////////////////////////////////////////////
+@protocol WindowImplDelegateProtocol
+
+////////////////////////////////////////////////////////////
+/// Set the WindowImpl who requested this delegate
+/// (This would be a ctor in C++ or Java where we can prohibit the
+/// construction of an object.)
+///
+////////////////////////////////////////////////////////////
+-(void)setRequesterTo:(sf::priv::WindowImplCocoa *)requester;
+
+////////////////////////////////////////////////////////////
+/// Return the main view or window.
+///
+////////////////////////////////////////////////////////////
+-(sf::WindowHandle)getSystemHandle;
+
+////////////////////////////////////////////////////////////
+/// Hide or show the mouse cursor.
+///
+////////////////////////////////////////////////////////////
+-(void)hideMouseCursor;
+-(void)showMouseCursor;
+
+////////////////////////////////////////////////////////////
+/// Get window's position.
+///
+////////////////////////////////////////////////////////////
+-(NSPoint)position;
+
+////////////////////////////////////////////////////////////
+/// Move the window (not the view if we handle not a window) (SFML Coordinates).
+///
+////////////////////////////////////////////////////////////
+-(void)setWindowPositionToX:(int)x Y:(int)y;
+
+////////////////////////////////////////////////////////////
+/// Get window's size.
+///
+////////////////////////////////////////////////////////////
+-(NSSize)size;
+
+////////////////////////////////////////////////////////////
+/// Resize the window/view.
+///
+////////////////////////////////////////////////////////////
+-(void)resizeTo:(unsigned int)width by:(unsigned int)height;
+
+////////////////////////////////////////////////////////////
+/// Set the title (does nothing if we manage a view).
+///
+////////////////////////////////////////////////////////////
+-(void)changeTitle:(NSString *)title;
+
+////////////////////////////////////////////////////////////
+/// Hide or show the window (does nothing if we manage a view).
+///
+////////////////////////////////////////////////////////////
+-(void)hideWindow;
+-(void)showWindow;
+
+////////////////////////////////////////////////////////////
+/// Close the window (does nothing if we manage a view).
+///
+////////////////////////////////////////////////////////////
+-(void)closeWindow;
+
+////////////////////////////////////////////////////////////
+/// Enable or disable key repeat.
+///
+////////////////////////////////////////////////////////////
+-(void)enableKeyRepeat;
+-(void)disableKeyRepeat;
+
+////////////////////////////////////////////////////////////
+/// Set an icon to the application.
+///
+////////////////////////////////////////////////////////////
+-(void)setIconTo:(unsigned int)width by:(unsigned int)height with:(sf::Uint8 const*)pixels;
+
+////////////////////////////////////////////////////////////
+/// Fetch new event
+///
+////////////////////////////////////////////////////////////
+-(void)processEvent;
+
+////////////////////////////////////////////////////////////
+/// Apply a given context to an OpenGL view.
+///
+////////////////////////////////////////////////////////////
+-(void)applyContext:(NSOpenGLContext *)context;
+
+@end
diff --git a/src/SFML/Window/OSX/cg_sf_conversion.cpp b/src/SFML/Window/OSX/cg_sf_conversion.cpp
new file mode 100644
index 0000000..3481cce
--- /dev/null
+++ b/src/SFML/Window/OSX/cg_sf_conversion.cpp
@@ -0,0 +1,181 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/OSX/cg_sf_conversion.hpp>
+#include <SFML/System/Err.hpp>
+
+namespace sf
+{
+namespace priv
+{
+
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+size_t modeBitsPerPixel(CGDisplayModeRef mode)
+{
+ size_t bpp = 0; // no match
+
+ // Compare encoding.
+ CFStringRef pixEnc = CGDisplayModeCopyPixelEncoding(mode);
+ if(CFStringCompare(pixEnc, CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+
+ bpp = 32;
+
+ } else if(CFStringCompare(pixEnc, CFSTR(IO16BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+
+ bpp = 16;
+
+ } else if(CFStringCompare(pixEnc, CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+
+ bpp = 8;
+
+ }
+
+ // Clean up memory.
+ CFRelease(pixEnc);
+
+ return bpp;
+}
+#endif
+
+
+
+////////////////////////////////////////////////////////////
+size_t displayBitsPerPixel(CGDirectDisplayID displayId)
+{
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+
+ return CGDisplayBitsPerPixel(displayId);
+
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+
+ // Get the display mode.
+ CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displayId);
+
+ // Get bpp for the mode.
+ size_t const bpp = modeBitsPerPixel(mode);
+
+ // Clean up Memory.
+ CGDisplayModeRelease(mode);
+
+ return bpp;
+
+#endif
+}
+
+
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+
+VideoMode convertCGModeToSFMode(CFDictionaryRef dictionary)
+{
+ VideoMode sfmode;
+
+ CFNumberRef cfnumber = (CFNumberRef)CFDictionaryGetValue(dictionary, kCGDisplayWidth);
+ CFNumberGetValue(cfnumber, kCFNumberIntType, &(sfmode.width));
+
+ cfnumber = (CFNumberRef)CFDictionaryGetValue(dictionary, kCGDisplayHeight);
+ CFNumberGetValue(cfnumber, kCFNumberIntType, &(sfmode.height));
+
+ cfnumber = (CFNumberRef)CFDictionaryGetValue(dictionary, kCGDisplayBitsPerPixel);
+ CFNumberGetValue(cfnumber, kCFNumberIntType, &(sfmode.bitsPerPixel));
+
+ return sfmode;
+}
+
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+
+VideoMode convertCGModeToSFMode(CGDisplayModeRef cgmode)
+{
+ return VideoMode(CGDisplayModeGetWidth(cgmode),
+ CGDisplayModeGetHeight(cgmode),
+ modeBitsPerPixel(cgmode));
+}
+
+#endif
+
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+
+CFDictionaryRef convertSFModeToCGMode(VideoMode sfmode)
+{
+ // If sfmode is in VideoMode::GetFullscreenModes
+ // then this should be an exact match (see NULL parameter doc).
+ return CGDisplayBestModeForParameters(CGMainDisplayID(),
+ sfmode.bitsPerPixel,
+ sfmode.width,
+ sfmode.height,
+ NULL);
+}
+
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+
+CGDisplayModeRef convertSFModeToCGMode(VideoMode sfmode)
+{
+ // Starting with 10.6 we should query the display all the modes and
+ // search for the best one.
+
+ // Will return NULL if sfmode is not in VideoMode::GetFullscreenModes.
+ CGDisplayModeRef cgbestMode = NULL;
+
+ // Retrieve all modes available for main screen only.
+ CFArrayRef cgmodes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
+
+ if (cgmodes == NULL) { // Should not happen but anyway...
+ sf::err() << "Couldn't get VideoMode for main display.";
+ return NULL;
+ }
+
+ // Loop on each mode and convert it into a sf::VideoMode object.
+ CFIndex const modesCount = CFArrayGetCount(cgmodes);
+ for (CFIndex i = 0; i < modesCount; i++) {
+ CGDisplayModeRef cgmode = (CGDisplayModeRef)CFArrayGetValueAtIndex(cgmodes, i);
+
+ VideoMode mode = convertCGModeToSFMode(cgmode);
+
+ if (mode == sfmode) {
+ cgbestMode = cgmode;
+ }
+ }
+
+ // Clean up memory.
+ CFRelease(cgmodes);
+
+ if (cgbestMode == NULL) {
+ sf::err()
+ << "Couldn't convert the given sf:VideoMode into a CGDisplayMode."
+ << std::endl;
+ }
+
+ return cgbestMode;
+}
+
+#endif
+
+} // namespace priv
+} // namespace sf
diff --git a/src/SFML/Window/OSX/cg_sf_conversion.hpp b/src/SFML/Window/OSX/cg_sf_conversion.hpp
new file mode 100644
index 0000000..150e7b5
--- /dev/null
+++ b/src/SFML/Window/OSX/cg_sf_conversion.hpp
@@ -0,0 +1,82 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_CG_SF_CONVERSION_HPP
+#define SFML_CG_SF_CONVERSION_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/VideoMode.hpp>
+#include <ApplicationServices/ApplicationServices.h>
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Get bpp of a video mode for OS 10.6 or later.
+///
+/// With OS 10.6 and later, Quartz doesn't use anymore dictionaries
+/// to represent video mode. Instead it uses a CGDisplayMode opaque type.
+///
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+size_t modeBitsPerPixel(CGDisplayModeRef mode);
+#endif
+
+////////////////////////////////////////////////////////////
+/// \brief Get bpp for all OS X version.
+///
+/// This function use only non-deprecated way to get the
+/// display bits per pixel information for a given display id.
+///
+////////////////////////////////////////////////////////////
+size_t displayBitsPerPixel(CGDirectDisplayID displayId);
+
+////////////////////////////////////////////////////////////
+/// \brief Convert a Quartz video mode into a sf::VideoMode object.
+///
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+VideoMode convertCGModeToSFMode(CFDictionaryRef dictionary);
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+VideoMode convertCGModeToSFMode(CGDisplayModeRef cgmode);
+#endif
+
+////////////////////////////////////////////////////////////
+/// \brief Convert a sf::VideoMode object into a Quartz video mode.
+///
+////////////////////////////////////////////////////////////
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+CFDictionaryRef convertSFModeToCGMode(VideoMode sfmode);
+#else // MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+CGDisplayModeRef convertSFModeToCGMode(VideoMode sfmode);
+#endif
+
+} // namespace priv
+} // namespace sf
+
+#endif
diff --git a/src/SFML/Window/OSX/cpp_objc_conversion.h b/src/SFML/Window/OSX/cpp_objc_conversion.h
new file mode 100644
index 0000000..75095b3
--- /dev/null
+++ b/src/SFML/Window/OSX/cpp_objc_conversion.h
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <string>
+#include <SFML/System/String.hpp>
+
+#import <Foundation/Foundation.h>
+
+////////////////////////////////////////////////////////////
+/// \brief Returns a NSString construct with +stringWithCString:encoding:.
+///
+////////////////////////////////////////////////////////////
+NSString* stringToNSString(std::string const& string);
+NSString* sfStringToNSString(sf::String const& string);
diff --git a/src/SFML/Window/OSX/cpp_objc_conversion.mm b/src/SFML/Window/OSX/cpp_objc_conversion.mm
new file mode 100644
index 0000000..4b619a5
--- /dev/null
+++ b/src/SFML/Window/OSX/cpp_objc_conversion.mm
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/System/Utf.hpp>
+
+#import <Foundation/Foundation.h>
+#import <SFML/Window/OSX/cpp_objc_conversion.h>
+
+////////////////////////////////////////////////////////////
+NSString* stringToNSString(std::string const& string)
+{
+ std::string utf8; utf8.reserve(string.size() + 1);
+ sf::Utf8::fromAnsi(string.begin(), string.end(), std::back_inserter(utf8));
+ NSString* str = [NSString stringWithCString:utf8.c_str() encoding:NSUTF8StringEncoding];
+
+ return str;
+}
+
+////////////////////////////////////////////////////////////
+NSString* sfStringToNSString(sf::String const& string)
+{
+ sf::Uint32 length = string.getSize() * sizeof(sf::Uint32);
+ const void* data = reinterpret_cast<const void*>(string.getData());
+
+ NSStringEncoding encoding;
+ if (NSHostByteOrder() == NS_LittleEndian)
+ encoding = NSUTF32LittleEndianStringEncoding;
+ else
+ encoding = NSUTF32BigEndianStringEncoding;
+
+ NSString* str = [[NSString alloc] initWithBytes:data length:length encoding:encoding];
+ return str;
+}
diff --git a/src/SFML/Window/Template for new ports/VideoModeSupport.hpp b/src/SFML/Window/Template for new ports/VideoModeSupport.hpp
deleted file mode 100755
index 9d46f78..0000000
--- a/src/SFML/Window/Template for new ports/VideoModeSupport.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_VIDEOMODESUPPORTXXX_HPP
-#define SFML_VIDEOMODESUPPORTXXX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/VideoMode.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// XXX implementation of VideoModeSupport
-/// Give access to video mode related OS-specific functions
-////////////////////////////////////////////////////////////
-class VideoModeSupport
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get supported video modes
- ///
- /// \param Modes : Array to fill with available video modes
- ///
- ////////////////////////////////////////////////////////////
- static void GetSupportedVideoModes(std::vector<VideoMode>& Modes);
-
- ////////////////////////////////////////////////////////////
- /// Get current desktop video mode
- ///
- /// \return Current desktop video mode
- ///
- ////////////////////////////////////////////////////////////
- static VideoMode GetDesktopVideoMode();
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_VIDEOMODESUPPORTXXX_HPP
diff --git a/src/SFML/Window/Template for new ports/WindowImplXXX.cpp b/src/SFML/Window/Template for new ports/WindowImplXXX.cpp
deleted file mode 100755
index 46f5d2d..0000000
--- a/src/SFML/Window/Template for new ports/WindowImplXXX.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/XXX/WindowImplXXX.hpp>
-#include <SFML/Window/WindowStyle.hpp>
-#include <GL/gl.h>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Default constructor
-/// (creates a dummy window to provide a valid OpenGL context)
-////////////////////////////////////////////////////////////
-WindowImplXXX::WindowImplXXX()
-{
- // Create a dummy window (with the fewest attributes -- it's just to have a valid support for an OpenGL context)
-
- // Initialize myWidth and myHeight members from base class with the window size
-
- // Create an OpenGL context in this window and DO NOT make it active
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation from an existing control
-////////////////////////////////////////////////////////////
-WindowImplXXX::WindowImplXXX(WindowHandle Handle, WindowSettings& Params)
-{
- // Make sure we'll be able to catch all the events of the given window
-
- // Initialize myWidth and myHeight members from base class with the window size
-
- // Create an OpenGL context in this window and make it active
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation
-////////////////////////////////////////////////////////////
-WindowImplXXX::WindowImplXXX(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params) :
-{
- // Create a new window with given size, title and style
-
- // Initialize myWidth and myHeight members from base class with the window size
-
- // Create an OpenGL context in this window and make it active
-}
-
-
-////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
-WindowImplXXX::~WindowImplXXX()
-{
- // Destroy the OpenGL context, the window and every resource allocated by this class
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if there's an active context on the current thread
-////////////////////////////////////////////////////////////
-bool WindowImplXXX::IsContextActive()
-{
- // Should return whether xxxGetCurrentContext() is NULL or not;
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::Display
-////////////////////////////////////////////////////////////
-void WindowImplXXX::Display()
-{
- // Swap OpenGL buffers (should be a call to xxxSwapBuffers)
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::ProcessEvents
-////////////////////////////////////////////////////////////
-void WindowImplXXX::ProcessEvents()
-{
- // Process every event for this window
-
- // Generate a sf::Event and call SendEvent(Evt) for each event
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetActive
-////////////////////////////////////////////////////////////
-void WindowImplXXX::SetActive(bool Active) const
-{
- // Bind / unbind OpenGL context (should be a call to xxxMakeCurrent)
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::UseVerticalSync
-////////////////////////////////////////////////////////////
-void WindowImplXXX::UseVerticalSync(bool Enabled)
-{
- // Activate / deactivate vertical synchronization
- // usually using an OpenGL extension (should be a call to xxxSwapInterval)
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::ShowMouseCursor
-////////////////////////////////////////////////////////////
-void WindowImplXXX::ShowMouseCursor(bool Show)
-{
- // Show or hide the system cursor in this window
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetCursorPosition
-////////////////////////////////////////////////////////////
-void WindowImplXXX::SetCursorPosition(unsigned int Left, unsigned int Top)
-{
- // Change the cursor position (Left and Top are relative to this window)
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetPosition
-////////////////////////////////////////////////////////////
-void WindowImplXXX::SetPosition(int Left, int Top)
-{
- // Change the window position
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetSize
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetSize(unsigned int Width, unsigned int Height)
-{
- // Change the window size
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::Show
-////////////////////////////////////////////////////////////
-void WindowImplXXX::Show(bool State)
-{
- // Show or hide the window
-}
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::EnableKeyRepeat
-////////////////////////////////////////////////////////////
-void WindowImplXXX::EnableKeyRepeat(bool Enabled)
-{
- // Enable or disable automatic key-repeat for keydown events
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetIcon
-////////////////////////////////////////////////////////////
-void WindowImplXXX::SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels)
-{
- // Change all the necessary icons of the window (titlebar, task bar, ...) with the
- // provided array of 32 bits RGBA pixels
-}
-
-
-/*===========================================================
- STRATEGY FOR OPENGL CONTEXT CREATION
-
-- If the requested level of anti-aliasing is not supported and is greater than 2, try with 2
- --> if level 2 fails, disable anti-aliasing
- --> it's important not to generate an error if anti-aliasing is not supported
-
-- Use a matching pixel mode, or the best of all available pixel modes if no perfect match ;
- You should use the function EvaluateConfig to get a score for a given configuration
-
-- Don't forget to fill Params (see constructors) back with the actual parameters we got from the chosen pixel format
-
-- IMPORTANT : all OpenGL contexts must be shared (usually a call to xxxShareLists)
-
-===========================================================*/
-
-
-/*===========================================================
- STRATEGY FOR EVENT HANDLING
-
-- Process any event matching with the ones in sf::Event::EventType
- --> Create a sf::Event, fill the members corresponding to the event type
- --> No need to handle joystick events, they are handled by WindowImpl::ProcessJoystickEvents
- --> Event::TextEntered must provide UTF-16 characters
- (see http://www.unicode.org/Public/PROGRAMS/CVTUTF/ for unicode conversions)
- --> Don't forget to process any destroy-like event (ie. when the window is destroyed externally)
-
-- Use SendEvent function from base class to propagate the created events
-
-===========================================================*/
-
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Window/Template for new ports/WindowImplXXX.hpp b/src/SFML/Window/Template for new ports/WindowImplXXX.hpp
deleted file mode 100755
index e5dee89..0000000
--- a/src/SFML/Window/Template for new ports/WindowImplXXX.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_WINDOWIMPLXXX_HPP
-#define SFML_WINDOWIMPLXXX_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/Event.hpp>
-#include <SFML/Window/WindowImpl.hpp>
-#include <string>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// WindowImplXXX is the XXX implementation of WindowImpl
-////////////////////////////////////////////////////////////
-class WindowImplXXX : public WindowImpl
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Default constructor
- /// (creates a dummy window to provide a valid OpenGL context)
- ///
- ////////////////////////////////////////////////////////////
- WindowImplXXX();
-
- ////////////////////////////////////////////////////////////
- /// Construct the window implementation from an existing control
- ///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters
- ///
- ////////////////////////////////////////////////////////////
- WindowImplXXX(WindowHandle Handle, WindowSettings& Params);
-
- ////////////////////////////////////////////////////////////
- /// Create the window implementation
- ///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style
- /// \param Params : Creation parameters
- ///
- ////////////////////////////////////////////////////////////
- WindowImplXXX(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params);
-
- ////////////////////////////////////////////////////////////
- /// Destructor
- ///
- ////////////////////////////////////////////////////////////
- ~WindowImplXXX();
-
- ////////////////////////////////////////////////////////////
- /// Check if there's an active context on the current thread
- ///
- /// \return True if there's a context bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- static bool IsContextActive();
-
-private :
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::Display
- ///
- ////////////////////////////////////////////////////////////
- virtual void Display();
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::ProcessEvents
- ///
- ////////////////////////////////////////////////////////////
- virtual void ProcessEvents();
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetActive
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetActive(bool Active = true) const;
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::IsActive
- ///
- ////////////////////////////////////////////////////////////
- virtual bool IsActive() const;
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::UseVerticalSync
- ///
- ////////////////////////////////////////////////////////////
- virtual void UseVerticalSync(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::ShowMouseCursor
- ///
- ////////////////////////////////////////////////////////////
- virtual void ShowMouseCursor(bool Show);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetCursorPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetCursorPosition(unsigned int Left, unsigned int Top);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetPosition
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetPosition(int Left, int Top);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetSize
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetSize(unsigned int Width, unsigned int Height);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::Show
- ///
- ////////////////////////////////////////////////////////////
- virtual void Show(bool State);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::EnableKeyRepeat
- ///
- ////////////////////////////////////////////////////////////
- virtual void EnableKeyRepeat(bool Enabled);
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetIcon
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels);
-};
-
-} // namespace priv
-
-} // namespace sf
-
-#endif // SFML_WINDOWIMPLXXX_HPP
diff --git a/src/SFML/Window/VideoMode.cpp b/src/SFML/Window/VideoMode.cpp
index 3ed77bc..1a4b141 100755..100644
--- a/src/SFML/Window/VideoMode.cpp
+++ b/src/SFML/Window/VideoMode.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,145 +26,121 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window/VideoMode.hpp>
-#include <SFML/Window/VideoModeSupport.hpp>
+#include <SFML/Window/VideoModeImpl.hpp>
#include <algorithm>
-#include <vector>
-
-
-////////////////////////////////////////////////////////////
-/// Internal data
-////////////////////////////////////////////////////////////
-namespace
-{
- // Global array of supported video modes
- std::vector<sf::VideoMode> SupportedModes;
-
- // Functor for sorting modes from highest to lowest
- struct CompareModes
- {
- bool operator ()(const sf::VideoMode& v1, const sf::VideoMode& v2) const
- {
- if (v1.BitsPerPixel > v2.BitsPerPixel)
- return true;
- else if (v1.BitsPerPixel < v2.BitsPerPixel)
- return false;
- else if (v1.Width > v2.Width)
- return true;
- else if (v1.Width < v2.Width)
- return false;
- else
- return (v1.Height > v2.Height);
- }
- };
-}
+#include <functional>
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
VideoMode::VideoMode() :
-Width (0),
-Height (0),
-BitsPerPixel(0)
+width (0),
+height (0),
+bitsPerPixel(0)
{
}
////////////////////////////////////////////////////////////
-/// Construct the video mode with its attributes
-////////////////////////////////////////////////////////////
-VideoMode::VideoMode(unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp) :
-Width (ModeWidth),
-Height (ModeHeight),
-BitsPerPixel(ModeBpp)
+VideoMode::VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel) :
+width (modeWidth),
+height (modeHeight),
+bitsPerPixel(modeBitsPerPixel)
{
}
////////////////////////////////////////////////////////////
-/// Get the current desktop video mode
-////////////////////////////////////////////////////////////
-VideoMode VideoMode::GetDesktopMode()
+VideoMode VideoMode::getDesktopMode()
{
- // Directly forward to the video mode support
- return priv::VideoModeSupport::GetDesktopVideoMode();
+ // Directly forward to the OS-specific implementation
+ return priv::VideoModeImpl::getDesktopMode();
}
////////////////////////////////////////////////////////////
-/// Get a valid video mode
-/// Index must be in range [0, GetModesCount()[
-////////////////////////////////////////////////////////////
-VideoMode VideoMode::GetMode(std::size_t Index)
+const std::vector<VideoMode>& VideoMode::getFullscreenModes()
{
- if (SupportedModes.empty())
- InitializeModes();
+ static std::vector<VideoMode> modes;
- if (Index < GetModesCount())
- return SupportedModes[Index];
- else
- return VideoMode();
+ // Populate the array on first call
+ if (modes.empty())
+ {
+ modes = priv::VideoModeImpl::getFullscreenModes();
+ std::sort(modes.begin(), modes.end(), std::greater<VideoMode>());
+ }
+
+ return modes;
}
////////////////////////////////////////////////////////////
-/// Get valid video modes count
-////////////////////////////////////////////////////////////
-std::size_t VideoMode::GetModesCount()
+bool VideoMode::isValid() const
{
- if (SupportedModes.empty())
- InitializeModes();
+ const std::vector<VideoMode>& modes = getFullscreenModes();
- return SupportedModes.size();
+ return std::find(modes.begin(), modes.end(), *this) != modes.end();
}
////////////////////////////////////////////////////////////
-/// Tell whether or not the video mode is supported
-////////////////////////////////////////////////////////////
-bool VideoMode::IsValid() const
+bool operator ==(const VideoMode& left, const VideoMode& right)
{
- if (SupportedModes.empty())
- InitializeModes();
-
- return std::find(SupportedModes.begin(), SupportedModes.end(), *this) != SupportedModes.end();
+ return (left.width == right.width) &&
+ (left.height == right.height) &&
+ (left.bitsPerPixel == right.bitsPerPixel);
}
////////////////////////////////////////////////////////////
-/// Comparison operator overload -- tell if two video modes are equal
-////////////////////////////////////////////////////////////
-bool VideoMode::operator ==(const VideoMode& Other) const
+bool operator !=(const VideoMode& left, const VideoMode& right)
{
- return (Width == Other.Width) &&
- (Height == Other.Height) &&
- (BitsPerPixel == Other.BitsPerPixel);
+ return !(left == right);
}
////////////////////////////////////////////////////////////
-/// Comparison operator overload -- tell if two video modes are different
-////////////////////////////////////////////////////////////
-bool VideoMode::operator !=(const VideoMode& Other) const
+bool operator <(const VideoMode& left, const VideoMode& right)
{
- return !(*this == Other);
+ if (left.bitsPerPixel == right.bitsPerPixel)
+ {
+ if (left.width == right.width)
+ {
+ return left.height < right.height;
+ }
+ else
+ {
+ return left.width < right.width;
+ }
+ }
+ else
+ {
+ return left.bitsPerPixel < right.bitsPerPixel;
+ }
}
////////////////////////////////////////////////////////////
-/// Get and sort valid video modes
+bool operator >(const VideoMode& left, const VideoMode& right)
+{
+ return right < left;
+}
+
+
////////////////////////////////////////////////////////////
-void VideoMode::InitializeModes()
+bool operator <=(const VideoMode& left, const VideoMode& right)
{
- // We request the array of valid modes
- priv::VideoModeSupport::GetSupportedVideoModes(SupportedModes);
+ return !(right < left);
+}
+
- // And we sort them from highest to lowest (so that number 0 is the best)
- std::sort(SupportedModes.begin(), SupportedModes.end(), CompareModes());
+////////////////////////////////////////////////////////////
+bool operator >=(const VideoMode& left, const VideoMode& right)
+{
+ return !(left < right);
}
} // namespace sf
diff --git a/src/SFML/Window/Cocoa/VideoModeSupport.hpp b/src/SFML/Window/VideoModeImpl.hpp
index 4892fe5..7908c20 100755..100644
--- a/src/SFML/Window/Cocoa/VideoModeSupport.hpp
+++ b/src/SFML/Window/VideoModeImpl.hpp
@@ -1,69 +1,68 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_VIDEOMODESUPPORTCOCOA_HPP
-#define SFML_VIDEOMODESUPPORTCOCOA_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/VideoMode.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Cocoa implementation of VideoModeSupport
-/// Give access to video mode related OS-specific functions
-////////////////////////////////////////////////////////////
-class VideoModeSupport
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get supported video modes
- ///
- /// \param Modes : Array to fill with available video modes
- ///
- ////////////////////////////////////////////////////////////
- static void GetSupportedVideoModes(std::vector<VideoMode>& Modes);
-
- ////////////////////////////////////////////////////////////
- /// Get current desktop video mode
- ///
- /// \return Current desktop video mode
- ///
- ////////////////////////////////////////////////////////////
- static VideoMode GetDesktopVideoMode();
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_VIDEOMODESUPPORTCOCOA_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_VIDEOMODEIMPL_HPP
+#define SFML_VIDEOMODEIMPL_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/VideoMode.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief OS-specific implementation of video modes functions
+///
+////////////////////////////////////////////////////////////
+class VideoModeImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the list of all the supported fullscreen video modes
+ ///
+ /// \return Array filled with the fullscreen video modes
+ ///
+ ////////////////////////////////////////////////////////////
+ static std::vector<VideoMode> getFullscreenModes();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current desktop video mode
+ ///
+ /// \return Current desktop video mode
+ ///
+ ////////////////////////////////////////////////////////////
+ static VideoMode getDesktopMode();
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_VIDEOMODEIMPL_HPP
diff --git a/src/SFML/Window/Win32/InputImpl.cpp b/src/SFML/Window/Win32/InputImpl.cpp
new file mode 100644
index 0000000..0ad303b
--- /dev/null
+++ b/src/SFML/Window/Win32/InputImpl.cpp
@@ -0,0 +1,225 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#ifdef _WIN32_WINDOWS
+ #undef _WIN32_WINDOWS
+#endif
+#ifdef _WIN32_WINNT
+ #undef _WIN32_WINNT
+#endif
+#define _WIN32_WINDOWS 0x0501
+#define _WIN32_WINNT 0x0501
+#include <SFML/Window/Window.hpp>
+#include <SFML/Window/Win32/InputImpl.hpp>
+#include <windows.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+bool InputImpl::isKeyPressed(Keyboard::Key key)
+{
+ int vkey = 0;
+ switch (key)
+ {
+ default: vkey = 0; break;
+ case Keyboard::A: vkey = 'A'; break;
+ case Keyboard::B: vkey = 'B'; break;
+ case Keyboard::C: vkey = 'C'; break;
+ case Keyboard::D: vkey = 'D'; break;
+ case Keyboard::E: vkey = 'E'; break;
+ case Keyboard::F: vkey = 'F'; break;
+ case Keyboard::G: vkey = 'G'; break;
+ case Keyboard::H: vkey = 'H'; break;
+ case Keyboard::I: vkey = 'I'; break;
+ case Keyboard::J: vkey = 'J'; break;
+ case Keyboard::K: vkey = 'K'; break;
+ case Keyboard::L: vkey = 'L'; break;
+ case Keyboard::M: vkey = 'M'; break;
+ case Keyboard::N: vkey = 'N'; break;
+ case Keyboard::O: vkey = 'O'; break;
+ case Keyboard::P: vkey = 'P'; break;
+ case Keyboard::Q: vkey = 'Q'; break;
+ case Keyboard::R: vkey = 'R'; break;
+ case Keyboard::S: vkey = 'S'; break;
+ case Keyboard::T: vkey = 'T'; break;
+ case Keyboard::U: vkey = 'U'; break;
+ case Keyboard::V: vkey = 'V'; break;
+ case Keyboard::W: vkey = 'W'; break;
+ case Keyboard::X: vkey = 'X'; break;
+ case Keyboard::Y: vkey = 'Y'; break;
+ case Keyboard::Z: vkey = 'Z'; break;
+ case Keyboard::Num0: vkey = '0'; break;
+ case Keyboard::Num1: vkey = '1'; break;
+ case Keyboard::Num2: vkey = '2'; break;
+ case Keyboard::Num3: vkey = '3'; break;
+ case Keyboard::Num4: vkey = '4'; break;
+ case Keyboard::Num5: vkey = '5'; break;
+ case Keyboard::Num6: vkey = '6'; break;
+ case Keyboard::Num7: vkey = '7'; break;
+ case Keyboard::Num8: vkey = '8'; break;
+ case Keyboard::Num9: vkey = '9'; break;
+ case Keyboard::Escape: vkey = VK_ESCAPE; break;
+ case Keyboard::LControl: vkey = VK_LCONTROL; break;
+ case Keyboard::LShift: vkey = VK_LSHIFT; break;
+ case Keyboard::LAlt: vkey = VK_LMENU; break;
+ case Keyboard::LSystem: vkey = VK_LWIN; break;
+ case Keyboard::RControl: vkey = VK_RCONTROL; break;
+ case Keyboard::RShift: vkey = VK_RSHIFT; break;
+ case Keyboard::RAlt: vkey = VK_RMENU; break;
+ case Keyboard::RSystem: vkey = VK_RWIN; break;
+ case Keyboard::Menu: vkey = VK_APPS; break;
+ case Keyboard::LBracket: vkey = VK_OEM_4; break;
+ case Keyboard::RBracket: vkey = VK_OEM_6; break;
+ case Keyboard::SemiColon: vkey = VK_OEM_1; break;
+ case Keyboard::Comma: vkey = VK_OEM_COMMA; break;
+ case Keyboard::Period: vkey = VK_OEM_PERIOD; break;
+ case Keyboard::Quote: vkey = VK_OEM_7; break;
+ case Keyboard::Slash: vkey = VK_OEM_2; break;
+ case Keyboard::BackSlash: vkey = VK_OEM_5; break;
+ case Keyboard::Tilde: vkey = VK_OEM_3; break;
+ case Keyboard::Equal: vkey = VK_OEM_PLUS; break;
+ case Keyboard::Dash: vkey = VK_OEM_MINUS; break;
+ case Keyboard::Space: vkey = VK_SPACE; break;
+ case Keyboard::Return: vkey = VK_RETURN; break;
+ case Keyboard::BackSpace: vkey = VK_BACK; break;
+ case Keyboard::Tab: vkey = VK_TAB; break;
+ case Keyboard::PageUp: vkey = VK_PRIOR; break;
+ case Keyboard::PageDown: vkey = VK_NEXT; break;
+ case Keyboard::End: vkey = VK_END; break;
+ case Keyboard::Home: vkey = VK_HOME; break;
+ case Keyboard::Insert: vkey = VK_INSERT; break;
+ case Keyboard::Delete: vkey = VK_DELETE; break;
+ case Keyboard::Add: vkey = VK_ADD; break;
+ case Keyboard::Subtract: vkey = VK_SUBTRACT; break;
+ case Keyboard::Multiply: vkey = VK_MULTIPLY; break;
+ case Keyboard::Divide: vkey = VK_DIVIDE; break;
+ case Keyboard::Left: vkey = VK_LEFT; break;
+ case Keyboard::Right: vkey = VK_RIGHT; break;
+ case Keyboard::Up: vkey = VK_UP; break;
+ case Keyboard::Down: vkey = VK_DOWN; break;
+ case Keyboard::Numpad0: vkey = VK_NUMPAD0; break;
+ case Keyboard::Numpad1: vkey = VK_NUMPAD1; break;
+ case Keyboard::Numpad2: vkey = VK_NUMPAD2; break;
+ case Keyboard::Numpad3: vkey = VK_NUMPAD3; break;
+ case Keyboard::Numpad4: vkey = VK_NUMPAD4; break;
+ case Keyboard::Numpad5: vkey = VK_NUMPAD5; break;
+ case Keyboard::Numpad6: vkey = VK_NUMPAD6; break;
+ case Keyboard::Numpad7: vkey = VK_NUMPAD7; break;
+ case Keyboard::Numpad8: vkey = VK_NUMPAD8; break;
+ case Keyboard::Numpad9: vkey = VK_NUMPAD9; break;
+ case Keyboard::F1: vkey = VK_F1; break;
+ case Keyboard::F2: vkey = VK_F2; break;
+ case Keyboard::F3: vkey = VK_F3; break;
+ case Keyboard::F4: vkey = VK_F4; break;
+ case Keyboard::F5: vkey = VK_F5; break;
+ case Keyboard::F6: vkey = VK_F6; break;
+ case Keyboard::F7: vkey = VK_F7; break;
+ case Keyboard::F8: vkey = VK_F8; break;
+ case Keyboard::F9: vkey = VK_F9; break;
+ case Keyboard::F10: vkey = VK_F10; break;
+ case Keyboard::F11: vkey = VK_F11; break;
+ case Keyboard::F12: vkey = VK_F12; break;
+ case Keyboard::F13: vkey = VK_F13; break;
+ case Keyboard::F14: vkey = VK_F14; break;
+ case Keyboard::F15: vkey = VK_F16; break;
+ case Keyboard::Pause: vkey = VK_PAUSE; break;
+ }
+
+ return (GetAsyncKeyState(vkey) & 0x8000) != 0;
+}
+
+
+////////////////////////////////////////////////////////////
+bool InputImpl::isMouseButtonPressed(Mouse::Button button)
+{
+ int vkey = 0;
+ switch (button)
+ {
+ case Mouse::Left: vkey = GetSystemMetrics(SM_SWAPBUTTON) ? VK_RBUTTON : VK_LBUTTON; break;
+ case Mouse::Right: vkey = GetSystemMetrics(SM_SWAPBUTTON) ? VK_LBUTTON : VK_RBUTTON; break;
+ case Mouse::Middle: vkey = VK_MBUTTON; break;
+ case Mouse::XButton1: vkey = VK_XBUTTON1; break;
+ case Mouse::XButton2: vkey = VK_XBUTTON2; break;
+ default: vkey = 0; break;
+ }
+
+ return (GetAsyncKeyState(vkey) & 0x8000) != 0;
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition()
+{
+ POINT point;
+ GetCursorPos(&point);
+ return Vector2i(point.x, point.y);
+}
+
+
+////////////////////////////////////////////////////////////
+Vector2i InputImpl::getMousePosition(const Window& relativeTo)
+{
+ WindowHandle handle = relativeTo.getSystemHandle();
+ if (handle)
+ {
+ POINT point;
+ GetCursorPos(&point);
+ ScreenToClient(handle, &point);
+ return Vector2i(point.x, point.y);
+ }
+ else
+ {
+ return Vector2i();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position)
+{
+ SetCursorPos(position.x, position.y);
+}
+
+
+////////////////////////////////////////////////////////////
+void InputImpl::setMousePosition(const Vector2i& position, const Window& relativeTo)
+{
+ WindowHandle handle = relativeTo.getSystemHandle();
+ if (handle)
+ {
+ POINT point = {position.x, position.y};
+ ClientToScreen(handle, &point);
+ SetCursorPos(point.x, point.y);
+ }
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Win32/InputImpl.hpp b/src/SFML/Window/Win32/InputImpl.hpp
new file mode 100644
index 0000000..0669b4a
--- /dev/null
+++ b/src/SFML/Window/Win32/InputImpl.hpp
@@ -0,0 +1,123 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_INPUTIMPLWIN32_HPP
+#define SFML_INPUTIMPLWIN32_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/Keyboard.hpp>
+#include <SFML/Window/Mouse.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Windows implementation of inputs (keyboard + mouse)
+///
+////////////////////////////////////////////////////////////
+class InputImpl
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param key Key to check
+ ///
+ /// \return True if the key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a mouse button is pressed
+ ///
+ /// \param button Button to check
+ ///
+ /// \return True if the button is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isMouseButtonPressed(Mouse::Button button);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the current position of the mouse in desktop coordinates
+ ///
+ /// This function returns the current position of the mouse
+ /// cursor, in global (desktop) coordinates.
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it returns desktop coordinates.
+ ///
+ /// \param relativeTo Reference window
+ ///
+ /// \return Current position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static Vector2i getMousePosition(const Window& relativeTo);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Set the current position of the mouse in desktop coordinates
+ ///
+ /// This function sets the current position of the mouse
+ /// cursor in global (desktop) coordinates.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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.
+ /// If no window is used, it sets the position in desktop coordinates.
+ ///
+ /// \param position New position of the mouse
+ /// \param relativeTo Reference window
+ ///
+ ////////////////////////////////////////////////////////////
+ static void setMousePosition(const Vector2i& position, const Window& relativeTo);
+};
+
+} // namespace priv
+
+} // namespace sf
+
+
+#endif // SFML_INPUTIMPLWIN32_HPP
diff --git a/src/SFML/Window/Win32/Joystick.cpp b/src/SFML/Window/Win32/Joystick.cpp
deleted file mode 100755
index e5e16a9..0000000
--- a/src/SFML/Window/Win32/Joystick.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#define _WIN32_WINDOWS 0x0501
-#define _WIN32_WINNT 0x0501
-#include <SFML/Window/Joystick.hpp>
-#include <windows.h>
-#include <mmsystem.h>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Initialize the instance and bind it to a physical joystick
-////////////////////////////////////////////////////////////
-void Joystick::Initialize(unsigned int Index)
-{
- // Reset state
- myIndex = JOYSTICKID1;
- myNbButtons = 0;
- myIsConnected = false;
- myHasContinuousPOV = false;
- for (int i = 0; i < Joy::AxisCount; ++i)
- myAxes[i] = false;
-
- // Get the Index-th connected joystick
- MMRESULT Error;
- JOYINFOEX JoyInfo;
- JoyInfo.dwSize = sizeof(JoyInfo);
- JoyInfo.dwFlags = JOY_RETURNALL;
- for (unsigned int NbFound = 0; (Error = joyGetPosEx(myIndex, &JoyInfo)) != JOYERR_PARMS; myIndex++)
- {
- // Check if the current joystick is connected
- if (Error == JOYERR_NOERROR)
- {
- // Check if it's the required index
- if (NbFound == Index)
- {
- // Ok : store its parameters and return
- myIsConnected = true;
- JOYCAPS Caps;
- joyGetDevCaps(myIndex, &Caps, sizeof(Caps));
- myNbButtons = Caps.wNumButtons;
- if (myNbButtons > Joy::ButtonCount)
- myNbButtons = Joy::ButtonCount;
-
- myAxes[Joy::AxisX] = true;
- myAxes[Joy::AxisY] = true;
- myAxes[Joy::AxisZ] = (Caps.wCaps & JOYCAPS_HASZ) != 0;
- myAxes[Joy::AxisR] = (Caps.wCaps & JOYCAPS_HASR) != 0;
- myAxes[Joy::AxisU] = (Caps.wCaps & JOYCAPS_HASU) != 0;
- myAxes[Joy::AxisV] = (Caps.wCaps & JOYCAPS_HASV) != 0;
- myAxes[Joy::AxisPOV] = (Caps.wCaps & JOYCAPS_HASPOV) != 0;
- myHasContinuousPOV = (Caps.wCaps & JOYCAPS_POVCTS) != 0;
-
- return;
- }
-
- // Go to the next valid joystick
- ++NbFound;
- }
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Update the current joystick and return its new state
-////////////////////////////////////////////////////////////
-JoystickState Joystick::UpdateState()
-{
- JoystickState State;
-
- if (myIsConnected)
- {
- // Get the joystick caps (for range conversions)
- JOYCAPS Caps;
- if (joyGetDevCaps(myIndex, &Caps, sizeof(Caps)) == JOYERR_NOERROR)
- {
- // Get the current joystick state
- JOYINFOEX Pos;
- Pos.dwFlags = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNBUTTONS;
- Pos.dwFlags |= myHasContinuousPOV ? JOY_RETURNPOVCTS : JOY_RETURNPOV;
- Pos.dwSize = sizeof(JOYINFOEX);
- if (joyGetPosEx(myIndex, &Pos) == JOYERR_NOERROR)
- {
- // Axes
- State.Axis[Joy::AxisX] = (Pos.dwXpos - (Caps.wXmax + Caps.wXmin) / 2.f) * 200.f / (Caps.wXmax - Caps.wXmin);
- State.Axis[Joy::AxisY] = (Pos.dwYpos - (Caps.wYmax + Caps.wYmin) / 2.f) * 200.f / (Caps.wYmax - Caps.wYmin);
- State.Axis[Joy::AxisZ] = (Pos.dwZpos - (Caps.wZmax + Caps.wZmin) / 2.f) * 200.f / (Caps.wZmax - Caps.wZmin);
- State.Axis[Joy::AxisR] = (Pos.dwRpos - (Caps.wRmax + Caps.wRmin) / 2.f) * 200.f / (Caps.wRmax - Caps.wRmin);
- State.Axis[Joy::AxisU] = (Pos.dwUpos - (Caps.wUmax + Caps.wUmin) / 2.f) * 200.f / (Caps.wUmax - Caps.wUmin);
- State.Axis[Joy::AxisV] = (Pos.dwVpos - (Caps.wVmax + Caps.wVmin) / 2.f) * 200.f / (Caps.wVmax - Caps.wVmin);
-
- // POV
- if (Pos.dwPOV != 0xFFFF)
- State.Axis[Joy::AxisPOV] = Pos.dwPOV / 100.f;
- else
- State.Axis[Joy::AxisPOV] = -1.f;
-
- // Buttons
- for (unsigned int i = 0; i < GetButtonsCount(); ++i)
- State.Buttons[i] = (Pos.dwButtons & (1 << i)) != 0;
- }
- }
- }
-
- return State;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Check if the joystick supports the given axis
-////////////////////////////////////////////////////////////
-bool Joystick::HasAxis(Joy::Axis Axis) const
-{
- return myAxes[Axis];
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the number of buttons supported by the joystick
-////////////////////////////////////////////////////////////
-unsigned int Joystick::GetButtonsCount() const
-{
- return myNbButtons;
-}
-
-
-} // namespace priv
-
-} // namespace sf
diff --git a/src/SFML/Window/Win32/JoystickImpl.cpp b/src/SFML/Window/Win32/JoystickImpl.cpp
new file mode 100644
index 0000000..c2645e8
--- /dev/null
+++ b/src/SFML/Window/Win32/JoystickImpl.cpp
@@ -0,0 +1,189 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/JoystickImpl.hpp>
+#include <SFML/System/Clock.hpp>
+#include <windows.h>
+#include <cmath>
+
+
+namespace
+{
+ struct ConnectionCache
+ {
+ ConnectionCache() : connected(false) {}
+ bool connected;
+ sf::Clock timer;
+ };
+
+ const sf::Time connectionRefreshDelay = sf::milliseconds(500);
+ ConnectionCache connectionCache[sf::Joystick::Count];
+}
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+void JoystickImpl::initialize()
+{
+ // Perform the initial scan and populate the connection cache
+ for (unsigned int i = 0; i < Joystick::Count; ++i)
+ {
+ ConnectionCache& cache = connectionCache[i];
+
+ // Check if the joystick is connected
+ JOYINFOEX joyInfo;
+ joyInfo.dwSize = sizeof(joyInfo);
+ joyInfo.dwFlags = 0;
+ cache.connected = joyGetPosEx(JOYSTICKID1 + i, &joyInfo) == JOYERR_NOERROR;
+
+ // start the timeout
+ cache.timer.restart();
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::cleanup()
+{
+ // Nothing to do
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::isConnected(unsigned int index)
+{
+ // We check the connection state of joysticks only every N milliseconds,
+ // because of a strange (buggy?) behaviour of joyGetPosEx when joysticks
+ // are just plugged/unplugged -- it takes really long and kills the app performances
+ ConnectionCache& cache = connectionCache[index];
+ if (cache.timer.getElapsedTime() > connectionRefreshDelay)
+ {
+ cache.timer.restart();
+
+ JOYINFOEX joyInfo;
+ joyInfo.dwSize = sizeof(joyInfo);
+ joyInfo.dwFlags = 0;
+
+ cache.connected = joyGetPosEx(JOYSTICKID1 + index, &joyInfo) == JOYERR_NOERROR;
+ return cache.connected;
+ }
+ else
+ {
+ return cache.connected;
+ }
+}
+
+
+////////////////////////////////////////////////////////////
+bool JoystickImpl::open(unsigned int index)
+{
+ // No explicit "open" action is required
+ m_index = JOYSTICKID1 + index;
+
+ // Store the joystick capabilities
+ return joyGetDevCaps(m_index, &m_caps, sizeof(m_caps)) == JOYERR_NOERROR;
+}
+
+
+////////////////////////////////////////////////////////////
+void JoystickImpl::close()
+{
+ // Nothing to do
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickCaps JoystickImpl::getCapabilities() const
+{
+ JoystickCaps caps;
+
+ caps.buttonCount = m_caps.wNumButtons;
+ if (caps.buttonCount > Joystick::ButtonCount)
+ caps.buttonCount = Joystick::ButtonCount;
+
+ caps.axes[Joystick::X] = true;
+ caps.axes[Joystick::Y] = true;
+ caps.axes[Joystick::Z] = (m_caps.wCaps & JOYCAPS_HASZ) != 0;
+ caps.axes[Joystick::R] = (m_caps.wCaps & JOYCAPS_HASR) != 0;
+ caps.axes[Joystick::U] = (m_caps.wCaps & JOYCAPS_HASU) != 0;
+ caps.axes[Joystick::V] = (m_caps.wCaps & JOYCAPS_HASV) != 0;
+ caps.axes[Joystick::PovX] = (m_caps.wCaps & JOYCAPS_HASPOV) != 0;
+ caps.axes[Joystick::PovY] = (m_caps.wCaps & JOYCAPS_HASPOV) != 0;
+
+ return caps;
+}
+
+
+////////////////////////////////////////////////////////////
+JoystickState JoystickImpl::update()
+{
+ JoystickState state;
+
+ // Get the current joystick state
+ JOYINFOEX pos;
+ pos.dwFlags = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNBUTTONS;
+ pos.dwFlags |= (m_caps.wCaps & JOYCAPS_POVCTS) ? JOY_RETURNPOVCTS : JOY_RETURNPOV;
+ pos.dwSize = sizeof(JOYINFOEX);
+ if (joyGetPosEx(m_index, &pos) == JOYERR_NOERROR)
+ {
+ // The joystick is connected
+ state.connected = true;
+
+ // Axes
+ state.axes[Joystick::X] = (pos.dwXpos - (m_caps.wXmax + m_caps.wXmin) / 2.f) * 200.f / (m_caps.wXmax - m_caps.wXmin);
+ state.axes[Joystick::Y] = (pos.dwYpos - (m_caps.wYmax + m_caps.wYmin) / 2.f) * 200.f / (m_caps.wYmax - m_caps.wYmin);
+ state.axes[Joystick::Z] = (pos.dwZpos - (m_caps.wZmax + m_caps.wZmin) / 2.f) * 200.f / (m_caps.wZmax - m_caps.wZmin);
+ state.axes[Joystick::R] = (pos.dwRpos - (m_caps.wRmax + m_caps.wRmin) / 2.f) * 200.f / (m_caps.wRmax - m_caps.wRmin);
+ state.axes[Joystick::U] = (pos.dwUpos - (m_caps.wUmax + m_caps.wUmin) / 2.f) * 200.f / (m_caps.wUmax - m_caps.wUmin);
+ state.axes[Joystick::V] = (pos.dwVpos - (m_caps.wVmax + m_caps.wVmin) / 2.f) * 200.f / (m_caps.wVmax - m_caps.wVmin);
+
+ // Special case for POV, it is given as an angle
+ if (pos.dwPOV != 0xFFFF)
+ {
+ float angle = pos.dwPOV / 18000.f * 3.141592654f;
+ state.axes[Joystick::PovX] = std::cos(angle) * 100;
+ state.axes[Joystick::PovY] = std::sin(angle) * 100;
+ }
+ else
+ {
+ state.axes[Joystick::PovX] = 0;
+ state.axes[Joystick::PovY] = 0;
+ }
+
+ // Buttons
+ for (unsigned int i = 0; i < Joystick::ButtonCount; ++i)
+ state.buttons[i] = (pos.dwButtons & (1 << i)) != 0;
+ }
+
+ return state;
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/include/SFML/Network/Selector.hpp b/src/SFML/Window/Win32/JoystickImpl.hpp
index 588a72c..1630f99 100755..100644
--- a/include/SFML/Network/Selector.hpp
+++ b/src/SFML/Window/Win32/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -22,95 +22,104 @@
//
////////////////////////////////////////////////////////////
-#ifndef SFML_SELECTOR_HPP
-#define SFML_SELECTOR_HPP
+#ifndef SFML_JOYSTICKIMPLWIN32_HPP
+#define SFML_JOYSTICKIMPLWIN32_HPP
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
-#include <SFML/Network/SocketUDP.hpp>
-#include <SFML/Network/SocketTCP.hpp>
-#include <SFML/Network/SelectorBase.hpp>
-#include <map>
+#ifdef _WIN32_WINDOWS
+ #undef _WIN32_WINDOWS
+#endif
+#ifdef _WIN32_WINNT
+ #undef _WIN32_WINNT
+#endif
+#define _WIN32_WINDOWS 0x0501
+#define _WIN32_WINNT 0x0501
+#include <SFML/Window/JoystickImpl.hpp>
+#include <windows.h>
+#include <mmsystem.h>
+#include <cmath>
namespace sf
{
+namespace priv
+{
////////////////////////////////////////////////////////////
-/// Selector allow reading from multiple sockets
-/// without blocking. It's a kind of multiplexer
+/// \brief Windows implementation of joysticks
+///
////////////////////////////////////////////////////////////
-template <typename Type>
-class Selector : private SelectorBase
+class JoystickImpl
{
public :
////////////////////////////////////////////////////////////
- /// Add a socket to watch
- ///
- /// \param Socket : Socket to add
+ /// \brief Perform the global initialization of the joystick module
///
////////////////////////////////////////////////////////////
- void Add(Type Socket);
+ static void initialize();
////////////////////////////////////////////////////////////
- /// Remove a socket
- ///
- /// \param Socket : Socket to remove
+ /// \brief Perform the global cleanup of the joystick module
///
////////////////////////////////////////////////////////////
- void Remove(Type Socket);
+ static void cleanup();
////////////////////////////////////////////////////////////
- /// Remove all sockets
+ /// \brief Check if a joystick is currently connected
+ ///
+ /// \param index Index of the joystick to check
+ ///
+ /// \return True if the joystick is connected, false otherwise
///
////////////////////////////////////////////////////////////
- void Clear();
+ static bool isConnected(unsigned int index);
////////////////////////////////////////////////////////////
- /// Wait and collect sockets which are ready for reading.
- /// This functions will return either when at least one socket
- /// is ready, or when the given time is out
+ /// \brief Open the joystick
///
- /// \param Timeout : Timeout, in seconds (0 by default : no timeout)
+ /// \param index Index assigned to the joystick
///
- /// \return Number of sockets ready to be read
+ /// \return True on success, false on failure
///
////////////////////////////////////////////////////////////
- unsigned int Wait(float Timeout = 0.f);
+ bool open(unsigned int index);
////////////////////////////////////////////////////////////
- /// After a call to Wait(), get the Index-th socket which is
- /// ready for reading. The total number of sockets ready
- /// is the integer returned by the previous call to Wait()
+ /// \brief Close the joystick
///
- /// \param Index : Index of the socket to get
+ ////////////////////////////////////////////////////////////
+ void close();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Get the joystick capabilities
///
- /// \return The Index-th socket
+ /// \return Joystick capabilities
///
////////////////////////////////////////////////////////////
- Type GetSocketReady(unsigned int Index);
-
-private :
+ JoystickCaps getCapabilities() const;
////////////////////////////////////////////////////////////
- // Types
+ /// \brief Update the joystick and get its new state
+ ///
+ /// \return Joystick state
+ ///
////////////////////////////////////////////////////////////
- typedef std::map<SocketHelper::SocketType, Type> SocketTable;
+ JoystickState update();
+
+private :
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- SocketTable mySockets; ///< Table matching the SFML socket instances with their low-level handles
+ unsigned int m_index; ///< Index of the joystick
+ JOYCAPS m_caps; ///< Joystick capabilities
};
-#include <SFML/Network/Selector.inl>
-
-// Let's define the two only valid types of Selector
-typedef Selector<SocketUDP> SelectorUDP;
-typedef Selector<SocketTCP> SelectorTCP;
+} // namespace priv
} // namespace sf
-#endif // SFML_SELECTOR_HPP
+#endif // SFML_JOYSTICKIMPLWIN32_HPP
diff --git a/src/SFML/Window/Joystick.hpp b/src/SFML/Window/Win32/VideoModeImpl.cpp
index 6dd1b6e..11f04ab 100755..100644
--- a/src/SFML/Window/Joystick.hpp
+++ b/src/SFML/Window/Win32/VideoModeImpl.cpp
@@ -1,80 +1,71 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_JOYSTICK_HPP
-#define SFML_JOYSTICK_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Config.hpp>
-#include <SFML/Window/Event.hpp>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Structure holding the joystick state's parameters
-////////////////////////////////////////////////////////////
-struct JoystickState
-{
- JoystickState()
- {
- // Default value for axes
- for (int i = 0; i < Joy::AxisCount; ++i)
- Axis[i] = 0.f;
- Axis[Joy::AxisPOV] = -1.f;
-
- // Default value for buttons
- for (int i = 0; i < Joy::ButtonCount; ++i)
- Buttons[i] = false;
- }
-
- float Axis[Joy::AxisCount]; ///< Position on each axis in range [-100, 100] (except POV which is [0, 360])
- bool Buttons[Joy::ButtonCount]; ///< Status of each button (true = pressed)
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#if defined(SFML_SYSTEM_WINDOWS)
-
- #include <SFML/Window/Win32/Joystick.hpp>
-
-#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD)
-
- #include <SFML/Window/Linux/Joystick.hpp>
-
-#elif defined(SFML_SYSTEM_MACOS)
-
- #include <SFML/Window/Cocoa/Joystick.hpp>
-
-#endif
-
-
-#endif // SFML_JOYSTICK_HPP
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/VideoModeImpl.hpp>
+#include <windows.h>
+#include <algorithm>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+std::vector<VideoMode> VideoModeImpl::getFullscreenModes()
+{
+ std::vector<VideoMode> modes;
+
+ // Enumerate all available video modes for the primary display adapter
+ DEVMODE win32Mode;
+ win32Mode.dmSize = sizeof(win32Mode);
+ for (int count = 0; EnumDisplaySettings(NULL, count, &win32Mode); ++count)
+ {
+ // Convert to sf::VideoMode
+ VideoMode mode(win32Mode.dmPelsWidth, win32Mode.dmPelsHeight, win32Mode.dmBitsPerPel);
+
+ // Add it only if it is not already in the array
+ if (std::find(modes.begin(), modes.end(), mode) == modes.end())
+ modes.push_back(mode);
+ }
+
+ return modes;
+}
+
+
+////////////////////////////////////////////////////////////
+VideoMode VideoModeImpl::getDesktopMode()
+{
+ DEVMODE win32Mode;
+ win32Mode.dmSize = sizeof(win32Mode);
+ EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &win32Mode);
+
+ return VideoMode(win32Mode.dmPelsWidth, win32Mode.dmPelsHeight, win32Mode.dmBitsPerPel);
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Win32/VideoModeSupport.hpp b/src/SFML/Window/Win32/VideoModeSupport.hpp
deleted file mode 100755
index f00d474..0000000
--- a/src/SFML/Window/Win32/VideoModeSupport.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_VIDEOMODESUPPORTWIN32_HPP
-#define SFML_VIDEOMODESUPPORTWIN32_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include <SFML/Window/VideoMode.hpp>
-#include <vector>
-
-
-namespace sf
-{
-namespace priv
-{
-////////////////////////////////////////////////////////////
-/// Win32 implementation of VideoModeSupport
-/// Give access to video mode related OS-specific functions
-////////////////////////////////////////////////////////////
-class VideoModeSupport
-{
-public :
-
- ////////////////////////////////////////////////////////////
- /// Get supported video modes
- ///
- /// \param Modes : Array to fill with available video modes
- ///
- ////////////////////////////////////////////////////////////
- static void GetSupportedVideoModes(std::vector<VideoMode>& Modes);
-
- ////////////////////////////////////////////////////////////
- /// Get current desktop video mode
- ///
- /// \return Current desktop video mode
- ///
- ////////////////////////////////////////////////////////////
- static VideoMode GetDesktopVideoMode();
-};
-
-} // namespace priv
-
-} // namespace sf
-
-
-#endif // SFML_VIDEOMODESUPPORTWIN32_HPP
diff --git a/src/SFML/Window/Win32/WglContext.cpp b/src/SFML/Window/Win32/WglContext.cpp
new file mode 100644
index 0000000..7d9cc43
--- /dev/null
+++ b/src/SFML/Window/Win32/WglContext.cpp
@@ -0,0 +1,325 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/WindowImpl.hpp> // included first to avoid a warning about macro redefinition
+#include <SFML/Window/Win32/WglContext.hpp>
+#include <SFML/Window/glext/wglext.h>
+#include <SFML/System/Lock.hpp>
+#include <SFML/System/Mutex.hpp>
+#include <SFML/System/Err.hpp>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+WglContext::WglContext(WglContext* shared) :
+m_window (NULL),
+m_deviceContext(NULL),
+m_context (NULL),
+m_ownsWindow (true)
+{
+ // Creating a dummy window is mandatory: we could create a memory DC but then
+ // its pixel format wouldn't match the regular contexts' format, and thus
+ // wglShareLists would always fail. Too bad...
+
+ // Create a dummy window (disabled and hidden)
+ m_window = CreateWindowA("STATIC", "", WS_POPUP | WS_DISABLED, 0, 0, 1, 1, NULL, NULL, GetModuleHandle(NULL), NULL);
+ ShowWindow(m_window, SW_HIDE);
+ m_deviceContext = GetDC(m_window);
+
+ // Create the context
+ if (m_deviceContext)
+ createContext(shared, VideoMode::getDesktopMode().bitsPerPixel, ContextSettings());
+}
+
+
+////////////////////////////////////////////////////////////
+WglContext::WglContext(WglContext* shared, const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel) :
+m_window (NULL),
+m_deviceContext(NULL),
+m_context (NULL),
+m_ownsWindow (false)
+{
+ // Get the owner window and its device context
+ m_window = owner->getSystemHandle();
+ m_deviceContext = GetDC(m_window);
+
+ // Create the context
+ if (m_deviceContext)
+ createContext(shared, bitsPerPixel, settings);
+}
+
+
+////////////////////////////////////////////////////////////
+WglContext::WglContext(WglContext* shared, const ContextSettings& settings, unsigned int width, unsigned int height) :
+m_window (NULL),
+m_deviceContext(NULL),
+m_context (NULL),
+m_ownsWindow (true)
+{
+ // The target of the context is a hidden window.
+ // We can't create a memory DC (the resulting context wouldn't be compatible
+ // with other contexts), and we don't add the extra complexity of P-Buffers;
+ // we can still support them in the future if this solution is not good enough.
+
+ // Create the hidden window
+ m_window = CreateWindowA("STATIC", "", WS_POPUP | WS_DISABLED, 0, 0, width, height, NULL, NULL, GetModuleHandle(NULL), NULL);
+ ShowWindow(m_window, SW_HIDE);
+ m_deviceContext = GetDC(m_window);
+
+ // Create the context
+ if (m_deviceContext)
+ createContext(shared, VideoMode::getDesktopMode().bitsPerPixel, settings);
+}
+
+
+////////////////////////////////////////////////////////////
+WglContext::~WglContext()
+{
+ // Destroy the OpenGL context
+ if (m_context)
+ {
+ if (wglGetCurrentContext() == m_context)
+ wglMakeCurrent(NULL, NULL);
+ wglDeleteContext(m_context);
+ }
+
+ // Destroy the device context
+ if (m_deviceContext)
+ ReleaseDC(m_window, m_deviceContext);
+
+ // Destroy the window if we own it
+ if (m_window && m_ownsWindow)
+ DestroyWindow(m_window);
+}
+
+
+////////////////////////////////////////////////////////////
+bool WglContext::makeCurrent()
+{
+ return m_deviceContext && m_context && wglMakeCurrent(m_deviceContext, m_context);
+}
+
+
+////////////////////////////////////////////////////////////
+void WglContext::display()
+{
+ if (m_deviceContext && m_context)
+ SwapBuffers(m_deviceContext);
+}
+
+
+////////////////////////////////////////////////////////////
+void WglContext::setVerticalSyncEnabled(bool enabled)
+{
+ PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(wglGetProcAddress("wglSwapIntervalEXT"));
+ if (wglSwapIntervalEXT)
+ wglSwapIntervalEXT(enabled ? 1 : 0);
+}
+
+
+////////////////////////////////////////////////////////////
+void WglContext::createContext(WglContext* shared, unsigned int bitsPerPixel, const ContextSettings& settings)
+{
+ // Save the creation settings
+ m_settings = settings;
+
+ // Let's find a suitable pixel format -- first try with antialiasing
+ int bestFormat = 0;
+ if (m_settings.antialiasingLevel > 0)
+ {
+ // Get the wglChoosePixelFormatARB function (it is an extension)
+ PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = reinterpret_cast<PFNWGLCHOOSEPIXELFORMATARBPROC>(wglGetProcAddress("wglChoosePixelFormatARB"));
+ if (wglChoosePixelFormatARB)
+ {
+ // Define the basic attributes we want for our window
+ int intAttributes[] =
+ {
+ WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
+ WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
+ WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
+ WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
+ WGL_SAMPLE_BUFFERS_ARB, (m_settings.antialiasingLevel ? GL_TRUE : GL_FALSE),
+ WGL_SAMPLES_ARB, static_cast<int>(m_settings.antialiasingLevel),
+ 0, 0
+ };
+
+ // Let's check how many formats are supporting our requirements
+ int formats[128];
+ UINT nbFormats;
+ float floatAttributes[] = {0, 0};
+ bool isValid = wglChoosePixelFormatARB(m_deviceContext, intAttributes, floatAttributes, sizeof(formats) / sizeof(*formats), formats, &nbFormats) != 0;
+ while ((!isValid || (nbFormats == 0)) && m_settings.antialiasingLevel > 0)
+ {
+ // Decrease the antialiasing level until we find a valid one
+ m_settings.antialiasingLevel--;
+ intAttributes[11] = m_settings.antialiasingLevel;
+ isValid = wglChoosePixelFormatARB(m_deviceContext, intAttributes, floatAttributes, sizeof(formats) / sizeof(*formats), formats, &nbFormats) != 0;
+ }
+
+ // Get the best format among the returned ones
+ if (isValid && (nbFormats > 0))
+ {
+ int bestScore = 0xFFFF;
+ for (UINT i = 0; i < nbFormats; ++i)
+ {
+ // Get the current format's attributes
+ PIXELFORMATDESCRIPTOR attributes;
+ attributes.nSize = sizeof(attributes);
+ attributes.nVersion = 1;
+ DescribePixelFormat(m_deviceContext, formats[i], sizeof(attributes), &attributes);
+
+ // Evaluate the current configuration
+ int color = attributes.cRedBits + attributes.cGreenBits + attributes.cBlueBits + attributes.cAlphaBits;
+ int score = evaluateFormat(bitsPerPixel, m_settings, color, attributes.cDepthBits, attributes.cStencilBits, m_settings.antialiasingLevel);
+
+ // Keep it if it's better than the current best
+ if (score < bestScore)
+ {
+ bestScore = score;
+ bestFormat = formats[i];
+ }
+ }
+ }
+ }
+ else
+ {
+ // wglChoosePixelFormatARB not supported ; disabling antialiasing
+ err() << "Antialiasing is not supported ; it will be disabled" << std::endl;
+ m_settings.antialiasingLevel = 0;
+ }
+ }
+
+ // Find a pixel format with no antialiasing, if not needed or not supported
+ if (bestFormat == 0)
+ {
+ // Setup a pixel format descriptor from the rendering settings
+ PIXELFORMATDESCRIPTOR descriptor;
+ ZeroMemory(&descriptor, sizeof(descriptor));
+ descriptor.nSize = sizeof(descriptor);
+ descriptor.nVersion = 1;
+ descriptor.iLayerType = PFD_MAIN_PLANE;
+ descriptor.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
+ descriptor.iPixelType = PFD_TYPE_RGBA;
+ descriptor.cColorBits = static_cast<BYTE>(bitsPerPixel);
+ descriptor.cDepthBits = static_cast<BYTE>(m_settings.depthBits);
+ descriptor.cStencilBits = static_cast<BYTE>(m_settings.stencilBits);
+ descriptor.cAlphaBits = bitsPerPixel == 32 ? 8 : 0;
+
+ // Get the pixel format that best matches our requirements
+ bestFormat = ChoosePixelFormat(m_deviceContext, &descriptor);
+ if (bestFormat == 0)
+ {
+ err() << "Failed to find a suitable pixel format for device context -- cannot create OpenGL context" << std::endl;
+ return;
+ }
+ }
+
+ // Extract the depth and stencil bits from the chosen format
+ PIXELFORMATDESCRIPTOR actualFormat;
+ actualFormat.nSize = sizeof(actualFormat);
+ actualFormat.nVersion = 1;
+ DescribePixelFormat(m_deviceContext, bestFormat, sizeof(actualFormat), &actualFormat);
+ m_settings.depthBits = actualFormat.cDepthBits;
+ m_settings.stencilBits = actualFormat.cStencilBits;
+
+ // Set the chosen pixel format
+ if (!SetPixelFormat(m_deviceContext, bestFormat, &actualFormat))
+ {
+ err() << "Failed to set pixel format for device context -- cannot create OpenGL context" << std::endl;
+ return;
+ }
+
+ // Get the context to share display lists with
+ HGLRC sharedContext = shared ? shared->m_context : NULL;
+
+ // Create the OpenGL context -- first try context versions >= 3.0 if it is requested (they require special code)
+ while (!m_context && (m_settings.majorVersion >= 3))
+ {
+ PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = reinterpret_cast<PFNWGLCREATECONTEXTATTRIBSARBPROC>(wglGetProcAddress("wglCreateContextAttribsARB"));
+ if (wglCreateContextAttribsARB)
+ {
+ int attributes[] =
+ {
+ WGL_CONTEXT_MAJOR_VERSION_ARB, static_cast<int>(m_settings.majorVersion),
+ WGL_CONTEXT_MINOR_VERSION_ARB, static_cast<int>(m_settings.minorVersion),
+ WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
+ 0, 0
+ };
+ m_context = wglCreateContextAttribsARB(m_deviceContext, sharedContext, attributes);
+ }
+
+ // If we couldn't create the context, lower the version number and try again -- stop at 3.0
+ // Invalid version numbers will be generated by this algorithm (like 3.9), but we really don't care
+ if (!m_context)
+ {
+ if (m_settings.minorVersion > 0)
+ {
+ // If the minor version is not 0, we decrease it and try again
+ m_settings.minorVersion--;
+ }
+ else
+ {
+ // If the minor version is 0, we decrease the major version
+ m_settings.majorVersion--;
+ m_settings.minorVersion = 9;
+ }
+ }
+ }
+
+ // If the OpenGL >= 3.0 context failed or if we don't want one, create a regular OpenGL 1.x/2.x context
+ if (!m_context)
+ {
+ // set the context version to 2.0 (arbitrary)
+ m_settings.majorVersion = 2;
+ m_settings.minorVersion = 0;
+
+ m_context = wglCreateContext(m_deviceContext);
+ if (!m_context)
+ {
+ err() << "Failed to create an OpenGL context for this window" << std::endl;
+ return;
+ }
+
+ // Share this context with others
+ if (sharedContext)
+ {
+ // wglShareLists doesn't seem to be thread-safe
+ static Mutex mutex;
+ Lock lock(mutex);
+
+ if (!wglShareLists(sharedContext, m_context))
+ err() << "Failed to share the OpenGL context" << std::endl;
+ }
+ }
+}
+
+} // namespace priv
+
+} // namespace sf
diff --git a/src/SFML/Window/Win32/WglContext.hpp b/src/SFML/Window/Win32/WglContext.hpp
new file mode 100644
index 0000000..3fa1c3a
--- /dev/null
+++ b/src/SFML/Window/Win32/WglContext.hpp
@@ -0,0 +1,136 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef SFML_WGLCONTEXT_HPP
+#define SFML_WGLCONTEXT_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <SFML/Window/GlContext.hpp>
+#include <SFML/OpenGL.hpp>
+#include <windows.h>
+
+
+namespace sf
+{
+namespace priv
+{
+////////////////////////////////////////////////////////////
+/// \brief Windows (WGL) implementation of OpenGL contexts
+///
+////////////////////////////////////////////////////////////
+class WglContext : public GlContext
+{
+public :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new default context
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ ///
+ ////////////////////////////////////////////////////////////
+ WglContext(WglContext* shared);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context attached to a window
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param owner Pointer to the owner window
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ ///
+ ////////////////////////////////////////////////////////////
+ WglContext(WglContext* shared, const ContextSettings& settings, const WindowImpl* owner, unsigned int bitsPerPixel);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create a new context that embeds its own rendering target
+ ///
+ /// \param shared Context to share the new one with
+ /// \param settings Creation parameters
+ /// \param width Back buffer width, in pixels
+ /// \param height Back buffer height, in pixels
+ ///
+ ////////////////////////////////////////////////////////////
+ WglContext(WglContext* shared, const ContextSettings& settings, unsigned int width, unsigned int height);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Destructor
+ ///
+ ////////////////////////////////////////////////////////////
+ ~WglContext();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Activate the context as the current target for rendering
+ ///
+ /// \return True on success, false if any error happened
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual bool makeCurrent();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Display what has been rendered to the context so far
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void display();
+
+ ////////////////////////////////////////////////////////////
+ /// \brief 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).
+ ///
+ /// \param enabled : True to enable v-sync, false to deactivate
+ ///
+ ////////////////////////////////////////////////////////////
+ virtual void setVerticalSyncEnabled(bool enabled);
+
+private :
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Create the context
+ ///
+ /// \param shared Context to share the new one with (can be NULL)
+ /// \param bitsPerPixel Pixel depth, in bits per pixel
+ /// \param settings Creation parameters
+ ///
+ ////////////////////////////////////////////////////////////
+ void createContext(WglContext* shared, unsigned int bitsPerPixel, const ContextSettings& settings);
+
+ ////////////////////////////////////////////////////////////
+ // Member data
+ ////////////////////////////////////////////////////////////
+ HWND m_window; ///< Window to which the context is attached
+ HDC m_deviceContext; ///< Device context associated to the context
+ HGLRC m_context; ///< OpenGL context
+ bool m_ownsWindow; ///< Do we own the target window?
+};
+
+} // namespace priv
+
+} // namespace sf
+
+#endif // SFML_WGLCONTEXT_HPP
diff --git a/src/SFML/Window/Win32/WindowImplWin32.cpp b/src/SFML/Window/Win32/WindowImplWin32.cpp
index 506cb73..4c83cae 100755..100644
--- a/src/SFML/Window/Win32/WindowImplWin32.cpp
+++ b/src/SFML/Window/Win32/WindowImplWin32.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -25,15 +25,19 @@
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
+#ifdef _WIN32_WINDOWS
+ #undef _WIN32_WINDOWS
+#endif
+#ifdef _WIN32_WINNT
+ #undef _WIN32_WINNT
+#endif
#define _WIN32_WINDOWS 0x0501
#define _WIN32_WINNT 0x0501
#include <SFML/Window/Win32/WindowImplWin32.hpp>
-#include <SFML/Window/WindowSettings.hpp>
#include <SFML/Window/WindowStyle.hpp>
#include <GL/gl.h>
-#include <SFML/Window/glext/wglext.h>
-#include <SFML/Window/glext/glext.h>
-#include <iostream>
+#include <SFML/System/Err.hpp>
+#include <SFML/System/Utf.hpp>
#include <vector>
// MinGW lacks the definition of some Win32 constants
@@ -48,653 +52,376 @@
#endif
+namespace
+{
+ unsigned int windowCount = 0;
+ const char* classNameA = "SFML_Window";
+ const wchar_t* classNameW = L"SFML_Window";
+ sf::priv::WindowImplWin32* fullscreenWindow = NULL;
+}
+
namespace sf
{
namespace priv
{
////////////////////////////////////////////////////////////
-// Static member data
-////////////////////////////////////////////////////////////
-unsigned int WindowImplWin32::ourWindowCount = 0;
-const char* WindowImplWin32::ourClassNameA = "SFML_Window";
-const wchar_t* WindowImplWin32::ourClassNameW = L"SFML_Window";
-WindowImplWin32* WindowImplWin32::ourFullscreenWindow = NULL;
-
-
-////////////////////////////////////////////////////////////
-/// Default constructor
-/// (creates a dummy window to provide a valid OpenGL context)
-////////////////////////////////////////////////////////////
-WindowImplWin32::WindowImplWin32() :
-myHandle (NULL),
-myCallback (0),
-myCursor (NULL),
-myIcon (NULL),
-myKeyRepeatEnabled(true),
-myIsCursorIn (false)
-{
- // Register the window class at first call
- if (ourWindowCount == 0)
- RegisterWindowClass();
-
- // Use small dimensions
- myWidth = 1;
- myHeight = 1;
-
- // Create a dummy window (disabled and hidden)
- if (HasUnicodeSupport())
- {
- myHandle = CreateWindowW(ourClassNameW, L"", WS_POPUP | WS_DISABLED, 0, 0, myWidth, myHeight, NULL, NULL, GetModuleHandle(NULL), NULL);
- }
- else
- {
- myHandle = CreateWindowA(ourClassNameA, "", WS_POPUP | WS_DISABLED, 0, 0, myWidth, myHeight, NULL, NULL, GetModuleHandle(NULL), NULL);
- }
- ShowWindow(myHandle, SW_HIDE);
-
- // Create the rendering context
- if (myHandle)
- {
- WindowSettings Params(0, 0, 0);
- CreateContext(VideoMode(myWidth, myHeight, 32), Params);
-
- // Don't activate by default
- SetActive(false);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create the window implementation from an existing control
-////////////////////////////////////////////////////////////
-WindowImplWin32::WindowImplWin32(WindowHandle Handle, WindowSettings& Params) :
-myHandle (NULL),
-myCallback (0),
-myCursor (NULL),
-myIcon (NULL),
-myKeyRepeatEnabled(true),
-myIsCursorIn (false)
+WindowImplWin32::WindowImplWin32(WindowHandle handle) :
+m_handle (handle),
+m_callback (0),
+m_cursor (NULL),
+m_icon (NULL),
+m_keyRepeatEnabled(true),
+m_lastSize (0, 0),
+m_resizing (false),
+m_surrogate (0)
{
- // Save window handle
- myHandle = static_cast<HWND>(Handle);
-
- if (myHandle)
+ if (m_handle)
{
- // Get window client size
- RECT Rect;
- GetClientRect(myHandle, &Rect);
- myWidth = Rect.right - Rect.left;
- myHeight = Rect.bottom - Rect.top;
-
- // Create the rendering context
- VideoMode Mode(myWidth, myHeight, VideoMode::GetDesktopMode().BitsPerPixel);
- CreateContext(Mode, Params);
-
// We change the event procedure of the control (it is important to save the old one)
- SetWindowLongPtr(myHandle, GWLP_USERDATA, reinterpret_cast<long>(this));
- myCallback = SetWindowLongPtr(myHandle, GWLP_WNDPROC, reinterpret_cast<long>(&WindowImplWin32::GlobalOnEvent));
+ SetWindowLongPtr(m_handle, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
+ m_callback = SetWindowLongPtr(m_handle, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&WindowImplWin32::globalOnEvent));
}
}
////////////////////////////////////////////////////////////
-/// Create the window implementation
-////////////////////////////////////////////////////////////
-WindowImplWin32::WindowImplWin32(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params) :
-myHandle (NULL),
-myCallback (0),
-myCursor (NULL),
-myIcon (NULL),
-myKeyRepeatEnabled(true),
-myIsCursorIn (false)
+WindowImplWin32::WindowImplWin32(VideoMode mode, const String& title, Uint32 style, const ContextSettings& /*settings*/) :
+m_handle (NULL),
+m_callback (0),
+m_cursor (NULL),
+m_icon (NULL),
+m_keyRepeatEnabled(true),
+m_lastSize (mode.width, mode.height),
+m_resizing (false),
+m_surrogate (0)
{
// Register the window class at first call
- if (ourWindowCount == 0)
- RegisterWindowClass();
+ if (windowCount == 0)
+ registerWindowClass();
// Compute position and size
- HDC ScreenDC = GetDC(NULL);
- int Left = (GetDeviceCaps(ScreenDC, HORZRES) - Mode.Width) / 2;
- int Top = (GetDeviceCaps(ScreenDC, VERTRES) - Mode.Height) / 2;
- int Width = myWidth = Mode.Width;
- int Height = myHeight = Mode.Height;
- ReleaseDC(NULL, ScreenDC);
+ HDC screenDC = GetDC(NULL);
+ int left = (GetDeviceCaps(screenDC, HORZRES) - static_cast<int>(mode.width)) / 2;
+ int top = (GetDeviceCaps(screenDC, VERTRES) - static_cast<int>(mode.height)) / 2;
+ int width = mode.width;
+ int height = mode.height;
+ ReleaseDC(NULL, screenDC);
// Choose the window style according to the Style parameter
- DWORD Win32Style = WS_VISIBLE;
- if (WindowStyle == Style::None)
+ DWORD win32Style = WS_VISIBLE;
+ if (style == Style::None)
{
- Win32Style |= WS_POPUP;
+ win32Style |= WS_POPUP;
}
else
{
- if (WindowStyle & Style::Titlebar) Win32Style |= WS_CAPTION | WS_MINIMIZEBOX;
- if (WindowStyle & Style::Resize) Win32Style |= WS_THICKFRAME | WS_MAXIMIZEBOX;
- if (WindowStyle & Style::Close) Win32Style |= WS_SYSMENU;
+ if (style & Style::Titlebar) win32Style |= WS_CAPTION | WS_MINIMIZEBOX;
+ if (style & Style::Resize) win32Style |= WS_THICKFRAME | WS_MAXIMIZEBOX;
+ if (style & Style::Close) win32Style |= WS_SYSMENU;
}
// In windowed mode, adjust width and height so that window will have the requested client area
- bool Fullscreen = (WindowStyle & Style::Fullscreen) != 0;
- if (!Fullscreen)
+ bool fullscreen = (style & Style::Fullscreen) != 0;
+ if (!fullscreen)
{
- RECT Rect = {0, 0, Width, Height};
- AdjustWindowRect(&Rect, Win32Style, false);
- Width = Rect.right - Rect.left;
- Height = Rect.bottom - Rect.top;
+ RECT rectangle = {0, 0, width, height};
+ AdjustWindowRect(&rectangle, win32Style, false);
+ width = rectangle.right - rectangle.left;
+ height = rectangle.bottom - rectangle.top;
}
// Create the window
- if (HasUnicodeSupport())
+ if (hasUnicodeSupport())
{
- wchar_t WTitle[256];
- int NbChars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Title.c_str(), static_cast<int>(Title.size()), WTitle, sizeof(WTitle) / sizeof(*WTitle));
- WTitle[NbChars] = L'\0';
- myHandle = CreateWindowW(ourClassNameW, WTitle, Win32Style, Left, Top, Width, Height, NULL, NULL, GetModuleHandle(NULL), this);
+ m_handle = CreateWindowW(classNameW, title.toWideString().c_str(), win32Style, left, top, width, height, NULL, NULL, GetModuleHandle(NULL), this);
}
else
{
- myHandle = CreateWindowA(ourClassNameA, Title.c_str(), Win32Style, Left, Top, Width, Height, NULL, NULL, GetModuleHandle(NULL), this);
+ m_handle = CreateWindowA(classNameA, title.toAnsiString().c_str(), win32Style, left, top, width, height, NULL, NULL, GetModuleHandle(NULL), this);
}
- // Switch to fullscreen if requested
- if (Fullscreen)
- SwitchToFullscreen(Mode);
+ // By default, the OS limits the size of the window the the desktop size,
+ // we have to resize it after creation to apply the real size
+ setSize(Vector2u(mode.width, mode.height));
- // Create the rendering context
- if (myHandle)
- CreateContext(Mode, Params);
+ // Switch to fullscreen if requested
+ if (fullscreen)
+ switchToFullscreen(mode);
// Increment window count
- ourWindowCount++;
-
- // Get the actual size of the window, which can be smaller even after the call to AdjustWindowRect
- // This happens when the window is bigger than the desktop
- RECT ActualRect;
- GetClientRect(myHandle, &ActualRect);
- myWidth = ActualRect.right - ActualRect.left;
- myHeight = ActualRect.bottom - ActualRect.top;
+ windowCount++;
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
WindowImplWin32::~WindowImplWin32()
{
// Destroy the custom icon, if any
- if (myIcon)
- DestroyIcon(myIcon);
+ if (m_icon)
+ DestroyIcon(m_icon);
- if (!myCallback)
+ if (!m_callback)
{
// Destroy the window
- if (myHandle)
- DestroyWindow(myHandle);
+ if (m_handle)
+ DestroyWindow(m_handle);
// Decrement the window count
- ourWindowCount--;
+ windowCount--;
// Unregister window class if we were the last window
- if (ourWindowCount == 0)
+ if (windowCount == 0)
{
- if (HasUnicodeSupport())
+ if (hasUnicodeSupport())
{
- UnregisterClassW(ourClassNameW, GetModuleHandle(NULL));
+ UnregisterClassW(classNameW, GetModuleHandle(NULL));
}
else
{
- UnregisterClassA(ourClassNameA, GetModuleHandle(NULL));
+ UnregisterClassA(classNameA, GetModuleHandle(NULL));
}
}
}
else
{
// The window is external : remove the hook on its message callback
- SetWindowLongPtr(myHandle, GWLP_WNDPROC, myCallback);
+ SetWindowLongPtr(m_handle, GWLP_WNDPROC, m_callback);
}
}
////////////////////////////////////////////////////////////
-/// Check if there's an active context on the current thread
-////////////////////////////////////////////////////////////
-bool WindowImplWin32::IsContextActive()
+WindowHandle WindowImplWin32::getSystemHandle() const
{
- return wglGetCurrentContext() != NULL;
+ return m_handle;
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::ProcessEvents
-////////////////////////////////////////////////////////////
-void WindowImplWin32::ProcessEvents()
+void WindowImplWin32::processEvents()
{
- // We update the window only if we own it
- if (!myCallback)
+ // We process the window events only if we own it
+ if (!m_callback)
{
- MSG Message;
- while (PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
+ MSG message;
+ while (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
{
- TranslateMessage(&Message);
- DispatchMessage(&Message);
+ TranslateMessage(&message);
+ DispatchMessage(&message);
}
}
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::Display
-////////////////////////////////////////////////////////////
-void WindowImplWin32::Display()
+Vector2i WindowImplWin32::getPosition() const
{
- if (myDeviceContext && myGLContext)
- SwapBuffers(myDeviceContext);
-}
+ RECT rect;
+ GetWindowRect(m_handle, &rect);
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetActive
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetActive(bool Active) const
-{
- if (Active)
- {
- if (myDeviceContext && myGLContext && (wglGetCurrentContext() != myGLContext))
- wglMakeCurrent(myDeviceContext, myGLContext);
- }
- else
- {
- if (wglGetCurrentContext() == myGLContext)
- wglMakeCurrent(NULL, NULL);
- }
+ return Vector2i(rect.left, rect.top);
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::UseVerticalSync
-////////////////////////////////////////////////////////////
-void WindowImplWin32::UseVerticalSync(bool Enabled)
-{
- PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(wglGetProcAddress("wglSwapIntervalEXT"));
- if (wglSwapIntervalEXT)
- wglSwapIntervalEXT(Enabled ? 1 : 0);
-}
-
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::ShowMouseCursor
-////////////////////////////////////////////////////////////
-void WindowImplWin32::ShowMouseCursor(bool Show)
+void WindowImplWin32::setPosition(const Vector2i& position)
{
- if (Show)
- myCursor = LoadCursor(NULL, IDC_ARROW);
- else
- myCursor = NULL;
-
- SetCursor(myCursor);
+ SetWindowPos(m_handle, NULL, position.x, position.y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetCursorPosition
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetCursorPosition(unsigned int Left, unsigned int Top)
+Vector2u WindowImplWin32::getSize() const
{
- POINT Pos = {Left, Top};
- ClientToScreen(myHandle, &Pos);
- SetCursorPos(Pos.x, Pos.y);
-}
-
+ RECT rect;
+ GetClientRect(m_handle, &rect);
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetPosition
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetPosition(int Left, int Top)
-{
- SetWindowPos(myHandle, NULL, Left, Top, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
+ return Vector2u(rect.right - rect.left, rect.bottom - rect.top);
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetSize
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetSize(unsigned int Width, unsigned int Height)
+void WindowImplWin32::setSize(const Vector2u& size)
{
// SetWindowPos wants the total size of the window (including title bar and borders),
// so we have to compute it
- RECT Rect = {0, 0, Width, Height};
- AdjustWindowRect(&Rect, GetWindowLong(myHandle, GWL_STYLE), false);
- Width = Rect.right - Rect.left;
- Height = Rect.bottom - Rect.top;
-
- SetWindowPos(myHandle, NULL, 0, 0, Width, Height, SWP_NOMOVE | SWP_NOZORDER);
-}
+ RECT rectangle = {0, 0, static_cast<long>(size.x), static_cast<long>(size.y)};
+ AdjustWindowRect(&rectangle, GetWindowLong(m_handle, GWL_STYLE), false);
+ int width = rectangle.right - rectangle.left;
+ int height = rectangle.bottom - rectangle.top;
-
-////////////////////////////////////////////////////////////
-/// /see WindowImpl::Show
-////////////////////////////////////////////////////////////
-void WindowImplWin32::Show(bool State)
-{
- ShowWindow(myHandle, State ? SW_SHOW : SW_HIDE);
+ SetWindowPos(m_handle, NULL, 0, 0, width, height, SWP_NOMOVE | SWP_NOZORDER);
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::EnableKeyRepeat
-////////////////////////////////////////////////////////////
-void WindowImplWin32::EnableKeyRepeat(bool Enabled)
+void WindowImplWin32::setTitle(const String& title)
{
- myKeyRepeatEnabled = Enabled;
+ if (hasUnicodeSupport())
+ {
+ SetWindowTextW(m_handle, title.toWideString().c_str());
+ }
+ else
+ {
+ SetWindowTextA(m_handle, title.toAnsiString().c_str());
+ }
}
////////////////////////////////////////////////////////////
-/// /see WindowImpl::SetIcon
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels)
+void WindowImplWin32::setIcon(unsigned int width, unsigned int height, const Uint8* pixels)
{
// First destroy the previous one
- if (myIcon)
- DestroyIcon(myIcon);
+ if (m_icon)
+ DestroyIcon(m_icon);
- // Windows wants BGRA pixels : swap red and blue channels
- std::vector<Uint8> IconPixels(Width * Height * 4);
- for (std::size_t i = 0; i < IconPixels.size() / 4; ++i)
+ // Windows wants BGRA pixels: swap red and blue channels
+ std::vector<Uint8> iconPixels(width * height * 4);
+ for (std::size_t i = 0; i < iconPixels.size() / 4; ++i)
{
- IconPixels[i * 4 + 0] = Pixels[i * 4 + 2];
- IconPixels[i * 4 + 1] = Pixels[i * 4 + 1];
- IconPixels[i * 4 + 2] = Pixels[i * 4 + 0];
- IconPixels[i * 4 + 3] = Pixels[i * 4 + 3];
+ iconPixels[i * 4 + 0] = pixels[i * 4 + 2];
+ iconPixels[i * 4 + 1] = pixels[i * 4 + 1];
+ iconPixels[i * 4 + 2] = pixels[i * 4 + 0];
+ iconPixels[i * 4 + 3] = pixels[i * 4 + 3];
}
- // Create the icon from the pixels array
- myIcon = CreateIcon(GetModuleHandle(NULL), Width, Height, 1, 32, NULL, &IconPixels[0]);
+ // Create the icon from the pixel array
+ m_icon = CreateIcon(GetModuleHandle(NULL), width, height, 1, 32, NULL, &iconPixels[0]);
// Set it as both big and small icon of the window
- if (myIcon)
+ if (m_icon)
{
- SendMessage(myHandle, WM_SETICON, ICON_BIG, (LPARAM)myIcon);
- SendMessage(myHandle, WM_SETICON, ICON_SMALL, (LPARAM)myIcon);
+ SendMessage(m_handle, WM_SETICON, ICON_BIG, (LPARAM)m_icon);
+ SendMessage(m_handle, WM_SETICON, ICON_SMALL, (LPARAM)m_icon);
}
else
{
- std::cerr << "Failed to set the window's icon" << std::endl;
+ err() << "Failed to set the window's icon" << std::endl;
}
}
////////////////////////////////////////////////////////////
-/// Register the window class
-////////////////////////////////////////////////////////////
-void WindowImplWin32::RegisterWindowClass()
+void WindowImplWin32::setVisible(bool visible)
{
- if (HasUnicodeSupport())
- {
- WNDCLASSW WindowClass;
- WindowClass.style = 0;
- WindowClass.lpfnWndProc = &WindowImplWin32::GlobalOnEvent;
- WindowClass.cbClsExtra = 0;
- WindowClass.cbWndExtra = 0;
- WindowClass.hInstance = GetModuleHandle(NULL);
- WindowClass.hIcon = NULL;
- WindowClass.hCursor = 0;
- WindowClass.hbrBackground = 0;
- WindowClass.lpszMenuName = NULL;
- WindowClass.lpszClassName = ourClassNameW;
- RegisterClassW(&WindowClass);
- }
- else
- {
- WNDCLASSA WindowClass;
- WindowClass.style = 0;
- WindowClass.lpfnWndProc = &WindowImplWin32::GlobalOnEvent;
- WindowClass.cbClsExtra = 0;
- WindowClass.cbWndExtra = 0;
- WindowClass.hInstance = GetModuleHandle(NULL);
- WindowClass.hIcon = NULL;
- WindowClass.hCursor = 0;
- WindowClass.hbrBackground = 0;
- WindowClass.lpszMenuName = NULL;
- WindowClass.lpszClassName = ourClassNameA;
- RegisterClassA(&WindowClass);
- }
+ ShowWindow(m_handle, visible ? SW_SHOW : SW_HIDE);
}
////////////////////////////////////////////////////////////
-/// Switch to fullscreen mode
-////////////////////////////////////////////////////////////
-void WindowImplWin32::SwitchToFullscreen(const VideoMode& Mode)
+void WindowImplWin32::setMouseCursorVisible(bool visible)
{
- DEVMODE DevMode;
- DevMode.dmSize = sizeof(DEVMODE);
- DevMode.dmPelsWidth = Mode.Width;
- DevMode.dmPelsHeight = Mode.Height;
- DevMode.dmBitsPerPel = Mode.BitsPerPixel;
- DevMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
-
- // Apply fullscreen mode
- if (ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
- {
- std::cerr << "Failed to change display mode for fullscreen" << std::endl;
- return;
- }
-
- // Make the window flags compatible with fullscreen mode
- SetWindowLong(myHandle, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
- SetWindowLong(myHandle, GWL_EXSTYLE, WS_EX_APPWINDOW);
-
- // Resize the window so that it fits the entire screen
- SetWindowPos(myHandle, HWND_TOP, 0, 0, Mode.Width, Mode.Height, SWP_FRAMECHANGED);
- ShowWindow(myHandle, SW_SHOW);
+ if (visible)
+ m_cursor = LoadCursor(NULL, IDC_ARROW);
+ else
+ m_cursor = NULL;
- // Set "this" as the current fullscreen window
- ourFullscreenWindow = this;
+ SetCursor(m_cursor);
}
////////////////////////////////////////////////////////////
-/// Construct the context from graphics settings
-////////////////////////////////////////////////////////////
-void WindowImplWin32::CreateContext(const VideoMode& Mode, WindowSettings& Params)
+void WindowImplWin32::setKeyRepeatEnabled(bool enabled)
{
- // Get the device context attached to the window
- myDeviceContext = GetDC(myHandle);
- if (myDeviceContext == NULL)
- {
- std::cerr << "Failed to get device context of window -- cannot create OpenGL context" << std::endl;
- return;
- }
-
- // Let's find a suitable pixel format -- first try with antialiasing
- int BestFormat = 0;
- if (Params.AntialiasingLevel > 0)
- {
- // Get the wglChoosePixelFormatARB function (it is an extension)
- PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = reinterpret_cast<PFNWGLCHOOSEPIXELFORMATARBPROC>(wglGetProcAddress("wglChoosePixelFormatARB"));
- if (wglChoosePixelFormatARB)
- {
- // Define the basic attributes we want for our window
- int IntAttributes[] =
- {
- WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
- WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
- WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
- WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
- WGL_SAMPLE_BUFFERS_ARB, (Params.AntialiasingLevel ? GL_TRUE : GL_FALSE),
- WGL_SAMPLES_ARB, Params.AntialiasingLevel,
- 0, 0
- };
-
- // Let's check how many formats are supporting our requirements
- int Formats[128];
- UINT NbFormats;
- float FloatAttributes[] = {0, 0};
- bool IsValid = wglChoosePixelFormatARB(myDeviceContext, IntAttributes, FloatAttributes, sizeof(Formats) / sizeof(*Formats), Formats, &NbFormats) != 0;
- if (!IsValid || (NbFormats == 0))
- {
- if (Params.AntialiasingLevel > 2)
- {
- // No format matching our needs : reduce the multisampling level
- std::cerr << "Failed to find a pixel format supporting "
- << Params.AntialiasingLevel << " antialiasing levels ; trying with 2 levels" << std::endl;
-
- Params.AntialiasingLevel = IntAttributes[11] = 2;
- IsValid = wglChoosePixelFormatARB(myDeviceContext, IntAttributes, FloatAttributes, sizeof(Formats) / sizeof(*Formats), Formats, &NbFormats) != 0;
- }
+ m_keyRepeatEnabled = enabled;
+}
- if (!IsValid || (NbFormats == 0))
- {
- // Cannot find any pixel format supporting multisampling ; disabling antialiasing
- std::cerr << "Failed to find a pixel format supporting antialiasing ; antialiasing will be disabled" << std::endl;
- Params.AntialiasingLevel = 0;
- }
- }
- // Get the best format among the returned ones
- if (IsValid && (NbFormats > 0))
- {
- int BestScore = 0xFFFF;
- for (UINT i = 0; i < NbFormats; ++i)
- {
- // Get the current format's attributes
- PIXELFORMATDESCRIPTOR Attribs;
- Attribs.nSize = sizeof(PIXELFORMATDESCRIPTOR);
- Attribs.nVersion = 1;
- DescribePixelFormat(myDeviceContext, Formats[i], sizeof(PIXELFORMATDESCRIPTOR), &Attribs);
-
- // Evaluate the current configuration
- int Color = Attribs.cRedBits + Attribs.cGreenBits + Attribs.cBlueBits + Attribs.cAlphaBits;
- int Score = EvaluateConfig(Mode, Params, Color, Attribs.cDepthBits, Attribs.cStencilBits, Params.AntialiasingLevel);
-
- // Keep it if it's better than the current best
- if (Score < BestScore)
- {
- BestScore = Score;
- BestFormat = Formats[i];
- }
- }
- }
- }
- else
- {
- // wglChoosePixelFormatARB not supported ; disabling antialiasing
- std::cerr << "Antialiasing is not supported ; it will be disabled" << std::endl;
- Params.AntialiasingLevel = 0;
- }
+////////////////////////////////////////////////////////////
+void WindowImplWin32::registerWindowClass()
+{
+ if (hasUnicodeSupport())
+ {
+ WNDCLASSW windowClass;
+ windowClass.style = 0;
+ windowClass.lpfnWndProc = &WindowImplWin32::globalOnEvent;
+ windowClass.cbClsExtra = 0;
+ windowClass.cbWndExtra = 0;
+ windowClass.hInstance = GetModuleHandle(NULL);
+ windowClass.hIcon = NULL;
+ windowClass.hCursor = 0;
+ windowClass.hbrBackground = 0;
+ windowClass.lpszMenuName = NULL;
+ windowClass.lpszClassName = classNameW;
+ RegisterClassW(&windowClass);
}
-
- // Find a pixel format with no antialiasing, if not needed or not supported
- if (BestFormat == 0)
+ else
{
- // Setup a pixel format descriptor from the rendering settings
- PIXELFORMATDESCRIPTOR PixelDescriptor;
- ZeroMemory(&PixelDescriptor, sizeof(PIXELFORMATDESCRIPTOR));
- PixelDescriptor.nSize = sizeof(PIXELFORMATDESCRIPTOR);
- PixelDescriptor.nVersion = 1;
- PixelDescriptor.iLayerType = PFD_MAIN_PLANE;
- PixelDescriptor.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
- PixelDescriptor.iPixelType = PFD_TYPE_RGBA;
- PixelDescriptor.cColorBits = static_cast<BYTE>(Mode.BitsPerPixel);
- PixelDescriptor.cDepthBits = static_cast<BYTE>(Params.DepthBits);
- PixelDescriptor.cStencilBits = static_cast<BYTE>(Params.StencilBits);
- PixelDescriptor.cAlphaBits = Mode.BitsPerPixel == 32 ? 8 : 0;
-
- // Get the pixel format that best matches our requirements
- BestFormat = ChoosePixelFormat(myDeviceContext, &PixelDescriptor);
- if (BestFormat == 0)
- {
- std::cerr << "Failed to find a suitable pixel format for device context -- cannot create OpenGL context" << std::endl;
- return;
- }
+ WNDCLASSA windowClass;
+ windowClass.style = 0;
+ windowClass.lpfnWndProc = &WindowImplWin32::globalOnEvent;
+ windowClass.cbClsExtra = 0;
+ windowClass.cbWndExtra = 0;
+ windowClass.hInstance = GetModuleHandle(NULL);
+ windowClass.hIcon = NULL;
+ windowClass.hCursor = 0;
+ windowClass.hbrBackground = 0;
+ windowClass.lpszMenuName = NULL;
+ windowClass.lpszClassName = classNameA;
+ RegisterClassA(&windowClass);
}
+}
- // Extract the depth and stencil bits from the chosen format
- PIXELFORMATDESCRIPTOR ActualFormat;
- ActualFormat.nSize = sizeof(PIXELFORMATDESCRIPTOR);
- ActualFormat.nVersion = 1;
- DescribePixelFormat(myDeviceContext, BestFormat, sizeof(PIXELFORMATDESCRIPTOR), &ActualFormat);
- Params.DepthBits = ActualFormat.cDepthBits;
- Params.StencilBits = ActualFormat.cStencilBits;
- // Set the chosen pixel format
- if (!SetPixelFormat(myDeviceContext, BestFormat, &ActualFormat))
- {
- std::cerr << "Failed to set pixel format for device context -- cannot create OpenGL context" << std::endl;
- return;
- }
+////////////////////////////////////////////////////////////
+void WindowImplWin32::switchToFullscreen(const VideoMode& mode)
+{
+ DEVMODE devMode;
+ devMode.dmSize = sizeof(devMode);
+ devMode.dmPelsWidth = mode.width;
+ devMode.dmPelsHeight = mode.height;
+ devMode.dmBitsPerPel = mode.bitsPerPixel;
+ devMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
- // Create the OpenGL context from the device context
- myGLContext = wglCreateContext(myDeviceContext);
- if (myGLContext == NULL)
+ // Apply fullscreen mode
+ if (ChangeDisplaySettings(&devMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
- std::cerr << "Failed to create an OpenGL context for this window" << std::endl;
+ err() << "Failed to change display mode for fullscreen" << std::endl;
return;
}
- // Share display lists with other contexts
- HGLRC CurrentContext = wglGetCurrentContext();
- if (CurrentContext)
- wglShareLists(CurrentContext, myGLContext);
+ // Make the window flags compatible with fullscreen mode
+ SetWindowLong(m_handle, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
+ SetWindowLong(m_handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
- // Activate the context
- SetActive(true);
+ // Resize the window so that it fits the entire screen
+ SetWindowPos(m_handle, HWND_TOP, 0, 0, mode.width, mode.height, SWP_FRAMECHANGED);
+ ShowWindow(m_handle, SW_SHOW);
- // Enable multisampling
- if (Params.AntialiasingLevel > 0)
- glEnable(GL_MULTISAMPLE_ARB);
+ // Set "this" as the current fullscreen window
+ fullscreenWindow = this;
}
////////////////////////////////////////////////////////////
-/// Free all the graphical resources attached to the window
-////////////////////////////////////////////////////////////
-void WindowImplWin32::Cleanup()
+void WindowImplWin32::cleanup()
{
// Restore the previous video mode (in case we were running in fullscreen)
- if (ourFullscreenWindow == this)
+ if (fullscreenWindow == this)
{
ChangeDisplaySettings(NULL, 0);
- ourFullscreenWindow = NULL;
+ fullscreenWindow = NULL;
}
// Unhide the mouse cursor (in case it was hidden)
- ShowMouseCursor(true);
-
- // Destroy the OpenGL context
- if (myGLContext)
- {
- // Unbind the context before destroying it
- SetActive(false);
-
- wglDeleteContext(myGLContext);
- myGLContext = NULL;
- }
- if (myDeviceContext)
- {
- ReleaseDC(myHandle, myDeviceContext);
- myDeviceContext = NULL;
- }
+ setMouseCursorVisible(true);
}
////////////////////////////////////////////////////////////
-/// Process a Win32 event
-////////////////////////////////////////////////////////////
-void WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
+void WindowImplWin32::processEvent(UINT message, WPARAM wParam, LPARAM lParam)
{
// Don't process any message until window is created
- if (myHandle == NULL)
+ if (m_handle == NULL)
return;
- switch (Message)
+ switch (message)
{
// Destroy event
case WM_DESTROY :
{
// Here we must cleanup resources !
- Cleanup();
+ cleanup();
break;
}
@@ -702,8 +429,8 @@ void WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
case WM_SETCURSOR :
{
// The mouse has moved, if the cursor is in our window we must refresh the cursor
- if (LOWORD(LParam) == HTCLIENT)
- SetCursor(myCursor);
+ if (LOWORD(lParam) == HTCLIENT)
+ SetCursor(m_cursor);
break;
}
@@ -711,56 +438,120 @@ void WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
// Close event
case WM_CLOSE :
{
- Event Evt;
- Evt.Type = Event::Closed;
- SendEvent(Evt);
+ Event event;
+ event.type = Event::Closed;
+ pushEvent(event);
break;
}
// Resize event
case WM_SIZE :
{
- // Update window size
- RECT Rect;
- GetClientRect(myHandle, &Rect);
- myWidth = Rect.right - Rect.left;
- myHeight = Rect.bottom - Rect.top;
-
- Event Evt;
- Evt.Type = Event::Resized;
- Evt.Size.Width = myWidth;
- Evt.Size.Height = myHeight;
- SendEvent(Evt);
+ // Consider only events triggered by a maximize or a un-maximize
+ if (wParam != SIZE_MINIMIZED && !m_resizing && m_lastSize != getSize())
+ {
+ // Update the last handled size
+ m_lastSize = getSize();
+
+ // Push a resize event
+ Event event;
+ event.type = Event::Resized;
+ event.size.width = m_lastSize.x;
+ event.size.height = m_lastSize.y;
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // Start resizing
+ case WM_ENTERSIZEMOVE:
+ {
+ m_resizing = true;
+ break;
+ }
+
+ // Stop resizing
+ case WM_EXITSIZEMOVE:
+ {
+ m_resizing = false;
+
+ // Ignore cases where the window has only been moved
+ if(m_lastSize != getSize())
+ {
+ // Update the last handled size
+ m_lastSize = getSize();
+
+ // Push a resize event
+ Event event;
+ event.type = Event::Resized;
+ event.size.width = m_lastSize.x;
+ event.size.height = m_lastSize.y;
+ pushEvent(event);
+ }
+ break;
+ }
+
+ // The system request the min/max window size and position
+ case WM_GETMINMAXINFO :
+ {
+ // We override the returned information to remove the default limit
+ // (the OS doesn't allow windows bigger than the desktop by default)
+ MINMAXINFO* info = reinterpret_cast<MINMAXINFO*>(lParam);
+ info->ptMaxTrackSize.x = 50000;
+ info->ptMaxTrackSize.y = 50000;
break;
}
// Gain focus event
case WM_SETFOCUS :
{
- Event Evt;
- Evt.Type = Event::GainedFocus;
- SendEvent(Evt);
+ Event event;
+ event.type = Event::GainedFocus;
+ pushEvent(event);
break;
}
// Lost focus event
case WM_KILLFOCUS :
{
- Event Evt;
- Evt.Type = Event::LostFocus;
- SendEvent(Evt);
+ Event event;
+ event.type = Event::LostFocus;
+ pushEvent(event);
break;
}
// Text event
case WM_CHAR :
{
- if (myKeyRepeatEnabled || ((LParam & (1 << 30)) == 0))
+ if (m_keyRepeatEnabled || ((lParam & (1 << 30)) == 0))
{
- Event Evt;
- Evt.Type = Event::TextEntered;
- Evt.Text.Unicode = static_cast<Uint32>(WParam);
- SendEvent(Evt);
+ // Get the code of the typed character
+ Uint32 character = static_cast<Uint32>(wParam);
+
+ // Check if it is the first part of a surrogate pair, or a regular character
+ if ((character >= 0xD800) && (character <= 0xDBFF))
+ {
+ // First part of a surrogate pair: store it and wait for the second one
+ m_surrogate = static_cast<Uint16>(character);
+ }
+ else
+ {
+
+ // Check if it is the second part of a surrogate pair, or a regular character
+ if ((character >= 0xDC00) && (character <= 0xDFFF))
+ {
+ // Convert the UTF-16 surrogate pair to a single UTF-32 value
+ Uint16 utf16[] = {m_surrogate, static_cast<Uint16>(character)};
+ sf::Utf16::toUtf32(utf16, utf16 + 2, &character);
+ m_surrogate = 0;
+ }
+
+ // Send a TextEntered event
+ Event event;
+ event.type = Event::TextEntered;
+ event.text.unicode = character;
+ pushEvent(event);
+ }
}
break;
}
@@ -769,15 +560,16 @@ void WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
case WM_KEYDOWN :
case WM_SYSKEYDOWN :
{
- if (myKeyRepeatEnabled || ((HIWORD(LParam) & KF_REPEAT) == 0))
+ if (m_keyRepeatEnabled || ((HIWORD(lParam) & KF_REPEAT) == 0))
{
- Event Evt;
- Evt.Type = Event::KeyPressed;
- Evt.Key.Alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
- Evt.Key.Control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
- Evt.Key.Shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
- Evt.Key.Code = VirtualKeyCodeToSF(WParam, LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::KeyPressed;
+ event.key.alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
+ event.key.control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
+ event.key.shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
+ event.key.system = HIWORD(GetAsyncKeyState(VK_LWIN)) || HIWORD(GetAsyncKeyState(VK_RWIN));
+ event.key.code = virtualKeyCodeToSF(wParam, lParam);
+ pushEvent(event);
}
break;
}
@@ -786,301 +578,315 @@ void WindowImplWin32::ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam)
case WM_KEYUP :
case WM_SYSKEYUP :
{
- Event Evt;
- Evt.Type = Event::KeyReleased;
- Evt.Key.Alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
- Evt.Key.Control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
- Evt.Key.Shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
- Evt.Key.Code = VirtualKeyCodeToSF(WParam, LParam);
- SendEvent(Evt);
-
+ Event event;
+ event.type = Event::KeyReleased;
+ event.key.alt = HIWORD(GetAsyncKeyState(VK_MENU)) != 0;
+ event.key.control = HIWORD(GetAsyncKeyState(VK_CONTROL)) != 0;
+ event.key.shift = HIWORD(GetAsyncKeyState(VK_SHIFT)) != 0;
+ event.key.system = HIWORD(GetAsyncKeyState(VK_LWIN)) || HIWORD(GetAsyncKeyState(VK_RWIN));
+ event.key.code = virtualKeyCodeToSF(wParam, lParam);
+ pushEvent(event);
break;
}
// Mouse wheel event
case WM_MOUSEWHEEL :
{
- Event Evt;
- Evt.Type = Event::MouseWheelMoved;
- Evt.MouseWheel.Delta = static_cast<Int16>(HIWORD(WParam)) / 120;
- SendEvent(Evt);
+ // Mouse position is in screen coordinates, convert it to window coordinates
+ POINT position;
+ position.x = static_cast<Int16>(LOWORD(lParam));
+ position.y = static_cast<Int16>(HIWORD(lParam));
+ ScreenToClient(m_handle, &position);
+
+ Event event;
+ event.type = Event::MouseWheelMoved;
+ event.mouseWheel.delta = static_cast<Int16>(HIWORD(wParam)) / 120;
+ event.mouseWheel.x = position.x;
+ event.mouseWheel.y = position.y;
+ pushEvent(event);
break;
}
// Mouse left button down event
case WM_LBUTTONDOWN :
{
- Event Evt;
- Evt.Type = Event::MouseButtonPressed;
- Evt.MouseButton.Button = Mouse::Left;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.button = Mouse::Left;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse left button up event
case WM_LBUTTONUP :
{
- Event Evt;
- Evt.Type = Event::MouseButtonReleased;
- Evt.MouseButton.Button = Mouse::Left;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.button = Mouse::Left;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse right button down event
case WM_RBUTTONDOWN :
{
- Event Evt;
- Evt.Type = Event::MouseButtonPressed;
- Evt.MouseButton.Button = Mouse::Right;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.button = Mouse::Right;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse right button up event
case WM_RBUTTONUP :
{
- Event Evt;
- Evt.Type = Event::MouseButtonReleased;
- Evt.MouseButton.Button = Mouse::Right;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.button = Mouse::Right;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse wheel button down event
case WM_MBUTTONDOWN :
{
- Event Evt;
- Evt.Type = Event::MouseButtonPressed;
- Evt.MouseButton.Button = Mouse::Middle;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.button = Mouse::Middle;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse wheel button up event
case WM_MBUTTONUP :
{
- Event Evt;
- Evt.Type = Event::MouseButtonReleased;
- Evt.MouseButton.Button = Mouse::Middle;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.button = Mouse::Middle;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse X button down event
case WM_XBUTTONDOWN :
{
- Event Evt;
- Evt.Type = Event::MouseButtonPressed;
- Evt.MouseButton.Button = HIWORD(WParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonPressed;
+ event.mouseButton.button = HIWORD(wParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse X button up event
case WM_XBUTTONUP :
{
- Event Evt;
- Evt.Type = Event::MouseButtonReleased;
- Evt.MouseButton.Button = HIWORD(WParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
- Evt.MouseButton.X = LOWORD(LParam);
- Evt.MouseButton.Y = HIWORD(LParam);
- SendEvent(Evt);
+ Event event;
+ event.type = Event::MouseButtonReleased;
+ event.mouseButton.button = HIWORD(wParam) == XBUTTON1 ? Mouse::XButton1 : Mouse::XButton2;
+ event.mouseButton.x = static_cast<Int16>(LOWORD(lParam));
+ event.mouseButton.y = static_cast<Int16>(HIWORD(lParam));
+ pushEvent(event);
break;
}
// Mouse move event
case WM_MOUSEMOVE :
{
- // Check if we need to generate a MouseEntered event
- if (!myIsCursorIn)
+ // Extract the mouse local coordinates
+ int x = static_cast<Int16>(LOWORD(lParam));
+ int y = static_cast<Int16>(HIWORD(lParam));
+
+ // Get the client area of the window
+ RECT area;
+ GetClientRect(m_handle, &area);
+
+ // Check the mouse position against the window
+ if ((x < area.left) || (x > area.right) || (y < area.top) || (y > area.bottom))
{
- TRACKMOUSEEVENT MouseEvent;
- MouseEvent.cbSize = sizeof(TRACKMOUSEEVENT);
- MouseEvent.hwndTrack = myHandle;
- MouseEvent.dwFlags = TME_LEAVE;
- TrackMouseEvent(&MouseEvent);
+ // Mouse is outside
- myIsCursorIn = true;
+ // Release the mouse capture
+ ReleaseCapture();
- Event Evt;
- Evt.Type = Event::MouseEntered;
- SendEvent(Evt);
+ // Generate a MouseLeft event
+ Event event;
+ event.type = Event::MouseLeft;
+ pushEvent(event);
}
+ else
+ {
+ // Mouse is inside
+ if (GetCapture() != m_handle)
+ {
+ // Mouse was previously outside the window
- Event Evt;
- Evt.Type = Event::MouseMoved;
- Evt.MouseMove.X = LOWORD(LParam);
- Evt.MouseMove.Y = HIWORD(LParam);
- SendEvent(Evt);
- break;
- }
+ // Capture the mouse
+ SetCapture(m_handle);
- // Mouse leave event
- case WM_MOUSELEAVE :
- {
- myIsCursorIn = false;
+ // Generate a MouseEntered event
+ Event event;
+ event.type = Event::MouseEntered;
+ pushEvent(event);
+ }
- Event Evt;
- Evt.Type = Event::MouseLeft;
- SendEvent(Evt);
- break;
+ // Generate a MouseMove event
+ Event event;
+ event.type = Event::MouseMoved;
+ event.mouseMove.x = x;
+ event.mouseMove.y = y;
+ pushEvent(event);
+ break;
+ }
}
}
}
////////////////////////////////////////////////////////////
-/// Convert a Win32 virtual key code to a SFML key code
-////////////////////////////////////////////////////////////
-Key::Code WindowImplWin32::VirtualKeyCodeToSF(WPARAM VirtualKey, LPARAM Flags)
+Keyboard::Key WindowImplWin32::virtualKeyCodeToSF(WPARAM key, LPARAM flags)
{
- switch (VirtualKey)
+ switch (key)
{
// Check the scancode to distinguish between left and right shift
case VK_SHIFT :
{
- static UINT LShift = MapVirtualKey(VK_LSHIFT, MAPVK_VK_TO_VSC);
- UINT scancode = (Flags & (0xFF << 16)) >> 16;
- return scancode == LShift ? Key::LShift : Key::RShift;
+ static UINT lShift = MapVirtualKey(VK_LSHIFT, MAPVK_VK_TO_VSC);
+ UINT scancode = static_cast<UINT>((flags & (0xFF << 16)) >> 16);
+ return scancode == lShift ? Keyboard::LShift : Keyboard::RShift;
}
// Check the "extended" flag to distinguish between left and right alt
- case VK_MENU : return (HIWORD(Flags) & KF_EXTENDED) ? Key::RAlt : Key::LAlt;
+ case VK_MENU : return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::RAlt : Keyboard::LAlt;
// Check the "extended" flag to distinguish between left and right control
- case VK_CONTROL : return (HIWORD(Flags) & KF_EXTENDED) ? Key::RControl : Key::LControl;
+ case VK_CONTROL : return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::RControl : Keyboard::LControl;
// Other keys are reported properly
- case VK_LWIN : return Key::LSystem;
- case VK_RWIN : return Key::RSystem;
- case VK_APPS : return Key::Menu;
- case VK_OEM_1 : return Key::SemiColon;
- case VK_OEM_2 : return Key::Slash;
- case VK_OEM_PLUS : return Key::Equal;
- case VK_OEM_MINUS : return Key::Dash;
- case VK_OEM_4 : return Key::LBracket;
- case VK_OEM_6 : return Key::RBracket;
- case VK_OEM_COMMA : return Key::Comma;
- case VK_OEM_PERIOD : return Key::Period;
- case VK_OEM_7 : return Key::Quote;
- case VK_OEM_5 : return Key::BackSlash;
- case VK_OEM_3 : return Key::Tilde;
- case VK_ESCAPE : return Key::Escape;
- case VK_SPACE : return Key::Space;
- case VK_RETURN : return Key::Return;
- case VK_BACK : return Key::Back;
- case VK_TAB : return Key::Tab;
- case VK_PRIOR : return Key::PageUp;
- case VK_NEXT : return Key::PageDown;
- case VK_END : return Key::End;
- case VK_HOME : return Key::Home;
- case VK_INSERT : return Key::Insert;
- case VK_DELETE : return Key::Delete;
- case VK_ADD : return Key::Add;
- case VK_SUBTRACT : return Key::Subtract;
- case VK_MULTIPLY : return Key::Multiply;
- case VK_DIVIDE : return Key::Divide;
- case VK_PAUSE : return Key::Pause;
- case VK_F1 : return Key::F1;
- case VK_F2 : return Key::F2;
- case VK_F3 : return Key::F3;
- case VK_F4 : return Key::F4;
- case VK_F5 : return Key::F5;
- case VK_F6 : return Key::F6;
- case VK_F7 : return Key::F7;
- case VK_F8 : return Key::F8;
- case VK_F9 : return Key::F9;
- case VK_F10 : return Key::F10;
- case VK_F11 : return Key::F11;
- case VK_F12 : return Key::F12;
- case VK_F13 : return Key::F13;
- case VK_F14 : return Key::F14;
- case VK_F15 : return Key::F15;
- case VK_LEFT : return Key::Left;
- case VK_RIGHT : return Key::Right;
- case VK_UP : return Key::Up;
- case VK_DOWN : return Key::Down;
- case VK_NUMPAD0 : return Key::Numpad0;
- case VK_NUMPAD1 : return Key::Numpad1;
- case VK_NUMPAD2 : return Key::Numpad2;
- case VK_NUMPAD3 : return Key::Numpad3;
- case VK_NUMPAD4 : return Key::Numpad4;
- case VK_NUMPAD5 : return Key::Numpad5;
- case VK_NUMPAD6 : return Key::Numpad6;
- case VK_NUMPAD7 : return Key::Numpad7;
- case VK_NUMPAD8 : return Key::Numpad8;
- case VK_NUMPAD9 : return Key::Numpad9;
- case 'A' : return Key::A;
- case 'Z' : return Key::Z;
- case 'E' : return Key::E;
- case 'R' : return Key::R;
- case 'T' : return Key::T;
- case 'Y' : return Key::Y;
- case 'U' : return Key::U;
- case 'I' : return Key::I;
- case 'O' : return Key::O;
- case 'P' : return Key::P;
- case 'Q' : return Key::Q;
- case 'S' : return Key::S;
- case 'D' : return Key::D;
- case 'F' : return Key::F;
- case 'G' : return Key::G;
- case 'H' : return Key::H;
- case 'J' : return Key::J;
- case 'K' : return Key::K;
- case 'L' : return Key::L;
- case 'M' : return Key::M;
- case 'W' : return Key::W;
- case 'X' : return Key::X;
- case 'C' : return Key::C;
- case 'V' : return Key::V;
- case 'B' : return Key::B;
- case 'N' : return Key::N;
- case '0' : return Key::Num0;
- case '1' : return Key::Num1;
- case '2' : return Key::Num2;
- case '3' : return Key::Num3;
- case '4' : return Key::Num4;
- case '5' : return Key::Num5;
- case '6' : return Key::Num6;
- case '7' : return Key::Num7;
- case '8' : return Key::Num8;
- case '9' : return Key::Num9;
- }
-
- return Key::Code(0);
+ case VK_LWIN : return Keyboard::LSystem;
+ case VK_RWIN : return Keyboard::RSystem;
+ case VK_APPS : return Keyboard::Menu;
+ case VK_OEM_1 : return Keyboard::SemiColon;
+ case VK_OEM_2 : return Keyboard::Slash;
+ case VK_OEM_PLUS : return Keyboard::Equal;
+ case VK_OEM_MINUS : return Keyboard::Dash;
+ case VK_OEM_4 : return Keyboard::LBracket;
+ case VK_OEM_6 : return Keyboard::RBracket;
+ case VK_OEM_COMMA : return Keyboard::Comma;
+ case VK_OEM_PERIOD : return Keyboard::Period;
+ case VK_OEM_7 : return Keyboard::Quote;
+ case VK_OEM_5 : return Keyboard::BackSlash;
+ case VK_OEM_3 : return Keyboard::Tilde;
+ case VK_ESCAPE : return Keyboard::Escape;
+ case VK_SPACE : return Keyboard::Space;
+ case VK_RETURN : return Keyboard::Return;
+ case VK_BACK : return Keyboard::BackSpace;
+ case VK_TAB : return Keyboard::Tab;
+ case VK_PRIOR : return Keyboard::PageUp;
+ case VK_NEXT : return Keyboard::PageDown;
+ case VK_END : return Keyboard::End;
+ case VK_HOME : return Keyboard::Home;
+ case VK_INSERT : return Keyboard::Insert;
+ case VK_DELETE : return Keyboard::Delete;
+ case VK_ADD : return Keyboard::Add;
+ case VK_SUBTRACT : return Keyboard::Subtract;
+ case VK_MULTIPLY : return Keyboard::Multiply;
+ case VK_DIVIDE : return Keyboard::Divide;
+ case VK_PAUSE : return Keyboard::Pause;
+ case VK_F1 : return Keyboard::F1;
+ case VK_F2 : return Keyboard::F2;
+ case VK_F3 : return Keyboard::F3;
+ case VK_F4 : return Keyboard::F4;
+ case VK_F5 : return Keyboard::F5;
+ case VK_F6 : return Keyboard::F6;
+ case VK_F7 : return Keyboard::F7;
+ case VK_F8 : return Keyboard::F8;
+ case VK_F9 : return Keyboard::F9;
+ case VK_F10 : return Keyboard::F10;
+ case VK_F11 : return Keyboard::F11;
+ case VK_F12 : return Keyboard::F12;
+ case VK_F13 : return Keyboard::F13;
+ case VK_F14 : return Keyboard::F14;
+ case VK_F15 : return Keyboard::F15;
+ case VK_LEFT : return Keyboard::Left;
+ case VK_RIGHT : return Keyboard::Right;
+ case VK_UP : return Keyboard::Up;
+ case VK_DOWN : return Keyboard::Down;
+ case VK_NUMPAD0 : return Keyboard::Numpad0;
+ case VK_NUMPAD1 : return Keyboard::Numpad1;
+ case VK_NUMPAD2 : return Keyboard::Numpad2;
+ case VK_NUMPAD3 : return Keyboard::Numpad3;
+ case VK_NUMPAD4 : return Keyboard::Numpad4;
+ case VK_NUMPAD5 : return Keyboard::Numpad5;
+ case VK_NUMPAD6 : return Keyboard::Numpad6;
+ case VK_NUMPAD7 : return Keyboard::Numpad7;
+ case VK_NUMPAD8 : return Keyboard::Numpad8;
+ case VK_NUMPAD9 : return Keyboard::Numpad9;
+ case 'A' : return Keyboard::A;
+ case 'Z' : return Keyboard::Z;
+ case 'E' : return Keyboard::E;
+ case 'R' : return Keyboard::R;
+ case 'T' : return Keyboard::T;
+ case 'Y' : return Keyboard::Y;
+ case 'U' : return Keyboard::U;
+ case 'I' : return Keyboard::I;
+ case 'O' : return Keyboard::O;
+ case 'P' : return Keyboard::P;
+ case 'Q' : return Keyboard::Q;
+ case 'S' : return Keyboard::S;
+ case 'D' : return Keyboard::D;
+ case 'F' : return Keyboard::F;
+ case 'G' : return Keyboard::G;
+ case 'H' : return Keyboard::H;
+ case 'J' : return Keyboard::J;
+ case 'K' : return Keyboard::K;
+ case 'L' : return Keyboard::L;
+ case 'M' : return Keyboard::M;
+ case 'W' : return Keyboard::W;
+ case 'X' : return Keyboard::X;
+ case 'C' : return Keyboard::C;
+ case 'V' : return Keyboard::V;
+ case 'B' : return Keyboard::B;
+ case 'N' : return Keyboard::N;
+ case '0' : return Keyboard::Num0;
+ case '1' : return Keyboard::Num1;
+ case '2' : return Keyboard::Num2;
+ case '3' : return Keyboard::Num3;
+ case '4' : return Keyboard::Num4;
+ case '5' : return Keyboard::Num5;
+ case '6' : return Keyboard::Num6;
+ case '7' : return Keyboard::Num7;
+ case '8' : return Keyboard::Num8;
+ case '9' : return Keyboard::Num9;
+ }
+
+ return Keyboard::Unknown;
}
////////////////////////////////////////////////////////////
-/// Check if the current version of the OS supports unicode
-/// messages and functions ; Windows 95/98/Me may not support
-/// it, whereas Windows NT/2000/XP/Vista will
-////////////////////////////////////////////////////////////
-bool WindowImplWin32::HasUnicodeSupport()
+bool WindowImplWin32::hasUnicodeSupport()
{
- OSVERSIONINFO VersionInfo;
- ZeroMemory(&VersionInfo, sizeof(VersionInfo));
- VersionInfo.dwOSVersionInfoSize = sizeof(VersionInfo);
+ OSVERSIONINFO version;
+ ZeroMemory(&version, sizeof(version));
+ version.dwOSVersionInfoSize = sizeof(version);
- if (GetVersionEx(&VersionInfo))
+ if (GetVersionEx(&version))
{
- return VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ return version.dwPlatformId == VER_PLATFORM_WIN32_NT;
}
else
{
@@ -1090,41 +896,44 @@ bool WindowImplWin32::HasUnicodeSupport()
////////////////////////////////////////////////////////////
-/// Function called whenever one of our windows receives a message
-////////////////////////////////////////////////////////////
-LRESULT CALLBACK WindowImplWin32::GlobalOnEvent(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam)
+LRESULT CALLBACK WindowImplWin32::globalOnEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam)
{
// Associate handle and Window instance when the creation message is received
- if (Message == WM_CREATE)
+ if (message == WM_CREATE)
{
// Get WindowImplWin32 instance (it was passed as the last argument of CreateWindow)
- long This = reinterpret_cast<long>(reinterpret_cast<CREATESTRUCT*>(LParam)->lpCreateParams);
+ LONG_PTR window = (LONG_PTR)reinterpret_cast<CREATESTRUCT*>(lParam)->lpCreateParams;
// Set as the "user data" parameter of the window
- SetWindowLongPtr(Handle, GWLP_USERDATA, This);
+ SetWindowLongPtr(handle, GWLP_USERDATA, window);
}
// Get the WindowImpl instance corresponding to the window handle
- WindowImplWin32* Window = reinterpret_cast<WindowImplWin32*>(GetWindowLongPtr(Handle, GWLP_USERDATA));
+ WindowImplWin32* window = handle ? reinterpret_cast<WindowImplWin32*>(GetWindowLongPtr(handle, GWLP_USERDATA)) : NULL;
// Forward the event to the appropriate function
- if (Window)
+ if (window)
{
- Window->ProcessEvent(Message, WParam, LParam);
+ window->processEvent(message, wParam, lParam);
- if (Window->myCallback)
- return CallWindowProc(reinterpret_cast<WNDPROC>(Window->myCallback), Handle, Message, WParam, LParam);
+ if (window->m_callback)
+ return CallWindowProc(reinterpret_cast<WNDPROC>(window->m_callback), handle, message, wParam, lParam);
}
// We don't forward the WM_CLOSE message to prevent the OS from automatically destroying the window
- if (Message == WM_CLOSE)
+ if (message == WM_CLOSE)
return 0;
- static const bool HasUnicode = HasUnicodeSupport();
- return HasUnicode ? DefWindowProcW(Handle, Message, WParam, LParam) :
- DefWindowProcA(Handle, Message, WParam, LParam);
+ // Don't forward the menu system command, so that pressing ALT or F10 doesn't steal the focus
+ if ((message == WM_SYSCOMMAND) && (wParam == SC_KEYMENU))
+ return 0;
+
+ static const bool hasUnicode = hasUnicodeSupport();
+ return hasUnicode ? DefWindowProcW(handle, message, wParam, lParam) :
+ DefWindowProcA(handle, message, wParam, lParam);
}
} // namespace priv
} // namespace sf
+
diff --git a/src/SFML/Window/Win32/WindowImplWin32.hpp b/src/SFML/Window/Win32/WindowImplWin32.hpp
index 20557dc..a0ccc61 100755..100644
--- a/src/SFML/Window/Win32/WindowImplWin32.hpp
+++ b/src/SFML/Window/Win32/WindowImplWin32.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -30,8 +30,8 @@
////////////////////////////////////////////////////////////
#include <SFML/Window/Event.hpp>
#include <SFML/Window/WindowImpl.hpp>
+#include <SFML/System/String.hpp>
#include <windows.h>
-#include <string>
namespace sf
@@ -39,213 +39,206 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// WindowImplWin32 is the Win32 implementation of WindowImpl
+/// \brief Windows implementation of WindowImpl
+///
////////////////////////////////////////////////////////////
class WindowImplWin32 : public WindowImpl
{
public :
////////////////////////////////////////////////////////////
- /// Default constructor
- /// (creates a dummy window to provide a valid OpenGL context)
+ /// \brief Construct the window implementation from an existing control
///
- ////////////////////////////////////////////////////////////
- WindowImplWin32();
-
- ////////////////////////////////////////////////////////////
- /// Construct the window implementation from an existing control
- ///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation settings
+ /// \param handle Platform-specific handle of the control
///
////////////////////////////////////////////////////////////
- WindowImplWin32(WindowHandle Handle, WindowSettings& Params);
+ WindowImplWin32(WindowHandle handle);
////////////////////////////////////////////////////////////
- /// Create the window implementation
+ /// \brief Create the window implementation
///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style
- /// \param Params : Creation settings
+ /// \param mode Video mode to use
+ /// \param title Title of the window
+ /// \param style Window style
+ /// \param settings Additional settings for the underlying OpenGL context
///
////////////////////////////////////////////////////////////
- WindowImplWin32(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params);
+ WindowImplWin32(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings);
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
~WindowImplWin32();
////////////////////////////////////////////////////////////
- /// Check if there's an active context on the current thread
+ /// \brief Get the OS-specific handle of the window
///
- /// \return True if there's a context bound to the current thread
+ /// \return Handle of the window
///
////////////////////////////////////////////////////////////
- static bool IsContextActive();
-
-private :
+ virtual WindowHandle getSystemHandle() const;
////////////////////////////////////////////////////////////
- /// /see WindowImpl::ProcessEvents
+ /// \brief Get the position of the window
///
- ////////////////////////////////////////////////////////////
- virtual void ProcessEvents();
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::Display
+ /// \return Position of the window, in pixels
///
////////////////////////////////////////////////////////////
- virtual void Display();
+ virtual Vector2i getPosition() const;
////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetActive
+ /// \brief Change the position of the window on screen
///
- ////////////////////////////////////////////////////////////
- virtual void SetActive(bool Active = true) const;
-
- ////////////////////////////////////////////////////////////
- /// /see WindowImpl::UseVerticalSync
+ /// \param position New position of the window, in pixels
///
////////////////////////////////////////////////////////////
- virtual void UseVerticalSync(bool Enabled);
+ virtual void setPosition(const Vector2i& position);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::ShowMouseCursor
+ /// \brief Get the client size of the window
+ ///
+ /// \return Size of the window, in pixels
///
////////////////////////////////////////////////////////////
- virtual void ShowMouseCursor(bool Show);
+ virtual Vector2u getSize() const;
////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetCursorPosition
+ /// \brief Change the size of the rendering region of the window
+ ///
+ /// \param size New size, in pixels
///
////////////////////////////////////////////////////////////
- virtual void SetCursorPosition(unsigned int Left, unsigned int Top);
+ virtual void setSize(const Vector2u& size);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetPosition
+ /// \brief Change the title of the window
+ ///
+ /// \param title New title
///
////////////////////////////////////////////////////////////
- virtual void SetPosition(int Left, int Top);
+ virtual void setTitle(const String& title);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetSize
+ /// \brief Change the window's icon
+ ///
+ /// \param width Icon's width, in pixels
+ /// \param height Icon's height, in pixels
+ /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits
///
////////////////////////////////////////////////////////////
- virtual void SetSize(unsigned int Width, unsigned int Height);
+ virtual void setIcon(unsigned int width, unsigned int height, const Uint8* pixels);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::Show
+ /// \brief Show or hide the window
+ ///
+ /// \param visible True to show, false to hide
///
////////////////////////////////////////////////////////////
- virtual void Show(bool State);
+ virtual void setVisible(bool visible);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::EnableKeyRepeat
+ /// \brief Show or hide the mouse cursor
+ ///
+ /// \param visible True to show, false to hide
///
////////////////////////////////////////////////////////////
- virtual void EnableKeyRepeat(bool Enabled);
+ virtual void setMouseCursorVisible(bool visible);
////////////////////////////////////////////////////////////
- /// /see WindowImpl::SetIcon
+ /// \brief Enable or disable automatic key-repeat
+ ///
+ /// \param enabled True to enable, false to disable
///
////////////////////////////////////////////////////////////
- virtual void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels);
+ virtual void setKeyRepeatEnabled(bool enabled);
+
+protected:
////////////////////////////////////////////////////////////
- /// Register the window class
+ /// \brief Process incoming events from the operating system
///
////////////////////////////////////////////////////////////
- void RegisterWindowClass();
+ virtual void processEvents();
+
+private :
////////////////////////////////////////////////////////////
- /// Switch to fullscreen mode
- ///
- /// \param Mode : video mode to switch to
+ /// Register the window class
///
////////////////////////////////////////////////////////////
- void SwitchToFullscreen(const VideoMode& Mode);
+ void registerWindowClass();
////////////////////////////////////////////////////////////
- /// Construct the context from graphics settings
+ /// \brief Switch to fullscreen mode
///
- /// \param Mode : Video mode
- /// \param Params : Creation settings
+ /// \param mode Video mode to switch to
///
////////////////////////////////////////////////////////////
- void CreateContext(const VideoMode& Mode, WindowSettings& Params);
+ void switchToFullscreen(const VideoMode& mode);
////////////////////////////////////////////////////////////
- /// Free all the graphical resources attached to the window
+ /// \brief Free all the graphical resources attached to the window
///
////////////////////////////////////////////////////////////
- void Cleanup();
+ void cleanup();
////////////////////////////////////////////////////////////
- /// Process a Win32 event
+ /// \brief Process a Win32 event
///
- /// \param Message : Message to process
- /// \param WParam : First parameter of the event
- /// \param LParam : Second parameter of the event
+ /// \param message Message to process
+ /// \param wParam First parameter of the event
+ /// \param lParam Second parameter of the event
///
////////////////////////////////////////////////////////////
- void ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam);
+ void processEvent(UINT message, WPARAM wParam, LPARAM lParam);
////////////////////////////////////////////////////////////
- /// Convert a Win32 virtual key code to a SFML key code
+ /// \brief Convert a Win32 virtual key code to a SFML key code
///
- /// \param VirtualKey : Virtual key code to convert
- /// \param Flags : Additional flags
+ /// \param key Virtual key code to convert
+ /// \param flags Additional flags
///
- /// \return SFML key code corresponding to VirtualKey
+ /// \return SFML key code corresponding to the key
///
////////////////////////////////////////////////////////////
- static Key::Code VirtualKeyCodeToSF(WPARAM VirtualKey, LPARAM Flags);
+ static Keyboard::Key virtualKeyCodeToSF(WPARAM key, LPARAM flags);
////////////////////////////////////////////////////////////
- /// Check if the current version of the OS supports unicode
- /// messages and functions ; Windows 95/98/Me may not support
- /// it, whereas Windows NT/2000/XP/Vista will
+ /// \brief Check if the current version of the OS supports
+ /// unicode messages and functions ; Windows 95/98/Me
+ /// may not support it, whereas Windows NT/2000/XP/Vista
+ /// will
///
/// \return True if the OS supports unicode
///
////////////////////////////////////////////////////////////
- static bool HasUnicodeSupport();
+ static bool hasUnicodeSupport();
////////////////////////////////////////////////////////////
- /// Function called whenever one of our windows receives a message
+ /// \brief Function called whenever one of our windows receives a message
///
- /// \param Handle : Win32 handle of the window
- /// \param Message : Message received
- /// \param WParam : First parameter of the message
- /// \param LParam : Second parameter of the message
+ /// \param handle Win32 handle of the window
+ /// \param message Message received
+ /// \param wParam First parameter of the message
+ /// \param lParam Second parameter of the message
///
- /// \return Something...
+ /// \return True to discard the event after it has been processed
///
////////////////////////////////////////////////////////////
- static LRESULT CALLBACK GlobalOnEvent(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam);
-
- ////////////////////////////////////////////////////////////
- // Static member data
- ////////////////////////////////////////////////////////////
- static unsigned int ourWindowCount; ///< Number of windows that we own
- static const char* ourClassNameA; ///< Win32 window class name (ANSI version)
- static const wchar_t* ourClassNameW; ///< Win32 window class name (unicode version)
- static WindowImplWin32* ourFullscreenWindow; ///< Window currently in fullscreen
+ static LRESULT CALLBACK globalOnEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam);
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- HWND myHandle; ///< Win32 handle of the window
- long myCallback; ///< Stores the original event callback function of the control
- HCURSOR myCursor; ///< The system cursor to display into the window
- HICON myIcon; ///< Custom icon assigned to the window
- bool myKeyRepeatEnabled; ///< Automatic key-repeat state for keydown events
- bool myIsCursorIn; ///< Is the mouse cursor in the window's area ?
- HDC myDeviceContext; ///< HDC associated to the window
- HGLRC myGLContext; ///< OpenGL rendering context associated to the HDC
+ HWND m_handle; ///< Win32 handle of the window
+ LONG_PTR m_callback; ///< Stores the original event callback function of the control
+ HCURSOR m_cursor; ///< The system cursor to display into the window
+ HICON m_icon; ///< Custom icon assigned to the window
+ bool m_keyRepeatEnabled; ///< Automatic key-repeat state for keydown events
+ Vector2u m_lastSize; ///< The last handled size of the window
+ bool m_resizing; ///< Is the window being resized ?
+ Uint16 m_surrogate; ///< First half of the surrogate pair, in case we're receiving a Unicode character in two events
};
} // namespace priv
diff --git a/src/SFML/Window/Window.cpp b/src/SFML/Window/Window.cpp
index 7ea1963..0970c98 100755..100644
--- a/src/SFML/Window/Window.cpp
+++ b/src/SFML/Window/Window.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -26,448 +26,381 @@
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window/Window.hpp>
-#include <SFML/Window/Context.hpp>
+#include <SFML/Window/GlContext.hpp>
#include <SFML/Window/WindowImpl.hpp>
#include <SFML/System/Sleep.hpp>
-#include <iostream>
+#include <SFML/System/Err.hpp>
-////////////////////////////////////////////////////////////
-// Private data
-////////////////////////////////////////////////////////////
namespace
{
- const sf::Window* FullscreenWindow = NULL;
+ const sf::Window* fullscreenWindow = NULL;
}
namespace sf
{
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
Window::Window() :
-myWindow (NULL),
-myLastFrameTime (0.f),
-myIsExternal (false),
-myFramerateLimit(0),
-mySetCursorPosX (0xFFFF),
-mySetCursorPosY (0xFFFF)
+m_impl (NULL),
+m_context (NULL),
+m_frameTimeLimit(Time::Zero),
+m_size (0, 0)
{
}
////////////////////////////////////////////////////////////
-/// Construct a new window
-////////////////////////////////////////////////////////////
-Window::Window(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, const WindowSettings& Params) :
-myWindow (NULL),
-myLastFrameTime (0.f),
-myIsExternal (false),
-myFramerateLimit(0),
-mySetCursorPosX (0xFFFF),
-mySetCursorPosY (0xFFFF)
+Window::Window(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings) :
+m_impl (NULL),
+m_context (NULL),
+m_frameTimeLimit(Time::Zero),
+m_size (0, 0)
{
- Create(Mode, Title, WindowStyle, Params);
+ create(mode, title, style, settings);
}
////////////////////////////////////////////////////////////
-/// Construct the window from an existing control
-////////////////////////////////////////////////////////////
-Window::Window(WindowHandle Handle, const WindowSettings& Params) :
-myWindow (NULL),
-myLastFrameTime (0.f),
-myIsExternal (true),
-myFramerateLimit(0),
-mySetCursorPosX (0xFFFF),
-mySetCursorPosY (0xFFFF)
+Window::Window(WindowHandle handle, const ContextSettings& settings) :
+m_impl (NULL),
+m_context (NULL),
+m_frameTimeLimit(Time::Zero),
+m_size (0, 0)
{
- Create(Handle, Params);
+ create(handle, settings);
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
Window::~Window()
{
- // Close the window
- Close();
+ close();
}
////////////////////////////////////////////////////////////
-/// Create the window
-////////////////////////////////////////////////////////////
-void Window::Create(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, const WindowSettings& Params)
+void Window::create(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings)
{
// Destroy the previous window implementation
- Close();
+ close();
// Fullscreen style requires some tests
- if (WindowStyle & Style::Fullscreen)
+ if (style & Style::Fullscreen)
{
// Make sure there's not already a fullscreen window (only one is allowed)
- if (FullscreenWindow)
+ if (fullscreenWindow)
{
- std::cerr << "Creating two fullscreen windows is not allowed, switching to windowed mode" << std::endl;
- WindowStyle &= ~Style::Fullscreen;
+ err() << "Creating two fullscreen windows is not allowed, switching to windowed mode" << std::endl;
+ style &= ~Style::Fullscreen;
}
else
{
- // Make sure the chosen video mode is compatible
- if (!Mode.IsValid())
+ // Make sure that the chosen video mode is compatible
+ if (!mode.isValid())
{
- std::cerr << "The requested video mode is not available, switching to a valid mode" << std::endl;
- Mode = VideoMode::GetMode(0);
+ err() << "The requested video mode is not available, switching to a valid mode" << std::endl;
+ mode = VideoMode::getFullscreenModes()[0];
}
// Update the fullscreen window
- FullscreenWindow = this;
+ fullscreenWindow = this;
}
}
// Check validity of style
- if ((WindowStyle & Style::Close) || (WindowStyle & Style::Resize))
- WindowStyle |= Style::Titlebar;
+ if ((style & Style::Close) || (style & Style::Resize))
+ style |= Style::Titlebar;
+
+ // Recreate the window implementation
+ m_impl = priv::WindowImpl::create(mode, title, style, settings);
- // Activate the global context
- Context::GetGlobal().SetActive(true);
+ // Recreate the context
+ m_context = priv::GlContext::create(settings, m_impl, mode.bitsPerPixel);
- mySettings = Params;
- Initialize(priv::WindowImpl::New(Mode, Title, WindowStyle, mySettings));
+ // Perform common initializations
+ initialize();
}
////////////////////////////////////////////////////////////
-/// Create the window from an existing control
-////////////////////////////////////////////////////////////
-void Window::Create(WindowHandle Handle, const WindowSettings& Params)
+void Window::create(WindowHandle handle, const ContextSettings& settings)
{
// Destroy the previous window implementation
- Close();
+ close();
- // Activate the global context
- Context::GetGlobal().SetActive(true);
+ // Recreate the window implementation
+ m_impl = priv::WindowImpl::create(handle);
- mySettings = Params;
- Initialize(priv::WindowImpl::New(Handle, mySettings));
+ // Recreate the context
+ m_context = priv::GlContext::create(settings, m_impl, VideoMode::getDesktopMode().bitsPerPixel);
+
+ // Perform common initializations
+ initialize();
}
////////////////////////////////////////////////////////////
-/// Close (destroy) the window.
-/// The sf::Window instance remains valid and you can call
-/// Create to recreate the window
-////////////////////////////////////////////////////////////
-void Window::Close()
+void Window::close()
{
- // Delete the window implementation
- delete myWindow;
- myWindow = NULL;
+ if (m_context)
+ {
+ // Delete the context
+ delete m_context;
+ m_context = NULL;
+ }
+
+ if (m_impl)
+ {
+ // Delete the window implementation
+ delete m_impl;
+ m_impl = NULL;
+ }
// Update the fullscreen window
- if (this == FullscreenWindow)
- FullscreenWindow = NULL;
+ if (this == fullscreenWindow)
+ fullscreenWindow = NULL;
}
////////////////////////////////////////////////////////////
-/// Tell whether or not the window is opened (ie. has been created).
-/// Note that a hidden window (Show(false))
-/// will still return true
-////////////////////////////////////////////////////////////
-bool Window::IsOpened() const
+bool Window::isOpen() const
{
- return myWindow != NULL;
+ return m_impl != NULL;
}
////////////////////////////////////////////////////////////
-/// Get the width of the rendering region of the window
-////////////////////////////////////////////////////////////
-unsigned int Window::GetWidth() const
+const ContextSettings& Window::getSettings() const
{
- return myWindow ? myWindow->GetWidth() : 0;
+ static const ContextSettings empty(0, 0, 0);
+
+ return m_context ? m_context->getSettings() : empty;
}
////////////////////////////////////////////////////////////
-/// Get the height of the rendering region of the window
-////////////////////////////////////////////////////////////
-unsigned int Window::GetHeight() const
+bool Window::pollEvent(Event& event)
{
- return myWindow ? myWindow->GetHeight() : 0;
+ if (m_impl && m_impl->popEvent(event, false))
+ {
+ return filterEvent(event);
+ }
+ else
+ {
+ return false;
+ }
}
////////////////////////////////////////////////////////////
-/// Get the creation settings of the window
-////////////////////////////////////////////////////////////
-const WindowSettings& Window::GetSettings() const
+bool Window::waitEvent(Event& event)
{
- return mySettings;
+ if (m_impl && m_impl->popEvent(event, true))
+ {
+ return filterEvent(event);
+ }
+ else
+ {
+ return false;
+ }
}
////////////////////////////////////////////////////////////
-/// Get the event on top of events stack, if any
-////////////////////////////////////////////////////////////
-bool Window::GetEvent(Event& EventReceived)
+Vector2i Window::getPosition() const
{
- // Let the window implementation process incoming events if the events queue is empty
- if (myWindow && myEvents.empty())
- myWindow->DoEvents();
-
- // Pop first event of queue, if not empty
- if (!myEvents.empty())
- {
- EventReceived = myEvents.front();
- myEvents.pop();
-
- return true;
- }
-
- return false;
+ return m_impl ? m_impl->getPosition() : Vector2i();
}
////////////////////////////////////////////////////////////
-/// Enable / disable vertical synchronization
-////////////////////////////////////////////////////////////
-void Window::UseVerticalSync(bool Enabled)
+void Window::setPosition(const Vector2i& position)
{
- if (SetActive())
- myWindow->UseVerticalSync(Enabled);
+ if (m_impl)
+ m_impl->setPosition(position);
}
////////////////////////////////////////////////////////////
-/// Show or hide the mouse cursor
-////////////////////////////////////////////////////////////
-void Window::ShowMouseCursor(bool Show)
+Vector2u Window::getSize() const
{
- if (myWindow)
- myWindow->ShowMouseCursor(Show);
+ return m_size;
}
////////////////////////////////////////////////////////////
-/// Change the position of the mouse cursor
-////////////////////////////////////////////////////////////
-void Window::SetCursorPosition(unsigned int Left, unsigned int Top)
+void Window::setSize(const Vector2u size)
{
- if (myWindow)
- {
- // Keep coordinates for later checking (to reject the generated MouseMoved event)
- mySetCursorPosX = Left;
- mySetCursorPosY = Top;
-
- myWindow->SetCursorPosition(Left, Top);
- }
+ if (m_impl)
+ m_impl->setSize(size);
}
////////////////////////////////////////////////////////////
-/// Change the position of the window on screen
-////////////////////////////////////////////////////////////
-void Window::SetPosition(int Left, int Top)
+void Window::setTitle(const String& title)
{
- if (!myIsExternal)
- {
- if (myWindow)
- myWindow->SetPosition(Left, Top);
- }
- else
- {
- std::cerr << "Warning : trying to change the position of an external SFML window, which is not allowed" << std::endl;
- }
+ if (m_impl)
+ m_impl->setTitle(title);
}
////////////////////////////////////////////////////////////
-/// Change the size of the rendering region of the window
-////////////////////////////////////////////////////////////
-void Window::SetSize(unsigned int Width, unsigned int Height)
+void Window::setIcon(unsigned int width, unsigned int height, const Uint8* pixels)
{
- if (myWindow)
- myWindow->SetSize(Width, Height);
+ if (m_impl)
+ m_impl->setIcon(width, height, pixels);
}
////////////////////////////////////////////////////////////
-/// Show or hide the window
-////////////////////////////////////////////////////////////
-void Window::Show(bool State)
+void Window::setVisible(bool visible)
{
- if (!myIsExternal)
- {
- if (myWindow)
- myWindow->Show(State);
- }
+ if (m_impl)
+ m_impl->setVisible(visible);
}
////////////////////////////////////////////////////////////
-/// Enable or disable automatic key-repeat.
-/// Automatic key-repeat is enabled by default
-////////////////////////////////////////////////////////////
-void Window::EnableKeyRepeat(bool Enabled)
+void Window::setVerticalSyncEnabled(bool enabled)
{
- if (myWindow)
- myWindow->EnableKeyRepeat(Enabled);
+ if (setActive())
+ m_context->setVerticalSyncEnabled(enabled);
}
////////////////////////////////////////////////////////////
-/// Change the window's icon
-////////////////////////////////////////////////////////////
-void Window::SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels)
+void Window::setMouseCursorVisible(bool visible)
{
- if (myWindow)
- myWindow->SetIcon(Width, Height, Pixels);
+ if (m_impl)
+ m_impl->setMouseCursorVisible(visible);
}
////////////////////////////////////////////////////////////
-/// Activate of deactivate the window as the current target
-/// for rendering
-////////////////////////////////////////////////////////////
-bool Window::SetActive(bool Active) const
+void Window::setKeyRepeatEnabled(bool enabled)
{
- if (myWindow)
- {
- myWindow->SetActive(Active);
- return true;
- }
-
- return false;
+ if (m_impl)
+ m_impl->setKeyRepeatEnabled(enabled);
}
////////////////////////////////////////////////////////////
-/// Display the window on screen
-////////////////////////////////////////////////////////////
-void Window::Display()
+void Window::setFramerateLimit(unsigned int limit)
{
- // Limit the framerate if needed
- if (myFramerateLimit > 0)
- {
- float RemainingTime = 1.f / myFramerateLimit - myClock.GetElapsedTime();
- if (RemainingTime > 0)
- Sleep(RemainingTime);
- }
+ if (limit > 0)
+ m_frameTimeLimit = seconds(1.f / limit);
+ else
+ m_frameTimeLimit = Time::Zero;
+}
- // Measure the time elapsed since last frame
- myLastFrameTime = myClock.GetElapsedTime();
- myClock.Reset();
- // Display the backbuffer on screen
- if (SetActive())
- myWindow->Display();
+////////////////////////////////////////////////////////////
+void Window::setJoystickThreshold(float threshold)
+{
+ if (m_impl)
+ m_impl->setJoystickThreshold(threshold);
}
////////////////////////////////////////////////////////////
-/// Get the input manager of the window
-////////////////////////////////////////////////////////////
-const Input& Window::GetInput() const
+bool Window::setActive(bool active) const
{
- return myInput;
+ if (m_context)
+ {
+ if (m_context->setActive(active))
+ {
+ return true;
+ }
+ else
+ {
+ err() << "Failed to activate the window's context" << std::endl;
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
}
////////////////////////////////////////////////////////////
-/// Set the framerate at a fixed frequency
-////////////////////////////////////////////////////////////
-void Window::SetFramerateLimit(unsigned int Limit)
+void Window::display()
{
- myFramerateLimit = Limit;
+ // Display the backbuffer on screen
+ if (setActive())
+ m_context->display();
+
+ // Limit the framerate if needed
+ if (m_frameTimeLimit != Time::Zero)
+ {
+ sleep(m_frameTimeLimit - m_clock.getElapsedTime());
+ m_clock.restart();
+ }
}
////////////////////////////////////////////////////////////
-/// Get time elapsed since last frame
-////////////////////////////////////////////////////////////
-float Window::GetFrameTime() const
+WindowHandle Window::getSystemHandle() const
{
- return myLastFrameTime;
+ return m_impl ? m_impl->getSystemHandle() : 0;
}
////////////////////////////////////////////////////////////
-/// Change the joystick threshold, ie. the value below which
-/// no move event will be generated
-////////////////////////////////////////////////////////////
-void Window::SetJoystickThreshold(float Threshold)
+void Window::onCreate()
{
- if (myWindow)
- myWindow->SetJoystickThreshold(Threshold);
+ // Nothing by default
}
////////////////////////////////////////////////////////////
-/// Called after the window has been created
-////////////////////////////////////////////////////////////
-void Window::OnCreate()
+void Window::onResize()
{
// Nothing by default
}
////////////////////////////////////////////////////////////
-/// Receive an event from window
-////////////////////////////////////////////////////////////
-void Window::OnEvent(const Event& EventReceived)
+bool Window::filterEvent(const Event& event)
{
- // Discard MouseMove events generated by SetCursorPosition
- if ((EventReceived.Type == Event::MouseMoved) &&
- (EventReceived.MouseMove.X == mySetCursorPosX) &&
- (EventReceived.MouseMove.Y == mySetCursorPosY))
+ // Notify resize events to the derived class
+ if (event.type == Event::Resized)
{
- mySetCursorPosX = 0xFFFF;
- mySetCursorPosY = 0xFFFF;
- return;
+ // Cache the new size
+ m_size.x = event.size.width;
+ m_size.y = event.size.height;
+
+ // Notify the derived class
+ onResize();
}
- myEvents.push(EventReceived);
+ return true;
}
////////////////////////////////////////////////////////////
-/// Initialize internal window
-////////////////////////////////////////////////////////////
-void Window::Initialize(priv::WindowImpl* Window)
+void Window::initialize()
{
- // Assign and initialize the new window
- myWindow = Window;
- myWindow->Initialize();
-
- // Clear the event queue
- while (!myEvents.empty())
- myEvents.pop();
-
- // Listen to events from the new window
- myWindow->AddListener(this);
- myWindow->AddListener(&myInput);
-
// Setup default behaviours (to get a consistent behaviour across different implementations)
- Show(true);
- UseVerticalSync(false);
- ShowMouseCursor(true);
- EnableKeyRepeat(true);
+ setVisible(true);
+ setMouseCursorVisible(true);
+ setVerticalSyncEnabled(false);
+ setKeyRepeatEnabled(true);
+
+ // Get and cache the initial size of the window
+ m_size = m_impl->getSize();
// Reset frame time
- myClock.Reset();
- myLastFrameTime = 0.f;
+ m_clock.restart();
// Activate the window
- SetActive(true);
+ setActive();
// Notify the derived class
- OnCreate();
+ onCreate();
}
} // namespace sf
diff --git a/src/SFML/Window/WindowImpl.cpp b/src/SFML/Window/WindowImpl.cpp
index dd0584f..1b336c7 100755..100644
--- a/src/SFML/Window/WindowImpl.cpp
+++ b/src/SFML/Window/WindowImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,7 +27,8 @@
////////////////////////////////////////////////////////////
#include <SFML/Window/WindowImpl.hpp>
#include <SFML/Window/Event.hpp>
-#include <SFML/Window/WindowListener.hpp>
+#include <SFML/Window/JoystickManager.hpp>
+#include <SFML/System/Sleep.hpp>
#include <algorithm>
#include <cmath>
@@ -43,8 +44,8 @@
#elif defined(SFML_SYSTEM_MACOS)
- #include <SFML/Window/Cocoa/WindowImplCocoa.hpp>
- typedef sf::priv::WindowImplCocoa WindowImplType;
+ #include <SFML/Window/OSX/WindowImplCocoa.hpp>
+ typedef sf::priv::WindowImplCocoa WindowImplType;
#endif
@@ -54,46 +55,31 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
-/// Create a new window depending on the current OS
-////////////////////////////////////////////////////////////
-WindowImpl* WindowImpl::New()
-{
- return new WindowImplType();
-}
-
-
-////////////////////////////////////////////////////////////
-/// Create a new window depending on the current OS
-////////////////////////////////////////////////////////////
-WindowImpl* WindowImpl::New(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params)
+WindowImpl* WindowImpl::create(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings)
{
- return new WindowImplType(Mode, Title, WindowStyle, Params);
+ return new WindowImplType(mode, title, style, settings);
}
////////////////////////////////////////////////////////////
-/// Create a new window depending on the current OS
-////////////////////////////////////////////////////////////
-WindowImpl* WindowImpl::New(WindowHandle Handle, WindowSettings& Params)
+WindowImpl* WindowImpl::create(WindowHandle handle)
{
- return new WindowImplType(Handle, Params);
+ return new WindowImplType(handle);
}
////////////////////////////////////////////////////////////
-/// Default constructor
-////////////////////////////////////////////////////////////
WindowImpl::WindowImpl() :
-myWidth (0),
-myHeight (0),
-myJoyThreshold(0.1f)
+m_joyThreshold(0.1f)
{
+ // Get the initial joystick states
+ JoystickManager::getInstance().update();
+ for (unsigned int i = 0; i < Joystick::Count; ++i)
+ m_joyStates[i] = JoystickManager::getInstance().getState(i);
}
////////////////////////////////////////////////////////////
-/// Destructor
-////////////////////////////////////////////////////////////
WindowImpl::~WindowImpl()
{
// Nothing to do
@@ -101,158 +87,119 @@ WindowImpl::~WindowImpl()
////////////////////////////////////////////////////////////
-/// Add a listener to the window
-////////////////////////////////////////////////////////////
-void WindowImpl::AddListener(WindowListener* Listener)
+void WindowImpl::setJoystickThreshold(float threshold)
{
- if (Listener)
- myListeners.insert(Listener);
+ m_joyThreshold = threshold;
}
////////////////////////////////////////////////////////////
-/// Remove a listener from the window
-////////////////////////////////////////////////////////////
-void WindowImpl::RemoveListener(WindowListener* Listener)
+bool WindowImpl::popEvent(Event& event, bool block)
{
- myListeners.erase(Listener);
-}
-
-
-////////////////////////////////////////////////////////////
-/// Initialize window's states that can't be done at construction
-////////////////////////////////////////////////////////////
-void WindowImpl::Initialize()
-{
- // Initialize the joysticks
- for (unsigned int i = 0; i < Joy::Count; ++i)
+ // If the event queue is empty, let's first check if new events are available from the OS
+ if (m_events.empty())
{
- myJoysticks[i].Initialize(i);
- myJoyStates[i] = myJoysticks[i].UpdateState();
- }
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the client width of the window
-////////////////////////////////////////////////////////////
-unsigned int WindowImpl::GetWidth() const
-{
- return myWidth;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Get the client height of the window
-////////////////////////////////////////////////////////////
-unsigned int WindowImpl::GetHeight() const
-{
- return myHeight;
-}
-
-
-////////////////////////////////////////////////////////////
-/// Change the joystick threshold, ie. the value below which
-/// no move event will be generated
-////////////////////////////////////////////////////////////
-void WindowImpl::SetJoystickThreshold(float Threshold)
-{
- myJoyThreshold = Threshold;
-}
-
+ if (!block)
+ {
+ // Non-blocking mode: process events and continue
+ processJoystickEvents();
+ processEvents();
+ }
+ else
+ {
+ // Blocking mode: process events until one is triggered
-////////////////////////////////////////////////////////////
-/// Process incoming events from operating system
-////////////////////////////////////////////////////////////
-void WindowImpl::DoEvents()
-{
- // Read the joysticks state and generate the appropriate events
- ProcessJoystickEvents();
+ // Here we use a manual wait loop instead of the optimized
+ // wait-event provided by the OS, so that we don't skip joystick
+ // events (which require polling)
+ while (m_events.empty())
+ {
+ processJoystickEvents();
+ processEvents();
+ sleep(milliseconds(10));
+ }
+ }
+ }
- // Let the derived class process other events
- ProcessEvents();
-}
+ // Pop the first event of the queue, if it is not empty
+ if (!m_events.empty())
+ {
+ event = m_events.front();
+ m_events.pop();
+ return true;
+ }
-////////////////////////////////////////////////////////////
-/// Check if there's an active context on the current thread
-////////////////////////////////////////////////////////////
-bool WindowImpl::IsContextActive()
-{
- return WindowImplType::IsContextActive();
+ return false;
}
////////////////////////////////////////////////////////////
-/// Send an event to listeners
-////////////////////////////////////////////////////////////
-void WindowImpl::SendEvent(const Event& EventToSend)
+void WindowImpl::pushEvent(const Event& event)
{
- for (std::set<WindowListener*>::iterator i = myListeners.begin(); i != myListeners.end(); ++i)
- {
- (*i)->OnEvent(EventToSend);
- }
+ m_events.push(event);
}
////////////////////////////////////////////////////////////
-/// Evaluate a pixel format configuration.
-/// This functions can be used by implementations that have
-/// several valid formats and want to get the best one
-////////////////////////////////////////////////////////////
-int WindowImpl::EvaluateConfig(const VideoMode& Mode, const WindowSettings& Settings, int ColorBits, int DepthBits, int StencilBits, int Antialiasing)
+void WindowImpl::processJoystickEvents()
{
- return abs(static_cast<int>(Mode.BitsPerPixel - ColorBits)) +
- abs(static_cast<int>(Settings.DepthBits - DepthBits)) +
- abs(static_cast<int>(Settings.StencilBits - StencilBits)) +
- abs(static_cast<int>(Settings.AntialiasingLevel - Antialiasing));
-}
+ // First update the global joystick states
+ JoystickManager::getInstance().update();
-
-////////////////////////////////////////////////////////////
-/// Read the joysticks state and generate the appropriate events
-////////////////////////////////////////////////////////////
-void WindowImpl::ProcessJoystickEvents()
-{
- for (unsigned int i = 0; i < Joy::Count; ++i)
+ for (unsigned int i = 0; i < Joystick::Count; ++i)
{
// Copy the previous state of the joystick and get the new one
- JoystickState PreviousState = myJoyStates[i];
- myJoyStates[i] = myJoysticks[i].UpdateState();
+ JoystickState previousState = m_joyStates[i];
+ m_joyStates[i] = JoystickManager::getInstance().getState(i);
+ JoystickCaps caps = JoystickManager::getInstance().getCapabilities(i);
- // Axis
- for (unsigned int j = 0; j < Joy::AxisCount; ++j)
+ // Connection state
+ bool connected = m_joyStates[i].connected;
+ if (previousState.connected ^ connected)
{
- Joy::Axis Axis = static_cast<Joy::Axis>(j);
- if (myJoysticks[i].HasAxis(Axis))
+ Event event;
+ event.type = connected ? Event::JoystickConnected : Event::JoystickDisconnected;
+ event.joystickButton.joystickId = i;
+ pushEvent(event);
+ }
+
+ if (connected)
+ {
+ // Axes
+ for (unsigned int j = 0; j < Joystick::AxisCount; ++j)
{
- float PrevPos = PreviousState.Axis[j];
- float CurrPos = myJoyStates[i].Axis[j];
- if (fabs(CurrPos - PrevPos) >= myJoyThreshold)
+ if (caps.axes[j])
{
- Event Event;
- Event.Type = Event::JoyMoved;
- Event.JoyMove.JoystickId = i;
- Event.JoyMove.Axis = Axis;
- Event.JoyMove.Position = CurrPos;
- SendEvent(Event);
+ Joystick::Axis axis = static_cast<Joystick::Axis>(j);
+ float prevPos = previousState.axes[axis];
+ float currPos = m_joyStates[i].axes[axis];
+ if (fabs(currPos - prevPos) >= m_joyThreshold)
+ {
+ Event event;
+ event.type = Event::JoystickMoved;
+ event.joystickMove.joystickId = i;
+ event.joystickMove.axis = axis;
+ event.joystickMove.position = currPos;
+ pushEvent(event);
+ }
}
}
- }
- // Buttons
- for (unsigned int j = 0; j < myJoysticks[i].GetButtonsCount(); ++j)
- {
- bool PrevPressed = PreviousState.Buttons[j];
- bool CurrPressed = myJoyStates[i].Buttons[j];
-
- if ((!PrevPressed && CurrPressed) || (PrevPressed && !CurrPressed))
+ // Buttons
+ for (unsigned int j = 0; j < caps.buttonCount; ++j)
{
- Event Event;
- Event.Type = CurrPressed ? Event::JoyButtonPressed : Event::JoyButtonReleased;
- Event.JoyButton.JoystickId = i;
- Event.JoyButton.Button = j;
- SendEvent(Event);
+ bool prevPressed = previousState.buttons[j];
+ bool currPressed = m_joyStates[i].buttons[j];
+
+ if (prevPressed ^ currPressed)
+ {
+ Event event;
+ event.type = currPressed ? Event::JoystickButtonPressed : Event::JoystickButtonReleased;
+ event.joystickButton.joystickId = i;
+ event.joystickButton.button = j;
+ pushEvent(event);
+ }
}
}
}
diff --git a/src/SFML/Window/WindowImpl.hpp b/src/SFML/Window/WindowImpl.hpp
index 09f8b54..4d061a1 100755..100644
--- a/src/SFML/Window/WindowImpl.hpp
+++ b/src/SFML/Window/WindowImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
+// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -30,273 +30,208 @@
////////////////////////////////////////////////////////////
#include <SFML/Config.hpp>
#include <SFML/System/NonCopyable.hpp>
+#include <SFML/System/String.hpp>
+#include <SFML/Window/Event.hpp>
#include <SFML/Window/Joystick.hpp>
+#include <SFML/Window/JoystickImpl.hpp>
#include <SFML/Window/VideoMode.hpp>
#include <SFML/Window/WindowHandle.hpp>
-#include <SFML/Window/WindowSettings.hpp>
+#include <SFML/Window/ContextSettings.hpp>
+#include <queue>
#include <set>
-#include <string>
-
namespace sf
{
-class Event;
class WindowListener;
namespace priv
{
////////////////////////////////////////////////////////////
-/// Abstract base class for OS-specific window implementation
+/// \brief Abstract base class for OS-specific window implementation
+///
////////////////////////////////////////////////////////////
class WindowImpl : NonCopyable
{
public :
////////////////////////////////////////////////////////////
- /// Create a new window depending on the current OS
- ///
- /// \return Pointer to the created window
- ///
- ////////////////////////////////////////////////////////////
- static WindowImpl* New();
-
- ////////////////////////////////////////////////////////////
- /// Create a new window depending on the current OS
+ /// \brief Create a new window depending on the current OS
///
- /// \param Mode : Video mode to use
- /// \param Title : Title of the window
- /// \param WindowStyle : Window style
- /// \param Params : Creation parameters
+ /// \param mode Video mode to use
+ /// \param title Title of the window
+ /// \param style Window style
+ /// \param settings Additional settings for the underlying OpenGL context
///
- /// \return Pointer to the created window
+ /// \return Pointer to the created window (don't forget to delete it)
///
////////////////////////////////////////////////////////////
- static WindowImpl* New(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, WindowSettings& Params);
+ static WindowImpl* create(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings);
////////////////////////////////////////////////////////////
- /// Create a new window depending on to the current OS
+ /// \brief Create a new window depending on to the current OS
///
- /// \param Handle : Platform-specific handle of the control
- /// \param Params : Creation parameters
+ /// \param handle Platform-specific handle of the control
///
- /// \return Pointer to the created window
+ /// \return Pointer to the created window (don't forget to delete it)
///
////////////////////////////////////////////////////////////
- static WindowImpl* New(WindowHandle Handle, WindowSettings& Params);
+ static WindowImpl* create(WindowHandle handle);
public :
////////////////////////////////////////////////////////////
- /// Destructor
+ /// \brief Destructor
///
////////////////////////////////////////////////////////////
virtual ~WindowImpl();
////////////////////////////////////////////////////////////
- /// Add a listener to the window
- ///
- /// \param Listener : Listener to add
- ///
- ////////////////////////////////////////////////////////////
- void AddListener(WindowListener* Listener);
-
- ////////////////////////////////////////////////////////////
- /// Remove a listener from the window
+ /// \brief Change the joystick threshold, ie. the value below which
+ /// no move event will be generated
///
- /// \param Listener : Listener to remove
+ /// \param threshold : New threshold, in range [0, 100]
///
////////////////////////////////////////////////////////////
- void RemoveListener(WindowListener* Listener);
+ void setJoystickThreshold(float threshold);
////////////////////////////////////////////////////////////
- /// Initialize window's states that can't be done at construction
+ /// \brief Return the next window event available
///
- ////////////////////////////////////////////////////////////
- void Initialize();
-
- ////////////////////////////////////////////////////////////
- /// Get the client width of the window
+ /// If there's no event available, this function calls the
+ /// window's internal event processing function.
+ /// The \a block parameter controls the behaviour of the function
+ /// if no event is available: if it is true then the function
+ /// doesn't return until a new event is triggered; otherwise it
+ /// returns false to indicate that no event is available.
///
- /// \return Width of the window in pixels
+ /// \param event Event to be returned
+ /// \param block Use true to block the thread until an event arrives
///
////////////////////////////////////////////////////////////
- unsigned int GetWidth() const;
+ bool popEvent(Event& event, bool block);
////////////////////////////////////////////////////////////
- /// Get the client height of the window
+ /// \brief Get the OS-specific handle of the window
///
- /// \return Height of the window in pixels
+ /// \return Handle of the window
///
////////////////////////////////////////////////////////////
- unsigned int GetHeight() const;
+ virtual WindowHandle getSystemHandle() const = 0;
////////////////////////////////////////////////////////////
- /// Activate of deactivate the window as the current target
- /// for rendering
+ /// \brief Get the position of the window
///
- /// \param Active : True to activate, false to deactivate (true by default)
+ /// \return Position of the window, in pixels
///
////////////////////////////////////////////////////////////
- virtual void SetActive(bool Active = true) const = 0;
+ virtual Vector2i getPosition() const = 0;
////////////////////////////////////////////////////////////
- /// Change the joystick threshold, ie. the value below which
- /// no move event will be generated
+ /// \brief Change the position of the window on screen
///
- /// \param Threshold : New threshold, in range [0, 100]
+ /// \param position New position of the window, in pixels
///
////////////////////////////////////////////////////////////
- void SetJoystickThreshold(float Threshold);
+ virtual void setPosition(const Vector2i& position) = 0;
////////////////////////////////////////////////////////////
- /// Process incoming events from operating system
+ /// \brief Get the client size of the window
///
- ////////////////////////////////////////////////////////////
- void DoEvents();
-
- ////////////////////////////////////////////////////////////
- /// Check if there's an active context on the current thread
- ///
- /// \return True if there's a context bound to the current thread
- ///
- ////////////////////////////////////////////////////////////
- static bool IsContextActive();
-
- ////////////////////////////////////////////////////////////
- /// Display the window on screen
+ /// \return Size of the window, in pixels
///
////////////////////////////////////////////////////////////
- virtual void Display() = 0;
+ virtual Vector2u getSize() const = 0;
////////////////////////////////////////////////////////////
- /// Enable / disable vertical synchronization
+ /// \brief Change the size of the rendering region of the window
///
- /// \param Enabled : True to enable v-sync, false to deactivate
+ /// \param size New size, in pixels
///
////////////////////////////////////////////////////////////
- virtual void UseVerticalSync(bool Enabled) = 0;
+ virtual void setSize(const Vector2u& size) = 0;
////////////////////////////////////////////////////////////
- /// Show or hide the mouse cursor
+ /// \brief Change the title of the window
///
- /// \param Show : True to show, false to hide
+ /// \param title New title
///
////////////////////////////////////////////////////////////
- virtual void ShowMouseCursor(bool Show) = 0;
+ virtual void setTitle(const String& title) = 0;
////////////////////////////////////////////////////////////
- /// Change the position of the mouse cursor
+ /// \brief Change the window's icon
///
- /// \param Left : Left coordinate of the cursor, relative to the window
- /// \param Top : Top coordinate of the cursor, relative to the window
+ /// \param width Icon's width, in pixels
+ /// \param height Icon's height, in pixels
+ /// \param pixels Pointer to the pixels in memory, format must be RGBA 32 bits
///
////////////////////////////////////////////////////////////
- virtual void SetCursorPosition(unsigned int Left, unsigned int Top) = 0;
+ virtual void setIcon(unsigned int width, unsigned int height, const Uint8* pixels) = 0;
////////////////////////////////////////////////////////////
- /// Change the position of the window on screen
+ /// \brief Show or hide the window
///
- /// \param Left : Left position
- /// \param Top : Top position
+ /// \param visible True to show, false to hide
///
////////////////////////////////////////////////////////////
- virtual void SetPosition(int Left, int Top) = 0;
+ virtual void setVisible(bool visible) = 0;
////////////////////////////////////////////////////////////
- /// Change the size of the rendering region of the window
+ /// \brief Show or hide the mouse cursor
///
- /// \param Width : New width
- /// \param Height : New height
+ /// \param visible True to show, false to hide
///
////////////////////////////////////////////////////////////
- virtual void SetSize(unsigned int Width, unsigned int Height) = 0;
+ virtual void setMouseCursorVisible(bool visible) = 0;
////////////////////////////////////////////////////////////
- /// Show or hide the window
+ /// \brief Enable or disable automatic key-repeat
///
- /// \param State : True to show, false to hide
+ /// \param enabled True to enable, false to disable
///
////////////////////////////////////////////////////////////
- virtual void Show(bool State) = 0;
-
- ////////////////////////////////////////////////////////////
- /// Enable or disable automatic key-repeat
- ///
- /// \param Enabled : True to enable, false to disable
- ///
- ////////////////////////////////////////////////////////////
- virtual void EnableKeyRepeat(bool Enabled) = 0;
-
- ////////////////////////////////////////////////////////////
- /// Change the window's icon
- ///
- /// \param Width : Icon's width, in pixels
- /// \param Height : Icon's height, in pixels
- /// \param Pixels : Pointer to the pixels in memory, format must be RGBA 32 bits
- ///
- ////////////////////////////////////////////////////////////
- virtual void SetIcon(unsigned int Width, unsigned int Height, const Uint8* Pixels) = 0;
+ virtual void setKeyRepeatEnabled(bool enabled) = 0;
protected :
////////////////////////////////////////////////////////////
- /// Default constructor
+ /// \brief Default constructor
///
////////////////////////////////////////////////////////////
WindowImpl();
////////////////////////////////////////////////////////////
- /// Send an event to listeners (for derived classes only)
+ /// \brief Push a new event into the event queue
///
- /// \param EventToSend : Event to send
+ /// This function is to be used by derived classes, to
+ /// notify the SFML window that a new event was triggered
+ /// by the system.
///
- ////////////////////////////////////////////////////////////
- void SendEvent(const Event& EventToSend);
-
- ////////////////////////////////////////////////////////////
- /// Evaluate a pixel format configuration.
- /// This functions can be used by implementations that have
- /// several valid formats and want to get the best one
- ///
- /// \param Mode : Requested video mode
- /// \param Settings : Requested additionnal settings
- /// \param ColorBits : Color bits of the configuration to evaluate
- /// \param DepthBits : Depth bits of the configuration to evaluate
- /// \param StencilBits : Stencil bits of the configuration to evaluate
- /// \param Antialiasing : Antialiasing level of the configuration to evaluate
- ///
- /// \return Score of the configuration : the lower the better
+ /// \param event Event to push
///
////////////////////////////////////////////////////////////
- static int EvaluateConfig(const VideoMode& Mode, const WindowSettings& Settings, int ColorBits, int DepthBits, int StencilBits, int Antialiasing);
+ void pushEvent(const Event& event);
////////////////////////////////////////////////////////////
- // Member data
+ /// \brief Process incoming events from the operating system
+ ///
////////////////////////////////////////////////////////////
- unsigned int myWidth; ///< Internal width of the window
- unsigned int myHeight; ///< Internal height of the window
+ virtual void processEvents() = 0;
private :
////////////////////////////////////////////////////////////
- /// Read the joysticks state and generate the appropriate events
- ///
- ////////////////////////////////////////////////////////////
- void ProcessJoystickEvents();
-
- ////////////////////////////////////////////////////////////
- /// Process incoming events from operating system
+ /// \brief Read the joysticks state and generate the appropriate events
///
////////////////////////////////////////////////////////////
- virtual void ProcessEvents() = 0;
+ void processJoystickEvents();
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- std::set<WindowListener*> myListeners; ///< Array of listeners connected to the window
- Joystick myJoysticks[Joy::Count]; ///< Joysticks to observe
- JoystickState myJoyStates[Joy::Count]; ///< Current states of the joysticks
- float myJoyThreshold; ///< Joystick threshold (minimum motion for MOVE event to be generated)
+ std::queue<Event> m_events; ///< Queue of available events
+ JoystickState m_joyStates[Joystick::Count]; ///< Previous state of the joysticks
+ float m_joyThreshold; ///< Joystick threshold (minimum motion for MOVE event to be generated)
};
} // namespace priv
diff --git a/src/SFML/Window/glext/glext.h b/src/SFML/Window/glext/glext.h
new file mode 100644
index 0000000..22348a1
--- /dev/null
+++ b/src/SFML/Window/glext/glext.h
@@ -0,0 +1,11028 @@
+#ifndef __glext_h_
+#define __glext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007-2010 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are 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 Materials.
+**
+** THE MATERIALS ARE 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
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+/* Header file version number, required by OpenGL ABI for Linux */
+/* glext.h last updated $Date: 2010-08-03 01:30:25 -0700 (Tue, 03 Aug 2010) $ */
+/* Current version at http://www.opengl.org/registry/ */
+#define GL_GLEXT_VERSION 64
+/* Function declaration macros - to move into glplatform.h */
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+#ifndef GL_VERSION_1_2
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+#endif
+
+#ifndef GL_VERSION_1_2_DEPRECATED
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#endif
+
+#ifndef GL_ARB_imaging
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#endif
+
+#ifndef GL_ARB_imaging_DEPRECATED
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_CLAMP_TO_BORDER 0x812D
+#endif
+
+#ifndef GL_VERSION_1_3_DEPRECATED
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+#define GL_MULTISAMPLE_BIT 0x20000000
+#define GL_NORMAL_MAP 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_RGB_SCALE 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_SUBTRACT 0x84E7
+#define GL_CONSTANT 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PREVIOUS 0x8578
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+#endif
+
+#ifndef GL_VERSION_1_4
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_INCR_WRAP 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#endif
+
+#ifndef GL_VERSION_1_4_DEPRECATED
+#define GL_POINT_SIZE_MIN 0x8126
+#define GL_POINT_SIZE_MAX 0x8127
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#define GL_GENERATE_MIPMAP 0x8191
+#define GL_GENERATE_MIPMAP_HINT 0x8192
+#define GL_FOG_COORDINATE_SOURCE 0x8450
+#define GL_FOG_COORDINATE 0x8451
+#define GL_FRAGMENT_DEPTH 0x8452
+#define GL_CURRENT_FOG_COORDINATE 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY 0x8457
+#define GL_COLOR_SUM 0x8458
+#define GL_CURRENT_SECONDARY_COLOR 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
+#define GL_SECONDARY_COLOR_ARRAY 0x845E
+#define GL_TEXTURE_FILTER_CONTROL 0x8500
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+#endif
+
+#ifndef GL_VERSION_1_5
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_CURRENT_QUERY 0x8865
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_SAMPLES_PASSED 0x8914
+#endif
+
+#ifndef GL_VERSION_1_5_DEPRECATED
+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
+#define GL_FOG_COORD_SRC 0x8450
+#define GL_FOG_COORD 0x8451
+#define GL_CURRENT_FOG_COORD 0x8453
+#define GL_FOG_COORD_ARRAY_TYPE 0x8454
+#define GL_FOG_COORD_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORD_ARRAY_POINTER 0x8456
+#define GL_FOG_COORD_ARRAY 0x8457
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
+#define GL_SRC0_RGB 0x8580
+#define GL_SRC1_RGB 0x8581
+#define GL_SRC2_RGB 0x8582
+#define GL_SRC0_ALPHA 0x8588
+#define GL_SRC1_ALPHA 0x8589
+#define GL_SRC2_ALPHA 0x858A
+#endif
+
+#ifndef GL_VERSION_2_0
+#define GL_BLEND_EQUATION_RGB 0x8009
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_DELETE_STATUS 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_STENCIL_BACK_REF 0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
+#endif
+
+#ifndef GL_VERSION_2_0_DEPRECATED
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_POINT_SPRITE 0x8861
+#define GL_COORD_REPLACE 0x8862
+#define GL_MAX_TEXTURE_COORDS 0x8871
+#endif
+
+#ifndef GL_VERSION_2_1
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_SRGB 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+#endif
+
+#ifndef GL_VERSION_2_1_DEPRECATED
+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
+#define GL_SLUMINANCE_ALPHA 0x8C44
+#define GL_SLUMINANCE8_ALPHA8 0x8C45
+#define GL_SLUMINANCE 0x8C46
+#define GL_SLUMINANCE8 0x8C47
+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
+#endif
+
+#ifndef GL_VERSION_3_0
+#define GL_COMPARE_REF_TO_TEXTURE 0x884E
+#define GL_CLIP_DISTANCE0 0x3000
+#define GL_CLIP_DISTANCE1 0x3001
+#define GL_CLIP_DISTANCE2 0x3002
+#define GL_CLIP_DISTANCE3 0x3003
+#define GL_CLIP_DISTANCE4 0x3004
+#define GL_CLIP_DISTANCE5 0x3005
+#define GL_CLIP_DISTANCE6 0x3006
+#define GL_CLIP_DISTANCE7 0x3007
+#define GL_MAX_CLIP_DISTANCES 0x0D32
+#define GL_MAJOR_VERSION 0x821B
+#define GL_MINOR_VERSION 0x821C
+#define GL_NUM_EXTENSIONS 0x821D
+#define GL_CONTEXT_FLAGS 0x821E
+#define GL_DEPTH_BUFFER 0x8223
+#define GL_STENCIL_BUFFER 0x8224
+#define GL_COMPRESSED_RED 0x8225
+#define GL_COMPRESSED_RG 0x8226
+#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
+#define GL_RGBA32F 0x8814
+#define GL_RGB32F 0x8815
+#define GL_RGBA16F 0x881A
+#define GL_RGB16F 0x881B
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
+#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
+#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
+#define GL_CLAMP_READ_COLOR 0x891C
+#define GL_FIXED_ONLY 0x891D
+#define GL_MAX_VARYING_COMPONENTS 0x8B4B
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+#define GL_RGB9_E5 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE 0x8C3F
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
+#define GL_PRIMITIVES_GENERATED 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
+#define GL_RASTERIZER_DISCARD 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS 0x8C8C
+#define GL_SEPARATE_ATTRIBS 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
+#define GL_RGBA32UI 0x8D70
+#define GL_RGB32UI 0x8D71
+#define GL_RGBA16UI 0x8D76
+#define GL_RGB16UI 0x8D77
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGB8UI 0x8D7D
+#define GL_RGBA32I 0x8D82
+#define GL_RGB32I 0x8D83
+#define GL_RGBA16I 0x8D88
+#define GL_RGB16I 0x8D89
+#define GL_RGBA8I 0x8D8E
+#define GL_RGB8I 0x8D8F
+#define GL_RED_INTEGER 0x8D94
+#define GL_GREEN_INTEGER 0x8D95
+#define GL_BLUE_INTEGER 0x8D96
+#define GL_RGB_INTEGER 0x8D98
+#define GL_RGBA_INTEGER 0x8D99
+#define GL_BGR_INTEGER 0x8D9A
+#define GL_BGRA_INTEGER 0x8D9B
+#define GL_SAMPLER_1D_ARRAY 0x8DC0
+#define GL_SAMPLER_2D_ARRAY 0x8DC1
+#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
+#define GL_UNSIGNED_INT_VEC2 0x8DC6
+#define GL_UNSIGNED_INT_VEC3 0x8DC7
+#define GL_UNSIGNED_INT_VEC4 0x8DC8
+#define GL_INT_SAMPLER_1D 0x8DC9
+#define GL_INT_SAMPLER_2D 0x8DCA
+#define GL_INT_SAMPLER_3D 0x8DCB
+#define GL_INT_SAMPLER_CUBE 0x8DCC
+#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
+#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
+#define GL_QUERY_WAIT 0x8E13
+#define GL_QUERY_NO_WAIT 0x8E14
+#define GL_QUERY_BY_REGION_WAIT 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
+/* Reuse tokens from ARB_depth_buffer_float */
+/* reuse GL_DEPTH_COMPONENT32F */
+/* reuse GL_DEPTH32F_STENCIL8 */
+/* reuse GL_FLOAT_32_UNSIGNED_INT_24_8_REV */
+/* Reuse tokens from ARB_framebuffer_object */
+/* reuse GL_INVALID_FRAMEBUFFER_OPERATION */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+/* reuse GL_FRAMEBUFFER_DEFAULT */
+/* reuse GL_FRAMEBUFFER_UNDEFINED */
+/* reuse GL_DEPTH_STENCIL_ATTACHMENT */
+/* reuse GL_INDEX */
+/* reuse GL_MAX_RENDERBUFFER_SIZE */
+/* reuse GL_DEPTH_STENCIL */
+/* reuse GL_UNSIGNED_INT_24_8 */
+/* reuse GL_DEPTH24_STENCIL8 */
+/* reuse GL_TEXTURE_STENCIL_SIZE */
+/* reuse GL_TEXTURE_RED_TYPE */
+/* reuse GL_TEXTURE_GREEN_TYPE */
+/* reuse GL_TEXTURE_BLUE_TYPE */
+/* reuse GL_TEXTURE_ALPHA_TYPE */
+/* reuse GL_TEXTURE_DEPTH_TYPE */
+/* reuse GL_UNSIGNED_NORMALIZED */
+/* reuse GL_FRAMEBUFFER_BINDING */
+/* reuse GL_DRAW_FRAMEBUFFER_BINDING */
+/* reuse GL_RENDERBUFFER_BINDING */
+/* reuse GL_READ_FRAMEBUFFER */
+/* reuse GL_DRAW_FRAMEBUFFER */
+/* reuse GL_READ_FRAMEBUFFER_BINDING */
+/* reuse GL_RENDERBUFFER_SAMPLES */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+/* reuse GL_FRAMEBUFFER_COMPLETE */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+/* reuse GL_FRAMEBUFFER_UNSUPPORTED */
+/* reuse GL_MAX_COLOR_ATTACHMENTS */
+/* reuse GL_COLOR_ATTACHMENT0 */
+/* reuse GL_COLOR_ATTACHMENT1 */
+/* reuse GL_COLOR_ATTACHMENT2 */
+/* reuse GL_COLOR_ATTACHMENT3 */
+/* reuse GL_COLOR_ATTACHMENT4 */
+/* reuse GL_COLOR_ATTACHMENT5 */
+/* reuse GL_COLOR_ATTACHMENT6 */
+/* reuse GL_COLOR_ATTACHMENT7 */
+/* reuse GL_COLOR_ATTACHMENT8 */
+/* reuse GL_COLOR_ATTACHMENT9 */
+/* reuse GL_COLOR_ATTACHMENT10 */
+/* reuse GL_COLOR_ATTACHMENT11 */
+/* reuse GL_COLOR_ATTACHMENT12 */
+/* reuse GL_COLOR_ATTACHMENT13 */
+/* reuse GL_COLOR_ATTACHMENT14 */
+/* reuse GL_COLOR_ATTACHMENT15 */
+/* reuse GL_DEPTH_ATTACHMENT */
+/* reuse GL_STENCIL_ATTACHMENT */
+/* reuse GL_FRAMEBUFFER */
+/* reuse GL_RENDERBUFFER */
+/* reuse GL_RENDERBUFFER_WIDTH */
+/* reuse GL_RENDERBUFFER_HEIGHT */
+/* reuse GL_RENDERBUFFER_INTERNAL_FORMAT */
+/* reuse GL_STENCIL_INDEX1 */
+/* reuse GL_STENCIL_INDEX4 */
+/* reuse GL_STENCIL_INDEX8 */
+/* reuse GL_STENCIL_INDEX16 */
+/* reuse GL_RENDERBUFFER_RED_SIZE */
+/* reuse GL_RENDERBUFFER_GREEN_SIZE */
+/* reuse GL_RENDERBUFFER_BLUE_SIZE */
+/* reuse GL_RENDERBUFFER_ALPHA_SIZE */
+/* reuse GL_RENDERBUFFER_DEPTH_SIZE */
+/* reuse GL_RENDERBUFFER_STENCIL_SIZE */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+/* reuse GL_MAX_SAMPLES */
+/* Reuse tokens from ARB_framebuffer_sRGB */
+/* reuse GL_FRAMEBUFFER_SRGB */
+/* Reuse tokens from ARB_half_float_vertex */
+/* reuse GL_HALF_FLOAT */
+/* Reuse tokens from ARB_map_buffer_range */
+/* reuse GL_MAP_READ_BIT */
+/* reuse GL_MAP_WRITE_BIT */
+/* reuse GL_MAP_INVALIDATE_RANGE_BIT */
+/* reuse GL_MAP_INVALIDATE_BUFFER_BIT */
+/* reuse GL_MAP_FLUSH_EXPLICIT_BIT */
+/* reuse GL_MAP_UNSYNCHRONIZED_BIT */
+/* Reuse tokens from ARB_texture_compression_rgtc */
+/* reuse GL_COMPRESSED_RED_RGTC1 */
+/* reuse GL_COMPRESSED_SIGNED_RED_RGTC1 */
+/* reuse GL_COMPRESSED_RG_RGTC2 */
+/* reuse GL_COMPRESSED_SIGNED_RG_RGTC2 */
+/* Reuse tokens from ARB_texture_rg */
+/* reuse GL_RG */
+/* reuse GL_RG_INTEGER */
+/* reuse GL_R8 */
+/* reuse GL_R16 */
+/* reuse GL_RG8 */
+/* reuse GL_RG16 */
+/* reuse GL_R16F */
+/* reuse GL_R32F */
+/* reuse GL_RG16F */
+/* reuse GL_RG32F */
+/* reuse GL_R8I */
+/* reuse GL_R8UI */
+/* reuse GL_R16I */
+/* reuse GL_R16UI */
+/* reuse GL_R32I */
+/* reuse GL_R32UI */
+/* reuse GL_RG8I */
+/* reuse GL_RG8UI */
+/* reuse GL_RG16I */
+/* reuse GL_RG16UI */
+/* reuse GL_RG32I */
+/* reuse GL_RG32UI */
+/* Reuse tokens from ARB_vertex_array_object */
+/* reuse GL_VERTEX_ARRAY_BINDING */
+#endif
+
+#ifndef GL_VERSION_3_0_DEPRECATED
+#define GL_CLAMP_VERTEX_COLOR 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR 0x891B
+#define GL_ALPHA_INTEGER 0x8D97
+/* Reuse tokens from ARB_framebuffer_object */
+/* reuse GL_TEXTURE_LUMINANCE_TYPE */
+/* reuse GL_TEXTURE_INTENSITY_TYPE */
+#endif
+
+#ifndef GL_VERSION_3_1
+#define GL_SAMPLER_2D_RECT 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
+#define GL_SAMPLER_BUFFER 0x8DC2
+#define GL_INT_SAMPLER_2D_RECT 0x8DCD
+#define GL_INT_SAMPLER_BUFFER 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
+#define GL_TEXTURE_BUFFER 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_PRIMITIVE_RESTART 0x8F9D
+#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+/* Reuse tokens from ARB_copy_buffer */
+/* reuse GL_COPY_READ_BUFFER */
+/* reuse GL_COPY_WRITE_BUFFER */
+/* Reuse tokens from ARB_draw_instanced (none) */
+/* Reuse tokens from ARB_uniform_buffer_object */
+/* reuse GL_UNIFORM_BUFFER */
+/* reuse GL_UNIFORM_BUFFER_BINDING */
+/* reuse GL_UNIFORM_BUFFER_START */
+/* reuse GL_UNIFORM_BUFFER_SIZE */
+/* reuse GL_MAX_VERTEX_UNIFORM_BLOCKS */
+/* reuse GL_MAX_FRAGMENT_UNIFORM_BLOCKS */
+/* reuse GL_MAX_COMBINED_UNIFORM_BLOCKS */
+/* reuse GL_MAX_UNIFORM_BUFFER_BINDINGS */
+/* reuse GL_MAX_UNIFORM_BLOCK_SIZE */
+/* reuse GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS */
+/* reuse GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT */
+/* reuse GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH */
+/* reuse GL_ACTIVE_UNIFORM_BLOCKS */
+/* reuse GL_UNIFORM_TYPE */
+/* reuse GL_UNIFORM_SIZE */
+/* reuse GL_UNIFORM_NAME_LENGTH */
+/* reuse GL_UNIFORM_BLOCK_INDEX */
+/* reuse GL_UNIFORM_OFFSET */
+/* reuse GL_UNIFORM_ARRAY_STRIDE */
+/* reuse GL_UNIFORM_MATRIX_STRIDE */
+/* reuse GL_UNIFORM_IS_ROW_MAJOR */
+/* reuse GL_UNIFORM_BLOCK_BINDING */
+/* reuse GL_UNIFORM_BLOCK_DATA_SIZE */
+/* reuse GL_UNIFORM_BLOCK_NAME_LENGTH */
+/* reuse GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS */
+/* reuse GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER */
+/* reuse GL_INVALID_INDEX */
+#endif
+
+#ifndef GL_VERSION_3_2
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_LINES_ADJACENCY 0x000A
+#define GL_LINE_STRIP_ADJACENCY 0x000B
+#define GL_TRIANGLES_ADJACENCY 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
+#define GL_PROGRAM_POINT_SIZE 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT 0x8916
+#define GL_GEOMETRY_INPUT_TYPE 0x8917
+#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
+#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
+#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+/* reuse GL_MAX_VARYING_COMPONENTS */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+/* Reuse tokens from ARB_depth_clamp */
+/* reuse GL_DEPTH_CLAMP */
+/* Reuse tokens from ARB_draw_elements_base_vertex (none) */
+/* Reuse tokens from ARB_fragment_coord_conventions (none) */
+/* Reuse tokens from ARB_provoking_vertex */
+/* reuse GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+/* reuse GL_FIRST_VERTEX_CONVENTION */
+/* reuse GL_LAST_VERTEX_CONVENTION */
+/* reuse GL_PROVOKING_VERTEX */
+/* Reuse tokens from ARB_seamless_cube_map */
+/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS */
+/* Reuse tokens from ARB_sync */
+/* reuse GL_MAX_SERVER_WAIT_TIMEOUT */
+/* reuse GL_OBJECT_TYPE */
+/* reuse GL_SYNC_CONDITION */
+/* reuse GL_SYNC_STATUS */
+/* reuse GL_SYNC_FLAGS */
+/* reuse GL_SYNC_FENCE */
+/* reuse GL_SYNC_GPU_COMMANDS_COMPLETE */
+/* reuse GL_UNSIGNALED */
+/* reuse GL_SIGNALED */
+/* reuse GL_ALREADY_SIGNALED */
+/* reuse GL_TIMEOUT_EXPIRED */
+/* reuse GL_CONDITION_SATISFIED */
+/* reuse GL_WAIT_FAILED */
+/* reuse GL_TIMEOUT_IGNORED */
+/* reuse GL_SYNC_FLUSH_COMMANDS_BIT */
+/* reuse GL_TIMEOUT_IGNORED */
+/* Reuse tokens from ARB_texture_multisample */
+/* reuse GL_SAMPLE_POSITION */
+/* reuse GL_SAMPLE_MASK */
+/* reuse GL_SAMPLE_MASK_VALUE */
+/* reuse GL_MAX_SAMPLE_MASK_WORDS */
+/* reuse GL_TEXTURE_2D_MULTISAMPLE */
+/* reuse GL_PROXY_TEXTURE_2D_MULTISAMPLE */
+/* reuse GL_TEXTURE_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_TEXTURE_BINDING_2D_MULTISAMPLE */
+/* reuse GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_TEXTURE_SAMPLES */
+/* reuse GL_TEXTURE_FIXED_SAMPLE_LOCATIONS */
+/* reuse GL_SAMPLER_2D_MULTISAMPLE */
+/* reuse GL_INT_SAMPLER_2D_MULTISAMPLE */
+/* reuse GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE */
+/* reuse GL_SAMPLER_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY */
+/* reuse GL_MAX_COLOR_TEXTURE_SAMPLES */
+/* reuse GL_MAX_DEPTH_TEXTURE_SAMPLES */
+/* reuse GL_MAX_INTEGER_SAMPLES */
+/* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */
+#endif
+
+#ifndef GL_VERSION_3_3
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+/* Reuse tokens from ARB_blend_func_extended */
+/* reuse GL_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_ALPHA */
+/* reuse GL_MAX_DUAL_SOURCE_DRAW_BUFFERS */
+/* Reuse tokens from ARB_explicit_attrib_location (none) */
+/* Reuse tokens from ARB_occlusion_query2 */
+/* reuse GL_ANY_SAMPLES_PASSED */
+/* Reuse tokens from ARB_sampler_objects */
+/* reuse GL_SAMPLER_BINDING */
+/* Reuse tokens from ARB_shader_bit_encoding (none) */
+/* Reuse tokens from ARB_texture_rgb10_a2ui */
+/* reuse GL_RGB10_A2UI */
+/* Reuse tokens from ARB_texture_swizzle */
+/* reuse GL_TEXTURE_SWIZZLE_R */
+/* reuse GL_TEXTURE_SWIZZLE_G */
+/* reuse GL_TEXTURE_SWIZZLE_B */
+/* reuse GL_TEXTURE_SWIZZLE_A */
+/* reuse GL_TEXTURE_SWIZZLE_RGBA */
+/* Reuse tokens from ARB_timer_query */
+/* reuse GL_TIME_ELAPSED */
+/* reuse GL_TIMESTAMP */
+/* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
+/* reuse GL_INT_2_10_10_10_REV */
+#endif
+
+#ifndef GL_VERSION_4_0
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+/* Reuse tokens from ARB_texture_query_lod (none) */
+/* Reuse tokens from ARB_draw_buffers_blend (none) */
+/* Reuse tokens from ARB_draw_indirect */
+/* reuse GL_DRAW_INDIRECT_BUFFER */
+/* reuse GL_DRAW_INDIRECT_BUFFER_BINDING */
+/* Reuse tokens from ARB_gpu_shader5 */
+/* reuse GL_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MAX_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MIN_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_MAX_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_FRAGMENT_INTERPOLATION_OFFSET_BITS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+/* Reuse tokens from ARB_gpu_shader_fp64 */
+/* reuse GL_DOUBLE_VEC2 */
+/* reuse GL_DOUBLE_VEC3 */
+/* reuse GL_DOUBLE_VEC4 */
+/* reuse GL_DOUBLE_MAT2 */
+/* reuse GL_DOUBLE_MAT3 */
+/* reuse GL_DOUBLE_MAT4 */
+/* reuse GL_DOUBLE_MAT2x3 */
+/* reuse GL_DOUBLE_MAT2x4 */
+/* reuse GL_DOUBLE_MAT3x2 */
+/* reuse GL_DOUBLE_MAT3x4 */
+/* reuse GL_DOUBLE_MAT4x2 */
+/* reuse GL_DOUBLE_MAT4x3 */
+/* Reuse tokens from ARB_shader_subroutine */
+/* reuse GL_ACTIVE_SUBROUTINES */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORMS */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_ACTIVE_SUBROUTINE_MAX_LENGTH */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH */
+/* reuse GL_MAX_SUBROUTINES */
+/* reuse GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */
+/* reuse GL_COMPATIBLE_SUBROUTINES */
+/* Reuse tokens from ARB_tessellation_shader */
+/* reuse GL_PATCHES */
+/* reuse GL_PATCH_VERTICES */
+/* reuse GL_PATCH_DEFAULT_INNER_LEVEL */
+/* reuse GL_PATCH_DEFAULT_OUTER_LEVEL */
+/* reuse GL_TESS_CONTROL_OUTPUT_VERTICES */
+/* reuse GL_TESS_GEN_MODE */
+/* reuse GL_TESS_GEN_SPACING */
+/* reuse GL_TESS_GEN_VERTEX_ORDER */
+/* reuse GL_TESS_GEN_POINT_MODE */
+/* reuse GL_ISOLINES */
+/* reuse GL_FRACTIONAL_ODD */
+/* reuse GL_FRACTIONAL_EVEN */
+/* reuse GL_MAX_PATCH_VERTICES */
+/* reuse GL_MAX_TESS_GEN_LEVEL */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_PATCH_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_CONTROL_INPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_CONTROL_SHADER */
+/* Reuse tokens from ARB_texture_buffer_object_rgb32 (none) */
+/* Reuse tokens from ARB_transform_feedback2 */
+/* reuse GL_TRANSFORM_FEEDBACK */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+/* reuse GL_TRANSFORM_FEEDBACK_BINDING */
+/* Reuse tokens from ARB_transform_feedback3 */
+/* reuse GL_MAX_TRANSFORM_FEEDBACK_BUFFERS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+#endif
+
+#ifndef GL_VERSION_4_1
+/* Reuse tokens from ARB_ES2_compatibility */
+/* reuse GL_FIXED */
+/* reuse GL_IMPLEMENTATION_COLOR_READ_TYPE */
+/* reuse GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+/* reuse GL_LOW_FLOAT */
+/* reuse GL_MEDIUM_FLOAT */
+/* reuse GL_HIGH_FLOAT */
+/* reuse GL_LOW_INT */
+/* reuse GL_MEDIUM_INT */
+/* reuse GL_HIGH_INT */
+/* reuse GL_SHADER_COMPILER */
+/* reuse GL_NUM_SHADER_BINARY_FORMATS */
+/* reuse GL_MAX_VERTEX_UNIFORM_VECTORS */
+/* reuse GL_MAX_VARYING_VECTORS */
+/* reuse GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+/* Reuse tokens from ARB_get_program_binary */
+/* reuse GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
+/* reuse GL_PROGRAM_BINARY_LENGTH */
+/* reuse GL_NUM_PROGRAM_BINARY_FORMATS */
+/* reuse GL_PROGRAM_BINARY_FORMATS */
+/* Reuse tokens from ARB_separate_shader_objects */
+/* reuse GL_VERTEX_SHADER_BIT */
+/* reuse GL_FRAGMENT_SHADER_BIT */
+/* reuse GL_GEOMETRY_SHADER_BIT */
+/* reuse GL_TESS_CONTROL_SHADER_BIT */
+/* reuse GL_TESS_EVALUATION_SHADER_BIT */
+/* reuse GL_ALL_SHADER_BITS */
+/* reuse GL_PROGRAM_SEPARABLE */
+/* reuse GL_ACTIVE_PROGRAM */
+/* reuse GL_PROGRAM_PIPELINE_BINDING */
+/* Reuse tokens from ARB_shader_precision (none) */
+/* Reuse tokens from ARB_vertex_attrib_64bit - all are in GL 3.0 and 4.0 already */
+/* Reuse tokens from ARB_viewport_array - some are in GL 1.1 and ARB_provoking_vertex already */
+/* reuse GL_MAX_VIEWPORTS */
+/* reuse GL_VIEWPORT_SUBPIXEL_BITS */
+/* reuse GL_VIEWPORT_BOUNDS_RANGE */
+/* reuse GL_LAYER_PROVOKING_VERTEX */
+/* reuse GL_VIEWPORT_INDEX_PROVOKING_VERTEX */
+/* reuse GL_UNDEFINED_VERTEX */
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_MULTISAMPLE_ARB 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
+#define GL_SAMPLES_ARB 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_NORMAL_MAP_ARB 0x8511
+#define GL_REFLECTION_MAP_ARB 0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
+#define GL_COMPRESSED_RGB_ARB 0x84ED
+#define GL_COMPRESSED_RGBA_ARB 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_POINT_SIZE_MAX_ARB 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+#define GL_VERTEX_BLEND_ARB 0x86A7
+#define GL_CURRENT_WEIGHT_ARB 0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+#define GL_WEIGHT_ARRAY_ARB 0x86AD
+#define GL_MODELVIEW0_ARB 0x1700
+#define GL_MODELVIEW1_ARB 0x850A
+#define GL_MODELVIEW2_ARB 0x8722
+#define GL_MODELVIEW3_ARB 0x8723
+#define GL_MODELVIEW4_ARB 0x8724
+#define GL_MODELVIEW5_ARB 0x8725
+#define GL_MODELVIEW6_ARB 0x8726
+#define GL_MODELVIEW7_ARB 0x8727
+#define GL_MODELVIEW8_ARB 0x8728
+#define GL_MODELVIEW9_ARB 0x8729
+#define GL_MODELVIEW10_ARB 0x872A
+#define GL_MODELVIEW11_ARB 0x872B
+#define GL_MODELVIEW12_ARB 0x872C
+#define GL_MODELVIEW13_ARB 0x872D
+#define GL_MODELVIEW14_ARB 0x872E
+#define GL_MODELVIEW15_ARB 0x872F
+#define GL_MODELVIEW16_ARB 0x8730
+#define GL_MODELVIEW17_ARB 0x8731
+#define GL_MODELVIEW18_ARB 0x8732
+#define GL_MODELVIEW19_ARB 0x8733
+#define GL_MODELVIEW20_ARB 0x8734
+#define GL_MODELVIEW21_ARB 0x8735
+#define GL_MODELVIEW22_ARB 0x8736
+#define GL_MODELVIEW23_ARB 0x8737
+#define GL_MODELVIEW24_ARB 0x8738
+#define GL_MODELVIEW25_ARB 0x8739
+#define GL_MODELVIEW26_ARB 0x873A
+#define GL_MODELVIEW27_ARB 0x873B
+#define GL_MODELVIEW28_ARB 0x873C
+#define GL_MODELVIEW29_ARB 0x873D
+#define GL_MODELVIEW30_ARB 0x873E
+#define GL_MODELVIEW31_ARB 0x873F
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_MATRIX_PALETTE_ARB 0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_COMBINE_ARB 0x8570
+#define GL_COMBINE_RGB_ARB 0x8571
+#define GL_COMBINE_ALPHA_ARB 0x8572
+#define GL_SOURCE0_RGB_ARB 0x8580
+#define GL_SOURCE1_RGB_ARB 0x8581
+#define GL_SOURCE2_RGB_ARB 0x8582
+#define GL_SOURCE0_ALPHA_ARB 0x8588
+#define GL_SOURCE1_ALPHA_ARB 0x8589
+#define GL_SOURCE2_ALPHA_ARB 0x858A
+#define GL_OPERAND0_RGB_ARB 0x8590
+#define GL_OPERAND1_RGB_ARB 0x8591
+#define GL_OPERAND2_RGB_ARB 0x8592
+#define GL_OPERAND0_ALPHA_ARB 0x8598
+#define GL_OPERAND1_ALPHA_ARB 0x8599
+#define GL_OPERAND2_ALPHA_ARB 0x859A
+#define GL_RGB_SCALE_ARB 0x8573
+#define GL_ADD_SIGNED_ARB 0x8574
+#define GL_INTERPOLATE_ARB 0x8575
+#define GL_SUBTRACT_ARB 0x84E7
+#define GL_CONSTANT_ARB 0x8576
+#define GL_PRIMARY_COLOR_ARB 0x8577
+#define GL_PREVIOUS_ARB 0x8578
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_DOT3_RGB_ARB 0x86AE
+#define GL_DOT3_RGBA_ARB 0x86AF
+#endif
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+#endif
+
+#ifndef GL_ARB_window_pos
+#endif
+
+#ifndef GL_ARB_vertex_program
+#define GL_COLOR_SUM_ARB 0x8458
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+#define GL_PROGRAM_LENGTH_ARB 0x8627
+#define GL_PROGRAM_STRING_ARB 0x8628
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_CURRENT_MATRIX_ARB 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+#define GL_PROGRAM_BINDING_ARB 0x8677
+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+#define GL_PROGRAM_FORMAT_ARB 0x8876
+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+#define GL_MATRIX0_ARB 0x88C0
+#define GL_MATRIX1_ARB 0x88C1
+#define GL_MATRIX2_ARB 0x88C2
+#define GL_MATRIX3_ARB 0x88C3
+#define GL_MATRIX4_ARB 0x88C4
+#define GL_MATRIX5_ARB 0x88C5
+#define GL_MATRIX6_ARB 0x88C6
+#define GL_MATRIX7_ARB 0x88C7
+#define GL_MATRIX8_ARB 0x88C8
+#define GL_MATRIX9_ARB 0x88C9
+#define GL_MATRIX10_ARB 0x88CA
+#define GL_MATRIX11_ARB 0x88CB
+#define GL_MATRIX12_ARB 0x88CC
+#define GL_MATRIX13_ARB 0x88CD
+#define GL_MATRIX14_ARB 0x88CE
+#define GL_MATRIX15_ARB 0x88CF
+#define GL_MATRIX16_ARB 0x88D0
+#define GL_MATRIX17_ARB 0x88D1
+#define GL_MATRIX18_ARB 0x88D2
+#define GL_MATRIX19_ARB 0x88D3
+#define GL_MATRIX20_ARB 0x88D4
+#define GL_MATRIX21_ARB 0x88D5
+#define GL_MATRIX22_ARB 0x88D6
+#define GL_MATRIX23_ARB 0x88D7
+#define GL_MATRIX24_ARB 0x88D8
+#define GL_MATRIX25_ARB 0x88D9
+#define GL_MATRIX26_ARB 0x88DA
+#define GL_MATRIX27_ARB 0x88DB
+#define GL_MATRIX28_ARB 0x88DC
+#define GL_MATRIX29_ARB 0x88DD
+#define GL_MATRIX30_ARB 0x88DE
+#define GL_MATRIX31_ARB 0x88DF
+#endif
+
+#ifndef GL_ARB_fragment_program
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+#endif
+
+#ifndef GL_ARB_occlusion_query
+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
+#define GL_CURRENT_QUERY_ARB 0x8865
+#define GL_QUERY_RESULT_ARB 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+#define GL_SAMPLES_PASSED_ARB 0x8914
+#endif
+
+#ifndef GL_ARB_shader_objects
+#define GL_PROGRAM_OBJECT_ARB 0x8B40
+#define GL_SHADER_OBJECT_ARB 0x8B48
+#define GL_OBJECT_TYPE_ARB 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
+#define GL_FLOAT_VEC2_ARB 0x8B50
+#define GL_FLOAT_VEC3_ARB 0x8B51
+#define GL_FLOAT_VEC4_ARB 0x8B52
+#define GL_INT_VEC2_ARB 0x8B53
+#define GL_INT_VEC3_ARB 0x8B54
+#define GL_INT_VEC4_ARB 0x8B55
+#define GL_BOOL_ARB 0x8B56
+#define GL_BOOL_VEC2_ARB 0x8B57
+#define GL_BOOL_VEC3_ARB 0x8B58
+#define GL_BOOL_VEC4_ARB 0x8B59
+#define GL_FLOAT_MAT2_ARB 0x8B5A
+#define GL_FLOAT_MAT3_ARB 0x8B5B
+#define GL_FLOAT_MAT4_ARB 0x8B5C
+#define GL_SAMPLER_1D_ARB 0x8B5D
+#define GL_SAMPLER_2D_ARB 0x8B5E
+#define GL_SAMPLER_3D_ARB 0x8B5F
+#define GL_SAMPLER_CUBE_ARB 0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+#endif
+
+#ifndef GL_ARB_vertex_shader
+#define GL_VERTEX_SHADER_ARB 0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+#endif
+
+#ifndef GL_ARB_fragment_shader
+#define GL_FRAGMENT_SHADER_ARB 0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
+#endif
+
+#ifndef GL_ARB_shading_language_100
+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
+#endif
+
+#ifndef GL_ARB_texture_non_power_of_two
+#endif
+
+#ifndef GL_ARB_point_sprite
+#define GL_POINT_SPRITE_ARB 0x8861
+#define GL_COORD_REPLACE_ARB 0x8862
+#endif
+
+#ifndef GL_ARB_fragment_program_shadow
+#endif
+
+#ifndef GL_ARB_draw_buffers
+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
+#define GL_DRAW_BUFFER0_ARB 0x8825
+#define GL_DRAW_BUFFER1_ARB 0x8826
+#define GL_DRAW_BUFFER2_ARB 0x8827
+#define GL_DRAW_BUFFER3_ARB 0x8828
+#define GL_DRAW_BUFFER4_ARB 0x8829
+#define GL_DRAW_BUFFER5_ARB 0x882A
+#define GL_DRAW_BUFFER6_ARB 0x882B
+#define GL_DRAW_BUFFER7_ARB 0x882C
+#define GL_DRAW_BUFFER8_ARB 0x882D
+#define GL_DRAW_BUFFER9_ARB 0x882E
+#define GL_DRAW_BUFFER10_ARB 0x882F
+#define GL_DRAW_BUFFER11_ARB 0x8830
+#define GL_DRAW_BUFFER12_ARB 0x8831
+#define GL_DRAW_BUFFER13_ARB 0x8832
+#define GL_DRAW_BUFFER14_ARB 0x8833
+#define GL_DRAW_BUFFER15_ARB 0x8834
+#endif
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#endif
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+#define GL_CLAMP_READ_COLOR_ARB 0x891C
+#define GL_FIXED_ONLY_ARB 0x891D
+#endif
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_HALF_FLOAT_ARB 0x140B
+#endif
+
+#ifndef GL_ARB_texture_float
+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
+#define GL_RGBA32F_ARB 0x8814
+#define GL_RGB32F_ARB 0x8815
+#define GL_ALPHA32F_ARB 0x8816
+#define GL_INTENSITY32F_ARB 0x8817
+#define GL_LUMINANCE32F_ARB 0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
+#define GL_RGBA16F_ARB 0x881A
+#define GL_RGB16F_ARB 0x881B
+#define GL_ALPHA16F_ARB 0x881C
+#define GL_INTENSITY16F_ARB 0x881D
+#define GL_LUMINANCE16F_ARB 0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
+#endif
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#endif
+
+#ifndef GL_ARB_depth_buffer_float
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
+#endif
+
+#ifndef GL_ARB_draw_instanced
+#endif
+
+#ifndef GL_ARB_framebuffer_object
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+#define GL_FRAMEBUFFER_DEFAULT 0x8218
+#define GL_FRAMEBUFFER_UNDEFINED 0x8219
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
+#define GL_DEPTH_STENCIL 0x84F9
+#define GL_UNSIGNED_INT_24_8 0x84FA
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE 0x88F1
+#define GL_TEXTURE_RED_TYPE 0x8C10
+#define GL_TEXTURE_GREEN_TYPE 0x8C11
+#define GL_TEXTURE_BLUE_TYPE 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE 0x8C13
+#define GL_TEXTURE_DEPTH_TYPE 0x8C16
+#define GL_UNSIGNED_NORMALIZED 0x8C17
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#define GL_DRAW_FRAMEBUFFER 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES 0x8CAB
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#define GL_COLOR_ATTACHMENT3 0x8CE3
+#define GL_COLOR_ATTACHMENT4 0x8CE4
+#define GL_COLOR_ATTACHMENT5 0x8CE5
+#define GL_COLOR_ATTACHMENT6 0x8CE6
+#define GL_COLOR_ATTACHMENT7 0x8CE7
+#define GL_COLOR_ATTACHMENT8 0x8CE8
+#define GL_COLOR_ATTACHMENT9 0x8CE9
+#define GL_COLOR_ATTACHMENT10 0x8CEA
+#define GL_COLOR_ATTACHMENT11 0x8CEB
+#define GL_COLOR_ATTACHMENT12 0x8CEC
+#define GL_COLOR_ATTACHMENT13 0x8CED
+#define GL_COLOR_ATTACHMENT14 0x8CEE
+#define GL_COLOR_ATTACHMENT15 0x8CEF
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_WIDTH 0x8D42
+#define GL_RENDERBUFFER_HEIGHT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+#define GL_STENCIL_INDEX1 0x8D46
+#define GL_STENCIL_INDEX4 0x8D47
+#define GL_STENCIL_INDEX8 0x8D48
+#define GL_STENCIL_INDEX16 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+#define GL_MAX_SAMPLES 0x8D57
+#endif
+
+#ifndef GL_ARB_framebuffer_object_DEPRECATED
+#define GL_INDEX 0x8222
+#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
+#endif
+
+#ifndef GL_ARB_framebuffer_sRGB
+#define GL_FRAMEBUFFER_SRGB 0x8DB9
+#endif
+
+#ifndef GL_ARB_geometry_shader4
+#define GL_LINES_ADJACENCY_ARB 0x000A
+#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
+#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+/* reuse GL_MAX_VARYING_COMPONENTS */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+#endif
+
+#ifndef GL_ARB_half_float_vertex
+#define GL_HALF_FLOAT 0x140B
+#endif
+
+#ifndef GL_ARB_instanced_arrays
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+#endif
+
+#ifndef GL_ARB_map_buffer_range
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+#endif
+
+#ifndef GL_ARB_texture_buffer_object
+#define GL_TEXTURE_BUFFER_ARB 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+#endif
+
+#ifndef GL_ARB_texture_compression_rgtc
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+#endif
+
+#ifndef GL_ARB_texture_rg
+#define GL_RG 0x8227
+#define GL_RG_INTEGER 0x8228
+#define GL_R8 0x8229
+#define GL_R16 0x822A
+#define GL_RG8 0x822B
+#define GL_RG16 0x822C
+#define GL_R16F 0x822D
+#define GL_R32F 0x822E
+#define GL_RG16F 0x822F
+#define GL_RG32F 0x8230
+#define GL_R8I 0x8231
+#define GL_R8UI 0x8232
+#define GL_R16I 0x8233
+#define GL_R16UI 0x8234
+#define GL_R32I 0x8235
+#define GL_R32UI 0x8236
+#define GL_RG8I 0x8237
+#define GL_RG8UI 0x8238
+#define GL_RG16I 0x8239
+#define GL_RG16UI 0x823A
+#define GL_RG32I 0x823B
+#define GL_RG32UI 0x823C
+#endif
+
+#ifndef GL_ARB_vertex_array_object
+#define GL_VERTEX_ARRAY_BINDING 0x85B5
+#endif
+
+#ifndef GL_ARB_uniform_buffer_object
+#define GL_UNIFORM_BUFFER 0x8A11
+#define GL_UNIFORM_BUFFER_BINDING 0x8A28
+#define GL_UNIFORM_BUFFER_START 0x8A29
+#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
+#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+#define GL_UNIFORM_TYPE 0x8A37
+#define GL_UNIFORM_SIZE 0x8A38
+#define GL_UNIFORM_NAME_LENGTH 0x8A39
+#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
+#define GL_UNIFORM_OFFSET 0x8A3B
+#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
+#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+#define GL_INVALID_INDEX 0xFFFFFFFFu
+#endif
+
+#ifndef GL_ARB_compatibility
+/* ARB_compatibility just defines tokens from core 3.0 */
+#endif
+
+#ifndef GL_ARB_copy_buffer
+#define GL_COPY_READ_BUFFER 0x8F36
+#define GL_COPY_WRITE_BUFFER 0x8F37
+#endif
+
+#ifndef GL_ARB_shader_texture_lod
+#endif
+
+#ifndef GL_ARB_depth_clamp
+#define GL_DEPTH_CLAMP 0x864F
+#endif
+
+#ifndef GL_ARB_draw_elements_base_vertex
+#endif
+
+#ifndef GL_ARB_fragment_coord_conventions
+#endif
+
+#ifndef GL_ARB_provoking_vertex
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+#endif
+
+#ifndef GL_ARB_seamless_cube_map
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+#endif
+
+#ifndef GL_ARB_sync
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_WAIT_FAILED 0x911D
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+#endif
+
+#ifndef GL_ARB_texture_multisample
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+#endif
+
+#ifndef GL_ARB_vertex_array_bgra
+/* reuse GL_BGRA */
+#endif
+
+#ifndef GL_ARB_draw_buffers_blend
+#endif
+
+#ifndef GL_ARB_sample_shading
+#define GL_SAMPLE_SHADING_ARB 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+#endif
+
+#ifndef GL_ARB_texture_cube_map_array
+#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
+#endif
+
+#ifndef GL_ARB_texture_gather
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+#endif
+
+#ifndef GL_ARB_texture_query_lod
+#endif
+
+#ifndef GL_ARB_shading_language_include
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+#endif
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_SRC1_COLOR 0x88F9
+/* reuse GL_SRC1_ALPHA */
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+#endif
+
+#ifndef GL_ARB_explicit_attrib_location
+#endif
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_SAMPLER_BINDING 0x8919
+#endif
+
+#ifndef GL_ARB_shader_bit_encoding
+#endif
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_RGB10_A2UI 0x906F
+#endif
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+/* reuse GL_UNSIGNED_INT_2_10_10_10_REV */
+#define GL_INT_2_10_10_10_REV 0x8D9F
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+#endif
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+/* reuse GL_MAX_VERTEX_STREAMS */
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+/* reuse GL_DOUBLE */
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+/* reuse GL_UNIFORM_SIZE */
+/* reuse GL_UNIFORM_NAME_LENGTH */
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_PATCHES 0x000E
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+/* reuse GL_TRIANGLES */
+/* reuse GL_QUADS */
+#define GL_ISOLINES 0x8E7A
+/* reuse GL_EQUAL */
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+/* reuse GL_CCW */
+/* reuse GL_CW */
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#endif
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+/* reuse GL_RGB32F */
+/* reuse GL_RGB32UI */
+/* reuse GL_RGB32I */
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+#endif
+
+#ifndef GL_ARB_ES2_compatibility
+#define GL_FIXED 0x140C
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+#define GL_LOW_FLOAT 0x8DF0
+#define GL_MEDIUM_FLOAT 0x8DF1
+#define GL_HIGH_FLOAT 0x8DF2
+#define GL_LOW_INT 0x8DF3
+#define GL_MEDIUM_INT 0x8DF4
+#define GL_HIGH_INT 0x8DF5
+#define GL_SHADER_COMPILER 0x8DFA
+#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+#define GL_MAX_VARYING_VECTORS 0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+#endif
+
+#ifndef GL_ARB_get_program_binary
+#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+#define GL_PROGRAM_BINARY_LENGTH 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS 0x87FF
+#endif
+
+#ifndef GL_ARB_separate_shader_objects
+#define GL_VERTEX_SHADER_BIT 0x00000001
+#define GL_FRAGMENT_SHADER_BIT 0x00000002
+#define GL_GEOMETRY_SHADER_BIT 0x00000004
+#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
+#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+#define GL_ALL_SHADER_BITS 0xFFFFFFFF
+#define GL_PROGRAM_SEPARABLE 0x8258
+#define GL_ACTIVE_PROGRAM 0x8259
+#define GL_PROGRAM_PIPELINE_BINDING 0x825A
+#endif
+
+#ifndef GL_ARB_shader_precision
+#endif
+
+#ifndef GL_ARB_vertex_attrib_64bit
+/* reuse GL_RGB32I */
+/* reuse GL_DOUBLE_VEC2 */
+/* reuse GL_DOUBLE_VEC3 */
+/* reuse GL_DOUBLE_VEC4 */
+/* reuse GL_DOUBLE_MAT2 */
+/* reuse GL_DOUBLE_MAT3 */
+/* reuse GL_DOUBLE_MAT4 */
+/* reuse GL_DOUBLE_MAT2x3 */
+/* reuse GL_DOUBLE_MAT2x4 */
+/* reuse GL_DOUBLE_MAT3x2 */
+/* reuse GL_DOUBLE_MAT3x4 */
+/* reuse GL_DOUBLE_MAT4x2 */
+/* reuse GL_DOUBLE_MAT4x3 */
+#endif
+
+#ifndef GL_ARB_viewport_array
+/* reuse GL_SCISSOR_BOX */
+/* reuse GL_VIEWPORT */
+/* reuse GL_DEPTH_RANGE */
+/* reuse GL_SCISSOR_TEST */
+#define GL_MAX_VIEWPORTS 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
+#define GL_LAYER_PROVOKING_VERTEX 0x825E
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+#define GL_UNDEFINED_VERTEX 0x8260
+/* reuse GL_FIRST_VERTEX_CONVENTION */
+/* reuse GL_LAST_VERTEX_CONVENTION */
+/* reuse GL_PROVOKING_VERTEX */
+#endif
+
+#ifndef GL_ARB_cl_event
+#define GL_SYNC_CL_EVENT_ARB 0x8240
+#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+#endif
+
+#ifndef GL_ARB_debug_output
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+#define GL_DEBUG_SOURCE_API_ARB 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+#endif
+
+#ifndef GL_ARB_robustness
+/* reuse GL_NO_ERROR */
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
+#endif
+
+#ifndef GL_ARB_shader_stencil_export
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_ABGR_EXT 0x8000
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_CONSTANT_COLOR_EXT 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+#define GL_CONSTANT_ALPHA_EXT 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+#define GL_BLEND_COLOR_EXT 0x8005
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_ALPHA4_EXT 0x803B
+#define GL_ALPHA8_EXT 0x803C
+#define GL_ALPHA12_EXT 0x803D
+#define GL_ALPHA16_EXT 0x803E
+#define GL_LUMINANCE4_EXT 0x803F
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE12_EXT 0x8041
+#define GL_LUMINANCE16_EXT 0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
+#define GL_INTENSITY_EXT 0x8049
+#define GL_INTENSITY4_EXT 0x804A
+#define GL_INTENSITY8_EXT 0x804B
+#define GL_INTENSITY12_EXT 0x804C
+#define GL_INTENSITY16_EXT 0x804D
+#define GL_RGB2_EXT 0x804E
+#define GL_RGB4_EXT 0x804F
+#define GL_RGB5_EXT 0x8050
+#define GL_RGB8_EXT 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB12_EXT 0x8053
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA2_EXT 0x8055
+#define GL_RGBA4_EXT 0x8056
+#define GL_RGB5_A1_EXT 0x8057
+#define GL_RGBA8_EXT 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_RGBA12_EXT 0x805A
+#define GL_RGBA16_EXT 0x805B
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+#define GL_REPLACE_EXT 0x8062
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+#define GL_TEXTURE_3D_EXT 0x806F
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
+#define GL_TEXTURE_DEPTH_EXT 0x8071
+#define GL_TEXTURE_WRAP_R_EXT 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_FILTER4_SGIS 0x8146
+#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
+#endif
+
+#ifndef GL_EXT_subtexture
+#endif
+
+#ifndef GL_EXT_copy_texture
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_HISTOGRAM_EXT 0x8024
+#define GL_PROXY_HISTOGRAM_EXT 0x8025
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+#define GL_HISTOGRAM_SINK_EXT 0x802D
+#define GL_MINMAX_EXT 0x802E
+#define GL_MINMAX_FORMAT_EXT 0x802F
+#define GL_MINMAX_SINK_EXT 0x8030
+#define GL_TABLE_TOO_LARGE_EXT 0x8031
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_CONVOLUTION_1D_EXT 0x8010
+#define GL_CONVOLUTION_2D_EXT 0x8011
+#define GL_SEPARABLE_2D_EXT 0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+#define GL_REDUCE_EXT 0x8016
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+#endif
+
+#ifndef GL_SGI_color_matrix
+#define GL_COLOR_MATRIX_SGI 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_COLOR_TABLE_SGI 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_PIXEL_TEXTURE_SGIS 0x8353
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
+#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_PIXEL_TEX_GEN_SGIX 0x8139
+#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
+#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
+#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
+#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
+#define GL_TEXTURE_4D_SGIS 0x8134
+#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
+#define GL_TEXTURE_4DSIZE_SGIS 0x8136
+#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
+#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_CMYK_EXT 0x800C
+#define GL_CMYKA_EXT 0x800D
+#define GL_PACK_CMYK_HINT_EXT 0x800E
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_TEXTURE_PRIORITY_EXT 0x8066
+#define GL_TEXTURE_RESIDENT_EXT 0x8067
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
+#define GL_LINEAR_DETAIL_SGIS 0x8097
+#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
+#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
+#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_LINEAR_SHARPEN_SGIS 0x80AD
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
+#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_MULTISAMPLE_SGIS 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+#define GL_SAMPLE_MASK_SGIS 0x80A0
+#define GL_1PASS_SGIS 0x80A1
+#define GL_2PASS_0_SGIS 0x80A2
+#define GL_2PASS_1_SGIS 0x80A3
+#define GL_4PASS_0_SGIS 0x80A4
+#define GL_4PASS_1_SGIS 0x80A5
+#define GL_4PASS_2_SGIS 0x80A6
+#define GL_4PASS_3_SGIS 0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
+#define GL_SAMPLES_SGIS 0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_RESCALE_NORMAL_EXT 0x803A
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_GENERATE_MIPMAP_SGIS 0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
+#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_TEXTURE_COMPARE_SGIX 0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
+#endif
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_FUNC_ADD_EXT 0x8006
+#define GL_MIN_EXT 0x8007
+#define GL_MAX_EXT 0x8008
+#define GL_BLEND_EQUATION_EXT 0x8009
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_FUNC_SUBTRACT_EXT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_INTERLACE_SGIX 0x8094
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
+#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
+#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
+#endif
+
+#ifndef GL_SGIS_texture_select
+#define GL_DUAL_ALPHA4_SGIS 0x8110
+#define GL_DUAL_ALPHA8_SGIS 0x8111
+#define GL_DUAL_ALPHA12_SGIS 0x8112
+#define GL_DUAL_ALPHA16_SGIS 0x8113
+#define GL_DUAL_LUMINANCE4_SGIS 0x8114
+#define GL_DUAL_LUMINANCE8_SGIS 0x8115
+#define GL_DUAL_LUMINANCE12_SGIS 0x8116
+#define GL_DUAL_LUMINANCE16_SGIS 0x8117
+#define GL_DUAL_INTENSITY4_SGIS 0x8118
+#define GL_DUAL_INTENSITY8_SGIS 0x8119
+#define GL_DUAL_INTENSITY12_SGIS 0x811A
+#define GL_DUAL_INTENSITY16_SGIS 0x811B
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
+#define GL_QUAD_ALPHA4_SGIS 0x811E
+#define GL_QUAD_ALPHA8_SGIS 0x811F
+#define GL_QUAD_LUMINANCE4_SGIS 0x8120
+#define GL_QUAD_LUMINANCE8_SGIS 0x8121
+#define GL_QUAD_INTENSITY4_SGIS 0x8122
+#define GL_QUAD_INTENSITY8_SGIS 0x8123
+#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
+#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SPRITE_SGIX 0x8148
+#define GL_SPRITE_MODE_SGIX 0x8149
+#define GL_SPRITE_AXIS_SGIX 0x814A
+#define GL_SPRITE_TRANSLATION_SGIX 0x814B
+#define GL_SPRITE_AXIAL_SGIX 0x814C
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
+#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_POINT_SIZE_MAX_EXT 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+#endif
+
+#ifndef GL_SGIS_point_parameters
+#define GL_POINT_SIZE_MIN_SGIS 0x8126
+#define GL_POINT_SIZE_MAX_SGIS 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
+#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_FRAMEZOOM_SGIX 0x818B
+#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#endif
+
+#ifndef GL_FfdMaskSGIX
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
+#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
+#define GL_DEFORMATIONS_MASK_SGIX 0x8196
+#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_REFERENCE_PLANE_SGIX 0x817D
+#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_FOG_FUNC_SGIS 0x812A
+#define GL_FOG_FUNC_POINTS_SGIS 0x812B
+#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_FOG_OFFSET_SGIX 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_IMAGE_SCALE_X_HP 0x8155
+#define GL_IMAGE_SCALE_Y_HP 0x8156
+#define GL_IMAGE_TRANSLATE_X_HP 0x8157
+#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
+#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
+#define GL_IMAGE_MAG_FILTER_HP 0x815C
+#define GL_IMAGE_MIN_FILTER_HP 0x815D
+#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
+#define GL_CUBIC_HP 0x815F
+#define GL_AVERAGE_HP 0x8160
+#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_IGNORE_BORDER_HP 0x8150
+#define GL_CONSTANT_BORDER_HP 0x8151
+#define GL_REPLICATE_BORDER_HP 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
+#endif
+
+#ifndef GL_INGR_palette_buffer
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
+#endif
+
+#ifndef GL_EXT_color_subtable
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
+#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
+#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
+#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
+#define GL_COLOR3_BIT_PGI 0x00010000
+#define GL_COLOR4_BIT_PGI 0x00020000
+#define GL_EDGEFLAG_BIT_PGI 0x00040000
+#define GL_INDEX_BIT_PGI 0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
+#define GL_NORMAL_BIT_PGI 0x08000000
+#define GL_TEXCOORD1_BIT_PGI 0x10000000
+#define GL_TEXCOORD2_BIT_PGI 0x20000000
+#define GL_TEXCOORD3_BIT_PGI 0x40000000
+#define GL_TEXCOORD4_BIT_PGI 0x80000000
+#define GL_VERTEX23_BIT_PGI 0x00000004
+#define GL_VERTEX4_BIT_PGI 0x00000008
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
+#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
+#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
+#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
+#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
+#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
+#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
+#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
+#define GL_CLIP_NEAR_HINT_PGI 0x1A220
+#define GL_CLIP_FAR_HINT_PGI 0x1A221
+#define GL_WIDE_LINE_HINT_PGI 0x1A222
+#define GL_BACK_NORMALS_HINT_PGI 0x1A223
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_LIST_PRIORITY_SGIX 0x8182
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_IR_INSTRUMENT1_SGIX 0x817F
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
+#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
+#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
+#endif
+
+#ifndef GL_EXT_index_texture
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_INDEX_MATERIAL_EXT 0x81B8
+#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
+#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_INDEX_TEST_EXT 0x81B5
+#define GL_INDEX_TEST_FUNC_EXT 0x81B6
+#define GL_INDEX_TEST_REF_EXT 0x81B7
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_IUI_V2F_EXT 0x81AD
+#define GL_IUI_V3F_EXT 0x81AE
+#define GL_IUI_N3F_V2F_EXT 0x81AF
+#define GL_IUI_N3F_V3F_EXT 0x81B0
+#define GL_T2F_IUI_V2F_EXT 0x81B1
+#define GL_T2F_IUI_V3F_EXT 0x81B2
+#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
+#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_YCRCB_422_SGIX 0x81BB
+#define GL_YCRCB_444_SGIX 0x81BC
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
+#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
+#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
+#define GL_LIGHT_ENV_MODE_SGIX 0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
+#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
+#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
+#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
+#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
+#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
+#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
+#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
+#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
+#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
+#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_PHONG_WIN 0x80EA
+#define GL_PHONG_HINT_WIN 0x80EB
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
+#define GL_FRAGMENT_NORMAL_EXT 0x834A
+#define GL_FRAGMENT_COLOR_EXT 0x834C
+#define GL_ATTENUATION_EXT 0x834D
+#define GL_SHADOW_ATTENUATION_EXT 0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+#define GL_TEXTURE_LIGHT_EXT 0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+/* reuse GL_FRAGMENT_DEPTH_EXT */
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_ALPHA_MIN_SGIX 0x8320
+#define GL_ALPHA_MAX_SGIX 0x8321
+#endif
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184
+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185
+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186
+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189
+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_ASYNC_MARKER_SGIX 0x8329
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
+#endif
+
+#ifndef GL_INTEL_texture_scissor
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_OCCLUSION_TEST_HP 0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+#define GL_CUBIC_EXT 0x8334
+#define GL_AVERAGE_EXT 0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+#define GL_SINGLE_COLOR_EXT 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_COLOR_SUM_EXT 0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_PERTURB_EXT 0x85AE
+#define GL_TEXTURE_NORMAL_EXT 0x85AF
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+#define GL_FOG_COORDINATE_EXT 0x8451
+#define GL_FRAGMENT_DEPTH_EXT 0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_SCREEN_COORDINATES_REND 0x8490
+#define GL_INVERTED_SCREEN_W_REND 0x8491
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_TANGENT_ARRAY_EXT 0x8439
+#define GL_BINORMAL_ARRAY_EXT 0x843A
+#define GL_CURRENT_TANGENT_EXT 0x843B
+#define GL_CURRENT_BINORMAL_EXT 0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+#define GL_MAP1_TANGENT_EXT 0x8444
+#define GL_MAP2_TANGENT_EXT 0x8445
+#define GL_MAP1_BINORMAL_EXT 0x8446
+#define GL_MAP2_BINORMAL_EXT 0x8447
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_COMBINE_EXT 0x8570
+#define GL_COMBINE_RGB_EXT 0x8571
+#define GL_COMBINE_ALPHA_EXT 0x8572
+#define GL_RGB_SCALE_EXT 0x8573
+#define GL_ADD_SIGNED_EXT 0x8574
+#define GL_INTERPOLATE_EXT 0x8575
+#define GL_CONSTANT_EXT 0x8576
+#define GL_PRIMARY_COLOR_EXT 0x8577
+#define GL_PREVIOUS_EXT 0x8578
+#define GL_SOURCE0_RGB_EXT 0x8580
+#define GL_SOURCE1_RGB_EXT 0x8581
+#define GL_SOURCE2_RGB_EXT 0x8582
+#define GL_SOURCE0_ALPHA_EXT 0x8588
+#define GL_SOURCE1_ALPHA_EXT 0x8589
+#define GL_SOURCE2_ALPHA_EXT 0x858A
+#define GL_OPERAND0_RGB_EXT 0x8590
+#define GL_OPERAND1_RGB_EXT 0x8591
+#define GL_OPERAND2_RGB_EXT 0x8592
+#define GL_OPERAND0_ALPHA_EXT 0x8598
+#define GL_OPERAND1_ALPHA_EXT 0x8599
+#define GL_OPERAND2_ALPHA_EXT 0x859A
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_TRANSFORM_HINT_APPLE 0x85B1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_FOG_SCALE_SGIX 0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_GLOBAL_ALPHA_SUN 0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_RESTART_SUN 0x0001
+#define GL_REPLACE_MIDDLE_SUN 0x0002
+#define GL_REPLACE_OLDEST_SUN 0x0003
+#define GL_TRIANGLE_LIST_SUN 0x81D7
+#define GL_REPLACEMENT_CODE_SUN 0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN 0x85C4
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
+#define GL_R1UI_C3F_V3F_SUN 0x85C6
+#define GL_R1UI_N3F_V3F_SUN 0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+#define GL_R1UI_T2F_V3F_SUN 0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+#endif
+
+#ifndef GL_SUN_vertex
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_BLEND_DST_RGB_EXT 0x80C8
+#define GL_BLEND_SRC_RGB_EXT 0x80C9
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_RED_MIN_CLAMP_INGR 0x8560
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
+#define GL_RED_MAX_CLAMP_INGR 0x8564
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INTERLACE_READ_INGR 0x8568
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_INCR_WRAP_EXT 0x8507
+#define GL_DECR_WRAP_EXT 0x8508
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_422_EXT 0x80CC
+#define GL_422_REV_EXT 0x80CD
+#define GL_422_AVERAGE_EXT 0x80CE
+#define GL_422_REV_AVERAGE_EXT 0x80CF
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NORMAL_MAP_NV 0x8511
+#define GL_REFLECTION_MAP_NV 0x8512
+#endif
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_NORMAL_MAP_EXT 0x8511
+#define GL_REFLECTION_MAP_EXT 0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_WRAP_BORDER_SUN 0x81D4
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
+#define GL_VERTEX_WEIGHTING_EXT 0x8509
+#define GL_MODELVIEW0_EXT GL_MODELVIEW
+#define GL_MODELVIEW1_EXT 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_MAX_SHININESS_NV 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_REGISTER_COMBINERS_NV 0x8522
+#define GL_VARIABLE_A_NV 0x8523
+#define GL_VARIABLE_B_NV 0x8524
+#define GL_VARIABLE_C_NV 0x8525
+#define GL_VARIABLE_D_NV 0x8526
+#define GL_VARIABLE_E_NV 0x8527
+#define GL_VARIABLE_F_NV 0x8528
+#define GL_VARIABLE_G_NV 0x8529
+#define GL_CONSTANT_COLOR0_NV 0x852A
+#define GL_CONSTANT_COLOR1_NV 0x852B
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_SPARE0_NV 0x852E
+#define GL_SPARE1_NV 0x852F
+#define GL_DISCARD_NV 0x8530
+#define GL_E_TIMES_F_NV 0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV 0x8536
+#define GL_UNSIGNED_INVERT_NV 0x8537
+#define GL_EXPAND_NORMAL_NV 0x8538
+#define GL_EXPAND_NEGATE_NV 0x8539
+#define GL_HALF_BIAS_NORMAL_NV 0x853A
+#define GL_HALF_BIAS_NEGATE_NV 0x853B
+#define GL_SIGNED_IDENTITY_NV 0x853C
+#define GL_SIGNED_NEGATE_NV 0x853D
+#define GL_SCALE_BY_TWO_NV 0x853E
+#define GL_SCALE_BY_FOUR_NV 0x853F
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+#define GL_COMBINER_INPUT_NV 0x8542
+#define GL_COMBINER_MAPPING_NV 0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+#define GL_COMBINER_MUX_SUM_NV 0x8547
+#define GL_COMBINER_SCALE_NV 0x8548
+#define GL_COMBINER_BIAS_NV 0x8549
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
+#define GL_COLOR_SUM_CLAMP_NV 0x854F
+#define GL_COMBINER0_NV 0x8550
+#define GL_COMBINER1_NV 0x8551
+#define GL_COMBINER2_NV 0x8552
+#define GL_COMBINER3_NV 0x8553
+#define GL_COMBINER4_NV 0x8554
+#define GL_COMBINER5_NV 0x8555
+#define GL_COMBINER6_NV 0x8556
+#define GL_COMBINER7_NV 0x8557
+/* reuse GL_TEXTURE0_ARB */
+/* reuse GL_TEXTURE1_ARB */
+/* reuse GL_ZERO */
+/* reuse GL_NONE */
+/* reuse GL_FOG */
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_FOG_DISTANCE_MODE_NV 0x855A
+#define GL_EYE_RADIAL_NV 0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
+/* reuse GL_EYE_PLANE */
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_EMBOSS_LIGHT_NV 0x855D
+#define GL_EMBOSS_CONSTANT_NV 0x855E
+#define GL_EMBOSS_MAP_NV 0x855F
+#endif
+
+#ifndef GL_NV_blend_square
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_COMBINE4_NV 0x8503
+#define GL_SOURCE3_RGB_NV 0x8583
+#define GL_SOURCE3_ALPHA_NV 0x858B
+#define GL_OPERAND3_RGB_NV 0x8593
+#define GL_OPERAND3_ALPHA_NV 0x859B
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#endif
+
+#ifndef GL_MESA_window_pos
+#endif
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_CULL_VERTEX_IBM 103050
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_VERTEX_ARRAY_LIST_IBM 103070
+#define GL_NORMAL_ARRAY_LIST_IBM 103071
+#define GL_COLOR_ARRAY_LIST_IBM 103072
+#define GL_INDEX_ARRAY_LIST_IBM 103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_YCRCB_SGIX 0x8318
+#define GL_YCRCBA_SGIX 0x8319
+#endif
+
+#ifndef GL_SGI_depth_pass_instrument
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_MULTISAMPLE_3DFX 0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
+#define GL_SAMPLES_3DFX 0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+#define GL_SAMPLE_MASK_EXT 0x80A0
+#define GL_1PASS_EXT 0x80A1
+#define GL_2PASS_0_EXT 0x80A2
+#define GL_2PASS_1_EXT 0x80A3
+#define GL_4PASS_0_EXT 0x80A4
+#define GL_4PASS_1_EXT 0x80A5
+#define GL_4PASS_2_EXT 0x80A6
+#define GL_4PASS_3_EXT 0x80A7
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
+#define GL_SAMPLES_EXT 0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+#define GL_SAMPLE_PATTERN_EXT 0x80AC
+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_CONVOLUTION_HINT_SGIX 0x8316
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_PACK_RESAMPLE_SGIX 0x842C
+#define GL_UNPACK_RESAMPLE_SGIX 0x842D
+#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+#define GL_EYE_POINT_SGIS 0x81F4
+#define GL_OBJECT_POINT_SGIS 0x81F5
+#define GL_EYE_LINE_SGIS 0x81F6
+#define GL_OBJECT_LINE_SGIS 0x81F7
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
+#endif
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_DOT3_RGB_EXT 0x8740
+#define GL_DOT3_RGBA_EXT 0x8741
+#endif
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_MIRROR_CLAMP_ATI 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
+#endif
+
+#ifndef GL_NV_fence
+#define GL_ALL_COMPLETED_NV 0x84F2
+#define GL_FENCE_STATUS_NV 0x84F3
+#define GL_FENCE_CONDITION_NV 0x84F4
+#endif
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_MIRRORED_REPEAT_IBM 0x8370
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_EVAL_2D_NV 0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+#define GL_MAP_TESSELLATION_NV 0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_DEPTH_STENCIL_NV 0x84F9
+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_SHADER_CONSISTENT_NV 0x86DD
+#define GL_TEXTURE_SHADER_NV 0x86DE
+#define GL_SHADER_OPERATION_NV 0x86DF
+#define GL_CULL_MODES_NV 0x86E0
+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV
+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+#define GL_CONST_EYE_NV 0x86E5
+#define GL_PASS_THROUGH_NV 0x86E6
+#define GL_CULL_FRAGMENT_NV 0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+#define GL_DOT_PRODUCT_NV 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV 0x870E
+#define GL_LO_SCALE_NV 0x870F
+#define GL_DS_SCALE_NV 0x8710
+#define GL_DT_SCALE_NV 0x8711
+#define GL_MAGNITUDE_SCALE_NV 0x8712
+#define GL_VIBRANCE_SCALE_NV 0x8713
+#define GL_HI_BIAS_NV 0x8714
+#define GL_LO_BIAS_NV 0x8715
+#define GL_DS_BIAS_NV 0x8716
+#define GL_DT_BIAS_NV 0x8717
+#define GL_MAGNITUDE_BIAS_NV 0x8718
+#define GL_VIBRANCE_BIAS_NV 0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
+#define GL_TEXTURE_HI_SIZE_NV 0x871B
+#define GL_TEXTURE_LO_SIZE_NV 0x871C
+#define GL_TEXTURE_DS_SIZE_NV 0x871D
+#define GL_TEXTURE_DT_SIZE_NV 0x871E
+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_VERTEX_PROGRAM_NV 0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+#define GL_CURRENT_ATTRIB_NV 0x8626
+#define GL_PROGRAM_LENGTH_NV 0x8627
+#define GL_PROGRAM_STRING_NV 0x8628
+#define GL_MODELVIEW_PROJECTION_NV 0x8629
+#define GL_IDENTITY_NV 0x862A
+#define GL_INVERSE_NV 0x862B
+#define GL_TRANSPOSE_NV 0x862C
+#define GL_INVERSE_TRANSPOSE_NV 0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_TRACK_MATRICES_NV 0x862F
+#define GL_MATRIX0_NV 0x8630
+#define GL_MATRIX1_NV 0x8631
+#define GL_MATRIX2_NV 0x8632
+#define GL_MATRIX3_NV 0x8633
+#define GL_MATRIX4_NV 0x8634
+#define GL_MATRIX5_NV 0x8635
+#define GL_MATRIX6_NV 0x8636
+#define GL_MATRIX7_NV 0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+#define GL_CURRENT_MATRIX_NV 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+#define GL_PROGRAM_PARAMETER_NV 0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+#define GL_PROGRAM_TARGET_NV 0x8646
+#define GL_PROGRAM_RESIDENT_NV 0x8647
+#define GL_TRACK_MATRIX_NV 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SCALEBIAS_HINT_SGIX 0x8322
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_INTERLACE_OML 0x8980
+#define GL_INTERLACE_READ_OML 0x8981
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
+#endif
+
+#ifndef GL_OML_resample
+#define GL_PACK_RESAMPLE_OML 0x8984
+#define GL_UNPACK_RESAMPLE_OML 0x8985
+#define GL_RESAMPLE_REPLICATE_OML 0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
+#define GL_RESAMPLE_AVERAGE_OML 0x8988
+#define GL_RESAMPLE_DECIMATE_OML 0x8989
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+#define GL_BUMP_TEX_UNITS_ATI 0x8778
+#define GL_DUDV_ATI 0x8779
+#define GL_DU8DV8_ATI 0x877A
+#define GL_BUMP_ENVMAP_ATI 0x877B
+#define GL_BUMP_TARGET_ATI 0x877C
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_FRAGMENT_SHADER_ATI 0x8920
+#define GL_REG_0_ATI 0x8921
+#define GL_REG_1_ATI 0x8922
+#define GL_REG_2_ATI 0x8923
+#define GL_REG_3_ATI 0x8924
+#define GL_REG_4_ATI 0x8925
+#define GL_REG_5_ATI 0x8926
+#define GL_REG_6_ATI 0x8927
+#define GL_REG_7_ATI 0x8928
+#define GL_REG_8_ATI 0x8929
+#define GL_REG_9_ATI 0x892A
+#define GL_REG_10_ATI 0x892B
+#define GL_REG_11_ATI 0x892C
+#define GL_REG_12_ATI 0x892D
+#define GL_REG_13_ATI 0x892E
+#define GL_REG_14_ATI 0x892F
+#define GL_REG_15_ATI 0x8930
+#define GL_REG_16_ATI 0x8931
+#define GL_REG_17_ATI 0x8932
+#define GL_REG_18_ATI 0x8933
+#define GL_REG_19_ATI 0x8934
+#define GL_REG_20_ATI 0x8935
+#define GL_REG_21_ATI 0x8936
+#define GL_REG_22_ATI 0x8937
+#define GL_REG_23_ATI 0x8938
+#define GL_REG_24_ATI 0x8939
+#define GL_REG_25_ATI 0x893A
+#define GL_REG_26_ATI 0x893B
+#define GL_REG_27_ATI 0x893C
+#define GL_REG_28_ATI 0x893D
+#define GL_REG_29_ATI 0x893E
+#define GL_REG_30_ATI 0x893F
+#define GL_REG_31_ATI 0x8940
+#define GL_CON_0_ATI 0x8941
+#define GL_CON_1_ATI 0x8942
+#define GL_CON_2_ATI 0x8943
+#define GL_CON_3_ATI 0x8944
+#define GL_CON_4_ATI 0x8945
+#define GL_CON_5_ATI 0x8946
+#define GL_CON_6_ATI 0x8947
+#define GL_CON_7_ATI 0x8948
+#define GL_CON_8_ATI 0x8949
+#define GL_CON_9_ATI 0x894A
+#define GL_CON_10_ATI 0x894B
+#define GL_CON_11_ATI 0x894C
+#define GL_CON_12_ATI 0x894D
+#define GL_CON_13_ATI 0x894E
+#define GL_CON_14_ATI 0x894F
+#define GL_CON_15_ATI 0x8950
+#define GL_CON_16_ATI 0x8951
+#define GL_CON_17_ATI 0x8952
+#define GL_CON_18_ATI 0x8953
+#define GL_CON_19_ATI 0x8954
+#define GL_CON_20_ATI 0x8955
+#define GL_CON_21_ATI 0x8956
+#define GL_CON_22_ATI 0x8957
+#define GL_CON_23_ATI 0x8958
+#define GL_CON_24_ATI 0x8959
+#define GL_CON_25_ATI 0x895A
+#define GL_CON_26_ATI 0x895B
+#define GL_CON_27_ATI 0x895C
+#define GL_CON_28_ATI 0x895D
+#define GL_CON_29_ATI 0x895E
+#define GL_CON_30_ATI 0x895F
+#define GL_CON_31_ATI 0x8960
+#define GL_MOV_ATI 0x8961
+#define GL_ADD_ATI 0x8963
+#define GL_MUL_ATI 0x8964
+#define GL_SUB_ATI 0x8965
+#define GL_DOT3_ATI 0x8966
+#define GL_DOT4_ATI 0x8967
+#define GL_MAD_ATI 0x8968
+#define GL_LERP_ATI 0x8969
+#define GL_CND_ATI 0x896A
+#define GL_CND0_ATI 0x896B
+#define GL_DOT2_ADD_ATI 0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+#define GL_NUM_PASSES_ATI 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+#define GL_SWIZZLE_STR_ATI 0x8976
+#define GL_SWIZZLE_STQ_ATI 0x8977
+#define GL_SWIZZLE_STR_DR_ATI 0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
+#define GL_SWIZZLE_STRQ_ATI 0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+#define GL_RED_BIT_ATI 0x00000001
+#define GL_GREEN_BIT_ATI 0x00000002
+#define GL_BLUE_BIT_ATI 0x00000004
+#define GL_2X_BIT_ATI 0x00000001
+#define GL_4X_BIT_ATI 0x00000002
+#define GL_8X_BIT_ATI 0x00000004
+#define GL_HALF_BIT_ATI 0x00000008
+#define GL_QUARTER_BIT_ATI 0x00000010
+#define GL_EIGHTH_BIT_ATI 0x00000020
+#define GL_SATURATE_BIT_ATI 0x00000040
+#define GL_COMP_BIT_ATI 0x00000002
+#define GL_NEGATE_BIT_ATI 0x00000004
+#define GL_BIAS_BIT_ATI 0x00000008
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_PN_TRIANGLES_ATI 0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_STATIC_ATI 0x8760
+#define GL_DYNAMIC_ATI 0x8761
+#define GL_PRESERVE_ATI 0x8762
+#define GL_DISCARD_ATI 0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_VERTEX_SHADER_EXT 0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
+#define GL_OP_INDEX_EXT 0x8782
+#define GL_OP_NEGATE_EXT 0x8783
+#define GL_OP_DOT3_EXT 0x8784
+#define GL_OP_DOT4_EXT 0x8785
+#define GL_OP_MUL_EXT 0x8786
+#define GL_OP_ADD_EXT 0x8787
+#define GL_OP_MADD_EXT 0x8788
+#define GL_OP_FRAC_EXT 0x8789
+#define GL_OP_MAX_EXT 0x878A
+#define GL_OP_MIN_EXT 0x878B
+#define GL_OP_SET_GE_EXT 0x878C
+#define GL_OP_SET_LT_EXT 0x878D
+#define GL_OP_CLAMP_EXT 0x878E
+#define GL_OP_FLOOR_EXT 0x878F
+#define GL_OP_ROUND_EXT 0x8790
+#define GL_OP_EXP_BASE_2_EXT 0x8791
+#define GL_OP_LOG_BASE_2_EXT 0x8792
+#define GL_OP_POWER_EXT 0x8793
+#define GL_OP_RECIP_EXT 0x8794
+#define GL_OP_RECIP_SQRT_EXT 0x8795
+#define GL_OP_SUB_EXT 0x8796
+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+#define GL_OP_MOV_EXT 0x8799
+#define GL_OUTPUT_VERTEX_EXT 0x879A
+#define GL_OUTPUT_COLOR0_EXT 0x879B
+#define GL_OUTPUT_COLOR1_EXT 0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+#define GL_OUTPUT_FOG_EXT 0x87BD
+#define GL_SCALAR_EXT 0x87BE
+#define GL_VECTOR_EXT 0x87BF
+#define GL_MATRIX_EXT 0x87C0
+#define GL_VARIANT_EXT 0x87C1
+#define GL_INVARIANT_EXT 0x87C2
+#define GL_LOCAL_CONSTANT_EXT 0x87C3
+#define GL_LOCAL_EXT 0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+#define GL_X_EXT 0x87D5
+#define GL_Y_EXT 0x87D6
+#define GL_Z_EXT 0x87D7
+#define GL_W_EXT 0x87D8
+#define GL_NEGATIVE_X_EXT 0x87D9
+#define GL_NEGATIVE_Y_EXT 0x87DA
+#define GL_NEGATIVE_Z_EXT 0x87DB
+#define GL_NEGATIVE_W_EXT 0x87DC
+#define GL_ZERO_EXT 0x87DD
+#define GL_ONE_EXT 0x87DE
+#define GL_NEGATIVE_ONE_EXT 0x87DF
+#define GL_NORMALIZED_RANGE_EXT 0x87E0
+#define GL_FULL_RANGE_EXT 0x87E1
+#define GL_CURRENT_VERTEX_EXT 0x87E2
+#define GL_MVP_MATRIX_EXT 0x87E3
+#define GL_VARIANT_VALUE_EXT 0x87E4
+#define GL_VARIANT_DATATYPE_EXT 0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+#define GL_VARIANT_ARRAY_EXT 0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+#define GL_INVARIANT_VALUE_EXT 0x87EA
+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
+#define GL_VERTEX_STREAM0_ATI 0x876C
+#define GL_VERTEX_STREAM1_ATI 0x876D
+#define GL_VERTEX_STREAM2_ATI 0x876E
+#define GL_VERTEX_STREAM3_ATI 0x876F
+#define GL_VERTEX_STREAM4_ATI 0x8770
+#define GL_VERTEX_STREAM5_ATI 0x8771
+#define GL_VERTEX_STREAM6_ATI 0x8772
+#define GL_VERTEX_STREAM7_ATI 0x8773
+#define GL_VERTEX_SOURCE_ATI 0x8774
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ELEMENT_ARRAY_ATI 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_QUAD_MESH_SUN 0x8614
+#define GL_TRIANGLE_MESH_SUN 0x8615
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SLICE_ACCUM_SUN 0x85CC
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_DEPTH_CLAMP_NV 0x864F
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+#define GL_PIXEL_COUNT_NV 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_POINT_SPRITE_NV 0x8861
+#define GL_COORD_REPLACE_NV 0x8862
+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV 0x885E
+#define GL_SIGNED_HILO8_NV 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#endif
+
+#ifndef GL_EXT_shadow_funcs
+#endif
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+#endif
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
+#endif
+
+#ifndef GL_APPLE_client_storage
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+#endif
+
+#ifndef GL_APPLE_element_array
+#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+#endif
+
+#ifndef GL_APPLE_fence
+#define GL_DRAW_PIXELS_APPLE 0x8A0A
+#define GL_FENCE_APPLE 0x8A0B
+#endif
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+#endif
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CLIENT_APPLE 0x85B4
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+#endif
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_YCBCR_422_APPLE 0x85B9
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#endif
+
+#ifndef GL_S3_s3tc
+#define GL_RGB_S3TC 0x83A0
+#define GL_RGB4_S3TC 0x83A1
+#define GL_RGBA_S3TC 0x83A2
+#define GL_RGBA4_S3TC 0x83A3
+#endif
+
+#ifndef GL_ATI_draw_buffers
+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
+#define GL_DRAW_BUFFER0_ATI 0x8825
+#define GL_DRAW_BUFFER1_ATI 0x8826
+#define GL_DRAW_BUFFER2_ATI 0x8827
+#define GL_DRAW_BUFFER3_ATI 0x8828
+#define GL_DRAW_BUFFER4_ATI 0x8829
+#define GL_DRAW_BUFFER5_ATI 0x882A
+#define GL_DRAW_BUFFER6_ATI 0x882B
+#define GL_DRAW_BUFFER7_ATI 0x882C
+#define GL_DRAW_BUFFER8_ATI 0x882D
+#define GL_DRAW_BUFFER9_ATI 0x882E
+#define GL_DRAW_BUFFER10_ATI 0x882F
+#define GL_DRAW_BUFFER11_ATI 0x8830
+#define GL_DRAW_BUFFER12_ATI 0x8831
+#define GL_DRAW_BUFFER13_ATI 0x8832
+#define GL_DRAW_BUFFER14_ATI 0x8833
+#define GL_DRAW_BUFFER15_ATI 0x8834
+#endif
+
+#ifndef GL_ATI_pixel_format_float
+#define GL_TYPE_RGBA_FLOAT_ATI 0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+#endif
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_MODULATE_ADD_ATI 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
+#define GL_MODULATE_SUBTRACT_ATI 0x8746
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+#endif
+
+#ifndef GL_NV_fragment_program
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+#define GL_FRAGMENT_PROGRAM_NV 0x8870
+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
+#endif
+
+#ifndef GL_NV_half_float
+#define GL_HALF_FLOAT_NV 0x140B
+#endif
+
+#ifndef GL_NV_pixel_data_range
+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+#endif
+
+#ifndef GL_NV_primitive_restart
+#define GL_PRIMITIVE_RESTART_NV 0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+#endif
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
+#endif
+
+#ifndef GL_NV_vertex_program2
+#endif
+
+#ifndef GL_ATI_map_object_buffer
+#endif
+
+#ifndef GL_ATI_separate_stencil
+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+#endif
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#endif
+
+#ifndef GL_OES_read_format
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+#endif
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+#define GL_DEPTH_BOUNDS_EXT 0x8891
+#endif
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_MIRROR_CLAMP_EXT 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
+#endif
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_BLEND_EQUATION_RGB_EXT 0x8009
+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+#endif
+
+#ifndef GL_MESA_pack_invert
+#define GL_PACK_INVERT_MESA 0x8758
+#endif
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+#define GL_YCBCR_MESA 0x8757
+#endif
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
+#endif
+
+#ifndef GL_NV_fragment_program_option
+#endif
+
+#ifndef GL_NV_fragment_program2
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
+#endif
+
+#ifndef GL_NV_vertex_program2_option
+/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */
+#endif
+
+#ifndef GL_NV_vertex_program3
+/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+#endif
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
+#define GL_FRAMEBUFFER_EXT 0x8D40
+#define GL_RENDERBUFFER_EXT 0x8D41
+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+#define GL_STENCIL_INDEX1_EXT 0x8D46
+#define GL_STENCIL_INDEX4_EXT 0x8D47
+#define GL_STENCIL_INDEX8_EXT 0x8D48
+#define GL_STENCIL_INDEX16_EXT 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+#endif
+
+#ifndef GL_GREMEDY_string_marker
+#endif
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_DEPTH_STENCIL_EXT 0x84F9
+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
+#endif
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
+#endif
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#endif
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+#endif
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#endif
+
+#ifndef GL_MESAX_texture_stack
+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+#endif
+
+#ifndef GL_EXT_timer_query
+#define GL_TIME_ELAPSED_EXT 0x88BF
+#endif
+
+#ifndef GL_EXT_gpu_program_parameters
+#endif
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+#endif
+
+#ifndef GL_NV_gpu_program4
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+#endif
+
+#ifndef GL_NV_geometry_program4
+#define GL_LINES_ADJACENCY_EXT 0x000A
+#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
+#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
+#endif
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */
+/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */
+/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */
+/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+/* reuse GL_LINES_ADJACENCY_EXT */
+/* reuse GL_LINE_STRIP_ADJACENCY_EXT */
+/* reuse GL_TRIANGLES_ADJACENCY_EXT */
+/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */
+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+/* reuse GL_PROGRAM_POINT_SIZE_EXT */
+#endif
+
+#ifndef GL_NV_vertex_program4
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
+#endif
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+#endif
+
+#ifndef GL_EXT_draw_instanced
+#endif
+
+#ifndef GL_EXT_packed_float
+#define GL_R11F_G11F_B10F_EXT 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
+#endif
+
+#ifndef GL_EXT_texture_array
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+#endif
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+#endif
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
+#endif
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
+#endif
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_RGB9_E5_EXT 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
+#endif
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+#endif
+
+#ifndef GL_NV_fragment_program4
+#endif
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+#endif
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
+#endif
+
+#ifndef GL_NV_geometry_shader4
+#endif
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+#endif
+
+#ifndef GL_EXT_draw_buffers2
+#endif
+
+#ifndef GL_NV_transform_feedback
+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
+#define GL_TEXTURE_COORD_NV 0x8C79
+#define GL_CLIP_DISTANCE_NV 0x8C7A
+#define GL_VERTEX_ID_NV 0x8C7B
+#define GL_PRIMITIVE_ID_NV 0x8C7C
+#define GL_GENERIC_ATTRIB_NV 0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+#define GL_ACTIVE_VARYINGS_NV 0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+#define GL_RASTERIZER_DISCARD_NV 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+#define GL_LAYER_NV 0x8DAA
+#define GL_NEXT_BUFFER_NV -2
+#define GL_SKIP_COMPONENTS4_NV -3
+#define GL_SKIP_COMPONENTS3_NV -4
+#define GL_SKIP_COMPONENTS2_NV -5
+#define GL_SKIP_COMPONENTS1_NV -6
+#endif
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+#endif
+
+#ifndef GL_EXT_texture_integer
+#define GL_RGBA32UI_EXT 0x8D70
+#define GL_RGB32UI_EXT 0x8D71
+#define GL_ALPHA32UI_EXT 0x8D72
+#define GL_INTENSITY32UI_EXT 0x8D73
+#define GL_LUMINANCE32UI_EXT 0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+#define GL_RGBA16UI_EXT 0x8D76
+#define GL_RGB16UI_EXT 0x8D77
+#define GL_ALPHA16UI_EXT 0x8D78
+#define GL_INTENSITY16UI_EXT 0x8D79
+#define GL_LUMINANCE16UI_EXT 0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+#define GL_RGBA8UI_EXT 0x8D7C
+#define GL_RGB8UI_EXT 0x8D7D
+#define GL_ALPHA8UI_EXT 0x8D7E
+#define GL_INTENSITY8UI_EXT 0x8D7F
+#define GL_LUMINANCE8UI_EXT 0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+#define GL_RGBA32I_EXT 0x8D82
+#define GL_RGB32I_EXT 0x8D83
+#define GL_ALPHA32I_EXT 0x8D84
+#define GL_INTENSITY32I_EXT 0x8D85
+#define GL_LUMINANCE32I_EXT 0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+#define GL_RGBA16I_EXT 0x8D88
+#define GL_RGB16I_EXT 0x8D89
+#define GL_ALPHA16I_EXT 0x8D8A
+#define GL_INTENSITY16I_EXT 0x8D8B
+#define GL_LUMINANCE16I_EXT 0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+#define GL_RGBA8I_EXT 0x8D8E
+#define GL_RGB8I_EXT 0x8D8F
+#define GL_ALPHA8I_EXT 0x8D90
+#define GL_INTENSITY8I_EXT 0x8D91
+#define GL_LUMINANCE8I_EXT 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+#define GL_RED_INTEGER_EXT 0x8D94
+#define GL_GREEN_INTEGER_EXT 0x8D95
+#define GL_BLUE_INTEGER_EXT 0x8D96
+#define GL_ALPHA_INTEGER_EXT 0x8D97
+#define GL_RGB_INTEGER_EXT 0x8D98
+#define GL_RGBA_INTEGER_EXT 0x8D99
+#define GL_BGR_INTEGER_EXT 0x8D9A
+#define GL_BGRA_INTEGER_EXT 0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+#endif
+
+#ifndef GL_GREMEDY_frame_terminator
+#endif
+
+#ifndef GL_NV_conditional_render
+#define GL_QUERY_WAIT_NV 0x8E13
+#define GL_QUERY_NO_WAIT_NV 0x8E14
+#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+#endif
+
+#ifndef GL_NV_present_video
+#define GL_FRAME_NV 0x8E26
+#define GL_FIELDS_NV 0x8E27
+#define GL_CURRENT_TIME_NV 0x8E28
+#define GL_NUM_FILL_STREAMS_NV 0x8E29
+#define GL_PRESENT_TIME_NV 0x8E2A
+#define GL_PRESENT_DURATION_NV 0x8E2B
+#endif
+
+#ifndef GL_EXT_transform_feedback
+#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+#define GL_RASTERIZER_DISCARD_EXT 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+#endif
+
+#ifndef GL_EXT_direct_state_access
+#define GL_PROGRAM_MATRIX_EXT 0x8E2D
+#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+#endif
+
+#ifndef GL_EXT_vertex_array_bgra
+/* reuse GL_BGRA */
+#endif
+
+#ifndef GL_EXT_texture_swizzle
+#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
+#endif
+
+#ifndef GL_NV_explicit_multisample
+#define GL_SAMPLE_POSITION_NV 0x8E50
+#define GL_SAMPLE_MASK_NV 0x8E51
+#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
+#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+#endif
+
+#ifndef GL_NV_transform_feedback2
+#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+#endif
+
+#ifndef GL_ATI_meminfo
+#define GL_VBO_FREE_MEMORY_ATI 0x87FB
+#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
+#endif
+
+#ifndef GL_AMD_performance_monitor
+#define GL_COUNTER_TYPE_AMD 0x8BC0
+#define GL_COUNTER_RANGE_AMD 0x8BC1
+#define GL_UNSIGNED_INT64_AMD 0x8BC2
+#define GL_PERCENTAGE_AMD 0x8BC3
+#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+#define GL_PERFMON_RESULT_AMD 0x8BC6
+#endif
+
+#ifndef GL_AMD_texture_texture4
+#endif
+
+#ifndef GL_AMD_vertex_shader_tesselator
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+#endif
+
+#ifndef GL_EXT_provoking_vertex
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_PROVOKING_VERTEX_EXT 0x8E4F
+#endif
+
+#ifndef GL_EXT_texture_snorm
+#define GL_ALPHA_SNORM 0x9010
+#define GL_LUMINANCE_SNORM 0x9011
+#define GL_LUMINANCE_ALPHA_SNORM 0x9012
+#define GL_INTENSITY_SNORM 0x9013
+#define GL_ALPHA8_SNORM 0x9014
+#define GL_LUMINANCE8_SNORM 0x9015
+#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+#define GL_INTENSITY8_SNORM 0x9017
+#define GL_ALPHA16_SNORM 0x9018
+#define GL_LUMINANCE16_SNORM 0x9019
+#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+#define GL_INTENSITY16_SNORM 0x901B
+/* reuse GL_RED_SNORM */
+/* reuse GL_RG_SNORM */
+/* reuse GL_RGB_SNORM */
+/* reuse GL_RGBA_SNORM */
+/* reuse GL_R8_SNORM */
+/* reuse GL_RG8_SNORM */
+/* reuse GL_RGB8_SNORM */
+/* reuse GL_RGBA8_SNORM */
+/* reuse GL_R16_SNORM */
+/* reuse GL_RG16_SNORM */
+/* reuse GL_RGB16_SNORM */
+/* reuse GL_RGBA16_SNORM */
+/* reuse GL_SIGNED_NORMALIZED */
+#endif
+
+#ifndef GL_AMD_draw_buffers_blend
+#endif
+
+#ifndef GL_APPLE_texture_range
+#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+#define GL_STORAGE_PRIVATE_APPLE 0x85BD
+/* reuse GL_STORAGE_CACHED_APPLE */
+/* reuse GL_STORAGE_SHARED_APPLE */
+#endif
+
+#ifndef GL_APPLE_float_pixels
+#define GL_HALF_APPLE 0x140B
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+#endif
+
+#ifndef GL_APPLE_vertex_program_evaluators
+#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+#endif
+
+#ifndef GL_APPLE_aux_depth_stencil
+#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
+#endif
+
+#ifndef GL_APPLE_object_purgeable
+#define GL_BUFFER_OBJECT_APPLE 0x85B3
+#define GL_RELEASED_APPLE 0x8A19
+#define GL_VOLATILE_APPLE 0x8A1A
+#define GL_RETAINED_APPLE 0x8A1B
+#define GL_UNDEFINED_APPLE 0x8A1C
+#define GL_PURGEABLE_APPLE 0x8A1D
+#endif
+
+#ifndef GL_APPLE_row_bytes
+#define GL_PACK_ROW_BYTES_APPLE 0x8A15
+#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
+#endif
+
+#ifndef GL_APPLE_rgb_422
+#define GL_RGB_422_APPLE 0x8A1F
+/* reuse GL_UNSIGNED_SHORT_8_8_APPLE */
+/* reuse GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+#endif
+
+#ifndef GL_NV_video_capture
+#define GL_VIDEO_BUFFER_NV 0x9020
+#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
+#define GL_FIELD_UPPER_NV 0x9022
+#define GL_FIELD_LOWER_NV 0x9023
+#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
+#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+#define GL_PARTIAL_SUCCESS_NV 0x902E
+#define GL_SUCCESS_NV 0x902F
+#define GL_FAILURE_NV 0x9030
+#define GL_YCBYCR8_422_NV 0x9031
+#define GL_YCBAYCR8A_4224_NV 0x9032
+#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+#endif
+
+#ifndef GL_NV_copy_image
+#endif
+
+#ifndef GL_EXT_separate_shader_objects
+#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
+#endif
+
+#ifndef GL_NV_parameter_buffer_object2
+#endif
+
+#ifndef GL_NV_shader_buffer_load
+#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+#define GL_GPU_ADDRESS_NV 0x8F34
+#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+#endif
+
+#ifndef GL_NV_vertex_buffer_unified_memory
+#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+#endif
+
+#ifndef GL_NV_texture_barrier
+#endif
+
+#ifndef GL_AMD_shader_stencil_export
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB */
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#endif
+
+#ifndef GL_EXT_shader_image_load_store
+#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+#define GL_IMAGE_1D_EXT 0x904C
+#define GL_IMAGE_2D_EXT 0x904D
+#define GL_IMAGE_3D_EXT 0x904E
+#define GL_IMAGE_2D_RECT_EXT 0x904F
+#define GL_IMAGE_CUBE_EXT 0x9050
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_IMAGE_1D_ARRAY_EXT 0x9052
+#define GL_IMAGE_2D_ARRAY_EXT 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+#define GL_INT_IMAGE_1D_EXT 0x9057
+#define GL_INT_IMAGE_2D_EXT 0x9058
+#define GL_INT_IMAGE_3D_EXT 0x9059
+#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
+#define GL_INT_IMAGE_CUBE_EXT 0x905B
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+#endif
+
+#ifndef GL_EXT_vertex_attrib_64bit
+/* reuse GL_DOUBLE */
+#define GL_DOUBLE_VEC2_EXT 0x8FFC
+#define GL_DOUBLE_VEC3_EXT 0x8FFD
+#define GL_DOUBLE_VEC4_EXT 0x8FFE
+#define GL_DOUBLE_MAT2_EXT 0x8F46
+#define GL_DOUBLE_MAT3_EXT 0x8F47
+#define GL_DOUBLE_MAT4_EXT 0x8F48
+#define GL_DOUBLE_MAT2x3_EXT 0x8F49
+#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
+#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
+#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
+#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
+#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
+#endif
+
+#ifndef GL_NV_gpu_program5
+#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
+#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45
+#endif
+
+#ifndef GL_NV_gpu_shader5
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+/* reuse GL_PATCHES */
+#endif
+
+#ifndef GL_NV_shader_buffer_store
+#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
+/* reuse GL_READ_WRITE */
+/* reuse GL_WRITE_ONLY */
+#endif
+
+#ifndef GL_NV_tessellation_program5
+#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
+#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
+#endif
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+/* reuse GL_INT64_NV */
+/* reuse GL_UNSIGNED_INT64_NV */
+#endif
+
+#ifndef GL_NV_multisample_coverage
+#define GL_COVERAGE_SAMPLES_NV 0x80A9
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#endif
+
+#ifndef GL_AMD_name_gen_delete
+#define GL_DATA_BUFFER_AMD 0x9151
+#define GL_PERFORMANCE_MONITOR_AMD 0x9152
+#define GL_QUERY_OBJECT_AMD 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+#define GL_SAMPLER_OBJECT_AMD 0x9155
+#endif
+
+#ifndef GL_AMD_debug_output
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+#endif
+
+#ifndef GL_NV_vdpau_interop
+#define GL_SURFACE_STATE_NV 0x86EB
+#define GL_SURFACE_REGISTERED_NV 0x86FD
+#define GL_SURFACE_MAPPED_NV 0x8700
+#define GL_WRITE_DISCARD_NV 0x88BE
+#endif
+
+#ifndef GL_AMD_transform_feedback3_lines_triangles
+#endif
+
+
+/*************************************************************/
+
+#include <stddef.h>
+#ifndef GL_VERSION_2_0
+/* GL type for program/shader text */
+typedef char GLchar;
+#endif
+
+#ifndef GL_VERSION_1_5
+/* GL types for handling large vertex buffer objects */
+typedef ptrdiff_t GLintptr;
+typedef ptrdiff_t GLsizeiptr;
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+/* GL types for handling large vertex buffer objects */
+typedef ptrdiff_t GLintptrARB;
+typedef ptrdiff_t GLsizeiptrARB;
+#endif
+
+#ifndef GL_ARB_shader_objects
+/* GL types for program/shader text and shader object handles */
+typedef char GLcharARB;
+typedef unsigned int GLhandleARB;
+#endif
+
+/* GL type for "half" precision (s10e5) float data in host memory */
+#ifndef GL_ARB_half_float_pixel
+typedef unsigned short GLhalfARB;
+#endif
+
+#ifndef GL_NV_half_float
+typedef unsigned short GLhalfNV;
+#endif
+
+#ifndef GLEXT_64_TYPES_DEFINED
+/* This code block is duplicated in glxext.h, so must be protected */
+#define GLEXT_64_TYPES_DEFINED
+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+/* (as used in the GL_EXT_timer_query extension). */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+#elif defined(__sun__) || defined(__digital__)
+#include <inttypes.h>
+#if defined(__STDC__)
+#if defined(__arch64__) || defined(_LP64)
+typedef long int int64_t;
+typedef unsigned long int uint64_t;
+#else
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#endif /* __arch64__ */
+#endif /* __STDC__ */
+#elif defined( __VMS ) || defined(__sgi)
+#include <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#elif defined(__UNIXOS2__) || defined(__SOL64__)
+typedef long int int32_t;
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#elif defined(_WIN32) && defined(__GNUC__)
+#include <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+/* Fallback if nothing above works */
+#include <inttypes.h>
+#endif
+#endif
+
+#ifndef GL_EXT_timer_query
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+
+#ifndef GL_ARB_sync
+typedef int64_t GLint64;
+typedef uint64_t GLuint64;
+typedef struct __GLsync *GLsync;
+#endif
+
+#ifndef GL_ARB_cl_event
+/* These incomplete types let us declare types compatible with OpenCL's cl_context and cl_event */
+struct _cl_context;
+struct _cl_event;
+#endif
+
+#ifndef GL_ARB_debug_output
+typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam);
+#endif
+
+#ifndef GL_AMD_debug_output
+typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam);
+#endif
+
+#ifndef GL_NV_vdpau_interop
+typedef GLintptr GLvdpauSurfaceNV;
+#endif
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void APIENTRY glBlendEquation (GLenum mode);
+GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_VERSION_1_2_DEPRECATED
+#define GL_VERSION_1_2_DEPRECATED 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogram (GLenum target);
+GLAPI void APIENTRY glResetMinmax (GLenum target);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
+#endif
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTexture (GLenum texture);
+GLAPI void APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
+#endif
+
+#ifndef GL_VERSION_1_3_DEPRECATED
+#define GL_VERSION_1_3_DEPRECATED 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
+#endif
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_VERSION_1_4_DEPRECATED
+#define GL_VERSION_1_4_DEPRECATED 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogCoordf (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoordd (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
+GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQuery (GLenum target);
+GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
+GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid* *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
+#endif
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
+GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
+GLAPI void APIENTRY glCompileShader (GLuint shader);
+GLAPI GLuint APIENTRY glCreateProgram (void);
+GLAPI GLuint APIENTRY glCreateShader (GLenum type);
+GLAPI void APIENTRY glDeleteProgram (GLuint program);
+GLAPI void APIENTRY glDeleteShader (GLuint shader);
+GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
+GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
+GLAPI void APIENTRY glLinkProgram (GLuint program);
+GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+GLAPI void APIENTRY glUseProgram (GLuint program);
+GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glValidateProgram (GLuint program);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+#endif
+
+#ifndef GL_VERSION_3_0
+#define GL_VERSION_3_0 1
+/* OpenGL 3.0 also reuses entry points from these extensions: */
+/* ARB_framebuffer_object */
+/* ARB_map_buffer_range */
+/* ARB_vertex_array_object */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
+GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
+GLAPI void APIENTRY glEndTransformFeedback (void);
+GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
+GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
+GLAPI void APIENTRY glEndConditionalRender (void);
+GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
+GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
+GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+GLAPI const GLubyte * APIENTRY glGetStringi (GLenum name, GLuint index);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
+#endif
+
+#ifndef GL_VERSION_3_1
+#define GL_VERSION_3_1 1
+/* OpenGL 3.1 also reuses entry points from these extensions: */
+/* ARB_copy_buffer */
+/* ARB_uniform_buffer_object */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
+#endif
+
+#ifndef GL_VERSION_3_2
+#define GL_VERSION_3_2 1
+/* OpenGL 3.2 also reuses entry points from these extensions: */
+/* ARB_draw_elements_base_vertex */
+/* ARB_provoking_vertex */
+/* ARB_sync */
+/* ARB_texture_multisample */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
+GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+#endif
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+/* OpenGL 3.3 also reuses entry points from these extensions: */
+/* ARB_blend_func_extended */
+/* ARB_sampler_objects */
+/* ARB_explicit_attrib_location, but it has none */
+/* ARB_occlusion_query2 (no entry points) */
+/* ARB_shader_bit_encoding (no entry points) */
+/* ARB_texture_rgb10_a2ui (no entry points) */
+/* ARB_texture_swizzle (no entry points) */
+/* ARB_timer_query */
+/* ARB_vertex_type_2_10_10_10_rev */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
+#endif
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+/* OpenGL 4.0 also reuses entry points from these extensions: */
+/* ARB_texture_query_lod (no entry points) */
+/* ARB_draw_indirect */
+/* ARB_gpu_shader5 (no entry points) */
+/* ARB_gpu_shader_fp64 */
+/* ARB_shader_subroutine */
+/* ARB_tessellation_shader */
+/* ARB_texture_buffer_object_rgb32 (no entry points) */
+/* ARB_texture_cube_map_array (no entry points) */
+/* ARB_texture_gather (no entry points) */
+/* ARB_transform_feedback2 */
+/* ARB_transform_feedback3 */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMinSampleShading (GLclampf value);
+GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#endif
+
+#ifndef GL_VERSION_4_1
+#define GL_VERSION_4_1 1
+/* OpenGL 4.1 also reuses entry points from these extensions: */
+/* ARB_ES2_compatibility */
+/* ARB_get_program_binary */
+/* ARB_separate_shader_objects */
+/* ARB_shader_precision (no entry points) */
+/* ARB_vertex_attrib_64bit */
+/* ARB_viewport_array */
+#endif
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+#endif
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
+#endif
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf value, GLboolean invert);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+#endif
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+#endif
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+#endif
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img);
+#endif
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
+GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
+GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
+GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
+GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
+GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
+GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
+GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
+GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexBlendARB (GLint count);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
+typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
+typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
+typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
+typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
+typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
+typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
+#endif
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
+GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
+GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
+GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
+typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+#endif
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+#endif
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+#endif
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+#endif
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+#endif
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+#endif
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+#endif
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
+GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
+#endif
+
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
+GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
+GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid* *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
+#endif
+
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
+GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQueryARB (GLenum target);
+GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
+GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
+GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
+GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
+GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
+GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
+GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
+GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
+GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
+GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
+#endif
+
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+#endif
+
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+#endif
+
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100 1
+#endif
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+#endif
+
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+#endif
+
+#ifndef GL_ARB_fragment_program_shadow
+#define GL_ARB_fragment_program_shadow 1
+#endif
+
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
+#endif
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+#endif
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_ARB_color_buffer_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+#endif
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel 1
+#endif
+
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+#endif
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#endif
+
+#ifndef GL_ARB_depth_buffer_float
+#define GL_ARB_depth_buffer_float 1
+#endif
+
+#ifndef GL_ARB_draw_instanced
+#define GL_ARB_draw_instanced 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_ARB_framebuffer_object
+#define GL_ARB_framebuffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmap (GLenum target);
+GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+#endif
+
+#ifndef GL_ARB_framebuffer_sRGB
+#define GL_ARB_framebuffer_sRGB 1
+#endif
+
+#ifndef GL_ARB_geometry_shader4
+#define GL_ARB_geometry_shader4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+
+#ifndef GL_ARB_half_float_vertex
+#define GL_ARB_half_float_vertex 1
+#endif
+
+#ifndef GL_ARB_instanced_arrays
+#define GL_ARB_instanced_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
+#endif
+
+#ifndef GL_ARB_map_buffer_range
+#define GL_ARB_map_buffer_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+#endif
+
+#ifndef GL_ARB_texture_buffer_object
+#define GL_ARB_texture_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+#endif
+
+#ifndef GL_ARB_texture_compression_rgtc
+#define GL_ARB_texture_compression_rgtc 1
+#endif
+
+#ifndef GL_ARB_texture_rg
+#define GL_ARB_texture_rg 1
+#endif
+
+#ifndef GL_ARB_vertex_array_object
+#define GL_ARB_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindVertexArray (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
+#endif
+
+#ifndef GL_ARB_uniform_buffer_object
+#define GL_ARB_uniform_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
+GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
+GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+#endif
+
+#ifndef GL_ARB_compatibility
+#define GL_ARB_compatibility 1
+#endif
+
+#ifndef GL_ARB_copy_buffer
+#define GL_ARB_copy_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+#endif
+
+#ifndef GL_ARB_shader_texture_lod
+#define GL_ARB_shader_texture_lod 1
+#endif
+
+#ifndef GL_ARB_depth_clamp
+#define GL_ARB_depth_clamp 1
+#endif
+
+#ifndef GL_ARB_draw_elements_base_vertex
+#define GL_ARB_draw_elements_base_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
+GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
+#endif
+
+#ifndef GL_ARB_fragment_coord_conventions
+#define GL_ARB_fragment_coord_conventions 1
+#endif
+
+#ifndef GL_ARB_provoking_vertex
+#define GL_ARB_provoking_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProvokingVertex (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
+#endif
+
+#ifndef GL_ARB_seamless_cube_map
+#define GL_ARB_seamless_cube_map 1
+#endif
+
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
+GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
+GLAPI void APIENTRY glDeleteSync (GLsync sync);
+GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
+typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
+typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
+typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+#endif
+
+#ifndef GL_ARB_texture_multisample
+#define GL_ARB_texture_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
+typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
+#endif
+
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_ARB_vertex_array_bgra 1
+#endif
+
+#ifndef GL_ARB_draw_buffers_blend
+#define GL_ARB_draw_buffers_blend 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+#endif
+
+#ifndef GL_ARB_sample_shading
+#define GL_ARB_sample_shading 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMinSampleShadingARB (GLclampf value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value);
+#endif
+
+#ifndef GL_ARB_texture_cube_map_array
+#define GL_ARB_texture_cube_map_array 1
+#endif
+
+#ifndef GL_ARB_texture_gather
+#define GL_ARB_texture_gather 1
+#endif
+
+#ifndef GL_ARB_texture_query_lod
+#define GL_ARB_texture_query_lod 1
+#endif
+
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_ARB_texture_compression_bptc 1
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
+#endif
+
+#ifndef GL_ARB_explicit_attrib_location
+#define GL_ARB_explicit_attrib_location 1
+#endif
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ARB_occlusion_query2 1
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
+GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
+GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
+GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
+GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
+GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
+GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
+typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
+typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_ARB_texture_rgb10_a2ui 1
+#endif
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_ARB_texture_swizzle 1
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
+GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect);
+GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_ARB_gpu_shader5 1
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
+GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
+GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
+GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
+typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
+GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
+#endif
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+#define GL_ARB_texture_buffer_object_rgb32 1
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
+GLAPI void APIENTRY glPauseTransformFeedback (void);
+GLAPI void APIENTRY glResumeTransformFeedback (void);
+GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
+typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
+GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
+GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
+GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_ARB_ES2_compatibility
+#define GL_ARB_ES2_compatibility 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReleaseShaderCompiler (void);
+GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
+GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
+GLAPI void APIENTRY glDepthRangef (GLclampf n, GLclampf f);
+GLAPI void APIENTRY glClearDepthf (GLclampf d);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
+typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
+typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
+typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f);
+typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLclampf d);
+#endif
+
+#ifndef GL_ARB_get_program_binary
+#define GL_ARB_get_program_binary 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
+GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
+GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
+typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
+#endif
+
+#ifndef GL_ARB_separate_shader_objects
+#define GL_ARB_separate_shader_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
+GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar* *strings);
+GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
+GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
+GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
+GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
+GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
+GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
+GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* *strings);
+typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
+typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+#endif
+
+#ifndef GL_ARB_vertex_attrib_64bit
+#define GL_ARB_vertex_attrib_64bit 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+#endif
+
+#ifndef GL_ARB_viewport_array
+#define GL_ARB_viewport_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
+GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLclampd *v);
+GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLclampd n, GLclampd f);
+GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
+typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd *v);
+typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f);
+typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
+#endif
+
+#ifndef GL_ARB_cl_event
+#define GL_ARB_cl_event 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context * context, struct _cl_event * event, GLbitfield flags);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags);
+#endif
+
+#ifndef GL_ARB_debug_output
+#define GL_ARB_debug_output 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const GLvoid *userParam);
+GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam);
+typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
+#endif
+
+#ifndef GL_ARB_robustness
+#define GL_ARB_robustness 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
+GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
+GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
+GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
+GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
+GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
+GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
+GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
+GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table);
+GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image);
+GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
+GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
+GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img);
+GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
+GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img);
+GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
+typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
+typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
+typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
+typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
+typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
+typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
+typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
+typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img);
+typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
+typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img);
+typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+#endif
+
+#ifndef GL_ARB_shader_stencil_export
+#define GL_ARB_shader_stencil_export 1
+#endif
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+#endif
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+#endif
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+#endif
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
+typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
+#endif
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
+#endif
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+#endif
+
+#ifndef GL_SGI_color_matrix
+#define GL_SGI_color_matrix 1
+#endif
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+#endif
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
+#endif
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+#endif
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+#endif
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
+typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
+typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+#endif
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
+#endif
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+#endif
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+#endif
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glArrayElementEXT (GLint i);
+GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
+GLAPI void APIENTRY glGetPointervEXT (GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
+typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+#endif
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+#endif
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+#endif
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+#endif
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+#endif
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+#endif
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+#endif
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+#endif
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+#endif
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+#endif
+
+#ifndef GL_SGIX_texture_select
+#define GL_SGIX_texture_select 1
+#endif
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIS_point_parameters
+#define GL_SGIS_point_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_instruments
+#define GL_SGIX_instruments 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
+GLAPI void APIENTRY glStartInstrumentsSGIX (void);
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
+typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
+typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
+typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
+typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
+#endif
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+#endif
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+#endif
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTagSampleBufferSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+#endif
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
+#endif
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushRasterSGIX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
+#endif
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+#endif
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
+typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
+#endif
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+#endif
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+#endif
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+#endif
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+#endif
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+#endif
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
+#endif
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *data);
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+#endif
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
+GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
+GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+#endif
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+#endif
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+#endif
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+#endif
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+#endif
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
+#endif
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
+GLAPI void APIENTRY glUnlockArraysEXT (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+#endif
+
+#ifndef GL_SGIX_fragment_lighting
+#define GL_SGIX_fragment_lighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
+GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
+#endif
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+#endif
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+#endif
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+#endif
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+#endif
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+#endif
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
+GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+#endif
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+#endif
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+#endif
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
+typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
+typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+#endif
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+#endif
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+#endif
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+#endif
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
+#endif
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+#endif
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+#endif
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+#endif
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
+GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
+GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
+GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
+typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
+typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
+typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
+typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
+typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
+typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
+typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
+typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
+typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
+typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
+typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+#endif
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+#endif
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+#endif
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+#endif
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFinishTextureSUNX (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
+#endif
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+#endif
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const GLvoid* *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
+#endif
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif
+
+#ifndef GL_INGR_blend_func_separate
+#define GL_INGR_blend_func_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+#endif
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+#endif
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+#endif
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+#endif
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+#endif
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+#endif
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+#endif
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+#endif
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+#endif
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+#endif
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+#endif
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const GLvoid *pointer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
+#endif
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+#endif
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+#endif
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+#endif
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+#endif
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glResizeBuffersMESA (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
+#endif
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
+#endif
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+#endif
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
+#endif
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+#endif
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+#endif
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+#endif
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+#endif
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+#endif
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+#endif
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+#endif
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+#endif
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+#endif
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+#endif
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+#endif
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+#endif
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+#endif
+
+#ifndef GL_SGIS_texture_color_mask
+#define GL_SGIS_texture_color_mask 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+#endif
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const GLvoid *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
+#endif
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+#endif
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+#endif
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
+GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
+GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
+typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
+typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+#endif
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+#endif
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+#endif
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+#endif
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+#endif
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+#endif
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+#endif
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+#endif
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
+GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
+GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
+GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
+typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
+typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
+typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
+#endif
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+#endif
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+#endif
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+#endif
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+#endif
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+#endif
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+#endif
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+#endif
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
+GLAPI void APIENTRY glBeginFragmentShaderATI (void);
+GLAPI void APIENTRY glEndFragmentShaderATI (void);
+GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
+GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
+typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
+#endif
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const GLvoid *pointer, GLenum usage);
+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
+typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginVertexShaderEXT (void);
+GLAPI void APIENTRY glEndVertexShaderEXT (void);
+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
+GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
+GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
+GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
+GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
+GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
+GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
+GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
+GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
+GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
+GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, GLvoid* *data);
+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
+typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
+typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
+typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
+typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
+typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
+typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
+typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
+typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
+typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
+typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+#endif
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
+GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
+GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
+GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
+GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
+GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
+GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
+GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+#endif
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glElementPointerATI (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+#endif
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
+#endif
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+#endif
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+#endif
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+#endif
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
+GLAPI void APIENTRY glEndOcclusionQueryNV (void);
+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
+#endif
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+#endif
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+#endif
+
+#ifndef GL_EXT_shadow_funcs
+#define GL_EXT_shadow_funcs 1
+#endif
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
+#endif
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_ATI_text_fragment_shader 1
+#endif
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+#endif
+
+#ifndef GL_APPLE_element_array
+#define GL_APPLE_element_array 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
+#endif
+
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
+GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
+GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
+GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
+typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
+typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
+typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
+typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
+#endif
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_APPLE_vertex_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
+#endif
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_APPLE_vertex_array_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
+#endif
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+#endif
+
+#ifndef GL_S3_s3tc
+#define GL_S3_s3tc 1
+#endif
+
+#ifndef GL_ATI_draw_buffers
+#define GL_ATI_draw_buffers 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
+#endif
+
+#ifndef GL_ATI_pixel_format_float
+#define GL_ATI_pixel_format_float 1
+/* This is really a WGL extension, but defines some associated GL enums.
+ * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
+ */
+#endif
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
+#endif
+
+#ifndef GL_NV_fragment_program
+#define GL_NV_fragment_program 1
+/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
+GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
+GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
+GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
+#endif
+
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
+GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
+GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
+GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
+GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
+GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
+GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
+GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
+typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
+typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
+#endif
+
+#ifndef GL_NV_pixel_data_range
+#define GL_NV_pixel_data_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
+typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
+#endif
+
+#ifndef GL_NV_primitive_restart
+#define GL_NV_primitive_restart 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPrimitiveRestartNV (void);
+GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
+#endif
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_NV_texture_expand_normal 1
+#endif
+
+#ifndef GL_NV_vertex_program2
+#define GL_NV_vertex_program2 1
+#endif
+
+#ifndef GL_ATI_map_object_buffer
+#define GL_ATI_map_object_buffer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+#endif
+
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+#endif
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#define GL_ATI_vertex_attrib_array_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+#endif
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
+#endif
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_EXT_texture_mirror_clamp 1
+#endif
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+#endif
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+#endif
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
+#endif
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_EXT_pixel_buffer_object 1
+#endif
+
+#ifndef GL_NV_fragment_program_option
+#define GL_NV_fragment_program_option 1
+#endif
+
+#ifndef GL_NV_fragment_program2
+#define GL_NV_fragment_program2 1
+#endif
+
+#ifndef GL_NV_vertex_program2_option
+#define GL_NV_vertex_program2_option 1
+#endif
+
+#ifndef GL_NV_vertex_program3
+#define GL_NV_vertex_program3 1
+#endif
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
+#endif
+
+#ifndef GL_GREMEDY_string_marker
+#define GL_GREMEDY_string_marker 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const GLvoid *string);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
+#endif
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_EXT_packed_depth_stencil 1
+#endif
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_EXT_stencil_clear_tag 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
+#endif
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+#endif
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+#endif
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_MESAX_texture_stack
+#define GL_MESAX_texture_stack 1
+#endif
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
+#endif
+
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+#endif
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_APPLE_flush_buffer_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
+#endif
+
+#ifndef GL_NV_gpu_program4
+#define GL_NV_gpu_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
+#endif
+
+#ifndef GL_NV_geometry_program4
+#define GL_NV_geometry_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
+GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_EXT_geometry_shader4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
+#endif
+
+#ifndef GL_NV_vertex_program4
+#define GL_NV_vertex_program4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
+#endif
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_EXT_gpu_shader4 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+#endif
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+#endif
+
+#ifndef GL_EXT_packed_float
+#define GL_EXT_packed_float 1
+#endif
+
+#ifndef GL_EXT_texture_array
+#define GL_EXT_texture_array 1
+#endif
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_EXT_texture_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+#endif
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_EXT_texture_compression_latc 1
+#endif
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc 1
+#endif
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_EXT_texture_shared_exponent 1
+#endif
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_NV_depth_buffer_float 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
+GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
+typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
+#endif
+
+#ifndef GL_NV_fragment_program4
+#define GL_NV_fragment_program4 1
+#endif
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+#endif
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_EXT_framebuffer_sRGB 1
+#endif
+
+#ifndef GL_NV_geometry_shader4
+#define GL_NV_geometry_shader4 1
+#endif
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_NV_parameter_buffer_object 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
+#endif
+
+#ifndef GL_EXT_draw_buffers2
+#define GL_EXT_draw_buffers2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+#endif
+
+#ifndef GL_NV_transform_feedback
+#define GL_NV_transform_feedback 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
+GLAPI void APIENTRY glEndTransformFeedbackNV (void);
+GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
+GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
+GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
+GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
+#endif
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_EXT_bindable_uniform 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
+GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
+GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
+typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
+#endif
+
+#ifndef GL_EXT_texture_integer
+#define GL_EXT_texture_integer 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+#endif
+
+#ifndef GL_GREMEDY_frame_terminator
+#define GL_GREMEDY_frame_terminator 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
+#endif
+
+#ifndef GL_NV_conditional_render
+#define GL_NV_conditional_render 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
+GLAPI void APIENTRY glEndConditionalRenderNV (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
+#endif
+
+#ifndef GL_NV_present_video
+#define GL_NV_present_video 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
+#endif
+
+#ifndef GL_EXT_transform_feedback
+#define GL_EXT_transform_feedback 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
+GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
+GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+#endif
+
+#ifndef GL_EXT_direct_state_access
+#define GL_EXT_direct_state_access 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
+GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, GLvoid* *data);
+GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
+GLAPI GLvoid* APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
+GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
+GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
+GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
+GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
+GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
+typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid* *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid *img);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid *img);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, GLvoid *string);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
+typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
+typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
+typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif
+
+#ifndef GL_EXT_vertex_array_bgra
+#define GL_EXT_vertex_array_bgra 1
+#endif
+
+#ifndef GL_EXT_texture_swizzle
+#define GL_EXT_texture_swizzle 1
+#endif
+
+#ifndef GL_NV_explicit_multisample
+#define GL_NV_explicit_multisample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
+GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
+typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
+typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
+#endif
+
+#ifndef GL_NV_transform_feedback2
+#define GL_NV_transform_feedback2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
+GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
+GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
+GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
+typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
+typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
+#endif
+
+#ifndef GL_ATI_meminfo
+#define GL_ATI_meminfo 1
+#endif
+
+#ifndef GL_AMD_performance_monitor
+#define GL_AMD_performance_monitor 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
+GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
+typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
+typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
+typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
+#endif
+
+#ifndef GL_AMD_texture_texture4
+#define GL_AMD_texture_texture4 1
+#endif
+
+#ifndef GL_AMD_vertex_shader_tesselator
+#define GL_AMD_vertex_shader_tesselator 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
+GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_provoking_vertex
+#define GL_EXT_provoking_vertex 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
+#endif
+
+#ifndef GL_EXT_texture_snorm
+#define GL_EXT_texture_snorm 1
+#endif
+
+#ifndef GL_AMD_draw_buffers_blend
+#define GL_AMD_draw_buffers_blend 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+#endif
+
+#ifndef GL_APPLE_texture_range
+#define GL_APPLE_texture_range 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const GLvoid *pointer);
+GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, GLvoid* *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* *params);
+#endif
+
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels 1
+#endif
+
+#ifndef GL_APPLE_vertex_program_evaluators
+#define GL_APPLE_vertex_program_evaluators 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+#endif
+
+#ifndef GL_APPLE_aux_depth_stencil
+#define GL_APPLE_aux_depth_stencil 1
+#endif
+
+#ifndef GL_APPLE_object_purgeable
+#define GL_APPLE_object_purgeable 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_APPLE_row_bytes
+#define GL_APPLE_row_bytes 1
+#endif
+
+#ifndef GL_APPLE_rgb_422
+#define GL_APPLE_rgb_422 1
+#endif
+
+#ifndef GL_NV_video_capture
+#define GL_NV_video_capture 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
+GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
+GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
+typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
+typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
+#endif
+
+#ifndef GL_NV_copy_image
+#define GL_NV_copy_image 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif
+
+#ifndef GL_EXT_separate_shader_objects
+#define GL_EXT_separate_shader_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
+GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
+typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
+#endif
+
+#ifndef GL_NV_parameter_buffer_object2
+#define GL_NV_parameter_buffer_object2 1
+#endif
+
+#ifndef GL_NV_shader_buffer_load
+#define GL_NV_shader_buffer_load 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
+GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
+GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
+GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
+GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
+GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
+GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
+GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
+GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
+typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
+typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
+typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif
+
+#ifndef GL_NV_vertex_buffer_unified_memory
+#define GL_NV_vertex_buffer_unified_memory 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
+GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
+#endif
+
+#ifndef GL_NV_texture_barrier
+#define GL_NV_texture_barrier 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTextureBarrierNV (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
+#endif
+
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+#endif
+
+#ifndef GL_EXT_shader_image_load_store
+#define GL_EXT_shader_image_load_store 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
+#endif
+
+#ifndef GL_EXT_vertex_attrib_64bit
+#define GL_EXT_vertex_attrib_64bit 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+#endif
+
+#ifndef GL_NV_gpu_program5
+#define GL_NV_gpu_program5 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
+#endif
+
+#ifndef GL_NV_gpu_shader5
+#define GL_NV_gpu_shader5 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
+GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
+GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
+GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
+GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
+GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
+typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
+#endif
+
+#ifndef GL_NV_shader_buffer_store
+#define GL_NV_shader_buffer_store 1
+#endif
+
+#ifndef GL_NV_tessellation_program5
+#define GL_NV_tessellation_program5 1
+#endif
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+#define GL_NV_vertex_attrib_integer_64bit 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
+GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
+GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
+GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
+GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
+GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+#endif
+
+#ifndef GL_NV_multisample_coverage
+#define GL_NV_multisample_coverage 1
+#endif
+
+#ifndef GL_AMD_name_gen_delete
+#define GL_AMD_name_gen_delete 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
+GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
+GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
+typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
+typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
+#endif
+
+#ifndef GL_AMD_debug_output
+#define GL_AMD_debug_output 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
+GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, GLvoid *userParam);
+GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
+typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, GLvoid *userParam);
+typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
+#endif
+
+#ifndef GL_NV_vdpau_interop
+#define GL_NV_vdpau_interop 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVDPAUInitNV (const GLvoid *vdpDevice, const GLvoid *getProcAddress);
+GLAPI void APIENTRY glVDPAUFiniNV (void);
+GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
+GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
+GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
+GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
+GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const GLvoid *vdpDevice, const GLvoid *getProcAddress);
+typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
+typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
+typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
+typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
+#endif
+
+#ifndef GL_AMD_transform_feedback3_lines_triangles
+#define GL_AMD_transform_feedback3_lines_triangles 1
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/SFML/Window/glext/glxext.h b/src/SFML/Window/glext/glxext.h
new file mode 100644
index 0000000..3c47dc3
--- /dev/null
+++ b/src/SFML/Window/glext/glxext.h
@@ -0,0 +1,993 @@
+#ifndef __glxext_h_
+#define __glxext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007-2010 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are 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 Materials.
+**
+** THE MATERIALS ARE 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
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+/* Function declaration macros - to move into glplatform.h */
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+/* Header file version number, required by OpenGL ABI for Linux */
+/* glxext.h last updated 2010/08/06 */
+/* Current version at http://www.opengl.org/registry/ */
+#define GLX_GLXEXT_VERSION 32
+
+#ifndef GLX_VERSION_1_3
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_DONT_CARE 0xFFFFFFFF
+#define GLX_NONE 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_VISUAL_ID 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#endif
+
+#ifndef GLX_VERSION_1_4
+#define GLX_SAMPLE_BUFFERS 100000
+#define GLX_SAMPLES 100001
+#endif
+
+#ifndef GLX_ARB_get_proc_address
+#endif
+
+#ifndef GLX_ARB_multisample
+#define GLX_SAMPLE_BUFFERS_ARB 100000
+#define GLX_SAMPLES_ARB 100001
+#endif
+
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+#endif
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+#endif
+
+#ifndef GLX_ARB_framebuffer_sRGB
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
+#endif
+
+#ifndef GLX_ARB_create_context
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define GLX_CONTEXT_FLAGS_ARB 0x2094
+#endif
+
+#ifndef GLX_ARB_create_context_profile
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
+#endif
+
+#ifndef GLX_ARB_create_context_robustness
+#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261
+#endif
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SAMPLE_BUFFERS_SGIS 100000
+#define GLX_SAMPLES_SGIS 100001
+#endif
+
+#ifndef GLX_EXT_visual_info
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+#define GLX_NONE_EXT 0x8000
+#define GLX_TRUE_COLOR_EXT 0x8002
+#define GLX_DIRECT_COLOR_EXT 0x8003
+#define GLX_PSEUDO_COLOR_EXT 0x8004
+#define GLX_STATIC_COLOR_EXT 0x8005
+#define GLX_GRAY_SCALE_EXT 0x8006
+#define GLX_STATIC_GRAY_EXT 0x8007
+#define GLX_TRANSPARENT_RGB_EXT 0x8008
+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+#endif
+
+#ifndef GLX_SGI_swap_control
+#endif
+
+#ifndef GLX_SGI_video_sync
+#endif
+
+#ifndef GLX_SGI_make_current_read
+#endif
+
+#ifndef GLX_SGIX_video_source
+#endif
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+#define GLX_SLOW_VISUAL_EXT 0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+/* reuse GLX_NONE_EXT */
+#endif
+
+#ifndef GLX_EXT_import_context
+#define GLX_SHARE_CONTEXT_EXT 0x800A
+#define GLX_VISUAL_ID_EXT 0x800B
+#define GLX_SCREEN_EXT 0x800C
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_WINDOW_BIT_SGIX 0x00000001
+#define GLX_PIXMAP_BIT_SGIX 0x00000002
+#define GLX_RGBA_BIT_SGIX 0x00000001
+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
+#define GLX_RENDER_TYPE_SGIX 0x8011
+#define GLX_X_RENDERABLE_SGIX 0x8012
+#define GLX_FBCONFIG_ID_SGIX 0x8013
+#define GLX_RGBA_TYPE_SGIX 0x8014
+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+/* reuse GLX_SCREEN_EXT */
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_PBUFFER_BIT_SGIX 0x00000004
+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
+#define GLX_WIDTH_SGIX 0x801D
+#define GLX_HEIGHT_SGIX 0x801E
+#define GLX_EVENT_MASK_SGIX 0x801F
+#define GLX_DAMAGED_SGIX 0x8020
+#define GLX_SAVED_SGIX 0x8021
+#define GLX_WINDOW_SGIX 0x8022
+#define GLX_PBUFFER_SGIX 0x8023
+#endif
+
+#ifndef GLX_SGI_cushion
+#endif
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SYNC_FRAME_SGIX 0x00000000
+#define GLX_SYNC_SWAP_SGIX 0x00000001
+#endif
+
+#ifndef GLX_SGIX_dmbuffer
+#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
+#endif
+
+#ifndef GLX_SGIX_swap_group
+#endif
+
+#ifndef GLX_SGIX_swap_barrier
+#endif
+
+#ifndef GLX_SGIS_blended_overlay
+#define GLX_BLENDED_RGBA_SGIS 0x8025
+#endif
+
+#ifndef GLX_SGIS_shared_multisample
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
+#endif
+
+#ifndef GLX_SUN_get_transparent_index
+#endif
+
+#ifndef GLX_3DFX_multisample
+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
+#define GLX_SAMPLES_3DFX 0x8051
+#endif
+
+#ifndef GLX_MESA_copy_sub_buffer
+#endif
+
+#ifndef GLX_MESA_pixmap_colormap
+#endif
+
+#ifndef GLX_MESA_release_buffers
+#endif
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+#endif
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
+#endif
+
+#ifndef GLX_OML_swap_method
+#define GLX_SWAP_METHOD_OML 0x8060
+#define GLX_SWAP_EXCHANGE_OML 0x8061
+#define GLX_SWAP_COPY_OML 0x8062
+#define GLX_SWAP_UNDEFINED_OML 0x8063
+#endif
+
+#ifndef GLX_OML_sync_control
+#endif
+
+#ifndef GLX_NV_float_buffer
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+#endif
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+#define GLX_BAD_HYPERPIPE_SGIX 92
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+#define GLX_PIPE_RECT_SGIX 0x00000001
+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+#define GLX_HYPERPIPE_ID_SGIX 0x8030
+#endif
+
+#ifndef GLX_MESA_agp_offset
+#endif
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+#endif
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+#endif
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
+#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+#endif
+
+#ifndef GLX_NV_present_video
+#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+#endif
+
+#ifndef GLX_NV_video_out
+#define GLX_VIDEO_OUT_COLOR_NV 0x20C3
+#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define GLX_VIDEO_OUT_FRAME_NV 0x20C8
+#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+#endif
+
+#ifndef GLX_NV_swap_group
+#endif
+
+#ifndef GLX_NV_video_capture
+#define GLX_DEVICE_ID_NV 0x20CD
+#define GLX_UNIQUE_ID_NV 0x20CE
+#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+#endif
+
+#ifndef GLX_EXT_swap_control
+#define GLX_SWAP_INTERVAL_EXT 0x20F1
+#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+#endif
+
+#ifndef GLX_NV_copy_image
+#endif
+
+#ifndef GLX_INTEL_swap_event
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+#define GLX_COPY_COMPLETE_INTEL 0x8181
+#define GLX_FLIP_COMPLETE_INTEL 0x8182
+#endif
+
+#ifndef GLX_NV_multisample_coverage
+#define GLX_COVERAGE_SAMPLES_NV 100001
+#define GLX_COLOR_SAMPLES_NV 0x20B3
+#endif
+
+#ifndef GLX_AMD_gpu_association
+#define GLX_GPU_VENDOR_AMD 0x1F00
+#define GLX_GPU_RENDERER_STRING_AMD 0x1F01
+#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define GLX_GPU_RAM_AMD 0x21A3
+#define GLX_GPU_CLOCK_AMD 0x21A4
+#define GLX_GPU_NUM_PIPES_AMD 0x21A5
+#define GLX_GPU_NUM_SIMD_AMD 0x21A6
+#define GLX_GPU_NUM_RB_AMD 0x21A7
+#define GLX_GPU_NUM_SPI_AMD 0x21A8
+#endif
+
+#ifndef GLX_EXT_create_context_es2_profile
+#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+#endif
+
+
+/*************************************************************/
+
+#ifndef GLX_ARB_get_proc_address
+typedef void (*__GLXextFuncPtr)(void);
+#endif
+
+#ifndef GLX_SGIX_video_source
+typedef XID GLXVideoSourceSGIX;
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+typedef XID GLXFBConfigIDSGIX;
+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+typedef XID GLXPbufferSGIX;
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came for SendEvent request */
+ Display *display; /* display the event was read from */
+ GLXDrawable drawable; /* i.d. of Drawable */
+ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+ unsigned int mask; /* mask indicating which buffers are affected*/
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} GLXBufferClobberEventSGIX;
+#endif
+
+#ifndef GLX_NV_video_output
+typedef unsigned int GLXVideoDeviceNV;
+#endif
+
+#ifndef GLX_NV_video_capture
+typedef XID GLXVideoCaptureDeviceNV;
+#endif
+
+#ifndef GLEXT_64_TYPES_DEFINED
+/* This code block is duplicated in glext.h, so must be protected */
+#define GLEXT_64_TYPES_DEFINED
+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+/* (as used in the GLX_OML_sync_control extension). */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+#elif defined(__sun__) || defined(__digital__)
+#include <inttypes.h>
+#if defined(__STDC__)
+#if defined(__arch64__) || defined(_LP64)
+typedef long int int64_t;
+typedef unsigned long int uint64_t;
+#else
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#endif /* __arch64__ */
+#endif /* __STDC__ */
+#elif defined( __VMS ) || defined(__sgi)
+#include <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#elif defined(__UNIXOS2__) || defined(__SOL64__)
+typedef long int int32_t;
+typedef long long int int64_t;
+typedef unsigned long long int uint64_t;
+#elif defined(_WIN32) && defined(__GNUC__)
+#include <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <inttypes.h> /* Fallback option */
+#endif
+#endif
+
+#ifndef GLX_VERSION_1_3
+#define GLX_VERSION_1_3 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXFBConfig * glXGetFBConfigs (Display *dpy, int screen, int *nelements);
+extern GLXFBConfig * glXChooseFBConfig (Display *dpy, int screen, const int *attrib_list, int *nelements);
+extern int glXGetFBConfigAttrib (Display *dpy, GLXFBConfig config, int attribute, int *value);
+extern XVisualInfo * glXGetVisualFromFBConfig (Display *dpy, GLXFBConfig config);
+extern GLXWindow glXCreateWindow (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
+extern void glXDestroyWindow (Display *dpy, GLXWindow win);
+extern GLXPixmap glXCreatePixmap (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
+extern void glXDestroyPixmap (Display *dpy, GLXPixmap pixmap);
+extern GLXPbuffer glXCreatePbuffer (Display *dpy, GLXFBConfig config, const int *attrib_list);
+extern void glXDestroyPbuffer (Display *dpy, GLXPbuffer pbuf);
+extern void glXQueryDrawable (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
+extern GLXContext glXCreateNewContext (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+extern Bool glXMakeContextCurrent (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+extern GLXDrawable glXGetCurrentReadDrawable (void);
+extern Display * glXGetCurrentDisplay (void);
+extern int glXQueryContext (Display *dpy, GLXContext ctx, int attribute, int *value);
+extern void glXSelectEvent (Display *dpy, GLXDrawable draw, unsigned long event_mask);
+extern void glXGetSelectedEvent (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
+typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
+typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
+typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
+typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
+typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
+typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
+typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
+typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
+typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
+typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
+#endif
+
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *procName);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
+#endif
+
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
+#endif
+
+#ifndef GLX_ARB_multisample
+#define GLX_ARB_multisample 1
+#endif
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_ARB_fbconfig_float 1
+#endif
+
+#ifndef GLX_ARB_framebuffer_sRGB
+#define GLX_ARB_framebuffer_sRGB 1
+#endif
+
+#ifndef GLX_ARB_create_context
+#define GLX_ARB_create_context 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXContext glXCreateContextAttribsARB (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list);
+#endif
+
+#ifndef GLX_ARB_create_context_profile
+#define GLX_ARB_create_context_profile 1
+#endif
+
+#ifndef GLX_ARB_create_context_robustness
+#define GLX_ARB_create_context_robustness 1
+#endif
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SGIS_multisample 1
+#endif
+
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info 1
+#endif
+
+#ifndef GLX_SGI_swap_control
+#define GLX_SGI_swap_control 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXSwapIntervalSGI (int interval);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
+#endif
+
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXGetVideoSyncSGI (unsigned int *count);
+extern int glXWaitVideoSyncSGI (int divisor, int remainder, unsigned int *count);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
+typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
+#endif
+
+#ifndef GLX_SGI_make_current_read
+#define GLX_SGI_make_current_read 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXMakeCurrentReadSGI (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
+#endif
+
+#ifndef GLX_SGIX_video_source
+#define GLX_SGIX_video_source 1
+#ifdef _VL_H
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
+extern void glXDestroyGLXVideoSourceSGIX (Display *dpy, GLXVideoSourceSGIX glxvideosource);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
+typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
+#endif /* _VL_H */
+#endif
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating 1
+#endif
+
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Display * glXGetCurrentDisplayEXT (void);
+extern int glXQueryContextInfoEXT (Display *dpy, GLXContext context, int attribute, int *value);
+extern GLXContextID glXGetContextIDEXT (const GLXContext context);
+extern GLXContext glXImportContextEXT (Display *dpy, GLXContextID contextID);
+extern void glXFreeContextEXT (Display *dpy, GLXContext context);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
+typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
+typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
+typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
+typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
+#endif
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_SGIX_fbconfig 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXGetFBConfigAttribSGIX (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
+extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *dpy, int screen, int *attrib_list, int *nelements);
+extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+extern GLXContext glXCreateContextWithConfigSGIX (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *dpy, GLXFBConfigSGIX config);
+extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *dpy, XVisualInfo *vis);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
+typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
+typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
+#endif
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_SGIX_pbuffer 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
+extern void glXDestroyGLXPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuf);
+extern int glXQueryGLXPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
+extern void glXSelectEventSGIX (Display *dpy, GLXDrawable drawable, unsigned long mask);
+extern void glXGetSelectedEventSGIX (Display *dpy, GLXDrawable drawable, unsigned long *mask);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
+typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
+typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
+typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
+typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
+#endif
+
+#ifndef GLX_SGI_cushion
+#define GLX_SGI_cushion 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXCushionSGI (Display *dpy, Window window, float cushion);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
+#endif
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SGIX_video_resize 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXBindChannelToWindowSGIX (Display *display, int screen, int channel, Window window);
+extern int glXChannelRectSGIX (Display *display, int screen, int channel, int x, int y, int w, int h);
+extern int glXQueryChannelRectSGIX (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
+extern int glXQueryChannelDeltasSGIX (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
+extern int glXChannelRectSyncSGIX (Display *display, int screen, int channel, GLenum synctype);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
+typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
+typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
+typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
+typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
+#endif
+
+#ifndef GLX_SGIX_dmbuffer
+#define GLX_SGIX_dmbuffer 1
+#ifdef _DM_BUFFER_H_
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXAssociateDMPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
+#endif /* _DM_BUFFER_H_ */
+#endif
+
+#ifndef GLX_SGIX_swap_group
+#define GLX_SGIX_swap_group 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXJoinSwapGroupSGIX (Display *dpy, GLXDrawable drawable, GLXDrawable member);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
+#endif
+
+#ifndef GLX_SGIX_swap_barrier
+#define GLX_SGIX_swap_barrier 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXBindSwapBarrierSGIX (Display *dpy, GLXDrawable drawable, int barrier);
+extern Bool glXQueryMaxSwapBarriersSGIX (Display *dpy, int screen, int *max);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
+typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
+#endif
+
+#ifndef GLX_SUN_get_transparent_index
+#define GLX_SUN_get_transparent_index 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Status glXGetTransparentIndexSUN (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
+#endif
+
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXCopySubBufferMESA (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
+#endif
+
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
+#endif
+
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXReleaseBuffersMESA (Display *dpy, GLXDrawable drawable);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
+#endif
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXSet3DfxModeMESA (int mode);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
+#endif
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_SGIX_visual_select_group 1
+#endif
+
+#ifndef GLX_OML_swap_method
+#define GLX_OML_swap_method 1
+#endif
+
+#ifndef GLX_OML_sync_control
+#define GLX_OML_sync_control 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXGetSyncValuesOML (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
+extern Bool glXGetMscRateOML (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
+extern int64_t glXSwapBuffersMscOML (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+extern Bool glXWaitForMscOML (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
+extern Bool glXWaitForSbcOML (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
+typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
+typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
+typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
+#endif
+
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+#endif
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_SGIX_hyperpipe 1
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int networkId;
+} GLXHyperpipeNetworkSGIX;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int channel;
+ unsigned int
+ participationType;
+ int timeSlice;
+} GLXHyperpipeConfigSGIX;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+ int destXOrigin, destYOrigin, destWidth, destHeight;
+} GLXPipeRect;
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int XOrigin, YOrigin, maxHeight, maxWidth;
+} GLXPipeRectLimits;
+
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *dpy, int *npipes);
+extern int glXHyperpipeConfigSGIX (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
+extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *dpy, int hpId, int *npipes);
+extern int glXDestroyHyperpipeConfigSGIX (Display *dpy, int hpId);
+extern int glXBindHyperpipeSGIX (Display *dpy, int hpId);
+extern int glXQueryHyperpipeBestAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
+extern int glXHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
+extern int glXQueryHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
+typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
+typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
+typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
+typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
+typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
+#endif
+
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern unsigned int glXGetAGPOffsetMESA (const void *pointer);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer);
+#endif
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_EXT_fbconfig_packed_float 1
+#endif
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_EXT_framebuffer_sRGB 1
+#endif
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_EXT_texture_from_pixmap 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXBindTexImageEXT (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
+extern void glXReleaseTexImageEXT (Display *dpy, GLXDrawable drawable, int buffer);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer);
+#endif
+
+#ifndef GLX_NV_present_video
+#define GLX_NV_present_video 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern unsigned int * glXEnumerateVideoDevicesNV (Display *dpy, int screen, int *nelements);
+extern int glXBindVideoDeviceNV (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef unsigned int * ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements);
+typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list);
+#endif
+
+#ifndef GLX_NV_video_output
+#define GLX_NV_video_output 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXGetVideoDeviceNV (Display *dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice);
+extern int glXReleaseVideoDeviceNV (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice);
+extern int glXBindVideoImageNV (Display *dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+extern int glXReleaseVideoImageNV (Display *dpy, GLXPbuffer pbuf);
+extern int glXSendPbufferToVideoNV (Display *dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock);
+extern int glXGetVideoInfoNV (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display *dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice);
+typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice);
+typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display *dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display *dpy, GLXPbuffer pbuf);
+typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display *dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock);
+typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
+#endif
+
+#ifndef GLX_NV_swap_group
+#define GLX_NV_swap_group 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern Bool glXJoinSwapGroupNV (Display *dpy, GLXDrawable drawable, GLuint group);
+extern Bool glXBindSwapBarrierNV (Display *dpy, GLuint group, GLuint barrier);
+extern Bool glXQuerySwapGroupNV (Display *dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier);
+extern Bool glXQueryMaxSwapGroupsNV (Display *dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers);
+extern Bool glXQueryFrameCountNV (Display *dpy, int screen, GLuint *count);
+extern Bool glXResetFrameCountNV (Display *dpy, int screen);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint group);
+typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display *dpy, GLuint group, GLuint barrier);
+typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier);
+typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display *dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers);
+typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display *dpy, int screen, GLuint *count);
+typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display *dpy, int screen);
+#endif
+
+#ifndef GLX_NV_video_capture
+#define GLX_NV_video_capture 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXBindVideoCaptureDeviceNV (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+extern GLXVideoCaptureDeviceNV * glXEnumerateVideoCaptureDevicesNV (Display *dpy, int screen, int *nelements);
+extern void glXLockVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device);
+extern int glXQueryVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value);
+extern void glXReleaseVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display *dpy, int screen, int *nelements);
+typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device);
+typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value);
+typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device);
+#endif
+
+#ifndef GLX_EXT_swap_control
+#define GLX_EXT_swap_control 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern int glXSwapIntervalEXT (Display *dpy, GLXDrawable drawable, int interval);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef int ( * PFNGLXSWAPINTERVALEXTPROC) (Display *dpy, GLXDrawable drawable, int interval);
+#endif
+
+#ifndef GLX_NV_copy_image
+#define GLX_NV_copy_image 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif
+
+#ifndef GLX_INTEL_swap_event
+#define GLX_INTEL_swap_event 1
+#endif
+
+#ifndef GLX_NV_multisample_coverage
+#define GLX_NV_multisample_coverage 1
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/SFML/Window/glext/wglext.h b/src/SFML/Window/glext/wglext.h
new file mode 100644
index 0000000..e60c652
--- /dev/null
+++ b/src/SFML/Window/glext/wglext.h
@@ -0,0 +1,901 @@
+#ifndef __wglext_h_
+#define __wglext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007-2010 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are 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 Materials.
+**
+** THE MATERIALS ARE 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
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+/* Function declaration macros - to move into glplatform.h */
+
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+/*************************************************************/
+
+/* Header file version number */
+/* wglext.h last updated 2010/08/06 */
+/* Current version at http://www.opengl.org/registry/ */
+#define WGL_WGLEXT_VERSION 22
+
+#ifndef WGL_ARB_buffer_region
+#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
+#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
+#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
+#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
+#endif
+
+#ifndef WGL_ARB_multisample
+#define WGL_SAMPLE_BUFFERS_ARB 0x2041
+#define WGL_SAMPLES_ARB 0x2042
+#endif
+
+#ifndef WGL_ARB_extensions_string
+#endif
+
+#ifndef WGL_ARB_pixel_format
+#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
+#define WGL_DRAW_TO_WINDOW_ARB 0x2001
+#define WGL_DRAW_TO_BITMAP_ARB 0x2002
+#define WGL_ACCELERATION_ARB 0x2003
+#define WGL_NEED_PALETTE_ARB 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
+#define WGL_SWAP_METHOD_ARB 0x2007
+#define WGL_NUMBER_OVERLAYS_ARB 0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
+#define WGL_TRANSPARENT_ARB 0x200A
+#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+#define WGL_SHARE_DEPTH_ARB 0x200C
+#define WGL_SHARE_STENCIL_ARB 0x200D
+#define WGL_SHARE_ACCUM_ARB 0x200E
+#define WGL_SUPPORT_GDI_ARB 0x200F
+#define WGL_SUPPORT_OPENGL_ARB 0x2010
+#define WGL_DOUBLE_BUFFER_ARB 0x2011
+#define WGL_STEREO_ARB 0x2012
+#define WGL_PIXEL_TYPE_ARB 0x2013
+#define WGL_COLOR_BITS_ARB 0x2014
+#define WGL_RED_BITS_ARB 0x2015
+#define WGL_RED_SHIFT_ARB 0x2016
+#define WGL_GREEN_BITS_ARB 0x2017
+#define WGL_GREEN_SHIFT_ARB 0x2018
+#define WGL_BLUE_BITS_ARB 0x2019
+#define WGL_BLUE_SHIFT_ARB 0x201A
+#define WGL_ALPHA_BITS_ARB 0x201B
+#define WGL_ALPHA_SHIFT_ARB 0x201C
+#define WGL_ACCUM_BITS_ARB 0x201D
+#define WGL_ACCUM_RED_BITS_ARB 0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
+#define WGL_DEPTH_BITS_ARB 0x2022
+#define WGL_STENCIL_BITS_ARB 0x2023
+#define WGL_AUX_BUFFERS_ARB 0x2024
+#define WGL_NO_ACCELERATION_ARB 0x2025
+#define WGL_GENERIC_ACCELERATION_ARB 0x2026
+#define WGL_FULL_ACCELERATION_ARB 0x2027
+#define WGL_SWAP_EXCHANGE_ARB 0x2028
+#define WGL_SWAP_COPY_ARB 0x2029
+#define WGL_SWAP_UNDEFINED_ARB 0x202A
+#define WGL_TYPE_RGBA_ARB 0x202B
+#define WGL_TYPE_COLORINDEX_ARB 0x202C
+#endif
+
+#ifndef WGL_ARB_make_current_read
+#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+#endif
+
+#ifndef WGL_ARB_pbuffer
+#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
+#define WGL_PBUFFER_LARGEST_ARB 0x2033
+#define WGL_PBUFFER_WIDTH_ARB 0x2034
+#define WGL_PBUFFER_HEIGHT_ARB 0x2035
+#define WGL_PBUFFER_LOST_ARB 0x2036
+#endif
+
+#ifndef WGL_ARB_render_texture
+#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
+#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
+#define WGL_TEXTURE_FORMAT_ARB 0x2072
+#define WGL_TEXTURE_TARGET_ARB 0x2073
+#define WGL_MIPMAP_TEXTURE_ARB 0x2074
+#define WGL_TEXTURE_RGB_ARB 0x2075
+#define WGL_TEXTURE_RGBA_ARB 0x2076
+#define WGL_NO_TEXTURE_ARB 0x2077
+#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
+#define WGL_TEXTURE_1D_ARB 0x2079
+#define WGL_TEXTURE_2D_ARB 0x207A
+#define WGL_MIPMAP_LEVEL_ARB 0x207B
+#define WGL_CUBE_MAP_FACE_ARB 0x207C
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
+#define WGL_FRONT_LEFT_ARB 0x2083
+#define WGL_FRONT_RIGHT_ARB 0x2084
+#define WGL_BACK_LEFT_ARB 0x2085
+#define WGL_BACK_RIGHT_ARB 0x2086
+#define WGL_AUX0_ARB 0x2087
+#define WGL_AUX1_ARB 0x2088
+#define WGL_AUX2_ARB 0x2089
+#define WGL_AUX3_ARB 0x208A
+#define WGL_AUX4_ARB 0x208B
+#define WGL_AUX5_ARB 0x208C
+#define WGL_AUX6_ARB 0x208D
+#define WGL_AUX7_ARB 0x208E
+#define WGL_AUX8_ARB 0x208F
+#define WGL_AUX9_ARB 0x2090
+#endif
+
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
+#endif
+
+#ifndef WGL_ARB_framebuffer_sRGB
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
+#endif
+
+#ifndef WGL_ARB_create_context
+#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
+#define WGL_CONTEXT_FLAGS_ARB 0x2094
+#define ERROR_INVALID_VERSION_ARB 0x2095
+#endif
+
+#ifndef WGL_ARB_create_context_profile
+#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
+#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define ERROR_INVALID_PROFILE_ARB 0x2096
+#endif
+
+#ifndef WGL_ARB_create_context_robustness
+#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
+#endif
+
+#ifndef WGL_EXT_make_current_read
+#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+#endif
+
+#ifndef WGL_EXT_pixel_format
+#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
+#define WGL_DRAW_TO_WINDOW_EXT 0x2001
+#define WGL_DRAW_TO_BITMAP_EXT 0x2002
+#define WGL_ACCELERATION_EXT 0x2003
+#define WGL_NEED_PALETTE_EXT 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
+#define WGL_SWAP_METHOD_EXT 0x2007
+#define WGL_NUMBER_OVERLAYS_EXT 0x2008
+#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
+#define WGL_TRANSPARENT_EXT 0x200A
+#define WGL_TRANSPARENT_VALUE_EXT 0x200B
+#define WGL_SHARE_DEPTH_EXT 0x200C
+#define WGL_SHARE_STENCIL_EXT 0x200D
+#define WGL_SHARE_ACCUM_EXT 0x200E
+#define WGL_SUPPORT_GDI_EXT 0x200F
+#define WGL_SUPPORT_OPENGL_EXT 0x2010
+#define WGL_DOUBLE_BUFFER_EXT 0x2011
+#define WGL_STEREO_EXT 0x2012
+#define WGL_PIXEL_TYPE_EXT 0x2013
+#define WGL_COLOR_BITS_EXT 0x2014
+#define WGL_RED_BITS_EXT 0x2015
+#define WGL_RED_SHIFT_EXT 0x2016
+#define WGL_GREEN_BITS_EXT 0x2017
+#define WGL_GREEN_SHIFT_EXT 0x2018
+#define WGL_BLUE_BITS_EXT 0x2019
+#define WGL_BLUE_SHIFT_EXT 0x201A
+#define WGL_ALPHA_BITS_EXT 0x201B
+#define WGL_ALPHA_SHIFT_EXT 0x201C
+#define WGL_ACCUM_BITS_EXT 0x201D
+#define WGL_ACCUM_RED_BITS_EXT 0x201E
+#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
+#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
+#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
+#define WGL_DEPTH_BITS_EXT 0x2022
+#define WGL_STENCIL_BITS_EXT 0x2023
+#define WGL_AUX_BUFFERS_EXT 0x2024
+#define WGL_NO_ACCELERATION_EXT 0x2025
+#define WGL_GENERIC_ACCELERATION_EXT 0x2026
+#define WGL_FULL_ACCELERATION_EXT 0x2027
+#define WGL_SWAP_EXCHANGE_EXT 0x2028
+#define WGL_SWAP_COPY_EXT 0x2029
+#define WGL_SWAP_UNDEFINED_EXT 0x202A
+#define WGL_TYPE_RGBA_EXT 0x202B
+#define WGL_TYPE_COLORINDEX_EXT 0x202C
+#endif
+
+#ifndef WGL_EXT_pbuffer
+#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
+#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
+#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
+#define WGL_PBUFFER_LARGEST_EXT 0x2033
+#define WGL_PBUFFER_WIDTH_EXT 0x2034
+#define WGL_PBUFFER_HEIGHT_EXT 0x2035
+#endif
+
+#ifndef WGL_EXT_depth_float
+#define WGL_DEPTH_FLOAT_EXT 0x2040
+#endif
+
+#ifndef WGL_3DFX_multisample
+#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
+#define WGL_SAMPLES_3DFX 0x2061
+#endif
+
+#ifndef WGL_EXT_multisample
+#define WGL_SAMPLE_BUFFERS_EXT 0x2041
+#define WGL_SAMPLES_EXT 0x2042
+#endif
+
+#ifndef WGL_I3D_digital_video_control
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
+#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
+#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
+#endif
+
+#ifndef WGL_I3D_gamma
+#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
+#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
+#endif
+
+#ifndef WGL_I3D_genlock
+#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
+#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045
+#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046
+#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047
+#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
+#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
+#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
+#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
+#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
+#endif
+
+#ifndef WGL_I3D_image_buffer
+#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
+#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
+#endif
+
+#ifndef WGL_I3D_swap_frame_lock
+#endif
+
+#ifndef WGL_NV_render_depth_texture
+#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
+#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+#define WGL_DEPTH_COMPONENT_NV 0x20A7
+#endif
+
+#ifndef WGL_NV_render_texture_rectangle
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
+#endif
+
+#ifndef WGL_ATI_pixel_format_float
+#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
+#endif
+
+#ifndef WGL_NV_float_buffer
+#define WGL_FLOAT_COMPONENTS_NV 0x20B0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
+#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
+#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
+#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
+#endif
+
+#ifndef WGL_3DL_stereo_control
+#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
+#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
+#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
+#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
+#endif
+
+#ifndef WGL_EXT_pixel_format_packed_float
+#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
+#endif
+
+#ifndef WGL_EXT_framebuffer_sRGB
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
+#endif
+
+#ifndef WGL_NV_present_video
+#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
+#endif
+
+#ifndef WGL_NV_video_out
+#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
+#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
+#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
+#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
+#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
+#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
+#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define WGL_VIDEO_OUT_FRAME 0x20C8
+#define WGL_VIDEO_OUT_FIELD_1 0x20C9
+#define WGL_VIDEO_OUT_FIELD_2 0x20CA
+#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
+#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
+#endif
+
+#ifndef WGL_NV_swap_group
+#endif
+
+#ifndef WGL_NV_gpu_affinity
+#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
+#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
+#endif
+
+#ifndef WGL_AMD_gpu_association
+#define WGL_GPU_VENDOR_AMD 0x1F00
+#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
+#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define WGL_GPU_RAM_AMD 0x21A3
+#define WGL_GPU_CLOCK_AMD 0x21A4
+#define WGL_GPU_NUM_PIPES_AMD 0x21A5
+#define WGL_GPU_NUM_SIMD_AMD 0x21A6
+#define WGL_GPU_NUM_RB_AMD 0x21A7
+#define WGL_GPU_NUM_SPI_AMD 0x21A8
+#endif
+
+#ifndef WGL_NV_video_capture
+#define WGL_UNIQUE_ID_NV 0x20CE
+#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+#endif
+
+#ifndef WGL_NV_copy_image
+#endif
+
+#ifndef WGL_NV_multisample_coverage
+#define WGL_COVERAGE_SAMPLES_NV 0x2042
+#define WGL_COLOR_SAMPLES_NV 0x20B9
+#endif
+
+#ifndef WGL_EXT_create_context_es2_profile
+#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+#endif
+
+
+/*************************************************************/
+
+#ifndef WGL_ARB_pbuffer
+DECLARE_HANDLE(HPBUFFERARB);
+#endif
+#ifndef WGL_EXT_pbuffer
+DECLARE_HANDLE(HPBUFFEREXT);
+#endif
+#ifndef WGL_NV_present_video
+DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
+#endif
+#ifndef WGL_NV_video_output
+DECLARE_HANDLE(HPVIDEODEV);
+#endif
+#ifndef WGL_NV_gpu_affinity
+DECLARE_HANDLE(HPGPUNV);
+DECLARE_HANDLE(HGPUNV);
+
+typedef struct _GPU_DEVICE {
+ DWORD cb;
+ CHAR DeviceName[32];
+ CHAR DeviceString[128];
+ DWORD Flags;
+ RECT rcVirtualScreen;
+} GPU_DEVICE, *PGPU_DEVICE;
+#endif
+#ifndef WGL_NV_video_capture
+DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
+#endif
+
+#ifndef WGL_ARB_buffer_region
+#define WGL_ARB_buffer_region 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType);
+extern VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion);
+extern BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height);
+extern BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
+typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
+typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
+typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
+#endif
+
+#ifndef WGL_ARB_multisample
+#define WGL_ARB_multisample 1
+#endif
+
+#ifndef WGL_ARB_extensions_string
+#define WGL_ARB_extensions_string 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern const char * WINAPI wglGetExtensionsStringARB (HDC hdc);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
+#endif
+
+#ifndef WGL_ARB_pixel_format
+#define WGL_ARB_pixel_format 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
+extern BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
+extern BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+#endif
+
+#ifndef WGL_ARB_make_current_read
+#define WGL_ARB_make_current_read 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+extern HDC WINAPI wglGetCurrentReadDCARB (void);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
+#endif
+
+#ifndef WGL_ARB_pbuffer
+#define WGL_ARB_pbuffer 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
+extern HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer);
+extern int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC);
+extern BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer);
+extern BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
+#endif
+
+#ifndef WGL_ARB_render_texture
+#define WGL_ARB_render_texture 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
+extern BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
+extern BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
+#endif
+
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_ARB_pixel_format_float 1
+#endif
+
+#ifndef WGL_ARB_framebuffer_sRGB
+#define WGL_ARB_framebuffer_sRGB 1
+#endif
+
+#ifndef WGL_ARB_create_context
+#define WGL_ARB_create_context 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList);
+#endif
+
+#ifndef WGL_ARB_create_context_profile
+#define WGL_ARB_create_context_profile 1
+#endif
+
+#ifndef WGL_ARB_create_context_robustness
+#define WGL_ARB_create_context_robustness 1
+#endif
+
+#ifndef WGL_EXT_display_color_table
+#define WGL_EXT_display_color_table 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id);
+extern GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length);
+extern GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id);
+extern VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
+typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+#endif
+
+#ifndef WGL_EXT_extensions_string
+#define WGL_EXT_extensions_string 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern const char * WINAPI wglGetExtensionsStringEXT (void);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
+#endif
+
+#ifndef WGL_EXT_make_current_read
+#define WGL_EXT_make_current_read 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+extern HDC WINAPI wglGetCurrentReadDCEXT (void);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
+#endif
+
+#ifndef WGL_EXT_pbuffer
+#define WGL_EXT_pbuffer 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
+extern HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer);
+extern int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC);
+extern BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer);
+extern BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
+#endif
+
+#ifndef WGL_EXT_pixel_format
+#define WGL_EXT_pixel_format 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
+extern BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
+extern BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+#endif
+
+#ifndef WGL_EXT_swap_control
+#define WGL_EXT_swap_control 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglSwapIntervalEXT (int interval);
+extern int WINAPI wglGetSwapIntervalEXT (void);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
+typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
+#endif
+
+#ifndef WGL_EXT_depth_float
+#define WGL_EXT_depth_float 1
+#endif
+
+#ifndef WGL_NV_vertex_array_range
+#define WGL_NV_vertex_array_range 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern void* WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+extern void WINAPI wglFreeMemoryNV (void *pointer);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
+#endif
+
+#ifndef WGL_3DFX_multisample
+#define WGL_3DFX_multisample 1
+#endif
+
+#ifndef WGL_EXT_multisample
+#define WGL_EXT_multisample 1
+#endif
+
+#ifndef WGL_OML_sync_control
+#define WGL_OML_sync_control 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
+extern BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator);
+extern INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
+extern INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
+extern BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
+extern BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
+typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
+typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
+typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
+#endif
+
+#ifndef WGL_I3D_digital_video_control
+#define WGL_I3D_digital_video_control 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue);
+extern BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
+typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
+#endif
+
+#ifndef WGL_I3D_gamma
+#define WGL_I3D_gamma 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue);
+extern BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue);
+extern BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
+extern BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
+#endif
+
+#ifndef WGL_I3D_genlock
+#define WGL_I3D_genlock 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglEnableGenlockI3D (HDC hDC);
+extern BOOL WINAPI wglDisableGenlockI3D (HDC hDC);
+extern BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag);
+extern BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource);
+extern BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource);
+extern BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge);
+extern BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge);
+extern BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate);
+extern BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate);
+extern BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay);
+extern BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay);
+extern BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
+typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
+#endif
+
+#ifndef WGL_I3D_image_buffer
+#define WGL_I3D_image_buffer 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags);
+extern BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress);
+extern BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
+extern BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
+typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
+typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
+typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
+#endif
+
+#ifndef WGL_I3D_swap_frame_lock
+#define WGL_I3D_swap_frame_lock 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglEnableFrameLockI3D (void);
+extern BOOL WINAPI wglDisableFrameLockI3D (void);
+extern BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag);
+extern BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
+#endif
+
+#ifndef WGL_I3D_swap_frame_usage
+#define WGL_I3D_swap_frame_usage 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetFrameUsageI3D (float *pUsage);
+extern BOOL WINAPI wglBeginFrameTrackingI3D (void);
+extern BOOL WINAPI wglEndFrameTrackingI3D (void);
+extern BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
+typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
+#endif
+
+#ifndef WGL_ATI_pixel_format_float
+#define WGL_ATI_pixel_format_float 1
+#endif
+
+#ifndef WGL_NV_float_buffer
+#define WGL_NV_float_buffer 1
+#endif
+
+#ifndef WGL_3DL_stereo_control
+#define WGL_3DL_stereo_control 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
+#endif
+
+#ifndef WGL_EXT_pixel_format_packed_float
+#define WGL_EXT_pixel_format_packed_float 1
+#endif
+
+#ifndef WGL_EXT_framebuffer_sRGB
+#define WGL_EXT_framebuffer_sRGB 1
+#endif
+
+#ifndef WGL_NV_present_video
+#define WGL_NV_present_video 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern int WINAPI wglEnumerateVideoDevicesNV (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
+extern BOOL WINAPI wglBindVideoDeviceNV (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
+extern BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
+typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
+typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue);
+#endif
+
+#ifndef WGL_NV_video_output
+#define WGL_NV_video_output 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
+extern BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice);
+extern BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
+extern BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer);
+extern BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
+extern BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
+typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
+#endif
+
+#ifndef WGL_NV_swap_group
+#define WGL_NV_swap_group 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group);
+extern BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier);
+extern BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier);
+extern BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
+extern BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count);
+extern BOOL WINAPI wglResetFrameCountNV (HDC hDC);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
+typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
+typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier);
+typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count);
+typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
+#endif
+
+#ifndef WGL_NV_gpu_affinity
+#define WGL_NV_gpu_affinity 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu);
+extern BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
+extern HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList);
+extern BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
+extern BOOL WINAPI wglDeleteDCNV (HDC hdc);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
+typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
+typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
+typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
+typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
+#endif
+
+#ifndef WGL_AMD_gpu_association
+#define WGL_AMD_gpu_association 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids);
+extern INT WINAPI wglGetGPUInfoAMD (UINT id, int property, GLenum dataType, UINT size, void *data);
+extern UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc);
+extern HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id);
+extern HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList);
+extern BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc);
+extern BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc);
+extern HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void);
+extern VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids);
+typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, int property, GLenum dataType, UINT size, void *data);
+typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList);
+typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
+typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
+typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
+typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+#endif
+
+#ifndef WGL_NV_video_capture
+#define WGL_NV_video_capture 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
+extern UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
+extern BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+extern BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
+extern BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
+typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
+typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+#endif
+
+#ifndef WGL_NV_copy_image
+#define WGL_NV_copy_image 1
+#ifdef WGL_WGLEXT_PROTOTYPES
+extern BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif /* WGL_WGLEXT_PROTOTYPES */
+typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+#endif
+
+#ifndef WGL_NV_multisample_coverage
+#define WGL_NV_multisample_coverage 1
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/tools/pkg-config/sfml-all.pc.in b/tools/pkg-config/sfml-all.pc.in
new file mode 100644
index 0000000..dd2d4c3
--- /dev/null
+++ b/tools/pkg-config/sfml-all.pc.in
@@ -0,0 +1,10 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-all
+Description: The Simple and Fast Multimedia Library, all modules.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Requires: sfml-system, sfml-window, sfml-graphics, sfml-audio, sfml-network
diff --git a/tools/pkg-config/sfml-audio.pc.in b/tools/pkg-config/sfml-audio.pc.in
new file mode 100644
index 0000000..7456daa
--- /dev/null
+++ b/tools/pkg-config/sfml-audio.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-audio
+Description: The Simple and Fast Multimedia Library, audio module.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Requires: sfml-system
+Libs: -L${libdir} -lsfml-audio
+Cflags: -I${includedir}
diff --git a/tools/pkg-config/sfml-graphics.pc.in b/tools/pkg-config/sfml-graphics.pc.in
new file mode 100644
index 0000000..d0a88a1
--- /dev/null
+++ b/tools/pkg-config/sfml-graphics.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-graphics
+Description: The Simple and Fast Multimedia Library, graphics module.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Requires: sfml-window
+Libs: -L${libdir} -lsfml-graphics
+Cflags: -I${includedir}
diff --git a/tools/pkg-config/sfml-network.pc.in b/tools/pkg-config/sfml-network.pc.in
new file mode 100644
index 0000000..4381ca0
--- /dev/null
+++ b/tools/pkg-config/sfml-network.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-network
+Description: The Simple and Fast Multimedia Library, network module.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Requires: sfml-system
+Libs: -L${libdir} -lsfml-network
+Cflags: -I${includedir}
diff --git a/tools/pkg-config/sfml-system.pc.in b/tools/pkg-config/sfml-system.pc.in
new file mode 100644
index 0000000..647ab53
--- /dev/null
+++ b/tools/pkg-config/sfml-system.pc.in
@@ -0,0 +1,11 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-system
+Description: The Simple and Fast Multimedia Library, system module.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Libs: -L${libdir} -lsfml-system
+Cflags: -I${includedir}
diff --git a/tools/pkg-config/sfml-window.pc.in b/tools/pkg-config/sfml-window.pc.in
new file mode 100644
index 0000000..b0266e6
--- /dev/null
+++ b/tools/pkg-config/sfml-window.pc.in
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib@LIB_SUFFIX@
+includedir=${prefix}/include
+
+Name: SFML-window
+Description: The Simple and Fast Multimedia Library, window module.
+URL: http://www.sfml-dev.org
+Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+Requires: sfml-system
+Libs: -L${libdir} -lsfml-window
+Cflags: -I${includedir}
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp
new file mode 100644
index 0000000..10e8c60
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp
@@ -0,0 +1,43 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+#ifndef RESOURCE_PATH_HPP
+#define RESOURCE_PATH_HPP
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include <string>
+
+////////////////////////////////////////////////////////////
+/// \brief Return the path to the resource folder.
+///
+/// \return The path to the resource folder associate
+/// with the main bundle or an empty string is there is no bundle.
+///
+////////////////////////////////////////////////////////////
+std::string resourcePath(void);
+
+#endif
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm
new file mode 100644
index 0000000..30d47c1
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////
+//
+// SFML - Simple and Fast Multimedia Library
+// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+// Laurent Gomila (laurent.gom@gmail.com),
+//
+// This software is provided 'as-is', without any express or implied warranty.
+// In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it freely,
+// subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented;
+// you must not claim that you wrote the original software.
+// If you use this software in a product, an acknowledgment
+// in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such,
+// and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+//
+////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// Headers
+////////////////////////////////////////////////////////////
+#include "ResourcePath.hpp"
+#import <Foundation/Foundation.h>
+
+////////////////////////////////////////////////////////////
+std::string resourcePath(void)
+{
+ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+
+ std::string rpath;
+ NSBundle* bundle = [NSBundle mainBundle];
+
+ if (bundle == nil) {
+#ifdef DEBUG
+ NSLog(@"bundle is nil... thus no resources path can be found.");
+#endif
+ } else {
+ NSString* path = [bundle resourcePath];
+ rpath = [path UTF8String] + std::string("/");
+ }
+
+ [pool drain];
+
+ return rpath;
+}
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icns b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icns
new file mode 100644
index 0000000..477431b
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icns
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..19033b1
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+-->
+
+<!--
+ This template can create a SFML 2.0 Bundle Application project.
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.app</string>
+
+ <key>Concrete</key>
+ <true />
+
+ <key>Description</key>
+ <string>This template creates a SFML Application Bundle.</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <key>Ancestors</key>
+ <array>
+ <string>org.sfml-dev.bundle</string>
+ <string>org.sfml-dev.compiler</string>
+ <string>org.sfml-dev.linker</string>
+ </array>
+
+ <!--
+ FILES
+ -->
+ <key>Nodes</key>
+ <array>
+ <string>ResourcePath.mm</string>
+ <string>ResourcePath.hpp</string>
+ <string>main.cpp</string>
+ <string>cute_image.jpg</string>
+ <string>nice_music.ogg</string>
+ <string>sansation.ttf</string>
+ <string>icon.png</string>
+ </array>
+
+ <!--
+ DEFINITIONS
+ -->
+ <key>Definitions</key>
+ <dict>
+ <!-- RESOURCE PATH -->
+ <key>ResourcePath.mm</key>
+ <dict>
+ <key>Path</key>
+ <string>ResourcePath.mm</string>
+ </dict>
+ <key>ResourcePath.hpp</key>
+ <dict>
+ <key>Path</key>
+ <string>ResourcePath.hpp</string>
+ <key>TargetIndices</key>
+ <array /> <!-- don't copy it to "Resources" ! -->
+ </dict>
+
+ <!-- MAIN -->
+ <key>main.cpp</key>
+ <dict>
+ <key>Path</key>
+ <string>main.cpp</string>
+ </dict>
+
+ <!-- RESOURCES -->
+ <key>cute_image.jpg</key>
+ <dict>
+ <key>Path</key>
+ <string>cute_image.jpg</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>nice_music.ogg</key>
+ <dict>
+ <key>Path</key>
+ <string>nice_music.ogg</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>sansation.ttf</key>
+ <dict>
+ <key>Path</key>
+ <string>sansation.ttf</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>icon.png</key>
+ <dict>
+ <key>Path</key>
+ <string>icon.png</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+ </dict>
+
+ <!--
+ COPY LIBRARY PHASE
+ -->
+ <key>Targets</key>
+ <array>
+ <dict>
+ <key>BuildPhases</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>ShellScript</string>
+
+ <key>ShellPath</key>
+ <string>/bin/sh</string>
+
+ <key>ShellScript</key>
+ <string># This shell script simply copies required sfml dylibs/frameworks into the application bundle frameworks folder.
+# If you're using static libraries (which is not recommended) you should remove this script from your project.
+
+# Are we building a project that uses framework or dylibs ?
+case "$SFML_BINARY_TYPE" in
+ DYLIBS)
+ frameworks="false"
+ ;;
+ *)
+ frameworks="true"
+ ;;
+esac
+
+# Echoes to stderr
+error () # $* message to display
+{
+ echo $* 1>&amp;2
+ exit 2
+}
+
+assert () # $1 is a boolean, $2...N is an error message
+{
+ if [ $# -lt 2 ]
+ then
+ error "Internal error in assert : not enough args"
+ fi
+
+ if [ $1 -ne 0 ]
+ then
+ shift
+ error "$*"
+ fi
+}
+
+force_remove () # $1 is a path
+{
+ test $# -eq 1
+ assert $? "force_remove() requires one parameter"
+ rm -fr "$1"
+ assert $? "couldn't remove $1"
+}
+
+copy () # $1 is a source, $2 is a destination
+{
+ test $# -eq 2
+ assert $? "copy() requires two parameters"
+ ditto "$1" "$2"
+ assert $? "couldn't copy $1 to $2"
+}
+
+require () # $1 is a SFML module like 'system' or 'audio'
+{
+ dest="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Frameworks"
+
+ if [ -z "$1" ]
+ then
+ error "require() requires one parameter!"
+ else
+ # clean potentially old stuff
+ force_remove "$dest/libsfml-$1.2.dylib"
+ force_remove "$dest/libsfml-$1-d.2.dylib"
+ force_remove "$dest/sfml-$1.framework"
+
+ # copy SFML libraries
+ if [ "$frameworks" = "true" ]
+ then
+ copy "/Library/Frameworks/sfml-$1.framework" "$dest/sfml-$1.framework"
+ elif [ $CONFIGURATION = "Debug" ] &amp;&amp; [ $SFML_LINK_DYLIBS_SUFFIX_DEBUG != "" ]
+ then
+ copy "/usr/local/lib/libsfml-$1-d.2.dylib" "$dest/libsfml-$1-d.2.dylib"
+ else
+ copy "/usr/local/lib/libsfml-$1.2.dylib" "$dest/libsfml-$1.2.dylib"
+ fi
+
+ if [ "$1" = "audio" ]
+ then
+ # copy sndfile framework too
+ copy "/Library/Frameworks/sndfile.framework" "$dest/sndfile.framework"
+ fi
+
+ if [ "$1" = "graphics" ]
+ then
+ # copy freetype framework too
+ copy "/Library/Frameworks/freetype.framework" "$dest/freetype.framework"
+ fi
+ fi
+}
+
+if [ -n "$SFML_SYSTEM" ]
+then
+ require "system"
+fi
+
+if [ -n "$SFML_AUDIO" ]
+then
+ require "audio"
+fi
+
+if [ -n "$SFML_NETWORK" ]
+then
+ require "network"
+fi
+
+if [ -n "$SFML_WINDOW" ]
+then
+ require "window"
+fi
+
+if [ -n "$SFML_GRAPHICS" ]
+then
+ require "graphics"
+fi
+
+ </string>
+
+ <key>RunOnlyForDeploymentPostprocessing</key>
+ <string>NO</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+</plist>
+
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpg b/tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpg
new file mode 100644
index 0000000..20724fa
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpg
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/icon.png b/tools/xcode/templates/SFML/SFML App.xctemplate/icon.png
new file mode 100644
index 0000000..ef62688
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/icon.png
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/main.cpp b/tools/xcode/templates/SFML/SFML App.xctemplate/main.cpp
new file mode 100644
index 0000000..b1b45ab
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/main.cpp
@@ -0,0 +1,91 @@
+
+//
+// Disclamer:
+// ----------
+//
+// This code will work only if you selected window, graphics and audio.
+//
+// Note that the "Run Script" build phase will copy the required frameworks
+// or dylibs to your application bundle so you can execute it on any OS X
+// computer.
+//
+// Your resource files (images, sounds, fonts, ...) are also copied to your
+// application bundle. To get the path to these resource, use the helper
+// method resourcePath() from ResourcePath.hpp
+//
+
+#include <SFML/Audio.hpp>
+#include <SFML/Graphics.hpp>
+
+// Here is a small helper for you ! Have a look.
+#include "ResourcePath.hpp"
+
+int main(int, char const**)
+{
+ // Create the main window
+ sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
+
+ // Set the Icon
+ sf::Image icon;
+ if (!icon.loadFromFile(resourcePath() + "icon.png")) {
+ return EXIT_FAILURE;
+ }
+ window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
+
+ // Load a sprite to display
+ sf::Texture texture;
+ if (!texture.loadFromFile(resourcePath() + "cute_image.jpg")) {
+ return EXIT_FAILURE;
+ }
+ sf::Sprite sprite(texture);
+
+ // Create a graphical text to display
+ sf::Font font;
+ if (!font.loadFromFile(resourcePath() + "sansation.ttf")) {
+ return EXIT_FAILURE;
+ }
+ sf::Text text("Hello SFML", font, 50);
+ text.setColor(sf::Color::Black);
+
+ // Load a music to play
+ sf::Music music;
+ if (!music.openFromFile(resourcePath() + "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();
+ }
+
+ // Espace pressed : exit
+ if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
+ 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/tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.ogg b/tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.ogg
new file mode 100644
index 0000000..f764d61
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.ogg
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttf b/tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttf
new file mode 100644
index 0000000..d85fbc8
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttf
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..13fab2a
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+ -->
+
+<!--
+ This template defines :
+ - the product name
+ - the organization name
+ - the bundle prefix
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.base</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <key>Platforms</key>
+ <array>
+ <string>com.apple.platform.macosx</string>
+ </array>
+
+ <!--
+ OPTIONS
+ -->
+ <key>Options</key>
+ <array>
+ <dict>
+ <key>Identifier</key>
+ <string>productName</string>
+ <key>Required</key>
+ <true />
+ <key>Name</key>
+ <string>Product Name</string>
+ <key>NotPersisted</key>
+ <true />
+ <key>Description</key>
+ <string>Your new product&apos;s name</string>
+ <key>EmptyReplacement</key>
+ <string>ProductName</string>
+ <key>Type</key>
+ <string>text</string>
+ </dict>
+
+ <dict>
+ <key>Identifier</key>
+ <string>organizationName</string>
+ <key>Name</key>
+ <string>Organization Name</string>
+ <key>Description</key>
+ <string>Your company&apos;s name</string>
+ <key>Type</key>
+ <string>text</string>
+ <key>Default</key>
+ <string>___FULLUSERNAME___</string>
+ </dict>
+
+ <dict>
+ <key>Identifier</key>
+ <string>bundleIdentifierPrefix</string>
+ <key>Required</key>
+ <true />
+ <key>Name</key>
+ <string>Company Identifier</string>
+ <key>Description</key>
+ <string>Your company&apos;s bundle identifier prefix</string>
+ <key>EmptyReplacement</key>
+ <string>com.yourcompany</string>
+ <key>Type</key>
+ <string>text</string>
+ </dict>
+
+ <dict>
+ <key>Identifier</key>
+ <string>bundleIdentifier</string>
+ <key>Name</key>
+ <string>Bundle Identifier</string>
+ <key>NotPersisted</key>
+ <true />
+ <key>Description</key>
+ <string>Your new product&apos;s bundle identifier</string>
+ <key>Default</key>
+ <string>___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.___VARIABLE_productName:RFC1034Identifier___</string>
+ <key>Type</key>
+ <string>static</string>
+ </dict>
+ </array>
+ </dict>
+</plist>
diff --git a/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..48138a7
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+ -->
+
+<!--
+ This template defines :
+ - the bundle properties (plist)
+ - the target type (.app)
+ - the build phases
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.bundle</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <key>Ancestors</key>
+ <array>
+ <string>org.sfml-dev.base</string>
+ </array>
+
+ <!--
+ FILES
+ -->
+ <key>Nodes</key>
+ <array>
+ <string>___PACKAGENAME___-Info.plist:Content</string>
+ </array>
+
+ <!--
+ DEFINITIONS
+ -->
+ <key>Definitions</key>
+ <dict>
+ <key>___PACKAGENAME___-Info.plist:Content</key> <!-- TODO add more fields here -->
+ <string>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
+&lt;plist version=&quot;1.0&quot;&gt;
+&lt;dict&gt;
+ &lt;key&gt;CFBundleIdentifier&lt;/key&gt;
+ &lt;string&gt;___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.${PRODUCT_NAME:rfc1034identifier}&lt;/string&gt;
+ &lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
+ &lt;string&gt;en&lt;/string&gt;
+ &lt;key&gt;CFBundleExecutable&lt;/key&gt;
+ &lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
+ &lt;key&gt;CFBundleIconFile&lt;/key&gt;
+ &lt;string&gt;&lt;/string&gt;
+ &lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
+ &lt;string&gt;6.0&lt;/string&gt;
+ &lt;key&gt;CFBundleName&lt;/key&gt;
+ &lt;string&gt;${PRODUCT_NAME}&lt;/string&gt;
+ &lt;key&gt;CFBundlePackageType&lt;/key&gt;
+ &lt;string&gt;APPL&lt;/string&gt;
+ &lt;key&gt;CFBundleSignature&lt;/key&gt;
+ &lt;string&gt;????&lt;/string&gt;
+&lt;/dict&gt;
+&lt;/plist&gt;
+</string>
+
+ <key>___PACKAGENAME___-Info.plist</key>
+ <dict>
+ <key>Group</key>
+ <string>Supporting Files</string>
+ <key>TargetIndices</key>
+ <array />
+ <key>SubstituteMacros</key>
+ <true />
+ </dict>
+ </dict>
+
+ <!--
+ TARGET
+ -->
+ <key>Targets</key>
+ <array>
+ <dict>
+ <key>BuildPhases</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>Sources</string>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Frameworks</string>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Resources</string>
+ </dict>
+ </array>
+
+ <key>ProductType</key>
+ <string>com.apple.product-type.application</string>
+
+ <key>SharedSettings</key>
+ <dict>
+ <key>INFOPLIST_FILE</key>
+ <string>___PACKAGENAME___/___PACKAGENAME___-Info.plist</string>
+ </dict>
+ </dict>
+ </array>
+ </dict>
+</plist>
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icns b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icns
new file mode 100644
index 0000000..477431b
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icns
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..2c481f7
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+-->
+
+<!--
+ This template can create a SFML 2.0 Command Line Tool project.
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.clt</string>
+
+ <key>Concrete</key>
+ <true />
+
+ <key>Description</key>
+ <string>This template creates a SFML Command Line Tool.</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <key>Ancestors</key>
+ <array>
+ <string>org.sfml-dev.base</string>
+ <string>org.sfml-dev.compiler</string>
+ <string>org.sfml-dev.linker</string>
+ </array>
+
+ <!--
+ FILES
+ -->
+ <key>Nodes</key>
+ <array>
+ <string>main.cpp</string>
+ <string>cute_image.jpg</string>
+ <string>nice_music.ogg</string>
+ <string>sansation.ttf</string>
+ <string>icon.png</string>
+ </array>
+
+ <!--
+ DEFINITIONS
+ -->
+ <key>Definitions</key>
+ <dict>
+ <!-- MAIN -->
+ <key>main.cpp</key>
+ <dict>
+ <key>Path</key>
+ <string>main.cpp</string>
+ </dict>
+
+ <!-- RESOURCES -->
+ <key>cute_image.jpg</key>
+ <dict>
+ <key>Path</key>
+ <string>cute_image.jpg</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>nice_music.ogg</key>
+ <dict>
+ <key>Path</key>
+ <string>nice_music.ogg</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>sansation.ttf</key>
+ <dict>
+ <key>Path</key>
+ <string>sansation.ttf</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+
+ <key>icon.png</key>
+ <dict>
+ <key>Path</key>
+ <string>icon.png</string>
+ <key>Group</key>
+ <string>Resources</string>
+ </dict>
+ </dict>
+
+ <!--
+ TARGET
+ -->
+ <key>Targets</key>
+ <array>
+ <dict>
+ <key>BuildPhases</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>Sources</string>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Frameworks</string>
+ </dict>
+ </array>
+
+ <key>ProductType</key>
+ <string>com.apple.product-type.tool</string>
+ </dict>
+ </array>
+ </dict>
+</plist>
+
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpg b/tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpg
new file mode 100644
index 0000000..20724fa
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpg
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png b/tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png
new file mode 100644
index 0000000..ef62688
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/main.cpp b/tools/xcode/templates/SFML/SFML CLT.xctemplate/main.cpp
new file mode 100644
index 0000000..daeddf0
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/main.cpp
@@ -0,0 +1,89 @@
+
+//
+// Disclamer:
+// ----------
+//
+// This code will work only if you selected window, graphics and audio.
+//
+// In order to load the resources like cute_image.png, you have to set up
+// your target scheme :
+//
+// - Select "Edit Schemeā€¦" in the "Product" menu;
+// - Check the box "use custom working directory";
+// - Fill the text field with the folder path containing your resources;
+// (e.g. your project folder)
+// - Click OK.
+//
+
+#include <SFML/Audio.hpp>
+#include <SFML/Graphics.hpp>
+
+int main(int argc, char const** argv)
+{
+ // Create the main window
+ sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
+
+ // Set the Icon
+ sf::Image icon;
+ if (!icon.loadFromFile("icon.png")) {
+ return EXIT_FAILURE;
+ }
+ window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
+
+ // 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("sansation.ttf")) {
+ return EXIT_FAILURE;
+ }
+ sf::Text text("Hello SFML", font, 50);
+ text.setColor(sf::Color::Black);
+
+ // 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();
+ }
+
+ // Espace pressed : exit
+ if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
+ 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/tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.ogg b/tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.ogg
new file mode 100644
index 0000000..f764d61
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.ogg
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttf b/tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttf
new file mode 100644
index 0000000..d85fbc8
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttf
Binary files differ
diff --git a/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..fb1e2d6
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+ -->
+
+<!--
+ This template defines :
+ - the compiler & std lib
+ - the supported arch
+ - some other target's settings (e.g. warnings flags)
+ - the search paths
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.compiler</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <!--
+ OPTIONS
+ -->
+ <key>Options</key>
+ <array>
+ <dict>
+ <key>Identifier</key>
+ <string>compilerSettingsType</string>
+
+ <key>Name</key>
+ <string>[ADVANCED] C++ Compiler and Standard Library</string>
+
+ <key>Description</key>
+ <string>If you don't know what is it about, use the default value. Note that you'll need a version of SFML compiled with Clang and libc++ to use C++11 !</string>
+
+ <key>Default</key>
+ <string>C++98 with Clang and libstdc++</string>
+
+ <key>NotPersisted</key>
+ <true />
+
+ <key>Type</key>
+ <string>popup</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- Use GCC and libstdc++ -->
+ <key>C++98 with GCC and libstdc++ and target 10.5</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>GCC_VERSION</key>
+ <string>com.apple.compilers.llvmgcc42</string>
+
+ <key>MACOSX_DEPLOYMENT_TARGET</key>
+ <string>10.5</string>
+ </dict>
+ </dict>
+
+ <key>Targets</key>
+ <array>
+ <dict>
+ <key>Frameworks</key>
+ <array>
+ <string>Foundation</string>
+ </array>
+ </dict>
+ </array>
+ </dict>
+
+ <!-- Use Clang and libstdc++ -->
+ <key>C++98 with Clang and libstdc++</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>GCC_VERSION</key>
+ <string>com.apple.compilers.llvm.clang.1_0</string>
+
+ <key>CLANG_CXX_LANGUAGE_STANDARD</key>
+ <string>c++98</string>
+
+ <key>CLANG_CXX_LIBRARY</key>
+ <string>libstdc++</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- Use Clang and libc++ -->
+ <key>C++11 with Clang and libc++</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>GCC_VERSION</key>
+ <string>com.apple.compilers.llvm.clang.1_0</string>
+
+ <key>CLANG_CXX_LANGUAGE_STANDARD</key>
+ <string>c++0x</string>
+
+ <key>CLANG_CXX_LIBRARY</key>
+ <string>libc++</string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+
+ <dict>
+ <key>Identifier</key>
+ <string>archType</string>
+
+ <key>Name</key>
+ <string>[ADVANCED] Architectures</string>
+
+ <key>Description</key>
+ <string>Choose which architecture(s) you want to support</string>
+
+ <key>Default</key>
+ <string>Universal</string>
+
+ <key>NotPersisted</key>
+ <true />
+
+ <key>Type</key>
+ <string>popup</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- Support 32 + 64 bits -->
+ <key>Universal</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>ARCHS</key>
+ <string>$(ARCHS_STANDARD_32_64_BIT)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- Support 64 bits -->
+ <key>64 bits</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>ARCHS</key>
+ <string>$(ARCHS_STANDARD_64_BIT)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- Support 32 bits -->
+ <key>32 bits</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>ARCHS</key>
+ <string>$(ARCHS_STANDARD_32_BIT)</string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </array>
+
+ <!--
+ SETTINGS
+ -->
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict
+ <!-- PLATFORM -->
+ <key>SUPPORTED_PLATFORMS</key>
+ <string>macosx</string>
+
+ <!-- WARNINGS -->
+ <!-- TODO add more warnings -->
+ <key>GCC_WARN_ABOUT_RETURN_TYPE</key>
+ <string>YES</string>
+ <key>GCC_WARN_UNINITIALIZED_AUTOS</key>
+ <string>YES</string>
+ <key>GCC_WARN_UNUSED_VARIABLE</key>
+ <string>YES</string>
+ <key>CLANG_WARN__DUPLICATE_METHOD_MATCH</key>
+ <string>YES</string>
+ <key>CLANG_WARN_EMPTY_BODY</key>
+ <string>YES</string>
+
+ <!-- SERACH PATHS -->
+ <key>FRAMEWORK_SEARCH_PATHS</key>
+ <string> /Library/Frameworks/ $(inherited) </string>
+
+ <key>HEADER_SEARCH_PATHS</key>
+ <string> /usr/local/include/ $(inherited) </string>
+
+ <key>LIBRARY_SEARCH_PATHS</key>
+ <string> /usr/local/lib/ $(inherited) </string>
+ </dict>
+
+ <key>Configurations</key>
+ <dict>
+ <key>Debug</key>
+ <dict>
+ <key>GCC_OPTIMIZATION_LEVEL</key>
+ <string>0</string>
+
+ <key>GCC_PREPROCESSOR_DEFINITIONS</key>
+ <string>DEBUG=1 $(inherited)</string>
+
+ <!-- ALWAYS compile for all arch. -->
+ <key>ONLY_ACTIVE_ARCH</key>
+ <string>NO</string>
+ </dict>
+
+ <key>Release</key>
+ <dict>
+ <key>COPY_PHASE_STRIP</key>
+ <string>YES</string>
+
+ <!-- ALWAYS compile for all arch. -->
+ <key>ONLY_ACTIVE_ARCH</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!--
+ TARGET
+ -->
+ <key>Targets</key>
+ <array>
+ <dict>
+ <key>Name</key>
+ <string>___PACKAGENAME___</string>
+
+ <key>SharedSettings</key>
+ <dict>
+ <key>PRODUCT_NAME</key>
+ <string>$(TARGET_NAME)</string>
+ </dict>
+
+ <key>Configurations</key>
+ <dict>
+ <key>Debug</key>
+ <dict />
+ <key>Release</key>
+ <dict />
+ </dict>
+ </dict>
+ </array>
+ </dict>
+</plist>
diff --git a/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..a636d30
--- /dev/null
+++ b/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!--
+SFML - Simple and Fast Multimedia Library
+Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
+ Laurent Gomila (laurent.gom@gmail.com),
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented;
+ you must not claim that you wrote the original software.
+ If you use this software in a product, an acknowledgment
+ in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such,
+ and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+-->
+
+<!--
+ This template defines :
+ - whether the project uses dylibs or frameworks
+ - which modules are used
+ - how the project links against those modules
+ -->
+
+<plist version="1.0">
+ <dict>
+ <!--
+ BASIC INFO
+ -->
+ <key>Identifier</key>
+ <string>org.sfml-dev.linker</string>
+
+ <key>Kind</key>
+ <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
+
+ <!--
+ OPTIONS
+ -->
+ <key>Options</key>
+ <array>
+ <!-- BINARY TYPE -->
+ <dict>
+ <key>Identifier</key>
+ <string>binaryType</string>
+
+ <key>Name</key>
+ <string>[ADVANCED] SFML binaries</string>
+
+ <key>Description</key>
+ <string>Choose between dylibs and frameworks. If you're not sure, keep the default value.</string>
+
+ <key>Default</key>
+ <string>Frameworks</string>
+
+ <key>NotPersisted</key>
+ <true />
+
+ <key>Type</key>
+ <string>popup</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- Use frameworks -->
+ <key>Frameworks</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_BINARY_TYPE</key>
+ <string>FRAMEWORKS</string>
+
+ <key>SFML_LINK_DYLIBS_SUFFIX</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- Use dylibs -->
+ <key>Dylibs</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_BINARY_TYPE</key>
+ <string>DYLIBS</string>
+
+ <key>SFML_LINK_DYLIBS_SUFFIX</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- Use dylibs (debug) -->
+ <key>Dylibs (debug)</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_BINARY_TYPE</key>
+ <string>DYLIBS</string>
+ </dict>
+
+ <key>Configurations</key>
+ <dict>
+ <key>Debug</key>
+ <dict>
+ <key>SFML_LINK_DYLIBS_SUFFIX</key>
+ <string>-d</string>
+ </dict>
+
+ <key>Release</key>
+ <dict>
+ <key>SFML_LINK_DYLIBS_SUFFIX</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- WINDOW MODULE -->
+ <dict>
+ <key>Identifier</key>
+ <string>windowModule</string>
+
+ <key>Name</key>
+ <string>Use window module</string>
+
+ <key>Description</key>
+ <string>Indicates whether window module should be used or not.</string>
+
+ <key>Type</key>
+ <string>checkbox</string>
+
+ <key>Default</key>
+ <string>true</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- WINDOW MODULE : YES -->
+ <key>true</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_WINDOW</key>
+ <string>$(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- WINDOW MODULE : NO -->
+ <key>false</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_WINDOW</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- GRAPHICS MODULE -->
+ <dict>
+ <key>Identifier</key>
+ <string>graphicsModule</string>
+
+ <key>Name</key>
+ <string>Use graphics module</string>
+
+ <key>Description</key>
+ <string>Indicates whether graphics module should be used or not.</string>
+
+ <key>RequiredOptions</key>
+ <dict>
+ <key>windowModule</key>
+ <string>true</string>
+ </dict>
+
+ <key>Type</key>
+ <string>checkbox</string>
+
+ <key>Default</key>
+ <string>true</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- GRAPHICS MODULE : YES -->
+ <key>true</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_GRAPHICS</key>
+ <string>$(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- GRAPHICS MODULE : NO -->
+ <key>false</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_GRAPHICS</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- AUDIO MODULE -->
+ <dict>
+ <key>Identifier</key>
+ <string>audioModule</string>
+
+ <key>Name</key>
+ <string>Use audio module</string>
+
+ <key>Description</key>
+ <string>Indicates whether audio module should be used or not.</string>
+
+ <key>Type</key>
+ <string>checkbox</string>
+
+ <key>Default</key>
+ <string>true</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- AUDIO MODULE : YES -->
+ <key>true</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_AUDIO</key>
+ <string>$(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- AUDIO MODULE : NO -->
+ <key>false</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_AUDIO</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- NETWORK MODULE -->
+ <dict>
+ <key>Identifier</key>
+ <string>networkModule</string>
+
+ <key>Name</key>
+ <string>Use network module</string>
+
+ <key>Description</key>
+ <string>Indicates whether network module should be used or not.</string>
+
+ <key>Type</key>
+ <string>checkbox</string>
+
+ <key>Default</key>
+ <string>true</string>
+
+ <key>Units</key>
+ <dict>
+ <!-- NETWORK MODULE : YES -->
+ <key>true</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_NETWORK</key>
+ <string>$(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)</string>
+ </dict>
+ </dict>
+ </dict>
+
+ <!-- NETWORK MODULE : NO -->
+ <key>false</key>
+ <dict>
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <key>SFML_NETWORK</key>
+ <string></string>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </dict>
+ </array>
+
+ <!--
+ SETTINGS
+ -->
+ <key>Project</key>
+ <dict>
+ <key>SharedSettings</key>
+ <dict>
+ <!-- Define some prefixes and suffixes -->
+ <key>SFML_LINK_DYLIBS_PREFIX</key>
+ <string>-l</string>
+
+ <key>SFML_LINK_FRAMEWORKS_PREFIX</key>
+ <string>-framework </string>
+
+ <key>SFML_LINK_FRAMEWORKS_SUFFIX</key>
+ <string></string>
+
+ <key>SFML_LINK_PREFIX</key>
+ <string>$(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX)</string>
+
+ <key>SFML_LINK_SUFFIX</key>
+ <string>$(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX)</string>
+
+ <!-- SFML SYSTEM : always used -->
+ <key>SFML_SYSTEM</key>
+ <string>$(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)</string>
+
+ <!-- LINKER FLAGS -->
+ <key>OTHER_LDFLAGS</key>
+ <string>$(inherited) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
+ </dict>
+ </dict>
+ </dict>
+</plist>
+
diff --git a/tools/xcode/templates/install.sh b/tools/xcode/templates/install.sh
new file mode 100755
index 0000000..ec5ef0a
--- /dev/null
+++ b/tools/xcode/templates/install.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Install SFML templates for Xcode 4 into /Library/Developer/Xcode/Templates/
+
+mkdir -p /Library/Developer/Xcode/Templates/
+cp -R "$(dirname $0)/SFML" /Library/Developer/Xcode/Templates/
diff --git a/tools/xcode/templates/readme.txt b/tools/xcode/templates/readme.txt
new file mode 100644
index 0000000..ab28730
--- /dev/null
+++ b/tools/xcode/templates/readme.txt
@@ -0,0 +1,134 @@
+
+XCODE 4 TEMPLATES FOR SFML 2
+============================
+
+These templates help you to easily create a new SFML 2 project for Xcode 4.
+
+
+
+Web Site
+--------
+
+You can find more resources and information on the official web site : http://www.sfml-dev.org/
+
+
+
+Author & License
+----------------
+
+The templates were written by Marco Antognini <antognini.marco@gmail.com> and are provided under the terms of the zlib/png license : http://opensource.org/licenses/zlib-license.php
+
+
+
+Features
+--------
+
+ * You can choose between command line tool or bundle application, the latter will contains all SFML dependancies so you can run your app on another computer without manually installing SFML.
+ * You can choose between using SFML libraries as dylibs or frameworks.
+ * You can choose your compiler and C++ standard library / dialect.
+ * You can choose with SFML module you want to use into your project.
+ * You automatically get a basic example to test SFML right away.
+
+
+
+Prerequisites
+-------------
+
+Before installing the template, make sure you have installed :
+
+ - Xcode 4 (the templates were tested with Xcode 4.5.2)
+ - SFML 2, either as framework or dylibs binaries
+
+There is one constraint on the installation of SFML : the frameworks needs to be installed in /Library/Frameworks and the dylibs into /usr/local/lib. You don't need both but make sure they are in the correct folder.
+
+You should also be familiar with Xcode 4. If needed checkout this document : http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/000-About_Xcode/about.html
+
+
+
+Install
+-------
+
+If you are building SFML from sources you can set CMake's INSTALL_XCODE4_TEMPLATES variable to TRUE to install the templates automatically. Otherwise proceed as follow :
+ 1. Make sure "~/Library/Developer/Xcode/Templates/" folder exists;
+ 2. Copy "SFML" folder into the above folder.
+The 'install.sh' script in the same directory as this readme does that for you.
+
+
+
+Usage
+-----
+
+To use these templates follow these steps :
+
+ 1. open Xcode 4,
+ 2. select "create a new Xcode project" from the "Welcome to Xcode" window or select menus File > New > New Project,
+ 3. select "SFML" subsection under "Mac OS X" on the left,
+ 4. then select either "SFML App", if you want an application bundle, or "SFML CLT", if you prefer a classic Unix executable,
+ 5. fill in the requested information and you're ready to go !
+
+Note : some settings are marked as "[ADVANCED]" in the wizard. If you're not sure what they are, simply keep the default settings. If you get errors later you would probably want to explore their meaning.
+
+
+
+Question & Answer
+-----------------
+
+ * I want to use Xcode 3. Can I use these templates anyway ?
+
+ No, Xcode 3 and 4 don't have the same template system. Therefore these templates won't work with a older version of Xcode.
+
+
+
+ * I'm still using SFML 1.6. Can I use these templates anyway ?
+
+ No, these templates were made for SFML 2 only.
+
+
+
+ * I would like to add/remove a module of SFML from my current project without creating a new project. How can I do that ?
+
+ 1. select your project in the project navigator panel,
+ 2. select your project's target on the main area,
+ 3. go to the "Build Settings" tab,
+ 4. go down to the bottom,
+ 5. set SFML_XXX variable, where XXX is the name of the module to add/remove, to "$(SFML_LINK_PREFIX)sfml-XXX$(SFML_LINK_SUFFIX)" to add it or to "" (nothing) to remove it.
+
+
+
+ * I changed my mind and would like to switch from dylibs to frameworks or vice versa. How can I do that ?
+
+ 1. select your project in the project navigator panel,
+ 2. select your project's target on the main area,
+ 3. go to the "Build Settings" tab,
+ 4. go down to the bottom,
+ 5. set SFML_BINARY_TYPE to either "DYLIBS" or "FRAMEWORKS".
+
+
+
+ * How to use/don't use debug dylibs ?
+
+ You can choose to use or not SFML debug binaries when creating a new project. However, if you have already created your project you can do the following :
+
+ 1. select your project from the project navigator panel,
+ 2. select your project's target on the main area,
+ 3. go to the "Build Settings" tab,
+ 4. go down to the bottom,
+ 5. set SFML_LINK_DYLIBS_SUFFIX_DEBUG to "-d" to use them or to "" (empty string) to use only release binaries.
+
+
+
+ * I want to use the static version of SFML. Is it possible ?
+
+ Short answer : Don't do that!
+
+ We strongly recommend you to use either dylibs or frameworks on Mac OS X. Please refer to Apple documentation for information about static vs shared libraries debate.
+
+ If you really need/want to use static libraries proceed as follow. First, set your project to use dylibs (see above Q & A). Then set SFML_LINK_DYLIBS_SUFFIX to "-s-d" in debug mode and to "-s" in release mode. Finally, remove the script automatically generated by the template (see Build Phases tab).
+
+
+
+ * I get strange linker error about std::string and other STL types. What shall I do ?
+
+ This probably means you're compiling your project against a different implementation of the STL than SFML. When you created the project, you might have chosen the wrong C++ compiler & standard library. You can update your project's build settings; more specifically the Compiler for C/C++/Objective-C, the C++ language Dialect and the C++ Standard Library. You can find more information in the getting started tutorial for Mac OS X on the official web site.
+
+